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:

  1. Identify the filtered virtual port using aconnect -l.
  2. 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.