Mercurial > hg > Members > masakoha > seminar
comparison Sep16th.html @ 6:379b91b4f7b7
add Sep16th.html
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 16 Sep 2014 16:06:57 +0900 |
parents | |
children | 0db5a6582d52 |
comparison
equal
deleted
inserted
replaced
5:353a1a3035ea | 6:379b91b4f7b7 |
---|---|
1 <!DOCTYPE html> | |
2 <html> | |
3 <head> | |
4 <meta http-equiv="content-type" content="text/html;charset=utf-8"> | |
5 <title>26th,August</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 26th 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> | |
120 ソフトシンセのマルチコア化は進んでいる。しかし、現状としてはマルチコアで駆動しているわけではなく、1つのコアだけに負荷がかかるものが多い。 | |
121 </p> | |
122 <p> | |
123 作曲をする上ではソフトシンセを複数立ち上げることが基本となっている。 | |
124 また、オシレーターの複数使用や Filter による波形編集を重ねると計算量が大きくなっていくため、ソフトシンセ単体の動作を軽量化する必要がある。<br> | |
125 </p> | |
126 <p> | |
127 また、実用的なシンセサイザーは入力に対するレスポンスが必須となるので、計算量が多くなっても入力から出力までの遅延を抑える必要がある。 | |
128 </p> | |
129 <p> | |
130 (軽量化しながら音を良くしたいが、抽象的すぎて評価する点がみつけづらい)<br> | |
131 音がいいって何??<br> | |
132 評価どうするの?? | |
133 </p> | |
134 </div> | |
135 | |
136 <div id="cover"> | |
137 <h1>近況報告</h1> | |
138 <ul> | |
139 <li> | |
140 ゲームクリエイター就職大作戦に参加(-9/21) | |
141 </li> | |
142 <li> | |
143 Unreal Engine 4 の書籍を Epic 社河崎さんから頂きました。 | |
144 </li> | |
145 <li> | |
146 Unreal Engine 4 の動作環境について色々調べてみた。 | |
147 </li> | |
148 </ul> | |
149 </div> | |
150 | |
151 <div id="cover"> | |
152 <h1>近況報告</h1> | |
153 <ul> | |
154 <li> | |
155 ゲームクリエイター就職大作戦に参加(-9/21) | |
156 </li> | |
157 <li> | |
158 Unreal Engine 4 の書籍を Epic 社河崎さんから頂きました。 | |
159 </li> | |
160 <li> | |
161 Unreal Engine 4 の動作環境について色々調べてみた。 | |
162 </li> | |
163 </ul> | |
164 </div> | |
165 | |
166 <div id="cover"> | |
167 <h1>今週までの作業</h1> | |
168 <ul> | |
169 <li> | |
170 Cerium にて SDL_audio.h を使用して音を出せるようにした。(単音出力) | |
171 </li> | |
172 <li> | |
173 三角波、矩形波の実装 | |
174 </li> | |
175 <li> | |
176 MIDI コントローラーからの入力を受け付ける(途中) | |
177 </li> | |
178 </ul> | |
179 </div> | |
180 | |
181 <div id="cover"> | |
182 <h1>SDL</h1> | |
183 <ul> | |
184 <li> | |
185 SDL : Simple DirectMedia Layer<br> | |
186 マルチメディア関係のソフトウェアを開発するための、グラフィックやサウンド等の API を提供するライブラリ。 | |
187 </li> | |
188 <li> | |
189 Windows, Mac OS X, Linux, iOS, Android をサポート | |
190 </li> | |
191 <li> | |
192 C,C++<br> | |
193 C#,Python もいけるみたい?? | |
194 </li> | |
195 </ul> | |
196 </div> | |
197 | |
198 <div id="cover"> | |
199 <h1>SDL_audio.h(1/3)</h1> | |
200 <ul> | |
201 <li> | |
202 SDL に含まれている、オーディオ回りのライブラリ | |
203 </li> | |
204 <li> | |
205 オーディオ情報(音量、ステレオ、sampling rateなど)を SDL_AudioSpec(構造体)として持っている。 | |
206 </li> | |
207 <pre> | |
208 <code> | |
209 typedef struct SDL_AudioSpec { | |
210 int freq; /** DSP frequency -- samples per second */ | |
211 Uint16 format; /** Audio data format */ | |
212 Uint8 channels; /** Number of channels: 1 mono, 2 stereo */ | |
213 Uint8 silence; /** Audio buffer silence value (calculated) */ | |
214 Uint16 samples; /** Audio buffer size in samples (power of 2) */ | |
215 Uint16 padding; /** Necessary for some compile environments */ | |
216 Uint32 size; /** Audio buffer size in bytes (calculated) */ | |
217 void (SDLCALL *callback)(void *userdata, Uint8 *stream, int len); | |
218 void *userdata; | |
219 } SDL_AudioSpec; | |
220 </code> | |
221 </ul> | |
222 </pre> | |
223 </div> | |
224 | |
225 <div id="cover"> | |
226 <h1>SDL_audio.h(2/3)</h1> | |
227 <ul> | |
228 <li> | |
229 SDL_AudioSpec を SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained);という関数に渡すことによって、音が再生される。 | |
230 </li> | |
231 <pre> | |
232 <code> | |
233 SDL_AudioSpec Desired; | |
234 SDL_AudioSpec Obtained; | |
235 | |
236 int main(int argc, char *argv[]) | |
237 { | |
238 printf("Freq:%f\n",Frequency); | |
239 Desired.freq= 44100; /* Sampling rate: 44100Hz */ | |
240 Desired.format= AUDIO_S16LSB; /* 16-bit signed audio */ | |
241 Desired.channels= 1; /* Mono */ | |
242 Desired.samples= 8192; /* Buffer size: 8K = 0.37 sec. */ | |
243 Desired.callback= callback; | |
244 Desired.userdata= NULL; | |
245 | |
246 SDL_OpenAudio(&Desired, &Obtained); | |
247 SDL_PauseAudio(0); | |
248 SDL_Delay(200); | |
249 SDL_Quit(); | |
250 return 0; | |
251 } | |
252 </code> | |
253 </ul> | |
254 </pre> | |
255 </div> | |
256 | |
257 <div id="cover"> | |
258 <h1>SDL_audio.h(3/3)</h1> | |
259 <ul> | |
260 <li> | |
261 SDL_AudioSpecにSDLCALL 関数が含まれている。ここで、音の波形を生成しておき、 SDL_OpenAudioにて音を再生する。 | |
262 </li> | |
263 <pre> | |
264 <code> | |
265 void callback(void *userdata,Uint8 *stream,int len){ | |
266 | |
267 AudioDataPtr au = (AudioData*)userdata; | |
268 | |
269 char *waveform_name = au->waveform_name; | |
270 double frequency = au->frequency; | |
271 int volume = au->volume; | |
272 static unsigned int step = 0; | |
273 Uint16 *frames = (Uint16 *) stream; | |
274 int framesize = len / 2; | |
275 | |
276 if(strcmp(waveform_name, "tri")){ | |
277 | |
278 for (int i = 0; i < framesize ; i++, step++){ | |
279 frames[i] = tri(step * frequency / Obtained.freq) * volume ; | |
280 } | |
281 | |
282 }else if(strcmp(waveform_name, "sqr")){ | |
283 | |
284 for (int i = 0; i < framesize ; i++, step++){ | |
285 frames[i] = square(step * frequency / Obtained.freq) * volume ; | |
286 } | |
287 | |
288 } | |
289 } | |
290 </code> | |
291 </ul> | |
292 </pre> | |
293 </div> | |
294 | |
295 <div id="cover"> | |
296 <h1>波形の生成</h1> | |
297 | |
298 <p>矩形波</p> | |
299 <pre> | |
300 <code> | |
301 double | |
302 square(double t){ | |
303 double decimal_part = t - abs(t); | |
304 return decimal_part < 0.5 ? 1 : -1; | |
305 } | |
306 </code> | |
307 </pre> | |
308 | |
309 <img src="./images/sqrWave.png" width="50%" height=""> | |
310 | |
311 </div> | |
312 | |
313 | |
314 | |
315 <div id="cover"> | |
316 <h1>波形の生成</h1> | |
317 | |
318 <p>三角波</p> | |
319 | |
320 <pre> | |
321 <code> | |
322 double | |
323 tri(double t){ | |
324 | |
325 double decimal_part = t - abs(t); | |
326 | |
327 if(abs(t) % 2 != 0){ | |
328 return decimal_part < 0.5 ? decimal_part : 1 - decimal_part; | |
329 }else{ | |
330 return decimal_part < 0.5 ? -decimal_part : 1 - decimal_part; | |
331 } | |
332 } | |
333 | |
334 </code> | |
335 </pre> | |
336 | |
337 <img src="./images/triWave.png" width="50%" height=""> | |
338 | |
339 </div> | |
340 | |
341 | |
342 | |
343 <div id="cover"> | |
344 <h1>波形の生成</h1> | |
345 | |
346 <p>のこぎり波</p> | |
347 <pre> | |
348 <code> | |
349 double | |
350 saw(double t) | |
351 { | |
352 double decimal_part = t - abs(t); | |
353 return decimal_part; | |
354 } | |
355 </code> | |
356 </pre> | |
357 | |
358 <img src="./images/sawWave.png" width="50%" height=""> | |
359 </div> | |
360 | |
361 | |
362 | |
363 <div id="cover"> | |
364 <h1>いましていること</h1> | |
365 <ul> | |
366 <li> | |
367 MIDI I/O は PortMidi を使用して実装中である。 | |
368 </li> | |
369 <li> | |
370 Multi Platform 対応、 | |
371 Windows (MME)、 | |
372 Mac (CoreMIDI)、 | |
373 Linux (ALSA) | |
374 </li> | |
375 </ul> | |
376 </pre> | |
377 </div> | |
378 | |
379 </div> <!-- presentation --> | |
380 </body> | |
381 </html> |