[TOP] [about] [日記] [掲示板] [リンク] - [お絵かき] [電子工作] [PC関連] [写真] [1][3][8][8][4][7][1]
 YMZ294 - SSG音源ボード


ご存知秋月電子では 時折面白いパーツが販売されています。 そこで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電源、出力はラインレベルにすることにしました。



回路の設計
つくるものが決まったら、回路設計です。 どんな部品を使うかも決めてしまいます。

回路図はこちら→ SSG音源ボード回路図(918×1016ピクセル)
サイズが大きいのでご注意を。


回路基板の設計
最も辛い作業がこれです。
今回の回路は配線が多いので、ユニバーサル基板を使うにしろ、 プリント基板を自作するにしろ、ちょっと大変です。

私はプリント基板を自作することにして、 サンハヤト の感光基板の最小サイズである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



2003年10月製作

TA2020デジタルアンプ [1つ前のページへ]   [1つ上へ戻る]   [1つ次のページへ] ペデスタルクランプ式RGBビデオアンプ
 ©masa-u 2003-2006 (webmaster(at)mbin.jp), 無断転載厳禁。リンクはご自由に。 2006年2月22日 0時06分 更新