Hi Nikolay,

 MIDI is a standard between two hardware devices (originally specified
for DIN connectors and certain baud rates, etc.). As Computers aren't
equipped with MIDI connectors any more, there needs to be a conversion
between the hardware and the computer and within the computer there
has to be some sort of platform which can be accessed by programs,
called an API, which defines how exactly you can access its functions
in order to receive/transmit MIDI data between apps or external
hardware.

On linux, you will nowadays most likely use ALSA as the underlying API
architecture to convert to/from your external MIDI device(s) (probably
connected by USB). The conversion part to/from the hardware takes
place in a driver. ALSA isn't intended only for MIDI, but also for
audio and there exist alsa drivers for a lot of hardware (soundcards
and MIDI devices, see: https://alsa-project.org/wiki/Matrix:Main).

As MIDI currently is mostly implemented by USB standard compliant
hardware, it gets recognized by the system, the appropriate driver is
installed automatically and it works out of the box (that's the "raw"
part). On top of that there is the "alsa-seq" which adds virtual
ports, timing and such for the communication between applications.

If using jack (which has better timing than the alsa-seq) and don't
want to use alsa-seq, you can bridge between raw alsa and jack-midi
using utils like a2jmidid.

FYI: Apart from ALSA there is also portmidi (another API) and there
might be applications only supporting portmidi. But even portmidi
nowadays accesses the alsa drivers as they are the de facto standard
on linux.

Here is an article maybe shedding some light on some issues:

https://freeshell.de/~murks/posts/ALSA_and_JACK_MIDI_explained_(by_a_dummy_for_dummies)/


HTH,
Orm

Am Sonntag, den 13. Februar 2022 um 12:49:46 Uhr (+0300) schrieb Nikolay 
Shaplov:
> Hi! I am writing a HowTo article about using MIDI keyboard on my distro. (I 
> am 
> trying to write down all things, when it took me a while to figure them out)
> 
> And while writing I understand, that I do not understand what MIDI driver 
> (one 
> that is specified via -m option) actually do. (And why I chosen alsa_seq in 
> my 
> case).
> 
> Isn't MIDI devices are somehow a standard thing? This driver "converts" what 
> into what?
> 
> Hope it's OK to ask this question here. If I got an answer I will manage to 
> write better and clearer documentation.
> 
> -- 
> Nikolay Shaplov aka Nataraj
> Fuzzing Engineer at Postgres Professional
> Matrix IM: @dhyan:nataraj.su
> 
> 
> 
> 
> _______________________________________________
> fluid-dev mailing list
> fluid-dev@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/fluid-dev

_______________________________________________
fluid-dev mailing list
fluid-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/fluid-dev

Reply via email to