FM音源プログラム
現状の RX62N 用FM音源プログラムでは、下の図に示すような簡単な「ディジタル・リバーブ」を内蔵しています。 しかし、処理の簡略化のため、「リバーブ」というより、実際は「フィードバック・ディレイ」による「エコー」になっています。 ディレイ部分は…
ステレオ (パンポット) 対応および SMF シーケンサを組み込んだ RX62N 用FM音源プログラム V 1.2 を (→こちら) に置きました。
ステレオ (パンポット) 対応および SMF シーケンサを組み込んだ RX62N 用FM音源プログラムは V 1.2 として公開予定ですが、プログラム本体の公開の前に、デモ演奏 (トビュッシーの「アラベスク第一番」) のファイルを Web サイト (→こちら) に置きました。…
これまで、FM音源プログラムを各種のマイコンに対して移植してきましたが、変更部分は各マイコン固有の差異を吸収する記述、比率で言えば 10 % 程度に限られていました。 音源としての機能本体部分のプログラムについては、この 3 〜 4 年に渡って全く手を…
フル機能版の TGRX62N プログラムを (→こちら) に置きました。 ATtiny2313 版の LCD インターフェースもうまく動作しました。 回路図およびプログラムを下に示します。
RX62N 基板にキャラクタ LCD / 入力スイッチをつなぐのに、どういう方法をとろうか迷っていましたが、8 ビット MCU を介在させて接続することにしました。 LCD 表示させた基板の写真を下に示します。
RX62N 版FM音源プログラムの「実力」を見るために、プログラムの同時発音数を増やす変更を行い、調べた結果、次のようになりました。 fs 同時発音数 24 kHz 32 30 kHz 25 32 kHz 24 40 kHz 18 48 kHz 15 現在は、まだ、プログラム中に「ボイス・アサイナ」…
暫定版の TGRX62N プログラムを (→こちら) に置きました。 この基板の標準的な利用方法としては、「シリアル接続 HEW モニタ」をあらかじめ書き込んでおいて、対象のプログラムを 64 Kバイト RAM 上にダウンロード / 実行 / デバッグする方法が想定されてい…
「インターフェース」誌 2011 年 5 月号付属の RX62N マイコン基板用のFM音源プログラムを、いつもの「暫定版」のレベルですが作成しました。 プログラム名は「TGRX62N」としました。 「意外」にも、BU9480F 用の「手抜き」出力ルーチンを使用した場合で、…
各プロセッサ用のFM音源プログラムの処理能力を表にまとめてみました。 本来は、サンプリング周波数 (fs) 、同時発音数 (NPOLY) をそろえて、CPU 負荷率で比較するのが良いのですが、そうなってはいません。 現状のプログラムでは、同時発音数 16 がリミッ…
STMicroelectronics 製 STM32 Value Line Discovery 用の暫定版の FM 音源プログラム「TGSTMVL」を作りました。 (→こちら) に置いてあります。 内蔵の 12 ビット DAC による出力と、いつもの BU9480F による 16 ビット・ディジタル・オーディオ用 DAC による…
「ノートオン・カウント」を導入したシングル・アサイン・アルゴリズムでの「同音連打」の例を示します。 まず、ノートオン・カウントを書き加えた初期状態の図を下に示します。 「@1」のように表示してあるのがノートオン・カウントです。
今回は「シングル・アサイン」の場合を考えます。 シングル・アサインの場合には、同じ MIDI チャンネル、同じ音程の音に対しては、2つ以上のボイスを割り当てることはありません。 したがって、ノートオン・メッセージに対して、アクティブ・キューと、ホ…
「マルチ・アサイン」設定では、「同音連打」に対しても普通の音と同様に扱い、特別なことはしていません。 したがって、前の説明で尽くされていますが、一応、同音連打の場合についても簡単に説明しておきます。 まず、下の初期状態から始めます。
ボイスを「再利用」する実際的なアルゴリズムは次のようになります。 「同音連打」に対しては「マルチ・アサイン」を仮定しています。 入力データの同時発音数が、ハードウェアの同時発音数を越える場合については考慮してありません。
今回からは、リソースに制限のある現実の場合について考えます。 まず、2048 要素の 2 次元配列を用意するのは非現実的ですから、MIDI チャンネル番号か、ノート番号かの 1 次元配列に縮小することを考えます。 この場合、MIDI チャンネル番号をインデクスと…
グランド・ピアノには 3 本、アップライト・ピアノには 2 本か 3 本の「べダル」がありますが、その一番右側のべダルが「ダンパー・ペダル」で、そのダンパー・ペダルを踏み込むと、すべてのダンパー (damper) が一斉に持ち上がり、鍵盤を離してもすぐに音が…
前回の例では、同音連打でも、ノートオン/ノートオフ・メッセージが直接に1対1対応していて、ふたつの独立した音となっていましたが、可能性としては、MIDI データ上で、下の図のように、最初のノートオン (Note_ON1) の後にノートオフが来ないで、別のノ…
ボイス・アサイナを考える最初の段階として、実現可能性はともかく、プログラムおよびハードウェアのリソース (資源) が制約なく、無限に使える場合について検討してみます。 到着した MIDI ノートオン・メッセージ1個に対応して、1個の音を発音させるのが…
タイトルの「(ダイナミック) ボイス・アサイナ」(Dynamic Voice Assigner) とは、限られた数の「発音エレメント」(これをこの話題では「ボイス」と呼ぶことにします)を、各チャンネルの MIDI ノートオン・メッセージに対して、固定的ではなく、動的に柔軟に…
秋月で ATmega328P の取り扱いが始まりました。 単価 250 円 と安価なので、ATmega を使った FM 音源プログラムの対象デバイスを ATmega168 から ATmega328P に変えることにしました。 プログラム・メモリが 32 K バイトに倍増しているので、168 では共存で…
「FMmelody」で、DAC に μPD6376 (NEC) を使った場合にも正常に動作することを確認しました。 確認方法はハンダごても使わず、非常に横着な方法を取りました。
少し間があいてしまいましたが、スケッチ「FMmelody」のプログラムの説明に入りたいと思います。 まずは、ファイル構成と、各ファイルの簡単な説明からです。
6/29 日付けの記事のコメントにあるように、ATmega168P や ATmega328 などの「新しい」チップでエラーが出てコンパイルがうまくいかないという問題に対応して、修正を施したものを 2009/07/01 版として Web 上のファイルを置き換えました。 修正したのは「No…
9 ビット Fast PWM モードを使った 2009/6/26 版の FMmelody スケッチでは、出力波形のひずみが大きくなるという問題があったので、8 ビット Phase Correct PWM モードに変更し、 2009/6/29 版としてリリースしました。 6/26 日付けの記事と、Web 上のスケッ…
Arduino IDE 付属のサンプル・スケッチ「Melody」を FM 音源版にしたスケッチ「FMmelody」を (→こちら) におきました。 解凍してできた「FMmelody」フォルダ (とそれに含まれるファイル) をご使用中の「スケッチ・ブック」のフォルダにコピーしてご利用くだ…
やっと OPL3 チップ (YMF262) が載った ISA サウンド・カードを再稼動させて、EG 波形を見ることが出来ました。 下にその画面を示します。
MA2 オーサリング・ツールに内蔵されている MA-2 エミュレータ (ソフトウェア音源) で発音させた時のエンベロープは、下の画面のようにアタック部分が直線状になります。
3 月 25 日発売のインターフェース 5 月号には、富士通の FR60 シリーズのマイコン MB91FV310A の基板が付属します。 当然、この基板へのFM音源プログラムの移植を考えています。 インターフェース誌は定期購読しているので、一般の発売日より 2〜3 日早く…