[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [fluid-dev] Midi Channel Limitations

From: David Henningsson
Subject: Re: [fluid-dev] Midi Channel Limitations
Date: Tue, 09 Sep 2014 08:17:04 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0

On 2014-09-09 06:30, Peter Hanlon wrote:

I am Peter from Canberra Australia. I am trying to redevelop a Schober 
Consolette II Organ that I built in 1970, using modern electronics and 
synthesizer software.  For the hardware, I have used Arduino Uno and four MIDI 
DIN R5 boards. My Arduino software then delivers  printable hex records of 19 
bytes to an Apple Mac OSX application via a USB port. The 19 bytes consist of a 
1-byte bus indicator, 2-bytes volume shoe, and then 16 bytes of digital 
switches. The bus is upper or lower or pedal keyboard or 
stops/balance/vibrato/percussion kit. A record is sent when something on the 
relevant 64-bit bus changes.

I have the OSX application including the serial port access and fluid_synth 
calls running to the point where a key press on the Organ produces a vaguely 
reasonable note through the OSX speaker.

What I need is comment on my design for the fluid_synth bit, which I will try 
to summarise as follows:-

The organ has 23 stops allocated to pedals, swell and great manuals with one 
stop switching swell to great. It also has a dozen instruments on a rotary 
switch comprising a percussion kit. My current design essentially has each stop 
allocated to its own channel, and one channel allocated to the percussion kit.

For the stops, the channel is attached to a particular sound font using sound 
font id, bank and program, statically during the synth initialization.

For the ‘percussion’ kit, the channel is initially similarly attached, but is 
reviewed when the percussion switch changes.

So I have had to extend ‘midi-channels’ to 32 from default 16. And I now wonder 
if I need some notion of ‘midi-routing’  where I might be responsible for 
coalescing these potential 32 down to something amenable to the MIDI 
limitations, or sound card or whatever, or hopefully some God within 
fluid_synth looks after it all for me?

The Arduino code is in pretty reasonable shape, and fluid_synth on an Intel 
Galileo could be an interesting activity. I imagine that sound font sizes and 
font access might be issues.

Hi Peter,

You might get some input on the more organ near pieces by the vibrant jOrgan community, who often use fluidsynth as sound backend.

Anyway, if you use more than 16 MIDI channels, there's nothing to worry about as long as you use the fluid_synth_note/cc/etc API calls directly. All of them accept a midi channel >= 16 just fine.

The fluid_midi_event_t struct, if you use that, seems to have an undocumented limitation at 256 midi channels though (!), but nobody has complained so far.

I'm more worried about CPU consumption on the Intel Galileo when you make that final magnificent chord on all manuals, pedals with all knobs active. Would be interesting to know what polyphony limit you end up with on that machine.

// David

reply via email to

[Prev in Thread] Current Thread [Next in Thread]