There is always the need to be different when working on indie music but at the same time, it can be a bit hard to find that unique element to make your music stand out in the crowd of many. Paul's Extreme Sound Stretch, better known as Paulstretch is one such application that can be used to create that something special which would spark your creativity and help make your music stand out. It is a freely available open source program that runs on PC, Mac and as well as Linux.
Paulstretch was created by a programmer named Paul Nasca from România. This application has been around for a while now but only came into the limelight when a Justin Bieber song was stretched by 800 times its original length and immediately became a youtube viral thing. I used Paulstretch in the production of 'Baadal' a song written by Natasha Ejaz, which is covered more in detail in the 'Producing Indie Electro-Pop' Course at macProVideo.
In this article we'll see how to work with this application as it is a bit tricky, and since it's a free program doesn't really have the best documentation.
Paulstretch is not a plug-in and only runs as a standalone application so you will have to process your audio in it then later on import the resulting audio into your DAW.
Once the application is loaded, you can load in an audio file from the File menu. The only problem is that you may get a bit lost here as Paulstretch will show you files and folders you may have never seen before. Actually Paulstretch is just showing you all the hidden or system files on your Mac, which are normally invisible in the Finder. To get to a familiar place, try to locate Users/(yourname)/Documents and you will see files in your documents folder. I would suggest going to the Favorites drop-down menu and adding this location to your favorites so you won't have to keep navigating to it every time you want to load a file. Paulstretch supports WAV, MP3 and Ogg files but I would suggest sticking with WAV files for the best results. If the audio is successfully loaded into the application you will see the full location and name of the audio just below the menu bar. You will also see the sample rate and original duration of the audio in brackets.
There are four main tabs (Parameters, Process, Binaural beats & Write to file) that cover all of the features in Paulstretch and we'll look at all of them in detail.
The Parameters Tab
Now by default Paulstretch is already set to stretch the audio, so just hitting the play button at the bottom left corner of the interface should playback a stretched version of your audio. (I've had some issues getting Paulstretch to recognize my external audio interface so I would suggest sticking with the internal audio of your Mac for this application.)
If you look at the stretch horizontal slider, you should see a value of approximately 8.04x. This is telling you how much the audio has been stretched, in this case it's 8 times the original length. The value in parenthesis is giving you the resulting length. This should vary depending on the original audio. The range of this slider is quite incredible, you can go from 1x all the way up to 10,000x which can result in audio that's a few days long.
Just below this slider, to the left is a drop-down menu with the stretch modes. It's set to Stretch by default but you can change this to HyperStretch which gives you even higher stretch values, going all the way up to 1018 times the original length. This is a bit ridiculous but shows you the power of this application. There is also the Shorten algorithm which does the opposite and can shorten your audio to 0.01 times its original length. I haven't found this to be very useful as the resulting audio can be too short to be of much use.
The slider just below, Window size is quite an important parameter. Paulstretch doesn't process the entire audio as one, it works with a smaller 'windowed' buffer whose size is what you control with this slider. With small window sizes you will hear some pitch artifacts while large window sizes will create a smearing type effect even with no stretching (1x).
The window type can be changed from the Type drop-down menu. It's hard to define what each does here but the default Hann & Blackman seems to work best for me. It is said that the Rectangular and the Hamming give the best frequency response but I have noticed a white noise type artifact that is generated using these two algorithms.
The Onset sensitivity is a much more esoteric parameter and the documentation is also not very clear on its use. It seems to be something similar to a transient detection algorithm but in terms of its use, I have noticed that setting the slider to its left most will not affect the audio but towards the right most side, it seems to slow it down even when the stretch is set to 1x.
This is where things get really interesting. Instead of having a constant stretch value, you can draw in a continually varying amount of stretch in the stretch multiplier. Click on Enable to activate this option. You should see a black line drawn across the graph which represents your current static stretch value. Consider this graph to represent your entire audio starting from the left and ending on the right of the graph, irrespective of the length of the audio. Click anywhere on the graph to create nodes which will represent the stretch amount at that moment in time. Right-Click on a node to delete it. If you have used automation in a DAW, this should be quite easy to understand. Each node represents two parameters, Position & Value. The Position ranges from 0 to 100. You can think of this as a percentage value of the location of the node in time. The Value defines the stretch multiplier which ranges from 0.1 to 50 at its default but these can be changed in the Val. Min & Val. Max number boxes. Keep in mind this is a multiplier of the stretch value, so if you set the Stretch amount to 2x and set a node to a Value of 50. The stretch amount will actually be 100x.
The Sm slider can smooth out these automation breakpoints on a global level. So dragging the slider up will create a curvy line, while dragging the slider downwards will create the default linear breakpoints on the line. This slider doesn't have a numerical display so it can be a bit hard to set it.
Just below this is the Interpolate drop down which has the default linear mode, as well as a Cosine mode which will create a similar curvy line as with the Sm slider but it does so even at its default lowest setting. Dragging the Sm slider all the way up in the Cosine mode will create a very smooth, and not so curvy line but may not have a drastic effect on the audio as its almost a straight line with just minor variation of the stretch multiplier. The clear button will remove all breakpoints that have been created.
Lastly, there's the playback controls and the playback percentage slider. Some of these controls should be quite familiar to you, from using the transport controls of a DAW.
The Leftmost button is the Play button. Right-Click on it to bypass the processing and hear the original audio. The button right next to it is the freeze playback control. This can only be activated while the audio is playing back. Once activated the button will light green and the audio will be frozen in that moment of time. I've noticed this does take a second or two to instantiate. The two buttons next to it are the pause and stop buttons. If you stopped the audio while in freeze mode, starting playback again will always start in freeze mode. To disable freeze mode, click on the freeze button while the audio is playing. Next to the transport controls you have the playback slider. This shows a percentage value of your audio and you can click and drag this slider to move through the audio. This is especially useful when you have very high stretch values and you don't want to wait for ages to listen to the middle or the end sections.
The Process Tab
This section can be used to further process your sound with some interesting spectral effects. Th first one, Harmonics, when enabled waters down the signal into the fundamental and its harmonics. The fundamental pitch can be defined in the F. Freq (Hz) number box and the number of harmonics can be defined in the No. Hrm. box.
The bandwidth of each harmonic can be defined in the BW(cents) number box. A useable range for this value would be about 20-200. Higher values will make the original audio more audible and this effect will seem more like a bandpass filter.
Next is the Pitch Shift and Frequency Shift effects. These are quite self explanatory.
The Octave Mixer is an interesting effect that can generate different octave's of the original signal and you can mix them in with the original sound using their individual sliders.
Next to the octave mixer is the Filter section which is primarily a bandpass filter with controls for the two corner frequencies. Just below this is a slider labelled DHF which I'm guessing stands for Dampen High Frequencies as it acts like a lowpass filter. Moving the slider all the way to the right cuts the high frequencies the most. The Filter can be switched to a Band reject filter by enabling the BandStop option. All the other parameters will work the same in this mode.
The Spread control is one of my favorite. It is supposed to increase the bandwidth of the harmonics but what I hear is the introduction of white noise when the slider is set to the rightmost side. Try this on a percussive sound and you will get a very interesting white noise layer on top of the audio which sounds like an enveloped white noise following the progression of your audio. This is more noticeable at lower stretch values.
The Tonal/Noise control splits the audio into what the program considers as noise and tonal information. Keeping the slider in the middle plays back both parts but moving the slider either way will play back the tonal or the noise parts of the audio. The Bandwidth control is similar to the one in the Spread control but here it has more of an obvious tonal shift when changed. Try playing with this control along with the noise <-->tonal slider. Higher tonal settings with a lower bandwidth can create that low quality MP3 type garbled tone.
Next is the Compressor which can be quite helpful as processing the audio can lead to a reduction in level so the compressor can compensate for that. The Volume slider controls the overall volume of the sound.
The lower portion of the interface in this tab, is the ArbitraryFilter section. The controls are exactly the same as the Stretch Multiplier, the only difference being that it affects the filter's corner frequency instead of the stretch amount. Keep in mind the main Filter needs to be turned ON for this to work. You can use this to create some dynamic filter sweeps but I've noticed this doesn't sound as nice as a dedicated filter in a DAW or synthesizer.
The Binaural Beats Tab
This is quite a simple section. You will again see the graph with its node based controls just like in the ArbitraryFilter & Stretch Multiplier section, except the controls are for creating binaural beats. There is a Stereo Mode drop down that lets you flip the left & right channels. One of the modes is Symmetric which seems to sum the audio to mono so you don't really hear binaural beating but more of a tremolo effect. I like the Symmetric mode and drawing in some cosine interpolated curves creates some really interesting amplitude modulation effects.
The Write to File Tab
This final tab deals with rendering output files. Since the rendered audio can be incredibly long and sometimes unusable, there is an option to select just a portion of the audio to render with the select pos1 & select pos2 controls. The way to use this is to move the playback slider to where you want the position 1 to be and then click on the select pos1. Do the same for select pos2. Unfortunately there is no waveform view so you will have to do this by ear. Click on Render Selection to create the final output. You can create a WAV or an .ogg file but I would recommend to stick with the WAV format so it would be easy to use in any DAW for further processing. The 32bit option creates 32 bit WAV files but only use that if you know your DAW supports it. While creating the render, in the 'Render to audio file...' dialog box, make sure to name it completely including the extension or Paulstretch just won't render it. So an example of this would be teststretch.wav. If everything went well, the blank area in the middle should show a progress bar in blue and you should have the rendered file saved to your hard drive.
Paulstretch in Audacity
If this application is too overwhelming for you and all you need is the stretching algorithm, you can use the free audio editor Audacity. In Audacity, under the effects menu, you will find Paulstretch with just two controls. The controls are Stretch Factor, which is the stretch amount and Time Resolution in seconds, which is the same as Window size, which we have already covered in this article.