
|
ご存知秋月電子では
時折面白いパーツが販売されています。
そこでSSG音源チップ(YMZ294)を発見したので製作を思い立ったのが、
この音源ボードです。
かねてから「普通でない音源」が欲しかったのですが、
FM音源チップなどはなかなか手に入りづらい
(そもそも探してなかったりもする(汗))ので、
価格も安いこれを使ってSSG音源ボードをつくってみよう、
というわけです。
ちなみに、「SSG」というのはYamahaのプログラマブル音源に対する呼称で、
ファミコン等で有名な「PSG」と (基本機能としては) ほぼ同じものです。
|
- 2006年2月19日
- 演奏サンプルを掲載しました。
- 2003年11月19日
- ファームウエアソースを追加。
コマンドリストはもうちょっと待ってください。
- 2003年11月12日
- 回路図を追加。
F/Wがほとんど完成。
いろいろ機能を追加したらPIC16F873ではメモリが足りなくなった!
|
なにはともあれ、どんなものをつくるのか決めないといけません。
今回特に考えたのは以下の点です。
- 1. インターフェース
- 「音源」にしたいので、PCと接続するのが大前提です。
そこで、「どうやってつなぐのか」が問題になるわけです。
候補としては、USB、パラレル、シリアル(RS-232C)くらいがあります。
パラレル接続だとチップを直接PCからコントロールできそうなので
音源側の回路で楽をできそうですが、PCに1ポートしかない
パラレルポートを占領されると困るので、パラレルはまず却下。
次にUSBが非常に魅力的なのですが、回路規模を抑えたいのと、
何よりデバイスドライバの開発が面倒に思えるので、
これも見送り。
ということでRS-232C接続にすることにします。
MIDIのシリアル転送速度が31.25kbpsですので、
それを上回る38.4kや57.6kbpsで接続すれば大丈夫でしょう。
- 2. 音源の規模
- 「何個音源チップを積むか」です。
YMZ294は同時に発音できるのは3和音までなので、
1つではちょっと音源として貧弱なのです。
16個くらい積んで「48和音」とかも面白そうではあるのですが(笑)、
回路設計等考えると現実的ではありません。
が、ひとまず10和音くらいは欲しいので、
現実的できりのいいところとして、4個搭載することにしました。
- 3. CPU
- 音源ボード上のコントローラをどうするか、です。
が、手許にライターがあって手軽に扱えるのがPICだけであるため、
これは特に迷うこともなくPICにします。
SSGチップ用の8ビットバス、チップ選択用のライン、シリアル入出力、
といった要素が必要ですので、I/Oが22本、USART内蔵の
PIC16F876を使うことにします。
さらに、クロックはRS-232Cにあわせて、
適当なところで11.0592MHzに決定。
あとは音声の出力方法とか電源とか。
今回はとりあえず5V電源、出力はラインレベルにすることにしました。
|
最も辛い作業がこれです。
今回の回路は配線が多いので、ユニバーサル基板を使うにしろ、
プリント基板を自作するにしろ、ちょっと大変です。
私はプリント基板を自作することにして、
サンハヤト
の感光基板の最小サイズである75mm×100mmに収まるように設計しました。
手のひらサイズで扱いやすいのですが、ちょっとスペースが足りず、
仕方なく電源回路を省くことに。
それでも4日くらいかかってます(汗)。
|
|
基板現像とかエッチングとか穴開けとかはんだづけとか。
|
ファームウエア、プロトコル、コントロールソフトの開発
|
さて、ボード本体が完成してもそこで終わるわけにはいきません。
ボード上のマイコンのファームウエア(F/W)、
PC上で動作するコントロールソフトウエア、
これら2つの間の通信に使われるプロトコル、
この3つを開発し実装しなければ、音源として使えるようにはなりません。
これにもいくつかモデルがあります。
- 1. ファームウエア最小案
- コントロールソフトがSSGパラメータを生成、送信し、
F/WはそれをSSGチップに振り分けるものです。
これだとF/Wは振り分け作業だけで済むので簡易で済みます。
が、コントロールソフト側の負担がかなり高くなる上、
細かなコントロールを行おうとすれば、通信量が膨大になります。
- 2. 高性能ファームウエア案
- たとえばMIDIコマンドなどのハイレベルコマンドを通信し、
F/Wが計算してSSGパラメータを生成するものです。
これだと逆にコントロールソフト側が楽になり、
そのぶんF/Wが大きくなります。
F/Wの開発がたいへんになるわけですが、
最も「音源」らしい使い方ができます。
で、今回は「音源」ということを重視したいので、
以下のような感じでいくことにしました。
- 音程はMIDIと同様の形式で通信、F/W側でSSG分周比に変換。
- SSG内蔵エンベロープは機能が少ないので、
F/Wによるソフトウエアエンベロープ機能を実装。
- F/Wによるビブラート機能を実装。
ビブラートをかけるところでPIC16F873のメモリが尽きたので、
PIC16F876に変更。かなり大袈裟なF/Wになったなぁ…
● ファームウエアソースはこちら→
SSG音源ボードファームウエア(MPASM用)
PC側からは16のコマンドで制御します。
曲データを読んでコマンドを送信するPCソフトも開発しました。
# これも公開するかはちょっと考え中
|
|
なかなか素敵なサウンドを奏でております。
- ★ 演奏サンプル1 (mp3 1.1MB 1分10秒)
- Colom氏作曲の「タリンカ」をこのSSG音源用に打ちなおしたものです。
最大8和音 + 2ノイズチャンネル、ソフトウエアエンベロープと弱いビブラートを使っています。
# Colom氏の了承をいただいて掲載しております (ありがとうございます)。
# Colom氏のwebサイトはこちら: D:DRIVE
今後もっと演奏サンプルを追加したいところです。
|
実際に製作した音源ボードの部品です。
前述の回路図に入っていないものが入っていたり、その逆もあるので注意。
これと基板とスイッチング式ACアダプタ、あわせて6000円弱くらいでした。
| 種類 |
型番/容量 |
数量 |
備考 |
| IC |
NJM4580 |
1 |
オーディオ用オペアンプ (2回路入汎用) |
|
PIC16F876 |
1 |
マイクロコントローラ (873だとメモリ足りない) |
|
SP202 |
1 |
RS-232Cレベルコンバータ (MAX232互換) |
|
TD62004 |
1 |
トランジスタアレイ (7回路入) |
|
YMZ294 |
4 |
SSG音源チップ |
| 水晶振動子 |
11.0592MHz |
1 |
メインクロック |
| 水晶発振器 |
4.0000MHz |
1 |
SSGクロック |
| 半固定抵抗器 |
100kΩ |
1 |
|
| 抵抗アレイ |
330Ω5素子 |
1 |
|
|
5.1kΩ4素子 |
1 |
|
| 抵抗器 |
100Ω |
1 |
|
|
1kΩ |
8 |
|
|
10kΩ |
3 |
|
|
100kΩ |
4 |
|
| コンデンサ |
33pF |
2 |
積層セラミック |
|
0.1µF |
15 |
積層セラミック |
|
10µF |
4 |
電解 |
|
47µF |
1 |
電解 |
|
100µF |
4 |
電解 |
|
470µF |
1 |
電解 |
|
1000µF |
1 |
電解 |
| その他 |
タクトスイッチ |
1 |
|
|
ディップスイッチ |
1 |
4連 |
|
DCジャック |
1 |
2.1φ |
|
D-Subコネクタ |
1 |
9ピンメス |
|
RCAジャック |
1 |
|
|