mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-15 14:52:35 +02:00
Fixes #6020 The assert was caused by the native OS path (C:\Windows\...) being passed through a ResPath. Bad. While looking at this I realized the sound font loader callback system was a mess and I should probably clean it up, so I did. The file name is now properly namespaced in the loader callback, which should avoid spaghetti like this in the future. The details of how this works are a pain in the ass because Fluidsynth isn't well-designed. I split LoadSoundfont() into two functions: one for resource, one for user paths. The other is kept there but compatible. I can't believe I spent 3 hours on dealing with this nonsense and most of it is just due to Fluidsynth being poorly designed...
46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
using System;
|
|
using Robust.Shared.Utility;
|
|
|
|
namespace Robust.Client.Audio.Midi;
|
|
|
|
internal sealed partial class MidiRenderer
|
|
{
|
|
[Obsolete("Use LoadSoundfontResource or LoadSoundfontUser instead")]
|
|
public void LoadSoundfont(string filename, bool resetPresets = true)
|
|
{
|
|
LoadSoundfontCore(
|
|
MidiManager.PrefixPath(MidiManager.PrefixLegacy, filename),
|
|
resetPresets);
|
|
}
|
|
|
|
public void LoadSoundfontResource(ResPath path, bool resetPresets = false)
|
|
{
|
|
LoadSoundfontCore(
|
|
MidiManager.PrefixPath(MidiManager.PrefixResources, path.ToString()),
|
|
resetPresets);
|
|
}
|
|
|
|
public void LoadSoundfontUser(ResPath path, bool resetPresets = false)
|
|
{
|
|
LoadSoundfontCore(
|
|
MidiManager.PrefixPath(MidiManager.PrefixUser, path.ToString()),
|
|
resetPresets);
|
|
}
|
|
|
|
internal void LoadSoundfontDisk(string path, bool resetPresets = false)
|
|
{
|
|
LoadSoundfontCore(
|
|
path,
|
|
resetPresets);
|
|
}
|
|
|
|
private void LoadSoundfontCore(string filenameString, bool resetPresets)
|
|
{
|
|
lock (_playerStateLock)
|
|
{
|
|
_synth.LoadSoundFont(filenameString, resetPresets);
|
|
MidiSoundfont = 1;
|
|
}
|
|
}
|
|
}
|