Mac OS X 10.7 Lion 対応
AUGraphに対するMIDIイベント送信処理APIであるMusicDeviceMIDIEventに対して、 特定のコントロールチェンジを送信しようとすると、エラーが発生する。 Mac OS X 10.6 までは、このようなエラーは発生していなかった。
なお、エラー発生時のMusicDeviceMIDIEventの戻り値は
FFFFD582 -> -10878すなわち
kAudioUnitErr_InvalidParameter = -10878だと思われる。
MusicDeviceMIDIEventを用いてコントロールチェンジを送信するテストを行った結果は次の通り。
Mac OS X 10.7 Lion でのMusicDeviceMIDIEvent実行結果 CC#0 ok : Bank Select MSB CC#1 ok : Modulation Wheel or Lever CC#2 error : Breath Controller CC#3 error : -- CC#4 error : Foot Controller CC#5 error : Portamento Time CC#6 ok : Data Entry MSB CC#7 ok : Channel Volume, fomerly Main Volume CC#8 error : Balance CC#9 error : -- CC#10 ok : Pan CC#11 ok : Expression Controller CC#12 error : Effect Control 1 CC#13 error : Effect Control 2 CC#14 error : -- CC#15 error : -- CC#16 error : General Purpose Controller 1 CC#17 error : General Purpose Controller 2 CC#18 error : General Purpose Controller 3 CC#19 error : General Purpose Controller 4 CC#20 error : -- CC#21 error : -- CC#22 error : -- CC#23 error : -- CC#24 error : -- CC#25 error : -- CC#26 error : -- CC#27 error : -- CC#28 error : -- CC#29 error : -- CC#30 error : -- CC#31 error : -- CC#32 ok : LSB for Control 0 : Bank Select LSB CC#33 ok : LSB for Control 1 : Modulation Wheel or Lever CC#34 error : LSB for Control 2 : Breath Controller CC#35 error : LSB for Control 3 : -- CC#36 error : LSB for Control 4 : Foot Controller CC#37 error : LSB for Control 5 : Portamento Time CC#38 ok : LSB for Control 6 : Data Entry CC#39 ok : LSB for Control 7 : Channel Volume, formerly Main Volume CC#40 error : LSB for Control 8 : Balance CC#41 error : LSB for Control 9 : -- CC#42 ok : LSB for Control 10 : Pan CC#43 ok : LSB for Control 11 : Expression Controller CC#44 error : LSB for Control 12 : Effect Control 1 CC#45 error : LSB for Control 13 : Effect Control 2 CC#46 error : LSB for Control 14 : -- CC#47 error : LSB for Control 15 : -- CC#48 error : LSB for Control 16 : General Purpase Controller 1 CC#49 error : LSB for Control 17 : General Purpase Controller 2 CC#50 error : LSB for Control 18 : General Purpase Controller 3 CC#51 error : LSB for Control 19 : General Purpase Controller 4 CC#52 error : LSB for Control 20 : -- CC#53 error : LSB for Control 21 : -- CC#54 error : LSB for Control 22 : -- CC#55 error : LSB for Control 23 : -- CC#56 error : LSB for Control 24 : -- CC#57 error : LSB for Control 25 : -- CC#58 error : LSB for Control 26 : -- CC#59 error : LSB for Control 27 : -- CC#60 error : LSB for Control 28 : -- CC#61 error : LSB for Control 29 : -- CC#62 error : LSB for Control 30 : -- CC#63 error : LSB for Control 31 : -- CC#64 ok : Damper Pedal On/Off CC#65 ok : Portamento On/Off CC#66 ok : Sostenuto On/Off CC#67 ok : Soft Pedal On/Off CC#68 error : Legato Footswitch CC#69 error : Hold 2 CC#70 error : Sound Controller 1 : defalut - Sound Variation CC#71 error : Sound Controller 2 : defalut - Timbre/Harmonic Intens. CC#72 error : Sound Controller 3 : defalut - Release Time CC#73 error : Sound Controller 4 : defalut - Attack Time CC#74 error : Sound Controller 5 : defalut - Brighteness CC#75 error : Sound Controller 6 : defalut - Decay Time CC#76 error : Sound Controller 7 : defalut - Vibrato Rate CC#77 error : Sound Controller 8 : defalut - Vibrato Depth CC#78 error : Sound Controller 9 : defalut - Vibrato Delay CC#79 error : Sound Controller 10 : -- CC#80 error : General Purpose Controller 5 CC#81 error : General Purpose Controller 6 CC#82 error : General Purpose Controller 7 CC#83 error : General Purpose Controller 8 CC#84 error : Portamento Control CC#85 error : -- CC#86 error : -- CC#87 error : -- CC#88 error : High Resolution Velocity Prefix CC#89 error : -- CC#90 error : -- CC#91 ok : Effect 1 Depth : default - Reverb Send Level CC#92 error : Effect 2 Depth : formerly Tremolo Depth CC#93 error : Effect 3 Depth : default - Chorus Send Level CC#94 error : Effect 4 Depth : formerly Celeste Depth CC#95 error : Effect 5 Depth : formerly Phaser Depth CC#96 error : Data Increment CC#97 error : Data Decrement CC#98 error : NRPN LSB CC#99 error : NRPN MSB CC#100 ok : RPN LSB CC#101 ok : RPN MSB CC#102 error : -- CC#103 error : -- CC#104 error : -- CC#105 error : -- CC#106 error : -- CC#107 error : -- CC#108 error : -- CC#109 error : -- CC#110 error : -- CC#111 error : -- CC#112 error : -- CC#113 error : -- CC#114 error : -- CC#115 error : -- CC#116 error : -- CC#117 error : -- CC#118 error : -- CC#119 error : -- CC#120 ok : Channel Mode Message : All Sound Off CC#121 ok : Channel Mode Message : Reset All Controllers CC#122 error : Channel Mode Message : Local Control On/Off CC#123 ok : Channel Mode Message : All Notes Off CC#124 error : Channel Mode Message : Omni Mode Off CC#125 error : Channel Mode Message : Omni Mode On CC#126 error : Channel Mode Message : Mono Mode On CC#127 error : Channel Mode Message : Poly Mode On
MusicDeviceMIDIEventの挙動は不可解である。 対応していないコントロールチェンジなら、これまで通り無視して欲しい。
対応案としては次の二つがある。
1.の対応が簡単であるが、今後別の異常が発生したときに検出できないというリスクがある。 よって2.の対応を採用する。
SMAppleDLSDevCtrl::SendShortMsgにて、MusicDeviceMIDIEventを呼び出す前に、 Lionが対応しているコントロールチェンジであるか確認する。 対応していないコントロールチェンジである場合は、MusicDeviceMIDIEventを呼び出さずに捨てる。
Mac OS X 10.7 Lion に対応する。
LionでMIDITrail Ver.1.1.2を実行するとき、MIDI OUTにApple DLS Music Deviceを選択していると、 MIDIデータ再生中に、次のエラーが発生することがある。
掲示板でも同様の報告あり。