New Tool (3.0): CDP lua tool

5007 Screenshot 2014-05-12 00.01.34.png

Added support for pvoc process that require 2 input sounds such as morph. Tested with the ‘Morph Morph’ process which is included as an example definition. I’ve also updated the definitions to include all definitions and updates posted since last release.

When using it, the first sound is the selected sample when the tool is run, the second sample is selected from a currently loaded instrument via the popup choosers.

Looking forward to your definitions, enjoy…

Awesome

help!
some functions work but some dont :(/>/>
win xp sp3 - latest cdp - renoise 3.0

sorry - i used the previous tip
“The usual cause of this error message is that the environment variable CDP_SOUND_EXT has not been defined (to wav). This can be done via Control Panel->System Settings->Advanced->Environment Variables.”
and now is ok :)

So good! :yeah:/> :drummer:/>

Updated the definitions to include the multi input pvoc stuff and a few extra’s, dl the zipped version;

Attachment 5009 not found.;

Seems like for “2pvoc” to work, you always need to have a parameter specified, otherwise you don’t get the selection for the second input shown inside the tool. For example with ‘combine max’ ( file:///C:/cdpr7/docs/html/ccombfrm.htm ), which commandline instructions don’t have any arguments ( combine max infile infile2 [infile3 …] outfile ), I have put in a dummy switch parameter called ‘nothing’ that doesn’t do anything, it is just put there for this process to work.

edit;

btw liking that selection method of choosing the second file, would be cool to have something like this for choosing a second audio input as well (input = “2audio” :wink: ). There are a bunch of processes that can use a second audio input, from convolution, cross-modulation to more exotic stuff, maybe you can re-use some of this 2pvoc code for this? :yeah:

Sweet! These sound so good, morph is wonderful!
Thats 349 definitions now, such an immense effort

Fixed in the next update…

Yeah definately, lets go with input = “2audio”, and also input = “repitch” you mentioned earlier (or 2repitch where required), feel free to put the definitions together for those.

Also thinking aloud for process selection, I currently have a few options

  • process in place - overwrite existing sample with processed output (the current mode) - process to new sample/instrument - selection - replaces the current sample with the processed selection (like trim then process) - selection to new sample - just the selected portion to a new sample - selection in place - overwrite the selection with processed audio (but what about processes that return longer/shorter files?) - selection in place to new sample/instrument - same as above but to a new sample

And what about sample or instruments, either or both? If you process to a new sample then how should keyzones be assigned, should the new sample have a keyzone that replaces all others?
So potentially we could have a bit of a cluttered GUI if all these options are available, I would prefer something simpler but not yet sure how to do that, what do you think?

Cool, I’ll start on those :drummer:

For me having additional options to have the processed result, either in the next sample slot of the current instrument or new instrument would be most helpful. Depending on if you have a selection or not in the sample editor would determine if you process ‘selection in place’, ‘selection to new sample/instrument’ or ‘process in place’, ‘process to new sample/instrument’.

If technically possible(?) I don’t think it is necessary to have separate process buttons for all the different options, just put in the main three choices and have a selection in the sample editor yes/no flag determine what’s put out?

Or have all these possible, but hide the possibilities underneath different keyboard shortcuts? Leaves the gui less cluttered?

About the keyzones thing, I’ve never used any other keyzone setting than whats default in Renoise when loading a sample in an empty instrument or loading multiple samples and pressing ‘drumkit’ :) . I’d like the newly introduced sample to behave like when you add a new sample to a multi-sampled drumkit, it would automatically take the next key neighboring the previous sample I guess.

Most of the times I use a new instrument with only one sample when I want to play a sound across the keyboard and a multi-sample instrument for drumkit (1 key is 1 sound)-like triggering.

Thanks, I think the keyzones would detect what already exist and decide from there. If it is a drumkit it will just add another sound to the kit (won’t work on sliced instruments unless destructively rendered), if it is 1 sound spread across a keyboard it will replace it. If there are layered sounds spread across a keyboard it will add a layer. I think I will also split the large process button into 3 smaller buttons, 1 for process in place, another for process to new sample and a third for process to new instrument. If no range is selected it will work on the entire sample. Watch this space!

Oy,

did a bunch of new definitions, dl here;

Attachment 5015 not found.

For the ones that need 2 audio inputs I’ve used input = “2audio” in the cmds line, and I have also done a few with input = “repitch”. Obviously I haven’t been able to check whether or not parameter ranges are set right for these as the terminal returns a first error about ‘input file not supported’.

Looking forward to the update :drummer:

Excellent! Will get onto implementing those definitions after the next update. I bumped up handling stereo samples cos that aspect of it was really getting on my nerves, still working on it but after I’m done it will no longer be an issue if a sample is stereo or mono. Also fixed some bugs including that one on ‘combine max’ and a few other tweaks here and there.

Nice!

Noticed some of the processes using 2 inputs also being picky about samples needing to have the same bitdepth or particular samplerate to work. Can these things be polled through scripting, whether or not a process needs only mono, can do stereo straight out the box, or what samplerate/bitdephth it accepts?

