マイコンを使わない電子オルゴール
動作風景
https://i.gyazo.com/9b17ef9647fec70bd386f539543537d2.mp4
本当はモーターで自動的に紙テープを読み取ります。
でも手で動かすのも、実験作な感じがして好き。
モーターで紙テープを読み取るときの映像も見つかりました。
@hata6502: 冬眠してたときに巣穴にこもって作ってたアナログ光学式テープ読取装置をひさしぶりに動かした。 https://video.twimg.com/ext_tw_video/1112252019346010112/pu/vid/1280x720/65vweXYM7728Euc3.mp4
記録媒体
ピアノロールは鍵盤 1 つずつに 1 ライン使うため、非常に幅の広い紙テープが必要。 幅 40 mm の紙テープで演奏データを記録することにした。 8 ビット分の幅だけで、音階を表現する。
音階(ドレミファソラシドと#) 4 ビット
オクターブ 3 ビット
ノートオン/オフ 1 ビット
https://scrapbox.io/files/637a30ab27db65001dcbe2cf.png
遊びなので、パスコンなどのノイズ対策や電源の振動対策は一切行っていません。 自己責任でどうぞ。
電源
15V の AC アダプタからレールスプリッタで ±7.5V 電源を生成、プッシュプルで大電流対応。
オペアンプの動作電圧を作ったり、デジタル用+5V を三端子レギュレータで作る。
https://scrapbox.io/files/637a315aa53c04001d5122d5.png
紙テープ巻取回路
紙テープを一定の速度で巻き取る。
モーターの速度をフィードバックで制御していますが、速度センサもモーターで作った。
紙テープにローラーを当ててモータの軸を回し、微弱な起電圧を 300 倍に増幅する。
半固定抵抗によって定めた基準電圧とコンパレータによって比較し、紙テープを巻き取るモータをオン/オフする。
モータは激しいノイズ源になりそうなので、3V 電池を使って電源を隔離した。 https://scrapbox.io/files/637a31fe96e9e10023b0e3ef.png
紙テープ読取回路
黒 1
白 0
https://scrapbox.io/files/637a326e5304e2001dae1370.png
音階デコーダ
音階信号(ドレミファソラシドと半音)からオクターブ 4 の周波数信号を生成する。
音階に対応する周波数は、半固定抵抗で調整する。
周波数出力Vfreq4 は、インピーダンスありの負電圧となるので注意。
オクターブデコーダとの兼ね合いのため。
https://scrapbox.io/files/637a32bf7e904d001d1345f7.png
オクターブデコーダ
音階デコーダで作ったオクターブ 4 の周波数信号を、オクターブ 0〜7 に変調する。
各オクターブごとに、半固定抵抗で周波数を調整する。
https://scrapbox.io/files/637a33094a3cd200222cd04c.png
エンベロープ回路
音量を変化させて減衰を表現する。
単純なコンデンサの充電放電と、分圧回路。
コンデンサの急放電によるストレスは無視してる。
https://scrapbox.io/files/637a33442be60a001ec04f62.png
周波数と音量を電圧として入力すると、ノコギリ波が生成される。 周波数については、入力電圧との線形性が成り立つ。
振幅(音量)については、J-FET の特性の影響を受ける。 https://scrapbox.io/files/637a33894e46910021e0d91e.png
@hata6502: ノコノコ……じゃなくてノコギリ波VCO & VCA の回路図です。(実験中のもの) https://pbs.twimg.com/media/Di9qkdXU8AEK1B4.jpg
3Dモデルを3Dプリンターで印刷し、接着剤で組み立てれば外装ができあがる。 土台
ギアボックス、速度センサ、紙テープの土台。
https://scrapbox.io/files/637a3568d88f8b002160c052.png
モーター用ロール
https://scrapbox.io/files/637a35bee6a156002043405b.png
手巻き用ロール
手巻き用のノブ付き。
https://scrapbox.io/files/637a35d5d21ad00023b965cc.png
データ読み取りのヘッド
格子を 4 つ用意したので、8 ビット分のデータを並列して読み取れる。
https://scrapbox.io/files/637a35ea0e2a86001d4ea1d5.png
モーターホルダー
https://scrapbox.io/files/637a360b8a13d3001d9c6e65.png
市販で用意したパーツの紹介
https://pbs.twimg.com/media/D9L-2S2U8AIUwIy.jpg
https://pbs.twimg.com/media/D9L_4JWUEAAtRaq.jpg
https://pbs.twimg.com/media/D9MBURoVAAEFYUR.jpg
その他製作中の風景
昔から紙と鉛筆で回路図書いてたからです
https://pbs.twimg.com/media/FoxAEGGaEAAEsnM.jpghttps://pbs.twimg.com/media/FoxAEVWaAAANglq.jpg
https://pbs.twimg.com/media/FoxAElMakAALw4o.jpghttps://pbs.twimg.com/media/FoxAE3zaMAEtQOY.jpg
https://pbs.twimg.com/media/FoxAGA_aAAA5Z8-.jpghttps://pbs.twimg.com/media/FoxAGLjaQAAnIQF.jpg
https://pbs.twimg.com/media/FoxAGahaAAEVBWU.jpghttps://pbs.twimg.com/media/FoxAGvSaQAAbgyH.jpg
https://pbs.twimg.com/media/DvwLjbDV4AQcDmA.jpg
@hata6502: どうしても、音符の変わり目では一瞬だけ変な音が鳴ってしまう。そこで、同期パルス信号を一番下の段に埋め込む。 https://pbs.twimg.com/media/D8ODOVbUwAAZkAk.jpg
@hata6502: Dフリップフロップでラッチ回路を作る。そうすれば、同期パルス信号(一番下の段の縦線)のタイミングで音階データをキャッチして記憶するから、音符の変わり目で一瞬変な音が鳴らなくなる。