OpenALで音を鳴らすとノイズがする
Posted: 2013年6月10日(月) 03:16
早速ですが質問させていただきます。
以前質問させていただいた[play]メソッドで音を鳴らすと遅れる問題は
OpenALを用いた再生関数を使うことで解決できたのですが
今度はノイズが出る(というよりすべてザーッという音で聞こえない)という問題
が発生してしまいました。
以下のようなコードになります。
(
ここのページを見てかきました。
http://nullpot.blog.fc2.com/blog-entry-23.html
)
読み込むための関数
再生関数
//グローバル変数
デバイスの作成(最初に一度だけ実行)
サウンドの読み込み
サウンドを再生する
以上になります。
長い説明で申し訳ありません。
環境は
Xcode4.4、
iphone4S,iPhoneSimulater5.1
です。
よろしくお願いします。
以前質問させていただいた[play]メソッドで音を鳴らすと遅れる問題は
OpenALを用いた再生関数を使うことで解決できたのですが
今度はノイズが出る(というよりすべてザーッという音で聞こえない)という問題
が発生してしまいました。
以下のようなコードになります。
(
ここのページを見てかきました。
http://nullpot.blog.fc2.com/blog-entry-23.html
)
読み込むための関数
// CAFファイルを読み込む関数
// 拡張子部分.cafを除いたファイル名を渡して下さい
// 失敗した場合は0を返します
ALuint loadCAF(const char *name) {
// CAFファイルを開きます
FILE *file = ropen(name,"caf", "rb");// ropenは上記サイトにコードあり
if(file) {
// ファイルのサイズを取得
fseek(file, 0, SEEK_END);
int size = ftell(file);
fseek(file, 0, SEEK_SET);
// ファイルのサイズ分メモリを確保して読み込む
unsigned char *bits = (unsigned char *)malloc(size);
if(!bits) {
fclose(file);
NSLog(@"Error: Memory allocation failed.");
return 0;
}
fread(bits, 1, size, file);
fclose(file);
// バッファを生成します
ALuint buffer;
alGenBuffers(1, &buffer);
alBufferData(buffer, AL_FORMAT_MONO16, bits, size, 22050);
// 生成後に確保したメモリを開放
free(bits);
return buffer;
}
void PlaySoundAL(ALuint soundBuffer){
ALuint soundSource=0;
alGenSources(1, &soundSource);
alSourcei(soundSource, AL_BUFFER, soundBuffer);
alSourcePlay(soundSource);
}
ALCdevice *deviceAL = alcOpenDevice(NULL);
NSLog(@"test:%d",(int)deviceAL);// 24で成功している
ALCcontext *contextAL = alcCreateContext(deviceAL, NULL);
alcMakeContextCurrent(contextAL);
長い説明で申し訳ありません。
環境は
Xcode4.4、
iphone4S,iPhoneSimulater5.1
です。
よろしくお願いします。