Tuesday, November 30, 2004

The Devil is in the details

Some quick facts about Audio Engines:
- Audio signals are important.
- Control Signals are ultra important! They eat cpu time for breakfast and are quite hard to manage in a clean, flexible and userfriendly way.
- A correct Midi implementation for a synth is anything but trivial if you want to handle all the standard events: damping pedal, all the CCs, PitchBend, release samples, etc.
- Voice management can also become quite complicated and push us to make big sacrifices: memory allocations at runtime for dynamic voices creation vs. static polyphony.
- FXs are much harder on the DSP code but have an much simpler infrastructure. Corrolary: synth control code tends to become very complicated once you add all the features and is a very good place to search when looking for a sample of typical Spaghetti code!

Sunday, November 28, 2004

printf("Hello, World!");

After browsing some friend's blog I thought I might happen to have something to say from time to time. So I just opened this blog. The subject will be focussed on my job and the industry I work in.
I'm a senior programmer at a small French company. We create a range of electronic /software musical instruments for Mac and PC. Most of the products are edited under our own brand but our flagship product (a very well known Software Sampler) is distributed by one of the big names of the industry.
I'll try to keep my rambling about music technology unrelated with the day to day events at work because on the one hand it would probably bore you to death ;), and on the other hand I'm not sure my bosses would love to see me expose the guts of the company to strangers, or worse, to competitors :D.
However, being one of the authors of some opensource software, i'll be able to be very accurate about this second part of my job, as we use the NGL and NUI (LGPL libs) in our products.
The changes in NUI can be very interesting to anyone interested in computer graphics, as this lib implements a complete 2D graphic library on top of OpenGL. In other words we are doing the same as Apple's Quartz and Microsoft's Avalon, except we do it in a multiplatorm way (MacOSX, Win32, Linux, BSD...), and we build it as free software...
I'll probably also have occasional things to say about the struggle you face when you mix free and proprietary software: what should go where? How do I decide that feature X will end up in NUI or in the GUI toolkit of my application? Can I really change that choice once the code is done and in the CVS server?
I might rant about Macs vs PCs as I have a love-hate relation with both (ok, I confess, I'm more a PC guy ;-)).
The C++ standard comity might also be a regular target, because even if I do respect the vast amount of work related to the maintenance of the language, I would really love them to wake up to reality of the programming world and the hell they often lay on us when taking some impossible decision!

I hope I'll soon have something to say about a little secret project that we are currently working on, together with a CS student, and that we plan to release as LPGL as well, once we pushed it in the next revision of our sampling engine... More about that later.

French being my native langage, I end up making lots of mistakes in English. I'm sorry about that, but please do correct me! I want to learn and I would really love to speak English fluently one of these days...