Maybe it can help, speed up / optimize the conversion, if we can specify these default details in the definition? For example;

dsp["Envel Tremolo - Tremolo a sound linearly between frequencies"] = {   
 cmds = { exe = "envel", mode = "tremolo 1", input = "mono or stereo", samplerate = "any", bitdepth = "any", tip = "Tremolo is a pulsation in the amplitude of a sound. The frequency of the tremolo is the rate of the amplitude pulsation. ('Vibrato' is a frequency displacement.) This technique is familiar to us as a feature of various singing styles, and also as a control available on synthesisers. It can be used to ......}  

&

dsp["Blur Avrg - average spectral energy over N adjacent channels"] = {   
 cmds = { exe = "blur", mode = "avrg", input = "pvoc", input = "mono", samplerate = "any", bitdepth = "any", tip = "The averaging of engergy information causes high energy data to cross channels. The result is the intrusion of timbral data into channels which previously didn't have that data. Test results led to a 'roughening' of the sound, though......}  

So for certain definitions that can do stereo at whatever sample setting, these don’t get forced to downgrade to a particular standardized sample quality.

Probably over-thinking things and needn’t worry about this :)

I’m not sure how to find this out about a process, it would be great if you could. I may contact CDP devs about this, in the meantime bit depth and sample rate will have to be handled by the user, it is simple to detect a mismatch between two samples but I don’t think it is possible to change the sample rate or but depth of a sample via the API. I can convert mono to stereo and vice versa and this is what I am doing for the stereo handling. Basically every stereo sample is split into mono samples, each channel is then processed and then it is converted back to a stereo sample.

Yes, that would probably help with the stereo handling, even where a process supports stereo it is only processing mono files, I basically have to assume every process is mono only. If we specify that a process supports stereo then this would speed up the processing time for stereo samples.

I will give this some more thought, I don’t want to rush this in yet, lets see how performance is with what I have implemented and then we can look at ways to speed that up, stereo handling has been more work than I anticipated!

Running through my last definitions I think it is save to say all pvoc stuff runs solely with mono files, but there’s plenty of stuff that can have stereo inputs, for example these work with stereo files;

chanphase - invert the phase…
envel attack 1 to 4
envel curtail 1 to 6
envel dovetail
envel swell
envel tremolo linearly
envel tremolo logorhyt…
envel warp (all of them)
envnu expdecay
extend baktobak
extend doublets
extend drunk

et cetera.

Maybe have the default behavior be assuming all processes get mono inputs, unless there is a flag in the cmds line stating it can handle stereo?

I dunno, flag = “stereo”, if this is specified in the definition it defaults to how it works now?

edit;

btw maybe also something to keep in mind is that certain processes need mono inputs, but return a stereo output!

Like ‘madrid’ and ‘mchanrev mchanrev’. Right now processing a stereo sample will give an error notice in the terminal. Not sure how this would work with your next update, maybe easiest to have each channel treated as mono, and have the 2 stereo results collected in the same Renoise instrument?

Ok, went through the definitions here and have checked whether or not processes can take stereo inputs, see spoiler;

[details=“Click to view contents”]

These also works with stereo files as input;

balance - can’t test multi audio inputs not yet supported, assume files have to be the same samplerate/bitdepth format

chanphase - invert the phase…

envel attack 1 to 4
envel curtail 1 to 6
envel dovetail
envel swell
envel tremolo linearly
envel tremolo logorhyt…
envel warp (all of them)

envnu expdecay
extend baktobak
extend doublets
extend drunk
extend drunken walk
extend freeze 1 & 2
extend iterate 1 & 2
extend loop 1, 2 & 3
extend repetitions
extend scramble 1 & 2
extend sequence 1 & 2

filter bank 1, 2, 3, 4, 5, 6
filter fixed 1, 2, 3
filter iterated 1 & 2
filter lohi
filter phasing 1 & 2
filter sweeping 1 to 4
filter userbank 1 & 2
filter variable 1 to 4 (bandpass to notch)
filter varibank 1 & 2

grain duplicate
grain omit
grain remotif 1 & 2
grain repitch 1 & 2
grain reposition
grain rerhythm 1 & 2
grain reverse
grain timewarp

housekeep bakup
housekeep chans 3, 4, 5
housekeep deglitch
housekeep endclicks
housekeep extract eliminate dc offset
housekeep extract top & tail
housekeep gate
housekeep respec 1, 2, 3

interlx mixpaste
iterline 1 & 2
iterlinef 1 & 2
manysil
merge

modify brassage - 1 to 7
modify convolve - 1, 2 (not sure can’t test)
modify loudness - 1 to 8
modify radical - 1 to 6
modify revecho 1 to 3
modify sausage
modify space
modify speed 1, 2, 3, 4
modify stack

newdelay
peakchop
phase - invert phase
prefix silence
retime - all of them

sfedit cut (both)
sfedit insert silence
sfedit remove a segment
sfedit shrink around midpoint
sfedit shrink from end
sfedit shrink from specified time
sfedit shrink from start
sfedit insert - 1, 2, 3 (not sure can’t test)
sfedit join - (not sure can’t test, same for joindyn & joinseq)
sfedit masks 1
sfedit replace - (not sure can’t test, I guess both sounds have to be the same)
sfedit sphinx 1, 2, 3 - (not sure can’t test, I guess both sounds have to be the same)
sfedit twixt 1, 2, 3 - (not sure can’t test, I guess both sounds have to be the same)

silend 1, 2
strans multi 3
strans multi 4

subtract - can’t test, assume this works if samples are of the same format

topantail2
tremolo tremolo - both versions

These (need mono input), always returns stereo result;

madrid 1 & 2
mchanrev mchanrev
mchiter iter 1, 2,
modify scaled pan
modify space pan
newtex 1, 2, 3
texture grouped - all 5 versions
texture simple - all 5 versions
reverb - multichannel reverb
roomverb
shifter 1 & 2
wrappage

These only works with stereo sound inputs, returns stereo results;

modify space - mirrow
modify space - narrow
phase - stereo enhance stereo
modify shudder - based on description, can’t test [/details]

All pvoc stuff uses mono inputs.

Thanks! Thats very useful, I’ve just exported the latest version so I will look at these for the next version and let you know how to code these in the definitions, but for now…

Here is v0.3.
5019 Screenshot 2014-05-15 15.44.06.png

Changes are:

  • Terminal output is more concise, blank lines are removed and the ‘min’ ‘sec’ lines are not displayed (although they are in the scripting terminal/editor) - Presets are now filtered by exe, there is now an additional drop down that lists all the CDP exe’s, these then filter the presets to only show those related to that exe - Bug fixed for processes with no arguments, these display properly now and don’t need dummy arguments in the definition - Definitions updated to latest version posted (but those with 2 inputs other than pvoc are not yet implemented) - Full stereo file support, you don’t need to convert samples to mono for any processes including pvoc, these are all handled in the background. This includes processes that take two sound inputs, either sound can be mono or stereo. If the the 2nd sounds is stereo the final output will also be stereo (even if it started of mono)

Note, there may be some bugs I have tested as much as I can but I added around 200 lines of code just for the stereo sample handling and this tool is getting increasingly complex.
Processing time will also be increased if you are working with stereo samples because the tool has to twice the amount of work, however it is a joy to never have to worry if your sample is mono or stereo

Excellent, so good :) , the exe filtering / preset separation is a great touch! :drummer:

I notice sample loops are automatically added when processing stereo sounds, is this a bug? Will test drive this version to see if I find strange things, am also finishing the definitions with all of the texture stuff. Will post tonight.

I love how some of the previously mono input only effects, can get a spatial character when running a stereo sample through them, for example with all the distort processes :).

Similar spatial bonus weirdness with effects like ‘extend freeze’ which already had stereo input compatibility, but now because the sound is split into 2 separate channels as input and glued back after processing, I think it sounds differently than before(?). If stereo processing redundancy gets addressed for effects that can already do stereo, maybe leave this new method in there as feature?

I notice when you’re processing a stereo sample with a pvoc process and processing fails, maybe because a setting is wrong or bit depth incompatibility, the tool throws up an error notice; ‘An output file was not produced - check your settings’. However, when pressing ok in the notice window, the tool still attempts to process the other channel, maybe this can be optimized, processing can stop when the first error notice appears?

Also with the “2pvoc” processes, for example ‘combine mean’, if you use audio files that differ in bitrate you’ll get an error notice. This was impossible to address with lua natively(?), but CDP has a process that could maybe help with this? Namely; Housekeep Respec 2 (converts from integer to float & vice versa), or as user just read the terminal and adjust manually :).

