#include "Test.h" #include "Midi/MifiFile.h" #include "Singleton/MidiSequencer.h" #include "Singleton/PluginHostList.h" #include "Singleton/PortAudioAPI.h" void AronaTest() { TArray AudioDeviceInfos = FPortAudioAPI::Get().GetDevices(); for (const FAudioDeviceInfo& AudioDeviceInfo : AudioDeviceInfos) { UE_LOG(LogTemp, Log, TEXT("Audio Device%d: %s"), AudioDeviceInfo.DeviceIndex, *AudioDeviceInfo.Name); } // const FString& MidiFilePath = TEXT("E:\\Projects\\Arona\\脑浆炸裂女孩 - 初音ミク.mid"); // const FString& PluginFilePath = TEXT("D:\\Projects\\Rolling\\4Front Piano x64.dll"); // const FString& PluginFilePath = TEXT("F:\\VST\\VST64\\4Front Piano x64.dll"); // FMidiFile Midi; // Midi.readFrom(MidiFilePath); // FMidiSequencer& MidiSequencer = FMidiSequencer::Get(); // MidiSequencer.SetTicksPerQuarter(Midi.getTimeFormat()); // FMidiPattern* MidiPattern = MidiSequencer.NewMidiPattern(); // MidiPattern->Name = TEXT("脑浆炸裂女孩 - 初音ミク"); // for (int i = 0; i < Midi.getNumTracks(); ++i) // { // FPluginHost* Plugin = FPluginHostList::Get().TryLoadPlugin(PluginFilePath); // FPluginHostList::Get().RegisterInstrument(Plugin); // // const FMidiMessageSequence* Track = Midi.getTrack(i); // FMidiMessageSequence& Sequence = MidiPattern->GetSequence(Plugin); // Sequence.addSequence(*Track, 0); // Sequence.updateMatchedPairs(); // } // FPluginHost* Kontakt = FPluginHostList::Get().TryLoadPlugin(TEXT("I:\\VST\\VST64\\Kontakt.dll")); // FPluginHostList::Get().RegisterInstrument(Kontakt); // MidiPattern->RequestCreateInstance(0, 0, 0, 0, MidiPattern->GetMidiLength(), 0, MidiPattern->GetSampleLength()); // MidiSequencer.PatternSelector.SelectPattern(MidiPattern); // MidiSequencer.Playing = true; FPluginHostList::Get().TryLoadSampler(TEXT("F:\\FL垃圾桶\\Kawaii Anokoga Kiniiranai.mp3")); FPluginHostList::Get().TryLoadSampler(TEXT("F:\\Sample\\Cymatics - Empire Hip Hop Sample Pack\\Melody Loops\\Cymatics - Empire Melody Loop 1 - 100 BPM G Min.wav")); }