예제 #1
0
        private void alSourcePlay()
        {
            int state = AL10.alGetSourcei(alSource, AL10.AL_SOURCE_STATE);

            if (state != AL10.AL_PLAYING)
            {
                AL10.alSourcePlay(alSource);
            }
        }
예제 #2
0
        public virtual void writeAudioData(int[] data, int offset, int Length)
        {
            int        audioBytesLength = Length * 4;
            ByteBuffer directBuffer     = soundBufferManager.getDirectBuffer(audioBytesLength);

            directBuffer.order(ByteOrder.LITTLE_ENDIAN);
            directBuffer.clear();
            directBuffer.limit(audioBytesLength);
            directBuffer.asIntBuffer().put(data, offset, Length);
            directBuffer.rewind();

            int alBuffer = soundBufferManager.Buffer;

            AL10.alBufferData(alBuffer, AL10.AL_FORMAT_STEREO16, directBuffer, frequency);
            AL10.alSourceQueueBuffers(alSource, alBuffer);
            soundBufferManager.releaseDirectBuffer(directBuffer);

            alSourcePlay();
            checkFreeBuffers();
        }
예제 #3
0
 public AudioLine()
 {
     soundBufferManager = SoundBufferManager.Instance;
     alSource           = AL10.alGenSources();
     AL10.alSourcei(alSource, AL10.AL_LOOPING, AL10.AL_FALSE);
 }