Updated definitions here;

Removed - will upload new one soon was error in it for grain stuff -

edit, one more try; 5023 user_definitions.rar :

(When having min = 1, max = length/1000 for a parameter in a definition (the docs specify this range), but the input soundfile is actually smaller than min = 1, the tool gui stays empty and every other subsequent selected preset will also show up empty. Closing the gui and opening it on a lengthier soundfile will ‘fix’ this. Had this problem for the first entry for grain, it automatically bugged all other presets so I’ve updated the list.)

I’ve added all the texture stuff, while these are processes which can take multiple audio inputs, they already work. You need to insert a textfile in the first notedata parameter though (syntax in the docs).

In the spoiler I’ve collected all the still open possible & impossible definitions;

[details=“Click to view contents”] Following processes not supported yet, impossible to support ( = multi channel files), redundant et cetera;

Group = BLUR;

BLUR SHUFFLE – shuffle order of analysis windows in file - domain etc not specifiable

Group = COMBINE;

COMBINE MAKE – Generate spectrum from pitch & formant data only - pitch file & formant file nodig! - formant file maken met FORMANTS GET
COMBINE MAKE2 – Generate a spectrum from only pitch, formant and envelope data - pitch file, envelope & formant file nodig! - formant file maken met FORMANTS GET

Group = ENVEL;

