Podcasts about concatenate

  • 17PODCASTS
  • 20EPISODES
  • 42mAVG DURATION
  • 1MONTHLY NEW EPISODE
  • May 13, 2026LATEST

POPULARITY

20192020202120222023202420252026


Best podcasts about concatenate

Latest podcast episodes about concatenate

Hacker Public Radio
HPR4638: Simple Podcasting - Episode 3 - Analyzing and Filtering

Hacker Public Radio

Play Episode Listen Later May 13, 2026


This show has been flagged as Clean by the host. 01 This is the third in a four part series on simple podcasting. 02 In this episode we will cover the following topics: Analysis of audio noise problems and filtering methods used to deal with specific problems that we may find. Command line recording. Command line playback. Getting information about an audio recording. 03 Introduction When I did my first couple of podcasts I didn't notice that there was a quiet high pitched whine or buzz in the background. Nobody complained about it, but I thought I could do better in subsequent episodes. 04 Creating an Audio Sample If you have a similar problem, the first step is to find out where it is coming from. If there is no audible noise where you are recording, there is a good chance the problem is in the microphone or another part of the audio system. Plug in your microphone and record 2 or 3 seconds of quiet audio where you do not speak into the microphone or make other noise. 05 You will need a minimum amount of data in order to analyze it. For a flac file sampled at 44.1 kHz, 2 to 3 seconds of data should be enough. To get a sample of just electronic noise you can put the microphone in a drawer or somewhere like that if you want to be sure of getting a quiet signal. Any sound recorded in this way should be mainly from the microphone or other electronic elements in the analogue pathway. To get a sample of possible ambient noise, such as fans, make sure the microphone is in the open air in an area which is representative of where it will be when you are recording. -------------------- 06 Analyzing using Fourier Transforms Next you need to look at the wave form. At this point I will describe this using Audacity. I will show other ways later, but Audacity is actually the easiest if you are starting from nothing. You don't need to become an expert in Audacity to use it, just follow the steps I will describe. I myself don't know how to use Audacity beyond using this one feature. 07 We are going to analyze the sound spectrum in our sample. The technique being used is a Fourier Transform. A Fourier transform, often called an "FFT" for fast fourier transform, is a mathematical method of showing a signal in terms of frequency along the x axis instead of time. This allows us to spot troublesome noise frequencies which appear when we don't want them to. The FFT is a very common mathematical technique which is widely used in signal processing, not just in audio. 08 There is software which will create pretty coloured animations of sound waves, but this is not what you want. These are simply decorative patterns and won't tell us what we want to know. -------------------- 09 Using Audacity Install Audacity if you haven't already. Start Audacity. Select file > import > audio, then navigate to your sample and select "open". The file should load. 10 In the wave form part of the window, click anywhere and then type Ctrl-S to select all data points. The chart should turn a slightly darker colour. From the menu, select Analyze > Plot Spectrum. A new window will open, showing magnitude in db on the Y axis, and frequency in hertz on the x axis. For "algorithm" be sure it is set to "spectrum" 11 There are now two settings that we need to play with while we look for problems. One is "size" The default for this is 1024. The other is "axis". The default for this is "log frequency". -------------------- 12 What to Look For What we are looking for are large obvious spikes that stand out in the data. Since our test signal has very little to no actual audio data, any spikes should represent electrical or other noise that doesn't belong there. 13 I have found two combinations of settings to be most helpful in finding problems. These are Size 2048, axis linear frequency. Size 32768, axis log frequency. 14 A small size value can help very narrow spikes stand out from the background more, while a large size value can help separate spikes from surrounding noise. A linear frequency axis can help with seeing all spikes across the full frequency range, while a log frequency axis can help to better see what is happening in the often very crowded lowest frequency range. -------------------- 15 A Real Example of an Audio Problem If you have good audio equipment you may find nothing obvious. If you cannot hear any noise in the signal, there may be none of any consequence and there is nothing for you to do. 16 However, in my case I found two main problems and one lesser one. One problem was a spike at 60 Hz, which is the AC line frequency. There is also a lesser problem of a collection of a broad frequency range of noise below 60Hz. Both of these however will be taken care of by the basic filtering that we looked at earlier so we do not need to worry about them here. 17 The other main problem is I had a large spike at every 1 kHz interval from 1 kHz to 19 KHz. This was noise generated within the head set electronics, or the result of noise on the USB power supply. This is the product of a cheap headset. 18 These spikes are not very large compared to the volume of my voice, but if I do the same sort of analysis of samples where I am speaking, they appear in the intervals between words. This results in a high pitched whine or buzz. This was the source of the background noise or buzz in my first two podcast episodes. I need to get rid of this. 19 One option would be to get a better microphone, but, well, that wouldn't be any fun would it. It would also cost money and I don't want to spend any of that if I don't have to. If you analyze your own signal, you may find a different pattern, or even no noise at all. If you did not find anything when shielding your microphone from ambient audio noise, repeat the same test but with the microphone exposed to acoustic noise in the room. -------------------- 20 Advanced Filtering The next step is to figure out how to get rid of this noise. I have called this section "advanced filtering", but we are actually just making use of a technique that was already covered in basic filtering. 21 To deal with the remaining spikes we can use additional "band reject" filters, each of which removes a specific frequency at 1 kHz intervals from 1 kHz to 12 kHz. We will use this in combination with the filtering that we have already done previously, so we don't need to worry about anything above 12 kHz as we already remove that with a low pass filter. After a small amount of experimenting I came up with the following. 22 Because I am applying a total of 16 filters, 4 for basic filtering and 12 to deal with the specific microphone problems that I have, I have broken up the filters into separate strings. I then generate the 12 new band reject filters from a template. Note that I don't show the "de-esser" filter here. I would recommend adding it as a separate step after doing the sort of filtering we are talking about here. 23 Rather than reading out multiple lines of bash script, I will post them in the show notes. I will give a brief description of them here which you can refer to when reading the show notes. The FFMPEG and Sox versions are very similar in concept so I don't need to go over the Sox version in detail. See the show notes for it. FFMPEG Version Here's the FFMPEG version. # The high and low pass filters. hlpfil="highpass=f=80, lowpass=f=12000" # Band reject filters filter for 60Hz and another for 50Hz. linefil="bandreject=f=60:width_type=h:w=20, bandreject=f=50:width_type=h:w=20" # Create a series of band reject filters, from 1 kHz to 12 kHz. # Change or remove this part if your recording hardware does not require it. ftemplate="bandreject=f=%s000:width_type=h:w=100" kilospikefil=$( seq 1 12 | xargs printf "$ftemplate," ) # Using ffmpeg ffmpeg -i input.flac -af "$hlpfil, $linefil, $kilospikefil" output.flac 24 There are a total of 5 lines of bash script. In the first line, we create a string called "hlpfil" which is just the high and low pass filters copied from our previous discussion on basic filtering. In the second line, we create a string called "linefil" which is just the simple bandreject filters to cover 50 and 60 hertz AC line noise filters also from basic filtering. 25 In the third and fourth lines, we create a string called "kilospikefil" containing the new filters. The "f" parameter represents the frequency we are targeting. The "w" parameter represents the "width" of the frequency range we are filtering in terms of hertz. The filter is applied gradually rather than with a sharp cut-off, so to get more filtering action we need to have larger width. In this case I decided to hammer the spike quite aggressively and so used a relatively wide width of 100 hertz. Testing with a voice file did not show any noticeable distortion, so it's an acceptable solution. 26 For this filter we need to create a dozen filter command so we use the shell "seq" command to generate a sequence of numbers from 1 to 12. We then pipe that into the xargs command which applies each number to the next command. The next command is "printf", which takes the number it gets from xargs and applies it to the "ftemplate" string template in a manner very similar to C programming printf string templates. 27 We also have a comma in there to separate each of the individual filters. We then surround this with a $ and () so we can run the command and capture the output into a variable. Then we call ffmpeg and pass it the filters we created by putting the variable names inside a double quoted string, separated by commas. All of this will be in the show notes, so don't worry about trying to get the exact details right now. Sox Version Here's the Sox version. # The high and low pass filters. sxhlpfil="highpass 80 lowpass 12000" # Band reject filters filter for 60Hz and another for 50Hz. sxfilter="$sxhlpfil $sxkilospikefil bandreject 60 20 bandreject 50 20" # Create a series of reject filters filters, from 1 kHz to 12 kHz. sxftemplate="bandreject %s000 100" sxkilospikefil=$( seq 1 12 | xargs printf "$sxftemplate " ) # Using SOX. sox input.flac output.flac $sxhlpfil $sxfilter $sxkilospikefil 28 The Sox version is very similar with the exception that the command arguments representing the filters must not be in quoted strings as Sox wants to see them as separate arguments instead of parsing a string. -------------------- 29 Confirming the Effect If we apply the above filters and look at this headset noise output file in the Audacity spectrum analyzer we will now see that these noise spikes are almost completely gone. We can now confirm how well this works by using a test audio file. Any normal short voice audio file will do for this. Just talk into the microphone normally and create a voice sample file that is 5 or 10 seconds long, or whatever you feel comfortable with. 30 With the original unfiltered voice audio I can hear a distinct high pitched whine overlaying the voice. With the filtered audio that whine or hum is not detectable. If we then look at the voice file in the Audacity spectrum analyzer, we can see distinct "notches" at the 50 Hz and 60 Hz frequencies, and at every 1 kHz from 1 kHz to 12 kHz. These notches are narrow enough that they won't cause a noticeable problem with voice signals. If we apply this filter to voice samples, the buzz or whine is gone and the voice signal sounds fine. Despite using a very cheap microphone, I now have acceptable quality audio for a podcast. 31 Again I want to emphasize that in this instance I am dealing with deficiencies with my hardware instead of buying a better microphone. These additional filters are intended to deal with the specific hardware problem I am facing. You don't need these additional filters if you cannot detect an audible problem. On the other hand, if you have a different problem you may wish to deal with a different set of frequencies. Finding these problems is the reason for using a spectrum analyzer. 32 FFMPEG has other filtering methods as well. However, as I didn't end up using them I can't really do an adequate job of describing them. If anyone has used them successfully, they are welcome to make a podcast on the subject. -------------------- 33 Completing the Process With these new filters added into the middle of the processing steps, you can now complete the processing by doing the de-essing, normalizing, and review steps as described in the previous episode. -------------------- 34 Command Line Recording I will now cover a separate topic, which is recording using command line programs. I am covering it in this episode as it is a short topic and it is convenient to talk about it here. 35 As well as using GUI based recording programs such as Gnome Sound Recorder, it is possible to record podcast episodes using command line tools such as FFMPEG. As for why you may wish to use command line tools to record audio, there are several reasons. One is that you may simply prefer to do it this way because it pleases you to do so. Another is that it allows the recording step to be included in a script that encompasses other parts of the process, automating what may have otherwise been separate manual steps. 36 However, if you don't find these arguments particularly compelling, then I'm not going to attempt to persuade you to use the command line to record audio. I am doing this part of this episode out of a desire to have a bit of fun and I probably won't be using it much myself. I will however use one of these methods to record this part of this episode. 37 Recording with FFMPEG - The Basics One of the common command line tools you can use is FFMPEG, a package which I have previously mentioned with respect to filtering audio files. Here is an example of how to record using FFMPEG. We call FFMPEG specifying the audio input system as the FFMPEG input, and then specify a file to output to. 38 # Record audio. ffmpeg -f pulse -i default ff.flac 39 Press 'q' to stop. This uses pulse audio on Linux for input "-f pulse", and the default input "-i default". However, this does not specify the the sample rate or mono recording. To do that we need to add a few more parameters as in the following 40 ffmpeg -f pulse -i default -ac 1 -ar 44100 ff.flac 41 "-ac 1" specifies mono output "-ar 44100" specifies 44.1 khz bit rate. 42 Playback with FFMPEG - The Basics FFMPEG can also play back music. In this case however we need to call the "ffplay" program rather than FFMPEG itself. To play an audio file, simply call ffplay and give it the name of the audio file as an argument to the command. For example: 43 # Play an audio file. ffplay podcast.flac 44 We can also call it with the "autoexit" option, which tells ffplay to automatically exit when the audio file has finished playing. ffplay -autoexit ff.flac 45 -autoexit means Exit when the audio file is done playing. 46 To exit in the middle of the recording, press "q' or ESC. To pause the playback, press "p" or space bar. To decrease the volume press "9" or "/". To increase the volume press "0" or "*". 47 To seek forward 10 seconds, press the right cursor button. To seek backward 10 seconds, press the left cursor button. To seek forward 1 minute, press the up cursor button. To seek backward 1 minute, press the down cursor button. 48 The "0" and "9" keys mentioned above are those on the top row of the keyboard, not the ones on the separate numeric pad. 49 While the recording is playing, a graphical window will open which shows a cascading waveform based on the current content. This is purely decorative and does not serve any particularly useful purpose. -------------------- #!/bin/bash # Record a podcast episode segment. # Get the next file name. # First we check if any matching file patterns exist. If they don't, # then we create the first one starting counting at 1. fcount=$( ls [0-9][0-9].flac 2>/dev/null | wc -l ) if (( $fcount < 1 )); then fname="01.flac" else # If there are any matching file patterns, we find the highest number # and increment it by 1. filenum=$( ls [0-9][0-9].flac 2>&1 | cut -d. -f1 | sort | tail -1 ) newfilecount=$(( 10#$filenum + 1 )) fname=$( printf "%02d.flac" $newfilecount ) fi echo "Recording to: $fname" # Record using ffmpeg. # This makes use of pulse audio and the input is the default audio input. # The sample rate is set to 44.1 kHz, and it is recorded as mono (1 channel). ffmpeg -f pulse -i default -ar 44100 -ac 1 $fname echo "Recorded audio to: $fname" # Report on basic information about the audio file that was just recorded. ffprobe -hide_banner $fname -------------------- 50 Sox - Not so Good I did not find the recording or playback features of Sox to be as useful as those of FFMPEG, so I won't bother to cover them here. -------------------- 51 Getting Information About an Audio Recording There are also command line tools which can be used to retrieve information about audio recordings. 52 FFMPEG Version With FFMPEG this is called "ffprobe". For example: 53 ffprobe hpr4566.mp3 54 This will print out a lot of information about FFMPEG itself. To skip that use the hide_banner option. 55 ffprobe -hide_banner hpr4566.mp3 56 This will print out information about the audio recording. This will include things like the duration, bit rate, sample rate, stereo or mono, etc. If the author added metadata tags to the file, it will also show those. HPR add things like the title, author, copyright license, comment, etc. You can extract the ones you want using something like grep and cut. 57 Sox Version Sox has a similar feature, called "soxi". 58 soxi ff.flac 59 However, it may not work on mp3 files if you do not have an mp3 handler for it installed. -------------------- 60 Conclusion In this episode we took a brief look at an example of how to solve an audio problem through filtering. We looked at how to use Audacity to find where the problems were. We then looked at how to apply filters to remove these sources of noise. We also looked at how to record podcasts and get information about audio files using command line tools. 61 In the next episode we will look at alternatives to Audacity for analyzing audio. While Audacity works just fine, this is an opportunity to have a bit fun with some gratuitous hackery. 62 This has been the third episode in a four part series on simple podcasting. -------------------- -------------------- Full Audio Processing Pipeline This version includes the special filters used to fix my headset problems. Use the version from the previous episode if you do not have the same audio hardware problems. #!/bin/bash # Full processing pipeline for making simple podcasts. # ====================================================================== # Concatenate multiple flac files into a single flac file. # This is used to combine podcast recorded segments into a single # flac file for uploading to HPR. concataudio () { outputname="$1" # First create the list file. printf "file '%s'n" [0-9][0-9].flac > podseglist.txt # Now concatenate them ffmpeg -f concat -safe 0 -i podseglist.txt "$outputname" rm podseglist.txt } # ====================================================================== # Basic and advanced filters. filter () { inputfile=$1 outputname=$2 # Using ffmpeg. # The high and low pass filters. hlpfil="highpass=f=80, lowpass=f=12000" # Band reject filters filter for 60Hz and another for 50Hz. linefil="bandreject=f=60:width_type=h:w=20, bandreject=f=50:width_type=h:w=20" # Create a series of band reject filters, from 1 kHz to 11 kHz. ftemplate="bandreject=f=%s000:width_type=h:w=100" kilospikefil=$( seq 1 11 | xargs printf "$ftemplate," ) # Using ffmpeg ffmpeg -i $inputfile -af "$hlpfil, $linefil, $kilospikefil" $outputname } # ====================================================================== # De-Essing. deessing () { inputfile=$1 outputname=$2 option=$3 # De-essing filter. ffmpeg -i $inputfile -filter_complex "deesser=i=0.5:m=0.5:f=0.5:s=$option" -b:a 336k -sample_fmt s16 $outputname } # ====================================================================== # Normalizing the audio to EBU R128 standard for review using ffmpeg. normffmpeg () { inputfile=$1 outputname=$2 # Normalize to EBU R128 standard. ffmpeg -i $inputfile -af loudnorm=I=-17:TP=-2.0:LRA=4.0 -ar 44.1k $outputname } # ====================================================================== # Output an MP3 version to help with reviewing. mp3convert () { inputfile=$1 # Get the name of the file and then create the output file name. j=$( basename $inputfile ".flac" ) outputname="$j"".mp3" # Convert to MP3. ffmpeg -i $inputfile $outputname } # ====================================================================== # Concatenate the separate audio files. concataudio fullpod-unfiltered.flac # Basic filtering. filter fullpod-unfiltered.flac filtered.flac # De-essing. This is the version to send for publishing. # The third argument should be "o" for de-essing, or "i" for pass through without de-essing. deessing filtered.flac fullpod.flac o # Normalized for review. normffmpeg fullpod.flac fullpod-norm.flac # Output an MP3 copy for review. mp3convert fullpod-norm.flac -------------------- -------------------- Provide feedback on this episode.

