Hi,
as there seemed to be some interest in how I get on with my project:
I have made at least some progress concerning the conversion of my analogue
organ. Finally, I have found a way to switch sounds like stops.
There are now up to 20 different sounds playing on channel #1, 8 different
sounds for channels #2 and #3. I can press the old switch buttons of the
organ which I have converted to digital and I get the sounds switched on and
off.
Some big problems that yet have to be solved:
That many different sounds playing at the same time is too much. I haven't yet
tried all alternatives and finetuned the RT settings etc., but the sound is
stuttering and crackling rather quickly, when I have set all 20 sounds to
play on channel #1.
I know it is rather unlikely that all 20 switches (stops) are pulled at the
same time. I have of course done anyway as a test.
I think I need some kind of "NO SOUND" preset, that does not consume any or
nearly no processing power? At the moment I had to switch to the sounds I
want (= a pulled stop; sound is ON) or switch to another sound as a "neutral"
sound. Just to hear the difference of it, if is it working at all.
How did I do it?
First, I run a CLI script that runs fluidsynth with 48 virtual MIDI channels
via a named pipe and then runs keykit.
Then I run a keykit function. This sends system messages to the system
commandline and from there to fluidsynth via the named pipe. The function
reacts upon incoming MIDI events and when it finds a special SYS EX message I
have created for each switch it turns the sounds on and off.
To get several sounds to play at the same time on the same channel I have
programmed lots of router commands. Channel #1 alone is routed to 20 virtual
channels which are all active at the same time. This is where the problem
arises that I get crackled sound: After the router rules have been set up all
of the virtual channels need a preset to play. There seems to be no way
to "mute" or de-activate a particular router roule. One can only delete all
of them or add a single one to the router rule "chain". I have created 36
router rules.
If You have got a nice hint about how to create a "no sound" preset, mute a
channel alltogether (simply setting volume to 0 will not be sufficient) and
the crackled sound problem, then I'm looking forward to reading about it
here.
Regards,
Crypto.
Am Saturday 27 September 2008 12:55:52 schrieb Crypto:
Hi,
I have turned an old analogue electric organ into a MIDI controller. All
the old push buttons, switches, pots, drawbars can now trigger MIDI events.
Because I would like to make the MIDI messages static (i.e. they are linked
with particular buttons and faders and will not be changed) I have thought
of using an external application (keykit in this case) to work on incoming
MIDI events of the MIDI controller, filter them and trigger newly defined
MIDI events with it.
I would like to make the MIDI messages transmitted by the controller as
short as possible. I have thought of assigning the Bx (Control Change)
command to the buttons and faders, but this would mix with/overwrite other
control change commands sent by other MIDI devices.
It has to be possible to distinguish between the buttons/faders by the MIDI
message that each one triggers.
How about the System Common Message F4 and F5 which are not yet defined in
the MIDI standard? Could I add some extra data bytes to identify the type
(button or fader), the number and value?
Like this:
F4 125 70 (Fader 125 sends value 70)
keykit would recognize this fader and set volume level for channel 2 for
fluidsynth.
Or, in another situation, increase sustain value for channel 3 for
fluidsynth.
or:
F5 10 1 (Button 10 sends value ON)
keykit would recognize the button and turn on sustain for channel 1.
Thanks for any hint and kind regards,
Crypto.
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user(a)lists.linuxaudio.org
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user