To give you a brief overview about what you can or could do with MusE so far.
Environment To Run MusE In
MusE + virtual synthesizers + real synthesizers.
NOTE: MusE is a currently only available for different brands of linux and does not run on Mac OSX or Windows.
To get the best experience possible a realtime-tuned Linux system should be used. More info here: Realtime
Mixer (Line In/Out)
MusE has a built in mixer that in one convenient window allows for mixing both midi and audio.
Arranger, edit capabilities: Copy&Paste
The arranger, the most important element of a sequencer contains these editors:
Both the Piano Roll and the Drum editor allows for editing parameters of midi instruments, e.g. volume, pan, or any other applicable parameter that your synth device may support. This is visible in the screenshots above, the bottom area. Several controller editors for different parameters may be opened at once.
MIDI controller abstraction with IDF (Instrument definition file)
If you use expanders like the "Roland XV 3080" you can select sounds and controllers within MusE. In a few steps you can build your own library of your own soundbanks and controllers. In case this has not yet been done for your special synthesizer just write it youself, it's quite easy.
Here an example of how it could look like (XML syntax):
<?xml version="1.0"?> <muse version="1.0"> <MidiInstrument name="MC307"> <PatchGroup name="Bank 01 Piano"> <Patch name="64voicepiano" hbank="64" lbank="0" prog="0"/> <Patch name="Lead TB 2" hbank="65" lbank="0" prog="0"/> <Patch name="Wow TB" hbank="66" lbank="0" prog="0"/> </PatchGroup> </MidiInstrument> </muse>
MusE already comes with a number of IDF files for various hardware submitted by kind users (many thanks to all who has helped!) If you want to construct your own file for your specific hardware starting of from an already available file is the way to go.
MusE supports the use of virtual synths. Both external formats connected through Jack and several synth types that are connected internally. Connecting synths internally give the added benefit that all connectivity and patch handling is automatically taken care of.
M.E.S.S virtual synth format
MusE's own internal synth format is M.E.S.S. Several synths are currently implemented for M.E.S.S. Below is a picture of MusE's version of Fluidsynth:
VST/Instruments (Windows binaries)
Deprecated, this section will be improved later on, basically the internal VSTi support does not work at the moment but there are good external solutions First of all MusE can connect to make use of VSTi. What VSTi plugins are supported so far you can find out here:
You have to use WINE and the setup is usually not easy.
Virtual Synthesizers running outside of MusE
Apart from the internal synths you can run software synths outside of MusE and connect them through ALSA and JACK so they also are fully integrated.
Some remarkable synths include:
Some remarkable samplers:
You can check the list of supported JACK applications here: http://jackit.sourceforge.net/apps/
This list is just a hint of what works, it's not' the complete truth Hardware drivers are improved all the time so this list will get outdated!
You should also read on here:
Here's a list of cards which were reported to be working according to it's vendors. But don't buy a card because it's in the list below! Doublecheck it with a google search or the ALSA homepage.
PCI (Peripheral Component Interconnect)
If we would recommend a brand it would probably be RME. This is because they support linux and help to create good quality drivers supporting all the features of their cards. But even a more valuable benefit is that these cards are high quality audio devices usually equipped with very good DA and AD converters.
Soundcards USB (Universal Serial Bus)
Maybe this link can bring even more light in the dark:
Midihubs using USB
MAudio USB Midisport 1x1, 2x2, 4x4 and 8x8.
SERIAL (Serial Interfaces Which Some Synthesizers Use)
For example the "Korg NS5R Midi Expander" is connected to the serial driver.
The Korg has three Ports:
Check the FFADO homepage for an up to date list of what hardware is supported.
LAPTOP (Soundcards Build Into Laptops)
This is just a small selection of soundcards and other hardware supported by ALSA. Some drivers have been available in stable versions for a long time, while others are still in development.
Most USB devices are supported, as long as they are standards-compliant. For a full list, read this.
This list is FAR from beeing complete and FAR from being correct and proved!
Multiple Soundcards (Midi/Wave)
With MusE >= 0.7.x you are not bound to a single soundcard - thanks to ALSA and the MusE architecture you can use 2 or even more of them. This increases connectivity and a soundcard costs much less compared to a MIDI interface!
Several soundcards for total MIDI control! Compared to modern studio soundcards as the "RMS Hammerfall" or "M Audio 1010" the quality of cheap cards is a criteria for a good production. But using these cards as MIDI devices only will result in a clear structured song creation.
Create your own softsynth with M.E.S.S
M.E.S.S. stands for MusE Experimental Soft Synth and is an API/interface (like DSSI) to enable programmers to easily create their own softsynths. The interface for a M.E.S.S.-synth consists of two classes, the Mess and Messgui. In short, the framework provides the Mess (the synth) midi data (notes, controllers and sysexes) and methods that handle the IPC between the gui and the synth, so the programmer can focus on DSP-issues instead.
This is a short description of the methods in the virtual Mess-class, defined in mess.h:
This is where the audio processing takes place. The Mess is called with a float array, and it's up to the programmer to fill it with data beginnig at data[offset] to data[offset+len]. There are two ways to go when it comes to how midi data is fed into the Mess. You can either
If you choose to implement processEvent, it's up to yourself to decide which kind of midievent you're receiving and treat it accordingly.
If you choose to go the other way, setController is where the Mess gets the controller events from the sequencer. playNote is where notes are fed to the Mess, and sysex, well, you get the picture...
getInitData is called when a song (project) is saved, and this is where you create the data which will recreate the synths current state when the project is reopened.
getControllerInfo is called on when the Mess is instantiated, and this is where you tell MusE which controllers the Mess supports. Just fill in the values and return the index you want to be sent next time. Return 0 when you've given MusE information about all controllers.
hasGui is called when the Mess is instantiated, and tells MusE if the synth has a gui or not.
showGui is called from MusE when the gui is supposed to be visible.
getPatchName and getPatchInfo are used to give MusE information about patches, which can be selected in the track inspector.
For the Gui, there's really only one method that is interesting:
processEvent in the gui is called whenever the synth sends it a midiEvent. (send(MidiEvent&)). Since this is the only method The gui can send midimessages to the synth via sendEvent, sendController and sendSysex calls. Oh, there are two more things, you need to provide a static instantiate-method and a mess-descriptor. These look something like this:
Now you're all set and done, it wasn't worse than that. Check out the code for other synths to get an even better idea of what's happening behind the scenes, and how other developes have solved their problems.
Internal Storage Format
All configuration files, as for example your MusE configuration, are stored in an XML format. What this means is that all internal files are human readable and if there is a problem it may be possible to figure it out looking at the files.
Several people are using MusE more or less regularily to create music (see the HallofFame for some public examples.)
Interested? Got More Questions?