[linux-audio-dev] Common synthesizer interface -or- microtonal alternative to MIDI?

Toby tobia.conforto at linux.it
Mon May 2 21:01:18 UTC 2005


Dear list,

	I am currently designing a new kind of music sequencer and I
need your help in making some crucial decisions.


Introduction

My project is a sequencer for composing Just Intonation music.
Just Intonation is not a new idea in the music landscape, not by a long
shot: it has roots in the first studies of music by the ancient Greeks.
The GUI I'm designing though will (hopefully) be the first of its kind.

My sequencer is going to be just that: a sequencer.  It will be hard
enough to design an efficient, user-friendly and solid GUI for composing
music without a scale (yes, you read it right) so I'm not going to put
synthesis modules in the same software package.  Not at first, anyway.


MIDI

Here comes the biggest problem.  I cannot use MIDI as a protocol between
my sequencer and the syntesizers, because most (if not all) of the notes
produced by my software will not lie in the equal tempered scale (the 12
notes per octave everyone knows) nor in any other scale for that matter.

Please correct me if I'm wrong: MIDI doesn't allow for microtonal notes.
The best next things MIDI has to offer are Custom Scales and Pitch Bend.

Custom Scales is not a feature of MIDI, it's more like a reinterpreta-
tion of the protocol.  It happens when both the sequencer and the
synthesizer are still talking of C, C#, D, D#... but the synthesizer
renders those notes with custom pitches, coming from a custom scale set
by the user.  This approach is unsuitable to my project, mainly because
there could be more than 12 notes (pitches) in an octave.

Pitch Bend is not any better, because (to my knowledge) there is only
one pitch bend setting per channel.  I could certainly use it to play
microtonal notes, but the pitch bend applies simultaneously to ALL notes
being played.  This limits the applicability of pitch bend to monophonic
instruments, or at least to playing one voice per MIDI channel.


Alternatives

Is there a common protocol with the same scope as MIDI (transferring
notes from a sequencer to a synthesizer) but which allows for microtonal
notes?  I fear not.

So I am left with the only option of manually interfacing my sequencer
to a select few software syntesizers.  I'm designing my project in an
extensible way (support for plugins) so that's not so bad as it seems.

The problem is that I don't know of any software synthesizer that is:
1. good enough for decent music production;
2. easy to use by non-experts (this is a direct stab at CSound, or
   better at its lack of a decent GUI, of a standard instrument exchange
   file format and of a decent, centalized library of presets)
3. free software.

A final note: outputting SCO files for use in CSound seems like an
obvious solution, but this would greatly limit the usability of my
project.  This is because (to my knowledge) there is no decent GUI one
can use to merge the SCO file coming from a sequencer with a few ORC/SCO
file-couples coming from an instrument library, without having to know
the CSound language.  I don't want to target CSound programmers only.



I hope I've managed to explain my problem.  Please feel free to dicuss
on these matters.  Any constructive criticism, any note of mistakes on
my part and any practical advice for my project will be appreciated.


Toby

-- 
«A computer is a state machine. Threads are for people 
who can't program state machines.»		—Alan Cox



More information about the Linux-audio-dev mailing list