The Advanced Linux Sound Architecture is composed of several parts: sound driver, sound library and sound utilities and tools. The aim of this project is to offer a complete audio solution for the Linux operating system.
I'm a newcomer to ALSA development and I'm not sure whether the wiki is the right place for this.
Maybe "Discussion" forum. Please let me know.
For now, I'm 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 necessary work needed for bigger projects, and currently receiving all my development effort.
I have spent the last few weeks reading ALSA 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 missing links, and I don't see I will make a good job at writing these 2 APIs if I don't feel totally satisfied with my understanding of the precise functionning of ALSA seq.
Whence my following questions, and please excuse me bringing them up, since I've searched extensively and did not find anywhere any documentation precisely, yet consisely, fully describing how the ALSA MIDI Seq really works. For instance, showing the flow of MIDI events thru the whole architecture, from the time they get into the system from a hw port, to a chain of apps thru their ports and queues, and back to many synth (for instance).
1) Is there such a documentation somewhere ?
2) Seq clients open and use input and outport ports. However, reading the low level, kernel code, I have completely missed the role of an output port. I understand the role of an input port, as a seq device for receiving direct or scheduled events. However I miss the role of output ports, since the code I have read seems to say "an output event is either enqueued for later dispatch, or directly dispatched to the input ports of the subscribing seq clients. So what's the role, importance of a seq's output port, and how do they fit in the overall picture in the circulation of seq events ?
3) I keep seing provisions for "event filtering", both in the kenel code, and in the alsa-lib client code, and yet could not properly figure how this works. So how does work the filtering ?
Precise answers to these 3 questions, possibly with comprehensive snippets of client code, will certainly help me move on with writing convenient and efficient APIs.
Thank you for any help in these directions.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello ALSA core team,
I'm a newcomer to ALSA development and I'm not sure whether the wiki is the right place for this.
Maybe "Discussion" forum. Please let me know.
For now, I'm 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 necessary work needed for bigger projects, and currently receiving all my development effort.
I have spent the last few weeks reading ALSA 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 missing links, and I don't see I will make a good job at writing these 2 APIs if I don't feel totally satisfied with my understanding of the precise functionning of ALSA seq.
Whence my following questions, and please excuse me bringing them up, since I've searched extensively and did not find anywhere any documentation precisely, yet consisely, fully describing how the ALSA MIDI Seq really works. For instance, showing the flow of MIDI events thru the whole architecture, from the time they get into the system from a hw port, to a chain of apps thru their ports and queues, and back to many synth (for instance).
1) Is there such a documentation somewhere ?
2) Seq clients open and use input and outport ports. However, reading the low level, kernel code, I have completely missed the role of an output port. I understand the role of an input port, as a seq device for receiving direct or scheduled events. However I miss the role of output ports, since the code I have read seems to say "an output event is either enqueued for later dispatch, or directly dispatched to the input ports of the subscribing seq clients. So what's the role, importance of a seq's output port, and how do they fit in the overall picture in the circulation of seq events ?
3) I keep seing provisions for "event filtering", both in the kenel code, and in the alsa-lib client code, and yet could not properly figure how this works. So how does work the filtering ?
Precise answers to these 3 questions, possibly with comprehensive snippets of client code, will certainly help me move on with writing convenient and efficient APIs.
Thank you for any help in these directions.