FC2ブログ
としえのへたえ - TOSHiÉtti GRAFFitti
6和音出るワンチップ音源作った
こんばんは、デジタルとしえです。

あるものを作りたいなーーーーという構想がありまして、そのためには音源が必要なのです。PSG音源のICなんかも買ってはみたのですが、音を出すためにはコマンドを送らないとダメで、めんどくさいわけです。

わたしとしては、ドとミとソのスイッチをONにしたら、ドとミとソがすぐに鳴って欲しいわけです。いちいち、分周率をチャンネルごとにセットしてからドン☆とトリガして音を出すみたいなのはやってらんないのです。

ないものは仕方がないので、自分で作ります。今回は久々にマイコンを使います。

【仕様】
・6チャンネル用意する
・各チャンネルには固定した音程を割り振る
・6チャンネルに対応したピンをLレベルにするとその音が鳴る(負論理)
・複数のピンをLレベルにすると和音になる
・波形はデューティー比50%の矩形波
・エンベロープはかけない
・ビブラートもかけない
・ノイズも付加しない


これを2個作って12チャンネルにすれば、1オクターブの12セミトーンがカバーできます。(15個作れば理論上は90音出せるので、88鍵盤をカバーできます。しかし、クロックの都合で高い音の精度が出ないので実際にはムリです。)

というわけで、回路図ドン☆

としえ音源の回路図

真ん中のPIC16F84A(U2)が今回の要となるマイコンです。上の抵抗たち(R9~R16)はラダー型の4ビットD/Aコンバータになっています。とりあえず今回は、鍵盤代わりにDIPスイッチ(SW1)を繋いでいます。クロック周波数は手持ちの水晶(X1)の都合で12MHzにしました。C3とC4の容量はイイカゲンです。

基板部品面 基板ハンダ面

これマイコンですから、これだけじゃ動きません。ファームウェアが必要です。今回の開発環境はMPLABを使い、アセンブリ言語でコーディングしました。

【アルゴリズム】
(1) 6チャンネル分のカウンタ(CNT0~CNT6)、カウンタ(OCT0~OCT6)を用意する
(2) 出力信号レベルを計算するためのカウンタ(OUT)を用意する
(3) 各カウンタCNTxに(とりあえず)値1をセット、OUTはクリア
(4) 各カウンタCNTxをデクリメント
(5) CNTxが0になったら、CNTxに分周率をセットし、OCTxをインクリメント
(6) PORTBをスキャンし、Lレベルのピンを探す
(7) Lレベルのピンnを発見したら、OCTnのLSBをチェック
(8) LSBがHレベルならOUTをインクリメント
(9) PORTBの第0~5ビットをチェックし終えるまで(6)~(8)を繰り返し
(10) OUTの値(値域0~6)をPORTAの第0~3ビットに出力(←実は3ビットで足りるが)
(11) (4)へ戻る


PIC16F84Aはクロック周波数(今回は12MHz)の1/4の周波数が1サイクルになります。よって、1サイクルあたり1/3000000秒です。上のアルゴリズムの(4)~(11)のループ1周で84サイクルあります。また、波形のデューティー比を50%にするため、波形を2分周しています。

よって、周波数fの音を出すためには、分周率Nを

N = round(3000000 / (84 * 2 * f))

とすればよいことがわかります。

音階平均律[Hz]分周率設計値[Hz]実測値[Hz]
C130.8137130.3130.3
Cis=Des138.6129138.4138.4
D146.8121147.6147.6
Dis=Es155.6115155.3155.3
E164.8108165.3165.3
F174.6102175.1175.0
Fis=Ges185.097184.1184.1
G196.091196.2196.2
Gis=As207.786207.6207.6
A220.081220.5220.4
Ais=B233.177231.9231.9
H246.972248.0248.0

んで、土曜日に秋葉原の秋月電子通商さんで買った下の機械でPICにファームを書き込みます。そして、基板にPICを挿してテスト。

PICにファームを書き込む機械

実測値は設計値にほぼ一致しました。すばらしい! ただし、比較的低い周波数を分周していますので、どうしても(設計値自体が)誤差を含んでしまいます。Dの音が約+8.8セント、Ais (B)の音が約-8.7セントずれています。音痴のわたしにはまったく無縁の話ですが♪

