ロジック IC でつくる国鉄気動車チャイム音 (設計編)

国鉄時代の気動車の車内放送で使われていたメロディ(アルプスの牧場)を鳴らす回路を作りました。
マイコンを使ってはつまらないので、例によってロジック IC を組み合わせて作りますが、
せっかくなので国鉄時代(~1987)に製造された IC だけを使って組んでみました。

2 つの 8 ステップ波形生成器とエンベロープ生成器により、
ある程度オルゴールのような音が鳴るようになっています。
長くなってしまったので設計編、製作編で区切ります。

構成

本機の構成は大きく分けて、音符のタイミングをつくるシーケンス生成部と
音程や音量をつくる波形生成部の 2 ブロックに分けられます。
構成図を下図に示します。

シーケンス生成部(上半分)は、ステップジェネレータで 24 ステップのパルスを出力して、
後段のロジックで音程や発音タイミングの制御をデコードするという構成です。
ROM を使えればもっと単純な回路になりますが、今回はランダムロジックで直接
音程を出力して、音程からさらに音程の分周値に変換しています。

波形生成部(下半分)はエンベロープ生成器、8 ステップの波形生成器と
音程を生成する分周器からなります。
2 つの独立した波形生成部を用意して、OPAMP のミキサにより加算することで
2 和音を同時に発音できるようにしています。
OPAMP のミキサ以外はすべて 4000 シリーズ CMOS IC で設計しました。
タイミング回路を少し変更することで 3-15V で動作しますが
この回路では +5V 単一電源の動作を前提にしています。

シーケンス生成部

シーケンス生成部は、4017 によるカウンタとシフトレジスタにより、
パルスを順番に出力する回路を構成しています。
SW1 を押すと回路がリセットされ、Q0 から順番に 24 ステップのパルスが出力されます。
Q0 はリセットステートとなるため使用できません。

4017 はそのままではカスケード接続ができないため、4013 D-FF と組み合わせて
ノンアクティブなカウンタにリセットをかけることで、無理やりカスケードしています。
このとき、アクティブでない(リセット中の)カウンタの Q0 信号も出力されてしまうので、
さらにゲートしてやる必要があります。
2 段目以降をシフトレジスタで組めば、もう少し回路は簡単になります。

さて、「アルプスの牧場」のメロディを楽譜に起こすと、図のようになります。
本機は独立な 2 つの波形生成部を持ち、それぞれ単音しか鳴らすことができないので、
この譜面を 2 つに分割する必要があります。
譜面上の単音部分については、演奏を担当する波形生成部を交互に切り替えると
エンベロープがうまく重なって、自然な演奏になります。
しかし、単純に交互にふり分けるだけではうまい分割となりません。
シーケンスパルスから音程の変換と、音程から分周値の変換をランダムロジックで
実装する必要があるので、これらを少ない回路で実装できるような分割とします。
具体的には、同じ音程を 1 つの波形生成器にまとめることができると効率よくできます。

分割後の譜面を上図に示します。もとの譜面の 9 通りの音程を、5+4 に分割しています。

分周器

音程生成用の分周器は、10 進カウンタの 40192 を 2 段使用した
プログラマブルディバイダで、1-99 分周が可能です。
16 進のカウンタ、たとえば 40193 や 40161 などを使用すればより正確な音程となりますが、
手持ち IC の関係で 10 進カウンタを使用しています。
また、10 進のほうが bit density が小さいので、ROM をロジックで組んだときの規模が
少なくなるという副次的効果もあります。

最大周期が 99 なので、楽譜中の最低音周波数 * 99 * 8 が基準周波数となります。
下表は本回路の分周値テーブルですが、99 にすべきところ誤って 100 として計算しており
やや本来の周波数からずれてしまいました。
もっとも「本物」のオルゴールもチューニングがずれていることがあるので
これはこれで気にしないこととします。

分周値テーブル

5+4 の 2 つに分割した音程と、対応する分周比を下表に示します。

Gen. 1 | Note | Value
-------+----------------
Tone 1 | Ab4  | 99(100)
Tone 2 | C5   | 79
Tone 3 | Db5  | 75
Tone 4 | G5   | 53
Tone 5 | C6   | 40
Gen. 2 | Note | Value
-------+----------------
Tone 1 | Bb4  | 89
Tone 2 | Eb5  | 67
Tone 3 | Ab5  | 50
Tone 4 | Bb5  | 45

音程を入力してこの分周比を出力する回路を作ることになります。
使用している音程が多い場合 ROM またはダイオードマトリクスを使用することになりますが、今回は音程が少ないので、わずか OR 3 ゲートで構成することができました。

音色

車内放送のチャイムはメカニカルなオルゴールなので、メロディ IC で一般的な
矩形波 + エンベロープでは物足りません。
何とかしてオルゴールに似せた音色を出力したいのですが
ROM は使用できないので簡単な回路で実現できることを考えます。

さて、なぜ矩形波がだめかというと、その倍音の多さにあります。
オルゴールは鉄の櫛を弾いて音を出す楽器なので、そのエンベロープは
CR の減衰 (1/exp) でよく近似できるのですが、倍音の比較的少ない波形となります。
そこで、倍音成分を少なくすることで、ある程度似せることができないか試してみます。

正弦波は倍音を含みませんが、それを整数倍の周波数で粗くサンプルして出力した波形は
正弦波と矩形波の中間のような波形ですから、ほどよく倍音が付加された音色といえます。
上図に正弦波と今回の波形の比較を示しています。

実際の音はどうか、矩形波、粗い正弦波 (8 step)、正弦波の 3 種類をコンピュータで生成して確かめてみます。

(1) 矩形波

(2) 粗い正弦波

(3) 正弦波

3種類の中では最もオルゴールに近い音色が得られたので、粗い正弦波の回路を実装することにします。

粗い正弦波は、3bit カウンタと 4051 で簡単に作ることができます。
このとき、出力周波数は入力周波数の 1/8 となります。
また、抵抗値や接続を変えることで、音色を調整することができます。

発振回路

本機はシーケンス生成用と、音程生成用に割り当てられた 2 つのクロック発振器を持ちます。
シーケンス生成用クロックには 4528 を使用しており、1 ms の H 期間は
エンベロープ回路のコンデンサ充電用パルスも兼ねています。
また、このクロックの立ち上がりで分周器のラッチ、立ち下がりでステップジェネレータのシフトを行います。

4528 はモノステーブルマルチバイブレータですが、このようにリサーキュレートさせることで
発振器(=アステーブル)にすることができます。
H 期間、L 期間を独立に設定できるため便利な回路だと思いますが
データシートの応用例にあまり出てこない回路でもあります。

音程生成用クロックは 4093 を使用した発振器で 664 kHz を出力します。
4528, 4093 いずれも発振周波数は VDD の関数になるため、+5V は安定した電源が必要です。
この特性を利用して、これらの IC の VDD を揺らすことで、壊れたオルゴールのような効果を付加することもできます。
広範囲な電源電圧で使用する場合、4538 や 4069、NE555 などに置き換えが必要です。

コメントを残す

メールアドレスが公開されることはありません。