Skip to content
  • Takashi Sakamoto's avatar
    ALSA: firewire-lib: Add support for MIDI capture/playback · 83d8d72d
    Takashi Sakamoto authored
    
    
    For capturing/playbacking MIDI messages, this commit adds one MIDI conformant
    data channel. This data channel has multiplexed 8 MIDI data streams. So this
    data channel can transfer messages from/to 8 MIDI ports.
    
    And this commit allows to set PCM format even if AMDTP streams already start.
    I suppose the case that PCM substreams are going to be joined into AMDTP
    streams when AMDTP streams are already started for MIDI substreams. Each
    driver must count how many PCM/MIDI substreams use AMDTP streams to stop
    AMDTP streams.
    
    There are differences between specifications about MIDI conformant data.
    
    About the multiplexing, IEC 61883-6:2002, itself, has no information. It
    describes labels and bytes for MIDI messages and refers to MMA/AMEI RP-027
    for 'successfull implementation'. MMA/AMEI RP-027 describes 8 MPX-MIDI data
    streams for one MIDI conformant data channel. IEC 61883-6:2005 adds
    'sequence multiplexing' and apply this way and describe incompatibility
    between 2002 and 2005.
    
    So this commit applies IEC 61883-6:2005. When we find some devices compliant
    to IEC 61883-6:2002, then this difference should be handles as device quirk
    in additional work.
    
    About the number of bytes in an MIDI conformant data, IEC 61883-6:2002 describe
    0,1,2,3 bytes. MMA/AMEI RP-027 describes 'MIDI1.0-1x-SPEED', 'MIDI1.0-2x-SPEED',
    'MIDI1.0-3x-SPEED' modes and the maximum bytes for each mode corresponds to 1,
    2, 3 bytes. The 'MIDI1.0-2x/3x-SPEED' modes are accompanied with 'negotiation
    procedure' and 'encapsulation details' but there is no specifications for them.
    
    So this commit implements 'MIDI1.0-1x-SPEED' mode for playback, but allows
    to pick up 1-3 bytes for capturing.
    
    Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    83d8d72d