Um das Rad nicht neu erfinden zu müssen, habe ich mit der Verwendung des C# Midi Toolkits auf CodeProject begonnen, das mit Unterstützung für .NET 2.0 erstellt wurde.
Das Problem, das ich habe, ist, dass es im Unity-Editor einwandfrei funktioniert, dann aber
fehlschlägt im eigenständigen Windows-Build.
Hier ist der grundlegende Verbindungs-/Sound-Wiedergabecode:
Code: Select all
// Log devices
int deviceCount = OutputDevice.DeviceCount;
for (int i = 0; i < deviceCount; i++)
{
Debug.Log(string.Format("Detected MIDI Device with ID {0}:{1}", i, OutputDevice.GetDeviceCapabilities(i).name));
}
deviceID = 1;
Debug.Log(string.Format("Connected to {0}", deviceID));
// Connect to device
device = new OutputDevice(deviceID);
// Play Middle C
device.Send(new ChannelMessage(ChannelCommand.NoteOn, 0, note, 127));
OutputDeviceException: Das angegebene Gerätehandle ist ungültig.
Ich habe die Quelle durchgesehen und festgestellt, dass die Bibliothek
Win32-Handles für winmm.dll verwendet. Ich dachte, das könnte etwas damit zu tun haben damit, aber nicht sicher, wohin ich von hier aus gehen soll.
Kann jemand einen Einblick geben, wie man das angeht? Ich werde mir wahrscheinlich Alternativen ansehen, die speziell für Unity entwickelt wurden, aber ich bin daran interessiert zu erfahren, warum so etwas überhaupt nicht funktionieren würde.
Mobile version