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