Paul's Extreme Sound Stretch by Nasca Octavian PAUL



Introduction

This is a program for stretching the audio. It is suitable only for extreme sound stretching of the audio (like 50x) and for applying special effects by "spectral smoothing" the sounds. It can transform any sound/music to a texture. The program is Open-Source and it's released under the version 2 of the General Public License. You can download the source code for Linux or the Windows binaries.

Please note that this is suitable only for extreme time stretching (e.g. if have a melody of 3 minutes and you want to listen it in 3 hours). If you want "less extreme" time stretching, you can use a program which contains the SoundTouch library.

Features

It produces high quality extreme sound stretching. While most sound stretching software sounds bad when trying to stretch the sounds a lot, this one is optimized for extreme sound stretching. So, the stretch amount is unlimited.

You can play the stretched sound in real-time (including the possibility to "freeze" the sound) or you can render the whole sound or a part of it to audio files

It has many post-processing effects, like: filters, pitch/frequency shifters

Support for WAV, OGG VORBIS files and MP3 files

It is a Free Software

Sound examples

Download

Screenshots

Usage

Before starting, you need to open a WAV, OGG VORBIS or MP3 file. You can open it by using the file menu, by launching the program with a command-line argument or (on linux systems) by drag a file from explorer and drop it on the filename bar(under the menu).

The stretch amount

The "Stretch" mode - may stretch up to 10,000 times

The "HyperStretch" mode - may stretch up to 1,000,000,000,000,000,000 times (10^18)

The "Shorten" mode - it reduces the length of the sound

The audio window

This program doesn't process the sound as a single piece: it cuts the sound in small pieces and process them. Each small piece is called a "window". The size of the windows controls the size of the window in samples, which affects the frequency and the time resolution of the resulting sounds. The small windows have good time resolution, but poor frequency resolution. Also, large windows has poor time resolution, but they has great frequency resolution. Usually, a window of 7-12k is good for most music. Very big windows (larger than 100k) can be used for special effects (for smearing the sound very much and transforming it into a sound-texture even if the stretch is closer to 1.0).

If the playback is on and you change the window size, you have to press play again to have effect on the current playback.

Also, the window has another control, which is the type of the window. It set a trade-off between frequency resolution and the noise. The Rectangular/Hamming types has the best frequency resolution, but they produces a lot of noises. The Blackman types produces almost no noise, but has a slightly lower frequency resolution.

Other controls from the "Parameters" tab

The onset sensitivity specifies how sensitive is the stretching to onsets. The leftmost position represents "ignore all onsets", while the rightmost is very sensitive to onset (and might get many false positives). When an onset is detected the stretching is disabled for that window, making the onset to start fast even on very long stretches.

The stretch multiplier represents how much the stretch amount is changed in relation to the position in the input audio

The playback controls

the play button starts the sound and in the preprocessing stage is colored in red color. When the playing starts, it is colored in green. If you right-click it, the processing is bypassed and you'll hear the original sound.

starts the sound and in the preprocessing stage is colored in red color. When the playing starts, it is colored in green. If you right-click it, the processing is bypassed and you'll hear the original sound. the freeze button "freezes" the sound (sets the stretching amount to "infinite")

"freezes" the sound (sets the stretching amount to "infinite") the pause button pauses the sound

pauses the sound the stop button

the percents slider shows/sets the playback position (in percents). It might be a 1-2 seconds delay when clicking on it before the audio seek.

The "Process" window tab

Harmonics - this effect removes everything, except a frequency and it's harmonics. The controls are: fundamental frequency, bandwidth of each harmonics(cents), number of harmonics and if the harmonics has bell-shaped curve(gauss)

- this effect removes everything, except a frequency and it's harmonics. The controls are: fundamental frequency, bandwidth of each harmonics(cents), number of harmonics and if the harmonics has bell-shaped curve(gauss) Pitch shift - shift a pitch by a certain amount of cents

- shift a pitch by a certain amount of cents Freq shift - shift all frequencies by a certain amount of hertz (usually, this produces a dissonant effect)

- shift all frequencies by a certain amount of hertz (usually, this produces a dissonant effect) Octave Mixer - pitch-shift the audio by multiples of octaves and mixes the result. The controls are: -2 (down 2 octave mix), -1 (octave down mix), 0 (dry mix), 1 (one octave up mix), 1.5 (the third harmonic mix), 2 (two octave up mix)

- pitch-shift the audio by multiples of octaves and mixes the result. The controls are: -2 (down 2 octave mix), -1 (octave down mix), 0 (dry mix), 1 (one octave up mix), 1.5 (the third harmonic mix), 2 (two octave up mix) Filter - Bandpass/Lowpass/Highpass/Bandstop/Smooth filters. The controls are: Freq1 and Freq2 (the edge frequencies), Bstop (the filter rejects everything between the Freq1 and Freq2; if this is unchecked, only frequencies between Freq1 and Freq2 remains). DHF is the amount of the smooth filter (damps higher frequencies)

