Programming Modular Synthesizers in Haskell

June 8th, 2007 by George Giorgidze

I gave very quick introduction to Yampa, domain specific embedded language in Haskell, for casual modelling of highly dynamic hybrid systems. Term “hybrid” is used do describe models with both continuous-time and discrete-time behaviors.

After I pointed out that music in general is hybrid phenomenon and related physical systems can be modelled in a language like Yampa in a nice way.

I described current implementation of modular synthesizer in Yampa (it’s still under development). Explained each building block of synthesizer, and how they are modelled and interconnected with each other. I argued why language like is Yampa is useful for this task and how it makes it easy to model this particular system, I emphasized several features like: signal functions (the fact that they are first class entities), dynamic parallel switching constructs and several other useful combinators.

There were questions about current status and already available features. Current implementation is able to synthesize and play music given in standard MIDI format of single instrument, support for instrument collections is still under development and will be available soon.

I was not able to satisfy requests to demonstrate synthesizer as talk was not planned in advance and I had not got my laptop with me. I suggested to demonstrate it maybe for next lunch or at some point later, hope it will make lunch more enjoyable.

At the end I received some useful comments and suggestions.

I will post future advances on weblog and probably make source available for download from my web page very soon.

Leave a Reply