Hacker Public Radio
HPR4618: Simple Podcasting - Episode 2 - Basic Filtering

Hacker Public Radio

Play Episode Listen Later Apr 15, 2026


This show has been flagged as Clean by the host. Basic-Filtering 01 Introduction This is the second episode in a four part series on a simple way to create your own HPR podcast episode. 02 This episode will cover the following topics: Basic filtering.. De-essing to improve voice quality. And normalizing to adjust audio levels for easier reviewing. 03 Filtering is removing unwanted noise from an audio signal. There are several ways of doing this. It is possible to do this with Audacity, but I don't know how so I won't try to describe that method. It is possible however to filter using command line tools such as FFMPEG and Sox. When assembled into shell scripts, these tools can become part of an automated process that you can use over and over again for each HPR episode that you record. 04 In a later episode I will discuss how to analyze audio signals to find the sources of noise that can be reduced or eliminated with filters. In this episode however I will discuss basic filtering that you can apply routinely without doing any analysis beforehand. 05 Sources of Noise A question that you may have is "why is there noise in the recording?" There are many sources of undesirable noise. 06 A very common one that you may not be aware of is electrical noise that works its way into the electronic recording circuits and is imperceptible to you until you play back the recorded audio. The most common noise signal is what is commonly called "line noise" and is a low frequency hum at 50 or 60 Hz from the electric power lines and reflects the 50 or 60 Hz frequency of the AC power lines feeding your recording hardware. 07 You may be familiar with this low frequency hum from when it emanates from large electrical hardware such as transformers as it makes the laminations vibrate. However, it can also work its way indirectly into electronic equipment as well. Good quality audio hardware may filter all or most of this out, but it is present in a lot of consumer grade hardware. 08 Other sources of electrical noise may reflect specific problems in your recording hardware. I will discuss one such problem with my microphone that I had to address. Still other sources of noise may reflect actual physical audio noise around you, such as fans. Placing the microphone close to your face will help in dealing with a lot of these problems, but you may find filtering to be of some help here as well. 09 Audio Frequency Range Let's start with some basics. A good quality stereo of the type you may have at home is typically rated to perform between 20 Hz and 20 kHz. This is the widest possible range that we need to consider. In reality, this is a far wider range than is needed for a voice oriented podcast. It is also well beyond the range of the hardware that many of your listeners will be using to listen to the podcast. 10 For example, the speakers that I have connected to my PC and a number of headphones and earphones that I have tested drop off drastically below 80 Hz or above 8 kHz, or even above 6 kHz in many cases. This is not audiophile quality hardware, but it is representative of the sort of hardware that a lot of your listeners will be using when listening to podcasts. And to be honest here, a lot of people will have difficulty hearing anything above 8 kHz even with the best quality audio hardware due to hearing loss from environmental noise exposure or age. 11 You can get a good idea of what different frequencies sound like by generating sine waves using either FFMPEG or Sox. Here's an example of generating a 1 kHz sine wave using FFMPEG. A copy of this will be in the show notes. ffmpeg -f lavfi -i "sine=frequency=1000:sample_rate=44100:duration=3" 01000hz.flac This creates a sine wave at 1 kHz and at a sample rate of 44.1 kHz for a duration of 3 seconds and saves it to a flac file named 01000hz.flac 12 Here's the same using Sox. sox -n -r 44100 -b 16 01000hz.flac synth 3 sine 1000 The -b 16 specifies using 16 bit audio to encode it, and the "sine 1000" element specifies the frequency in hertz. 13 You can test this out at different frequencies to get a feel for how your hardware responds. What the effective limits on typical hardware audio range means is that we can quite safely filter out a large part of what is considered to be the "audio range" without any noticeable loss of quality. For the purposes of our discussion here then I will limit the frequency range to between 80 Hz and 12 kHz, and that is being generous. You can probably narrow that, particularly at the top end, without any problems. 14 At the low end, the typical rule of thumb recommended by most people seems to be that for the average male voice you can set the lower threshold at 80 Hz, and for the average female you can set it at 160 Hz. Note that you don't *have* to set the threshold higher for a female. Rather, it is just that you typically *can* set it higher if you wish. Note also that these are averages, and may not reflect an actual individual. 15 Simple Filters We will now create some simple filters using the same command line software mentioned in a previous episode in this series. These are FFMPEG and Sox. 16 First let's define some terminology. A high pass filter passes through frequencies which fall above a certain threshold and blocks frequencies which are below that frequency. A low pass filter passes through frequencies which fall below a certain threshold and blocks frequencies which are above that frequency. 17 In reality there isn't an abrupt cut-off in the filters. Instead there is a gradual roll off or sloping off of amplitude below or above the specified filter frequency. This is for two reasons. One is that if there was an abrupt cut off then it would risk introducing audible distortion in the signal for frequencies on the margin. 18 The other reason is that this is how hardware filters traditionally inherently worked when they were made out of electronic components such as resistors, capacitors, and inductors. The sharpness of this cut off can be adjusted, but we won't be fiddling with it in that sort of detail. You will sometimes see filters specified in terms of "poles". This has to do with describing how filters were constructed using electronic components. Don't worry about it, it doesn't really matter. 19 Here is a typical high pass filter using ffmpeg which filters out frequencies below 80 hertz. # High pass filter. ffmpeg -i inputfile.flac -af "highpass=f=80" outputfile.flac Here is a typical low pass filter using ffmpeg which filters out frequencies above 12 kHz. # Low pass filter. ffmpeg -i inputfile.flac -af "lowpass=f=12000" outputfile.flac 20 Here is a filter which combines the two. # Combined filters. ffmpeg -i inputfile.flac -af "highpass=f=80, lowpass=f=12000" outputfile.flac And here is the same thing using Sox. sox inputfile.flac outputfile.flac highpass 80 lowpass 12000 21 Filtering Out Specific Frequencies Recall that I mentioned that a common source of noise is the 50 or 60 Hz AC power line frequency working its way through the electronics of your recording device. Because filters operate gradually and the 80 Hz lower filter threshold is close to 60 Hz, the high pass filter may not deal with this adequately. 22 Now it happens that your listeners may not be able to hear this 50 or 60 Hz noise anyway because their audio hardware won't reproduce it. That by the way includes you not being able to hear it either when you review your recording before uploading it. However, there may be some HPR listeners who are sitting back sipping a glass of wine and listening to your episode on their stereo and who can hear it. That suggests that we ought to do something about it just in case. 23 I will get into how to analyze audio signals in a later episode, but for now just accept that I looked at the frequency spectrum of a sample recording using my hardware and found a large 60 Hz noise spike which I wanted to address. 24 Experimenting with additional high pass frequencies up to 120 Hz did not improve things much with respect to the 60 Hz problem. There are other parameters which could be tweaked, but at this point it would seem most promising to attack the 60 Hz spike problem directly using a different filter method. To deal with the this 60 Hz spike we can use a "band reject" filter, which removes a specific band of frequencies. We will use this in combination with the filtering that we have already done above. 25 After a small amount of experimenting I came up with the following. I also added in a 50 Hz filter while I was at it, for the benefit of those living in areas with 50 Hz electrical supply. These filters will be included in the show notes, so don't worry if you can't quite understand all the details from a verbal description. 26 Here's the FFMPEG version. # Using ffmpeg ffmpeg -i input.flac -af "highpass=f=80, lowpass=f=12000, bandreject=f=60:width_type=h:w=20, bandreject=f=50:width_type=h:w=20" output.flac 27 This as the following elements A high pass filter at 80 Hz, A low pass filter at 12 kHz, A band reject filter centred at 60 Hz and with a width of 20 hertz. A similar band reject filter centred at 50 Hz. 28 Here's the Sox version. # Sox version. sox input.flac output.flac highpass 80 lowpass 12000 bandreject 60 20 bandreject 50 20 Note that with sox, don't quote the filter definition strings or else it will result in an error as sox doesn't see enough parameters. This is not a problem with ffmpeg. 29 The band reject filter knocks the stuffing out of the 60 Hz line noise, and the 50 Hz parameter should do the same for that frequency as well. This basic filter should be able to be applied to any podcast audio recording without causing any problems. You can probably reduce the low pass frequency from 12 kHz down to 8 kHz without any problems, but I would suggest that you test it with your voice before making that decision. 30 I will come back to filtering out specific frequencies again later when I discuss how I solved a specific problem with the hardware that I am using. However, we have to discuss how to analyze audio signals before we can do that sort of technical troubleshooting, and I will cover that in a later episode. -------------------- 31 De-Essing An additional type of filtering is "de-essing". When recording audio, the microphone or environment may result in "s", "sh", "ch" and possibly other sounds to be exaggerated. These are all higher frequency elements of voice recordings. "De-essing" attempts to soften these sounds by selectively reducing the volume on the frequency band which contains these sounds. 32 Software Filters De-essing is accomplished via software filters. FFMPEG and Sox both have de-essing filters. For FFMPEG, the de-essing filter is built in. For Sox however, we must install an optional plug-in. I will cover this is more detail when I discuss using Sox for de-essing. 33 Do You Need De-Essing? The first thing to make clear however, is that you may not need to worry about this. If you think the audio sounds just fine the way it is, you don't need to do any de-essing to it. De-essing is a very subtle change, and you would probably need to do some careful before and after comparisons of audio samples to tell the difference. I didn't know that a thing called de-essing even existed before I started doing the research to make this podcast episode. However, at this point we are doing things more for fun than out of necessity, so I'll describe it anyway. 34 De-Essing with FFMPEG De-essing with FFMPEG is relatively simple. The filter is built in, and there are just three values to adjust. On the other hand, it is not really obvious what these values mean in practical terms. 35 I will however warn you to not rely on the AI search results from Google to understand this feature. The AI, in my experience, just makes stuff up about it and tells you to use options that don't exist and values that are not valid. I found that the only useful information came from FFMPEG's own web site, and from examples written by actual humans. 36 I then experimented with different values to see what effects they had. Since the results are rather subtle, fine tuning isn't really that necessary and I found that I could arrive at some reasonable values fairly quickly. I will provide the parameters that I found useful for me, and I suspect they would probably work for you as well. 37 Here is a typical de-essing command. ffmpeg -i inputfile.flac -filter_complex "deesser=i=0.5:m=0.5:f=0.5:s=o" -b:a 336k -sample_fmt s16 outputfile.flac 38 The important arguments are i, m, and f. i is intensity for triggering de-essing. The allowed range is 0 to 1. The default is 0. By experimentation I found that "0" means no de-essing, and "1" is maximum de-essing. I found that setting it to "0.5" gave satisfactory results. 39 m is the amount of "ducking on the treble part of sound". The allowed range is 0 to 1. The default is 0.5. By experimentation I found that "1" means no de-essing, and "0" is maximum de-essing. I found that setting it to "0.5" gave satisfactory results. 40 f is how much of the original frequency content to keep when de-essing. The allowed range is 0 to 1. The default is 0.5. By experimentation I found that "1" means no de-essing, and "0" is maximum de-essing. I found that setting it to "0.5" gave satisfactory results. 41 Setting "m" or "f" too high can result in a distorted output as too much of the original sound is cut out. The defaults of 0.5 in both cases gave audible improvements without noticeable distortion. 42 There is an additional parameter called "s". This controls whether the de-essing filter does anything. Setting it to "o" is the normal and default mode. Setting it to "e" causes it to output just the components that it would normally have filtered out. This is useful for testing purposes so you can see what and how much is being filtered. You only use this when experimenting with different values. Setting it to "i" causes the input to be passed through without de-essing. This would be useful in scripts where you want to use a variable to control whether or not to use the de-esser while still creating the expected output file. 43 There are two other elements of the command which were included but are not strictly speaking part of the de-essing filter itself . These are " -b:a 336k" and "-sample_fmt s16". " -b:a 336k" sets the audio bit rate to 336k. "-sample_fmt s16" sets the audio sample format to 16 bit. I found it necessary to specify these in order to prevent the de-essing filter from changing formats. They are not part of de-essing however. 44 De-Essing with Sox You can also de-ess with Sox. However, this is more complex for several reasons. One reason is that Sox does not have its own de-essing filters. Instead it uses optional plug-ins, and you must find and install these. The actual plug in may vary depending on what operating system you are using. The other reason is that it deals with the issue in fairly low level parameters, and so is a bit more complex to describe. Because of this I will skip over describing this in detail and just give a very brief overview. If anyone would like me to describe in more detail how to de-ess with Sox, then send in a comment and I will do a short episode on it later. 45 Sox De-Essing Overview To de-ess with Sox, you first need to install the plug-ins. On Linux, these will be the TAP ladspa plug-ins. TAP stands for "Tom's Audio Processing" plugins. ladspa stands for "Linux Audio Developer's Simple Plugin API" To install the TAP plugins on Ubuntu, using the following command. sudo apt install tap-plugins The plug-in we need is called "tap_deesser.so". 46 In order to use the plug-ins, you need to set the path as a variable. On Ubuntu this is. export LADSPA_PATH="/usr/lib/ladspa:" I put the above in the shell script which calls the Sox de-esser. 47 To use the Sox de-esser, you do the following: sox inputfile.flac outputfile.flac ladspa tap_deesser tap_deesser -30 4500 48 tap_deesser tap_deesser tells it which plugin to use. We need to state tap_deesser twice because the first is the name of the ".so" file and the second is the name of the plugin. A single "so" file can contain multiple filters, although in this case there is only one. -30 is the threshold in dB at which to start to apply the filter. 4500 is the frequency in Hz that the filter centres around. 49 The TAP web page has a table of recommended frequencies. These are: Male 'ess' 4500 Hz Male 'ssh' 3400 Hz Female 'ess' 6800 Hz Female 'ssh' 5100 Hz You will need to do some trial and error to find what works best for you. 50 De-Essing Summary De-essing can be used to make minor improvements to voice quality by reducing certain harsh sounds which may be exaggerated by a microphone. If it sounds like a lot of work you can probably simply not bother with it and not really miss it. -------------------- 51 Normalizing Normalizing a signal means adjusting it to meet a specified level. For audio it means adjusting the volume or sound level. You may wish to normalize the audio of your recording to make it easier to listen to when reviewing it. The copy that you send to HPR however should be the original un-normalized version. 52 Sound level is measured in two ways, dB and LUFS. The latter is a more sophisticated way of measuring things which takes into account how the human ear perceives loudness. I won't go into a lot of detail in that regards, other than to say that just accept LUFS as a unit of perceived loudness that is the international standard. LUFS stands for "Loudness Units referenced to Full Scale", and is part of the EBU R128 standard, where EBU stands for European Broadcast Union. In both cases the measured value is a negative number, with numbers smaller in magnitude being louder. Smaller in magnitude means closer to zero. 53 HPR will adjust the sound level for publication, but if you wish to check the audio before uploading it can help to adjust it to something close to what HPR will do so that you can listen to it at a volume which most listeners will hear. In my case full volume on the audio system input produced a sound level which was much lower than a typical HPR episode. However, the volume level in the flac file itself can be adjusted using ffmpeg. 54 Measuring Volume Level First we need to see what the volume level is for a typical HPR podcast. To do this we use ffmpeg. In this example we are using an episode named "hprpodcast.mp3". Pick an episode which you think is suitable and copy the file to the working directory. 55 In the following script we use a volumedetect filter. The text we want normally outputs to standard error, so we have to do a bit of bashery to redirect this to standard output so it will go through a pipe. We then grep for the string "I:". This will have the average volume level in "loudness units" (LUFS). Then we extract the number, giving us a target LUFS level. 56 ffmpeg -i hprpodcast.mp3 -filter:a ebur128=framelog=quiet -f null /dev/null 2>&1 | grep "I:" | cut -d: -f2 57 Unfortunately I can't find a Sox feature which handles EBU loudness, so we need to work in dB instead. Here is the sox version. However, note that this may not work on mp3s if sox mp3 handing is not installed. 58 sox hprpodcast.mp3 -n stats 2>&1 | grep "RMS lev dB" | rev | cut -d" " -f1 | rev 59 You can use either of these for measuring the volume or sound level of an audio file. However, note that individual episodes from HPR may vary a bit in terms of loudness. In the samples that I looked at, this however was less than 1 LUFS or dB while my own recording was roughly 5 LUFS lower in volume than a typical HPR episode. -------------------- 60 If you Google for the EBU R128 standard the AI result will confidently tell you to use a target of -23 LUFS. However, this is wrong, which shouldn't be of any surprise if you are familiar with using AI. 61 The -23 LUFS figure is for broadcast television. There is in fact no standard level for podcasts. However, there is apparently a general industry convention of using somewhere around -17 LUFS. If I look at the first two HPR episodes that I did, HPR normalized them to -16.8 LUFS and -17.8 LUFS, while the original FLAC files that I submitted were -21.6 LUFS and -22.3 LUFS respectively. 62 So HRP appear to be targeting somewhere around -17 LUFS as well. We will therefore use -17 LUFS as our target for our own copy for review. -------------------- 63 The nice thing about using the EBU filter in FFMPEG is that this is very simple. Here is the FFMPEG version. 64 ffmpeg -i inputfile.flac -af loudnorm=I=-17:TP=-2.0:LRA=7.0 -ar 44.1k outputfile.flac 65 "I" is the LUFS target. LRA is the loudness range target. The default value is 7.0 so I used that. TP sets the maximum true peak. The default value is -2.0. so I used that. -------------------- 66 With Sox things are a bit more difficult. There is no direct method of setting the loudness that I am aware of, so we need to measure the current sound level in dB, do some calculations, and then apply that as a gain factor to the output. 67 First we need to subtract the measured db level from our flac file from the target db level from the HPR episode we decided to use as a sample. Bash by itself normally just does integer math. However, we would like to have at least one decimal point of resolution to work with. The simple solution is to do this calculation using bc, the shell arbitrary precision calculator. 68 Then take this new value and use it in a "volume" filter. The number which we give sox is the amount to increase or decrease the volume by. Sox will then output a new file with the new volume level. You can now listen to this file under conditions more closely approximating what it will be like after HPR have done their own audio adjustments and normalizaton on it This helps when listening to the file for any problems before you upload it. 69 Rather than reading 5 lines of complex shell script to you, I will put a copy of it in the show notes. level=$( sox $inputfile -n stats 2>&1 | grep "RMS lev dB" ) leveldb=$( echo "$level" | rev | cut -d" " -f1 | rev ) targetdb="-18.9" volumechange=$(echo "scale=2 ; $targetdb - $leveldb" | bc ) sox $inputfile $outputname gain "$volumechange" -------------------- 70 Normalization should be the last thing you do to the file. It should be done after any noise filtering, such as low pass, high pass, bandreject, etc. If you normalize first, you will be amplifying the noise as well as the desired signal. 71 The exact normalization level used for review purposes doesn't matter, as HPR will apply their own later. All we are doing at this point is adjusting the volume to something which approximates a normal episode so you can listen to it for final review. 72 When you send your file to HPR, send the original *unnormalized* version, not the normalized version. When you normalize an audio signal, if you are not careful you may introduce things which cause problems with later additional processing. HPR probably do more things to the audio than just normalizing and so they need the unnormalized file so that they can do their own normalizing last. -------------------- 73 If at this point you are happy with the recording as is, you are ready to send the *unnormalized* version to HPR. The scripts to implement the features discussed in this episode will be in the show notes. 74 Conclusion In this episode we covered basic filtering using ffmpeg and sox. We discussed what noise was and some of the origins of noise. We talked about the audio frequency range and the limitations of common hardware used to record and listen to podcasts. We covered basic high and low pass filters used to limit the audio frequency range in order to remove possible low and high frequency noise. 75 We discussed specific filters to eliminate 50 and 60 Hz electrical power noise. We talked about de-essing, what it was, why you may wish to use it, and some basic de-essing filter implementation details. We discussed normalizing, what it is, why you may wish to use it, and how it relates to podcasting conventions. 76 In the next episode we will discuss analyzing audio signals to help find the sources of noise problems. We will also discuss creating filters to eliminate any problems that we found. In my case I had a problem with the microphone that I use, and I describe how I used filters to deal with that problem. 77 This has been the second episode in a four part series on simple podcasting. -------------------- EBU R128 Loudness Measurement using FFMPEG #!/bin/bash echo "EBU r128 loudness measurement using FFMPEG" for inputfile in *.flac *.mp3 ; do level=$( ffmpeg -i $inputfile -filter:a ebur128=framelog=quiet -f null /dev/null 2>&1 | grep "I:" | cut -d: -f2 ) echo $inputfile $level done -------------------- DB Sound Level Measurement using Sox #!/bin/bash # Sox version. May not work for mp3 if an mp3 format handling is not installed. echo "dB sound level measurement using Sox." for inputfile in *.flac *.mp3 ; do level=$( sox $inputfile -n stats 2>&1 | grep "RMS lev dB" ) leveldb=$( echo "$level" | rev | cut -d" " -f1 | rev ) echo $inputfile $leveldb done -------------------- EBU R128 Loudness Normalization using FFMPEG #!/bin/bash # Adjust the volume to a desired level. for inputfile in *.flac ; do j=$( basename $inputfile ".flac" ) outputname="$j""-normff.flac" ffmpeg -i $inputfile -af loudnorm=I=-17:TP=-2.0:LRA=4.0 -ar 44.1k $outputname echo $outputname done -------------------- DB Sound Level Normalization using Sox #!/bin/bash # Adjust the volume to a desired level. for inputfile in *.flac ; do j=$( basename $inputfile ".flac" ) outputname="$j""-normff.flac" # Measure the volume level and extract the mean volume. level=$( sox $inputfile -n stats 2>&1 | grep "RMS lev dB" ) leveldb=$( echo "$level" | rev | cut -d" " -f1 | rev ) # Calculate the difference in dB desired. Scale specifies the number of decimal places. # Target db is the volume measured on hpr4506 (UCSD-P-System). targetdb="-18.9" volumechange=$(echo "scale=2 ; $targetdb - $leveldb" | bc ) echo "Using sox: File: $inputfile Original level: $leveldb Change by: $volumechange" # Adjust the volume. sox $inputfile $outputname gain "$volumechange" done -------------------- Full processing pipeline for making simple podcasts using FFMPEG #!/bin/bash #!/bin/bash # Full processing pipeline for making simple podcasts. # ====================================================================== # Concatenate multiple flac files into a single flac file. # This is used to combine podcast recorded segments into a single # flac file for uploading to HPR. concataudio () { outputname="$1" # First create the list file. printf "file '%s'n" [0-9][0-9].flac > podseglist.txt # Now concatenate them ffmpeg -f concat -safe 0 -i podseglist.txt "$outputname" rm podseglist.txt } # ====================================================================== # Basic filters. filter () { inputfile=$1 outputname=$2 # Using ffmpeg. # The high and low pass filters. hlpfil="highpass=f=80, lowpass=f=12000" # Band reject filters filter for 60Hz and another for 50Hz. linefil="bandreject=f=60:width_type=h:w=20, bandreject=f=50:width_type=h:w=20" # Using ffmpeg ffmpeg -i $inputfile -af "$hlpfil, $linefil" $outputname } # ====================================================================== # De-Essing. deessing () { inputfile=$1 outputname=$2 option=$3 # De-essing filter. ffmpeg -i $inputfile -filter_complex "deesser=i=0.5:m=0.5:f=0.5:s=$option" -b:a 336k -sample_fmt s16 $outputname } # ====================================================================== # Normalizing the audio to EBU R128 standard for review using ffmpeg. normffmpeg () { inputfile=$1 outputname=$2 # Normalize to EBU R128 standard. ffmpeg -i $inputfile -af loudnorm=I=-17:TP=-2.0:LRA=4.0 -ar 44.1k $outputname } # ====================================================================== # Output an MP3 version to help with reviewing. mp3convert () { inputfile=$1 # Get the name of the file and then create the output file name. j=$( basename $inputfile ".flac" ) outputname="$j"".mp3" # Convert to MP3. ffmpeg -i $inputfile $outputname } # ====================================================================== # Concatenate the separate audio files. concataudio fullpod-unfiltered.flac # Basic filtering. filter fullpod-unfiltered.flac filtered.flac # De-essing. This is the version to send for publishing. # The third argument should be "o" for de-essing, or "i" for pass through without de-essing. deessing filtered.flac fullpod.flac o # Normalized for review. normffmpeg fullpod.flac fullpod-norm.flac # Output an MP3 copy for review. mp3convert fullpod-norm.flac -------------------- -------------------- Provide feedback on this episode.

