Composers Desktop Project Forum

Composition => Showcase => Topic started by: Xenakios on February 16, 2015, 09:53:03 AM

Title: Another go at a CDP frontend
Post by: Xenakios on February 16, 2015, 09:53:03 AM
I got quite frustrated with some aspects of the CDP frontend I have been working on, and decided to look at doing things from scratch. After a few days of work I've progressed quite nicely! I was able to come with a node graph based approach that allows quite cleanly to connect CDP programs together to form complex webs of processing. This will require a bit more work to become usable for the general public but perhaps a first test build might appear before too long. (Notably editing the CDP program parameters is currently very primitive, and no support for time varying parameters exists...)
(http://i.imgur.com/HMsTG33.gif)
Title: Re: Another go at a CDP frontend
Post by: afta8 on February 17, 2015, 12:12:07 PM
Wow, looks amazing, this could well be the perfect kind of interface for CDP.
Is this Reaper only?
Title: Re: Another go at a CDP frontend
Post by: Xenakios on February 17, 2015, 05:59:20 PM
Wow, looks amazing, this could well be the perfect kind of interface for CDP.
Is this Reaper only?

The plan is to have builds of this that work both as standalone app and a Reaper plugin. The previous frontend also could be built as a standalone application but I didn't manage to make it work on OS-X, so I didn't publicly post builds of the standalone app. This new frontend now also has a working OS-X standalone application build since last night. (No Reaper plugin build exists yet, as it's kind of early days with this new software now. Adding the Reaper plugin mode will be relatively easy later, though.) I can't say a definitive date when this new frontend might be available for public testing, but perhaps during March isn't too inaccurate.
Title: Re: Another go at a CDP frontend
Post by: simonk on February 17, 2015, 07:45:38 PM
Fabulous !
Looking forward to this Xenakios.

I haven't had a load of CDP time recently, but did make a few really nice transformations with the previous Reaper plugin .
I particularly like the 'in place' function. The ability to drop the transformed file at the current point in the timeline  (& on a new track etc) is a great compositional tool.
Title: Re: Another go at a CDP frontend
Post by: afta8 on February 22, 2015, 09:55:12 PM
The plan is to have builds of this that work both as standalone app and a Reaper plugin. The previous frontend also could be built as a standalone application but I didn't manage to make it work on OS-X, so I didn't publicly post builds of the standalone app. This new frontend now also has a working OS-X standalone application build since last night. (No Reaper plugin build exists yet, as it's kind of early days with this new software now. Adding the Reaper plugin mode will be relatively easy later, though.) I can't say a definitive date when this new frontend might be available for public testing, but perhaps during March isn't too inaccurate.

Nice! an OSx standalone would be great..
Bonus points to you if in CDP tradition it could be launched and supplied with sounds via the command line too ;)
Title: Re: Another go at a CDP frontend
Post by: Xenakios on February 23, 2015, 03:20:13 PM
Experimenting with some extreme set ups... ;)

(http://i.imgur.com/wepD8Ba.gif)
Title: Re: Another go at a CDP frontend
Post by: djeroek on March 20, 2015, 03:41:14 AM
Very nice! Please also consider standalone windows build  8)
Title: Re: Another go at a CDP frontend
Post by: Xenakios on March 20, 2015, 05:41:54 PM
Very nice! Please also consider standalone windows build  8)

Yeah I've been building it so far just as a standalone for both Windows and OS-X. I've been distracted with other stuff lately and will be until the end of this month...But I'll get back to this during April.
Title: Re: Another go at a CDP frontend
Post by: pizza on June 01, 2015, 06:22:55 PM
Wonderful idea and work Xenakios !! :D
[also a pc user hoping to get to try it]
Title: Re: Another go at a CDP frontend
Post by: Xenakios on June 02, 2015, 11:38:51 AM
I unfortunately got a bit stuck with this(*) and haven't worked on it lately. The plan is to continue with working on it, though. It did get to a quite interesting stage, after all.

(*) For example, I couldn't quite figure out the ideal way to implement the time varying parameter envelopes for this. I didn't want to do the most obvious thing and designing and implementing something more comprehensive turned out to be more involved than expected.
Title: Re: Another go at a CDP frontend
Post by: emre_k on August 30, 2015, 03:48:39 PM
Xenakios, that really looks mindblowing. Looking forward to a Win standalone version!
Title: Re: Another go at a CDP frontend
Post by: Xenakios on September 07, 2015, 12:25:58 PM
I just unearthed this and again remembered how nice this could be if only developed a little further...  :)

