チーム2033
テーマ
アニメ「鬼滅の刃」の主題歌『紅蓮華』のさびを流すミュージックプレイヤーを作る。
研究者名
2-15-046 Maeda Yusaku
2-15-045 Horita Yuuna
概要
timer_pwmを参考にして、紅蓮華のさびを流すミュージックプレイヤーを作る。
使用器具
・PSoC x 1
・スピーカー x 1
・MiniProg x 1
動作確認
ソースコード
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#pragma interrupt_handler myISR
int PW=125; // Pulse Width
int SILENT=0,D=229,Ds=217,L=204,Ls=193,M=182,F=172,Fs=162,S=153,Ss=145,R=136,Rs=129,C=121;
int DD=115,DDs=108,LL=102,LLs=96,MM=91,FF=86,FFs=81,SS=77,SSs=72,RR=68,RRs=64,CC=61;
int TC=0; //Time Count
void myISR(void)
{
TC += 1; //TC = TC +1 PWM16_1_WritePulseWidth(PW); if(TC == 1)//Start PWM16_1_WritePeriod(L); else if(TC == 4) PWM16_1_WritePeriod(L); else if (TC == 5) PWM16_1_WritePeriod(L); else if (TC == 9) PWM16_1_WritePeriod(C); else if (TC == 13) PWM16_1_WritePeriod(R); else if (TC == 15) PWM16_1_WritePeriod(C); else if (TC == 17) PWM16_1_WritePeriod(LL); else if (TC == 19) PWM16_1_WritePeriod(C); else if (TC == 21) PWM16_1_WritePeriod(R); else if (TC == 23) PWM16_1_WritePeriod(C); else if (TC == 24) PWM16_1_WritePeriod(C); else if (TC == 27) PWM16_1_WritePeriod(S); else if (TC == 29) PWM16_1_WritePeriod(R); else if (TC == 31) PWM16_1_WritePeriod(C); else if (TC == 33) PWM16_1_WritePeriod(LL); else if (TC == 35) PWM16_1_WritePeriod(C); else if (TC == 37) PWM16_1_WritePeriod(R); else if (TC == 39) PWM16_1_WritePeriod(C); else if (TC == 40) PWM16_1_WritePeriod(C); else if (TC == 43) PWM16_1_WritePeriod(L); else if (TC == 45) PWM16_1_WritePeriod(L); else if (TC == 47) PWM16_1_WritePeriod(S); else if (TC == 48) PWM16_1_WritePeriod(S); else if (TC == 51) PWM16_1_WritePeriod(L); else if (TC == 53) PWM16_1_WritePeriod(L); else if (TC == 55) PWM16_1_WritePeriod(S); else if (TC == 57) PWM16_1_WritePeriod(R); else if (TC == 59) PWM16_1_WritePeriod(S); else if (TC == 61) PWM16_1_WritePeriod(LL); else if (TC == 65) PWM16_1_WritePeriod(DD); else if (TC == 69) PWM16_1_WritePeriod(C); else if (TC == 72) PWM16_1_WritePeriod(R); else if (TC == 75) PWM16_1_WritePeriod(S); else if (TC == 77) PWM16_1_WritePeriod(S); else if (TC == 83) PWM16_1_WritePeriod(S); else if (TC == 85) PWM16_1_WritePeriod(S); else if (TC == 87) PWM16_1_WritePeriod(R); else if (TC == 89) PWM16_1_WritePeriod(C); else if (TC == 91) PWM16_1_WritePeriod(R); else if (TC == 97) PWM16_1_WritePeriod(L); else if (TC == 99) PWM16_1_WritePeriod(R); else if (TC == 103) PWM16_1_WritePeriod(C); else if (TC == 105) PWM16_1_WritePeriod(LL); else if (TC == 107) PWM16_1_WritePeriod(R); else if (TC == 109) PWM16_1_WritePeriod(C); else if(TC == 121) PWM16_1_WritePeriod(L); else if(TC == 125) PWM16_1_WritePeriod(L); else if (TC == 129) PWM16_1_WritePeriod(C); else if(TC == 133) PWM16_1_WritePeriod(R); else if(TC == 135) PWM16_1_WritePeriod(C); else if (TC == 137) PWM16_1_WritePeriod(LL); else if(TC == 139) PWM16_1_WritePeriod(C); else if(TC == 141) PWM16_1_WritePeriod(R); else if (TC == 143) PWM16_1_WritePeriod(C); else if (TC == 144) PWM16_1_WritePeriod(C); else if(TC == 147) PWM16_1_WritePeriod(S); else if (TC == 148) PWM16_1_WritePeriod(S); else if(TC == 149) PWM16_1_WritePeriod(R); else if(TC == 151) PWM16_1_WritePeriod(C); else if (TC == 153) PWM16_1_WritePeriod(LL); else if(TC == 155) PWM16_1_WritePeriod(C); else if(TC == 157) PWM16_1_WritePeriod(R); else if (TC == 159) PWM16_1_WritePeriod(C); else if(TC == 160) PWM16_1_WritePeriod(S); else if(TC == 163) PWM16_1_WritePeriod(S); else if (TC == 165) PWM16_1_WritePeriod(S); else if(TC == 168) PWM16_1_WritePeriod(R); else if(TC == 171) PWM16_1_WritePeriod(C); else if(TC == 175) PWM16_1_WritePeriod(C); else if(TC == 177) PWM16_1_WritePeriod(SS); else if(TC == 179) PWM16_1_WritePeriod(FFs); else if(TC == 185) PWM16_1_WritePeriod(LL); else if(TC == 189) PWM16_1_WritePeriod(C); else if(TC == 192) PWM16_1_WritePeriod(R); else if(TC == 195) PWM16_1_WritePeriod(S); else if(TC == 197) PWM16_1_WritePeriod(S); else if(TC == 203) PWM16_1_WritePeriod(S); else if(TC == 205) PWM16_1_WritePeriod(S); else if(TC == 207) PWM16_1_WritePeriod(R); else if(TC == 209) PWM16_1_WritePeriod(C); else if(TC == 211) PWM16_1_WritePeriod(R); else if(TC == 213) PWM16_1_WritePeriod(SILENT); else if(TC == 219) PWM16_1_WritePeriod(L); else if(TC == 225) PWM16_1_WritePeriod(M); else if (TC == 229) PWM16_1_WritePeriod(SILENT);
}
void main()
{
M8C_EnableGInt;
PWM16_1_Start();
Timer16_1_EnableInt();
Timer16_1_Start();
while(1)
{ };
}
考察
もともとはキーボード入力からいくつかの曲を演奏するものを作ろうとしていましたが、
なかなかうまくいかなかったので、1曲にに絞って演奏させる機器にしました。
つながった音が区切られることなく演奏されてしまう点も改善しようとしましたが、音がぶつぶつと途切れてしまうため結局改善できませんでした。
- 最終更新:2021-04-18 09:52:35