ほんとは、1個めのチップに {C, C#, D, D#, E, F} の6音を、2個めのチップに {F#, G, G#, A, A#, H} の6音を割り当てるつもりなのですが、とりあえずデモ用に {C, D, E, F, G, A} (ドレミファソラ)の6音が出るようにしてチップを焼きました。

[MP3] 音を出してみた♪

単音でも、和音でも、全部同時に鳴らしても、一応大丈夫そうです♪

[ASM] ファームウェアのソースコード

じゃ、寝るわ☆

(ソースコードの説明は追記にございます。)
というわけで、大きな画像ですみません。

ソースコードの説明

以上で~す♪
お楽しみいただけたら押してちょ ↑↑↑↑↑
にほんブログ村 イラストブログ 絵日記へ
電気・電子」の前後記事

テーマ:オーディオ | ジャンル:趣味・実用

[2011/02/07 03:01] | 電気・電子 | Trackbacks(0) | Comments(8)
<<としえ実はピチピチ | ホーム | 恵方巻き - Rolled Sushi "Eho-Maki">>
コメント (COMMENTS)
何だか 〇×△×#・・・・
じぇんじぇん分かんないでしゅが・・・・????(・・
スゴイ!!(@^^)v
[2011/02/07 09:38] URL | チビとこ #-[ 編集 ]
No title
チビとこさん、おはようございます♪
すみません、またデムパヲタク記事を書いてしまいました。

ここのところのモノづくりは、ヒカリものと鳴りものばかりでマンネリなので、なんか別の系統のモノも作ってみたいのですが…。
イケメン執事ロボットとか♪ ^^;

最近の休日は、インドア or アキバ往復になってます。文字どおりのヲタ生活ですね…。
ああ、デートに誘われて外を歩いてみたいものです…。
[2011/02/07 09:51] URL | としえ #MNmjYmiU[ 編集 ]
鳴ってる鳴ってる
ちゃーんと鳴ってますね。すんばらしいっ!
でも・・・何に使う音源??
「あるもの」が気になります。

そして、、、分周率ってなんだろう???
まぁ、いいや、わかんないけど、デジタルとしえさんはやっぱりすごいや!
[2011/02/07 16:03] URL | nekomoca #-[ 編集 ]
nekomocaさん、こんにちは♪

「あるもの」とは、いよいよ来週の月曜日に活躍するアレですよぉ♪
憧れの 分 周率さま に贈るの♪ (*^_^*)
   (↑どこの国の男やねん!)
このように病みすぎですので、きょうは病院に行ってきました。

分周(ぶんしゅう)は、繰り返しの頻度を2回に1回とか、3回に1回に間引くことです♪
「ペットボトルの回収は隔週です。」と言う代わりに、「毎週の頻度を2分周した頻度でペットボトルは回収される。」と言います。

分周とは逆に、頻度を何倍かにすることは、「逓倍(ていばい)」と言います♪
「お茶を飲みすぎちゃって、お手洗いの頻度が3逓倍よ♪」のように使います。
[2011/02/07 16:37] URL | としえ #MNmjYmiU[ 編集 ]
だいじょうぶです!(^_-)-☆
・・・・また ナンパ! されますよっ(^_^)v
[2011/02/07 18:10] URL | チビとこ #-[ 編集 ]
No title
チビとこさん、こんばんは☆

>・・・・また ナンパ! されますよっ(^_^)v
ありがとうございます♪
ん…?? 何げにすごいこと仰ってません?! (*^_^*)

あまり受け身でもアレですので、こんどは逆ナ(ry
[2011/02/07 19:01] URL | としえ #MNmjYmiU[ 編集 ]
No title
としえちゃん、すごい!!!!
文系の私には、さっぱりわからないけどすごい!!!
私、自分で何かを作ろうって思うことが無いからなぁ。。。
[2011/02/10 00:49] URL | みくりやせりこ #-[ 編集 ]
No title
みくりやせりこちゃん、おはよー!!
もっとちゃんとしたものを作りたんだけどね…。「お嬢様お帰りなさいませ」みたいな執事ロボットとか。あぁ、ダメだ、発想がアキハバラだ…。

今週末はキッチンに引きこもります♪
(また、風邪ひいちゃって…。)
[2011/02/10 05:15] URL | としえ #MNmjYmiU[ 編集 ]













トラックバック
トラックバック URL
http://toshietchi.blog70.fc2.com/tb.php/176-41c537d0
この記事にトラックバックする(FC2ブログユーザー)

カレ俊 カノ俊 ブログ としえのへたえ - TOSHiÉtti GRAFFitti

としえのへたえ
著者紹介 Profile

ひろしまとしえ

ハンドル: ひろしまとしえ
Handle: Toshiétti
職業: 主婦・求職者・エンジニア
出身: 静岡県御殿場市
住所: 東京都
所属: AKB1048
   (エーケービー トーシーエイト)
年齢: 自称 21歳
FC2のトリップ: #MNmjYmiU

YouTube: チャンネル
Twitter: @Toshietti

【廣島家のウェブサイト】
 廣島研究所
 http://www.hrsm.net/
 製作記事へのショートカット集です

T and T
三崎港にて

【特技】
bits
全車種運転できます!
bits
小型船舶も!
☆ ドライバー職に転職希望 ☆

【保有資格等】 資格ヲタではない
〔国家資格〕
▼自動車運転免許
大型自動車第二種免許 大型自動車第二種免許
大型特殊自動車第二種免許 大型特殊自動車第二種免許
けん引第二種免許 けん引第二種免許
大型自動二輪車免許 大型自動二輪車免許
大型自動車免許 大型自動車免許
大型特殊自動車免許 大型特殊自動車免許
普通自動二輪車免許 普通自動二輪車免許
けん引免許 けん引免許
中型自動車免許 中型自動車免許
▼小型船舶操縦免許
一級小型船舶操縦士 一級小型船舶操縦士
特殊小型船舶操縦士 特殊小型船舶操縦士
小型船舶操縦士特定操縦免許 小型船舶操縦士特定操縦免許
▼危険物取扱者免状
乙種第3類危険物取扱者 乙種第3類危険物取扱者
乙種第4類危険物取扱者 乙種第4類危険物取扱者
乙種第5類危険物取扱者 乙種第5類危険物取扱者
乙種第6類危険物取扱者 乙種第6類危険物取扱者
▼無線従事者免許
第一級海上無線通信士 第一級海上無線通信士
第一級陸上無線技術士 第一級陸上無線技術士
第二級アマチュア無線技士 第二級アマチュア無線技士
労働安全衛生法による技能講習修了
フォークリフト運転技能講習修了 フォークリフト運転技能講習修了
車両系建設機械(整地、運搬、積込み用及び掘削用)運転技能講習修了 車両系建設機械(整地、運搬、積込み用及び掘削用)運転技能講習修了
車両系建設機械(解体用)運転技能講習修了 車両系建設機械(解体用)運転技能講習修了
〔民間認定〕
PADI Open Water Diver PADI Open Water Diver
〔学位〕
博士(工学) 博士(工学)

としえ船長
としえ船長です

【好きな場所】
 海!
【クリエイティブ系趣味】
 お裁縫、電子工作、激辛料理、
 デジタルヘタ絵、写真
【アウトドア系趣味】
 車や船の運転・操縦、
 クルージング、ドライブ、
 星見、海外旅行、崖鑑賞
【スポーツ系趣味】
 スキューバダイビング(過去形)、
 テニス(大過去形)、
 アイススケート(超大過去形)

【としえの訪問地】
国内: 全47都道府県
国外: 33ヶ国+7地域くらい
北限: Longyearbyen (北緯78°)
南限: Puerto Iguazú (南緯25°)
東限: 納沙布岬 (東経145°)
西限: Honolulu (西経157°)

カテゴリー
Categories

カレンダー Calendar

10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

コメント Comments

リンク
Favorite Sites

メールフォーム
Mail Form

お名前 your name:
メール e-mail:
件名 subject:
本文 message:

新着 Latest Articles

月別アーカイブ
Monthly Archives

ご案内 Notes

コメントとトラバは、ひろしまとしえの承認後に表示されます。即時性なくてごめんなさい。不承認のときもごめんなさい。間違って投稿された場合は、続けて修正版または削除指示等のコメを再投稿いただければ、それらしくファジィに対応いたします。

鍵コメは投稿できなくしてありますのでメールフォームをご利用ください。

検索 Text Search

RSSs

ランキングサイト
Ranking Sites

ご訪問者数 Visitors

QR Code

QR

携帯電話からはいま一つご覧いただけません。