Progressive House UK
Resident in the mix. Spice May 25

Progressive House UK

Play Episode Listen Later May 19, 2025 121:01


1. “Broken Streets” (Bruno Andrada Remix) – Mouloku. (Massive Harmony Records).2. “Tunnel” (Original Mix) – Alex O'Rion. (Meanwhile).3. “State” (Original Mix) – Agustin Pengov, Noise Generation. (Univack).4. “Outlands” (Dowden & Andreas Bhler Remix) – Digital Mess. (Dreaming Awake).5. “Paradise Lost” (Remixes)(Maze 28 Reform) – Frredo Mosho. (Electronic Groove).6. “Mauna Loa” (Extended Mix) – Benja Molina. (UV Noir).7. “Bad Apple” (Ewan Rill Remix) – Brann (AR). (LuPS Records).8. “Riven” (Original Mix) – Dahan. (Future Avenue).9. “The Moon” (Original Mix) – Marco Boarelli. (AH Digital).10. “Hunger” (Kalima Remix) – Chicato, AOVA. (Luum).11. “I See You In My Dreams Again” (Original Mix) – A-Mase, Vika Grand, ACE OF SPADEZ, Natune. (Amase Digital).12. “Dopamine Rush” (Original Mix) – Agustin Delsoglio. (Droid9).13. “Digital Mirage” (Extended Mix) – Aleyum. (Immersed Recordings).14. “Buscador” (Nantiel Remix) – Bagsol. (Future Avenue).15. “Take Me Down” (Dylan Deck Remix) – Brann (AR). (LuPS Records).16. “End Of Summer” (Original Mix) – Ewan Rill. (Metanoia Soul).17. “Drexal” (Nicolas Giordano Remix) – Hayan (PK), Goodkidmadcity. (Concatenate).18. “Sparks” (Original Mix) – Ivan Pogrebniak. (Superordinate Music).19. “Heye” (Zy Khan Extended Remix) – Jake Crooker. (Addictive Sounds).20. “Our Night In Riyadh” (Dr Green Remix) – John Randle. (Droid9).21. “Hey Now” (Ginchy VIP Edit Extended Mix) – Kryder, Ginchy, CLO. (Spinnin).

