New Tool (3.0): CDP lua tool

(misk) #361

I’m on Yosemite and had been getting the an output file was not produced – check your settings error message that has plagued so many people.

I uninstalled and reinstalled the tool, and recognized my mistake – I had pointed the tool to ~/cdpr7/ (top-level CDP dir) rather than ~/cdpr7/_cdp/_cdprogs/ (CDP programs dir).

Hopefully that helps someone else.

Also I don’t know if this matters, but I added this line to my .bash_profile:

export CDP_SOUND_EXT=`launchctl getenv CDP_SOUND_EXT`

The reason being that I would type “env CDP_SOUND_EXT” at the terminal, and wouldn’t get anything. I didn’t realize that the launchctl env vars work differently…

yeah the env vars are kind of a pain in the ass. especially since the install directions are intended for older versions of osx and apple keep tinkering with env vars every release! I think i have an environment.plist in my library launchagents folder too, and i’m not sure if that is really what’s doing the job.

the " an output file was not produced – check your settings" can be for any number of reasons, that are based on individual CDP programs, and it can be tricky. it seems like blur blur is another good goto that is generic enough to run properly if you’ve got cdp installed correctly.

I’ll be honest, I wanted to ‘spring clean’ my computer this year but was too afraid to mess with everything due to cdp working exactly the way i want it to on my yosemite mbp!

(Djeroek) #362

Probably been reported before somewhere :slight_smile: , but got this notice when using 'distort interact 1 - interleave wavecycles from two infiles;

‘C:\Users\pluge\AppData\Roaming\Renoise\V3.1.0\Scripts\Tools\com.afta8.CdpInterface.xrnx\main.lua’ failed in one of its notifiers.

Please contact the author (afta8 | ) for assistance…

main.lua:447: attempt to index field ‘?’ (a nil value)

stack traceback:

main.lua:447: in function ‘launch_commands’

main.lua:455: in function ‘run_process’

main.lua:1512: in function main.lua:1360

…trying to use two succeeding sampled instruments and output two the 3rd (empty) instrument in Renoise. If I however create a 3rd instrument myself, trying the same will output to it without problems.

(emre_k) #363

Hey guys. Updated my installation tutorial for OSX. Should be much more helpful/easier to follow now. Give it a shot if you haven’t been able to set up CDP yet:


This is great, thanks for the clear guide… I got a new Mac recently and had not been looking forward to installing CDP all over again… It should be a breeze now :slight_smile:

(artefact) #365

For those interested, I could fix (on windows) the famous error “An output file not produced - check your settings”.
Although I checked again and again that everything was ok (environment variable and all), I could not have the plugin working properly until I removed the CDP folder from the Program Files folder.
Hope it can help.


Heads up… v7.1 of CDP released:

Best news is that the environment variable no longer needs to be set, this should resolve THE NUMBER ONE INSTALLATION ISSUE people had with this.

(Djeroek) #367

Heads up… v7.1 of CDP released:

Best news is that the environment variable no longer needs to be set, this should resolve THE NUMBER ONE INSTALLATION ISSUE people had with this.

excellent news, hopefully the cdp tool definitions work with this update, will test in a minute. Curious about any new programs too B) .


Been testing out the new version some more today on a freshly re-installed mac… Looks like the whole issue with setting the environment variable is now consigned to history… You can now simply extract the process executables to a folder and point the CDP tool to that… it seems no other installation step is needed if you are only using the Renoise tool with CDP.

Other bonus news is that all the CDP docs are now available online:

Given these changes I have done a tiny update to the tool to take advantage. The checks for the environment variable being set are now removed as this is no longer an issue. There is also a new [?] button next to the process list which will open the online docs in the default browser. Process definitions can now include a ‘url’ value which if set will open the page for that particular process, I have done this for the blur processes as an example… If this is not set then pressing the [?] will take you to the A-Z index, maybe over time process URL’s will get added in somehow :wink:

Latest version is on the tools page… Cheers

(Djeroek) #369

Nice one on the url addition, unfortunately I have no time at the moment to add these in for all definitions. A future rainy Sunday can surely be sacrificed :wink:

Maybe something smarter can be done in that regard, automatically parsing through the definition file looking at each second word in title, for example; "dsp["Envel Warp - Expand the envelope of a soundfile “]”, then automagiacally searching the docs htmls for #WARP at the end of the link?( ) and auto-inserting the url portion into the definition file? :stuck_out_tongue:

Anyway quickly looked into possibly new additions, but seems like no new goodies from 7.0 to 7.1, I did find some previously missed stuff, from which hover looks interesting to create noisy stuff, add these to the definition file and press execute to save;

