public void ProcessTest() { AV.Midi.Fluid fluidMidi = loadMidiData(); Core.AV.Music.Midi.MidiProcessor midiProcessor = new Core.AV.Music.Midi.MidiProcessor(AV.Midi.Fluid.lbinbins, AV.Midi.Fluid.tetr, AV.Midi.Fluid.seqt, AV.Midi.Fluid.tims); // It seems that none of the exported MIDIs have an end track? // Which makes sense because the music is supposed to loop. // But why wasn't the assertion triggered before? var mid = midiProcessor.Process(); }
public void LoadingTest() { AV.Midi.Fluid fluidMidi = loadMidiData(); fluidMidi.FluidWorker_ProduceMid(); SHA256 mySHA256 = SHA256.Create(); string actual = byteArrayToString(mySHA256.ComputeHash(fluidMidi.midBuffer)); Assert.AreEqual("9e3ab13fc48c813864fbe8904594c2abfb576364453456d792d788ee3f5e8f99", actual); }
private AV.Midi.Fluid loadMidiData() { Memory.Init(null, null, null, null); AV.Music.Init(); // Load the overture MIDI. var filename = Memory.DicMusic[(MusicId)79][0]; AV.Midi.Fluid fluidMidi = new AV.Midi.Fluid(); fluidMidi.ReadSegmentFileManually(filename); return(fluidMidi); }
private static AV.Audio ffccMusic = null; // testing using class to play music instead of Naudio / Nvorbis public static void Play(ushort?index = null, float volume = 0.5f, float pitch = 0.0f, float pan = 0.0f, bool loop = true) { Memory.MusicIndex = index ?? Memory.MusicIndex; if (musicplaying && lastplayed == Memory.MusicIndex) { return; } string ext = ""; if (Memory.dicMusic.Count > 0 && Memory.dicMusic[(MusicId)Memory.MusicIndex].Count > 0) { ext = Path.GetExtension(Memory.dicMusic[(MusicId)Memory.MusicIndex][0]).ToLower(); } else { return; } string filename = Memory.dicMusic[(MusicId)Memory.MusicIndex][0]; Stop(); switch (ext) { case ".ogg": case ".wav": case ".mp3": default: //ffccMusic = new Ffcc(@"c:\eyes_on_me.wav", AVMediaType.AVMEDIA_TYPE_AUDIO, Ffcc.FfccMode.STATE_MACH); if (ffccMusic != null) { ffccMusic?.Dispose(); ffccMusic = null; } if (!ZZZ) { ffccMusic = AV.Audio.Load(filename, loop ? 0 : -1); if (!loop) { ffccMusic.LOOPSTART = -1; } if (Memory.Threaded) { ffccMusic.PlayInTask(volume, pitch, pan); } else { ffccMusic.Play(volume, pitch, pan); } } else { return; //cancelTokenSource = new CancellationTokenSource(); //cancelToken = cancelTokenSource.Token; //MusicTask = Task.Run(()=>PlayInTask(ref ffccMusic,volume, pitch, pan, loop, filename,cancelToken), cancelToken); } break; case ".sgt": #if _X64 || !_WINDOWS if (fluid_Midi == null) { fluid_Midi = new AV.Midi.Fluid(); } fluid_Midi.ReadSegmentFileManually(filename); fluid_Midi.Play(); #else if (dm_Midi == null) { dm_Midi = new AV.Midi.DirectMedia(); } dm_Midi.Play(filename, loop); #endif break; } musicplaying = true; lastplayed = Memory.MusicIndex; }