Talking Tactics
Ep. 18: Using Generative AI to Write Search Engine Optimized Web Content

Talking Tactics

Play Episode Listen Later Feb 6, 2024 25:50


The task was monumental: Write career content for 70 different programs. In late 2022, before AI was top-of-mind for any of us, Patrick was thinking... How can I do this with AI? With the help of his student employees, Jasper.ai, a spreadsheet, and the =CONCATENATE() function, they created powerful, search engine optimized content that resulted in these incredible results: 217% increase in clicks on the site and 166% increase in impressions from search sources and 358% increase in clicks and 226% increase in impressions from unbranded queries only.Guest Name: Patrick KellyGuests Social Handle: https://www.linkedin.com/in/patrickkelly1976/Guests Bio: Patrick Kelly has 23+ years' experience in web marketing for higher education and health care organizations, including Rush University Medical Center, Swedish Hospital and Loyola University Chicago. He holds a master's degree in writing from DePaul University in Chicago. Patrick currently serves as web content manager at Harper College overseeing the college's website, harpercollege.edu. This podcast is brought to you by Element451 — the next-generation AI student engagement platform. Learn more about how Element451 can enhance student engagement, boost enrollment, reduce expenses, and increase staff productivity. - - - -Connect With Our Host:Dayana Kibildshttps://www.linkedin.com/in/dayanakibilds/About The Enrollify Podcast Network:Talking Tactics is a part of the Enrollify Podcast Network. If you like this podcast, chances are you'll like other Enrollify shows too! Some of our favorites include Mission Admissions and Higher Ed Pulse.Enrollify is made possible by Element451 — the next-generation AI student engagement platform helping institutions create meaningful and personalized interactions with students. Learn more at element451.com. Connect with Us at the Engage Summit:Exciting news — many of your favorite Enrollify creators will be at the 2024 Engage Summit in Raleigh, NC, on June 25 and 26, and we'd love to meet you there! Sessions will focus on cutting-edge AI applications that are reshaping student outreach, enhancing staff productivity, and offering deep insights into ROI. Use the discount code Enrollify50 at checkout, and you can register for just $200! Learn more and register at engage.element451.com — we can't wait to see you there!