ENVEL BRKTOENV – Convert a (text) breakpoint envelope to a binary envelope file - non supported input = inbrkfile & output = outenvfile
ENVEL CREATE – Create an envelope - unsupported input = envfile, createfile & brk file
CYCLIC – Create a sequence of repeated envelopes, in a binary envelope file - unsupported output
ENVEL DBTOENV – Convert a (text) breakpoint file with dB values to a binary envelope file
ENVEL DBTOGAIN – Convert a (text) breakpoint file with dB values to gain values (0 to 1)
ENVEL ENVTOBRK – Convert a binary envelope file to a (text) breakpoint envelope file
ENVEL ENVTODB – Convert a binary envelope file to a (text) breakpoint envelope file with dB values
ENVEL EXTRACT – Extract the amplitude envelope from an input soundfile - unsupported output binary & breakpoint env file.
ENVEL GAINDODB – Convert a (text) breakpoint file with gain (0 to 1) values to dB values
ENVEL IMPOSE – Impose an envelope on an input soundfile - mode 2 t/m 4 - needs extra unsupported input files
ENVEL REPLACE – Replace the existing envelope of a soundfile with a different envelope - mode 2 t/m 4 - needs extra unsupported input files
ENVEL REPLOT – Warp the envelope in a (text) breakpoint envelope file - output not supported
ENVEL RESHAPE – Warp the envelope in a binary envelope file - output not supported
ENVEL SCALED – Impose an envelope on an input soundfile, scaling it timewise to the sound’s duration - needs brk point file as additional input
ENVEL TIMEGRID – Partition a soundfile into a sequence of ‘windows’ separated by silence - multi outs not supported

Group = EXTEND;

SHRINK – Repeat a sound, shortening it on each repetition - mode 5 & 6 - multiple file outputs not supported

Group = FILTER;

FILTER BANKFRQS – Generate a bank of frequencies for use as a filterbank (add amplitudes to the textfile for use with FILTER USERBANK) - output not supported
FILTRAGE – Generate randomised VARIBANK filterbank files - no inputs, output not supported
VFILTERS – Make datafiles for fixed-pitch FILTER VARIBANK filters - inputs & outputs not supported.

Group = FORMANT;

FORMANTS GET – extract evolving formant envelope from an analysis file - outfile not supported
FORMANTS GETSEE – extract formants from analfile and write as ‘soundfile’ for viewing - useless process anyway :)/>/>/>/>/>
FORMANTS PUT – impose spectral envelope in a formant file on spectrum in a PVOC analysis file - additional needed formant file input not supported
FORMANTS SEE – convert formant data in a binary formant data file to a ‘soundfile’ for viewing - redundant process anyway

Group = GRAIN;

GRAIN ASSESS – Estimate best gate value for grain extraction - no output / just terminal info
GRAIN COUNT – Count grains found in a sound (at given gate and minhole values)
GRAIN FIND – Locate timings of grain-onsets in a grainy sound - out text file not supported
GRAIN GREV – Find and manipulate ‘grains’, using envelope troughs and zero-crossings - mode 6 not supported, outputs time file, mode 7 needs addtional text file input

Group = HOUSEKEEP;

HOUSEKEEP BATCHEXPAND – Expand an existing batch file - needs batchfile
HOUSEKEEP BUNDLE – List files into a textfile, for sorting, backup or creating a dummy mixfile - output textfile not supported
HOUSEKEEP CHANS – List channels or change channel format of a soundfile - mode 1 & 2 only lists in terminal not supported
HOUSEKEEP COPY – Make and delete exact copies of a sound - mode 1 no use, mode 2 multiple outputs not supported
HOUSEKEEP DISK – Show available space on disk - output in terminal not supported
HOUSEKEEP EXTRACT – Extract significant sound from a recording, top & tail, remove glitches, etc. - mode 1 multiple outs not supported, mode 2 view also, mode 6 write to a text file
HOUSEKEEP REMOVE – Remove existing copies of a soundfile - no use
HOUSEKEEP SORT – Sort files listed in a textfile - listfile output not supported

Group = MULTICHANNEL;

