Pet project ideas

If someone is dying for a pet project but are out of ideas (yeah right). Here are some freshly recycled ideas, free for the taking!
Ah, well, not so free, actually we are dying to complete them ourselves but have to face the facts, there are only 24 hours a day. Sharing the ideas are much better than letting them rott until someone finds time to implement them.

emu10k internal synth binding MESS/DSSI

Linux has very good support for the emu10k1 chipset these days. What is lacking is applications that can harness the power this gives. Recently ALSA got support for similar routing capabilities as the kxProject allows for windows. While this is very nice and powerful it is also very complex. What we thought would be very nice would be a wrapper that would allow using the emu10k chip as an outboard effect or outboard synth, in the same manner as for instance protools uses their dedicated DSP's.
The idea was to try and package the interfaces of the emu10k in an MESS or DSSI synth so that changing parameters would be handled in a consistent manner which would be useable from MusE (and other controlling applications).
The synth would open up direct connections to the emu10k (as many channels as necessary) to allow for sending data to the DSP and receiving results. It would also open connections to the patch/DSP loading interfaces and allow for loading DSP-algorithms into the emu10k.

Since emu10k based cards are both cheap and PCI based, several cards could be put in one computer to form a cheap workstation environment with multiple DSP chips.

OSC patch-info lookup for external synths

A nice feature with using internal synths in MusE (and other sequencers) is that patch information and parameter controlling information is always readily available. MusE also supports IDF, a dedicated file format for describing the patches and parameters available for a certain synth. There is however a problem that this is only applicable to synths which have a static patches and static controllers. Hence a lot of synths, especially softsynths, are not applicable.

Through discussions at LAC2005 it has become clear that this would be something that would greatly enhance the usability of external softsynths. The external softsynth developers are also interested in adding support for this kind of information. Someone needs to come up with a solution though.

Through the same discussions it was more or less agreed that OSC would be the best candidate for solving this. Basically the 'host' (for instance MusE) would query the synth through an OSC based interface through a TBD interface and would then receive patch info and possibly controller info.
There is however one problem. The host does not know how to resolv the OSC adress to the synth. One possible solution would be to establish a naming convention where the alsa-sequencer name would be as a part of the OSC url. Something along the lines of:

 client 128: 'TheZuperZynth'
0 'Port 0'

The above alsa definition would resolv to something like:

 OSC://localhost/synthinterfaces/TheZuperZynth/0


Or something along those lines... My OSC knowledge is very limited..

Keybindings for adding notes in editors

In MusE it would be great with a subsystem that allows for playing the PC-keyboard as a midi-keyboard, while in the editors. To allow for easier addition of midi events.

python bindings

partially implemented Adding a scripting interface internally in MusE (likely python based) would allow for doing rapid development of for instance:
- Midi filters
- Quantization algoritms
- Other midi tools
- Parts of GUI that are non critical from a performance perspective.

Storage of patterns/parts on disk

partially implemented It would be great if it was possible to save rythm patterns and similar to disk. Thereby making it possible to reuse patterns for several projects.
This would actually be pretty easy to make a first version of. All midi related data can be serialized to xml, which would provide for an excellent file format for such storage. I think the copy&paste functionality already does this to some extent.

Integrated cooperation functionality

This is more or less an extension of the former idea (Storage of patterns/parts on disk). The idea is to put up a server on the internet where MusE or, perhaps better, a small client application can connect and exchange pattern, and perhaps whole songs.
Starting of with the possibility to exchange patterns seems like a good idea. Extending it with features gearing towards cooperation, p2p connections between users etc would be excellent.

Powered by MediaWiki