圧電ブザーで『U.N.オーエンは彼女なのか?』のようなものを演奏してみた
- 2013/08/05
- #Raspberry Pi
どーもです。
RaspberryPiのIOピン制御にWiring Piというライブラリを利用したら、物凄く簡単に制御することができるようになりました。
ライブラリに頼ってばかりではいけないのはわかっていますが・・・
さて、ソースコードはこんな感じです。
予め配列intervalに使う音程の周波数を入れておき、関数noteを使ってnote(音程番号, ○分音符);という感じでmain関数に楽譜を手打ちしていきます。
とりあえず動作させることを優先したため、「え゛っ!?」と思うような部分もあると思いますが、そのへんは無視してくださいw
ちなみに、RaspberryPiにはもちろんArch Linuxを入れてあります。
#include <stdio.h> #include <string.h> #include <wiringPi.h> #include <softTone.h>
#define PIN 0 #define TEMPO 1500
int interval[19] = {523, 587, 659, 698, 739, 830, 932, 1046, 1109, 1244, 1397, 1567, 1760, 1975, 2093, 0, 622, 784, 1318};
void note(int scale, int time) { softToneWrite(PIN, interval[scale]);
delay((TEMPO/time)-20); softToneWrite(PIN, 0); delay(20); }
int main() { wiringPiSetup(); softToneCreate(PIN) ;
printf(”***** U.N. Owen Was Her? *****\n”); printf(” ZUN \n”);
note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(7,8); note(15,16); note(7,16); note(15,8); note(7,8);
note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(9,8); note(15,16); note(9,16); note(15,8); note(9,8);
note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(7,8); note(15,16); note(7,16); note(15,8); note(7,8);
note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(9,8); note(15,16); note(9,16); note(15,8); note(9,8);
note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(7,8); note(15,16); note(7,16); note(15,8); note(7,8);
note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(9,8); note(15,16); note(9,16); note(15,8); note(9,8);
note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(7,8); note(15,16); note(7,16); note(15,8); note(7,8);
note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(8,16); note(6,16); note(3,16); note(9,8); note(15,16); note(9,16); note(15,8); note(9,8);
note(3,8); note(15,8); note(1,8); note(15,8); note(2,8); note(15,8); note(0,8); note(15,8);
note(17,8); note(15,8); note(2,8); note(15,8); note(16,8); note(15,8); note(4,8); note(15,8);
note(3,8); note(15,8); note(1,8); note(15,8); note(2,8); note(15,8); note(0,8); note(15,8);
note(17,8); note(15,8); note(2,8); note(15,8); note(16,4);
note(15,4);
note(3,8); note(15,8); note(1,8); note(15,8); note(2,8); note(15,8); note(0,8); note(15,8);
note(17,8); note(15,8); note(2,8); note(15,8); note(16,8); note(15,8); note(4,8); note(15,8);
note(3,8); note(15,8); note(1,8); note(15,8); note(2,8); note(15,8); note(0,8); note(15,8);
note(17,8); note(15,8); note(2,8); note(15,8); note(16,4);
note(15,4);
note(3,8); note(15,8); note(8,8); note(15,8); note(5,8); note(15,8); note(8,8); note(15,8);
note(6,8); note(15,8); note(7,8); note(8,8); note(7,8); note(15,8); note(9,8); note(15,8);
note(10,8); note(8,8); note(12,8); note(13,8); note(12,8); note(13,16); note(12,16); note(8,8); note(8,8);
note(8,8); note(10,8); note(7,8); note(8,8); note(6,4);
note(15,4);
note(3,8); note(15,8); note(8,8); note(15,8); note(5,8); note(15,8); note(8,8); note(15,8);
note(6,8); note(15,8); note(7,8); note(8,8); note(7,8); note(15,8); note(9,8); note(15,8);
note(10,8); note(8,8); note(12,8); note(13,8); note(12,8); note(13,16); note(12,16); note(8,8); note(8,8);
note(10,2);
return 0; }