チーム1649

課題名

みんなが知っている曲のメドレー

研究者名

Kenta Kataoka
Yusei Kawanabe

説明

今回の自由課題では、「timer_pwm2」をベースにして、誰もが知っているような曲をメドレーという形で作成しました。
メドレーが始まり、曲が演奏されると、LCDの画面に演奏中の曲名が表示される仕組みになっています。

メドレーセットリスト
1.チャルメラ
2.メリーさんの羊
3.チューリップ
4.ドラゴンクエスト

ソースコード

#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; //Pluse Width
int SILENT=0,D=229,L=204,M=182,F=172,S=153,R=136,C=121,DD=115;

int TC=0; //Time Count

void myISR(void){
TC += 1; //TC = TC +1
PWM16_1_WritePulseWidth(PW); //music start!


if(TC == 1){
  LCD_1_Start();
   LCD_1_PrCString("Charumera");
     PWM16_1_WritePeriod(D);
}

else if(TC == 3)
PWM16_1_WritePeriod(L);

else if (TC == 5)
PWM16_1_WritePeriod(M);
  
else if(TC == 9)
PWM16_1_WritePeriod(L);

else if(TC == 11)
PWM16_1_WritePeriod(D);

else if (TC == 13)
PWM16_1_WritePeriod(SILENT);

else if (TC == 15)
PWM16_1_WritePeriod(D);
  
else if (TC == 17)
PWM16_1_WritePeriod(L);

else if(TC == 19)
PWM16_1_WritePeriod(M);
  
else if (TC == 21)
PWM16_1_WritePeriod(L);

else if(TC == 23)
PWM16_1_WritePeriod(D);
  
else if (TC == 25)
PWM16_1_WritePeriod(L);
  
else if (TC == 36)
PWM16_1_WritePeriod(SILENT);

else if(TC == 50){
LCD_1_Start();
 LCD_1_PrCString("MeryHadALamb");
 PWM16_1_WritePeriod(M);
 }

else if(TC == 55)
PWM16_1_WritePeriod(L);

else if (TC == 57)
PWM16_1_WritePeriod(D);
  
else if(TC == 60)
PWM16_1_WritePeriod(L);

else if(TC == 66)
PWM16_1_WritePeriod(M);

else if (TC == 69)
PWM16_1_WritePeriod(SILENT);

else if (TC == 70)
PWM16_1_WritePeriod(M);
  
else if (TC == 73)
PWM16_1_WritePeriod(SILENT);

else if(TC == 74)
PWM16_1_WritePeriod(M);
  
else if (TC == 80)
PWM16_1_WritePeriod(SILENT);

else if(TC == 81)
PWM16_1_WritePeriod(L);
  
else if (TC == 83)
PWM16_1_WritePeriod(SILENT);
  
else if (TC == 84)
PWM16_1_WritePeriod(L);
  
else if (TC == 87)
PWM16_1_WritePeriod(SILENT);
  
else if (TC == 89)
PWM16_1_WritePeriod(L); 
  
else if(TC == 95)
PWM16_1_WritePeriod(SILENT);
  
else if (TC == 96)
PWM16_1_WritePeriod(M);

else if(TC == 99)
PWM16_1_WritePeriod(S);
  
else if (TC == 102)
PWM16_1_WritePeriod(SILENT);
  
else if (TC == 103)
PWM16_1_WritePeriod(S);
  
else if (TC == 109)
PWM16_1_WritePeriod(SILENT);

else if (TC == 123){
LCD_1_Start();
 LCD_1_PrCString("Tulip");
 PWM16_1_WritePeriod(D);
}
else if(TC == 127)
PWM16_1_WritePeriod(L);

else if (TC == 131)
PWM16_1_WritePeriod(M);
  
else if(TC == 135)
PWM16_1_WritePeriod(SILENT);

else if(TC == 139)
PWM16_1_WritePeriod(D);

else if (TC == 143)
PWM16_1_WritePeriod(L);

else if (TC == 147)
PWM16_1_WritePeriod(M);
  
else if (TC == 151)
PWM16_1_WritePeriod(SILENT);

else if(TC == 154)
PWM16_1_WritePeriod(S);
  
else if (TC == 158)
PWM16_1_WritePeriod(M);

else if(TC == 162)
PWM16_1_WritePeriod(L);
  
else if (TC == 166)
PWM16_1_WritePeriod(D);
  
else if (TC == 170)
PWM16_1_WritePeriod(L);
  
else if (TC == 174)
PWM16_1_WritePeriod(M);

else if(TC == 178)
PWM16_1_WritePeriod(L);
  
else if (TC == 182)
PWM16_1_WritePeriod(SILENT);
 
else if (TC == 201){
LCD_1_Start();
 LCD_1_PrCString("DRAGON_QUEST");
 PWM16_1_WritePeriod(S);
}

else if(TC == 203)
PWM16_1_WritePeriod(SILENT);
  
else if (TC == 206)
PWM16_1_WritePeriod(S);

else if(TC == 207)
PWM16_1_WritePeriod(D);

else if(TC == 211)
PWM16_1_WritePeriod(L);
  
else if (TC == 215)
PWM16_1_WritePeriod(M);
  
else if (TC == 219)
PWM16_1_WritePeriod(F);
  
else if (TC == 223)
PWM16_1_WritePeriod(S);

else if(TC == 227)
PWM16_1_WritePeriod(DD);
  
else if (TC == 233)
PWM16_1_WritePeriod(C); 

else if(TC == 237)
PWM16_1_WritePeriod(R);

else if(TC == 238)
PWM16_1_WritePeriod(SILENT);
 
else if (TC == 239)
PWM16_1_WritePeriod(R);

else if(TC == 244)
PWM16_1_WritePeriod(S);
 
else if(TC == 246)
PWM16_1_WritePeriod(SILENT);
  
else if (TC == 247)
PWM16_1_WritePeriod(F);

else if(TC == 248)
PWM16_1_WritePeriod(SILENT);
 
else if (TC == 249)
PWM16_1_WritePeriod(F);
  
else if (TC == 252)
PWM16_1_WritePeriod(R);

else if(TC == 254)
PWM16_1_WritePeriod(S);
  
else if (TC == 257)
PWM16_1_WritePeriod(M);

else if(TC == 263)
PWM16_1_WritePeriod(SILENT);

else if(TC == 264){
LCD_1_Start();
 LCD_1_PrCString("");
}

}
  
void main(void)
{
  // M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
   // Insert your main routine code here.
   M8C_EnableGInt;
   PWM16_1_Start();
   Timer16_1_EnableInt();
   Timer16_1_Start();
   while(1)
   {};
}

回路図

回路図1.PNG
画像2.jpg

考察

今回の自由課題では、「timer_pwm2]を応用して、メドレー曲を作成した。
割り込みを使ってテンポの速い曲を作成したが、スローテンポの曲とは異なり、同じ音をSILENTを間に入れたうえで連続して再生しようとすると、音がつながって聞こえてしまっていた。
このことからSILENTを挟んで同じ音を続けて出す場合、SILENTの処理が実行される十分な時間を確保することが必要であったと考えられる。

  • 最終更新:2016-10-18 14:08:16

このWIKIを編集するにはパスワード入力が必要です

認証パスワード