Hemispheric Views
090: =if(isblank(($c19),””,f19/2)!

Hemispheric Views

Play Episode Listen Later Jul 27, 2023 51:07


Hopefully, you use this podcast to fall asleep because an actual Excel formula is read aloud. I know. Right? New jobs, waking up early, and a few Australianisms to start your day! Who would you guess is today's show sponsor!? Starting with Austrailianisms 00:00:00 Twiggy Sticks (https://www.smokedandcured.com.au/product/hi-mountain-snack-sticks-twiggy-sticks/)

Merriam-Webster's Word of the Day

Merriam-Webster's Word of the Day for June 4, 2023 is: concatenate • kahn-KAT-uh-nayt • verb Concatenate is a formal word that means “to link together in a series or chain.” // Most household garbage bags are concatenated on rolls and connected at their perforated edges for easy tearing. See the entry > Examples: “Smell is intimacy made sensate. Its knowledge precedes words. Smelling makes people uncomfortable because it mashes all the limbic buttons and leaves us bereft of language. Unlike vision, which surveys and controls a scene from an emotional distance, smells act on us instantly and make us relinquish our agency. All this can deepen immersion. Most importantly, smell matters because all our senses concatenate and build on each other. Smell is a ‘support' sense: not always noticeable, but often operating powerfully under the radar, and easily activating strong emotions, judgments, and memories without conscious thought.” — Jude Stewart, Wired, 31 July 2022 Did you know? Concatenate is a fancy word for a simple thing: it means “to link together in a series or chain.” It's Latin in origin, formed from a word combining con-, meaning “with” or “together,” and catena, meaning “chain. ” (The word chain is also linked directly to catena.) Concatenate can also function in English as an adjective meaning “linked together,” as in “concatenate strings of characters,” but it's rare beyond technology contexts. More common than either concatenate is the noun concatenation, used for a group of things linked together in a series, as in “a concatenation of events led to the mayor's resignation.” Concatenation, like concatenate, is used mostly in formal contexts, but you're welcome to change that. We personally would be tickled if professional baseball players aspired to play in the “World Concatenation,” and people talked about the latest concatenation they've been binge-watching.

Things Learned
TL0059 - 2012, Week 09 and 10 Highlights

Things Learned

Play Episode Listen Later Mar 10, 2022 24:42


2/26/12 - Figuring out Erasmus's The Praise of Folly 2/27/12 - cat command in Terminal cat(1) — Linux manual page 2/28/12 - Concatenate function in Excel (wasn't able to really get it work though) 2/29/12 - How the Elo touchscreen computer works ELO touchscreen does not respond to touch or has lost alignment at point of sale. 3/1/12 - Emperor Kangxi had the longest reign in China history. The Sacred Edict of the Kangxi Emperor, 1670 3/2/12 - I haven't written in a while so my wrist cramps up a lot when I write. 3/4/12 - How to play Dota 2 The Story of Dota 2 3/6/12 - How to use nc in Terminal. nc linux command man page | nc/netcat 3/7/12 - Putting torches on the right side of caves in Minecraft is a good idea. 3/8/12 - There's apparently a cloud menu bar icon that looks like iCloud but is for MobileMe. How do I remove the MobileMe icon in the menu bar? | iCloud: About your @icloud.com, @me.com, and @mac.com email addresses | Apple reminds users of MobileMe closure 3/9/12 - FTP is an insecure protocol. FTP Server – Beware of Security Risks Extra Topic 1: An IT executive and an unexpected awkward moment Extra Topic 2: Livestream's content purge of 2012 This episode's music comes from archive.org and the Free Music Archive Tracks featured in this episode include: Gillicuddy - Instrumental #2 Revisited Gillicuddy - Jupiter the Blue Lee Rosevere - Places Unseen The 126ers - The Low Seas Zero V - Don't Rush

Mysteries of the Deep
MOTDLP010 - Christina Chatfield - Sutro

Mysteries of the Deep

Play Episode Listen Later Mar 26, 2021 7:32


Picture a skyline. Then, fog cascading down the wooded hills of San Francisco, towards the Pacific. And rising up from that land is a tower — the radio antenna of the Sutro Tower — that reaches upwards like a metal claw, as if to harness all of the power of the sky. That is the image Christina Chatfield’s Sutro conjures and is also its point of inspiration. Christina Chatfield, based in SF, offers Mysteries an impressive, visionary full-length debut. Abound with polyphonic synth work and immersive tonal structures, these arrangements unfold into lush, cinematic soundscapes. Chatfield has long been a versatile producer with roots in techno, electro, ambient, shoegaze and more — and all of these influences come through in Sutro, creating an album with remarkable power and emotional depth. At times, tracks like “Nameless,” with its misty vocals layered over hypnotic synth, pay homage to the shoegaze greats. At other points, the album turns retro-futuristic, becoming a sonic rendering of the Sutro Tower itself. In “Pearls Scattered,” for example, an off-kilter synth melody lends eccentricity to an already moody atmosphere. Arguably the most immersive arrangements on the album are “Concatenate I” and its connected successor “Concatenate II,” as well as the richly textured, panoramic track “Drin.” As “Concatenate” derives its name from a linguistic programming concept meaning linking (things) together in a chain or series, it seems natural that the album extends “Concatenate” into two sequences. In both, synth arpeggiation guides the ear through maximalist landscapes accented by lush pads. “Drin” is melodic and sweeping, bringing to mind the ruins of the Sutro Baths, bathed in the glow of afternoon light. “Drin” especially is a microcosmic example of what happens in so many of the tracks on this album: they start quiet and evolve, until it’s clear the silence is teeming with life. The album closes with its title track, which leans into Chatfield’s techno sensibilities; its elegance leaves the ear satisfied. Altogether, the album nourishes and satisfies, for what Chatfield has composed is thoughtfully conceptualized and wholly complete. Releases March 26, 2021 Written and Produced by Christina Chatfield Mixed by Oliver Chapoy at Ohm Sweet Ohm, Brooklyn NY Mastered by Rafael Anton Irisarri at Black Knoll Studio, NY Design by Gabriel Benzur Words by Taylor Bratches Worldwide Distribution: wordandsound → what people play © Mysteries of the Deep MOTDLP010, 2021 mysteriesofthedeep.net

san francisco picture pacific mysteries sf abound nameless drin chatfield sutro releases march rafael anton irisarri sutro baths concatenate
The DDSRY Show | Python Programming Podcast
What is Concatenation in Python Programming Language | Can Python Only Concatenate Strings By DDSRY

The DDSRY Show | Python Programming Podcast

Play Episode Listen Later Sep 12, 2020 1:28


What is Concatenation in Python Programming Language By DDSRY --- Send in a voice message: https://anchor.fm/the-ddsry-show/message

