Tosainu Lab

圧電ブザーで『U.N.オーエンは彼女なのか?』のようなものを演奏してみた

 

 

どーもです。

 

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; }