List of Custom Units for prologue and minilogue xd
KORG prologue 8/16 and minilogue xd (module)向けのカスタムユニット一覧
ここにKORG prologue 8/16 and minilogue xd (module)向けのカスタムユニット一覧を掲載しておきます。
※Nu:Tekt NTS-1は公式サポートしていません (動作報告等は歓迎します)
リリースに合わせて、随時更新します。
Here is a list of custom units for the KORG prologue 8/16 and minilogue xd (module).
※Nu:Tekt NTS-1 is not officially supported (I welcome reports of operation, etc.)
I will update this list as new releases become available.
| Unit Name | Instrument | GM No. 1-128 |
GM Recommended Key Range (*推奨音域) |
Price ( JP Yen ) |
Release Date |
Version | Update Date |
| shinPiano | Grand Piano | 1 | 21-108 | ¥6900 | 2025-08-31 | 1.1-0 | 2025-12-25 |
| shinGlocken | Glockenspiel | 10 | 72-108 | ¥3200 | 2025-12-28 | 1.0-0 | - |
| shinCGuitar | Classic Guitar | 25 | 40-84 | ¥4800 | 2025-12-30 | 1.0-0 | - |
| shinTBells | Tubular Bells | 15 | 60-77 | Free | 2025-12-30 | 1.0-0 | - |
各ユニットの詳細に関しては、販売サイトに記載しております。
現状、パラメーター変化のデモはshinPianoのみになっています。shinシリーズ共通なので、そちらをご参照して下さい。
Details for each unit are listed on the sales site.
Currently, the parameter change demo is only available for shinPiano. Since it applies to the entire shin series, please refer to that.
Demo
shinPiano
引用元の動画の波紋処理は、ショパンのノクターン9-1でした。
— Fwmi (@Fwmi3X) 2025年12月25日
KORG minilogue xd カスタムオシレーター shinPiano バージョン1.1のデモ動画です。
相変わらずペダルなしで、xd一台 4音のみです。 https://t.co/mwRttCny9J pic.twitter.com/0gPvyODYfh
KORG prologue / minilogue xd用のカスタムオシレーター shinPianoのデモ2です。
— Fwmi (@Fwmi3X) 2025年12月27日
※音色がかなり変化します
フロントパネル&エディットのパラメーターを1つずつ変化させています(Releaseを除く)。
さらにLFOによるShape(Metal)のモジュレーションです。
販売サイトhttps://t.co/nidFmf126X
↓ pic.twitter.com/lP6ECfFVjH
shinGlocken
KORG prologue / minilogue xd用のカスタムユーザーオシレーター shinGlocken v1.00-0リリース
— Fwmi (@Fwmi3X) 2025年12月28日
Cambridge(Westminster) Quartersの話で使用したもの
価格は¥3200、shinPiano(¥6900)同様語呂合わせです。
※ユニットの価格については、かなり幅を持たせる予定
販売サイトhttps://t.co/kPv66PyWnp pic.twitter.com/0xFHx8WHF0
shinCGuitar
KORG prologue / minilogue xd用のカスタムユーザーオシレーター shinCGuitarリリース
— Fwmi (@Fwmi3X) 2025年12月30日
クラシックギターです。
仮にもアナログ・シンセサイザーと称されるものから出る音としては最も似つかわしくないかも
デモ1はSpanish Romance(「禁じられた遊び」としても知られる)
※後半 +アナログOSC
↓ pic.twitter.com/iRvU4B2Bg0
デモ2は「アルハンブラの思い出」
— Fwmi (@Fwmi3X) 2025年12月30日
当初、こちらをデモ1にしようかと思いましたが、どことなくぎこちない感じがあったので取りやめました。これは、偶発性をもっと重視した音源を開発した方が良いということかもしれません。
(完璧すぎるタイミングの問題もあるでしょうけど...)
※ディジタルのみ
↓ pic.twitter.com/5bcbFYfpZp
shinTBells
KORG prologue / minilogue xd用のカスタムユーザーオシレーター shinTBellsリリース
— Fwmi (@Fwmi3X) 2025年12月30日
そんな訳で、Tubular Bells !
除夜の鐘の音とは全然違いますが、好きな時に鳴らしてみて下さい。
詳しいことは省きますが、鐘ってかなり部分音が独特です。
↓#チューブラーベルズ https://t.co/nh5Nc2qiwc pic.twitter.com/GahIHInCPr
KORG logueSDKを用いたprologue, minilogue xd向けオシレーターの開発-わずか32KBほどのA.Piano-
- 概要
- 経緯(オーディオプラグイン開発環境の変更)
- ピアノの訳
- ターゲットがprologue, minilogue xdの理由
- 実機(シンセ)選択
- 開発環境
- Linuxでlogue-cliを使う場合の問題点
- 実装 (C言語 & Rust)
- Rustを使う理由
- テスト環境
- オシレーターサイズ制限 32KB
- デモ
- テストリリース
概要
当初はCLAPでオーディオプラグイン開発する予定でしたが、現在はKORG logueSDKを用いて開発を行っています。ピアノのユーザーオシレーターをC & Rust (ほぼRust)で実装し、テストリリースしました。
注:この記事は開発の経緯です。開発したユーザーオシレーターの仕様に関しては、別途まとめる予定です。
注:prologueとminilogue xdはオシレーターの互換性があります。この記事でxdと略して書いてある場合、prologue & minilogue xdの意味になります。
経緯(オーディオプラグイン開発環境の変更)
当初CLAP(CLever Audio Plug-in) で開発することを検討していました。一般的にはVST2, 3が有名ですが、ライセンスに思うところがあり積極的に触る気になれませんでした。CLAPはMITライセンスで、コアな部分の仕様自体は固まっています。しかし拡張部分の仕様や実装レベルは、まだまだ普及段階であり十分に枯れていないように思えます。それよりも厄介なのは、マルチプラットフォーム、ホストと関係であり、確認作業に時間が割かれそうな予感がありました。Juceのようなフレームワークを導入するという手もありますが、オーディオプログラミングにおいては低レベル嗜好であり、これは規模が大きすぎる気がします。
logueSDKの場合、枯れている(prologueの発売は2018年なのでその想定) し、プラットフォームに関しては選択の自由もあるため、条件的にはかなり良さそうでした。他の候補として、Critter & GuitariのOrganelleやZynthianもありますが、現時点では普及率が低いと判断しています(ただし、ZynthianのようにLV2プラグインが使用できるものに関しては、PCと兼用もできるので検討の余地あり)。
cleveraudio.org
www.korg.com
まあ元々シンセには興味があるので、調べている内に単純にハイブリッドシンセとして惹かれていったということもあります。
ピアノの訳
ポリのアナログシンセを入手するのは初めてのことです。minilogue xdを入手し、プリセット1は"Replicant xd"(Blade Runner?)を鳴らしてみると、音は想像以上に良かったです(xdは純アナログではないので、若干不安はありました)。ディジタルピアノやシンセによく入っているPiano & Stringsのようなプリセットが好きなため、自然とピアノとリアルアナログストリングスとの組み合わせを試したくなりました。他の理由を含め、まとめると以下のようになります。
- ディジタルピアノとアナログストリングスの音色を試したい
- 既存のオシレーターで満足できるレベルのA.Pianoの音色が存在していない(チェックした限り)
- logueSDK 最初の開発なので、長く聴いても飽きない音色を選択
- 音域が広いので、今後の開発の目安になる
- 鍵盤付きのシンセサイザーに3種の神器があることを期待している
※実際のピアノとは多くの違いがあるため、A.Piano(アコースティックピアノ)に聴こえるかどうかの最終判断は聴く側に委ねます。
ターゲットがprologue, minilogue xdの理由
プレイヤーとしてモノシンセを使いこなす自信はあまりなく、ピアノに限らず和音が鳴らせる生楽器のエミュレーションを行いたいため、消去法でxd / drumlogueが残りました。drumlogueはサイズや開発環境(logueSDK 2.x)において、xdより良い面はあります。しかしドラムマシン(ハードウェアは今まで持ったことがありません)名義でのオシレーターの需要がいまいちピンと来ないため、xdで開発することにしました。またアナログパスを通すことで音にどのような変化が期待できるのか?という点にも興味がありました。
注:Nu:Tekt NTS-1 digital kitに関して
バイナリ互換性はありますが、動作環境と仕様に若干違いがあります。そのためにサポートするには動作確認が必須だと考えています。現状、実機を所持していないためターゲットから外してあります。
実機(シンセ)選択
ターゲットから選択肢は、prologue 8/16, minilogue xd, minilogue xd moduleの内のいずれかです。prologueはすでに販売終了で、新品での入手は難しいと思います。それでminilogue xdになり、サイズ的にはモジュールの方が好ましいと考えていました。ただ、ちょうど雑誌FILTER のシンセサイザーデザイン特集でminilogueが取り上げられていたこともあり、形状がより映えそうな鍵盤付きも良いかなと思えました。購入時に価格差がほとんどなかったこともあり、最終的に鍵盤ありのminilogue xdになりました。
filter-synth.jp
minilogue xdを使うほど、prologueの8/16 polyのポリ数が魅力的に思えます。ただ、開発環境としてはサイズ、省エネ、6つのUser Parameterに対しMIDIのNRPNのサポートがある(prologueはなし)こともあり、minilogue xdで正解だと思います。
ポリ数を増やすためだけにmoduleの導入は大袈裟なので、より小型のmoduleが発売されることを期待しています。
※minilogue xdのレビューは別途するかも...(まだ、すべてを使いこなせていませんが...)。
開発環境
ハードとしては、PCと実機 (シンセ)、両者を結ぶケーブル(minilogue xdには含まれていない、USBなら入力Type-B)があれば可能です。ソフトに関してはリンク先を参照して下さい。
korginc.github.io
実機で動作確認をすると、イテレーションがかかり、デバッグがしにくいため、PCにテスト環境を構築するのが一般的だと思います。あるいは、xdのMCU STM32F401xC(CPU:Cortex-M4)に近いマイコンがあるとDSP最適化、パフォーマンス測定などにおいて便利かと思われます。
Linuxでlogue-cliを使う場合の問題点
Linuxだと、logue-cliを使ってOscillator転送時に、あるサイズ(デフォルトなら4KB?)を超えるとtimed outが発生します。解決方法はいくつかあるようですが、amidiで送る方法を採用しています。
実装 (C言語 & Rust)
APIはC言語です。Makefile上では、C++, アセンブリのサポートもあります。非公式のものでRustのフレームワークがいくつかあるのは確認済みですが、CからFFIでRustを呼び出すという単純な実装方式を取ることにしました。主な理由は、Cortex M4での開発が初めて & 久しぶりのMakefileで慣れていないこともあり、公式から離れすぎることに抵抗があったためです。C言語はlogue SDKのコールバック関数とRustを結びつけるのが主な役割で、100行に満たない内容です。
※KORG公式で、今後Rustのサポートがあると嬉しいところ
Rustを使う理由
Rustはメモリ安全性、優れた並行処理などの利点がありますが、logueSDK環境においてこれらの利点を享受できるものではありません。どちらかと言えば、可読性、タイプ量の減少(特にデフォルトImmutable)、単一のファイルタイプ(C++のようにヘッダ、ソースが分離していない)、null安全性などのシンプルな利点のためです。32KBの容量制約のため、試行錯誤をある程度することは容易に想定できました。結果、Rustを用いてタイプ量が少なくなるのはとても助かりました。パフォーマンスに関しては、現状特別なチェックはせず、コンパイラ任せですが、C++よりは劣ると考えいます。とは言え、現状開発しているものに関しては、パフォーマンスより先にメモリの限界が来ているので、特別気にしていません。
テスト環境
こちらはC++ & Rustで実装しています。すべてRustの方が簡潔に書けそうですが、割とFFIを意識した実装がしたかったため、こちらもC系と組み合わせています。フレームワークはSDL2とImGuiを採用しています。