FLUTTER FLUTTER – Add multi-channel-distributed tremolo to a multi-channel file - multichannel input files not supported
FRACTURE – Disperse a mono signal into fragments spread over N-channel space - needs additional textfile input control, also multi files not supported.
FRAME SHIFT – Create frame patterns for multi-channel speaker setups - multichannel input files not supported
MCHANPAN MCHANPAN – Pan sounds around a multi-channel space - multichannel outs not supported
MCHSHRED SHRED – Sound is cut into random segments which are then reassembled in random order within the original duration - multi outs not supported
MCHSTEREO MCHSTEREO – Place several stereo files in a multi-channel output space - multi channel output not supported
MCHZIG ZAG – Extend by reading back and forth in the soundfile, while panning to a new channel at each ‘zig’ or ‘zag’ - multi channel out not supported
MULTIMIX CREATE – Create a multi-channel mixfile - mix outfile not supported
NEWMIX MULTICHAN – Mix from a multi-channel mixfile to give a multi-channel soundfile output - mixfile input not supported
PANORAMA – Distribute > 1 mono files in a spatial panorama across a specified angle of a sound-surround loudspeaker array - output mixfile not supported
TANGENT ONEFILE – Play repeats of a mono soundfile on a tangent path - out mixfile not supported
TANGENT TWOFILES – Play repeats of two synchronised mono soundfiles on a tangent path - out mixfile not supported
TANGENT SEQUENCE – Play a sequence of mono soundfiles on a tangent path - out mixfile not supported
TANGENT LIST – Play a sequence of mono soundfiles as listed in a textfile along a tangent path - inputs & outputs not supported
TEXMCHAN TEXMCHAN – Create textures over a multi-channel frame - amount of output channels not supported
TRANSIT SIMPLE – Place repetitions of a mono soundfile on a path into and across an 8-channel array - output mixfile not supported
TRANSIT FILTERED – Place filtered repetitions of a mono soundfile on a path into and across an 8-channel array - output mixfile not supported
TRANSIT DOPPLER – Place pitch-shifted repetitions of a mono soundfile on a path into and across an 8-channel array, suggesting a doppler shift - output mixfile not supported
TRANSIT DOPLFILT – Doppler effect on a path into and across a 8-channel array with filtering, to suggest greater distance - output mixfile not supported
TRANSIT SEQUENCE – Position a sequence of mono sounds (at least 3) on a path into and across an 8-channel array - output mixfile not supported
TRANSIT LIST – Position a sequence of mono sounds (at least 3), as listed in a textfile, on a path into and across an 8-channel array - input & output not supported
MULTIMIX to generate a mono ‘multi-channel’ mixfile from mono input(s) - output multi file not supported

Group = M-C TOOLKIT;

ABFPAN – Apply a fixed or orbiting 1st order B-Format pan to mono soundfile - amount of output channels not supported
ABFPAN2 – Apply a fixed or orbiting 2nd order B-Format pan to mono soundfile - amount of output channels not supported
CHANNELX – Extract all or selected channels from a multi-channel soundfile - no use, already supported in another process for extracting channels from a stereo file
CHORDER – Reorder soundfile channels in a multi-channel soundfile - string not supported
CHXFORMAT – Modify WAVE_EX header to change GUID and/or speaker positions - no use
FMDCODE – Decode 1st or 2nd order B-Format soundfile to a choice of speaker layouts - input file not supported
NJOIN – Concatenate multiple soundfiles, with optional CUE list output for CD burning - needs file list
PAPLAY – Playback of multi-channel soundfiles - no use
RMSINFO – Scan file and report RMS and average power level statistics - terminal output not supported
SFPROPS – Display soundfile details, with WAVE-EX speaker positions - terminal output not supported

Group = MODIFY;

DSHIFT – Adds Doppler shift to panning - input & output not supported
MODIFY FINDPAN – Find stereo-pan position of a sound in a stereo file - output in terminal not supported
MODIFY SHUDDER – Shudder a stereo file - multiple outputs not supported - it wants to change the output samples name appending a number
MODIFY SPACE – Spatialise, or alter the spatialisation of, a soundfile - mode 3 needs input textfile and outputs tect
MODIFY SPACEFORM – Create a sinusoidal spatial distribution data file - outputs data file
MODIFY SPEED – Change speed (& pitch) of sound - mode 3 & 4, output to textfile or terminal(?)

Group = MORPH;

MORPH GLIDE - interpolate, linearly, between 2 single analysis windows which have been extracted with SPEC GRAB - needs yet unsupported input

Group = ONEFORM;

GET – Extract formant-envelope at a specific time in an existing CDP formant file - formant files not supported
ONEFORM PUT – Impose the formant-envelope in a single-moment-formants datafile onto the sound in an analysis file - needs formant envelope, not supported
COMBINE – Generate a new sound from pitch information and single-moment-formants data - needs repitch data input, single formant file (!!!)

Group = PITCHINFO;

PITCHINFO CONVERT – Convert a binary pitch data file to a time frequency breakpoint text file- input & outputs not supported
PITCHINFO INFO – Display information about pitch data in a (binary) pitchfile - terminal output not supported
PITCHINFO SEE – Convert binary pitchfile or transposition file to a pseudo-soundfile, for viewing - no use
PITCHINFO ZEROS – Show whether a pitch data file contains uninterpolated zeros (unpitched windows) - terminal output not supported

Group = PSOW;

