「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



ちょっとずつ葡萄匍匐前進している、Arduino
を使ったウクレレ用クロマチックチューナー。


ロジックのメインになる部分が一応書けた(と思う)
ので、とりあえず、どんな感じになるのかなぁ?と、
テストデータとして周波数を指定して「正弦波」を
流し込んで、正しいトーンが拾えるかをチェック
してみる。


…とりあえず、ド~1オクターブ上のドまで、13個の
音を正しく拾えているっぽい事は確認できた。
シメシメ。計算途中の数値をシリアル出力してみても、
およそ想定内の数値。


ただ、現状は、小数点周りの計算処理を、「float型」
使っているせいで、精度が十分に出てないっぽい。
いくつかの音について、数centの範囲で周波数を
揺らしてみると、誤差1cent程度の誤差がのっちゃう。

なにしろ、float型は、有効桁が5桁(10進数で)なので、
整数部3桁+小数桁2桁では、そもそも1桁ほど精度が
足りてない。むしろきっかり1cent程度の誤差で済んで
いるほうがラッキーと言う程度のものだな。

無理やり作りこんだ正弦波のデータに誤差があるのか、
チューニング計算のロジックで誤差が生じるのか、
その両方なのか…

http://brown.ap.teacup.com/nekosan0/2045.html
以前、↑Arduinoで固定小数点が使えるんだか、使えない
んだかって話もあったんだけど、仕様に書かれていない
モノをつかうよりは、long型とかで整数部、小数部に
分けて定数テーブル作った方が、いいかもしれない。
速度速いし。


とりあえず、現状の
  「計算ロジックで起動時に周波数→シフト量」
   を計算して、テーブル化
の部分について、
  「PC使って机上で計算しておいて、整数部・
   小数部を別々に定数配列として押し込む」
方向に書き換えだな。


それにしても、Arduinoでガリガリとコード書いて
作るのも楽しいんだけど、やっぱ、8ビットだし、
メモリ空間には限度があるし、クロック速度も限界が
あるし、ADCはAVR由来の速度に縛られるし…で、
やっぱ厳しいところがあるんだよなぁ。

ARMコアを持ち出せば一気に解消って感じなんだけど、
そういう意味ではやっぱ、今週にでも秋月の
http://akizukidenshi.com/catalog/g/gM-07097/
PSoC4 Pioneer Kit CY8CKIT-042に手を出すのが吉
なのかな。M0コアでも、メモリも計算能力も上だからな。

http://www.switch-science.com/catalog/1455/
くろのすさんの、M3搭載のPSoC5_EVBキット
(CY8C5868LTI-LP038搭載)も魅力的な値段だな。

M0コアのPSoC4シリーズが、秋葉原でもチップ単体が
簡単に手に入るようになればいいのにな。


ゲーグラが、一気に20回、21回のアップ
http://www.nicovideo.jp/watch/sm22253516
http://www.nicovideo.jp/watch/sm22253559


http://ednjapan.com/edn/articles/1208/10/news093.html
この、サンプリング周波数変換の記事。ちょっと
前の情報だけど、面白かった。
マイコンを使ったMP3プレイヤーとかはけっこう
見かけるんだけど、こういうのを絡めて、音程は
変えずに、倍速再生できるプレイヤーとかを
作ったら、結構便利なんじゃね?

とか思いつつ、MP3のエンコードとサンプル周波数変更
をソフトで自前でやらないといけないから、結構厳しい
かな。


http://tokyo.philembassy.net/ja/events/help-for-super-typhoon-yolanda-victims/
http://www.jrc.or.jp/contribute/help/l4/Vcms4_00004046.html
結局、フィリピンへの募金は、日赤がいいのか、
フィリピン大使館の口座に振り込むのがいいのか、
どっちがいいのかなぁ。

確実に、かつ早いタイミングで届くのがいいんだ
けどな。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする



« 風邪ひいた 引き続き、コ... »
 
コメント
 
コメントはありません。
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。