-
Notifications
You must be signed in to change notification settings - Fork 0
What is this?
A Project that i did for university, first C++ experience, code is in quite bad form but the built application does wonders. Therefore I believe this project should be continued!
Product: multiple file granular re-synthesis and resampling tool ‘SRXvert’. Language and frameworks used: C++11, JUCE library & personal JUCE extensions. The tool can either granulate, resample or both (resampling -> granulation -> out).
General Multiple .wav, .mp3, .aif/aiff files can be opened or drag & dropped into the application. They will be processed one by one and rendered as .wav files. Export folder by default will be the parent folder of opened files, but any folder can be browsed. Option to delete original files after processing is also present, deletes right after all processing is done.
Granulation has 6 settings:
- Varied grain size
- Varied stretch factor
- Voice count
- Amplitude envelope
- Length of new files
- Number of new files
Varied grain size Grain size is in milliseconds. It has 2 range knobs and a middle circular picker. If min/max range knobs are at the same position as middle picker then there will be no random variation between each grain. If range knobs are moved, each new grain will be in that random range. When random range is selected the circular picker becomes a bias setting, meaning the random picker will be slightly (will be a user setting in future versions) biased towards the pickers value.
Varied stretch factor Same random range knobs and circular picker with bias setting as with grain size. 1.0x stretch leaves each grain untouched. 0.5x plays it 2 times the speed, 2.0x plays half the speed, etc. With the current version the stretching algorithm also pitch shifts the grain.
NOTE: Random grain and stretch are applied to each grain on every audio channel and with every voice.
Voice count Granulation can be monophonic or polyphonic with up to 30 voices.
Amplitude envelope Various grain amplitude envelopes are implemented, giving a wide range of results. See here for more information on window envelopes.
Length of new files How big in milliseconds each rendered file will be Number of new files By default is 1, meaning 1 file will be generated per each opened file. Up to 10 files can be generated per each source file.
Resampling has 5 settings:
- Sampling rate
- Interpolation
- Bit rate
- Append to name • Mono/Stereo
Sampling rate Wide range of sampling rates available, as low as 11,025Hz and as high as 192,00Hz. See here for more information on sampling rates.
Interpolation Upsampling interpolation techniques. Three are personally implemented: Linear, Cosine, Cubic. One is provided by JUCE library: 4-Pole Lagrange. See here for more information on interpolation.
Bit rate 3 types of rendering bit rates: 16, 24 and 32-floating point bit. See here for more information on bit rates.
Append to name A suffix can be appended to the newly rendered files, indicating what quality they are exported as. Can be filename_Samplerate.wav/_Bitrate.wav/_Samplerate_Bitrate.wav/Original. This setting is ignored if both granulate and resample are enabled, in that case a *_gran(number_of_output).wav is used.
Mono/Stereo New files can be rendered either stereophonic or monophonic.