このライブラリでは、単音とメロディの出力が可能です。 In this library, you can output a single tone and melody. mbedのpwmOutとDigitalOutを使ってスピーカや圧電ブザーを直接駆動します。 directly drive speaker or buzzer and DigitalOut pwmOut using the mbed. メロディデータは、mbedのローカルにtxtファイルとして保存するか、プログラム中に配列データとして保存してください。 Melody data is either stored in a txt file on the local mbed, save it as a data array in the program.
Dependents: kitchenTimer_Clock SoundLibraryExample_Melody_ProgramData M3PI_SuiviLigne
Sound.cpp@15:d526205994e9, 2013-11-10 (annotated)
- Committer:
- suupen
- Date:
- Sun Nov 10 07:13:32 2013 +0000
- Revision:
- 15:d526205994e9
- Parent:
- 13:cd42abff5173
fixed the bug in the output end processing
;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
suupen | 0:e3f005984c2a | 1 | /***********************************************************************/ |
suupen | 0:e3f005984c2a | 2 | /* */ |
suupen | 0:e3f005984c2a | 3 | /* Sound.cpp */ |
suupen | 0:e3f005984c2a | 4 | /* */ |
suupen | 0:e3f005984c2a | 5 | /* pwmOutput - digtalOutput de sound syuturyoku suru library */ |
suupen | 0:e3f005984c2a | 6 | /***********************************************************************/ |
suupen | 0:e3f005984c2a | 7 | #define _SOUND_C |
suupen | 0:e3f005984c2a | 8 | |
suupen | 0:e3f005984c2a | 9 | #include "types.h" |
suupen | 0:e3f005984c2a | 10 | #include "mbed.h" |
suupen | 0:e3f005984c2a | 11 | #include "math.h" |
suupen | 0:e3f005984c2a | 12 | #include "Sound.h" |
suupen | 0:e3f005984c2a | 13 | |
suupen | 0:e3f005984c2a | 14 | LocalFileSystem local("local"); |
suupen | 0:e3f005984c2a | 15 | |
suupen | 0:e3f005984c2a | 16 | /******************************************************************* |
suupen | 0:e3f005984c2a | 17 | * syokika |
suupen | 0:e3f005984c2a | 18 | *******************************************************************/ |
suupen | 0:e3f005984c2a | 19 | Sound::Sound(PinName pwm, PinName kijun) : _pwm(pwm), _kijun(kijun){ |
suupen | 0:e3f005984c2a | 20 | /*********************** |
suupen | 0:e3f005984c2a | 21 | * kido ji no yobidasi |
suupen | 0:e3f005984c2a | 22 | ***********************/ |
suupen | 0:e3f005984c2a | 23 | sound_timer.attach_us(this, &Sound::pulseCheck, Z_pulseCheckSyuuki); // oto no hakei syuturyoku check time |
suupen | 0:e3f005984c2a | 24 | |
suupen | 0:e3f005984c2a | 25 | hatuon_jikan.start(); // 1tu no oto no hatuon jikan kakunin |
suupen | 0:e3f005984c2a | 26 | |
suupen | 0:e3f005984c2a | 27 | _pwm.period_us(Z_pwmSyuuki); |
suupen | 0:e3f005984c2a | 28 | |
suupen | 0:e3f005984c2a | 29 | _pwm.write(0.0); |
suupen | 0:e3f005984c2a | 30 | _kijun = 0; |
suupen | 0:e3f005984c2a | 31 | |
suupen | 0:e3f005984c2a | 32 | |
suupen | 0:e3f005984c2a | 33 | keikajikan = 0; // 1tu no oto no keikajikan |
suupen | 0:e3f005984c2a | 34 | |
suupen | 0:e3f005984c2a | 35 | F_pwmSet = 0; // 0:zenhan hansyuuki 1:kohan hansyuuki wo request |
suupen | 0:e3f005984c2a | 36 | C_syuukiKeika = 0; |
suupen | 0:e3f005984c2a | 37 | f_muonSet = 0; // muon ji no sound_out() syori wo kurikaesu no wo fusegu |
suupen | 0:e3f005984c2a | 38 | |
suupen | 0:e3f005984c2a | 39 | } |
suupen | 0:e3f005984c2a | 40 | |
suupen | 0:e3f005984c2a | 41 | |
suupen | 0:e3f005984c2a | 42 | |
suupen | 0:e3f005984c2a | 43 | /***************************************** |
suupen | 0:e3f005984c2a | 44 | * analog output |
suupen | 0:e3f005984c2a | 45 | * siji : syuturyoku siji (0.0 - 1.0) absolute |
suupen | 0:e3f005984c2a | 46 | * fugo : syuturyoku fugo 0:+ 1:- |
suupen | 0:e3f005984c2a | 47 | *****************************************/ |
suupen | 0:e3f005984c2a | 48 | void Sound::sound_out(float siji, int8_t fugo){ |
suupen | 0:e3f005984c2a | 49 | |
suupen | 0:e3f005984c2a | 50 | // siji no atai wo fugo ga minus no toki hanten |
suupen | 15:d526205994e9 | 51 | if(siji != 0.0){ //@SS131110 |
suupen | 15:d526205994e9 | 52 | if(fugo == 1){siji = 1.0 - siji;} |
suupen | 15:d526205994e9 | 53 | _kijun = fugo; |
suupen | 0:e3f005984c2a | 54 | |
suupen | 0:e3f005984c2a | 55 | _pwm.write(siji); // 2tuizyo sound out settei site ,interrupt no nakade renzoku de pwm set wo suruto bousou suru. |
suupen | 15:d526205994e9 | 56 | } |
suupen | 15:d526205994e9 | 57 | else{ //@SS131110 |
suupen | 15:d526205994e9 | 58 | // sound off //@SS131110 |
suupen | 15:d526205994e9 | 59 | _kijun = 0; //@SS131110 |
suupen | 15:d526205994e9 | 60 | _pwm.write(0.0); //@SS131110 |
suupen | 15:d526205994e9 | 61 | } //@SS131110 |
suupen | 0:e3f005984c2a | 62 | |
suupen | 0:e3f005984c2a | 63 | } |
suupen | 0:e3f005984c2a | 64 | /***************************************** |
suupen | 0:e3f005984c2a | 65 | * sound hakei pwm output |
suupen | 0:e3f005984c2a | 66 | * time interrupt |
suupen | 0:e3f005984c2a | 67 | *****************************************/ |
suupen | 0:e3f005984c2a | 68 | void Sound::pulseCheck(void) { |
suupen | 0:e3f005984c2a | 69 | // uint32_t static C_syuukiKeika = 0; |
suupen | 0:e3f005984c2a | 70 | // uint8_t static f_muonSet = 0; // muon ji no sound_out() syori wo kurikaesu no wo fusegu |
suupen | 0:e3f005984c2a | 71 | // uint8_t static F_pwmSet = 0; // 0:zenhan hansyuuki 1:kohan hansyuuki wo request |
suupen | 0:e3f005984c2a | 72 | |
suupen | 0:e3f005984c2a | 73 | float D_soundOut; // syuturyoku suru sinpuku chi (0.0 - 1.0) |
suupen | 0:e3f005984c2a | 74 | |
suupen | 0:e3f005984c2a | 75 | if (O_sound.syuuki != 0) { |
suupen | 0:e3f005984c2a | 76 | f_muonSet = 1; |
suupen | 0:e3f005984c2a | 77 | // sound ari |
suupen | 0:e3f005984c2a | 78 | if (C_syuukiKeika < (O_sound.syuuki / 2.0)) { |
suupen | 0:e3f005984c2a | 79 | // zenhan han syuuki |
suupen | 0:e3f005984c2a | 80 | if (F_pwmSet == 0) { |
suupen | 0:e3f005984c2a | 81 | F_pwmSet = 1; |
suupen | 0:e3f005984c2a | 82 | |
suupen | 0:e3f005984c2a | 83 | D_soundOut = (float)pow(((double)O_sound.envelope / O_sound.shokichienvelope), 2.0); |
suupen | 0:e3f005984c2a | 84 | sound_out(D_soundOut, 0); |
suupen | 0:e3f005984c2a | 85 | } |
suupen | 0:e3f005984c2a | 86 | C_syuukiKeika += Z_pulseCheckSyuuki; |
suupen | 0:e3f005984c2a | 87 | } else if (C_syuukiKeika < O_sound.syuuki) { |
suupen | 0:e3f005984c2a | 88 | // kohan han syuuki |
suupen | 0:e3f005984c2a | 89 | if (F_pwmSet == 1) { |
suupen | 0:e3f005984c2a | 90 | F_pwmSet = 2; |
suupen | 0:e3f005984c2a | 91 | |
suupen | 0:e3f005984c2a | 92 | D_soundOut = (float)pow(((double)O_sound.envelope / O_sound.shokichienvelope) , 2.0); |
suupen | 0:e3f005984c2a | 93 | sound_out(D_soundOut, 1); |
suupen | 0:e3f005984c2a | 94 | } |
suupen | 0:e3f005984c2a | 95 | C_syuukiKeika += Z_pulseCheckSyuuki; |
suupen | 0:e3f005984c2a | 96 | |
suupen | 0:e3f005984c2a | 97 | |
suupen | 0:e3f005984c2a | 98 | } else { |
suupen | 0:e3f005984c2a | 99 | // jikai syuuki settei |
suupen | 0:e3f005984c2a | 100 | F_pwmSet = 0; |
suupen | 0:e3f005984c2a | 101 | C_syuukiKeika = 0; |
suupen | 0:e3f005984c2a | 102 | } |
suupen | 0:e3f005984c2a | 103 | |
suupen | 0:e3f005984c2a | 104 | // envelope jikan no kosin |
suupen | 0:e3f005984c2a | 105 | if (O_sound.envelope > Z_pulseCheckSyuuki) { |
suupen | 0:e3f005984c2a | 106 | O_sound.envelope -= Z_pulseCheckSyuuki; |
suupen | 0:e3f005984c2a | 107 | } else { |
suupen | 0:e3f005984c2a | 108 | O_sound.envelope = 0; |
suupen | 0:e3f005984c2a | 109 | } |
suupen | 0:e3f005984c2a | 110 | } |
suupen | 0:e3f005984c2a | 111 | else{ |
suupen | 0:e3f005984c2a | 112 | // O_sound.syuuki == 0 then sound nasi |
suupen | 0:e3f005984c2a | 113 | |
suupen | 0:e3f005984c2a | 114 | if(f_muonSet == 0){ |
suupen | 0:e3f005984c2a | 115 | f_muonSet = 1; |
suupen | 0:e3f005984c2a | 116 | sound_out(0.0, 0); // 5us |
suupen | 0:e3f005984c2a | 117 | } |
suupen | 0:e3f005984c2a | 118 | } |
suupen | 0:e3f005984c2a | 119 | |
suupen | 0:e3f005984c2a | 120 | //************************************************* |
suupen | 0:e3f005984c2a | 121 | // 1ms syuuki syori |
suupen | 0:e3f005984c2a | 122 | //************************************************* |
suupen | 0:e3f005984c2a | 123 | C_1msProcess++; |
suupen | 0:e3f005984c2a | 124 | if((C_1msProcess * Z_pulseCheckSyuuki) > 1000){ |
suupen | 0:e3f005984c2a | 125 | C_1msProcess = 0; |
suupen | 0:e3f005984c2a | 126 | sound_ensoSyori(); |
suupen | 0:e3f005984c2a | 127 | } |
suupen | 0:e3f005984c2a | 128 | } |
suupen | 0:e3f005984c2a | 129 | |
suupen | 0:e3f005984c2a | 130 | |
suupen | 0:e3f005984c2a | 131 | /****************************************************************************** |
suupen | 0:e3f005984c2a | 132 | Name : sound_sound() |
suupen | 0:e3f005984c2a | 133 | Parameters : sound_t .hanon |
suupen | 0:e3f005984c2a | 134 | : .onkai |
suupen | 0:e3f005984c2a | 135 | : .time : hatuon jikan(1/1 [ms]/count) |
suupen | 0:e3f005984c2a | 136 | : .envelope : yoin (1/1 [ms]/count) |
suupen | 0:e3f005984c2a | 137 | Returns : none |
suupen | 0:e3f005984c2a | 138 | Description : hitotu no oto no syuturyoku |
suupen | 0:e3f005984c2a | 139 | ******************************************************************************/ |
suupen | 0:e3f005984c2a | 140 | //************************* |
suupen | 0:e3f005984c2a | 141 | // oto jyotai check |
suupen | 0:e3f005984c2a | 142 | // ture : oto ari chu |
suupen | 0:e3f005984c2a | 143 | // false: oto nasi chu |
suupen | 0:e3f005984c2a | 144 | //************************* |
suupen | 0:e3f005984c2a | 145 | bool Sound::sound_sound(void){ |
suupen | 0:e3f005984c2a | 146 | if (hatuon_jikan.read_ms() < keikajikan){ |
suupen | 0:e3f005984c2a | 147 | return(true); |
suupen | 0:e3f005984c2a | 148 | } |
suupen | 0:e3f005984c2a | 149 | else{ |
suupen | 0:e3f005984c2a | 150 | return(false); |
suupen | 0:e3f005984c2a | 151 | } |
suupen | 0:e3f005984c2a | 152 | } |
suupen | 0:e3f005984c2a | 153 | |
suupen | 0:e3f005984c2a | 154 | //************************* |
suupen | 0:e3f005984c2a | 155 | // oto syuturyoku |
suupen | 0:e3f005984c2a | 156 | //************************* |
suupen | 0:e3f005984c2a | 157 | void Sound::sound_sound(sound_t data) { |
suupen | 0:e3f005984c2a | 158 | |
suupen | 0:e3f005984c2a | 159 | uint8_t onkai; |
suupen | 0:e3f005984c2a | 160 | uint8_t okutabu; |
suupen | 0:e3f005984c2a | 161 | uint8_t kaicho; |
suupen | 0:e3f005984c2a | 162 | |
suupen | 0:e3f005984c2a | 163 | // oto no frequency // do re mi fa so ra si |
suupen | 13:cd42abff5173 | 164 | //131020const float DT_onkaiHzN[3][7] = {// C1 D1 E1 F1 G1 A1 B1 // frequency (1/1 [Hz]/count) //131020 |
suupen | 13:cd42abff5173 | 165 | const float DT_onkaiHzN[3][7] = {// C1 D1 E1 F1 G1 A1 B1 // frequency (1/1 [Hz]/count) //131020 |
suupen | 0:e3f005984c2a | 166 | {30.8677, 34.6478, 38.8909, 41.2034, 46.2493, 51.9131, 58.2705}, // b |
suupen | 0:e3f005984c2a | 167 | {32.7032, 36.7081, 41.2034, 43.6535, 48.9994, 55.0000, 61.7354}, // nomal |
suupen | 0:e3f005984c2a | 168 | {34.6478, 38.8909, 43.6535, 46.2493, 51.9131, 58.2705, 65.4064}, // # |
suupen | 0:e3f005984c2a | 169 | }; |
suupen | 0:e3f005984c2a | 170 | |
suupen | 0:e3f005984c2a | 171 | |
suupen | 0:e3f005984c2a | 172 | // onkai data kara DT_onkaiHzN[][koko] "koko" no number ni henkan |
suupen | 0:e3f005984c2a | 173 | // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F |
suupen | 0:e3f005984c2a | 174 | const uint8_t DT_onkaiTrans[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 0, 1, 2, 3}; |
suupen | 0:e3f005984c2a | 175 | |
suupen | 0:e3f005984c2a | 176 | |
suupen | 0:e3f005984c2a | 177 | // tugi no hatuon siji |
suupen | 0:e3f005984c2a | 178 | onkai = data.onkai; |
suupen | 0:e3f005984c2a | 179 | |
suupen | 0:e3f005984c2a | 180 | okutabu = onkai & 0x0f; |
suupen | 0:e3f005984c2a | 181 | kaicho = DT_onkaiTrans[(onkai & 0xf0) >> 4]; |
suupen | 0:e3f005984c2a | 182 | |
suupen | 0:e3f005984c2a | 183 | switch (onkai) { |
suupen | 0:e3f005984c2a | 184 | case 0x00: |
suupen | 0:e3f005984c2a | 185 | // enso chu (tugi no hatuon nasi settei) |
suupen | 0:e3f005984c2a | 186 | // case 0xff to onaji syori |
suupen | 0:e3f005984c2a | 187 | case 0xff: |
suupen | 0:e3f005984c2a | 188 | // enso syuryo |
suupen | 0:e3f005984c2a | 189 | O_sound.syuuki = 0; // muon |
suupen | 0:e3f005984c2a | 190 | break; |
suupen | 0:e3f005984c2a | 191 | default: |
suupen | 0:e3f005984c2a | 192 | // enso chu & tugi no hatuon settei) |
suupen | 13:cd42abff5173 | 193 | //131020 O_sound.syuuki = 1000000 / (DT_onkaiHzN[data.hanon][kaicho] * (pow(2.0, ((double)okutabu - 1)))); //131020 |
suupen | 13:cd42abff5173 | 194 | O_sound.syuuki = 1000000 / (uint16_t)(DT_onkaiHzN[data.hanon][kaicho] * (pow(2.0, ((double)okutabu - 1)))); //131020 |
suupen | 0:e3f005984c2a | 195 | O_sound.envelope = data.envelope * 1000; |
suupen | 0:e3f005984c2a | 196 | O_sound.shokichienvelope = data.envelope * 1000; |
suupen | 0:e3f005984c2a | 197 | break; |
suupen | 0:e3f005984c2a | 198 | } |
suupen | 0:e3f005984c2a | 199 | |
suupen | 0:e3f005984c2a | 200 | // oto no syuturyoku jikan timer restart |
suupen | 0:e3f005984c2a | 201 | hatuon_jikan.reset(); |
suupen | 0:e3f005984c2a | 202 | keikajikan = data.time; |
suupen | 0:e3f005984c2a | 203 | } |
suupen | 0:e3f005984c2a | 204 | |
suupen | 0:e3f005984c2a | 205 | /****************************************************************************** |
suupen | 0:e3f005984c2a | 206 | Name : sound_ensoSyori() |
suupen | 0:e3f005984c2a | 207 | Parameters : none |
suupen | 0:e3f005984c2a | 208 | Returns : none |
suupen | 0:e3f005984c2a | 209 | Description : enso ji no tugino onpu data syutoku |
suupen | 0:e3f005984c2a | 210 | ******************************************************************************/ |
suupen | 0:e3f005984c2a | 211 | void Sound::sound_ensoSyori(void) { |
suupen | 15:d526205994e9 | 212 | |
suupen | 15:d526205994e9 | 213 | const sound_t END_DATA[] = { //@SS131110 |
suupen | 15:d526205994e9 | 214 | // hanon siji 0:b(flat) 1:tujo 2:#(sharp) //@SS131110 |
suupen | 15:d526205994e9 | 215 | // | C1 - B9 kan deno onkai(Gx ha 9x ni okikae te siji) 0xFF=end data //@SS131110 |
suupen | 15:d526205994e9 | 216 | // | | time (1/1[ms]/count) //@SS131110 |
suupen | 15:d526205994e9 | 217 | // | | | envelope(yoin) (1/1 [ms]/count) //@SS131110 |
suupen | 15:d526205994e9 | 218 | // | | | | //@SS131110 |
suupen | 15:d526205994e9 | 219 | {1,0xFF,0000,0} // end //@SS131110 |
suupen | 15:d526205994e9 | 220 | }; |
suupen | 15:d526205994e9 | 221 | sound_t data; //@SS131110 |
suupen | 0:e3f005984c2a | 222 | |
suupen | 0:e3f005984c2a | 223 | // enso data settei |
suupen | 0:e3f005984c2a | 224 | if((sound_sound() == false) // oto no syuturyoku jikan hantei |
suupen | 0:e3f005984c2a | 225 | & (onpu != NULL) // enso chu ka wo kakunin |
suupen | 0:e3f005984c2a | 226 | ){ |
suupen | 0:e3f005984c2a | 227 | // tugi no onpu data syutoku |
suupen | 15:d526205994e9 | 228 | //@SS131110 sound_t data = *onpu; //@SS131110 |
suupen | 15:d526205994e9 | 229 | data = *onpu; //@SS131110 |
suupen | 0:e3f005984c2a | 230 | if(data.onkai == 0xff){ |
suupen | 15:d526205994e9 | 231 | sound_sound(data); //@SS131110 |
suupen | 0:e3f005984c2a | 232 | onpu = NULL; |
suupen | 0:e3f005984c2a | 233 | } |
suupen | 0:e3f005984c2a | 234 | else{ |
suupen | 0:e3f005984c2a | 235 | // tugi no hatuon siji |
suupen | 0:e3f005984c2a | 236 | sound_sound(data); |
suupen | 0:e3f005984c2a | 237 | onpu++; |
suupen | 0:e3f005984c2a | 238 | } |
suupen | 0:e3f005984c2a | 239 | |
suupen | 0:e3f005984c2a | 240 | } |
suupen | 15:d526205994e9 | 241 | else if(onpu == NULL){ //@SS131110 |
suupen | 15:d526205994e9 | 242 | data = *END_DATA; //@SS131110 |
suupen | 15:d526205994e9 | 243 | sound_sound(data); //@SS131110 |
suupen | 15:d526205994e9 | 244 | } |
suupen | 0:e3f005984c2a | 245 | |
suupen | 0:e3f005984c2a | 246 | } |
suupen | 0:e3f005984c2a | 247 | |
suupen | 0:e3f005984c2a | 248 | |
suupen | 0:e3f005984c2a | 249 | |
suupen | 0:e3f005984c2a | 250 | |
suupen | 0:e3f005984c2a | 251 | /****************************************************************************** |
suupen | 0:e3f005984c2a | 252 | Name : sound_enso() |
suupen | 0:e3f005984c2a | 253 | Parameters : - |
suupen | 0:e3f005984c2a | 254 | Returns : - |
suupen | 0:e3f005984c2a | 255 | Description : - |
suupen | 0:e3f005984c2a | 256 | ******************************************************************************/ |
suupen | 0:e3f005984c2a | 257 | //*********************************************************** |
suupen | 0:e3f005984c2a | 258 | // load enso data(mbed drive) |
suupen | 0:e3f005984c2a | 259 | // Parameter : "/local/enso.txt" (data name = enso.txt) |
suupen | 0:e3f005984c2a | 260 | //*********************************************************** |
suupen | 0:e3f005984c2a | 261 | bool Sound::sound_enso(char *path) { |
suupen | 0:e3f005984c2a | 262 | int32_t ans; |
suupen | 0:e3f005984c2a | 263 | |
suupen | 0:e3f005984c2a | 264 | // file open |
suupen | 0:e3f005984c2a | 265 | FILE *stm = fopen(path,"r"); |
suupen | 0:e3f005984c2a | 266 | if(stm == NULL){ |
suupen | 0:e3f005984c2a | 267 | return (false); |
suupen | 0:e3f005984c2a | 268 | } |
suupen | 0:e3f005984c2a | 269 | |
suupen | 0:e3f005984c2a | 270 | // enso data set |
suupen | 0:e3f005984c2a | 271 | uint8_t i = 0; |
suupen | 0:e3f005984c2a | 272 | do{ |
suupen | 0:e3f005984c2a | 273 | ans = fscanf(stm, "%x%d%d", &enso[i].onkai, &enso[i].time, &enso[i].envelope); |
suupen | 0:e3f005984c2a | 274 | i++; |
suupen | 0:e3f005984c2a | 275 | |
suupen | 0:e3f005984c2a | 276 | }while((ans != EOF) & (i < 100)); |
suupen | 0:e3f005984c2a | 277 | |
suupen | 0:e3f005984c2a | 278 | fclose(stm); |
suupen | 0:e3f005984c2a | 279 | |
suupen | 0:e3f005984c2a | 280 | ensoDataTable = enso; |
suupen | 0:e3f005984c2a | 281 | |
suupen | 0:e3f005984c2a | 282 | return (true); |
suupen | 0:e3f005984c2a | 283 | } |
suupen | 0:e3f005984c2a | 284 | |
suupen | 0:e3f005984c2a | 285 | //*********************************************************************** |
suupen | 0:e3f005984c2a | 286 | // load enso data(program data table) |
suupen | 0:e3f005984c2a | 287 | // Parameter : (Sound::sound_t*)DEMEKIN (data table name = DEMEKIN) |
suupen | 0:e3f005984c2a | 288 | //*********************************************************************** |
suupen | 0:e3f005984c2a | 289 | void Sound::sound_enso(Sound::sound_t* onpudata) { |
suupen | 0:e3f005984c2a | 290 | ensoDataTable = onpudata; |
suupen | 0:e3f005984c2a | 291 | } |
suupen | 0:e3f005984c2a | 292 | |
suupen | 0:e3f005984c2a | 293 | |
suupen | 0:e3f005984c2a | 294 | //************************* |
suupen | 0:e3f005984c2a | 295 | // enso jyotai check |
suupen | 0:e3f005984c2a | 296 | // ture : enso chu |
suupen | 0:e3f005984c2a | 297 | // false: enso syuryo |
suupen | 0:e3f005984c2a | 298 | //************************* |
suupen | 0:e3f005984c2a | 299 | bool Sound::sound_enso(void) { |
suupen | 0:e3f005984c2a | 300 | bool ans; |
suupen | 0:e3f005984c2a | 301 | |
suupen | 0:e3f005984c2a | 302 | if(onpu != NULL){ |
suupen | 0:e3f005984c2a | 303 | ans = true; |
suupen | 0:e3f005984c2a | 304 | } |
suupen | 0:e3f005984c2a | 305 | else{ |
suupen | 0:e3f005984c2a | 306 | ans = false; |
suupen | 0:e3f005984c2a | 307 | } |
suupen | 0:e3f005984c2a | 308 | return (ans); |
suupen | 0:e3f005984c2a | 309 | } |
suupen | 0:e3f005984c2a | 310 | |
suupen | 0:e3f005984c2a | 311 | //******************* |
suupen | 0:e3f005984c2a | 312 | // enso start / stop |
suupen | 0:e3f005984c2a | 313 | // true : start |
suupen | 0:e3f005984c2a | 314 | // false: stop |
suupen | 0:e3f005984c2a | 315 | //******************* |
suupen | 0:e3f005984c2a | 316 | void Sound::sound_enso(bool siji){ |
suupen | 0:e3f005984c2a | 317 | if(siji == true){ |
suupen | 0:e3f005984c2a | 318 | onpu = (sound_t*)ensoDataTable; |
suupen | 0:e3f005984c2a | 319 | } |
suupen | 0:e3f005984c2a | 320 | else{ |
suupen | 0:e3f005984c2a | 321 | onpu = NULL; |
suupen | 0:e3f005984c2a | 322 | } |
suupen | 0:e3f005984c2a | 323 | } |
suupen | 0:e3f005984c2a | 324 | |
suupen | 0:e3f005984c2a | 325 | |
suupen | 0:e3f005984c2a | 326 | |
suupen | 0:e3f005984c2a | 327 | |
suupen | 0:e3f005984c2a | 328 | |
suupen | 0:e3f005984c2a | 329 | /****************************************************************************** |
suupen | 0:e3f005984c2a | 330 | Name : enso data sample |
suupen | 0:e3f005984c2a | 331 | Parameters : - |
suupen | 0:e3f005984c2a | 332 | Returns : - |
suupen | 0:e3f005984c2a | 333 | Description : - |
suupen | 0:e3f005984c2a | 334 | ******************************************************************************/ |
suupen | 0:e3f005984c2a | 335 | /* |
suupen | 0:e3f005984c2a | 336 | //------------------------------ |
suupen | 0:e3f005984c2a | 337 | // "demekin no uta" merody data |
suupen | 0:e3f005984c2a | 338 | //------------------------------ |
suupen | 0:e3f005984c2a | 339 | const sound_t DEMEKIN[] = { |
suupen | 0:e3f005984c2a | 340 | // onkai,hatuon jikan[ms] |
suupen | 0:e3f005984c2a | 341 | {1,0xC5,600,500}, // de |
suupen | 0:e3f005984c2a | 342 | {1,0xE5,600,500}, // me |
suupen | 0:e3f005984c2a | 343 | {1,0x95,600,500}, // kin |
suupen | 0:e3f005984c2a | 344 | {1,0x00,600,500}, |
suupen | 0:e3f005984c2a | 345 | |
suupen | 0:e3f005984c2a | 346 | {1,0xC5,600,500}, // de |
suupen | 0:e3f005984c2a | 347 | {1,0xE5,600,500}, // me |
suupen | 0:e3f005984c2a | 348 | {1,0x95,600,500}, // kin |
suupen | 0:e3f005984c2a | 349 | {1,0x00,600,500}, |
suupen | 0:e3f005984c2a | 350 | |
suupen | 0:e3f005984c2a | 351 | {1,0xC5,600,500}, // de |
suupen | 0:e3f005984c2a | 352 | {1,0xE5,600,500}, // me |
suupen | 0:e3f005984c2a | 353 | {1,0x95,600,500}, // kin |
suupen | 0:e3f005984c2a | 354 | {1,0x95,600,500}, // no |
suupen | 0:e3f005984c2a | 355 | {1,0x95,150,500}, // shi |
suupen | 0:e3f005984c2a | 356 | {1,0x00,900,500}, |
suupen | 0:e3f005984c2a | 357 | {1,0xE5,750,500}, // po |
suupen | 0:e3f005984c2a | 358 | {1,0x00,450,500}, |
suupen | 0:e3f005984c2a | 359 | |
suupen | 0:e3f005984c2a | 360 | {1,0xC5,600,500}, // de |
suupen | 0:e3f005984c2a | 361 | {1,0xE5,600,500}, // me |
suupen | 0:e3f005984c2a | 362 | {1,0x95,600,500}, // kin |
suupen | 0:e3f005984c2a | 363 | {1,0x00,600,500}, |
suupen | 0:e3f005984c2a | 364 | |
suupen | 0:e3f005984c2a | 365 | {1,0xC5,600,500}, // de |
suupen | 0:e3f005984c2a | 366 | {1,0xE5,600,500}, // me |
suupen | 0:e3f005984c2a | 367 | {1,0x95,600,500}, // kin |
suupen | 0:e3f005984c2a | 368 | {1,0x00,600,500}, |
suupen | 0:e3f005984c2a | 369 | |
suupen | 0:e3f005984c2a | 370 | {1,0x95,600,500}, // ju |
suupen | 0:e3f005984c2a | 371 | {1,0xE5,600,500}, // go |
suupen | 0:e3f005984c2a | 372 | {1,0xD5,600,500}, // n |
suupen | 0:e3f005984c2a | 373 | {1,0xC5,600,500}, // no |
suupen | 0:e3f005984c2a | 374 | {1,0xE5,150,500}, // shi |
suupen | 0:e3f005984c2a | 375 | {1,0x00,900,500}, |
suupen | 0:e3f005984c2a | 376 | {1,0xC5,750,500}, // po |
suupen | 0:e3f005984c2a | 377 | {1,0x00,1350,500}, |
suupen | 0:e3f005984c2a | 378 | |
suupen | 0:e3f005984c2a | 379 | {1,0xFF,0,0}, // end |
suupen | 0:e3f005984c2a | 380 | |
suupen | 0:e3f005984c2a | 381 | }; |
suupen | 0:e3f005984c2a | 382 | |
suupen | 0:e3f005984c2a | 383 | //--------------------------------- |
suupen | 0:e3f005984c2a | 384 | // "westminster chime" merody data |
suupen | 0:e3f005984c2a | 385 | //--------------------------------- |
suupen | 0:e3f005984c2a | 386 | const sound_t WESTMINSTER[] = { |
suupen | 0:e3f005984c2a | 387 | // onkai,hatuon jikan[ms] |
suupen | 0:e3f005984c2a | 388 | {1,0xA4,1200,1000}, |
suupen | 0:e3f005984c2a | 389 | {1,0xF4,1200,1000}, |
suupen | 0:e3f005984c2a | 390 | {1,0x94,1200,1000}, |
suupen | 0:e3f005984c2a | 391 | {1,0xC4,2400,1000}, |
suupen | 0:e3f005984c2a | 392 | |
suupen | 0:e3f005984c2a | 393 | {1,0xC4,1200,1000}, |
suupen | 0:e3f005984c2a | 394 | {1,0x94,1200,1000}, |
suupen | 0:e3f005984c2a | 395 | {1,0xA4,1200,1000}, |
suupen | 0:e3f005984c2a | 396 | {1,0xF4,2400,1000}, |
suupen | 0:e3f005984c2a | 397 | |
suupen | 0:e3f005984c2a | 398 | |
suupen | 0:e3f005984c2a | 399 | {1,0xFF,0,0}, // end |
suupen | 0:e3f005984c2a | 400 | }; |
suupen | 0:e3f005984c2a | 401 | |
suupen | 0:e3f005984c2a | 402 | //------------------------------ |
suupen | 0:e3f005984c2a | 403 | // "ramen chime" merody data |
suupen | 0:e3f005984c2a | 404 | //------------------------------ |
suupen | 0:e3f005984c2a | 405 | const sound_t RAMEN[] = { |
suupen | 0:e3f005984c2a | 406 | // onkai,hatuon jikan[ms] |
suupen | 0:e3f005984c2a | 407 | {1,0xC5,300,500}, |
suupen | 0:e3f005984c2a | 408 | {1,0xD5,300,500}, |
suupen | 0:e3f005984c2a | 409 | {1,0xE5,1200,500}, |
suupen | 0:e3f005984c2a | 410 | {1,0xD5,600,500}, |
suupen | 0:e3f005984c2a | 411 | {1,0xC5,1200,500}, |
suupen | 0:e3f005984c2a | 412 | |
suupen | 0:e3f005984c2a | 413 | {1,0xC5,300,500}, |
suupen | 0:e3f005984c2a | 414 | {1,0xD5,300,500}, |
suupen | 0:e3f005984c2a | 415 | {1,0xE5,300,500}, |
suupen | 0:e3f005984c2a | 416 | {1,0xD5,300,500}, |
suupen | 0:e3f005984c2a | 417 | {1,0xC5,300,500}, |
suupen | 0:e3f005984c2a | 418 | {1,0xD5,1800,500}, |
suupen | 0:e3f005984c2a | 419 | |
suupen | 0:e3f005984c2a | 420 | |
suupen | 0:e3f005984c2a | 421 | {1,0xFF,0,0}, // end |
suupen | 0:e3f005984c2a | 422 | }; |
suupen | 0:e3f005984c2a | 423 | */ |
suupen | 0:e3f005984c2a | 424 | |
suupen | 0:e3f005984c2a | 425 | |
suupen | 0:e3f005984c2a | 426 | |
suupen | 0:e3f005984c2a | 427 | |
suupen | 0:e3f005984c2a | 428 | |
suupen | 0:e3f005984c2a | 429 | |
suupen | 0:e3f005984c2a | 430 | |
suupen | 0:e3f005984c2a | 431 | |
suupen | 0:e3f005984c2a | 432 | |
suupen | 0:e3f005984c2a | 433 | |
suupen | 0:e3f005984c2a | 434 | |
suupen | 0:e3f005984c2a | 435 | |
suupen | 0:e3f005984c2a | 436 | |
suupen | 0:e3f005984c2a | 437 | |
suupen | 0:e3f005984c2a | 438 | |
suupen | 0:e3f005984c2a | 439 | |
suupen | 0:e3f005984c2a | 440 | |
suupen | 0:e3f005984c2a | 441 | |
suupen | 0:e3f005984c2a | 442 | |
suupen | 0:e3f005984c2a | 443 | |
suupen | 0:e3f005984c2a | 444 | |
suupen | 0:e3f005984c2a | 445 | |
suupen | 0:e3f005984c2a | 446 | |
suupen | 0:e3f005984c2a | 447 | |
suupen | 0:e3f005984c2a | 448 | |
suupen | 0:e3f005984c2a | 449 | |
suupen | 0:e3f005984c2a | 450 | |
suupen | 0:e3f005984c2a | 451 | |
suupen | 0:e3f005984c2a | 452 | |
suupen | 0:e3f005984c2a | 453 | |
suupen | 0:e3f005984c2a | 454 | |
suupen | 0:e3f005984c2a | 455 | |
suupen | 0:e3f005984c2a | 456 | |
suupen | 0:e3f005984c2a | 457 | |
suupen | 0:e3f005984c2a | 458 | |
suupen | 0:e3f005984c2a | 459 | |
suupen | 0:e3f005984c2a | 460 | |
suupen | 0:e3f005984c2a | 461 | |
suupen | 0:e3f005984c2a | 462 | |
suupen | 0:e3f005984c2a | 463 | |
suupen | 0:e3f005984c2a | 464 | |
suupen | 0:e3f005984c2a | 465 | |
suupen | 0:e3f005984c2a | 466 | |
suupen | 0:e3f005984c2a | 467 | |
suupen | 0:e3f005984c2a | 468 | |
suupen | 0:e3f005984c2a | 469 | |
suupen | 0:e3f005984c2a | 470 | |
suupen | 0:e3f005984c2a | 471 | |
suupen | 0:e3f005984c2a | 472 | |
suupen | 0:e3f005984c2a | 473 | |
suupen | 0:e3f005984c2a | 474 | |
suupen | 0:e3f005984c2a | 475 | |
suupen | 0:e3f005984c2a | 476 | |
suupen | 0:e3f005984c2a | 477 | |
suupen | 13:cd42abff5173 | 478 | |
suupen | 15:d526205994e9 | 479 |