CHOP – Chop sound into sections between specified FOF-grain (chunks) OR: Chop away sections of soundfile that you DON’T want to manipulate with PSOW functions - multiple sound output not supported yet
CUTATGRAIN – Cut at exact grain time - needs brk point file
DELETE – Time-shrink sound by deleting a proportion of the pitch-synchronised grains - needs pitch breakpoint data
FEATURES – Impose new features on vocal-type sound, preserving or modifying FOF-grains - needs pitch breakpoint data
GRAB – Grab a pitch-synchronised grain from a file, and use it to create a new sound - needs pitch breakpoint data
IMPOSE – Attempts to impose vocal FOFs in 1st sound onto a 2nd sound - needs pitch breakpoint data
INTERLEAVE – Interleave FOFs from two different files - needs multiple pitch breakpoint data inputs
INTERP – Interpolate between 2 pitch-synchronised grains, to produce a new sound. Grains acquired by PSOW GRAB, with duration 0.0 - maybe it works? but needs grain analysed monofiles by psow grab
LOCATE – Locate the exact start time of the nearest FOF-grain - terminal output not supported
PTOBRK WITHZEROS – convert pitch trace from binary .frq to text breakpoint file (.txt or .brk) for PSOW - inputs & outputs not supported
REINFORCE – Reinforce harmonics in a vocal-type FOF-grain file - needs additional text file inputs
REPLACE – Combine FOFs of 1st sound with the pitch of the 2nd sound - needs pitch breakpoint data
SPACE – Distribute the alternate FOFs in the sound over a stereo space - needs pitch breakpoint data
SPLIT – Split vocal FOFs into subharmonic and upwardly transposed pitch - needs pitch breakpoint data
STRETCH – Timestretch/transpose a sound by repositioning the pitch-synchronised grains. The grains themselves are not time-stretched - needs pitch breakpoint data
STRTRANS – Timestretch/transpose a sound by repositioning the pitch-synchronised grains, and overlapping them - needs pitch breakpoint data
SUSTAIN – Freeze and sustain a sound on a specified pitch-synchronised grain - needs pitch breakpoint data
SYNTH – Impose vocal FOFs on a stream of synthesised sound (Experimental program) - needs pitch breakpoint data

Group = REPITCH;

