MTM07  いってきました @ina_ani hatena id: inajob
MTM07 <ul><li>Make Tokyo Meeting 07 </li></ul><ul><ul><li>第 7 回  12/3, 12/4 </li></ul></ul><ul><ul><li>大学のころの知り合いと一緒に出展してき...
当日の話 <ul><li>展示してるとゆっくり他を見て回れない… </li></ul><ul><ul><li>見に来てくださった方のレビュー記事とかみてます </li></ul></ul><ul><li>会社の知り合い、大学時の友人との意外な出...
展示していたもの <ul><li>RakuChord mobile </li></ul><ul><ul><li>簡単に和音が演奏できる楽器 </li></ul></ul><ul><ul><li>3 年前につくってちょいちょい改良してる </li...
バンドやろうぜ!バンド! <ul><li>一度は楽器を演奏しようと思ったことあるよね? </li></ul>
RakuChord <ul><li>楽器できません </li></ul><ul><ul><li>ピアノ? </li></ul></ul><ul><ul><li>ギター? </li></ul></ul><ul><li>いずれも難しい…  -> 楽...
概要 <ul><li>右手でメロディ </li></ul><ul><li>左手で和音(コード)を抑える </li></ul><ul><li>中身は自作 Arduino </li></ul>
RakuChord <ul><li>ぼくのかんがえたさいきょうのがっき </li></ul><ul><li>曲 ⇒ メロディ  +  和音 </li></ul><ul><li>和音のパターンはある程度限定できる </li></ul><ul><u...
今日の話 <ul><li>Arduino で音を鳴らそう! </li></ul><ul><li>(時間があれば) PS/2 キーボードの制御方法 </li></ul>
Arduino で音を鳴らそう!
Arduino で音 <ul><li>音を鳴らす方法 </li></ul><ul><ul><li>ラは 440Hz だよね? </li></ul></ul><ul><ul><li>0,1 を 440Hz で流せば鳴るかな? </li></ul>...
Arduino で音(波形) <ul><li>サイン波とか三角波とかどうしよう? </li></ul><ul><ul><li>Arduino はデジタル出力しかできません </li></ul></ul><ul><ul><ul><li>0/1 の...
DAC:Digital Analog Converter <ul><li>シリアルでデータを送るとアナログ信号を出力 </li></ul><ul><li>Arduino がだめなら部品を足しましょう </li></ul><ul><ul><li>...
PWM: Pulse Width Modulation <ul><li>時分割方式 </li></ul><ul><ul><li>0/1 だって高速に切り替えればいいんだよね </li></ul></ul><ul><li>AVR に標準搭載 ⇒ ...
Arduino で音(波形) <ul><li>ということでやり方はいろいろです </li></ul><ul><li>要はほしい波形が耳に届けば OK </li></ul>http://ja.wikipedia.org/wiki/%E6%B3%A...
Arduino で PWM <ul><li>analogWrite(PINNO, value); </li></ul><ul><ul><li>value: 0-255 </li></ul></ul><ul><ul><li>使えるピンが限られてい...
Arduino で和音 <ul><li>和音ってなんだろう? </li></ul><ul><li>単音の波形を足せばいいのかな? </li></ul><ul><ul><li>( 音 1 の波形 + 音 2 の波形 + 音 3 の波形 )/3 <...
音プログラミングの面白いところ <ul><li>バグが「聞こえる」 </li></ul><ul><ul><li>すごく高い音になったり、変なピコピコ音になったり… </li></ul></ul><ul><li>高速化が「聞こえる」 </li><...
高速化? <ul><li>counter = (counter + 1) & 0b111; </li></ul><ul><ul><li>if とか重い </li></ul></ul><ul><li>割り算・掛け算よりビットシフト </li></...
 
PS/2 キーボードの制御 keyboard-keyboard
家にあまってるよね? <ul><li>PS/2 ご存知? </li></ul><ul><ul><li>ゲーム機じゃないよ! </li></ul></ul>http://ja.wikipedia.org/wiki/PS/2%E3%82%B3%E3...
ピンの役割 <ul><li>VCC,GND  電源  5V </li></ul><ul><li>CLK, DATA  クロックとデータ </li></ul><ul><li>あと 2 つはマウスで使うのでキーボードの場合は不要 </li></ul...
Arduino から読み込む <ul><li>割り込み機能を使う </li></ul><ul><ul><li>メインループでやって間に合わない場合 </li></ul></ul><ul><li>割り込みが間に合わない </li></ul><ul...
作ってる流れ
 
おしまい <ul><li>JavaScript とかもやってます </li></ul><ul><li>機会があればそちらもいつか </li></ul>
Upcoming SlideShare
Loading in …5
×

