Ignore Specific MIDI Channels in Ecasound Omni Mode
While Ecasound supports MIDI event processing and omni mode operation, it does not include a native parameter to selectively blacklist or ignore individual MIDI channels while accepting all others. Ecasound's built-in MIDI handling is designed primarily for transport control, parameter automation, and raw event streaming rather than granular channel filtering. To achieve omni listening with specific channels excluded, users must employ an external MIDI routing or filtering utility prior to routing the stream into Ecasound's ALSA sequencer input.
Ecasound’s Native MIDI Limitations
When configuring Ecasound to receive MIDI data—such as via the ALSA
sequencer input (-i:alsaseq,client:port)—the software does
not provide an internal rule set to filter incoming channel messages.
Omni mode processes all incoming messages across channels 1 through 16
without exception. Conversely, Ecasound's MIDI control routing
parameters (such as the -km controller mapping options)
require explicit target definitions rather than exclusion lists.
Consequently, you cannot instruct Ecasound directly to "listen to omni
except channel X."
The Solution: External Pre-Filtering
To exclude specific MIDI channels before the data reaches Ecasound, the standard approach on Linux is to route the MIDI source through an intermediary filtering tool.
Using mididings
The most flexible way to filter MIDI channels is mididings, an event routing and processing framework. You can define an exclusion filter using a simple Python script:
from mididings import *
# Pass all channels except channel 10
run(
Filter(~CHANNEL(10))
)Running this script creates virtual ALSA MIDI ports. You route your physical hardware or MIDI application into the script's input, and connect the script's output to Ecasound's input port.
Using ALSA Router Utilities
Alternatively, lightweight ALSA utilities such as
aseqnet or standalone ALSA patchbays (like QjackCtl or
Patchage) paired with generic MIDI filters can split and isolate streams
before the audio engine receives them.
Connecting to Ecasound
Once the intermediary filter is running:
- Identify the filtered virtual port using
aconnect -l. - Launch Ecasound, pointing its input to the filtered ALSA port:
ecasound -i:alsaseq,filtered_client:port -o:default_output
By handling channel exclusions upstream, Ecasound can operate in its default mode without being interrupted or triggered by unwanted MIDI channel traffic.