ToneGenerator

From SfzWiki
Jump to: navigation, search
 openal : tone generator : 
 void cSoundSourceStream::StreamBuffer(ALuint buffer){
 	int size = STREAM_BUFFER_SIZE;
 	//int copied = mpStream->FillBuffer(b, size);
 	int copied = size;
 	int iTestTone = 16; // lower number = higher tone
 	for (int i=0;i<size/4;++i) {
 		float mysin = sin(float(i)/float(iTestTone));
 		signed short s = (signed short)( mysin * 0x1fff );
 		((signed short*)b)[i*2+0] = s;
 		((signed short*)b)[i*2+1] = s;
 	}
 	//for(int i=0;i<128;++i)printf("%i ",b[i]);printf("\n");
 	printf("copied=%i iTestTone=%d,freq=%i GetFrameSize=%d GetBitrate=%d GetChannels=%d\n",copied,iTestTone,(int)mpStream->GetFrequency(),(int)mpStream->GetFrameSize(),(int)mpStream->GetBitrate(),(int)mpStream->GetChannels());
 	
 	alBufferData(buffer, miBufferFormat, b, copied, mpStream->GetFrequency());
 	CheckOpenAl();
 }
 output : copied=65536 iTestTone=12,freq=44100 GetFrameSize=4 GetBitrate=16 GetChannels=2