Educational Duct Tape
Andreas Johansson + Google Forms, Sheets & Sites; FormMule, AutoCrat & FormRanger Add-Ons; VLookUp, Concatenate & other Formulas; Lean Thinking and more!

Educational Duct Tape

Play Episode Listen Later Feb 19, 2020 64:24


#EduDuctTape S02-E037 #EduDuctTape -- EduDuctTape.com -- @JakeMillerTech -- JakeMiller.net -- JakeMillerTech@gmail.com   Additional Audio Content from this episode available here: traffic.libsyn.com/eduducttape/EDT037_Bonus_Content_with_Andreas_Johansson.mp3 Ways to Support the Show or Connect with Jake & other Duct Tapers!  Apple Podcast Reviews FlipGrid.com/EduDuctTape #EduDuctTape on social media Telling your friends & colleagues The Duct Tapers Facebook Group - facebook.com/groups/ducttapers Stickers! Want to pass some out?  Want some for yourself? JakeMiller.net/SendMeStickers Certificates of Listening, Laughing, and Learning! EduDuctTape.com/certificate Listen to the whole show to hear the “super-secret code”! #EduDuctTape Twitter Chats Access the calendar! - bit.ly/EduDuctTapeCalendar Highlights from the last chat - wke.lt/w/s/8WQtj7 Thanks to The Mighty Ducts! Sarah Kiefer, Alex Oris, Amy Huckaby, Angela Green, Brandy New, Dan Stitzel, David Allan, Jennifer Conti, Kimberly Wren, Lisa Marie Bennett, Matt Meyer, Melinda Vandevort, Melissa Van Heck, Molly Klodor, Nanci Greene, Pam Inabinett! The JakeMillerTech Newsletter - Sign up! jakemiller.net/newsletter Jake’s Upcoming Events Educational Duct Tape Workshop Series: Flipgrid at Kent State University Research Center for Educational Technology - kent.edu/rcet/innovating-teaching-learning - 2.24.20,  9:00 a.m. - 3:00 p.m. KySTE Spring Conference - Louisville, KY - 3.12.20 - kyste.org/Content2/conference NEOTech Conference - Akron OH - 3.17.20 - neotechconference.org ITIP Ohio Google Summit - Sandusky, OH - 5.11-5.12.20 - itipohio.org/google-summit Tech Meet Tuscaloosa - Tuscaloosa, Alabama - 5.29.20 - uatmt.weebly.com Oconee County Schools Summer Institute - Walhalla, SC - 6.9-6.10.20 WITCon (Whatever It Takes Conferences) - Galesburg, Ill - 6.12.20 - witconf.org ISTE - 6.30.20 - conference.iste.org/2020 Engage Conference, San Angelo, TX - 7.15.20 Jake on Other Shows: The MagicPotionEDU Podcast - magicpotionedu.com/episode-038-bring-it-together-with-educational-duct-tape-featuring-jakemillertech Today’s SoapBox Moment - “The How & The What” From You Are a Badass by Jen Sincero "Your job isn't to know the HOW it's to know the WHAT and to be open to discovering, and receiving, the HOW." Today’s Guest: Andreas Johansson Andreas launches rockets at Streetsboro City Schools. He's passionate about purpose, people, and problem solving. PhD student at KSU. He’s an INTJ. In his spare time, he runs in the woods with maps and a few other things... Contact Info:  @rocketcto eajohansson.net linkedin.com/in/eandreas youtube.com/user/TheEajohansson 2 Truths & 1 Lie Question #1: How can we make daily processes simpler and more efficient for staff that normally don't interface with technology? For some of these staff members just checking email may be difficult or inconvenient. Quick Links Menu for Staff Using the Design Thinking Process - observation, hearing feedback When they see you hearing & applying their feedback, it’s appreciated. “Go Do” - just fix it right away Lean Thinking - wikipedia.org/wiki/Lean_thinking “Go to the work where the place happens to see what’s truly happening.” - the Gemba - wikipedia.org/wiki/Gemba Question #2: Since there are still some procedures within schools that require paper by law, how can we make the process simpler? Bus Driver Hub (screenshot) Building value: Does it add value?  Is it required? Create stuff that creates value. Mimic things that you already know work for the general public like a phone app. Make sure it works well on desktop as well as mobile. Google Sites Use preview mode to see what it’ll look like on different screens support.google.com/a/users/answer/9310269 Keep the end-user in mind Pre-Trip Certification Form: Screenshot 1 Screenshot 2 Graphics for buttons - iconfinder.com Use Google Forms Keep in mind “How long will this process take?” Do you really need to collect email address?  Or can you just ask them for name? With date questions in Google Forms click the center button to select “today.” Use branching with “go to page based on answer” for options that everyone doesn’t have to fill out Form Ranger Google Forms Add-On In the Google Sheets backend… Screenshot Leave the data collection sheet alone Use Pivot Tables (by date, by bus, etc.) FormMule Google Sheets Add-on - generates emails based on rules that you set - cloudlab.newvisions.org/form-mule Google Forms reuse a question - gsuiteupdates.googleblog.com/2019/07/import-questions-forms.html Standardize your data using dropdowns & multiple choice rather than open-ended questions FormRanger Add-on pulls a list from a Google Sheet and makes them multiple choice or dropdown options in a Form - cloudlab.newvisions.org/form-ranger AutoCrat Google Sheets Add-on - generates docs, pdfs or slides based on rules that you set and content in your spreadsheet - cloudlab.newvisions.org/autocrat VLookUp formula - Vertical Lookup pulls information from a separate tab in spreadsheet-based on content in the first one - support.google.com/docs/answer/3093318 Lock any tabs of your Sheets that you don’t need others to edit Use Concatenate (support.google.com/docs/answer/3094123) & Substitute (support.google.com/docs/answer/3094215)  to create URLs for things like links to Google Maps - Screenshot Additional Audio Content from this episode available here: traffic.libsyn.com/eduducttape/EDT037_Bonus_Content_with_Andreas_Johansson.mp3 Screenshot of the Field Trip pivot table discussed in the bonus content Content from the Duct Taper Community Apple Podcasts Review - None to share Favorite #EduDuctTape Tweets: (each handle is linked to the mentioned tweet) @AngelaGreene12 @MrsDi @hartel30 @MrCoachK15 @engageducate New #EduDuctTape Tweeps: @atkauffman, @BandaBookChat, @breicher, @dailystem, @DominicSlauson, @edtech_workshop, @ehlmstech, @flrimmer, @HeskTech, @hickstro, @itsthemitchell, @jesshugSTEAM, @KarlOLeary4, @KenFromNelson, @kklaster, @Liftoff2Learn, @michelecarmode, @Mr_van_W, @mrkgsw, @MrsDi, @MsRomeroR, @mylifeaslinds, @Rrrerin2go, @SaiaStacy, @sdeereed, @shawnspaventa, @TechyLeaderEDU, @wagjuer, @Wainscott_Tech #EduDuctTape FlipGrid Responses: Skipped today for time                    

My Life As A Software Engineer
EP. 7: Discussing Tech Communities with Gift Egwuenu

My Life As A Software Engineer

Play Episode Listen Later Jan 7, 2020 10:01


In this episode, I'm joined by Gift Egwuenu and we are talking about Tech Communities. Gift is a Software Engineer co-organizing @Concatenate, @JAMstackLagos and also the Lead for @VueVixensNG Here, she shares what Tech Community means to her, the benefits you can get from being a part of any Tech Community and also if you have been looking forward to joining a Tech Community she also highlights some ways you can get involved. Also, if speaking at conferences is your thing or something you want to do, she talked about how you can go about doing just that. [ Follow my podcast conversations on Twitter @mylifeasaSE and Instagram @mylifeasasoftwareengineer ] [ Connect with Gift Egwuenu on Twitter @lauragift21, Subscribe to her Youtube channel Gift Egwuenu and learn more from her Blog ]

That's my JAMstack
Gift Egwuenu on Gridsome, Netlify, Serverless and more

That's my JAMstack

Play Episode Listen Later Nov 5, 2019


