Mercurial > hg > Members > masakoha > seminar
annotate 2014/Aug_19th.html @ 32:1b92285a767a
add 0804
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 04 Aug 2015 19:45:57 +0900 |
parents | ff03dd29fd52 |
children |
rev | line source |
---|---|
0 | 1 <!DOCTYPE html> |
2 <html> | |
3 <head> | |
4 <meta http-equiv="content-type" content="text/html;charset=utf-8"> | |
5 <title>22st,July</title> | |
6 | |
7 <!-- | |
8 Notes on CSS media types used: | |
9 | |
10 1) projection -> slideshow mode (display one slide at-a-time; hide all others) | |
11 2) screen -> outline mode (display all slides-at-once on screen) | |
12 3) print -> print (and print preview) | |
13 | |
14 Note: toggle between projection/screen (that is, slideshow/outline) mode using t-key | |
15 | |
16 Questions, comments? | |
17 - send them along to the mailinglist/forum online @ http://groups.google.com/group/webslideshow | |
18 --> | |
19 | |
20 <!-- styles --> | |
21 <style media="screen,projection"> | |
22 | |
23 html, | |
24 body, | |
25 .presentation { margin: 0; padding: 0; } | |
26 | |
27 .slide { display: none; | |
28 position: absolute; | |
29 top: 0; left: 0; | |
30 margin: 0; | |
31 border: none; | |
32 padding: 2% 4% 0% 4%; /* css note: order is => top right bottom left */ | |
33 -moz-box-sizing: border-box; | |
34 -webkit-box-sizing: border-box; | |
35 box-sizing: border-box; | |
36 width: 100%; height: 100%; /* css note: lets use border-box; no need to add padding+border to get to 100% */ | |
37 overflow-x: hidden; overflow-y: auto; | |
38 z-index: 2; | |
39 } | |
40 | |
41 .slide.current { display: block; } /* only display current slide in projection mode */ | |
42 | |
43 .slide .stepcurrent { color: black; } | |
44 .slide .step { color: silver; } /* or hide next steps e.g. .step { visibility: hidden; } */ | |
45 | |
46 .slide { | |
47 /* | |
48 background-image: -webkit-linear-gradient(top, blue, aqua, blue, aqua); | |
49 background-image: -moz-linear-gradient(top, blue, aqua, blue, aqua); | |
50 */ | |
51 } | |
52 </style> | |
53 | |
54 <style media="screen"> | |
55 .slide { border-top: 1px solid #888; } | |
56 .slide:first-child { border: none; } | |
57 </style> | |
58 | |
59 <style media="print"> | |
60 .slide { page-break-inside: avoid; } | |
61 .slide h1 { page-break-after: avoid; } | |
62 .slide ul { page-break-inside: avoid; } | |
63 </style> | |
64 | |
65 | |
66 <!-- add js lib (jquery) --> | |
67 <script src="js/jquery-1.7.min.js"></script> | |
68 | |
69 <!-- S6 JS --> | |
70 <script src="js/jquery.slideshow.js"></script> | |
71 <script src="js/jquery.slideshow.counter.js"></script> | |
72 <script src="js/jquery.slideshow.controls.js"></script> | |
73 <script> | |
74 $(document).ready( function() { | |
75 Slideshow.init(); | |
76 | |
77 // Example 2: Start Off in Outline Mode | |
78 // Slideshow.init( { mode: 'outline' } ); | |
79 | |
80 // Example 3: Use Custom Transition | |
81 // Slideshow.transition = transitionScrollUp; | |
82 // Slideshow.init(); | |
83 | |
84 // Example 4: Start Off in Autoplay Mode with Custom Transition | |
85 // Slideshow.transition = transitionScrollUp; | |
86 // Slideshow.init( { mode: 'autoplay' } ); | |
87 } ); | |
88 </script> | |
89 | |
90 </head> | |
91 <body> | |
92 | |
93 | |
94 <div class="presentation"> | |
95 | |
96 <div class='slide cover'> | |
97 <table width="90%" height="90%" border="0" align="center"> | |
98 <tr> | |
99 <td><div align="center"> | |
100 <h1>マルチコアソフトウェアシンセサイザー(仮)</h1> | |
101 </div> | |
102 </td> | |
103 </tr> | |
104 <tr> | |
105 <td><div align="right"> | |
106 <name>Masataka Kohagura 22th June,2014</name> | |
107 </div></td> | |
108 </tr> | |
109 </tr> | |
110 </table> | |
111 </div> | |
112 | |
113 | |
114 <div id="cover"> | |
115 <h1>研究目的</h1> | |
116 <p> | |
117 コンピュータ上で作曲を行うときは、ハードウェアシンセサイザーの音を録音するのではなく、ソフトウェアシンセサイザー(以下ソフトシンセ)で収録することが主流となっている。 | |
118 </p> | |
119 <p> | |
1 | 120 ソフトシンセのマルチコア化は進んでいる。しかし、現状としてはマルチコアで駆動しているわけではなく、1つのコアだけに負荷がかかるものが多い。 |
121 </p> | |
122 <p> | |
123 作曲をする上ではソフトシンセを複数立ち上げることが基本となっている。 | |
0 | 124 また、オシレーターの複数使用や Filter による波形編集を重ねると計算量が大きくなっていくため、ソフトシンセ単体の動作を軽量化する必要がある。<br> |
125 </p> | |
126 <p> | |
127 また、実用的なシンセサイザーは入力に対するレスポンスが必須となるので、計算量が多くなっても入力から出力までの遅延を抑える必要がある。 | |
128 </p> | |
129 <p> | |
130 (軽量化しながら音を良くしたいが、抽象的すぎて評価する点がみつけづらい)<br> | |
131 音がいいって何??<br> | |
132 評価どうするの?? | |
133 </p> | |
134 </div> | |
135 | |
136 | |
137 <div id="cover"> | |
138 <h1>今週までの作業</h1> | |
139 <ul> | |
140 <li> | |
141 Cerium にて SDL_audio.h を使用して音を出せるようにした。(単音出力) | |
142 </li> | |
143 <li> | |
144 三角波、矩形波の実装 | |
145 </li> | |
1 | 146 <li> |
147 MIDI コントローラーからの入力を受け付ける(途中) | |
148 </li> | |
0 | 149 </ul> |
150 </div> | |
151 | |
152 <div id="cover"> | |
153 <h1>SDL</h1> | |
154 <ul> | |
155 <li> | |
156 SDL : Simple DirectMedia Layer<br> | |
157 マルチメディア関係のソフトウェアを開発するための、グラフィックやサウンド等の API を提供するライブラリ。 | |
158 </li> | |
159 <li> | |
160 Windows, Mac OS X, Linux, iOS, Android をサポート | |
161 </li> | |
162 <li> | |
163 C,C++<br> | |
164 C#,Python もいけるみたい?? | |
165 </li> | |
166 </ul> | |
167 </div> | |
168 | |
169 <div id="cover"> | |
170 <h1>SDL_audio.h(1/3)</h1> | |
171 <ul> | |
172 <li> | |
173 SDL に含まれている、オーディオ回りのライブラリ | |
174 </li> | |
175 <li> | |
176 オーディオ情報(音量、ステレオ、sampling rateなど)を SDL_AudioSpec(構造体)として持っている。 | |
177 </li> | |
178 <pre> | |
179 <code> | |
180 typedef struct SDL_AudioSpec { | |
181 int freq; /** DSP frequency -- samples per second */ | |
182 Uint16 format; /** Audio data format */ | |
183 Uint8 channels; /** Number of channels: 1 mono, 2 stereo */ | |
184 Uint8 silence; /** Audio buffer silence value (calculated) */ | |
185 Uint16 samples; /** Audio buffer size in samples (power of 2) */ | |
186 Uint16 padding; /** Necessary for some compile environments */ | |
187 Uint32 size; /** Audio buffer size in bytes (calculated) */ | |
188 void (SDLCALL *callback)(void *userdata, Uint8 *stream, int len); | |
189 void *userdata; | |
190 } SDL_AudioSpec; | |
191 </code> | |
192 </ul> | |
193 </pre> | |
194 </div> | |
195 | |
196 <div id="cover"> | |
197 <h1>SDL_audio.h(2/3)</h1> | |
198 <ul> | |
199 <li> | |
200 SDL_AudioSpec を SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained);という関数に渡すことによって、音が再生される。 | |
201 </li> | |
202 <pre> | |
203 <code> | |
204 SDL_AudioSpec Desired; | |
205 SDL_AudioSpec Obtained; | |
206 | |
207 int main(int argc, char *argv[]) | |
208 { | |
209 printf("Freq:%f\n",Frequency); | |
210 Desired.freq= 44100; /* Sampling rate: 44100Hz */ | |
211 Desired.format= AUDIO_S16LSB; /* 16-bit signed audio */ | |
212 Desired.channels= 1; /* Mono */ | |
213 Desired.samples= 8192; /* Buffer size: 8K = 0.37 sec. */ | |
214 Desired.callback= callback; | |
215 Desired.userdata= NULL; | |
216 | |
217 SDL_OpenAudio(&Desired, &Obtained); | |
218 SDL_PauseAudio(0); | |
219 SDL_Delay(200); | |
220 SDL_Quit(); | |
221 return 0; | |
222 } | |
223 </code> | |
224 </ul> | |
225 </pre> | |
226 </div> | |
227 | |
228 <div id="cover"> | |
229 <h1>SDL_audio.h(3/3)</h1> | |
230 <ul> | |
231 <li> | |
232 SDL_AudioSpecにSDLCALL 関数が含まれている。ここで、音の波形を生成しておき、 SDL_OpenAudioにて音を再生する。 | |
233 </li> | |
234 <pre> | |
235 <code> | |
236 void callback(void *userdata,Uint8 *stream,int len){ | |
237 | |
238 AudioDataPtr au = (AudioData*)userdata; | |
239 | |
240 char *waveform_name = au->waveform_name; | |
241 double frequency = au->frequency; | |
242 int volume = au->volume; | |
243 static unsigned int step = 0; | |
244 Uint16 *frames = (Uint16 *) stream; | |
245 int framesize = len / 2; | |
246 | |
247 if(strcmp(waveform_name, "tri")){ | |
248 | |
249 for (int i = 0; i < framesize ; i++, step++){ | |
250 frames[i] = tri(step * frequency / Obtained.freq) * volume ; | |
251 } | |
252 | |
253 }else if(strcmp(waveform_name, "sqr")){ | |
254 | |
255 for (int i = 0; i < framesize ; i++, step++){ | |
256 frames[i] = square(step * frequency / Obtained.freq) * volume ; | |
257 } | |
258 | |
259 } | |
260 } | |
261 </code> | |
262 </ul> | |
263 </pre> | |
264 </div> | |
265 | |
3
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
266 <div id="cover"> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
267 <h1>波形の生成</h1> |
1 | 268 |
3
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
269 <p>矩形波</p> |
1 | 270 <pre> |
271 <code> | |
3
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
272 double |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
273 square(double t){ |
1 | 274 double decimal_part = t - abs(t); |
275 return decimal_part < 0.5 ? 1 : -1; | |
276 } | |
277 </code> | |
3
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
278 </pre> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
279 |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
280 <img src="./images/sqrWave.png" width="50%" height=""> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
281 |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
282 </div> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
283 |
1 | 284 |
3
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
285 |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
286 <div id="cover"> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
287 <h1>波形の生成</h1> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
288 |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
289 <p>三角波</p> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
290 |
1 | 291 <pre> |
292 <code> | |
3
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
293 double |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
294 tri(double t){ |
1 | 295 |
296 double decimal_part = t - abs(t); | |
297 | |
298 if(abs(t) % 2 != 0){ | |
299 return decimal_part < 0.5 ? decimal_part : 1 - decimal_part; | |
300 }else{ | |
301 return decimal_part < 0.5 ? -decimal_part : 1 - decimal_part; | |
302 } | |
303 } | |
3
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
304 |
1 | 305 </code> |
3
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
306 </pre> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
307 |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
308 <img src="./images/triWave.png" width="50%" height=""> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
309 |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
310 </div> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
311 |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
312 |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
313 |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
314 <div id="cover"> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
315 <h1>波形の生成</h1> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
316 |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
317 <p>のこぎり波</p> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
318 <pre> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
319 <code> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
320 double |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
321 saw(double t) |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
322 { |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
323 double decimal_part = t - abs(t); |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
324 return decimal_part; |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
325 } |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
326 </code> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
327 </pre> |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
328 |
b798246629dd
fix Aug_19th
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
329 <img src="./images/sawWave.png" width="50%" height=""> |
1 | 330 </div> |
331 | |
332 | |
333 | |
334 <div id="cover"> | |
335 <h1>いましていること</h1> | |
336 <ul> | |
337 <li> | |
338 MIDI I/O は PortMidi を使用して実装中である。 | |
339 </li> | |
340 <li> | |
341 Multi Platform 対応、 | |
342 Windows (MME)、 | |
343 Mac (CoreMIDI)、 | |
344 Linux (ALSA) | |
345 </li> | |
346 </ul> | |
347 </pre> | |
348 </div> | |
349 | |
0 | 350 </div> <!-- presentation --> |
351 </body> | |
352 </html> |