MTM07で電子楽器を展示してきた

1,090 views

Published on

arduinoで音プログラミング!の概要

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,090
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

MTM07で電子楽器を展示してきた

  1. 1. MTM07 いってきました @ina_ani hatena id: inajob
  2. 2. MTM07 <ul><li>Make Tokyo Meeting 07 </li></ul><ul><ul><li>第 7 回 12/3, 12/4 </li></ul></ul><ul><ul><li>大学のころの知り合いと一緒に出展してきた </li></ul></ul>
  3. 3. 当日の話 <ul><li>展示してるとゆっくり他を見て回れない… </li></ul><ul><ul><li>見に来てくださった方のレビュー記事とかみてます </li></ul></ul><ul><li>会社の知り合い、大学時の友人との意外な出会い </li></ul>http://jp.makezine.com/blog/maker_faire/
  4. 4. 展示していたもの <ul><li>RakuChord mobile </li></ul><ul><ul><li>簡単に和音が演奏できる楽器 </li></ul></ul><ul><ul><li>3 年前につくってちょいちょい改良してる </li></ul></ul><ul><li>Keyboard-Keyboard </li></ul><ul><ul><li>新作 </li></ul></ul><ul><ul><li>音のなる PC キーボードを作りたかった </li></ul></ul>
  5. 5. バンドやろうぜ!バンド! <ul><li>一度は楽器を演奏しようと思ったことあるよね? </li></ul>
  6. 6. RakuChord <ul><li>楽器できません </li></ul><ul><ul><li>ピアノ? </li></ul></ul><ul><ul><li>ギター? </li></ul></ul><ul><li>いずれも難しい… -> 楽器が悪いんだ! </li></ul>
  7. 7. 概要 <ul><li>右手でメロディ </li></ul><ul><li>左手で和音(コード)を抑える </li></ul><ul><li>中身は自作 Arduino </li></ul>
  8. 8. RakuChord <ul><li>ぼくのかんがえたさいきょうのがっき </li></ul><ul><li>曲 ⇒ メロディ + 和音 </li></ul><ul><li>和音のパターンはある程度限定できる </li></ul><ul><ul><li>ダイアトニックコード? </li></ul></ul><ul><ul><li>電子楽器はボタンと音のアサインが自由 </li></ul></ul><ul><li>音楽っぽい話はむしろ教えてほしい… </li></ul><ul><ul><li>今日は HW 編 </li></ul></ul>
  9. 9. 今日の話 <ul><li>Arduino で音を鳴らそう! </li></ul><ul><li>(時間があれば) PS/2 キーボードの制御方法 </li></ul>
  10. 10. Arduino で音を鳴らそう!
  11. 11. Arduino で音 <ul><li>音を鳴らす方法 </li></ul><ul><ul><li>ラは 440Hz だよね? </li></ul></ul><ul><ul><li>0,1 を 440Hz で流せば鳴るかな? </li></ul></ul><ul><li>Arduino おさらい </li></ul><ul><ul><li>digitalWrite(PINNO,HIGH); </li></ul></ul><ul><ul><li>digitalWrite(PINNO,LOW); </li></ul></ul><ul><li>音は意外と簡単? </li></ul>Arduino 1/440sec
  12. 12. Arduino で音(波形) <ul><li>サイン波とか三角波とかどうしよう? </li></ul><ul><ul><li>Arduino はデジタル出力しかできません </li></ul></ul><ul><ul><ul><li>0/1 のどちらかしか出せない </li></ul></ul></ul><ul><ul><li>選択肢 </li></ul></ul><ul><ul><ul><li>DAC: Digital Analog Converter </li></ul></ul></ul><ul><ul><ul><li>PWM: Pulse Width Modulation </li></ul></ul></ul>
  13. 13. DAC:Digital Analog Converter <ul><li>シリアルでデータを送るとアナログ信号を出力 </li></ul><ul><li>Arduino がだめなら部品を足しましょう </li></ul><ul><ul><li>ソフトウェアとは違うところ </li></ul></ul><ul><ul><ul><li>無い機能はそういう IC 買ってくればいい </li></ul></ul></ul><ul><ul><ul><li>200 円ほど? </li></ul></ul></ul><ul><ul><li>結局制御が間に合うかが勝負 </li></ul></ul><ul><ul><ul><li>ちょっと Arduino だとぎりぎりかなー </li></ul></ul></ul>Arduino DAC
  14. 14. PWM: Pulse Width Modulation <ul><li>時分割方式 </li></ul><ul><ul><li>0/1 だって高速に切り替えればいいんだよね </li></ul></ul><ul><li>AVR に標準搭載 ⇒ 部品を足さなくても良い </li></ul><ul><li>高速に切り替えないとキャリア周波数が可聴域に入る </li></ul>http://ja.wikipedia.org/wiki/%E3%83%91%E3%83%AB%E3%82%B9%E5%B9%85%E5%A4%89%E8%AA%BF
  15. 15. Arduino で音(波形) <ul><li>ということでやり方はいろいろです </li></ul><ul><li>要はほしい波形が耳に届けば OK </li></ul>http://ja.wikipedia.org/wiki/%E6%B3%A2%E5%BD%A2
  16. 16. Arduino で PWM <ul><li>analogWrite(PINNO, value); </li></ul><ul><ul><li>value: 0-255 </li></ul></ul><ul><ul><li>使えるピンが限られているので注意 </li></ul></ul><ul><li>キャリア周波数はちょっとレジスタをいじる必要がある </li></ul><ul><ul><li>http://www.arduino.cc/playground/Main/TimerPWMCheatsheet </li></ul></ul><ul><ul><li>TCCR1B = TCCR1B & 0b11111000 | 0x01; </li></ul></ul>
  17. 17. Arduino で和音 <ul><li>和音ってなんだろう? </li></ul><ul><li>単音の波形を足せばいいのかな? </li></ul><ul><ul><li>( 音 1 の波形 + 音 2 の波形 + 音 3 の波形 )/3 </li></ul></ul><ul><li>割とこんな感じで OK </li></ul>波形生成 入力読み込み タイマ割り込み メイン処理 PWM 処理 波形生成 波形生成 波形生成 どこかで重い処理が走ると波形生成が遅れたりする 割り込みで処理する変数は volatile にしておくとよい
  18. 18. 音プログラミングの面白いところ <ul><li>バグが「聞こえる」 </li></ul><ul><ul><li>すごく高い音になったり、変なピコピコ音になったり… </li></ul></ul><ul><li>高速化が「聞こえる」 </li></ul><ul><ul><li>波形生成部分の処理が重いと音程が低くなる。十分に高速だと音程が高くなる。 </li></ul></ul>タイマ割り込み時間 処理時間オーバー 処理時間内
  19. 19. 高速化? <ul><li>counter = (counter + 1) & 0b111; </li></ul><ul><ul><li>if とか重い </li></ul></ul><ul><li>割り算・掛け算よりビットシフト </li></ul><ul><li>digitalWrite,digitalRead,analogWrite,analogRead は小学生まで </li></ul><ul><ul><li>レジスタを直接使うとかなり早くなる </li></ul></ul><ul><li>コアな処理だけ高速化しましょう </li></ul><ul><ul><li>保守できなくなる </li></ul></ul><ul><li>っていうかここまできたらソフトウェアの領域 </li></ul>
  20. 21. PS/2 キーボードの制御 keyboard-keyboard
  21. 22. 家にあまってるよね? <ul><li>PS/2 ご存知? </li></ul><ul><ul><li>ゲーム機じゃないよ! </li></ul></ul>http://ja.wikipedia.org/wiki/PS/2%E3%82%B3%E3%83%8D%E3%82%AF%E3%82%BF
  22. 23. ピンの役割 <ul><li>VCC,GND 電源 5V </li></ul><ul><li>CLK, DATA クロックとデータ </li></ul><ul><li>あと 2 つはマウスで使うのでキーボードの場合は不要 </li></ul><ul><li>DATA </li></ul><ul><ul><li>スタートビット、データ (8) 、偶数パリティ、ストップビット </li></ul></ul><ul><ul><ul><li>全 11 ビット </li></ul></ul></ul><ul><li>CLK </li></ul><ul><ul><li>データが送られるときに 1->0 する(立下りエッジ) </li></ul></ul><ul><ul><li>10KHz-16.7KHz </li></ul></ul>
  23. 24. Arduino から読み込む <ul><li>割り込み機能を使う </li></ul><ul><ul><li>メインループでやって間に合わない場合 </li></ul></ul><ul><li>割り込みが間に合わない </li></ul><ul><ul><li>メインループの処理や、割り込み処理が重いとキーを取りこぼす </li></ul></ul><ul><ul><li>リングバッファに詰めるなどの工夫 </li></ul></ul><ul><li>スキャンコード -> ASCII コード変換 </li></ul><ul><ul><li>とりあえず手であわせちゃった。他のキーボードはどうなってるんだろう </li></ul></ul>
  24. 25. 作ってる流れ
  25. 27. おしまい <ul><li>JavaScript とかもやってます </li></ul><ul><li>機会があればそちらもいつか </li></ul>

×