配布パッケージの構成 / フラッシュ書込み方法 / コンパイル方法 など
● 配布ソフトウェアのフォルダ構成
各版とも、配布ソフトウェアは lha 方式によってアーカイブしてありますから、 lha 対応のファイル解凍用ソフトウェア (+Lhaca など)を使用して解凍してください。
解凍すると、各版それぞれ、「TG7026」、「TGmega」、「TGV850」という名前のフォルダが、 ひとつ作成されます。 このルートフォルダ中には「index.htm」、「license.txt」のふたつのファイルがあります。 このフォルダの下の各サブフォルダに、必要なソフトウェアがおさめられています。
src | FM 音源プログラムのソースファイルが入っています。 ファイル名は、いわゆる「8.3 形式」になっています。 |
---|---|
prj | 開発環境のプロジェクトファイルが入っています。(ATmega版以外) |
obj | コンパイル後のオブジェクトファイルが作られる場所です。 |
lst | コンパイル / リンク時のリスティングファイルが(もしあれば)作られる場所です。 |
ROM | V850版の HEX ファイルが作られる場所です。 |
html | html 形式による説明文書が入っています。 web サイトにあるものと同じですが、当然 web サイト上のものより古いです。 |
css | html 文書で使われる css ファイルが入っています。 |
img | html 文書で使われる画像ファイルが入っています。 |
sch | bsch3v で作成した回路図 ( .ce3 ファイル) と、それらを PDF に変換したものが入っています。 |
smf | デモ曲のスタンダード MIDI ファイルが入っています。 |
gen_tab | ファイル変換ユーティリティーや、FM音源プログラムで使われるサイン波テーブルなどの配列データを生成するプログラムが入っています。 ここのプログラムはホスト上で実行します。 |
ファイル容量が大きい wma ファイル全部と、jpg ファイルの一部は、 配布パッケージには含まれず、web サイト上のファイルをアクセスするように なっていますから注意してください。
ダウンロードのページも web 上にしかありません。
● ADuC7026 版
FM 音源プログラムの HEX ファイルは、TG7026/obj フォルダ内の「TG7026.hex」です。 このファイルを Analog Devices 製の「ARMWSD」ユーティリティーを使って、 シリアル経由でフラッシュに書込みます。 ユーティリティーの操作方法は、ユーティリティー付属の文書や、雑誌記事などを見てください。 ここでは、説明を省略します。 JTAG 経由などの、その他のソフトウェアによる書き込みは試していません。
ADuC7026版プログラムのコンパイルは、「デザインウェーブマガジン」 2006 年 3 月号 付属の「KEIL Development Suite for ARM」のオリジナルの C コンパイラで行っています。 GNU ツール・チェインには対応していません。 「Keil uVision3」自体のインストール / 使用方法などについては雑誌記事を参照してください。
「Keil」がインストールされ、拡張子の関連付けが行われていれば、 TG7026/prj フォルダの 「TG7026.Uv2」ファイルをダブルクリックすれば、統合開発環境が立ち上がるはずです。 あとは「F7」キーを押すなどしてビルドできます。
内蔵フラッシュメモリが 16 ビット幅のため、「ARM」ネイティブ・モードでは遅くなるので、 全編「THUMB」モードにしています。 最適化設定も、「実行時間優先」にしています。
● ATmega 版
FM 音源プログラムの HEX ファイルは、TGmega/obj フォルダ内の「TGmega.hex」です。 このファイルを、現在お使いのフラッシュ書込みユーティリティーで書き込んでください。 私の場合は、「MINI EZ-USB」を書込み器として使っているので、 「AVREZUSB」で書き込んでいます。
フューズビットも、「水晶発振子使用」、「8分周なし」の構成になるように、 適切に設定してください。 ちなみに、私はフューズビットの下位バイトを 2 進数で、「11100111」に設定しています。 EEPROM は全く使用していないので、書き込む必要はありません。
「TGmega.hex」は 24 MHz クロックを想定しています。 スペックから外れたクロックは気持ち悪いという方は、 20 MHz クロックに合わせた「TGmega20.hex」をお使いください。 プログラム自体は、他の周波数のクロックにも対応していますが、HEX ファイルが用意してあるのは、この2種のクロックだけです。 他の周波数を使う場合には、必要な設定をしたうえで、コンパイルし直す必要があります。
ATmega版のコンパイルには、「AVR Studio Version 4.12 SP4 (build498)」 と 「WinAVR-20060421」の組み合わせを使いました。 それより古いバージョンも、新しいバージョンも試していません。
AVRStudio + WinAVR がイントールされ、拡張子の関連付けが行われていれば、 TGmega フォルダの「TGmega.aps」ファイルをダブルクリックすれば、 統合開発環境が立ち上がるはずです。 あとは「F7」キーを押すなどしてビルドできます。 AVRStudio を使わず WinAVR 単独での、コマンドプロンプトでの make には対応していません。
クロック周波数の定義を変えるには、AVR Studio のメニューバーから Project / Configuration Options ダイアログを開いて、「Frequency: 」の値を Hz 単位で書き換えます。 対応しているクロック周波数は 24.576 MHz, 24.000 MHz, 20.000 MHz, 19.6608 MHz, 18.432 MHz です。
それ以外の周波数については、fnumber テーブルの生成から、やり直す必要があります。 gen_tab フォルダ内の「Makefile」を見れば、ヒントが得られると思います。
最適化のレベルは「-Os」(サイズ優先)にしてあります。 これ以外の設定ではオブジェクトが 16 K バイトに収まりません。
● V850 暫定版
FM 音源プログラムの HEX ファイルは、TGV850/ROM フォルダ内の「TGV850.hex」です。 このファイルを NEC 製の「FPL」ユーティリティーを使って、 USBシリアル経由でフラッシュに書込みます。 「ID850QB-MON」デバッガによる「ダウンロード」もできます。
ユーティリティーの操作方法は、ユーティリティー付属の文書や、雑誌記事などを見てください。 ここでは、説明を省略します。 JTAG 経由などの、その他のソフトウェアによる書き込みは試していません。
V850版のコンパイルには、「インターフェース」 2007 年 5 月号付属の開発ツールを使いました。 インストールや使い方に関しては雑誌記事を参照してください。
「PM+」がイントールされ、拡張子の関連付けが行われていれば、TGV850/prj フォルダの「TGV850.prw」ファイルをダブルクリックすれば、統合開発環境が立ち上がるはずです。
ここで、「ファイルが見つからない」という意味のダイアログが出るかも知れませんが、 これは、システムのインクルード・ファイル (stdlib.h など) の絶対パスが プロジェクト・ファイルに記述されているためです。 これは、ビルド時に正しく修正されますから、気にする必要はありません。
あとは「F7」キーを押すなどしてビルドできます。 このとき、「midifunc.c」でウォーニング・メッセージが出ますが、問題ありません。
また、ツールがインストールされているパスが違うせいで、「コマンドの実行に失敗しました」 というメッセージが出るかも知れません。 その場合は、メニューバーから「ビルド(B)」→「依存関係の更新(P)」を実行すれば直ります。
● SMAF オーサリング・ツール
他力本願ですが、本 FM 音源プログラムでは仕様を YAMAHA 製 MA-2 チップに合わせることで、MA-2 用のサポート・ソフトウェアを流用しています。 この SMAF オーサリング・ツールで、下の機能を利用します。
- FM 音色データ編集
- 音色ライブラリー・ファイル (.vma) の読み込み/保存
- SMF (Standard MIDI FILE) から SMAF (Synthetic music Mobile Application Format) への変換
(a) はオリジナル音色を作成する場合に必要です。
(b) は MA-2 標準の音色データをファイル化して利用する場合に必要です。 (→音色データの差し替え)
(c) は、デモ曲を差し替える場合に必要です。
オーサリング・ツールは無償で使用できますが、その使用条件から、再配布はできないので、 利用される方が、ご自身で 「YAMAHA SMAF GLOBAL」 サイトからダウンロードしてください。
SMAF GLOBAL サイトのトップページの上部にある「ツール」ボタンをクリックするか、 ページ最下部にある「SMAFツールの詳しい情報を見る」と書かれたリンクをクリックすると、 ツールのページに飛びますから、さらに「ダウンロード」をクリックします。
ダウンロードページの「オーサリングツール」の3番目の「ATS-MA2-SMAFをダウンロードする」と 書かれたリンクをクリックすると、利用条件の許諾ページに飛びます。
内容を良く読み、理解し、「同意する」のボタンを押せばダウンロードできます。
オーサリング・ツールは無償で利用できますが、使用条件にあるように、使用許諾のない相手に
ソフトウェアおよび付属データを渡すことはできません。
使用許諾は、ダウンロードページでしか得られませんから、
一般に配布するパッケージにオーサリング・ツールおよび付属データである
音色データのファイルを含めることはできません。
本 FM 音源プログラムを改変したうえで再配布しようと思っている方は、
くれぐれも、
他者が知的所有権を主張しているマテリアルを配布物に含めないようにお願いします。
● 音色データの差し替え
MA-2 用 SMAF オーサリング・ツール付属の標準プリセット音色データは、ライセンス上、 再配布が認められていません。 そのため、配布ソフトウェア・パッケージでは、OPL3 用のフリーの音色データを変換したものを付属しています。
当然、MA-2 用標準プリセット音色データのほうが音がいいので、 ご自身で音色データを差し替えることを強くおすすめします。 デモ演奏も、MA-2 用標準プリセット音色データを組み込んだ状態で録音したものです。 配布パッケージ内の HEX ファイルをそのまま書き込んでデモ演奏させても、録音されたサンプルと同じ音にはなりません。
差し替えは次の手順で行います。
(1) はオーサリング・ツール(Windows アプリケーション)の機能を利用しています。
(2) の変換は、ホストシステム上のプログラムで実行します。
さらに、配布パッケージ内の HEX ファイルに限りますが、再コンパイルせずに、
HEX ファイルの一部を直接差し替える方法が用意してあります。[→(4)]
(1) オーサリング・ツールで標準プリセット音色データ (.vma) の保存
音色データの保存は、オーサリング・ツール付属の PDF 文書 「MA2 オーサリング・ツール ユーザーマニュアル (ATS-MA2-SMAF版)」 Ver 1.3.2 (ファイル名:atsma2_um142.pdf) の 37 ページ 「3.9.2.4 リスト列単位の音色情報ファイル操作」の、 (2) ファイル保存の説明にしたがって行います。
具体的には、 「ATS-MA2-SMAF」を実行し、右上のほうにある「MA2 Voice Library」ボタンを 押してダイアログを立ち上げます。 ダイアログの左側に、表計算ソフトのような形式で「Voice Map」が表示されます。
その枠の部分の「BankLSB」と書いてあるセルの隣の、「0」と表示されているセルの上へ マウスカーソルを持っていき、マウスの右(第2ボタン)クリックすると サブメニューが開きますから、「Save Vma (Bank)」を選択します。
そうすると、さらにメニューが開くので、「FM」をクリックします。 その後は「名前を付けて保存」ダイアログになりますから、 適当なファイル名を付けて、「gen_tbl」フォルダ内に保存します。
名前は何でもいいのですが、(2) の変換プログラムを呼び出す Makefile の設定では、 ファイル名が「ma2op2.vma」であることを仮定していますから、 この名前にしておくのが良いでしょう。
また、オーサリング・ツールでは、File メニューから全音色データを ひとつのファイルにまとめて保存することができますが、(2) の変換プログラムでは、 この ALL 形式に対応していないので、いま説明した手順で Bank 形式で保存してください。
(2) 音色データを C ファイル (vma2.c) に変換
この変換は「gen_tab」フォルダにある「vma2c」プログラムで行います。 このプログラムは、いわゆる「フィルタ」となっていて、標準入力 (stdin) から 入力したデータを変換し、標準出力 (stdout) に出力します。
デフォルトでは、初期値付き const 配列の C ソースファイルに変換します。 オプションで intel HEX フォーマットの出力もできます。
音色データ (vma ファイル) のファイル名を「ma2op2.vma」、 出力 C ソースファイル名を「vma2.c」とすると、ホストシステム上で、 gen_tab フォルダに cd しておいて、
./vma2c <ma2op2.vma >vma2.c
同じフォルダ内に Makefile が用意してありますから、 同じことが、もっと簡単に
make vma
(3) FM 音源プログラムの再コンパイル
まず、(2)で作成した「gen_tab」フォルダ内の「vma2.c」ファイルを「src」フォルダに コピーして置き換えます。
これも Makefile に記述してあるので、
make update_vma
あとは、各版の項で示したように再コンパイルすればOKです。
(4) 再コンパイルなしの差し替え
各版で、最終結果である HEX ファイルを「切り貼り」することにより、 再コンパイルせずに音色データの差し替えができるようにしました。 元の HEX ファイルは変更を受けずに、そのまま残ります。
ホストシステム上の C コンパイラが必要な方法と、必要ない方法の2種類が用意してあります。 それはなぜかと言うと、ターゲットシステム用の C コンパイラがインストールされている環境に、 ホストシステム用の C コンパイラをインストールしたくないと言う状況があるからです。
たとえば、WinAVR は cygwin 上に構築された AVR 用の gcc ですから、 当然、WinAVR のインストール時に cygwin のシステムもインストールされます。 ここにホストシステムである x86 用の C コンパイラを含む cygwin をインストールすると、 システム上に2つの cygwin が存在することになります。
もちろん、インストール・フォルダを分ける、環境変数の設定を使い分けるなどして、共存は 可能ですが、インストーラが自分の都合だけで勝手に環境を設定してしまうことがありがちです。
その結果、x86 用コンパイラをインストールしたら、ターゲット用コンパイラに影響を与える かもという心配があります。 したがって、リスクを避けるためにインストールしないというのも有力な選択となります。
まず、C コンパイラが必要な方法ですが、 必要な処理は Makefile 中に記述してあるので、
make vma_subst
具体的には、音色データが差し替えられた HEX ファイルはそれぞれ、
TG7026/obj/TG7026ma.hex TGmega/obj/TGmegama.hex TGV850/ROM/TGV850ma.hex
次に C コンパイラを使わない方法ですが、コンパイラを使わない代わりに、 テキスト・ユーティリティーの od, cut, csplit, tr, fold, gawk などが必要になります。 WinAVR では utils/bin フォルダにインストールずみですから問題ありません。
必要な処理は Makefile 中に記述してあるので、
make vma_subst2
具体的には、音色データが差し替えられた HEX ファイルはそれぞれ、
TG7026/obj/TG7026ma2.hex TGmega/obj/TGmegama2.hex TGV850/ROM/TGV850ma2.hex
HEX ファイルのレコード単位の単純な切り貼りで済むように、 配布パッケージ内の HEX ファイルは、音色データが割り付けられる絶対アドレスを 調整したうえでコンパイルしてあります。 したがって、ソースファイルを変更して、再コンパイルした、アドレスの位置関係が 崩れてしまった HEX ファイルには適用できないので注意してください。
また、TGmega 版の 20 MHz クロック用 HEX ファイルは「TGmega20.hex」という名前に なっていますが、「TGmega.hex」にリネームしてから差し替えてください。
● デモ曲の差し替え
本 FM 音源プログラムにデモ曲の自動演奏機能を付けたのは、 プログラム開発の比較的初期の段階でした。 その目的はデバッグに役立てるためで、デモ演奏ということには大きな意味はありません。 プログラムを修正して実行するたびに MIDI 入力データを流して確認するのが面倒なので、 リセット後、プログラムが立ち上がると勝手に演奏を始めるようにしたのです。
そんなわけで、デフォルトでは、リセット後にデモ演奏を始めるようになっています。 C ソースファイル「main.c」内の「demoflag = 1;」の部分を 0 を代入するように変えれば、 デモ演奏をしないようになります。
デモ曲を差し替える場合は、音色データの差し替えと同様に次の3つのステップで行います。
(1) オーサリング・ツールで SMF を SMAF ファイルに変換
本 FM 音源プログラムでは、データ量の削減を目的として、SMF (Standard MIDI File) をそのまま演奏するのではなく、SMAF (Synthetic music Mobile Application Format) ファイルに変換して利用しています。 データ量としては、約半分になります。 以前は SMAF の web ページから仕様書をダウンロードできたのですが、 現在はダウンロードできないようです。 本 FM 音源プログラムは SMAF 仕様書 Ver 3.05 (2002 年) を参考にしています。
オーサリング・ツール付属の文書「着信メロディ制作ガイドライン for MA-2 Authoring Tool ATS-MA2-SMAF」 Ver 1.0.0 (ファイル名: atsma2_Gl100.pdf) で、 携帯電話の MA-2 チップで演奏させるための SMF ファイルの作り方が説明されています。
本 FM 音源プログラムでは MA-2 に仕様を合わせていますが、 完全に再現しているわけではないので、音源機能としての制限、 内蔵 SMAF プレーヤの制限が加わります。
まず、MIDI チャンネルは 4 チャンネル分しか使えません。 MA-2 用 SMAF の規格では、ひとつのシーケンス・トラックでサポートされる チャンネル数が 4 チャンネルに制限されています。 実際には、 MA-2 では複数シーケンス・トラックをサポートしているので、 複数トラックにより 16 チャンネルまで使用可能になっていますが、 本 FM 音源プログラムでは単一シーケンス・トラックしか サポートしていないので 4 チャンネル以上は使えません。
また、各チャンネルの同時発音数は 1 です。 これは音源自体と SMAF プレーヤの実装上の制限です。
SMAF の規格には「プログラム・チェンジ」がありますが、 オーサリング・ツールで変換した後の SMAF ファイルを見ると、 元の SMF ファイルで指定したはずのプログラム・チェンジ番号とは違った番号になっています。 どうやら、SMAF ファイル中の「セットアップ・チャンク」に音色データを ロードするエクスクルーシブが入っていて、それを利用しているらしいのです。
そんなわけで、SMAF プレーヤではプログラム・チェンジは全く無視して、 デモ曲のデータ・チャンクとは別に、各チャンネル別に音色番号を初期値として受け取ります。 つまり、音色は曲の最初から最後まで同じで、途中で変更はできません。
また、SMAF には「ピッチベンド」の規定もありますが、 オーサリング・ツールでは「ピッチベンド」のメッセージは使われず、 エクスクルーシブに変換されているようです。 まだ、その詳細を解析していないので、ピッチベンドは未サポートです。
そのほかの、SMAF およびオーサリング・ツ−ルに起因する制限や、 SMF-SMAF 変換方法については、オーサリング・ツール付属文書を見てください。
変換後の SMAF ファイルは「smf」フォルダに入れておきます。
(2) SMAF ファイルを C ソースファイルに変換
この変換は「gen_tab」フォルダにある「mmf2c」プログラムで行います。 このプログラムは、いわゆる「フィルタ」となっていて、 標準入力 (stdin) から入力したデータを変換し、標準出力 (stdout) に出力します。
同じフォルダ内に Makefile が用意してありますから、
make demos
この Makefile は「幻想即興曲」、「アラベスク第1番」、 「インベンション 13 番」の3曲に対するものです。 各曲の SMAF ファイル名、C ソースファイル名、ソースプログラム中の配列名、 および演奏中に LCD に表示する文字列は決まっていますから、 違う曲に差し替える場合は、Makefile, tonegen.h, main.c それぞれ適切に変更し、 統合開発環境で C ソースファイルの削除/追加も行う必要があります。
(3) FM 音源プログラムの再コンパイル
まず、(2) で作成した「gen_tab」フォルダ内の「Chopin66.c」、「arabesq1.c」、 「invent13.c」ファイルを「src」フォルダにコピーして古いファイルを置き換えます。 これも Makefile に記述してあるので、
make update_demos
● gen_tab フォルダ内のプログラムと Makefile
(以下、説明文作成中)