Beispiel #1
0
        public WaveBank(
            AudioEngine audioEngine,
            string nonStreamingWaveBankFilename
            )
        {
            if (audioEngine == null)
            {
                throw new ArgumentNullException("audioEngine");
            }
            if (String.IsNullOrEmpty(nonStreamingWaveBankFilename))
            {
                throw new ArgumentNullException("nonStreamingWaveBankFilename");
            }

            bankData = TitleContainer.ReadToPointer(
                nonStreamingWaveBankFilename,
                out bankDataLen
                );

            FAudio.FACTAudioEngine_CreateInMemoryWaveBank(
                audioEngine.handle,
                bankData,
                (uint)bankDataLen,
                0,
                0,
                out handle
                );

            engine        = audioEngine;
            selfReference = new WeakReference(this, true);
            engine.RegisterPointer(handle, selfReference);
            IsDisposed = false;
        }
Beispiel #2
0
        public WaveBank(
            AudioEngine audioEngine,
            string streamingWaveBankFilename,
            int offset,
            short packetsize
            )
        {
            if (audioEngine == null)
            {
                throw new ArgumentNullException("audioEngine");
            }
            if (String.IsNullOrEmpty(streamingWaveBankFilename))
            {
                throw new ArgumentNullException("streamingWaveBankFilename");
            }

            string safeName = MonoGame.Utilities.FileHelpers.NormalizeFilePathSeparators(
                streamingWaveBankFilename
                );

            if (!Path.IsPathRooted(safeName))
            {
                safeName = Path.Combine(
                    TitleLocation.Path,
                    safeName
                    );
            }
            bankData = FAudio.FAudio_fopen(safeName);

            FAudio.FACTStreamingParameters settings = new FAudio.FACTStreamingParameters();
            settings.file = bankData;
            FAudio.FACTAudioEngine_CreateStreamingWaveBank(
                audioEngine.handle,
                ref settings,
                out handle
                );

            engine        = audioEngine;
            selfReference = new WeakReference(this, true);
            engine.RegisterPointer(handle, selfReference);
            IsDisposed = false;
        }
Beispiel #3
0
        public SoundBank(AudioEngine audioEngine, string filename)
        {
            if (audioEngine == null)
            {
                throw new ArgumentNullException("audioEngine");
            }
            if (String.IsNullOrEmpty(filename))
            {
                throw new ArgumentNullException("filename");
            }

            IntPtr bufferLen;
            IntPtr buffer = TitleContainer.ReadToPointer(filename, out bufferLen);

            FAudio.FACTAudioEngine_CreateSoundBank(
                audioEngine.handle,
                buffer,
                (uint)bufferLen,
                0,
                0,
                out handle
                );

            FNAPlatform.FreeFilePointer(buffer);

            engine        = audioEngine;
            selfReference = new WeakReference(this, true);
            dspSettings   = new FAudio.F3DAUDIO_DSP_SETTINGS();
            dspSettings.SrcChannelCount     = 1;
            dspSettings.DstChannelCount     = engine.channels;
            dspSettings.pMatrixCoefficients = Marshal.AllocHGlobal(
                4 *
                (int)dspSettings.SrcChannelCount *
                (int)dspSettings.DstChannelCount
                );
            engine.RegisterPointer(handle, selfReference);
            IsDisposed = false;
        }