- Bandpass/Lowpass/Highpass/Bandstop/Smooth filters. The controls are: Freq1 and Freq2 (the edge frequencies), Bstop (the filter rejects everything between the Freq1 and Freq2; if this is unchecked, only frequencies between Freq1 and Freq2 remains). DHF is the amount of the smooth filter (damps higher frequencies) Spread - Increases the bandwidth of each harmonic by a certain amount of cents

- Increases the bandwidth of each harmonic by a certain amount of cents Tonal-Noise - filter out the noise or the tonal part of the sound. The first slider (noise---tonal) represents which part is preserved in the sound (leftmost means "preserve only noisest part", middle means "preserve everything" and rightmost means "preserve only very tonal part"). The "Bandwidth" slider sets how sound should be spread in frequency in order to be considered noise.

- filter out the noise or the tonal part of the sound. The first slider (noise---tonal) represents which part is preserved in the sound (leftmost means "preserve only noisest part", middle means "preserve everything" and rightmost means "preserve only very tonal part"). The "Bandwidth" slider sets how sound should be spread in frequency in order to be considered noise. Compress - Compress the loudness of the sound. At the maximum value, the loudness of the output sounds is constant

- Compress the loudness of the sound. At the maximum value, the loudness of the output sounds is constant Vol - Output volume

- Output volume Arbitrary filter - is a filter with any shape

"Binaural beats" window tab

This controls the generation of binaural beats. The graph represents the binaural beats' frequency according to the position in the input audio. You can control the intensity of it with the "Vol" slider.

"Write to file" window tab

You can select the desired part of the sound and render it to disk as wav (16 bits or 32 bits) or ogg vorbis. The select pos1 and select pos2 sets the limits of the selection from the percents(playback) slider. While rendering, the interface will be a bit less responsive, but you can still play the current sound or select and play another sound.

Suggestions

It sounds very good on stretching classical music(for finding small errors on choirs :) ). I like very much listening to Vangelis using this effect. I recomand you to try to listen "Movement 1" from "El Greco" album from the 9:00 minutes stretched by 30x, using a window of 10k samples. Also, you can try the "Monastery of La Rabida" soundtrack from the "Conquest of paradise" album. To create an interesting effect you can use small amount of stretches and big window sizes (like 5-10 seconds long).

Bugs and issues

sometimes the playback is choppy. Stop the sound and restart the play as a work-around

the shorten mode is a still buggy (not finished).

on very large sizes of the window (like few M), it can use the swap a lot and slow down the system(not quite a bug)

History

20060527(0.0.1) - First release 20060530(0.0.2) - Ogg Vorbis output support - Added a wxWidgets graphical user interface 20060812(1.000) - Removed the wxWidgets GUI and added a FLTK GUI (because FLTK GUI is smaller) - Added real-time processing/player - Added input support for Ogg Vorbis files - Improved the stretch algorithm and now the amount of stretch is unlimited (and on big stretch amounts, you don't need additional memory) - Added "Freeze" button to the player - It is possible to render to file only a selected part of the sound - Other improvements 20060905(1.024) - Added MP3 support for input - Added bypass mode (if you click play with the right mouse button) - Improved the precision of the position slider (now it shows really what's currenly playing) - Added the possibility to set the stretch amount by entering the numeric value - Added pause mode and volume control - Added post-processing of the spectrum(pitch/frequency shift, octave mixer, compress,filter,harmonics) - Command line parameter for input filename - The file can be dragged from the explorer to the file text to open it 20090424(2.0) - Added free envelopes, which allows the user to freely edit some parameters - Added stretch multiplier (with free envelope) which make the stretching variable - Added arbitrary frequency filter - Added a frequency spreader effect, which increase the bandwith of each harmonic - Added a frequency shifter which produces binaural beats (the beats frequencies are variable) - Added 32 bit WAV rendering - Other improvements and bugfixes 20110210(2.1) - Added loading/saving parameters - Added Linux Jack support (thanks to Robin Gareus for the patch) - Added "Symmetric" mode of Binaural Beats - Support for longer stretches - for the really patient ones - up to one quintillion times ( 10^18 x ) ;-) - Fixed a bug which produced infinite loop at the end of some mp3 files (at playing or render) - Fixed a bug in the mp3 reader - other minor additions 20110211(2.1-0) - Increased the precision of a paremeter for extreme long stretches 20110303(2.2) - Improved the stretching algorithm, adding the onset detection - Shorten algorithm improvements - Added an option to preserve the tonal part or noise part - Ignored the commandline parameters starting with "-" (usefull for macosx) 20110305(2.2-0) - gzip bugfix which prevents loading of the .psx files on Windows - bugfix on freeze function on onsets 20110305(2.2-1) - removed the noise on starting/seeking with the player - bugfix on freeze function 20110306(2.2-2) - buffer error on render

Contact