dsp["Sfecho Echo - Repeat a sound with timing and level adjustments between repeats"] = {
  cmds = { exe = "sfecho", mode = "echo", url = "", tip = "CDP's EXTEND LOOP enables you to step through a soundfile while adding each step-segment to an output soundfile. It does not allow you to specify an endtime beyond the end of the input sound (it cuts off). EXTEND REPETITIONS enables you to repeat a whole soundfile, whether overlapping or with a gap between repetitions: i.e., the time of repetition is beyond the end of the input sound. This new ECHO function complements these two features by placing the repeats after the end of the input soundfile." },
  arg1 = { name = "Input", input = "wav", tip = "Select the input sound to the process" },
  arg2 = { name = "Output", output = "wav", tip = "Select the output sound to the process" },
  arg3 = { name = "delay", min = length/1000, max = 3600, input = "brk", def = length/1000 + 1, tip = "time in seconds between echo repeats (Range: greater than the length of insndfile to 3600 sec. [one hour]; thus delay cannot be less than the input duration)" },
  arg4 = { name = "attenuation", min = 0, max = 1, input = "brk", def = 0.2, tip = "relative (diminishing) level of each repeat (Range: 0 to 1)" },
  arg5 = { name = "totaldur", min = 0, max = 3600, def = 10 , tip = "maximum output duration (actual duration may be less); it must be a minimum of 2 x delay." },
  arg6 = { name = "-r", switch = "-r", min = 0, max = 1, input = "brk", tip = "randomisation of echo times (Range: 0 to 1)" },
  arg7 = { name = "-c", switch = "-c", min = 0, max = -96, def = 0, tip = "dB level at which decaying echoes cut off (Range: 0 to -96dB, Default: -96dB, i.e., silence)" },

dsp["Hover - Move through a file, zig-zag reading it at a given frequency"] = {
  cmds = { exe = "hover", mode = "hover", url = "", tip = "HOVER is a variant of ZIGZAG, but instead of jumping about in the file, it hovers around a given time-point (loc), reading forwards and backwards from this point at a given speed, which also determines the width of the reading. Note that the location point is time-variable, so the pointer can move through the file over time or indeed move to any time-point you wish. You can also randomly vary the frequency and the location point. Musical Applications: HOVER gives considerable scope for prolonging a sound, by reading the file in a controlled zig-zag fashion. It might be used for extending short-lived percussive sounds of an inharmonic timbre; producing a series of ebb-and-flow shapes (each like BAKTOBAK); or prolonging a highly textured sound which is difficult to loop. A number of different HOVERings of the same sound mixed together should also produce an interesting texture out of the one source." },
  arg1 = { name = "Input", input = "wav", tip = "Select the input sound to the process" },
  arg2 = { name = "Output", output = "wav", tip = "Select the output sound to the process" },
  arg3 = { name = "frq", min = 0, max = 44100, input = "brk", def = length/1000 + 1, tip = "rate of reading source-samples (in Hz)." },
  arg4 = { name = "loc", min = 0, max = length/1000, input = "brk", def = 0.2, tip = "time in infile from which samples are read." },
  arg5 = { name = "frqrand", min = 0, max = 1, input = "brk", tip = "degree of random variation of frequency (range 0-1)" },
  arg6 = { name = "locrand", min = 0, max = 1, input = "brk", tip = "degree of random variation of location (range 0-1)." },
  arg7 = { name = "splice", min = 0, max = 100, def = 5, tip = "length of the splice (range: 0-100 milliseconds). splice length must be less than 1 over twice the maximum frq used, e.g. <5 ms for 100 Hz." },
  arg8 = { name = "dur", min = 0, max = length/1000 + 60, input = "brk", tip = "total output duration." },

dsp["Brktopi - Convert a breakpoint pitch data file to a binary pitch data file"] = {
  cmds = { exe = "brktopi", mode = "brktopi", url = "", tip = "BRKTOPI converts a breakpoint pitch data file (text) to a binary pitch data file (.for). The function is the opposite of REPITCH PCHTOTEXT. Musical applications: While a great variety of manipulation is possible with binary pitch data files (.for), there is unlimited scope for altering the pitch data in breakpoint (text) form. As only binary pitch data can be converted into sound (via MAKE), this function provides the necessary conversion to the binary format. You need to be aware, however, that altering pitch data is not altering the formant data with which it will be combined in MAKE. The pitches you specify will sound only to the extent of the level that their equivalent frequencies (fundamental and harmonics) have in the formant file." },
  arg1 = { name = "intextpitchfile", input = "data", tip = "breakpoint pitch data file (.txt, .brk or .pch) extracted by REPITCH GETPITCH or created / manipulated as text" },
  arg2 = { name = "outbinarypitchfile", output = "for", tip = "binary pitch data file (.for)" },


I did think of scripting the URL but I can’t work out yet what the URL naming scheme is at the moment, the bit in the URL after ‘htm’ is always #MODENAME but the bit before is not always named in a consistent way for all functions… will give it some more thought though maybe there is a way to send a google site search from the tool and display that instead.

Will also add those definitions to the next release, nice one for finding those!

(Makrotulpa) #371

I previously had Yosemite and Renoise/CDP etc all working fine.

Just updated to El Capitan and grabbed the latest version of CDP and your Tool and i’m getting the error again. :wacko:


I’ve checked “env” and the path is fine so I’m presuming it has something to do with step 2 in the Manualconfig.pdf

the launchd.conf file is in the “etc” dir and looks fine.

Any ideas?

I fixed it. For anyone curious… here is an image which will hopefully indicate where I went wrong.

(Djeroek) #372

Oh snap, what’s this!? Behind the scenes development of v2? :ph34r: :yeah: :drummer:

The gui in the screenshot is incomplete, but a teaser;

29577772023_b33fe48785_h.jpgcdp teaser by Hiek A Matiek, on Flickr

(robohymn) #373

^ my jaw actually dropped when I saw this picture just now. I went, “hoooooooly… shiiiiiiiii…”.

Awesome…!! Just the last few days I’ve been messing around a lot with the CDP morph functions, with the right settings the end result is better than anything I’ve heard from Zynaptiq Morph 2 (though Morph 2 is obviously real-time).

If/when this new version of the Renoise CDP tool works, it looks like it has the potential to be the best CDP front-end going, which is pretty amazing.


It’s a matter of when, but it won’t be anytime soon because, well… coding is hard :slight_smile:

The major addition is obviously the processing grid which will really allow CDP to be used in the way it was intended. It is exciting stuff and I’m quite motivated to get it done, so watch this space :slight_smile:

(emre_k) #375

Can’t… wait… :panic:

(toot&#33;) #376

Signing into the Renoise forums for the first time in many years to show my support for this.

Really worthwhile project, keep it up!

(Marcelo Carneiro) #377

I am trying to use cdp in Renoise, but I always get the same message: “An output file was not produced - check your settings”.

Well, i have been doing it, but the same message pops up. I have already read and done everything from the installation guide, but still the same problem.

I am using Renoise Demo 64bit v3.1.0 in Ubuntu Studio 16.04 and also on mac Yosemite.

I also get this message on Mac:

ERROR: Cannot open output file /var/folders/84/522q4t5x2b70q3bg8_zggkvw0000gn/T/Renoise-0-1372/Renoise_TmpFile-0-135.ana
ERROR: Cannot open output file /var/folders/84/522q4t5x2b70q3bg8_


Hi try the following troubleshooting steps:

  • Have you installed the latest CDP executables?
  • Can you run the CDP processes via command line
  • Try reinstalling the Renoise tool but uninstall it first. If you do it right it will ask you to locate the CDP executables when you run it the first time.

If you do all these succesfully it should work

(misk) #379

I’ve got a request for whenever you guys have the time to finish your update to this! Of course I understand you’re doing this out of the kindness of your hearts and if you need any help you can always hit me up for grunt work!

here’s my request - I’ve got chrome open often when i’m trying out new processes - and I really dig the alphabetical index:

I love that it’s descriptive, and communicates what a process actually does (we all know the CDP documentation is … tricky). How hard would it be to have way of just hitting a key command to search all the available sub-process names and have the search function somewhat context aware? I hit cmd-F in chrome and just type in what I want to do, and then i wish I could go to renoise and hit cmd-F in the CDP window!

What’s really awesome about this method — When i’m reading the manual / documentation, I write down the name of a parent process (like Modify) and then the name of the subprocess after it (Modify… Revecho!). Then I find myself scrolling through the list of parent processes in the CDP window repeating "modify… revecho… until I find what I’m looking for.

It seems like a great side-effect of this is that you get type what you’re looking for, so you have to think enough to type the words - so I think you’d remember it better!

If this is way more difficult to implement then it’s really no big deal! thanks, and really, if you guys need any help with anything, send me a pm!


Good suggestion, the tool could certainly be more helpful in guiding users. The latest version does now allow processes to link to the online documents and open these in a browser but you still need to know where to look and a fair bit of work needs to be done to update the definitions with all the URL’s

The new version will have some kind of preset system and I aim to have some kind of custom tagging in there, this way you can create your own categories of process chains. In terms of implementing I would like to get v2 up and running first, lets see how that works and then we can look at additional features.

Your offer to help is appreciated, I will send you a PM :slight_smile: