dexed
YAMAHA DX7クローンFM音源
dexedは実機の再現度が高く、登場以来評価され続けている。 オープンソースの開発は、ややスローペースで、たまーに更新される。 それでも最新版ではCLAP対応になった。しかしいろいろ不具合はあるね。 それにしてもDX7のオリジナルパッチが、そのまま読み込めてしまうのはありがたい。 当時の音がかなりのレベルで再現できるというところに価値がある! 現状ではポルタメントはできないものの、様々な用途で実用になるプラグインだと思う。
https://asb2m10.github.io/dexed/
Version 0.9.8 (Oct 9 2024)
下はオリジナルDX7。80年代を代表するシンセでデザインも時代を感じさせる。本体は写真では黒に見えるが、こげ茶。独特なボタンの色がいい。今時のシンセと違い、モノラルでエフェクト非搭載。同時発音数は当時としては多い16音。12bitで生成されている。
実は初音ミクのデザインモチーフはDX7で、カラーはモロです。世界一売れたシンセと世界一売れたボカロですね。・・・後からWikiを見たら、世界一売れたシンセはKorgのM1ぽい。それでもDX7は10万台以上売れたとか。ただDX7のバリエーションもあるし、DXシリーズもあるので、トータルではすごい数になるはず。
FM音源の情報は意外とある
音のつくり方を調べようと思って、ネットを検索すると、世界中にDX7マニアがいることがわかった。当時の音色データも入手可能。 FM音源についても情報は意外と豊富で、日本語の解説もあちこちに存在する。YAMAHAでDX7のマニュアルも入手可能。 これならあまり苦労しないかも。
https://jp.yamaha.com/products/music_production/synthesizers/dx7/downloads.html#product-tabs
また最近ヤマハがreface DXなどを発売していて、かつてのDXユーザーを喜ばしているようだ。 それにしても、この10年ぐらいシンセの進むべき方向が見えないで迷走しているようにも見えるが・・・
付属ROMの音
DX7と言えばエレピの音が有名で、当時のポップスでは頻繁に使われていた。まずは、その音を聞いてみたいのでネット上からDX7のROMデータを入手してみた。DX7本体に内蔵されている音色は以下の32音。
本体内蔵音色は電池が切れると消えてしまうようで、カートリッジROM(64音色)が付属されていたようだ。本体の読み込めるのは32音色なので、カートリッジはカセットやレコードのようにA(32音色),B(32音色)に分けてある。dexedに読み込める当時のROMデータを貼っておきます。
下サンプルは有名な11番のE.PIANOをDEXEDで再現してみたもの。録音に失敗して音が割れてしまったが・・・まぁなかなかいい音。ちなみにすっぴんの音ではない。DX7はモノラルでリバーブのようなエフェクトも搭載されてない。だからすっぴんでは、あれ?という音になるので、エフェクトは必須。
次はエフェクトなしで、25番のTUB BELLSの鐘音を使った学校のチャイムを真似てみた。FMならではの音という感じ。このチャイムは本来アコースティックだけど、80年代から徐々にFM音源になったようだ。現在はPCMかな?
DEXEDの使い方
音作りの前に音色の保存について。DEXEDは説明書のようなものがなくて、はじめ音色のコピーすら判らなかった。 方法はCARTボタンを押して、下のようなウィンドウを開く。下のリストは内蔵音色に相当する現在アクティブな音色。syxファイルをダブルクリックするとロードされる。横リストはワンクリックすることで、表示されるリストで、ロードはされない。この横リストから、下リストへドラッグ&ドロップすることで、内蔵音色に追加することができる。
DEXEDのパネル説明
下はDEXED独自の部分。音色の切替や、保存などもここで行う。
- tune:チューニング。設定値の表示がどこにも出ないので、別途メーターで確認する必要がありそう。
- cutoffとreso(レゾナンス)が特徴。出すぎた高域を削ったり、そのポイントに特性を持たせることができる。cutoffで周波数を決め、resoで、その周波数の音色変化をコントロール。 両つまみ共表示がないので、感覚でいじるしかない。
- level:出力音量の調整。これも表示なし。
- middle Cと書かれたノブは、基準となる音の設定。トランスポーズとして利用可能。C1~C5まで可変。
- monoスイッチはONにすると単音モードとなる。音程がスムーズに変化するポルタメントは、かかっている様子はない。MIDIで制御すれば可能か? それでも二つ目の音のアタックは消えるので、ベースなどではmonoで使った方が雰囲気は出ると思う。
- CART:音色ファイルを読み込むときに使用。
- PARM:ホイールなどのMIDI設定、エンジンの切り替え等。
下はEngine Resolutionを切り替えた時の音。Modern(24bit)、MarkI(10bit)、OPL(8bit)の順になっている。段々とノイズとともに高域成分が増えているのが分かると思う。Mark Iが一番オリジナルDX7に近いと書いてある。 - INIT:現在の音色を初期設定にするボタン。アルゴリズムは1に設定され、各OPは基本設定になる。
- STORE:音色を保存するときに使用。
オペレータ
- det(デチューン)(±7セント)は基準周波数に対してセント単位でピッチを微調整するノブ。セントは半音を1/100にした単位。
- coarse(0.5,1~31)は基準音ピッチの設定。横のスイッチをratioにすると、基準ピッチに対して倍音の関係になる。1が基準で、0.5ならオクターブ下。2ならオクターブ上という具合。ただ完全な倍音で、平均率とはずいぶん違っているので注意。
- fixedになると固定周波数になる。
- fineはピッチをプラス方向で調整することが可能。coarseで設定した値の約2倍まで調整可能。例えばcoarseが1の場合は0.01単位で、1.99までプラスでき、coarseが2の場合は、3.98まで調整できる。つまりcoarse3を超えてしまう。 基本的には現在のcoarseから次のcoarseの間にしたいときに使うもの。
オシレーター番号横の上下スイッチはオシレータのON/OFFスイッチ。
EG(エンベロープジェネレーター)は8個のノブで構成されている。 - EG levelは4つのポイントでの音量設定(0~99)。
Level1は音の立ち上がりのレベルとなる。
Level2は2つ目の立ち上がりで、うまく使うと様々な効果が得られる。
Level3だけは点ではなく線で、鍵盤を押し込んだ状態の音量となる。
level4は鳴り始めと同じになるので、キャリアでは、0が基本で、それ以外は特殊な使い方。 - EG rateは、時間軸に対しての調整になるが、数字が大きいほど短いなど、やや挙動がわかりにくいので、いじって慣れるしかない。ここでの設定は相対的なもので、絶対時間ではない。rate scalingで最終的な時間を決定する。
rate1は音の立ち上がりまでの時間。
rate2はLevel1とLevel2までの時間。
rate3は、Level2からLevel3までの時間。この先は鍵盤を押している間鳴っている。
rate4は鍵盤を離してから音が消えるまでの時間に相当する。 - A mod sensは、共通LFOにあるAMDの感度調整。0~3の4段階。数字が大きくなるほど感度がよくなる。
- key velは、キーボードからの入力ベロシティを調整する。0~7の8段階。0にするとベロシティが無効化される。 下がベロシティ0から127まで順次弾いた場合、key velの設定でどう変化するかを視覚化してみた。 ポイントは、vel127のとき、最大音量が感度によって違うということ。
- levelは、オシレーターの出力レベル。0~99の100段階。
右下のスライダー break point(A-1~C8 音名をヤマハ式で表示。国際式ではない。) 鍵盤の基準位置を決めるもの。このパラメーターはEG levelの効き具合を音域ごとに変化させるためのもの。 ピアノなどでは、中央の音に対して、高域は音量があまり出ず、倍音構成も変化する。こういう生楽器らしい音域ごとの違いを作り出すことができる。
DX7のエレピが評価されたのは、この部分があるから。不思議なのは多くのシンセではこういう部分がないか、あっても簡易的。あれではピアノの音は作れない。 - L depth、R depth(0-99)でカーブに応じた調整を行う。カーブはいくつか選べる。depthを0にすると、カーブは水平になり効果はなくなる。99にすると、カーブそのものとなる。
下は説明書にあった図。
上段はbreak pointをC3(国際式C4)に設定して、L,Rともに-EX99にしたものを76鍵分録音。 下段は-LNにして、他は同じ設定。 ベロシティ全て64で打ち込んで試したものだが、音量が変化しているのが分かると思う。表示はdB。 1鍵盤ごとに音量が変化するのではなく、3鍵ごとだった。結構アバウトなのね。
Breakpointの位置が図のように2音低いように思える。
下図はVel64で、-EX99の場合、どこまで行ったら音が消えるかの実験。大体5オクターブ先で音が消えるようだ。 低域+LNの設定。ちゃんと低域が直線で盛り上がっている。ただキャリアのレベルは要注意で、マックスになっていると頭打ちしてしまう。 低域+EXの設定。break pointを高めのC5ぐらいにしないと低域での増幅の確認ができないのが注意点。 下図はC1で-LNにしたもの。上から感度だけを変えている。カーブが急になっていくのがわかる。 - rate scalingは、0~7の8段階でrate設定の時間軸を伸縮を行う。7にすると時間軸は最大圧縮される。これも感覚とは逆なので、あれ?って思う。音作りの時は、スケーリングを0など、長めにして、立ち上がりなどの微調整をし、その後に本来のスケーリングにするといいかも。 あと、このノブの場所がカーブ表示の間にあるというのは違和感がある。
アルゴリズム
32のアルゴリズムが用意されていて、algorithmつまみを回すことで選択することで利用する。 アルゴリズムとは、6個のオシレーターの組み合わせ方法のこと。絵で言うと下から出力されるイメージ。下の32番のアルゴリズムは6つが並列なので、お互い何のかかわりもなく出力されることになる。上下に積み重なっている場合は変調される。四角く囲まれているところはフィードバック可能なオシレーター。 feedbackつまみは0~7の8段階で調整可能。
アルゴリズムの一覧。
LFO
各オシレータに共通のLFO。主に音の揺れなどを設定する部分。
カーブは以下のものが使える。
- P mod sensはPMDの効き具合の調整。ここで調整すると全オペレータに適用される。
- speedは、揺れ周期の速度を決める。
- delayは揺れ始めの時間を設定する。
- PMDはピッチの揺れ幅の調整。
- AMDは音量の揺れ幅の調整。これは、さらに各オペレータにあるA mod sensで調整する必要がある。つまりオペレータごとに個別に設定できる。
- LFO key sync これをONにするとLFOは常に一定の位相からはじまる。分かりやすくサンプルを作ってみた。LFOの周期を長くし、揺れを大きくし、8分で連打していく。ONだと常に出始めは同じなので、揺れを感じることはない。 OFFにすると、下のようにLFOの揺れを明確に感じられる。
- OSC key sync これがONだとOSC発音波形は位相0から発振。下図のようにきれいにはじまる。 OFFにすると下図のように適当に始まるので、通常はONにしておくべき。
P EG
ピッチEG(エンベロープジェネレータ)。各オシレータにおいて、発音から消えるまでのピッチを管理するためのパラメーター。ピッチのある楽器音色にはあまり積極的に使うことはないが、出だしのピッチをわずかに変化させたいとか、打楽器、効果音などでは様々な効果が期待できる。
基本的にはオシレータのEGと同じ設定項目だが、levelは音量ではなくピッチなる。4に関しては、やや特殊で、最後の音のピッチと最初の音のピッチは同じになるようだ。 下サンプルは、P EG level 1のみを99にし、他はデフォルトのまま。ピッチを最大に上げてみた。サイン波C4を鳴らした場合、0.5secかけてC8(4オクターブ上)までピッチが上がり、一気に下がってC4に安定。
上の状態からP EG rate1を0にすると、約40秒かけて上がった。
基本となるサイン波の作成
まずは、基本となるサイン波だけを作ってみる。 アルゴリズム32を選択して、6のオシレータのみを使用。他のオシレータはOFFにするか、levelを最小にする。 設定は以下のような感じで、純粋なサイン波だけを出力するようにした。
出来た音(A 440Hz)は、こんな感じで、音の出始めと終わりでプチッと音が出てしまう。これをなくすにはEG rateの調整が必要。
修正した音はこんな風になる。プチ音がなくなっている。上記との違いは、EG rate1 = 70、EG rate4 = 60。
これでは面白みがないので、まずオシレータの中の設定をいじってみる。減衰する音にしてみた。
この音にエフェクトを掛けるだけで、そこそこ使えるようになる。
オシレーター以外のP EG をいじってみる。効果音的な使い方をするならあり。
LFOでモジュレーションをかけて揺れを作ってみる。極端にPMDだけを最大にして使った場合。ピッチだけが揺れる。
次にAMDだけを最大にして使った場合。これは音量が揺れる。
PMD、AMD両方を最大にして使った場合。ピッチ、音量共に揺れる。
もう少し音楽的にする場合は、PMD,AMD共にひかえめにして、音がしてから、しばらくして揺れるような設定にすると楽器ぽさが出てくる。
フィードバックを使ってみる。設定を素のサイン波に戻して、フィードバックを4にしてみる。倍音が増えて音色ががらりと変わる。
こういう音ならアンサンブルの中でも音が通るようになる。
フィードバックを上げて行くとホワイトノイズも作り出せる。ホワイトノイズを作り出したい場合は、fixedにして周波数を固定した方がそれっぽい。