| 194 | === OpenAL って何 === |
| 195 | |
| 196 | * どんなスピーカーで再生するかによらず意図したサウンドを鳴らすプログラムを書きたい |
| 197 | * ステレオ環境か 5.1ch 環境かに応じて動作が切り替わるようにしたい |
| 198 | |
| 199 | === 3D オーディオのモデル === |
| 200 | |
| 201 | * 音源ソースとリスナーの位置を定義する。 |
| 202 | |
| 203 | === 歴史 === |
| 204 | |
| 205 | * Loki が DirectSound に対応する Linux で動作するオーディオライブラリを欲した |
| 206 | * Loki と Creative で共同開発 |
| 207 | * Loki 亡き今、 Creative が単独でメンテナンス |
| 208 | |
| 209 | === 関数の分類 === |
| 210 | |
| 211 | * al* ... オーディオ周り |
| 212 | * alc* ... |
| 213 | |
| 214 | === デバイス選択 === |
| 215 | |
| 216 | * alcGetString |
| 217 | |
| 218 | === コンテキスト作成 === |
| 219 | |
| 220 | * alcCreateContext |
| 221 | * alcMakeContextCurrent |
| 222 | |
| 223 | === ソースを作る === |
| 224 | |
| 225 | * alGenSources |
| 226 | |
| 227 | === バッファ === |
| 228 | |
| 229 | * ソースに複数のバッファを登録 |
| 230 | * alGenBuffers |
| 231 | * alBufferData |
| 232 | * alSourceQueBuffer |
| 233 | |
| 234 | === 再生 === |
| 235 | |
| 236 | * alSourcePlay |
| 237 | * alGetSourcei(source, AL_SOURCE_STATE, &stat) ... 再生状態を監視 |
| 238 | |
| 239 | === 後片付け === |
| 240 | |
| 241 | * alDelete* |
| 242 | |
| 243 | === 複数の音を鳴らす === |
| 244 | |
| 245 | * alSourcePlayv(2, source) |
| 246 | |
| 247 | === ソースを動かす === |
| 248 | |
| 249 | * alSource3f |
| 250 | |
| 251 | === 鳴らしながら移動 === |
| 252 | |
| 253 | * alSource3f に速度情報を渡すとドップラー効果も再現する |
| 254 | |
| 255 | === ストリーミング再生 === |
| 256 | |
| 257 | * alGetSourcei(, AL_SOURCE_STATE |
| 258 | * alGetSourcei(, AL_BUFFERS_PROCESSED |
| 259 | * alSourceUnqueueBuffers 取り出し |
| 260 | * alBufferData |
| 261 | * alSourceQueueBuffers |
| 262 | |
| 263 | === 録音 === |
| 264 | |
| 265 | * alcGetString(, ALC_CAPTURE_DEVICE_SPECIFIER |
| 266 | * alcCaptureOpenDevice |
| 267 | * alcCaptureStart |
| 268 | * alcCaptureStop |
| 269 | * alcGetIntegerv |
| 270 | |
| 271 | === 拡張 === |
| 272 | |
| 273 | * 調べる - allsExtensionPresent("AL_EXT_FLOAT32" |
| 274 | * 関数を取得 - alGetProcAddress |
| 275 | |