REPITCH ANALENV – Extract the window-loudness envelope of an analysis file - out envelope file not supported
REPITCH APPROX – Make an approximate copy of a pitchfile - mode 2 output transposition file
REPITCH COMBINE – Generate transposition data from 2 sets of pitch data, or transpose pitch data with transposition data, or combine 2 sets of transposition data to form new transposition data, producing a binary data file output - output not supported
REPITCH COMBINEB – Generate transposition data from 2 sets of pitch data … - input & outputs not supported
REPITCH EXAG – Exaggerate pitch contour - mode 2, 4 & 6 transposition output not supported
REPITCH GENERATE – Create binary pitchdata from a textfile of time midi value pairs - input & outputs not supported
REPITCH GETPITCH - Attempt to extract pitch from spectral data - needs to be supported like pvoc(?)
REPITCH INSERTSIL – Mark areas as silent in a pitchdata file - needs additional text file input
REPITCH INSERTZEROS – Mark areas as unpitched in a pitchdata file - needs text file
REPITCH INVERT – Invert pitch contour of a pitch data file - mode 2 transposition output
REPITCH PCHTOTEXT – Convert binary pitch data (.frq to text file (.txt) - textfile output not supported
REPITCH QUANTISE – Quantise pitches in a pitch data file - needs data file - gives transposition file as output
REPITCH RANDOMISE – Randomise pitch line - mode 2 outputs transposition file
REPITCH SMOOTH – Smooth pitch contour in a pitch data file - mode 2 outputs transposition file
REPITCH SYNTH – Create the spectrum of a sound following the pitch contour in the pitch file - harmonics data file
REPITCH TRANSPOSE – Transpose spectrum (spectral envelope also moves) - mode 4, needs transposition as a binary data file (.trn)
REPITCH TRANSPOSEF – Transpose spectrum: but retain original spectral envelope - mode 4, needs transposition as a binary data file (.trn)
REPITCH VIBRATO – Add vibrato to pitch in a pitch data file - mode 2 outputs transposition file
REPITCH VOWELS – Create spectrum of vowel sound(s) following pitch contour in pitch file - needs voweltext file

Group = SFEDIT;

SFEDIT CUTMANY – Cut and keep several segments of a sound - multiple outputs not supported
SFEDIT EXCISES – Remove segments of a soundfile and close up the gaps - needs textfile
ISOLATE – Disjunct portions of soundfile are specified by textfile or dB loudness and saved to separate files (also see PARTITION) - multiple outfiles not supported
PARTITION – Partition a mono soundfile into disjunct files in blocks defined by groups of wavesets - multiple output files not supported
SFEDIT RANDCHUNKS – Cut chunks from a soundfile, randomly - multiple output files not supported
SFEDIT RANDCUTS – Cut soundfile into pieces with cuts at random times - multiple output files not supported
SFEDIT SHRINK – Repeat a sound, shortening it on each repetition - mode 5 & 6 multiple output files not supported
SFEDIT SYLLABLES – Separate out vocal syllables - needs textfile, multiple outputs not supported
SFEDIT ZCUTS – Cut out and keep segments of a MONO soundfile, cutting at zero crossings (no splices) - multiple outs not supported

Group = SNDINFO;

SNDINFO CHANDIFF – Compare channels in a stereo soundfile - terminal output not supported
SNDINFO DIFF – Compare two sound, analysis, pitch, transposition, envelope or formant files - terminal output not supported
SNDINFO FINDHOLE – Find largest low level hole in a soundfile - terminal output not supported
SNDINFO LEN – Display duration of a soundfiling-system file - terminal output not supported
SNDINFO LENS – List durations of several soundfiling-system files - terminal output not supported
SNDINFO LOUDCHAN – Find loudest channel in a stereo soundfile - terminal output not supported
SNDINFO MAXI – List levels of several soundfiles - writes to textfile
SNDINFO MAXSAMP – Find maximum sample in a soundfile or binary data file - terminal output not supported
SNDINFO MAXSAMP2 – Find maximum sample within a specified timerange in a soundfile - terminal output not supported
SNDINFO PRNTSND – Print sound sample data to a textfile - prints to textfile
SNDINFO PROPS – Display properties of a soundfiling-system file - terminal output not supported
SNDINFO SMPTIME – Convert sample count to time in soundfile - terminal output not supported
SNDINFO SUMLEN – Sum durations of several soundfiling-system files - terminal output not supported
SNDINFO TIMEDIFF – Find difference in duration of two soundfiles - terminal output not supported
SNDINFO TIMESMP – Convert time to sample count in a soundfile - terminal output not supported
SNDINFO UNITS – Convert between different units - terminal output not supported
SNDINFO ZCROSS – Display fraction of zero-crossings in a soundfile - terminal output not supported

Group = SPECEDIT;

SPECGRIDS – Partition a spectrum into parts, over a grid - multiple outputs not supported

Group = SPECINFO;

SPECINFO CHANNEL – Returns PVOC channel number corresponding to a given frequency - terminal output not supported
SPECINFO FREQUENCY – Returns the centre frequency of the PVOC channel specified - terminal output not supported
GET_PARTIALS HARMONIC – Extract relative amplitudes of partials in a pitched source - outputs textfile
SPECINFO LEVEL – Convert (varying) level of the analysis file to a pseudo-soundfile (1 window -> 1 sample) - no use
PEAK EXTRACT – Extract spectral peaks from analysis file and write to a text file - textfile output
PEAKFIND – Find times of loudness peaks in a sound and output as a datafile - output not supported
SPECINFO OCTVU – Text display of the time-varying amplitude of the spectrum, within octave bands - textfile output
SPECINFO PEAK – Locate time-varying energy centre of the spectrum - textfile output
SPECINFO PRINT – Print data in an analysis file as text to file - textfile output
SPECINFO REPORT – Text report on location of frequency peaks in the evolving spectrum - textfile output
SPECINFO WINDOWCNT – Returns the number of analysis windows in infile - terminal output not supported

Group = SPECNU;

SPECNU SLICE – Divide an analysis file into individual frequency bands, saving each as a separate analysis file - multiple outputs not supported

Group = STRETCH;

STRETCH TIME – stretch/compress duration of infile without changing the pitch - mode 2 terminal output not supported
STRETCHA – Utility to Calculate timestretch factor relating to beats and tempo for use with STRETCH TIME - terminal output not supported

Group = SUBMIX;

SUBMIX ADDTOMIX – Add soundfiles (at maximum level and time zero) to an existing mixfile - mixfiles not supported
SUBMIX ATSTEP – Convert a list of soundfiles to a mixfile (fixed time-step) - mixfiles not supported
ATTENUATE – Alter the overall level of a mixfile - mixfiles not supported
DUMMY – Convert list of soundfiles into a basic mixfile (for editing) - mixfiles not supported
SUBMIX FADERS – Mix several mono or stereo files using a time-changing balance function - needs balance data text file
FILEFORMAT – Display format of a mixfile - terminal output not supported
GETLEVEL – Test maximum level of a mix, defined in a mixfile - terminal output not supported
INBETWEEN – Generate a set of sounds inbetween the 2 input sounds, through weighted mixes of the input sounds, from mostly sound1 to mostly sound2 - multiple outputs not supported
SUBMIX INBETWEEN2 – Generate a set of sounds in-between the 2 input sounds by interpolation pegged to zero-crossings - multiple outputs not supported
SUBMIX MERGEMANY – Quick mix of several soundfiles (with the same number of channels) - >2 audio inputs not supported
MIX – Mix sounds as instructed in a mixfile - mixfiles not supported
SUBMIX MODEL – Replace soundfiles in an existing mixfile - mixfiles not supported
SUBMIX ONGRID –Convert listed soundfiles to a basic mixfile on timed grid (for editing) - mixfiles not supported
SUBMIX PAN – Pan a mixfile - mixfiles not supported
SHUFFLE – Shuffle the data in a mixfile - mixfiles not supported
SPACEWARP – Alter the spatial distribution of a mixfile - mixfiles not supported
SYNC – Synchronise soundfiles in a mixfile, or generate such a mixfile from a list of soundfiles - mixfiles not supported
SYNCATTACK – Synchronise the attacks of soundfiles in a mixfile, or generate such a mixfile from a list of soundfiles - mixfiles not supported
TEST – Test the syntax of a mixfile - terminal output not supported
TIMEWARP – Timewarp the data in a mixfile - mixfiles not supported

Group = SYNTH;

SYNTH CHORD – Generate a chord with a simple waveform - no input / needs datafile
SYNTH CLICKS – Create a click track from tempo, meter and barring data - data output
NEWSYNTH SYNTHESIS – Generate complex spectra from fundamental and partial balance information in one or more textfiles - no input / needs datafile
SYNTH NOISE – Generate noise - no input
SYNTH SILENCE – Make a silent soundfile - no input
SYNTH SPECTRA – Generate both channels of a stereo spectral band - multiple outputs not supported
SYNTH WAVE – Generate synthetic waveforms - no inputs

Group = SYSUTILS - no use [/details]

I missed that, its probably a bug in the CDP process, later versions of this tool will make sure loop settings are the same before and after processing.

Nice! Again I haven’t tested this extensively but yes I can leave it in as an option when I add the stereo stuff, it’s odd that some of the processes work on stereo samples differently, maybe they are going out of phase, I’ll do some null tests to see whats going on there.

Yeah thats a bug, it should just stop if things fail, will fix this in next update. Also Housekeep process looks quite useful, I’ll see if I can integrate that somehow, it would be great if we didn’t have to worry about bit depths and sample rates in the same way we can with stereo/mono samples.

Again another bug, this shouldn’t happen and certainly shouldn’t bug out other processes, error handling on the GUI does need improving, currently if something goes wrong the tool needs to be relaunched to fix it. Will sort this eventually after I have finished adding new features

Thanks! Thats really handy with keeping organised and knowing where to focus next, I’m off on holiday at the end of this week so there won’t be any work on this for a couple of weeks after that, I will try and get another update in this week, I’m thinking the process to new sample/new instrument is probably most useful to add next. However if there is another of the features that should come first let me know.

Cheers

It is strange, if I recall correctly it doesn’t seem to happen every time. Will check if I can find what is triggering this.

I guess because of the nature of stereo samples, channels having different timbrel and dynamic content, maybe also some integrated random behavior in the cdp processes, or there is a delay in time from when the second channel is fed into the process? Anyways, it can sound good, how about a delay slider that determines the amount of delay, extra phasing power B).

