新(shin)シンセサイザーの開発記録

音楽好きのプログラマー

ソフトウェアプログラマーのためのMIDI CCリスト

更新

 2024/8/13

  • SystemCommon & System Realtime の項目を一覧記述に変更
  • System Realtimeの※(脚注)を追加
  • CCリストにGS仕様 CC1 Control / CC2 Controlを追加
  • 追加に伴い一部の説明を修正

 

変更理由

 Systemメッセージに関しては、最初は簡潔さを考慮して省いていましたが、未定義箇所があり、テスト的に用いる(あくまで予約済みである点には注意)ことが可能な点を考慮すると、明示した方が良いという判断です。CC1/2 Controlに関しては、デフォルト値の関係上、記載すべき項目でしたが、書き忘れていました。

 

書く理由

 MIDIコントロールチェンジのリストはWeb上に多く見かけますが、プレイヤー/サウンドプログラマー向けの資料が多いです。ソフトウェアプログラマー向けの資料(空きCC、デフォルト値、Resetすべき項目、詳細資料などを記載)はあまり見ないため、備忘録を兼ねて作成することにしました。

 またM5Stack UnitSynth (SAM2695)のCCリスト化も兼ねています。 (比較のためRoland SC-88Proも掲載)

 GS(NRPN)に関しては、一応記載しています。

※Systemメッセージ & MPEに関しては、おおよその配置箇所を示すだけにとどめます。

 

MIDIメッセージ概要

MIDIメッセージの大きな分類を示しておきます。

コントロールチェンジ(CC)は分類上、Status Byteが0xBn(n:channel)、 データの1バイトが0-119になります。120-127はチャンネルモードメッセージなりますが、CCと同じデータ形式を採るため、実装上はまとめて扱われることが多いように思われます。Descriptionの色に関しては後述します。

Status Byte Data Bytes Description Message Spec.
& 0xf0
(上位4bit)
& 0xf
(下位4bit)
1Byte 2Byte 3…
0x80 Channel
0-15
Note Velocity - Note Off Channel Voice GM
0x90 Velocity 0 - Note Off GM
Velocity 1-127 - Note On GM
0xA0 Pressure - Polyphonic Key Pressure
(Aftertouch)
 
0xB0 Control 0-119 Value - Control Change (GM)
Control 120-127 Value - Channel Mode Channel Mode (GM)
0xC0 Program - - Program Change Channel Voice (GM)
0xD0 Pressure - - Channel Pressure
(Aftertouch)
GM
0xE0 Value (LSB) Value (MSB) - Pitch Bend Change GM
0xF0 0x0 可変 SYSEX System Exclusive  
0x1 Value
- - MIDI Time Code
Quater Frame
System Common  
0x2 Value (LSB) Value (MSB) - Song Position Pointer
(SPP)
 
0x3 Song - - Song Select  
0x4/0x5 可変 Undefined(Reserved)  
0x6 - - - Tune Request  
0x7 - - - EOX ( End Of eXclusive)  
0x8 - - - Timing Clock System Realtime
 
0x9 可変 Undefined(Reserved)  
0xA - - - Start  
0xB - - - Continue  
0xC - - - Stop  
0xD 可変 Undefined(Reserved)  
0xE - - - Active Sensing  
0xF - - - System Reset  

※ 仕様上、System Realtime Messageは他のMessageより優先権があり、他のStatus-Dataの合間に表れても良い

 

以下、個人的なピックアップ項目です。

  • Status Byteは最上位ビットがONで、データと区別できる
  • SYSEXを除くと、すべてのメッセージが3バイト以下になる(実装上はSYSEXが別の構造を採ることが多い)
  • Velocityと音量の関係は指数関数的であることを推奨(MIDI 1.0仕様書)、Velocity Mappingの存在も意識する必要がある
  • Pitch Bend / SPP のMSB / LSBは間違えやすい部分(SYSEXには逆順のデータが存在し、一貫性がない)
  • 0xFFのSystem Reset(工場出荷時設定にリセット)はテストに便利(仕様上もマニュアルを推奨)

 

