Python scripts for using CDP in Reaper

edit January 16th 2015 : This project is now obsolete. The links to the source code repository are provided for the curious, not for people actually wanting to use these inside Reaper.

Again a little side project to distract myself from making progress with HourGlass 2…

If you don’t know what the Composer’s Desktop Project or Reaper is, this set of Python scripts to be run from Reaper probably isn’t something you want to try.

Prerequisites :

  • You have confirmed the CDP programs will run for you (ie, you have installed the CDP package, set the annoying environment variable for wav-files, done some test runs from the command line/SoundLoom/Soundshaper etc)
  • You have installed Python 3.x and set up Reaper to use it for ReaScript (Python 2.7.x might work too, but I haven’t tested)

There are 15 .py files. All except one (cdp_helpers.py) may be loaded into Reaper as new Python ReaScript actions. They allow you to process the selected Reaper media item with the CDP sound process in question.

There unfortunately is a set up step which for now has to be done manually by editing the cdp_helpers.py file. 😦 You must change the line with the text :


cdp_prog_dir=""

to something like


cdp_prog_dir="C:\\Portable_Apps\\cdpr700-InstallPC\\_cdp\\_cdprogs\\"

Where you would substitute the actual location of the CDP binaries on your machine inside the “”. (This will be the CDP installation directory with files such as blur.exe, pvoc.exe, envel.exe) Note that on Windows, each \ needs to be substituted with \\ instead.

In regards to the CDP processings themselves, you should refer to the CDP documentation. I’ve tried naming the script files so that the corresponding CDP processes can be found from the documentation without too much trouble. The scripts obviously don’t cover all the CDP processings available, more will be added in the future. The 14 scripts just provide some examples which I chose somewhat randomly or according to my own taste.

Processing obviously happens offline but is not in any way destructive, that is, the original audio files in the Reaper project are never modified in any way. The new processed file will be added as a new take into the Reaper media item. If the processing is supposed to change the length of the material, the item length is changed to correspond to the new length. (This might be nice to have optionally, I guess…?)

The first limitation at the moment is that several of the processings will only work with mono audio source files. So, for those processors, when you have a stereo file, you should change the selected item’s channel mode in Reaper to mono and then use the Reaper glue action before running those CDP processes. There is a possible hack around this, which I will probably add to the cdp_helper.py file later.

The second limitation is that the facilities of many of the CDP programs to allow time varying parameters (aka automation) are not available from these scripts. In principle, this could be enabled by parsing break point envelopes from the dialog box text fields. So for example something like [0.0,0.1,10.0,1.0] could be written in a text field to automate a parameter so that it starts at the value 0.1 at the time 0.0 and proceeds to value 1.0 at the time 10.0. This however seems terribly clunky and I am not sure if it would be worth it implementing it.

The third limitation is that no audio preview of the processings is available. This could in principle be implemented, but not really with Python and ReaScript. For now, the only way to know how the processing ends up sounding is to enter some parameter values and run the process. If you are not happy with the results, switch back to the original take in Reaper and rerun the same or different CDP process.

I am not sure if these work on OS-X or not…But I just updated the download link with an obvious fix for the cdp_helpers.py file.

The source code repo is hosted at  https://bitbucket.org/xenakios/cdp-python-reascripts/overview

I’ll expand this blog post a bit later but hopefully these instructions are enough to allow trying these.

Advertisements
This entry was posted in Uncategorized. Bookmark the permalink.

6 Responses to Python scripts for using CDP in Reaper

  1. Diego Armando Dollars says:

    Great, and I thought I am the only one interested in CDP and its original creators.

    • xenakios says:

      There are some interesting/unusual processings available from the CDP programs, so it’s IMHO worth it trying to get them to be usable more easily. I am actually now working on a C++/Juce based front end that is more advanced than the Python scripts presented in the blog post above. Ultimately, the best option would be to extract the core processing algorithms from the CDP programs and directly use those as library code to avoid having to deal with the command line programs. (Which are frankly quite a mess to deal with…)

  2. Kieron says:

    Interesting work Xenakios! I’ve been a CDP user for 10 years and I was considering switching to Reaper from Live recently, so I’ll give these a look in once I get my act together and get the demo installed. Still need to check out release 7 of CDP as I’m on version 5 right now. Respect as ever.

    • xenakios says:

      Stay tuned for the proper C++/Juce based Reaper extension plugin…It is going to be about 100x better than the Python scripts! The new CDP front end also runs as a standalone program, though it probably is never going to have all the features SoundShaper and SoundLoom have…The point is more about being able to use the CDP processings from inside a DAW application. (Reaper in this case, I am not aware of other DAW apps where adding this kind of an extension would be feasible.)

  3. any news? i am really looking forward to a CDP frontend…..

    • xenakios says:

      The C++/Juce based CDP frontend plugin for use with Reaper was released and has been updated a few times. https://xenakios.wordpress.com/2014/07/16/cdp-frontend-reaper-extension-plugin/

      The standalone app build of that frontend unfortunately isn’t currently in a working state and hasn’t ever been publicly released.

      I also started work on a second CDP frontend written in C++/Juce but that hasn’t yet been publicly released as binaries since things are missing in it and it probably wouldn’t yet work on any other computers than my own. That project is currently on hold at least as long as I get the new HourGlass 1.5 out.

      The Python CDP frontend stuff is now long abandoned by me.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s