ar1st0crat/NWaves

Xamarin Android not play wav file

slagusev opened this issue · 2 comments

            try
            {
                using (var stream = new FileStream(fistBank, FileMode.Open))
                {
                    var waveFile = new WaveFile(stream);
                    signal = waveFile[Channels.Left];
                }
            }
            catch(Exception ex)
            {
                Toast.MakeText(Application.Context, ex.ToString(), ToastLength.Short).Show();
            }

Added to the project, added permissions for reading files, I get the path to the file. I press the button and silence ... The file does not play ... It does not even generate signals from examples

This code is not supposed to play audio file. It just parses WAV file and loads data into DiscreteSignal object (essentially, array of audio samples). In NWaves only the very basic playback/recording is supported and only for Windows clients. The main purpose of this lib is signal processing. So, for audio playback you'll need to write some Android native code (maybe using Android.Media.MediaPlayer class) or use Xamarin audio/media plugins/packages that can be found over Internet.

That is, receive sound from signal if from the code above?
I tried it through BASS anyway silence

            using (var stream = new FileStream(fistBank, FileMode.Open))
            {
                var waveFile = new WaveFile(stream);
                signal = waveFile[Channels.Average];
                int length = signal.Length;
                byte[] buffer = new byte[length];

                _hGCFile = GCHandle.Alloc(buffer, GCHandleType.Pinned);

                if (Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero))
                {
                    int b_stream = Bass.BASS_StreamCreateFile(_hGCFile.AddrOfPinnedObject(), 0L,length, BASSFlag.BASS_SAMPLE_SOFTWARE | BASSFlag.BASS_SAMPLE_FLOAT);

                    if (b_stream != 0)
                    {
                        Bass.BASS_ChannelPlay(b_stream, false);
                    }
                }
            }