コントロールチェンジ (+チャンネルモードメッセージ)一覧

Descriptionの色の意味は次の通りです。

  • 緑:Reset All Controller (CC121)でリセットされない項目
  • 赤:Reset All Controller (CC121)でリセットされる項目
  • 青:未定義

 

またCCの背景色の色の意味は次のようになっています。

  • 灰色:ドラムチャンネルでの受信、非推奨項目

いずれもGM2の仕様書を元にしています。GM2の仕様に該当しない項目に関しては、そのままです。従って実装上の必要性に応じて、項目は変えると良いかもしれません(例えば、Freezeを実装した場合、これは論理的(他のPedalに従い)にResetすべき項目に含んで良いと思われます)。

 

Valueの[]はDefault値を表します。

 

Category Spec. CC Value Description SAM
2695
88
Pro
Note Ref.
MSB

受信時
MSB→LSB
LSBは0に

  0   Bank Select    
GM 1 [0] Modulation Wheel    
  2   Breath Controller - -    
  3   Undefined - -    
  4   Foot Controller - -    
GM2 5 [0] Portamento Time 推奨グラフあり  
GM2 6 [0] Data entry (N)RPNの値  
GM 7 [100] Volume 40*log10(cc7/127) [dB]  
  8 [64] Balance - - L/Lower→R/Upper  
  9   Undefined - -    
GM 10 [64] Pan L→R 推奨式あり RP-036
GM 11 [127] Expression 40*log10(cc11/127) [dB]  
  12/13   Effect Control 1/2 - -    
  14-15   Undefined - -    
  16-19   General Purpose
1-4
汎用操作子
(2バイト拡張可能)
 
GS 16   [CC1 Control] SYSEXを用いて、
CC[0-0x5f]に変更可
 
GS 17   [CC2 Control] SYSEXを用いて、
CC[0-0x5f]に変更可
 
  20-31   Undefined - -    
LSB

LSBのみ
変更は可
  32 [0] Bank Select LSB -    
  33-37   * LSB - -    
GM2 38 [0] Data entry LSB - (N)RPNの値  
  39-43   * LSB - -    
例1 42 [0]? Pan LSB - -    
例2 43 [127]? Expression LSB - -    
  44-63   * LSB - -    
Switch

送信側
0: OFF
127: ON

受信側
0-63 : OFF
64-127: ON
GM 64 [0] Sustain Pedal
/ Damper (Hold)
ハーフダンパー可
0-127
 
GM2 65 [0] Portamento    
GM2 66 [0] Sostenuto Pedal
(Chord Hold)
   
GM2 67 [0] Soft Pedal    
  68 [0] Legato Footswitch - - On:Mono Mode
再アタックしない
Off: Modeを復帰
 
  69 [0] Freeze
(Hold2)
- -    
Sound
Controller
(Default)

CC71-78
Relative
  70 [0] Sound Variation - -   RP-021
2推奨 71 [64] Timber/Harmonic
Intensity
(Filter Resonance)
GS GS   RP-021
2推奨 72 [64] Release Time GS GS Realtimeは任意 RP-021
2推奨 73 [64] Attack Time GS GS Realtimeは任意 RP-021
2推奨 74 [64] Brightness
(Filter Cutoff)
GS GS 暗→明 RP-021
2推奨 75 [64] Decay Time GS GS   RP-021
2推奨 76 [64] Vibrato Ratio GS GS   RP-021
2推奨 77 [64] Vibrato Depth GS GS   RP-021
2推奨 78 [64] Vibrato Delay GS GS   RP-021
  79   Undefined - -   RP-021
    80-83   General Purpose
5-8
- 汎用操作子
(1バイトのみ)
 
  Dream 80 [4] Reverb Program - 汎用操作子5  
  Dream 81 [2] Chorus Program - 汎用操作子6  
    84   Portamento Control - Source Note
On/Off(CC65)は無視
 
    85-87   Undefined - -    
    88   High Resolution
