FM音源プログラム TGSH2A 暫定版第1版 readme 2010/05/16 pcm1723 ●はじめに このプログラムは、CQ 出版発行の「インターフェース」誌 2010 年 6 月号 付属の Renesas SH72620 (SH-2A/FPU) マイコン基板「CQ-FRK-SH2A」用の暫定版 第1版のFM音源プログラムです。 非商用利用のみ許可します。 ソースリスト一式のパッケージになっています。 暫定版ですが、多くの部分は ADuC7026版や、V850版と同様なので、Web サイト http://www.geocities.jp/pcm1723/ のADuC7026版や、V850版の説明を参照してください。 含まれている音色データはフリーの「std.sb」から変換したものなので、上記 サイトの記述のように、「MA2 オーサリングツール」付属の音色データと差し 替えることをお勧めします。 ソースファイルの再コンパイルによらず、HEX ファイルの音色データ部分のみを 差し替える方法は、現在用意してありません。 プログラムの SH2A 基板へのダウンロード/実行は HEW の環境から「シリアル 接続 HEW モニタ」を利用して行う方法のみに対応しており、ユーザ Flash ROM に書き込んだり、GCC を利用したりする方法はサポートしていません。 そのため、オブジェクトだけを利用し、ソースをコンパイルをするつもりが なくても、HEW および SHC の開発環境が必要になります。 ●仕様 - SPDIF 出力を介した外付け DAC および、直瑞レ接続した外付けのディジタル・ オーディオ用 16 ビット・シリアル DAC (いわゆる標準フォーマット) に対応 (ノン・オーバーサンプリング DAC の ROHM BU9480F および NEC uPD6376 で 確認、オーバーサンプリング DAC では未確認) - 若松通商製「SPDIF 拡張基板」に対応、SPDIIF 出力と DAC 出力は拡張基板の 回路がそのまま使える (はず) (ただし、SPDIF 拡張基板を所持していないので未確認) - DAC 出力のサンプリング周波数は 48 kHz とニ 44.1 kHz に対応 (外付け水晶振動子/クリスタル・オシレータの周波数に依存、 デフォルトは 24.576 MHz 水晶を使用して 48 kHz サンプリング) - オーディオ用クロックの外付け水晶振動子/ャNリスタル・オシレータ必須 - オーバーサンプリング比はプログラムのコン塔pイル時に 64 fs, 128 fs, 192 fs, 256 fs, 384 fs, 512 fs, 768 fs を選択可能 (デフォルトは 512 fs) - オーバーサンプリング比 512 の場合のみ SPPDIF 出力をサポート (SPDIF 出力は「TOSLINK」光送信モジュール TOTX178 を使って確認) - 波形発生のサンプリング周波数はサンプリン塔Oレートコンバータで 8 kHz, 11.025 kHz, 12 kHz, 22.05 kHz, 24 kHz, 32 kHz, 44.1 kHz, 48 kHz に対応可能だが、現状ではコンパイル時に選んだ周波数に固定 - デフォルトの (波形発生の) サンプリング周波数は 32 kHz で、 同時発音数は 16 各 MIDI チャンネルとも、後着優先のモノモード、つまり、 1チャンネルあたり1音しか発音できない 16 音を同時発音させるためには、16 MIDI チャンネルすべてを使う 必要があり、事実上、シーケンサーによる演奏に限られる - 通常のマルチティンバー音源では、MIDI チャャ塔lル 10 はリズム音源の チャンネルだが、本機ではリズム音源の機能はない  リズムデータを含む演奏データを再生する場合には、MIDI チャンネル 10 を  送信側でオフにして、リズムデータを送出しない設定にする必要がある - フォトカプラを使った通常の MIDI 入力 (311.25 kbps) と、RS-232-C 経由の シリアル MIDI 入力 (38.4 kbps) に対応 - シリアル入力は CQ-BBEL に対応、CQ-BBEL 緒繧フ RS-232-C インターフェースが そのまま使える (はず) (これも CQ-BBEL を持っていないので未確認) ●ハードウェア 回路図「TGSH2A_m.pdf」を「TGSH2A\sch」フォルダに置いてあります。 オーディオ出力は SPDIF 出力および、直接接続した外付けのディジタル・ オーディオ用16 ビット・シリアル DAC に対応しています。 DAC のシリアル・データ入力は、いわゆる「標準フォーマット」の 16 ビット 右詰めです。 SH-2A の周辺モジュールのハードウェアとしては「I2S」 フォーマットにも対応していますが、現状のソフトウェアではサポートして いません。 PWM 出力を利用した DAC 出力はサポートしていないので、外部の DAC を 使わないと音はでません。 回路図には外部ディジタル・オーディオ DAC として、ROHM 製の BU9480F と、 NEC 製のuPD6376 が接続されていますが、これは現状をそのまま書いただけで、 別に、両方つなぐ必要はありません。 DAC 出力のサンプリング周波数は 48 kHz と 44.1 kHz に対応しており、外付けの 水晶振動子/クリスタル・オシレータの周波数は特定の値に制限されますが、 ある程度はコンパイル時の設定により変更できます。 デフォルトの設定では、 - オーバーサンプリング比 512 - AUDIO_X1, AUDIO_X2 端子に 24.576 MHz の水晶振動子を接続 (SH2A 基板の「X4」に実装) - DAC 出力のサンプリング周波数は 48 kHz - SPDIF 出力は有効 になっています。 SPDIF 出力には TOSLINK 光送信モジュール TOTX178 を使用して、光ケーブルに よる接続で出力されることを確認してあります。 オーディオクロックは「X4」に水晶振動子を実装するほかに、AUDIO_CLK 入力 (コネクタ CN2 - 29 ピン) にクリスタル・オシレータを接続する方法もあります。 ただし、後述するようにソースを書き換えてコンパイルしなおす必要があります。 オーディオ・クロックとして使う水晶振動子/クリスタル・オシレータの周波数と オーバーサンプリング比、サンプリング周波数を表にまとめると下のようになります。 +---------+-----*------+----+-------+----+ | 周波数 |倍率 | fs | WL | SPDIF | X4 | | (MHz) | |(kHz) | | | | +---------+-----*------+----+-------+----+ | 2.048 | 64 | 32 | 64 | x | x | | 2.8224 | 64 | 44.1 | 64 | x | x | | 3.072 | 64 | 48 | 64 | x | x | +---------+-----*------+----+-------+----+ | 4.096 | 128 | 32 | 64 | x | x | | 5.6448 | 128 | 44.1 | 64 | x | x | | 6.144 | 128 | 48 | 64 | x | x | +---------+-----*------+----+-------+----+ | 6.144 | 192 | 32 | 48 | x | x | | 8.4672 | 192 | 44.1 | 48 | x | x | | 9.216 | 192 | 48 | 48 | x | x | +---------+-----*------+----+-------+----+ | 8.192 | 256 | 32 | 64 | x | x | | 11.2896 | 256 | 44.1 | 64 | x | o | | 12.288 | 256 | 48 | 64 | x | o | +---------+-----*------+----+-------+----+ | 12.288 | 384 | 32 | 48 | x | o | | 16.9344 | 384 | 44.1 | 48 | x | o | | 18.432 | 384 | 48 | 48 | x | o | +---------+-----*------+----+-------+----+ | 16.384 | 512 | 32 | 64 | o | o | | 22.5792 | 512 | 44.1 | 64 | o | o | | 24.576 | 512 | 48 | 64 | o | o | +---------+-----*------+----+-------+----+ | 24.576 | 768 | 32 | 48 | x | o | +---------+-----*------+----+-------+----+ 「WL」のカラムは、オーディオ・サンプル当たりのビットクロック数で、「64」は 1 チャンネル当たり 32 クロック、「48」は 1 チャンネル当たり 24 クロックの設定に なることを示しています。 「SPDIF」のカラムは SPDIF モジュールが有効になる組み合わせを示しています。 現在のところ、SPDIF モジュールを 512 fs 以外のクロックで動作させる方法は 見つかっていないので、SPDIF を使いたいのであれば、 - 48 kHz サンプリングには 24.576 MHz の水晶/オシレータ - 44.1 kHz サンプリングには 22.5792 MHz の水晶/オシレータ - 32 kHz サンプリングには 16.384 MHz の水晶/オシレータ を使う以外の選択肢はありません。 「X4」のカラムは、AUDIO_X1, AUDIO_X2 に接続して発振可能な範囲の周波数 (10 〜 25 MHz)であるかどうかを示しています。 表には 32 kHz サンプリングの場合も載せましたが、現状の FM 音源プログラムでは DAC 出力サンプリング周波数として 32 kHz はサポートしていません。 入力は通常の MIDI 入力 (31.25 kbps) と、シリアル MIDI (38.4 kbps) に対応して います。 具体的なインターフェース回路は、冒頭に挙げた Web サイトを参照して ください。 回路図の コネクタ 2 (CN2) ピン 26 (PJ3) に接続する「SENS」信号は、MIDI/シリアル MIDI のボーレート切り替えのためで、 「H」レベルででシリアル MIDI (38.4 kbps)、「L」レベルで通常の MIDI (31.25 kbps) を選択します。 プログラムを実行すると、デモ曲を 3 曲自動演奏しますから、MIDI 入力はなくても 音は出ます。 ●開発環境の準備 開発環境はインターフェース本誌の説明の通り、Renesas の Web サイトから (無償評価版) SuperH ファミリ用 C/C++ コンパイラパッケージ V.9.03 Release 02 をダウンロード/インストールし、さらに SuperH ファミリ用 Device File Updater V.1.07 もダウンロード/インストールして使用します。 さらに、CQ 出版のサイトから、 シリアル接続 HEW モニタ SH-2Aマイコン基板対応仮想シリアルWindows用ドライバ もダウンロード/インストールする必要があります。 インストール方法などについてはインターフェース本誌や、各パッケージに付属の README ファイルなどを参照してください。 SH-2A マイコン基板実装 SPI シリアル接続フラッシュ ROM については、アップデート していない状態で使っています。 アップデート後のフラッシュ ROM の状態では テストしてありません。 ●パッケージ ソース・パッケージは zip 形式で圧縮されていますので、Windows XP 以降なら OS の機能で 解凍できます。 ソースファイルを解凍する場所は、どこでも構いません。 もちろん、パッケージ作成時の環境とは違いますが、HEW 立ち上げ時に 「このワークスペースのディレクトリが移動されました。」 というダイアログが開き、「はい」をクリックすると修正されます。 ダウンロード・モジュールは「TGSH2A.abs」です。  このファイルを書き込みます。 ●プログラムの実行方法 HEW のワークスペース・ファイル「.hws」の関連付けが行われていれば、展開したフォルダ上で \TGSH2A\prj\SH2A\TGSH2A.hws をダブル・クリックすれば HEW が立ち上がり、ワークスペースが開かれます。 HEW の画面左上側の「ワークスペースウィンドウ内の「Download Modules」フォルダの下の TGSH2A.abs をダブル・クリックすれば、SH2A 基板にプログラムがダウンロードされます。 プログラムで使用しているテーブルのサイズが大きいのでダウンロードに少し時間がかかり ますが、それで正常です。 あとは、HEW のメニューから 「デバッグ」→「リセット後実行」 でプログラムの実行が開始され、デモ曲の演奏が始まるはずです。 ●ソース・パッケージの内容 パッケージを解凍すると、「TGSH2A」フォルダの下にファイルが展開されます。 以下では、TGSH2A フォルダを基準に話を進めます・ \TGSH2A | +-- readme.txt : このファイル | +-- licence.txt : ライセンス条件のファイル | +-- \gen_tab : テーブル定義ファイル作成用ツール | | | +-- Makefile : テーブル一括生成のためのメイクファイル | | | +-- *.c : C ソースファイル | | | +-- *.awk : gawk ソースファイル | +-- \src : ソースファイルフォルダ | | | +-- \common : 各マイコンに共通なソース | | | | | +-- *.c : C ソースファイル | | | | | +-- *.h : ヘッダ・ファイル | | | +-- \SH2A : SH-2A に特有なソース | | | +-- *.c : C ソースファイル | | | +-- *.h : ヘッダ・ファイル | +-- \prj : プロジェクトファイルのフォルダ | | | +-- \SH2A : SH-2A 用のプロジェクト | | | +-- TGSH2A.* : ワークスペース/プロジェクト関連ファイル | | | +-- \TGSH2A : 各種ファイルのフォルダ | | | +-- TGSH2A.* : ワークスペース/プロジェクト関連ファイル | | | +-- \Debug : オブジェクトのフォルダ | | | +-- TGSH2A.abs : ダウンロード・モジュール | | | +-- *.* : 各種ファイル | +-- \sch : 回路図のフォルダ | | | +-- TGSH2A_m.ce3 : bsch3v で書いた回路図 | | | +-- TGSH2A_m.pdf : 回路図の pdf ファイル | +-- \smf : デモ曲の SMF | +-- arabesq1.mid : C.A.Debussy: アラベスク第一番 (部分) | +-- Chopin66.mid : F.F.Chopin: 幻想即興曲 (部分) | +-- invent13.mid : J.S.Bach: インベンション第 13 番 ●コンパイル方法 HEW を起動して、(もし、あれば) ソースに必要な修正を施し、メニューから 「ビルド」→「ビルド」 と選べばコンパイルできます。 サイズ削減のため、ソース・パッケージからライブラリは削除してあるので、ビルドすると、 ライブラリの再構築から実行され、少し時間がかかります。 「0 Errors, 0 Warnings」となれば正常です。 ●コンパイル時のオプション 「TGSH2A.h」ファイル中の #define で設定する値によってプログラムの構成を変更することができます。 定数名 意味 設定可能値 デフォルト OVS_FACTOR オーバーサンプリング比 64, 128, 192, 256,                      384, 512, 768 512 USE_SPDIF_EN SPDIF 拡張基板の 有効 有効 SPDIF_EN 信号のサポート     コメントアウト SRC_OFS DAC 出力のサンプリング周波数 0 = 44.1 kHz,                          1 = 48 kHz 1 = 48 kHz USE_AUDIO_CLK オーディオクロック入力切り替え 0 = AUDIO_X1,                          1 = AUDIO_CLK 0 = AUDIO_X1