Quick show notes Our Guest: Gift Egwuenu What she'd like for you to see: Her Blog and her YouTube Channel Her JAMstack Jams: Gridsome and Netlify Her musical Jam: Gift's curated YouTube Playlist Other Technologies mentioned Hugo NuxtJS GatsbyJS Transcript Bryan Robinson 0:03 Welcome to another episode of that's my JAMstack the podcast where we highlight amazing people in the community and ask the pressing question, what's your jam in the JAMstack? This week's episode, we have one of the Co-organizers of ConcatenateConf, and JAMstack Lagos, the wonderful Gift Egwuenu. Welcome to the That's My JAMstack podcast. Thanks for being on the show today. Gift Egwuenu 0:27 Thanks for having me, Bryan. Thanks for having me. Bryan Robinson 0:30 No problem. So I've been following you on Twitter for a little while. But I want you to go ahead and introduce yourself to the audience. Tell us who you are, what you do for work, what you do for fun, that kind of thing. Gift Egwuenu 0:40 Yeah, sure. So my name is Gift Egwuenu. I'm a software engineer, and I work for a company called Andella and is based in Lagos, Nigeria. And I'm also a technical writer. I own my own blog where I write about technical topics, mainly focused on front end JavaScript, as well as JAMstack and accessibility. I also run several communities here in Lagos, one of which is the JAMstack meetup in Lagos, as well as a conference called Concatenate. I helped organize that. And for fun, I love photography. So I take pictures, majity street photography, but yeah, that's pretty much everything. Bryan Robinson 1:26 Very, very cool. So so you're pretty busy, especially with Concatenate just ending a few weeks ago, right? Gift Egwuenu 1:32 Yeah. You know about contacting? Cool. Yeah, it was amazing. It was amazing. Bryan Robinson 1:39 Yeah, this is the second year that y'all ran Concatenate?Unknown Speaker 1:42 Yeah. So we had our first edition last year, and this second edition was really amazing. Because last year was majority just a remote conference. For this year, we're able to bring down some speakers as well as have other speakers remotely. So yeah. It was fun. Bryan Robinson 2:01 Very cool. So so obviously the JAMstack and static sites are what we're going to talk about today, what would kind of your entry point into the idea of the JAMstack or the idea of static sites? Gift Egwuenu 2:11 So I first time I actually heard about jam stack was from my Twitter timeline. So this was last year 2018. In last year, I was scrolling through Twitter and I saw the team jump stock and I was kind of confused at first actually wanted to know what this because you know, there are so many stocks, the mean stock, the lumps that I just wanted to know what it actually means. And and, yeah, so I just had to do like a Google search about it. And it was quite interesting. Gift Egwuenu 2:42 At the same time, I just started blogging. So I started my blog, the same time and I was actually scouting for topics to learn more about and also write about, and this was really interesting. So I did my research. Thanks to the jamstack.org site. was really helpful. And then I stayed doing a lot of research about it. And I wrote my first blog posts on the JAMstack. That was my entry points. Bryan Robinson 3:11 Very cool. And I saw I saw on your blog, you've got like a post about Nuxt, you've got post Gridsome you've got post about Hugo, what's kind of your favorite technology or your favorite piece of the JAMstack? Gift Egwuenu 3:22 Okay, that's, that's a difficult question. Cuz Actually, yeah, I've actually played with a couple of them. But right now I would say my favorite is Gridsome. Yeah. I initially worked with Hugo. This was while, I; This was I actually started working with Hugo without knowing about the JAMstack at first, because I had like, contracts gig where I had to build a custom Hugo thing, but then I didn't know have any idea about the JAMstack but I knew what Static Sites were. Didn't know there was something called the JAMstack. So I worked with Hugo. My first blog was actually a Hugo site because then I was pretty much invested in Hugo. So I had to like get my blog running on Hugo. I did I did that for pretty much one year before I started learning more about Nuxt and at the time, Gatsby was very, very popular even though I am also a React developer when I found out there was also a similar a similar static site generator like Gatsby and it was with some he was quite new at the time that I started using it. So I'd say it's just checked the docs, and it was really interesting. And then I decided at that point, I just say it's port my Hugo blog to Gridsome And ever since then, I've been loving it. Bryan Robinson 4:49 I only know a very little bit about Gridsome. And that's kind of it's on that. It's the Static site generator for Vue that Gatsby is for react? Gift Egwuenu 4:58 Yes is pretty similar to Gatsby because he has the same GraphQL integration that Gatsby has. So yeah, they are pretty similar but they just have different programming languages. React and Vue. Yeah. Bryan Robinson 5:15 And I assume you kind of started making that transition from Hugo over to over to Gridsome because you were working in JavaScript more than and what Hugo's in actual Go. Gift Egwuenu 5:25 Yeah, exactly. So I actually wrote I wrote a blog post on why I made the transition. Because Yeah, I was working with Hugo, I To be honest, I haven't really done anything with Go. So I was basically just doing things out of my own knowledge. I didn't really know so much about Go programming and it was very difficult for me to customize my blog at that point. So when I found out that Okay, there is Gridsome and actually love working with Vue. This is something that I can customize on my own without having to like Seek for extra help. So I just decided to make that transition. Bryan Robinson 6:05 Yeah. So so obviously that's that's you and your kind of personal and your blog site and all that. Are you using JAMstack philosophies professionally, at all Gift Egwuenu 6:14 So that's the thing. At my job. I really don't use the JAMstack. I only use it for Yeah, my personal projects on my blog. Bryan Robinson 6:25 Okay, cool. And do you find that as you experiment with these technologies, are you able to bring any kind of peace that thought process back over to kind of your non jam stack job? Gift Egwuenu 6:36 Yeah, so currently we are I'm working. I'm working with React at my job. But a couple of a couple of teams in my company, actually using Gatsby so which is great. My team currently only uses React. So yeah, this is something I can Maybe talk to them about if they're interested in making the switch. Well, yeah, that's though that's going to be long shots but yeah. Bryan Robinson 7:07 So is Gridsome what you would consider your jam the JAMstack? Kind of your favorite technology. Are there any other technologies that you're really passionate about right now? Gift Egwuenu 7:16 Yeah. Gridsome is one of them. I'm really, I'm really happy about scripts on my last season. It's then another technology that I love using is Netlify. Yeah, because Netlify was like the my entry into the JAMstack. I got to know about the JAMstack through Netlify, and pretty much works with a couple of Netlify products. I use Netlify for almost all my deployments, which is great. Yeah, so I love those two technologies a lot. Bryan Robinson 7:52 So you've been working in kind of the JAMstack for a couple years now. What's going to keep you there? What is it about the JAMstack That is is hopefully going to be the big future of the web? Gift Egwuenu 8:04 So for me basically JAMstack, I feel like JAMstack is still evolving because a lot of people are still trying to get acquainted with the whole knowledge about the JAMstack. I actually started working with JAMstack last year and so far it's been amazing and I feel like for the future we don't we can't we can't actually tell how much you can do with the JAMstack right now. Gift Egwuenu 8:32 You can do a lot. People actually just think JAMstack is all static sites is just for needing a basic web or a basic websites for know you can actually extend the the things you can do with JAMstack even now that you have like things like serverless, which I'm actually at this point I'm trying to learn more about the serverless architecture. So yeah, you can pretty much extend the use cases for JAMstack in whatever you're working with. Bryan Robinson 9:06 Yeah, definitely. And so with the kind of the serverless stuff that you're starting to explore, do you have a background in back end development or are you primarily front end? Gift Egwuenu 9:15 Yeah. I have a background in back-end. In my job I also do back-end development with NodeJS. Bryan Robinson 9:23 Okay. Very cool. So, so yeah, adapting that to serverless should be should be pretty simple and pretty fun. Gift Egwuenu 9:28 Yeah, it is. Like yesterday, I was going through, I think his name is Jason. So he had like a workshop on Front-end Masters yesterday and I followed through. And he also one of the, all of the amazing things about his workshop was when he was trying to teach us about how to get started with serverless functions. And it was very easy. It was it was very slick, like, I did not think it will be that easy. Yeah, just Amazing. Bryan Robinson 10:02 So, what, uh, what is your actual like musical jam right now? Where are you listening to what fuels your day? What's your favorite music or artist or song? Gift Egwuenu 10:12 Every day I have a playlist rights of Nigerian music, which I think I should share. Cuz it has pretty much everything that I love from R&B to Afro beats, mostly nigerian music. So yeah, it's a playlist on YouTube that I just developed for myself. And I use it mostly when I'm working. Bryan Robinson 10:38 Awesome. Yeah, definitely share that link with me. And we'll and we'll share it out because that sounds really amazing. Especially, especially like R&B and, and that sort of thing. I've always enjoyed that. Gift Egwuenu 10:48 Cool, I will share that. Bryan Robinson 10:51 So last, but certainly not least, is there something that you would like to promote that you're doing something you kind of want to get out there and share with the world? Gift Egwuenu 10:59 Yes, sure. I would like to talk about my blog. I know I've said a lot about it already. So I have a blog. It's giftegwuenu.com. And I also have a YouTube channel where I talk about tech, as well as my personal life. So it's on YouTube. I'm also Gift Egwuenu. So,that's my shameless plug. Bryan Robinson 11:22 Excellent, excellent. So yeah, and I definitely recommend, recommend that blog, at least. I haven't seen your YouTube channel. Go check that out too. But I love all the articles you've written on your blog so far. Gift Egwuenu 11:31 Thank you. Thank you. Bryan Robinson 11:33 Alright, well, we'll we'll wrap things up. I really appreciate you taking the time to chat with us today. And, and hopefully, we'll see you doing more and more amazing things, especially with concatenating jam sack Legos and stuff like that. Gift Egwuenu 11:44 Thank you. Thank you for having me. This was fun. Bryan Robinson 11:47 Yeah, I really enjoyed it. Thanks a lot. Bryan Robinson 11:52 Hey, everyone, it's Bryan again. And I want to say thank you to everyone who has listened to the podcast and asked if you enjoyed it, you head over to your podcast application. Give us a review or rating, how people find this podcast and learn more about the amazing community that we work in. Thanks for listening and we'll see you next time.Transcribed by https://otter.aiIntro/outtro music by bensound.com

Views on Vue
VoV 074: My Vue from Nigeria with Nosa Obaseki

Views on Vue

Play Episode Listen Later Aug 13, 2019 45:18


Sponsors Netlify Sentry– use the code “devchat” for two months free on Sentry’s small plan CacheFly Panel Ben Hong Erik Hanchett Joined by Special Guest: Nosa Obaseki Summary Nosa Obaseki joins the panel to share his story and his experience learning Vue in Nigeria. He shares how he got started in Vue and the resources he used. The panel praises the Vue documentation and shares their experiences of learning from them. The panel compares the methods for debugging including the use of stack overflow and google. Nosa shares his experience with the next step he took in learning Vue, taking on a project.    The panel asks Nosa about concepts he found difficult to grasp, these include structuring, state management and wen to use actions and mutations. This topic leads the panel to discuss the upcoming release of Vue.js 3.0 and the addition of the function API. The panel considers whether or not Vue 3.0 will break Vue and what problems it may solve. The topic turns to conferences and whether or not Ben Hong will include function API’s in his workshop at Vue Toronto. Nosa shares his experience at Vueconf US and compares it to conferences he attended in Nigeria. The Nigerian Vue community and what the challenges he faced in his journey to becoming a developer. Concatenate and its mission is discussed. Ben Hong invites everyone to support this conference.  Links https://stackoverflow.com/ https://vuetoronto.com/ https://us.vuejs.org/workshops/ Is Vue.js 3.0 Breaking Vue? Vue 3.0 Preview! https://opencollective.com/concatenate https://twitter.com/c0depanda https://www.facebook.com/ViewsonVue https://twitter.com/viewsonvue Picks Ben Hong: Big Magic: Creative Living Beyond Fear Erik Hanchett: Stranger Things Vue 3.0 Nosa Obaseki: Black Mirror

nigeria panel stranger things preview black mirror api vue sentry netlify nosa cachefly big magic creative living beyond fear big magic creative living beyond concatenate vueconf us
Devchat.tv Master Feed
VoV 074: My Vue from Nigeria with Nosa Obaseki

Devchat.tv Master Feed

Play Episode Listen Later Aug 13, 2019 45:18


Sponsors Netlify Sentry– use the code “devchat” for two months free on Sentry’s small plan CacheFly Panel Ben Hong Erik Hanchett Joined by Special Guest: Nosa Obaseki Summary Nosa Obaseki joins the panel to share his story and his experience learning Vue in Nigeria. He shares how he got started in Vue and the resources he used. The panel praises the Vue documentation and shares their experiences of learning from them. The panel compares the methods for debugging including the use of stack overflow and google. Nosa shares his experience with the next step he took in learning Vue, taking on a project.    The panel asks Nosa about concepts he found difficult to grasp, these include structuring, state management and wen to use actions and mutations. This topic leads the panel to discuss the upcoming release of Vue.js 3.0 and the addition of the function API. The panel considers whether or not Vue 3.0 will break Vue and what problems it may solve. The topic turns to conferences and whether or not Ben Hong will include function API’s in his workshop at Vue Toronto. Nosa shares his experience at Vueconf US and compares it to conferences he attended in Nigeria. The Nigerian Vue community and what the challenges he faced in his journey to becoming a developer. Concatenate and its mission is discussed. Ben Hong invites everyone to support this conference.  Links https://stackoverflow.com/ https://vuetoronto.com/ https://us.vuejs.org/workshops/ Is Vue.js 3.0 Breaking Vue? Vue 3.0 Preview! https://opencollective.com/concatenate https://twitter.com/c0depanda https://www.facebook.com/ViewsonVue https://twitter.com/viewsonvue Picks Ben Hong: Big Magic: Creative Living Beyond Fear Erik Hanchett: Stranger Things Vue 3.0 Nosa Obaseki: Black Mirror

