FM音源プログラム TGSTARM 暫定版第2版 readme 2008/4/25 pcm1723 ●はじめに このプログラムは、CQ 出版発行の「デザインウェーブマガジン」誌 2008 年 5 月号付属の STMicroelectronics STM32F103VB マイコン基板 「CQ-STARM」用の暫定版第2版のFM音源プログラムです。 非商用利用のみ許可します。 HEX のみのパッケージと、ソースリスト一式のパッケージがあります。 暫定版ですが、多くの部分は ADuC7026版や、V850版と同様なので、Web サイト http://www.geocities.jp/pcm1723/ のADuC7026版や、V850版の説明を参照してください。 DWM 誌付属の CDROM に含まれている IAR Systems の開発環境「IAR Embedded Workbench for ARM, v.5.11, 32K Kickstart Edition」を使用してコンパイル しています。 暫定1版の Keil 社製開発ツールを使用したバージョンと違って、プログラム 全体を一度にコンパイルできます。 プログラムの機能自体は、ほぼ一緒で、 この版では、ディジタル・リバーブ機能がオンになっていることだけが違います。 含まれている音色データはフリーの「std.sb」から変換したものなので、上記 サイトの記述のように、「MA2 オーサリングツール」付属の音色データと差し 替えることをお勧めします。 ソースファイルの再コンパイルによらず、HEX ファイルの音色データ部分のみを 差し替える方法も用意してあります。 上記サイトの「音色データの差し替え/再コンパイルなしの差し替え」の項 http://www.geocities.jp/pcm1723/compile.htm#fmdata_4 を参照してください。 出来上がりのファイル名は TGSTARM/Debug/Exe/TGSTARMma.hex TGSTARM/Debug/Exe/TGSTARMma2.hex となります。 デフォルトのサンプリング周波数は 18 kHz で、同時発音数は 16 です。 各 MIDI チャンネルとも、モノモード、つまり、1チャンネルあたり1音しか 発音できません。 16 音を同時発音させるためには、16 MIDI チャンネルすべてを使う必要があり、 事実上、シーケンサーによる演奏に限られます。 通常のマルチティンバー音源では、MIDI チャンネル 10 はリズム音源のチャンネル ですが、本機ではリズム音源の機能はありません。 リズムデータを含む演奏データを再生する場合には、MIDI チャンネル 10 をオフ にして、リズムデータを送出しない設定にする必要があります。 暫定版なので LCD/キー入力機能がなく、同時発音数の切り替えは出来ません。 通常の MIDI 入力 (31.25 kbps) と、シリアル MIDI 入力 (38.4 kbps) に対応して います。 プログラムを実行すると LED1 が薄暗く点灯します。 CPU 負荷が小さい時は明るく、負荷が大きい時は暗くなります。 デューティーを測定できるテスターで LED1 のアノード端子側を測定すると、 CPU 負荷率の大体の値が得られます。 ただし、他の CPU ボードと違い、このボードは「H」レベルで LED が点灯する ので、デューティーを測ると、CPU の空きの比率を測定することになり、負荷率と しては 100 % から測定値を引いたものとなります。 負荷率はデモ曲演奏時で 80 % 程度です。 ●ハードウェア 回路図「TGSTARMm.pdf」を、HEX パッケージでは、この「readme.txt」ファイルと 同じフォルダ、ソース・パッケージでは「TGSTARM\sch」フォルダに置いてあります。 オーディオ出力は PWM を利用した DAC で行っています。 PWM の繰り返し周波数は約 70 kHz です。   コネクタ 2 (J2) ピン 10 (PB8) にローパスフィルタをつないでオーディオ出力を取り出します。 Web サイトには LPF の例 (3 次 Sallen-Key アクティブフィルタおよび 3 次 LC パッシブフィルタ)を載せていますが、簡単な一次 RC フィルタでも、PWM 周波数は 可聴周波数域外ですから、耳で聞く限りは問題ありません。 入力は通常の MIDI 入力 (31.25 kbps) と、シリアル MIDI (38.4 kbps) に対応して います。 具体的なインターフェース回路は、Web サイトを参照してください。 インターフェース回路の「RxD」出力を コネクタ 2 (J2) ピン 26 (PA10/USART1_RX) につなぎます。 マイコンは 5V トレラント入力ではありませんから、5V ロジックの出力を直接 つながないように注意してください。 サウンドボート用のいわゆる MIDI ケーブルは +5V 用ですが、GRAVIS ULTRASOUND の MIDI 接続ボックスで試したところ、+3.3V 電源でも動作しました。 回路図の コネクタ 3 (J3) ピン 36 (PC3/ADC12_IN13) に接続する「SENS」信号は、MIDI/シリアル MIDI のボーレート切り替えのためで、 オープンでシリアル MIDI (38.4 kbps)、10 kΩ以下の抵抗を介した GND への接続で 通常の MIDI (31.25 kbps)を選択します。 シリアル MIDI だけを使う場合には、何も接続せず、オープンで構いません。 プログラムを実行すると、デモ曲を 3 曲自動演奏しますから、MIDI 入力はなくても 音は出ます。 ●パッケージ HEX パッケージと、ソース・パッケージを用意してあります。 いずれも、lzh 形式で圧縮されていますので、+Lhaca などのユーティリティーで 解凍してください。 オブジェクトの HEX ファイルは「TGSTARM.s19」です。  このファイルを書き込みます。 まず、「DFU File Maneger」を起動し、.hex ファイルから .dfu ファイルに変換し、 次に「DfuSe Demonstration」を起動してマイコンに書き込んでください。 ●HEX パッケージの内容 licence.txt : ライセンス条件のファイル readme.txt : このファイル TGSTARMm.pdf : 回路図の pdf ファイル TGSTARM.s19 : プログラムの HEX ファイル ●ソース・パッケージの内容 パッケージを解凍すると、「TGSTARM」フォルダの下にファイルが展開されます。 以下では、TGSTARM フォルダを基準に話を進めます・ \TGSTARM | +-- readme.txt : このファイル | +-- licence.txt : ライセンス条件のファイル | +-- \gen_tab : テーブル定義ファイル作成用ツール | | | +-- Makefile : テーブル一括生成のためのメイクファイル | | | +-- *.c : C ソースファイル | | | +-- *.awk : gawk ソースファイル | +-- \src : ソースファイルフォルダ | | | +-- *.c : C ソースファイル | | | +-- *.h : ヘッダ・ファイル | +-- \prj : プロジェクトファイルのフォルダ | | | +-- TGSTARM.* : 各種ファイル | | | +-- \settings : 各種ファイルのフォルダ | | | +-- TGSTARM.* : 各種ファイル | +-- \sch : 回路図のフォルダ | | | +-- TGSTARMm.ce3 : bsch3v で書いた回路図 | | | +-- TGSTARMm.pdf : 回路図の pdf ファイル | +-- \smf : デモ曲の SMF | | | +-- arabesq1.mid : C.A.Debussy: アラベスク第一番 (部分) | | | +-- Chopin66.mid : F.F.Chopin: 幻想即興曲 (部分) | | | +-- invent13.mid : J.S.Bach: インベンション第 13 番 | +-- \Debug    : コンパイラ出力のフォルダ | +-- \List : リストファイルのフォルダ | +-- \Obj : オブジェクトファイルのフォルダ | +-- \Exe : hex ファイルのフォルダ | +-- TGSTARM.hex : FM音源プログラムのオブジェクト ●コンパイル方法 ソースファイルを解凍する場所は、どこでも構いません。 もちろん、パッケージ作成時の環境とは違いますが、ビルド時に修正されます。 ●プログラム本体のコンパイル方法 まず、「IAR Embedded Workbench IDE」のメニューの「File/Open/Workspace...」 で起動されるダイアログで <ファイルを解凍したフォルダ>\TGSTARM\prj\TGSTARM.eww を指定してプロジェクトを開きます。 そして、「Project/Rebuild All」を実行すればコンパイルできます。 このとき、未使用の変数に関する警告が出ますが、問題はありません。