That would be nice indeed, but could the ‘housekeep’ conversion be optional, as this would add another layer of conversion computation? There is also the ‘copysfx - copy convert sound…’ process (see definition), dunno which would fit the bill better, is faster?

I think from that list of possible and impossible definitions, stuff that is currently not supported there are 6 categories (not including the multi channel / speaker array and utility stuff);

  1. processes that just return info to the terminal, don’t output any sound or other kind of file (could be handy as help, aid for deciding on parameter settings in certain processes)

  2. processes that output >1 sound, could be nice to have more than one audio results collected in the same Renoise instrument. Some of these processes try to auto-rename the input sample’s name, appending numbers to every slice or chunk.

  3. processes that convert a kind of input to some kind of output and vice versa (e.g; text file to .env, data to .brk) Maybe just like we can open a .brk or textfile using input = “brk” in a window, we could put something in these particular definitions to be able to save? Some of these are helpful for easily generating text-files that processes use as input. Saves having to manually labor over them in notepad :wink: .

  4. processes that don’t need any input, just output something (from audio files that the synth processes produce, to varibank filter data files you could use as text.file input). Same ‘save window’ option wish as above.

  5. processes that need a converted (extra) input, similar to how the fft effects need analysis files from pvoc (e.g; ‘combine make’ needs additional formant file input made with ‘formants get’, ‘morph glide’ that needs input generated with 'spec grab’), the ‘repitch’ bulk of effects et cetera).

I think out of the extra input needing processes, the ‘psow’ FOF manipulating stuff is most unique, haven’t found that in any other program and am curious what you can do with it. Currently it needs a 3 step procedure to get the ‘pitch-brkpnt-data’ input needed;

a.) Analyse the input mono source file with PVOC
B.) Get its binary pitch trace with REPITCH GETPITCH Mode 1 without ‘retaining pitch zeros’ (no -z flag)
c.) Convert binary pitch trace file to a breakpoint file with PTOBRK.

Maybe save that one till last :slight_smile:

  1. Processes that can have >1 audio input.

That sounds quite right :slight_smile: , looking forward to the update! If you can squeeze in the input = “2audio” thing that be even greater, maybe this is relatively easy, re-using some of the input = “2pvoc” code for the selection of instrument & sample?

BT presents CDP:

Someone at MuffWigglers alerted me to this. What a great idea! :yeah:
I’ve been very slowly dabbling at Soundloom in OSX and Soundshaper in PC but this could definately get me using it more frequently.
I look forward to giving it a try.