However, I also got to experience again how damn finicky about their parameters and how unstable the CDP programs can be.   >:( It's very frustrating when a CDP program just keeps on giving errors or even crashing. A GUI frontend would need to be aware of these things and attempt to prevent the user from giving inputs that won't work. And that would require rewriting the logic that's already in the CDP programs but which can't easily be reused by a GUI front end. Sigh... :(
Title: Re: Another go at a CDP frontend
Post by: Xenakios on October 24, 2015, 12:03:00 PM
Thanks to the work done by Afta8 and especially Djeroek on their Renoise front-end, my new front-end will potentially have over  800 of the CDP processes available! This will obviously need lots of additional work, but currently it's looking pretty good.
(http://i.imgur.com/4JUbmMp.gif)
Title: Re: Another go at a CDP frontend
Post by: simonk on October 25, 2015, 08:10:58 AM
Looking good indeed!
Title: Re: Another go at a CDP frontend
Post by: clown on December 30, 2015, 03:02:52 AM
Incredible, Xenakios! Really looking forward to this.
Title: Re: Another go at a CDP frontend
Post by: Xenakios on May 19, 2016, 09:55:14 AM
Sorry, no news about this yet, but working on this definitely is in my long term plans. Despite all the problems in the CDP programs, they still do have some processings that just are not available anywhere else. The frontend could also fairly easily be expanded to support newly written internally implemented audio processes as well as 3rd party plugins like VST and AU.
Title: Re: Another go at a CDP frontend
Post by: loganmcbroom on May 23, 2016, 07:20:52 PM
This looks really interesting, I think the data flow approach is a good way to go. If you're planning to release this freely would you consider making a github repo of it?
Title: Re: Another go at a CDP frontend
Post by: Xenakios on May 23, 2016, 10:21:31 PM
This looks really interesting, I think the data flow approach is a good way to go. If you're planning to release this freely would you consider making a github repo of it?

It's been hosted in an open source repo (not in Github though) all this time but I haven't advertised that since I haven't wanted to give the impression it's something someone could just easily build and start using. It has problems like hardcoded file paths to my own filesystems, among other flaws.
Title: Re: Another go at a CDP frontend
Post by: loganmcbroom on June 09, 2016, 02:17:37 AM
Alright, makes sense. I was glad to hear you're using JUCE, I'll be ready to poke at it whenever you decide to put it out.
Title: Re: Another go at a CDP frontend
Post by: Xenakios on July 07, 2016, 07:38:53 AM
I worked a bit on it again and added VST2 plugins hosting to the front-end. I didn't yet fix any of the problems that make the front-end unusable on other computers than mine. Maybe I'll look into those issues some day. Shouldn't be more than a couple of hours of work. However, there are additional problems that would require much more work to fix.
Title: Re: Another go at a CDP frontend
Post by: Xenakios on August 24, 2016, 08:53:13 PM
Been making very good progress with this lately. A public beta might be possible soon... 8)
Title: Re: Another go at a CDP frontend
Post by: simonk on August 25, 2016, 07:32:44 AM
Good news!
Title: Re: Another go at a CDP frontend
Post by: afta8 on September 10, 2016, 07:33:27 PM
Agreed, looking forward to this landing
Title: Re: Another go at a CDP frontend
Post by: Xenakios on September 10, 2016, 07:50:10 PM
Still needs some tweaks before a public release. Might take a bit more time because I am also working on a new composition currently...

Title: Re: Another go at a CDP frontend
Post by: Xenakios on October 18, 2016, 02:35:42 AM
Still working on this...

The source code repository is located at :

https://bitbucket.org/xenakios/cdp-front-end-mark-ii/commits/all

At the moment cloning/downloading the source code is not going to be very useful. Visual Studio and XCode projects are not yet in the repo and the .jucer file doesn't generate working projects either. I am still considering what I will do with the files needed for building the application. And of course endlessly procrastinating on giving out the ready to use binaries for the public...
Title: Re: Another go at a CDP frontend
Post by: Xenakios on December 11, 2016, 11:19:09 PM
Still working on it. The scope of the application has increased quite a bit...It obviously needed for example a way to mix sounds together, but I felt the CDP facilities were a bit limited and clumsy to use. So I've worked on a basic multilane/track audio editing thing too... ???

(http://i.imgur.com/HvWKGoU.gif)

The frontend does also to some extent support the old school CDP mix files and submix programs but I think most effort will go into making the new "mixer sequencer". (It will also have text/script based ways to create and manipulate the mix events besides the GUI/mouse style editing.)
Title: Re: Another go at a CDP frontend
Post by: simonk on December 12, 2016, 09:21:06 PM
Coo, what a tease!
Title: Re: Another go at a CDP frontend
Post by: Xenakios on December 16, 2016, 09:55:58 PM
Finally some videos with sound too :

http://youtu.be/hb-i3KUEO5Y

http://youtu.be/bTv_k7F7GQY

These don't yet showcase the CDP programs (apart from Modify Radical Reverse  :D ) , but I'll make a 3rd video soon where I will show more of the CDP stuff.

edit : CDP program demos video :

https://www.youtube.com/watch?v=RsmHBJ02HE8
Title: Re: Another go at a CDP frontend
Post by: loganmcbroom on December 18, 2016, 04:06:41 AM
Looking very usable. As always, looking forward to checking it out. Especially the vst support... I'll have to start adding that to my own project when I have the chance.
Title: Re: Another go at a CDP frontend
Post by: afta8 on December 25, 2016, 12:48:30 PM
This looks amazing! Especially now you are looking at hourglass integration.

Do you need any beta testers? ;)

I'm presuming you have lua embedded in this now? If so, then it would be super cool if you enabled some kind of 'roll your own effects' feature. Once you have the sample data in a lua table it's quite easy to code custom effects in lua. I have this planned for the Renoise tool and have adapted bits of DSP code into lua, right now I have a biquad filter and various distortions.. also more stuff could be adapted from protoplug (http://www.osar.fr/protoplug/)..
Title: Re: Another go at a CDP frontend
Post by: Xenakios on December 25, 2016, 01:58:38 PM
Do you need any beta testers? ;)

I'm presuming you have lua embedded in this now? If so, then it would be super cool if you enabled some kind of 'roll your own effects' feature.
Sure, beta testing will be needed once it is in a reasonably good shape. I just recently started working on a state history (aka undo history) feature which is a bit complicated one to do and has required changing some things that will need quite a bit more work to ensure they work properly...

Lua scripting has been incorporated into various things already. I have been thinking about doing the Lua audio data access thing too, but it might be a bit slow to access audio data on a per sample basis from Lua. (λ uses the official Lua C implementation, via the Sol2 C++ library. If LuaJIT still doesn't work on 64 bit macOS, it unfortunately isn't an option for me to use...)

Perhaps a compromise could be to allow doing higher order operations from Lua script code. For example, allow building DSP graphs from nodes like gain changers, panners, filters, delays etc...Also snippets of audio material from files could be scheduled for playing with various properties. (This actually is partially implemented in the Montage node already...I haven't tested what are the practical limits for the number/density of sound events in that though.)
Title: Re: Another go at a CDP frontend
Post by: Xenakios on December 26, 2016, 02:38:57 AM
As suggested by afta8, preliminary Lua script based DSP node...(At the moment good only for generating audio, but accessing audio files will be added shortly.)

(http://i.imgur.com/eLLluzv.gif)
Title: Re: Another go at a CDP frontend
Post by: afta8 on January 03, 2017, 11:14:57 AM
Sweet!!!

Have you resolved the issue with accessing audio data? On Renoise the processing speed once the data is in the Lua side is quite fast, I don't think it uses LuaJit either, I run it on 64bit Mac Osx, I think the implementation is using LuaBind.. not sure if that makes a difference..
Title: Re: Another go at a CDP frontend
Post by: Xenakios on January 03, 2017, 05:53:30 PM
Sweet!!!

Have you resolved the issue with accessing audio data? On Renoise the processing speed once the data is in the Lua side is quite fast, I don't think it uses LuaJit either, I run it on 64bit Mac Osx, I think the implementation is using LuaBind.. not sure if that makes a difference..
The speed seems fairly decent even with per-sample accesses. (In the gif animation it generates 10 seconds of 4 channel audio in about 0.3 seconds, so about 30x real time and probably a bit faster too if the overhead of creating the buffer and writing it to disk wouldn't be taken into account.)

However, I suppose for a scripting environment it would be useful in any case to have a bit higher level operations available. So instead of multiplying or adding samples etc one by one, one would have functions like :

buf:multiplyRegionBy(startChan,endChan,startSample,endSample,gainFactor)
buf:addFrom(bufToAddFrom, startChan, endChan, startSample, endSample, gainFactor)
buf:applyEnvelope(startChan,endChan, {{0,0.0},{44100.0,1.0},{88200,0.0}})

(Those are just imaginary examples, the actual API would need to be designed more carefully.)

I did also add the disk file access into the scripted DSP node, but I think that should also do resampling of the audio into a target sample rate, so that the scripts don't need to bother dealing with that for simple use cases. (At the moment I just did a simple wrapping of the JUCE MemoryMappedAudioFormatReader.)


Title: Re: Another go at a CDP frontend
Post by: Xenakios on March 15, 2020, 01:20:43 PM
Just wanted to clarify here that this project has been suspended indefinitely, unfortunately. I got a bit too ambitious with it and got the code into a state where I wasn't able to proceed further. Of course I could go back in the Git history and restart from an earlier point, but the bigger changes I did were something I really wanted working anyway...