Arduinoでタイマー割り込みあたりが使えるライブラリ
でまず挙げられるのがMsTimer2。
…なんだけど、MsTimer2は最小割り込み間隔が1ms単位
だったり、PWM出力を併用したり出来ない仕様に
なっているので(SFR弄れば別だけど)、TimerOneを
使ってこの間から色々弄り回していたところ。
http://www.pjrc.com/teensy/td_libs_TimerOne.html
コイツは割り込み間隔が1us単位で指定できて、PWM出力
も2ピンともオンに出来るので、良く見てみればとても
使い勝手が良い仕様。(と言っても割り込み関数内の
処理時間の視点は重要で、モロモロ考慮すれば多分最短
でも十us程度に設定しないと厳しそう)
で、こんなに狭い間隔で割り込み間隔を設定できる
ってことは、音声合成に使うのに都合がヨサゲ、と。
で、スケルトンを先日作ったので、そいつを使って
ザックリと回路組んで音声合成処理。いわゆる入力
した音声の音程を上げたり下げたり。
入力はADCから、出力はTimerOneを使ってPWMで。
ADCのサンプリングとTimerOneへの出力はTimerOneの
タイマ割り込みをトリガに。と、TimerOneが2回ほど
登場するけど、至ってノーマルな仕様。
意外とあっさり動いてくれた。さすがにこの手の処理
は障壁がモロモロあってノイズがすごいので、本当は
入力回路でゴニョゴニョしたり、リングバッファの
読み書きでゴニョゴニョしたりとノイズ対策が必要
なんだけど、全部放棄。とりあえず音出すことに専念。
シリコンオーディオを繋いで、聴きなれた曲の音程を
リアルタイムで上げたり下げたりして遊んでみる。
自分で自分で仕込んでおきながら、うっかり笑える。
TimerOneライブラリ。なかなか使い勝手がよくて
ウレシイ。もうちょっと弄って面白くしたい。
帰り道、いまさらだけどInterface12月号 を買ってくる。
ARMコンピュータでI/Oの記事読みたさに。特に、なんと
言ってもRaspberry PiのI/O関係。
Raspberry PiのI/Oって、ファイルI/Oとしてアクセス
するのかな?と思ってたんだけど、チラッと読んだ
感じでは、プログラム中からポートを叩くことが
出来るっぽい感じ。
あとでじっくり読もう。
まぁ、本当はこの間買ったRaspberry Pi User Guideを
じっくり読めば書いてあるんだろうけど、実機がまだ
手元に届いてないので、全部英語の本をじっくり読もう
って気分にナカナカならず、最初の数ページしか読んで
ない…。早く実機が来ないかな…。
![](/images/clear.gif)
![](/images/clear.gif)
![](/images/clear.gif)
|