drblue - 2018-02-19

Hi all,

(posted separately on the wiki, not knowing exactly where to post).

I'm a newcomer to ALSA development and currently focusing on ALSA MIDI sequencing, for the purpose of developing a new, more complete Perl interface for ALSA Seq, as well as an API for Erlang.

This is an on-going effort needed for bigger projects, and currently receiving all my development time.

I have spent the last few weeks reading ALSA MIDI Seq source code (both the alsa-lib, for clients, and the kernel code) in search of a better understanding of the overall picture.

Lots of code, not necessarily easy to read.

As such I still have quite some blind spots regarding how MIDI events actually flow thru the whole architecture, from the time they get into the system from, say, a hw port, to a chain of apps, thru ports and queues, and back to many synth (for instance). (I've written client seq that work perfectly, yet not enough to fully understand how things work in the core for the sake of writing efficent and convenient APIs).

While reading code (both alsa-lib client API and kernel code), I've come accross MIDI events "filtering" capabilities, without undestanding at all how it works, and how a seq client might best use it.

Would anyone have a clear, definite understanding and knowledge how this works ?

Any answer, possibly with comprehensive snippets of code, will certainly be most helpful to help me write these onvenient and efficient APIs.

Thank you for any help in this direction.