Velocity Prefix
- - On / Off 下位7bit
0x80-0x3ffff
Velocity 0では無効
PR-053
    89-90   Undefined - -    
Effect
Controller
GM2 91 [40] Reverb Send Level 2695はDefault未記載  
  92   Tremolo Depth        
GM2 93 [0] Chorus Send Level    
  94   Celeste(Detune)
Depth
Delay Send Level
-    
  95   Phaser Depth - -    
    96   Data Increment(+1) - - (N)RPNの値を操作 RP-018
    97   Data Decrement(-1) - - (N)RPNの値を操作 RP-018
NRPN

MSB 1

LSB
Sound
Controller

MSB
24-31

LSB
Drum Note

値のLSBは
無効

  98 [0x7F] NRPN LSB ※1    
GS   8 Vibrato Ratio Sound Controller
CC71-78に対応
[64] Relative
 
GS   9 Vibrato Depth  
GS   10 Vibrato Delay  
GS   32 TVF Cutoff  
GS   33 TVF Resonance  
GS   99 TVF&TVA
Attack Time
 
GS   100 TVF&TVA
Decay Time
 
GS   102 TVF&TVA
Release Time
 
    0x7F null 値操作を無効  
  99 [0x7F] NRPN MSB ※1    
GS   1 →LSB     Sound Controller  
GS   24 Drum inst.
Pitch Coarse
[64] Relative  
GS   26 Drum inst.
Level
   
GS   28 Drum inst.
Pan
0: Random
1-127: L→R
 
GS   29 Drum inst.
Reverb Send L
   
GS   30 Drum inst.
Chorus Send L
   
GS?   31 Drum inst.
Delay Send L
- SC-88 / Pro
専用と記載
 
Dream   0x37   - SAM2695 Special  
    0x7F null 値操作を無効  
RPN

項目
MSB(0)
/ LSB

値設定
CC6

CC38

値の増減
CC96
or
CC97
GM 100 [0x7F] RPN LSB    
GM   0 Pitch Bend
Sensitivity
[semitone] / [cent]
[2 / 0]
 
GM   1 Channel Fine
Tuning
[-100, +100) [cent]
[0x40 / 0]
RP-022
GM   2 Channel Coarse
Tuning
[-64, +63] [semitone]
[64]
RP-022
    3 Tuning Program
Select
- - 0-127 CA-020
    4 Tuning Bank
Select
- - 0-127 CA-020
GM2   5 Modulation Depth
Range
- - MSB: [semitone]
LSB: [100/128 cent]
0 / 0x40
CA-026
MPE   6 MPE
Configuration
- - Ch [0/F]: Lower/Upper
0: MPE OFF
1-15: Member Channels
CA-034
    0x7F null 値操作を無効  
GM 101 [0x7F] RPN MSB    
    0 →LSB     有効  
    0x7F null 値操作を無効  
    102
-119
  Undefined        
                 
Channel
Mode
Message
GM2 120 0 All Sound Off All Sound Off  
GM 121 0 Reset All
Controllers
項目は色を参照

 
  122 0/[127] Local Control - - 0:OFF 127:ON  
GM 123 0 All Notes Off All Notes Off  
GM2 124 0 Omni Off - All Notes Off  
GM2 125 0 Omni On - All Notes Off  
GM2 126 0-16 Mono On All Sound Off ※2  
GM2 127 0 Poly On All Sound Off ※2  

※1 デフォルトでは無効、有効にするためにはGS Resetが必要

※2 MIDI 1.0規格書には”オール・ノート・オフ”と記載

 

参考資料

https://amei.or.jp/midistandardcommittee/RP&CAj.html

  • RP-024 "GMシステム・レベル2 v1.0(日本語版)"
  • RP-024 "GMシステム・レベル2 v1.2a(英語版)"

https://amei.or.jp/midistandardcommittee/MIDIspcj.html

  • MIDI1.0規格書

 

https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/docs/products/unit/Unit-Synth/SAM2695.pdf

  • SAM2695 Datasheet (SAM2695.pdf)