private void BtnOpen_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog()
            {
                RestoreDirectory = true,
                Multiselect      = false,
                Filter           = "WAV Files (*.wav)|*.wav|All Files (*.*)|*.*",
                Title            = "Open Song File"
            };
            bool?result = openFileDialog.ShowDialog(this);

            if (result == true)
            {
                string fileName = openFileDialog.FileName;
                LblFileName.Content = fileName;
                AudioEngineCSharp.AudioEngine.Audio audio = AudioEngineCSharp.AudioEngine.Load(fileName, false, false);
                unsafe
                {
                    var testResult = _analyzer.TestData(audio.RawData, audio.DataSize);
                    LsbPercents.ItemsSource = testResult.Select((pair) => string.Format("{0} - {1}%", pair.Key, pair.Value * 100));
                }

                audio.Dispose();
            }
        }
Beispiel #2
0
 public Song(string file, float offset, float bpm)
 {
     _audio        = AudioEngineCSharp.AudioEngine.LoadPreset(file);
     Offset        = offset;
     BeatPerMinute = bpm;
     BeatPerSecond = BeatPerMinute / 60.0f;
     SecondPerBeat = 1.0f / BeatPerSecond;
 }
        public Dictionary <string, double>[] TestFile(string fileLocation, string fileName, string extension = ".wav")
        {
            string file = Path.Combine(fileLocation, fileName + extension);

            AudioEngineCSharp.AudioEngine.Audio a = AudioEngineCSharp.AudioEngine.Load(file, false, false);
            var context = _contextAnalyzer.TestData(a.Data);

            // var theme = _themeAnalyzer.TestData(a.Data);
            a.Dispose();
            return(new[] { context });
        }
        static void Main(string[] args)
        {
            string file = @"C:\Users\wsheng\Documents\Neumont\Q9\capstone\repo\unity\project\Assets\Audio\VN1.7.wav";

            AudioEngineCSharp.AudioEngine.Initialize();

            AudioEngineCSharp.AudioEngine.Audio audio = AudioEngineCSharp.AudioEngine.LoadPreset(file);

            // ulong time = AudioEngineCSharp.AudioEngine.SecondsToBytes(audio, 1);
            AudioEngineCSharp.AudioEngine.Play(audio, 0, 1000);

            string command;

            ulong lastPos = 0;

            do
            {
                command = Console.ReadLine();
                command = command.ToLower();

                switch (command)
                {
                case "stop":
                    lastPos = audio.Pos + 1000;
                    AudioEngineCSharp.AudioEngine.Stop(audio, 1000);
                    break;

                case "play":

                    AudioEngineCSharp.AudioEngine.Play(audio, lastPos, 1000);
                    break;
                }
            } while (!command.Equals("exit"));

            AudioEngineCSharp.AudioEngine.Stop(audio, 0);

            Console.ReadKey();


            audio.Dispose();
            // AudioEngineCSharp.AudioEngine.Unload(audio._audio);
            // AudioEngineCSharp.AudioEngine.Unload(audio);

            AudioEngineCSharp.AudioEngine.Shutdown();
        }
        public void PassFiles(int iterations = 1, string extension = ".wav")
        {
            for (int i = 0; i < iterations; i++)
            {
                foreach (SongData data in _data)
                {
                    string file = Path.Combine(_fileLocation, data.Source, data.Name + extension);
                    // Console.WriteLine("Trying to load file...{0}", file);
                    AudioEngineCSharp.AudioEngine.Audio a = AudioEngineCSharp.AudioEngine.Load(file, false, false);
                    // load up the file

                    // _contextAnalyzer.AddData(a.Data, data.Context);
                    // _themeAnalyzer.AddData(a.Data, data.Theme);
                    a.Dispose();
                }
            }

            // _contextAnalyzer.TrainData();
            // _themeAnalyzer.TrainData();
        }
        private void Worker_Work(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker bw = sender as BackgroundWorker;

            MusicArg args = (MusicArg)e.Argument;

            Random r = new Random();

            if (args.Epoch <= 0)
            {
                double error = double.PositiveInfinity;
                double previous;
                do
                {
                    Shuffle(args.SongData, r);
                    previous = error;
                    error    = 0;
                    for (int j = 0; j < args.SongData.Count; j++)
                    {
                        SongData song = args.SongData[j];

                        string songFile = System.IO.Path.Combine(args.FilePath, song.Source, song.Name + ".wav");
                        //// Console.WriteLine("Trying to load file...{0}", file);
                        AudioEngineCSharp.AudioEngine.Audio audio = AudioEngineCSharp.AudioEngine.Load(songFile, false, false);
                        //// load up the file


                        unsafe
                        {
                            // error += args.Analyzer.AddData(audio.RawData, audio.DataSize, args.IsContext ? song.Context : song.Theme, true);
                        }
                        //// _themeAnalyzer.AddData(a.Data, data.Theme);
                        audio.Dispose();

                        // float percent = ((float)(i * args.SongData.Count + (j + 1))) / totalNum;
                        // int progress = (int)(Math.Round(percent * 100));
                        Debug.WriteLine(string.Format("Finished ({0}) {1}", song.Source, song.Name));
                        // bw.ReportProgress(progress);
                    }
                    Debug.WriteLine(string.Format("Error: {0}, Previous: {1}", error, previous));
                    // } while (Math.Abs(previous - error) >= 1e-10 * previous);
                } while (Math.Abs(previous - error) >= 1e-4);
            }
            else
            {
                int totalNum = args.SongData.Count * args.Epoch;

                // prepreprocess
                for (int i = 0; i < args.SongData.Count; i++)
                {
                    SongData song     = args.SongData[i];
                    string   songFile = System.IO.Path.Combine(args.FilePath, song.Source, song.Name + ".wav");
                    AudioEngineCSharp.AudioEngine.Audio audio = AudioEngineCSharp.AudioEngine.Load(songFile, false, false);

                    unsafe
                    {
                        args.Analyzer.PreprocessAddData(audio.RawData, audio.DataSize);
                    }
                    audio.Dispose();
                }

                args.Analyzer.PreDeviation();

                for (int i = 0; i < args.SongData.Count; i++)
                {
                    SongData song     = args.SongData[i];
                    string   songFile = System.IO.Path.Combine(args.FilePath, song.Source, song.Name + ".wav");
                    AudioEngineCSharp.AudioEngine.Audio audio = AudioEngineCSharp.AudioEngine.Load(songFile, false, false);

                    unsafe
                    {
                        args.Analyzer.ProcessDeviation(audio.RawData, audio.DataSize);
                    }
                    audio.Dispose();
                }

                args.Analyzer.PreProcessData();

                for (int i = 0; i < args.Epoch; i++)
                {
                    Shuffle(args.SongData, r);

                    for (int j = 0; j < args.SongData.Count; j++)
                    {
                        SongData song = args.SongData[j];

                        string songFile = System.IO.Path.Combine(args.FilePath, song.Source, song.Name + ".wav");
                        //// Console.WriteLine("Trying to load file...{0}", file);
                        AudioEngineCSharp.AudioEngine.Audio audio = AudioEngineCSharp.AudioEngine.Load(songFile, false, false);
                        //// load up the file


                        unsafe
                        {
                            args.Analyzer.ProcessData(audio.RawData, audio.DataSize, args.IsContext ? song.Context : song.Theme);
                        }
                        //// _themeAnalyzer.AddData(a.Data, data.Theme);
                        audio.Dispose();

                        float percent  = ((float)(i * args.SongData.Count + (j + 1))) / totalNum;
                        int   progress = (int)(Math.Round(percent * 100));
                        Debug.WriteLine(string.Format("Percent: {0}, Finished ({1}) {2}", percent, song.Source, song.Name));
                        bw.ReportProgress(progress);
                    }
                }
            }
        }