nigeria panel stranger things preview black mirror api vue sentry netlify nosa cachefly big magic creative living beyond fear big magic creative living beyond concatenate vueconf us
JMOR Tech Talk
JMOR Tech Talk Show: (Episode 41) Calculating with Excel

JMOR Tech Talk

Play Episode Listen Later Oct 24, 2016 58:00


1)  Intro to Excel 2)  More Excel Formuals:   a)  COUNT   b)  LEN   c)  RIGHT, LEFT, MID   d)  TRIM   e)  CONCATENATE   f)   SUMIF(3 Input Vars)   g)  COUNTIF (2 Input VARS) 3)  Building Real World Examples:   a)  Bowling Score   b)  Sales Difference 4)  Summary

Open Metalcast
Open Metalcast Episode #121: Shuffle mode

Open Metalcast

Play Episode Listen Later Jul 21, 2015


Ever have one of those days where you just decide to put your entire library on shuffle and see what happens? That's what happened with this episode. I narrowed down the library to just the Creative Commons Metal Music, turned on shuffle and hit "play". What you're hearing is a (mostly) shuffled version of what is in the Open Metalcast archives. This episode has a mix of different artists, featuring Colosso, Aborym, Exiled From Eden, Trocotombix, Black Autumn, Pr4nA, The Foetal Mind, Frozen Dust, Petrychor, Concatenate, Omainen, and Thou. Some of these haven't been on the show in a while and others are more recent. So sit back and let the realm of randomness take you on an hour-long journey of Creative Commons Metal Music. (00:42) Four Edges Of Deceit by Colosso from Foregone Semblances (BY-NC-SA) (04:59) V by Aborym from Psychogrotesque (BY-NC-SA) (10:37) Genocide by Exiled From Eden from Eve of the End (BY-NC-SA) (14:13) Reza Hindrakesuma by TROCOTOMBIX from Psicopompos (BY-NC-ND) (16:03) The Threefold Life by Black Autumn from Aurora - Morgen Rothe Im Auffgang (BY-NC-SA) (21:38) Desert sand by Pr4nA from Pr4nA (BY-NC-ND) (26:20) Total Chaos by The Foetal Mind from The Grand Contraction (BY-NC) (29:32) Into the Night by Frozen Dust from Reincarnation (BY-SA) (33:21) Ceaseless White by Petrychor from Makrokosmos (BY-NC-ND) (39:18) Priorities by Concatenate from Concatenate's Concatenated Stuff (BY-NC-SA) (43:16) The End of Time by Omainen from Shades of Grey (BY-NC-SA) (49:09) The Song of Illuminate Darkness by Thou from Ceremonies of Humiliation (BY) Please support the bands in this show! Buy a T-Shirt, buy an album, head to the shows, or buy their cat pet food. Whatever you can do to help these bands keep making music, please do it! Also check out the other great podcasts at Metal Injection, and be sure to listen to all of the great shows (including Open Metalcast) streaming 24/7 at Metalinjection.FM. If you have any suggestions for Creative Commons licensed metal, send me a link at craig@openmetalcast.com. Open Metalcast #121 (MP3) Open Metalcast #121 (OGG)

Metal Injection Podcasts
Open Metalcast Episode #121: Shuffle mode

Metal Injection Podcasts

Play Episode Listen Later Jul 21, 2015 63:31


Ever have one of those days where you just decide to put your entire library on shuffle and see what happens? That's what happened with this episode. I narrowed down the library to just the Creative Commons Metal Music, turned on shuffle and hit "play". What you're hearing is a (mostly) shuffled version of what is in the Open Metalcast archives. This episode has a mix of different artists, featuring Colosso, Aborym, Exiled From Eden, Trocotombix, Black Autumn, Pr4nA, The Foetal Mind, Frozen Dust, Petrychor, Concatenate, Omainen, and Thou. Some of these haven't been on the show in a while and others are more recent. So sit back and let the realm of randomness take you on an hour-long journey of Creative Commons Metal Music. * (00:42) Four Edges Of Deceit by Colosso from Foregone Semblances (BY-NC-SA) * (04:59) V by Aborym from Psychogrotesque (BY-NC-SA) * (10:37) Genocide by Exiled From Eden from Eve of the End (BY-NC-SA) * (14:13) Reza Hindrakesuma by TROCOTOMBIX from Psicopompos (BY-NC-ND) * (16:03) The Threefold Life by Black Autumn from Aurora – Morgen Rothe Im Auffgang (BY-NC-SA) * (21:38) Desert sand by Pr4nA from Pr4nA (BY-NC-ND) * (26:20) Total Chaos by The Foetal Mind from The Grand Contraction (BY-NC) * (29:32) Into the Night by Frozen Dust from Reincarnation (BY-SA) * (33:21) Ceaseless White by Petrychor from Makrokosmos (BY-NC-ND) * (39:18) Priorities by Concatenate from Concatenate's Concatenated Stuff (BY-NC-SA) * (43:16) The End of Time by Omainen from Shades of Grey (BY-NC-SA) * (49:09) The Song of Illuminate Darkness by Thou from Ceremonies of Humiliation (BY) Please support the bands in this show! Buy a T-Shirt, buy an album, head to the shows, or buy their cat pet food. Whatever you can do to help these bands keep making music, please do it! Also check out the other great podcasts at Metal Injection, and be sure to listen to all of the great shows (including Open Metalcast) streaming 24/7 at Metalinjection.FM. If you have any suggestions for Creative Commons licensed metal, send me a link at craig@openmetalcast.com.

Open Metalcast
Open Metalcast Instrumetalcast #8: Lost Time

Open Metalcast

Play Episode Listen Later Dec 23, 2013


It's been way too long since the last Instrumetalcast so to make up for it here's an extra-long episode for your listening enjoyment. Hopefully it'll tide you over into the new year where these episodes will be more frequent. Shownotes and more after the break: (00:27) Continuum by CRYOGEN from Continuum (BY-NC-ND) (05:21) A Dæmon Hunted​/​The Flight of Perseus by Returning We Hear the Larks from Far-Stepper/Of Wide Sea [Instrumental] (BY-SA) (18:43) Movement 2 - Andante by Daniel Bautista from Symphony No. 2 in B minor, Op. 16 (BY-SA) (25:40) The Land Of Shadows - The L. O. S. Theme by The Land Of Shadows from Dark Romantika (BY-NC-SA) (29:32) To Break Is Divine by The Reptilians from The Breakers (BY-NC-ND) (32:20) The Existential Frame by Tony C from The Existential Frame (BY-NC-ND) (39:29) Faces by Concatenate from A New Start (BY-NC-SA) (46:06) Penumbra by Isaac Herrera from Return to the past (BY-NC-SA) (49:45) Departure (and Arrival) by Skyed Pillars from None (None) (59:03) Hurricane by Rob Johnson Music from Throw The Sun Into The Sea (BY-NC-SA) (1:01:40) Phantasm by Diometrix from How Do Things Inspire (BY-NC-SA) (1:05:19) Far And Wide by Ray Montford from Many Roads (BY-NC-SA) (1:10:23) The End of Progress by mystakin from The End of Progress (BY) (1:15:07) Ours Is The Fury by Faded Line from Ours Is The Fury (BY-NC-ND) Please support the bands in this show! Buy a T-Shirt, head to the shows, or buy up their entire back-catalog as a holiday present to yourself. Whatever you can do to help these bands keep making music, please do it! Also check out the other great podcasts at Metal Injection, and be sure to listen to all of the great shows (including Open Metalcast) streaming 24/7 at Metalinjection.FM. If you have any suggestions for Creative Commons licensed metal, send me a link at craig@openmetalcast.com. Open Metalcast Instrumetalcast #8 (MP3) Open Metalcast Instrumetalcast #8 (OGG)

Metal Injection Podcasts
Open Metalcast Instrumetalcast #8: Lost Time

Metal Injection Podcasts

Play Episode Listen Later Dec 22, 2013 83:16


It's been way too long since the last Instrumetalcast so to make up for it here's an extra-long episode for your listening enjoyment. Hopefully it'll tide you over into the new year where these episodes will be more frequent. Shownotes and more after the break: * (00:27) Continuum by CRYOGEN from Continuum (BY-NC-ND) * (05:21) A Dæmon Hunted​/​The Flight of Perseus by Returning We Hear the Larks from Far-Stepper/Of Wide Sea [Instrumental] (BY-SA) * (18:43) Movement 2 – Andante by Daniel Bautista from Symphony No. 2 in B minor, Op. 16 (BY-SA) * (25:40) The Land Of Shadows – The L. O. S. Theme by The Land Of Shadows from Dark Romantika (BY-NC-SA) * (29:32) To Break Is Divine by The Reptilians from The Breakers (BY-NC-ND) * (32:20) The Existential Frame by Tony C from The Existential Frame (BY-NC-ND) * (39:29) Faces by Concatenate from A New Start (BY-NC-SA) * (46:06) Penumbra by Isaac Herrera from Return to the past (BY-NC-SA) * (49:45) Departure (and Arrival) by Skyed Pillars from None (None) * (59:03) Hurricane by Rob Johnson Music from Throw The Sun Into The Sea (BY-NC-SA) * (1:01:40) Phantasm by Diometrix from How Do Things Inspire (BY-NC-SA) * (1:05:19) Far And Wide by Ray Montford from Many Roads (BY-NC-SA) * (1:10:23) The End of Progress by mystakin from The End of Progress (BY) * (1:15:07) Ours Is The Fury by Faded Line from Ours Is The Fury (BY-NC-ND) Please support the bands in this show! Buy a T-Shirt, head to the shows, or buy up their entire back-catalog as a holiday present to yourself. Whatever you can do to help these bands keep making music, please do it! Also check out the other great podcasts at Metal Injection, and be sure to listen to all of the great shows (including Open Metalcast) streaming 24/7 at Metalinjection.FM. If you have any suggestions for Creative Commons licensed metal, send me a link at craig@openmetalcast.com.

CSS-Tricks Screencasts
#130: First Moments with Grunt

CSS-Tricks Screencasts

Play Episode Listen Later Dec 10, 2013 33:30


There are all these tasks that we need to do as front end developers. Concatenate and compress our files. Run our preprocessors. Optimize images. Run tests. The list goes on and on. Using different tools for all of them is getting increasingly difficult. Running them manually makes it worse, and easy to screw up. Grunt is perfect for reining all this in. … Read article “#130: First Moments with Grunt”