オシレーターサイズ制限 32KB
xdの公式サイトから引用します
RAM的にどんな制限がありますか?
オシレーターに関して、コードと可変領域を含め32KB以内。エフェクトはディレイに関して、最大2MBまで。
このサイズは、CD音質(44.1kHz, 16bit)のモノラル Wavファイルにおいて、約0.372秒のデータに相当します。xdの48kHz, 16bit モノラルでは、約0.341秒です。この容量制限に対応するためにパズルを解くような工夫が必要で、何度か実装の見直しを行っています。

実際のunitファイル (.prlgunit / .mnlgxdunit) はzip アーカイブになるため、32KBより小さなサイズ(ここでは23.8kB)になります。

参考
サンプルプレイバック方式のシンセなので単純に比較する訳にはいきませんが、PCの主要なプラットフォームで長年活躍してきたRolandの音源データgm.dlsのサイズは3.4MBで、Piano1 以外のデータをすべて削除したgm_piano1.dlsは187.5KBになります(コードは含まれない)。


Piano1は、10のモノラルのサンプルで構成されています。
当然ループありで、ピッチが高くなるにつれて、サンプルの長さは短くなります。
PIANO36 0.620秒
PIANOA3 0.220秒
サンプリング周波数は22.05kHz 深度は16bitです。
デモ
Chopin
— Fwmi (@Fwmi3X) 2025年8月16日
Op 69 No.2 Waltz in B minor
今回はアナログを三角波ベースにしています。
単独のminilogue xdですが、Analog/Digitalがマルチティンバーっぽく聴こえる?
(実際に2ティンバーなのはprologue)
※音量バランスが悪い箇所あり(元データのままですが、要調整ですね)
↓ (転調からの動画あり) pic.twitter.com/ynSIGOL59i
Chopin
— Fwmi (@Fwmi3X) 2025年8月27日
Op. 9-1 Nocturne in B Flat Minor
Synth: minilogue xd
※Holdは意図的に削除
Unity6 を最新のものにし、パフォーマンスに関わりそうな部分を調整。目立つ処理落ちはなさそうだし、今回は大丈夫そうと油断していたら、よりによって曲のラストで変な間延びが発生。#ショパン #ノクターン
↓ https://t.co/cLNiuxn2n6 pic.twitter.com/JmZVbjXB1V
今日が9/2だと気付きキュウニ、ショパンのノクターン9-2をアップしようと思い立ちました。
— Fwmi (@Fwmi3X) 2025年9月2日
Chopin
Op. 9-2 Nocturne in E Flat Major
※ペダルありで、なんとか成立しているかな?
minilogue xd
アナログはSawベース(EnvをCutoff, LFOをPitch VCO2に)
ディジタルは自作shinPiano
EffectはREVのみ
↓ pic.twitter.com/2M4WXv3HRT
※他、Xには多数投稿しています(注:古いバージョンの動画もあります)
YAMAHA HQMini鍵盤搭載機種の比較表(主にMIDI)
経緯
YAMAHAのショルダーキーボードSHS-300を購入したところ、Mini鍵盤が、HQ(High Quality)を謳っているだけあり、なかなか好感触でした(ちなみにショルダーキーボードを求めていたのではなく、主にマイコンでテストするためBLE MIDIの機能がある製品を探していました)。現在、デスクのスペースの関係上、ミニ鍵盤の方が好ましく、私には必要十分と思えました。それからHQ Miniが搭載されているキーボードに関して、一通り調べたのでまとめてみます。
対象機種
HQ Mini鍵盤かつMIDIキーボードとして利用できる製品に限定しています。よってMIDI対応ではない、Remie(PSS-E30)、PSS-F30(日本未発売)は対象外です。またVKB-100(SHS-500の元のVocaloid音源のもの)に関しては、表のスペースの都合上載せません。この機種に関してはVocaroid音源が特徴で、SHS-500と外見を含め、似ている箇所が多いですが、オクターブボタン(+1のみ、結果としてNoteの範囲は36-108)などの違いもあります。音源を抜きにして、MIDIキーボードとしてチェックした場合は、価格面からも後発のSHS-500の方が選択されそうなこともあります。
結果として、PSS-A50、Sonogenic(SHS-300, SHS-500)の2機種、refaceシリーズの4機種をスペースの都合上1項目とし、4項目としてまとめます。
比較表
個人的な判断で、注意点は赤字、メリットは青字にしてあります。MIDI以外のチューニング機能など、あまり違いがない部分はあえて記していません。詳細はそれぞれの取扱説明書、MIDIリファレンスを参照して下さい。
| PSS-A50 | SHS-300 | SHS-500 | reface | |
| [鍵盤数] | 37 | 37 | 37 | 37 |
| [MIDI 接続] | ||||
| USB | ✅ | ✅ | ✅ | ✅ |
| BLE | - | ✅ | ✅ | - |
| ミニDIN | - | - | ✅ | ✅ |
| [MIDI 送信] | ||||
| PitchBend | (Motion Ef.) | ✅ Wheel | ✅ Wheel | ✅ Lever (CS/DX) |
| Mod CC1 |
(Motion Ef.) | ✅ Button (0 / 127) |
✅ Wheel | - |
| Sustain CC64 |
✅ Button | ✅ Button | ✅ Button | ✅ Pedal (Half 対応) (CS / DX / CP) |
| Expression CC11 |
(Motion Ef.) | - | - | ✅ Pedal (CS / YC) ※CS 選択式 |
| Portamento CC65 |
✅ Shift + Button | - | ✅ Func → Select Knob |
- |
| Channel | [1, 16] | [1] *1 | [1, 16] | [1, 16] |
| Note | 0-127 | 18-114 | 12-120 | 24-108 |
| Octave | [-4, 4] Button |
[-2, 2] Func + Key |
[-2, 2] Button |
[-2, 2] Lever |
| Transpose | [-12, 12] Shift + Key(-,+) |
[-6, 6] Func + Key |
[-12, 12] Button |
[[-12, 12] (Master) Key ※Ver1.3詳細 |
| [Size / Weight] | ||||
| Width | 506mm | 733mm | 821mm | 530mm |
| Depth | 201mm | 125mm | 121mm | 175mm |
| Height | 54mm | 56mm | 65mm | 60mm |
| Weight | 1.2kg | 1.2kg | 1.5kg | 1.9kg |
| [電源] | USB (microB) | USB (B) | アダプター | アダプター |
| 電源 (電池) | 単3 x4 | 単3 x4 | 単3 x6 | 単3 x6 |
| アルカリ | 18時間 | 15時間 | 10時間 | 5時間 |
| 充電式ニッケル | 15時間 | 12時間 | 8時間 | ? (4時間?) |
| 消費電力 | 1.5W | 2.5W | 3W | 6W |
| [端子] | ||||
| AUX In | - | ✅ 3.5mm | ✅ 3.5mm | ✅ 3.5mm |
| Line Out | - | - | ✅ ¼” Mono | ✅ ¼” L/Mono, R |
| Phones | ✅ 3.5mm | ✅ 3.5mm | ✅ 3.5mm | ✅ ¼” |
| USB Audio | - | - | ✅ 44.1k 16bit | - |
| [アンプ] | 1.4W | 0.7W | 0.7W | 2W x2 |
| [スピーカー] | 8cm | 8cm | 3.6cm | 3cm x2 |
| [音源] | Mono (CC10✘) | Stereo | Stereo | Stereo |
| ボイス | 40 +2(Std, Dance) |
11 +1(Dance) |
28 +2(House, Pow) GM |
- |
| 最大 同時発音数 |
32 | 32 | 48 | 8 (CS / DX) 128 (CP / YC) |
| エフェクト | Chorus Reverb パネル操作✘ |
Chorus Reverb パネル操作✘ |
Chorus Reverb DSP 9種類 |
3-8種類 (機種依存) |
| [他] | Arpeggio Motion Effect Metronome |
JAM (3Mode) | JAM (5Mode) | Phrase Looper (CS / DX) |
| 発売 | 2019/11 | 2019/11 | 2019/3 | 2015/9 (CS / DX) 2015/10 (CP / YC) |
| 実売価格 *2 | 8,890 | 15,080 | 26,555 | 43,700-55,000 |
| *2 2025/4/10調べ | ||||
*1 SHS-300の送信MIDIチャンネルに関しては、、MIDIリファレンスに明らかな間違いがあるので修正しています。
参考
SHS-300に関してはSysExの仕様も抜け落ちているので、詳しく知りたい方は下記引用の"MIDI Reference+"を参照して下さい。Chorus(Flanger含む)/Reverbのタイプを変更できたりします。
(私の方ではCC84 Portamento Controlの動作の確認がとれていませんが...)
reddit "Yamaha Sonogenic SHS-300: There is more to get via MIDI!"
Other than that, I can be able to connect it to my computer and use it as a 16-part tone generator (while it does not fully support GM only the 12 panel voices (11 melodic + 1 Dance drum kit) can be played from MIDI data) however Yamaha does have a MIDI Reference but only the MIDI Implementation Chart. The synthesis engine/chip on the SHS-300 is the YMW830 SWLL which is the same one found on the PSS-A50 which has 42 voices (40 melodic + 2 drum kits). Using MIDI, it's possible to turn off local control and reverb in which you can't do from the SHS-300 panel.
However there's more! Chorus exists, but chorus can't be heard from the panel voices, that is available only from incoming MIDI data and its effect types can be changed via MIDI sysex. I decided to write MIDI Reference+ for the SHS-300 (also with a corrected MIDI Implementation Chart)
雑感
SHS-300については、独立したオクターブボタンがないのがまず残念です。安価なPSS-A50がオクターブとノート範囲に関して最良です。サイズを気にしなければ、機能豊富なSHS-500が一番バランスがとれている気がします。もう少しMIDI機能(MIDI 2.0対応も含め)に焦点をあてた、HQ Mini鍵盤搭載の機種(鍵盤数のバリエーションもあると良い)が発売されることを期待します。
おまけ
Xより(SHS-300の音源)
※音源としては、YMW830 SWLLでPSS-A50(Monoに制限されている)と共通のようです。
YAMAHAのSHS-300での"さくら さくら"です。
— Fwmi (@Fwmi3X) 2025年4月9日
この音源は11音色+ドラム(ダンス)キットしかありませんので、楽器は変更しています。
詳細を続けます。 pic.twitter.com/9oVFYJQ2OM

ついでにエレキよりの5音色のバージョンです。
— Fwmi (@Fwmi3X) 2025年4月9日
(これで10音色、含まれていないのは矩形波リードですが、これは大体想定通りの音) pic.twitter.com/w3EiZIgScV
Scala音律ファイル(.scl) 主要な古典調律のリスト
音律
音律は音階と周波数の対応関係(Mapping)であり、多くの場合、音程の相対的な関係から定められています。これは音楽を構成する土台であり、旋律においては、音階のintervalの違いとして表れ、和音においては、音を構成する上音のうなりの有無により、その響きに影響します。
英語では、Intonation、Temperamentといった用語が使われます。
※ここで扱う音律は、1オクターブ 12音階に限定します。
Scala音律ファイル(.scl)を用いる理由
まずここでのScalaはプログラミング言語ではなく、音律を扱うためのアプリケーションです。
音律データを扱う際に、Scalaの音律ファイル(.scl)を用いる理由は、以下のようなことが挙げられます。
- 可読性(テキスト形式、分数/cent表記)
- 精度(制限なし)
- 豊富なデータ(公式サイト上だけでも5000ファイル超え)
- ツール類の利用
以下、Scalaの公式サイトの最初の段からの引用とその自動翻訳です。
Scala is a powerful software tool for experimentation with musical tunings, such as just intonation scales, equal and historical temperaments, microtonal and macrotonal scales, and non-Western scales. It supports scale creation, editing, comparison, analysis, storage, tuning of electronic instruments, and MIDI file generation and tuning conversion. All this is integrated into a single application with a wide variety of mathematical routines and scale creation methods. Scala is ideal for the exploration of tunings and becoming familiar with the concepts involved. In addition, a very large library of scales is freely available for Scala and can be used for analysis or music creation.
DeepL翻訳
Scalaは、ジャストイントネーション音階、平均律、歴史的平均律、微分音音階、大音音階、非西洋音階など、音楽のチューニングを試すための強力なソフトウェアツールです。音階の作成、編集、比較、分析、保存、電子楽器のチューニング、MIDIファイルの生成とチューニング変換をサポートします。これらすべてが、多種多様な数学的ルーチンと音階作成メソッドを備えた1つのアプリケーションに統合されています。Scalaは、チューニングを探求し、その概念に慣れるのに理想的です。また、Scalaには非常に多くの音階ライブラリが用意されており、分析や音楽制作に自由に利用することができます。
Scalaの使い方に関しては(この記事の主要な焦点ではないため)、他のサイトに任せます。
例とフォーマット
フォーマットはシンプルなテキストファイルなので、直感的に理解できると思います。
例とフォーマットの説明を公式サイトから引用します。
例
! meanquar.scl ! 1/4-comma meantone scale. Pietro Aaron's temperament (1523) 12 ! 76.04900 193.15686 310.26471 5/4 503.42157 579.47057 696.57843 25/16 889.73529 1006.84314 1082.89214 2/1
フォーマット
The rules
- The files are human readable ASCII or 8-bit character text-files. 1)
- The file type is .scl .
- There is one scale per file.
- Lines beginning with an exclamation mark are regarded as comments and are to be ignored.
- The first (non comment) line contains a short description of the scale, but long lines are possible and should not give a read error. The description is only one line. If there is no description, there should be an empty line.
- The second line contains the number of notes. This number indicates the number of lines with pitch values that follow. In principle there is no upper limit to this, but it is allowed to reject files exceeding a certain size. The lower limit is 0, which is possible since degree 0 of 1/1 is implicit. Spaces before or after the number are allowed.
- After that come the pitch values, each on a separate line, either as a ratio or as a value in cents. If the value contains a period, it is a cents value, otherwise a ratio. Ratios are written with a slash, and only one. Integer values with no period or slash should be regarded as such, for example "2" should be taken as "2/1". Numerators and denominators should be supported to at least 231-1 = 2147483647. Anything after a valid pitch value should be ignored. Space or horizontal tab characters are allowed and should be ignored. Negative ratios are meaningless and should give a read error. For a description of cents, go here.
- The first note of 1/1 or 0.0 cents is implicit and not in the files.
- Files for which Scala gives Error in file format are incorrectly formatted. They should give a read error and be rejected.
DeepL翻訳
ルール
- ファイルは人間が読めるASCIIまたは8ビット文字のテキストファイルであること。1)
- ファイルタイプは .scl 。
- 1つのファイルに1つのスケールがあります。
- 感嘆符で始まる行はコメントとみなされ、無視されます。
- 最初の(コメントでない)行には、スケールの短い説明が書かれていますが、長い行も可能であり、読み取りエラーにならないようにしてください。説明は1行のみである。説明がない場合は空行にする。
- 2行目には音符の数が入ります。この数は、その後に続く音価の行数を示します。原則的に上限はありませんが、一定のサイズを超えるファイルを拒否することができます。下限は0ですが、これは1/1の次数0が暗黙の了解なので可能です。数字の前後にスペースを入れてもかまいません。
- その後に、ピッチの値がそれぞれ別の行に、比率またはセント単位の値として記述されます。値にピリオドが含まれる場合はセント単位、そうでない場合は比率単位となります。比率の場合はスラッシュが1つだけ付きます。ピリオドもスラッシュもない整数値は、例えば 「2 」は 「2/1 」とみなされる。分子と分母は、少なくとも231-1 = 2147483647までサポートされるべきである。有効なピッチ値の後は無視されるべきである。スペースや水平タブ文字は許容されるが無視されるべきである。負の比率は無意味であり、読み取りエラーを与えるべきである。セントの説明はこちら。
- 1/1または0.0セントの最初の音符は暗黙的なもので、ファイルにはありません。
- ScalaがファイルフォーマットでErrorを出すファイルは,正しくフォーマットされていません.読み込みエラーとなり,拒否されるはずです。
音律ファイル(.scl)のアーカイブ
上記のリンクの"Scale Archive"にあります。
The scale archive can be freely downloaded. See the contents listing for a brief description of each scale file. The scales are at: http://www.huygens-fokker.org/docs/scales.zip.
※このscales.zipが5000超えの音律ファイルを含む圧縮ファイルになります(容量は小さいけど...)。
古典調律リスト
上記のアーカイブから主な古典調律リストを作成します(近年解釈されるバッハの音律を含む)。リストに含まれていませんが、調査のために探しているものもありますので、以下に挙げておきます。
一応、音律の歴史を流れを上から分かるように整理したつもりです(これは学術上の分類ではなく、個人の解釈によるものです)。カテゴリ内は、なるべく年代順に並ぶようにしてあります。
※ピタゴラス→純正律(系)(Just / Pure)→中全音律(ミーントーン / Meantone)→ウェル・テンペラメント(Well-Temperament)→平均律系(Equal)の流れ
| File | Aria | Description (.sclファイル内の説明) |
| ピタゴラス | ||
| pyth_12 | ✅ | 12-tone Pythagorean scale |
| 純正律(主要3和音同比率) | ||
| malcolm | Header Alexander Malcolm's Monochord (1721), and C major in Yamaha synths, Wilkinson: Tuning In |
|
| euler | Euler's Monochord (a mode of Ellis's duodene) (1739), genus [33355] | |
| marpurg1 | Marpurg's Monochord no.1 (1776) | |
| 純正律系 | ||
| ramis | Monochord of Ramos de Pareja (Ramis de Pareia), Musica practica (1482). 81/80 & 2048/2025. Switched on Bach | |
| kepler1 | Kepler's Monochord no.1, Harmonices Mundi (1619) | |
| kirnberger1 | Kirnberger's temperament 1 (1766) | |
| kirnberger2 | Kirnberger 2: 1/2 synt. comma. "Die Kunst des reinen Satzes" (1774) | |
| 中全音律(ミーントーン) | ||
| meanquar | ✅ | 1/4-comma meantone scale. Pietro Aaron's temp. (1523). 6/5 beats twice 3/2 |
| meanfifth | ✅ | 1/5-comma meantone scale (Verheijen) |
| meansixth | ❌ | 1/6-comma meantone scale (tritonic temperament of Salinas) |
| ウェル・テンペラメント | ||
| werck3 (ヴェルクマイスター) |
✅ | Andreas Werckmeister's temperament III (the most famous one, 1681) |
| rameau | Rameau's modified meantone temperament (1725) | |
| rameau-french | ❓ | Standard French temperament, Rameau version (1726), C. di Veroli, 200 |
| vallotti (ヴァロッティ) |
Vallotti & Young scale (Vallotti version) also known as Tartini-Vallotti (1754) | |
| kirnberger Kirnberger3 (キルンベルガー) |
Kirnberger's well-temperament, also called Kirnberger III, letter to Forkel 1779 Kirnberger 3: 1/4 synt. Comma (1744) |
|
| young1 (ヤング) |
✅ | Thomas Young well temperament no.1 (1800), 1/12 and 3/16 synt. Comma |
| young | Thomas Young well temperament (1807), also Luigi Malerbi nr.2 (1794) | |
| prinz | ✅ | Prinz well-tempermament (1808) |
| broadwood | ❌ | Broadwood's Best (Ellis tuner number 4), Victorian (1885) |
| ウェル・テンペラメント(バッハの解釈) | ||
| kellner | ❌ | Herbert Anton Kellner's Bach tuning. 5 1/5 Pyth. comma and 7 pure fifths |
| lehman2 | ✅ | Bradley Lehman Bach squiggle keyboard temperament II (2005) |
| jobin-bach | Emile Jobin, WTC temperament after Bach's signet | |
| 平均律系 | ||
| galilei | Vincenzo Galilei's approximation | |
※Ariaの欄に関する説明
.sclファイルのリストを探している時に見つけたサイトが以下のAria Playerの音律リストです。
Aria Playerが.sclをどのように作成しているのか不明ですが、Scalaの音律ファイルのアーカイブとは一致しない箇所がありました(注:実際のファイルは未チェック)。それをチェックマークで示しています。ちなみにこのサイトの"werckmeisterIII.scl"はprinzと一致し(実際にprinzはヴェルクマイスター3の派生系)、"young_1799.scl"はyoung1と一致します(1799? 1800?どちらが正しい?)、また"rameau.scl"に関してはもともと厳密な規定はないようなので、?にしてあります。
音律データ
ソフトウェアプログラマーであれば、音律ファイルのフォーマットを理解していれば、データを自由に扱えますが、参考のために音律データも記載しておきます(数値を眺めるだけでも面白いかも?)。
記載するのは、以下の2種類のデータで、平均律からのずれを異なるcent精度、基準を用いて表します。
- 0.1cent単位のCベース
- 1cent単位のAベース
まず1ですが、音律は最低0.1centの精度が、論理的(高周波数におけるうなりの回数)に必要だと考えていますので、そのデータ (C基準なのは.sclに従って)。2はMIDIのMTSの1バイト仕様、あるいはGSのScale / Octave Tuningなどで使用することを想定しています。A基準なのは、基準周波数を440Hzから変更する場合、計算しやすくなるためです。
入力データに関しては、ミスがないように、数値を手で打ち込むようなことはしていません。sclファイルをスクリプトで読み込み、出力をLibreOffice Calc にコピー&ペーストしています。そこからCalcの計算式で1cent単位のデータに変換しています。
また、出力結果の検証はある程度しています。
しかし、あまり有名ではない音律ファイルに関しては、精度上の問題を抜きにしても、Webサイトには別の数値が載っていることもありました。あくまでここに載っているデータは、Scalaの音律ファイルからの対応版になります(もちろん明らかな間違いがありましたら、注釈は入れますのでお知らせ下さい)。
データ1 平均律からのずれ 0.1cent単位(Cベース)
※テキストの色付けは主に純正律、1/4ミーントーンとの比較、データの相違などを強調するためのものです。
| File | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| C | C# | D | D# | E | F | F# | G | G# | A | A# | B | |
| ピタゴラス | ||||||||||||
| pyth_12 | 0.0 | 13.7 | 3.9 | -5.9 | 7.8 | -2.0 | 11.7 | 2.0 | 15.6 | 5.9 | -3.9 | 9.8 |
| 純正律(主要3和音同比率) | ||||||||||||
| malcolm | 0.0 | 11.7 | 3.9 | 15.6 | -13.7 | -2.0 | -9.8 | 2.0 | 13.7 | -15.6 | -3.9 | -11.7 |
| euler | 0.0 | -29.3 | 3.9 | -25.4 | -13.7 | -2.0 | -9.8 | 2.0 | -27.4 | -15.6 | -23.5 | -11.7 |
| marpurg1 | 0.0 | -29.3 | 3.9 | 15.6 | -13.7 | -2.0 | -9.8 | 2.0 | -27.4 | -15.6 | 17.6 | -11.7 |
| 純正律系 | ||||||||||||
| ramis | 0.0 | -7.8 | -17.6 | -5.9 | -13.7 | -2.0 | -9.8 | 2.0 | -7.8 | -15.6 | -3.9 | -11.7 |
| kepler1 | 0.0 | -7.8 | 3.9 | 15.6 | -13.7 | -2.0 | -9.8 | 2.0 | -5.9 | 5.9 | 17.6 | -11.7 |
| kirnberger1 | 0.0 | -9.8 | 3.9 | -5.9 | -13.7 | -2.0 | -9.8 | 2.0 | -7.8 | -4.9 | -3.9 | -11.7 |
| kirnberger2 | 0.0 | -7.8 | 3.9 | -5.9 | -13.7 | -2.0 | -9.8 | 2.0 | -5.9 | -4.9 | -3.9 | -11.7 |
| 中全音律(ミーントーン) | ||||||||||||
| meanquar | 0.0 | -24.0 | -6.8 | 10.3 | -13.7 | 3.4 | -20.5 | -3.4 | -27.4 | -10.3 | 6.8 | -17.1 |
| meanfifth | 0.0 | -16.4 | -4.7 | 7.0 | -9.4 | 2.3 | -14.1 | -2.3 | -18.8 | -7.0 | 4.7 | -11.7 |
| meansixth | 0.0 | -11.4 | -3.3 | 4.9 | -6.5 | 1.6 | -9.8 | -1.6 | -13.0 | -4.9 | 3.3 | -8.1 |
| ウェル・テンペラメント | ||||||||||||
| werck3 | 0.0 | -9.8 | -7.8 | -5.9 | -9.8 | -2.0 | -11.7 | -3.9 | -7.8 | -11.7 | -3.9 | -7.8 |
| rameau | 0.0 | -13.2 | -6.8 | -2.2 | -13.7 | 3.4 | -15.2 | -3.4 | -11.2 | -10.3 | 6.8 | -17.1 |
| rameau-french | 0.0 | -11.7 | -6.8 | -2.0 | -13.7 | 3.4 | -15.2 | -3.4 | -6.8 | -10.3 | 1.5 | -17.1 |
| vallotti | 0.0 | -5.9 | -3.9 | -2.0 | -7.8 | 2.0 | -7.8 | -2.0 | -3.9 | -5.9 | 0.0 | -9.8 |
| kirnberger | 0.0 | -9.8 | -6.8 | -5.9 | -13.7 | -2.0 | -9.8 | -3.4 | -7.8 | -10.3 | -3.9 | -11.7 |
| Kirnberger3 | 0.0 | -7.8 | -6.8 | -5.9 | -13.7 | -2.0 | -9.8 | -3.4 | -5.9 | -10.3 | -3.9 | -11.7 |
| young1 | 0.0 | -6.1 | -4.2 | -2.2 | -8.3 | -0.1 | -8.1 | -2.1 | -4.2 | -6.3 | -0.2 | -8.2 |
| young | 0.0 | -9.8 | -3.9 | -5.9 | -7.8 | -2.0 | -11.7 | -2.0 | -7.8 | -5.9 | -3.9 | -9.8 |
| prinz | 0.0 | -9.8 | -6.8 | -5.9 | -13.7 | -2.0 | -11.7 | -3.4 | -7.8 | -10.3 | -3.9 | -11.7 |
| broadwood | 0.0 | -4.0 | -2.0 | -2.0 | -7.0 | -1.1 | -5.0 | 0.0 | -3.0 | -5.0 | -1.1 | -6.0 |
| ウェル・テンペラメント(バッハの解釈) | ||||||||||||
| kellner | 0.0 | -9.8 | -5.5 | -5.9 | -10.9 | -2.0 | -11.7 | -2.7 | -7.8 | -8.2 | -3.9 | -9.0 |
| lehman2 | 0.0 | -2.0 | -3.9 | -2.0 | -7.8 | 2.0 | -3.9 | -2.0 | -2.0 | -5.9 | -2.0 | -5.9 |
| jobin-bach | 0.0 | -13.2 | -6.8 | -7.6 | -13.7 | -2.0 | -15.2 | -3.4 | -11.2 | -10.3 | -5.6 | -17.1 |
| 平均律系 | ||||||||||||
| galilei | 0.0 | 3.0 | -2.0 | 1.0 | -4.0 | -5.0 | -6.0 | -7.0 | -8.0 | -9.0 | -10.0 | -11.0 |
データ2 平均律からのずれ 1cent単位(Aベース Aを0に調整)
| File | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| C | C# | D | D# | E | F | F# | G | G# | A | A# | B | |
| ピタゴラス | ||||||||||||
| pyth_12 | -6 | 8 | -2 | -12 | 2 | -8 | 6 | -4 | 10 | 0 | -10 | 4 |
| 純正律(主要3和音同比率) | ||||||||||||
| malcolm | 16 | 27 | 20 | 31 | 2 | 14 | 6 | 18 | 29 | 0 | 12 | 4 |
| euler | 16 | -14 | 20 | -10 | 2 | 14 | 6 | 18 | -12 | 0 | -8 | 4 |
| marpurg1 | 16 | -14 | 20 | 31 | 2 | 14 | 6 | 18 | -12 | 0 | 33 | 4 |
| 純正律系 | ||||||||||||
| ramis | 16 | 8 | -2 | 10 | 2 | 14 | 6 | 18 | 8 | 0 | 12 | 4 |
| kepler1 | -6 | -14 | -2 | 10 | -20 | -8 | -16 | -4 | -12 | 0 | 12 | -18 |
| kirnberger1 | 5 | -5 | 9 | -1 | -9 | 3 | -5 | 7 | -3 | 0 | 1 | -7 |
| kirnberger2 | 5 | -3 | 9 | -1 | -9 | 3 | -5 | 7 | -1 | 0 | 1 | -7 |
| 中全音律(ミーントーン) | ||||||||||||
| meanquar | 10 | -14 | 4 | 21 | -3 | 14 | -10 | 7 | -17 | 0 | 17 | -7 |
| meanfifth | 7 | -9 | 2 | 14 | -2 | 9 | -7 | 5 | -12 | 0 | 12 | -5 |
| meansixth | 5 | -7 | 2 | 10 | -2 | 7 | -5 | 3 | -8 | 0 | 8 | -3 |
| ウェル・テンペラメント | ||||||||||||
| werck3 | 12 | 2 | 4 | 6 | 2 | 10 | 0 | 8 | 4 | 0 | 8 | 4 |
| rameau | 10 | -3 | 4 | 8 | -3 | 14 | -5 | 7 | -1 | 0 | 17 | -7 |
| rameau-french | 10 | -1 | 4 | 8 | -3 | 14 | -5 | 7 | 4 | 0 | 12 | -7 |
| vallotti | 6 | 0 | 2 | 4 | -2 | 8 | -2 | 4 | 2 | 0 | 6 | -4 |
| kirnberger | 10 | 1 | 4 | 4 | -3 | 8 | 1 | 7 | 3 | 0 | 6 | -1 |
| Kirnberger3 | 10 | 3 | 4 | 4 | -3 | 8 | 1 | 7 | 4 | 0 | 6 | -1 |
| young1 | 6 | 0 | 2 | 4 | -2 | 6 | -2 | 4 | 2 | 0 | 6 | -2 |
| young | 6 | -4 | 2 | 0 | -2 | 4 | -6 | 4 | -2 | 0 | 2 | -4 |
| prinz | 10 | 1 | 4 | 4 | -3 | 8 | -1 | 7 | 3 | 0 | 6 | -1 |
| broadwood | 5 | 1 | 3 | 3 | -2 | 4 | 0 | 5 | 2 | 0 | 4 | -1 |
| ウェル・テンペラメント(バッハの解釈) | ||||||||||||
| kellner | 8 | -2 | 3 | 2 | -3 | 6 | -4 | 5 | 0 | 0 | 4 | -1 |
| lehman2 | 6 | 4 | 2 | 4 | -2 | 8 | 2 | 4 | 4 | 0 | 4 | 0 |
| jobin-bach | 10 | -3 | 4 | 3 | -3 | 8 | -5 | 7 | -1 | 0 | 5 | -7 |
| 平均律系 | ||||||||||||
| galilei | 9 | 12 | 7 | 10 | 5 | 4 | 3 | 2 | 1 | 0 | -1 | -2 |
ソフトウェアプログラマーのための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
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)
Unit-Synth (SAM2695) その3 Pitch(1cent以下のTuning)
SAM2695 Pitchに関する問題点(経緯)
MIDIでPitchと言えば、Note、Pitch Bend、Portamento、Vibrato、Tuning等々いろいろありますが、ここで取り上げる問題点は主にTuningです。
問題に気づいた最初のきっかけは、M5Unit-Synthのコードを眺めていた時です。
src / M5UnitSynth.cpp
void M5UnitSynth::setTuning(uint8_t channel, uint8_t fine, uint8_t coarse) { uint8_t CMD_CONTROL_CHANGE[] = { (uint8_t)(MIDI_CMD_CONTROL_CHANGE | (channel & 0x0f)), 0x65, 0x00, 0x64, 0x01, 0x06, (uint8_t)(fine & 0x7f)}; sendCMD(CMD_CONTROL_CHANGE, sizeof(CMD_CONTROL_CHANGE)); ... }
引数fine が1バイト? となりました。データシートも見てみましょう。
P27
RPN 0001h
Bnh 65h 00h 64h 01h 06h vv
Fine tuning in cents (vv=00 -100, vv=40h 0, vv=7Fh +100
やはりLSBの記載はありません。vvの範囲を見ると1cent単位の精度が確保できていないことがわかります。
Date Entry LSB未対応
データシートのP26をチェックすると、CTRL 06(Data Entry MSB)に対し、CTRL 38 (Data Entry LSB)の記載がないことが確認できます。
当初、これはデータシートの記載ミスだろうと思いました。
しかし、実際にLSBを送信したところ無反応でした。
※ちなみにテストは同音色をDetuneし、そのうなりで判断しています(テスト用音色にsin波が欲しいところ)。
このことはLSBを使用するChannel Fine TuningとPitch Bend Sensitivityに影響します。
またChannel Fine Tuningは、General MIDI音源の必須項目なので、厳密な意味でGM音源と言えなくなるのでは?という話になります。
Channel Fine Tuning
一応、正しい仕様も見ておきましょう。
この部分はコードで書いた方がわかりやすいので、Cで記述します。
int x = (msb << 7) + lsb; // [0x0000, 0x3fff] float cents = (float)(x - 0x2000) / (float)(0x2000) * 100.0f; // [-100, 100)[cent]
分解能は100/8192(0x2000)で、約0.0122[cent]で、centsの最大値は+99.988[cent]ぐらいになります。
※正確には上下非対称になっている点に注意して下さい。
さて、MSBしか存在しないということは、Channel Fine Tuningにおいて、1cent以下のチューニングができないということになります。ただPitchを変更する方法は他にも存在するので、用途に応じて代替手段を取ることができます。
1cent以下のチューニング 代替手段
以下の表を参考にして下さい。
| マスター(チャンネル共通) | 最小値 | 最大値 | 精度 |
|---|---|---|---|
| GS Master Tune | -100.0 | +100.0 | 0.1 |
※GS Master Tuneは正確に精度0.1であり、上下対称の仕様になっています。
| チャンネル別 | 最小値 | 最大値 | 精度 |
|---|---|---|---|
| GS Scale Tuning | -64 | +63 | 1 |
| GM Pitch Bend | - | - | - |
※Scale TuningはOctave間のTuning機能で、本来は音律の指定に使います
※Pitch Bendの各項目の値は、Pitch Bend Sensitivityの値により変化
取り上げたGS Master Tune, GS Scale Tuningは、GM仕様にも同様の機能があります。
しかし、SAM2695はGM仕様よりGS仕様に準拠している部分が多いので、GM慣れしているとちょっと戸惑うかもしれません。
Unit-Synth (SAM2695) その2 構成&同時発音数
構成
まずデータシートからメインのブロック図を引用します。
P42
8-2 SIGNAL PROCESSING SYNOPTIC
SAM2695 ブロック図
前回説明したようにUnity-Synthの構成上、[Mike] - [Echo]に関しては検証しません。信号の流れは、デフォルト(上図のOutput Selectorの表示通り)で、[MIDI(シンセサイザー)] -> [GS仕様のReverb/Chorus]とMix -> [Dream固有の4Band EQ] -> [Dream固有の3D(Spartial Effect)]となっています。
残念ながら、MIDIシンセサイザーの構成に関する詳細な説明はありません。後述します。
"Reverb / Chorus"はGS仕様で、RolandのSC-88Proに近いですが、パラメータPre-LPFは存在していません。
"EQ"は2x2構成となっており、EQ2(bass/treble), EQ1(med low/high)で表されます。
EQ2のみONの場合 2Band、追加でEQ1をONにすると 4Band となります。
デフォルトでEQは有効になっているので、その値には注意が必要です。
| Level | Frequency | |||||
| Range [dB] | Default | Range [kHz] | Default(HEX) | Default | ||
| EQ2 | Low band (bass) | [-12, 12] | +6dB | [0, 4.7] | 0c | 444.1Hz |
| High band (treble) | [-12, 12] | +6dB | [0, 18.75] | 40 | 9448.8Hz | |
| EQ1 | Med Low band | [-12, 12] | 0dB | [0, 4.2] | 1b | 892.9Hz |
| Med High band | [-12, 12] | 0dB | [0, 4.2] | 72 | 3770.1Hz | |
※Frequency Defaultに関しては、RangeとDefault HEX値から"linear scale"(データシート曰く)で計算しています。実際の動作は未検証です。
"3D"に関しては詳細な図がありますので引用します。
P42
8-3 SPATIAL EFFECT BLOCK DIAGRAM
3D (Spatial effect)
3Dは上記のようなステレオエフェクトになっています。
Unit-Synthの場合、単なるDelayエフェクトという扱いになりそうです。
ちなみにNRPNの表記がありますが、Dream固有のパラメータは "2-1 SPECIAL MIDI MESSAGES" P15- にまとめられていて、NRPNを送信する形で変更可能です。
今後のためにVolume Nrpn 3720hの説明をチェックしておきます。
NRPN #
(High|Low)Description Power-up
Default3720h Spatial Effect volume 0= no effect, 7Fh= maximum effect 00h
Defaultでは、volume = 0で無効です。
何も記載がないMIDIシンセサイザー部分ですが(サンプルプレイバック方式では珍しいことではない)、本格的にパラメータを操作する足がかりになるように少し言及しておきます。シンプルなサンプルプレイバックシンセサイザーは基本的に似た構造を取るので、かの有名なSoundfontの構成と比較してみることにします。
以下、Soundfont2.04の仕様書(sfspec24.pdf)からの引用です。
P48
Soundfont 2.04 シンセ構成図 参考として
作図に不慣れなため、SAM2695に関しては、相違点だけ挙げておきます。これはあくまで"3- DETAILED MIDI IMPLEMENTATION"のパラメータをチェックした上での推測になります。
Modulation LFOの仕様は特殊で、Rateが全チャンネル共通です。パラメータ設定にも記載があります。
P 28
SYSEX F0h 41h 00h 42h 12h 40h 2ph 03h vv xx F7h
Mod lfo1 rate control (default = 40h).
n is don’t care.
Rate is common on all channels
上記の "n" is don't care は typo で、正しくは "p" is don't careです。
(全チャンネル共通は変わりません)
このような仕様になっている理由は、パフォーマンスのための簡略化だと推測しています。
同時発音数
概要を再掲載すると以下のようになっています。
P1
o 64-voice polyphony (without effects)
o 38-voice polyphony + effects
同時発音数38は、Defaultの設定です。
effectsのON/OFFにより、同時発音数は変化します。
Defaultでは、2ボイス仕様の音色は、同時に19音しか鳴らせません(ちょっと心許ないかも...)。
また最大同時発音数を超えた場合の挙動ですが、消音アルゴリズムにより古い音がOFFになります。これは音量の減衰を伴わないため、ノイズの原因になり得ます。
その詳細は、"5- NRPN 0375Fh: Effect on/off – Polyphony selection" P34-で確認できます。
またP35には具体的なエフェクトの組み合わせ例が載っていますが、これが冗長で、間違いも含まれています。一部、抜粋します。
...
30h (REV, CHRのみON) の POLY48は間違いで正しくは47 ...
分かりにくいので、表を作成しました。
| Effect | - | E | REV | CHR | OM (3D) |
M | EQ2 | EQ1 | Any |
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| Hex | - | - | 0x20 | 0x10 | 0x8 | - | 0x2 | 0x1 | |
| -POLY | - | - | -13 | -3 | -1 | - | -4 | -4 | -1 |
| - | E | REV | CHR | (3D) | M | EQ2 | EQ1 | Any | - | POLY | HEX | |
| Max | - | - | - | - | - | - | - | - | 0 | 0 | 64 | 0x0 |
| Default | - | - | -13 | -3 | -1 | - | -4 | -4 | -1 | -26 | 38 | 0x3B |
| お勧め | - | - | -13 | -3 | - | - | -4 | - | -1 | -21 | 43 | 0x32 |
上の表が各EffectをONにした場合、消費発音数(-POLY)を表します。
下の表が設定別の合計消費発音数(-) / 最大同時発音数(POLY) / 設定値の16進バイト表記(HEX)(データシートのNRPN 375F vv)になります。
※EffectのE(ECH)、M(MIC)は入力部分なので、OFF設定で無視(動作も未検証)
※OMはOutput Mode (Spatial effect) ブロック図では、3Dとなっているので、(3D)表記にしています。
※以下の説明にあるように、POLYを1消費する構成がある。(ECH, MICを除いて)確認した限りでは、どのエフェクトでもONになると1消費するので、これを"Any"表記としています。
In some configurations, polyphony is decreased by 1 for reason of internal mixing.
ところで構成で見てきたように、Defaultでは、EQ1のLevelは0dB設定、3DはVolume 0で"no effect"設定になっています。そのため、これらのEffectの有効フラグをOFFにしても、Default設定と音に違いは生じません。上の表のお勧め設定は、これに相当します。
そんな訳で、以下のNRPNコマンドを送れば、同時発音数を5 POLY稼げるということになります。
[0xB0, 0x63, 0x37, 0xB0, 0x62, 0x5F, 0xB0, 0x06, 0x32]
※ここでのチャンネル指定は、何番でもOKです。
Unit-SynthにおけるEQの設定に関する疑問
SAM2695のEQ2のデフォルト値は、チップとして意図的に良い音質を追求した設定値になっているはずです。ただ、Unit-SynthにはDACとスピーカーが含まれていますので、より適した設定値がありそうです。もし詳しい方がいましたら、ご教授頂けると幸いです。
次回はPitchを取り上げる予定です。




