Skip to content

Commit

Permalink
Fixed SysEx for GOOD, thank you @khang06!!!!
Browse files Browse the repository at this point in the history
  • Loading branch information
KaleidonKep99 committed Feb 26, 2025
1 parent d28d12e commit 5db240a
Show file tree
Hide file tree
Showing 9 changed files with 25 additions and 21 deletions.
2 changes: 1 addition & 1 deletion MIDIModificationFramework
2 changes: 1 addition & 1 deletion OmniConverter/Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<Project>
<PropertyGroup>
<VersionPrefix>1.0.0.37</VersionPrefix>
<VersionPrefix>1.0.0.51</VersionPrefix>
</PropertyGroup>
</Project>
7 changes: 5 additions & 2 deletions OmniConverter/Extensions/Audio/Renderers/BASSRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ public override bool SendCustomFXEvents(int channel, short reverb, short chorus)
public override void SendEvent(byte[] data)
{
var status = data[0];
var param1 = data[1];
var param1 = data.Length >= 2 ? data[1] : 0;
var param2 = data.Length >= 3 ? data[2] : 0;

int eventParams;
Expand All @@ -307,14 +307,17 @@ public override void SendEvent(byte[] data)
case MIDIEventType.NoteOn:
if (reference.CachedSettings.Event.FilterVelocity && param2 >= reference.CachedSettings.Event.VelocityLow && param2 <= reference.CachedSettings.Event.VelocityHigh)
return;

if (reference.CachedSettings.Event.FilterKey && (param1 < reference.CachedSettings.Event.KeyLow || param1 > reference.CachedSettings.Event.KeyHigh))
return;

eventParams = param2 << 8 | param1;
break;

case MIDIEventType.NoteOff:
if (reference.CachedSettings.Event.FilterKey && (param1 < reference.CachedSettings.Event.KeyLow || param1 > reference.CachedSettings.Event.KeyHigh))
return;

eventParams = param1;
break;

Expand All @@ -339,7 +342,7 @@ public override void SendEvent(byte[] data)
break;

default:
BassMidi.StreamEvents(Handle, MidiEventsMode.Raw, data, data.Length);
BassMidi.StreamEvents(Handle, MidiEventsMode.Raw | MidiEventsMode.NoRunningStatus, data, data.Length);
return;
}

Expand Down
21 changes: 10 additions & 11 deletions OmniConverter/Extensions/Audio/Renderers/FluidSynthRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -223,22 +223,21 @@ public override void SendEvent(byte[] data)
{
case MIDIEventType.SystemMessageStart:
{
string sysexbuf = string.Empty;
byte[] refactor = new byte[data.Length - 2];
byte[] dummy = new byte[refactor.Length];

foreach (byte ch in data)
sysexbuf += $"{ch:X}";

try
{
if (handle.Sysex(data, null, false))
Debug.PrintToConsole(Debug.LogType.Message, $"SysEx parsed! >> {sysexbuf}");
}
catch
for (int i = 1; i < data.Length - 1; i++)
refactor[i - 1] = data[i];

if (!handle.Sysex(refactor, 0, refactor.Length, dummy, 0, dummy.Length))
{
string sysexbuf = string.Empty;

foreach (byte ch in refactor)
sysexbuf += $"{ch:X}";

Debug.PrintToConsole(Debug.LogType.Error, $"Invalid SysEx! >> {sysexbuf}");
}

}
return;

Expand Down
1 change: 1 addition & 0 deletions OmniConverter/Extensions/MIDI/MIDI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ public static List<IEnumerable<MIDIEvent>> GetMetaEvents(IEnumerable<IEnumerable
case ProgramChangeEvent pcev:
case ChannelPressureEvent cpev:
case PitchWheelChangeEvent pwcev:
case SystemExclusiveMessageEvent sysexev:
e.DeltaTime += delta;
delta = 0;
trackMetaEvents.Add(e);
Expand Down
8 changes: 4 additions & 4 deletions OmniConverter/Extensions/MIDI/MIDIConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -912,7 +912,7 @@ public void Process(ISampleWriter output, WaveFormat waveFormat, CancellationTok

if (_midiRenderer != null)
{
_midiRenderer.SystemReset();
// _midiRenderer.SystemReset();

float[] buffer = new float[256 * waveFormat.BlockAlign];
long prevWriteTime = 0;
Expand Down Expand Up @@ -976,10 +976,10 @@ public void Process(ISampleWriter output, WaveFormat waveFormat, CancellationTok
switch (e)
{
case ControlChangeEvent ev:
if (!(_audioRenderer.CachedSettings.Event.OverrideEffects && (ev.Controller == 0x5B || ev.Controller == 0x5D)))
goto default;
if (_audioRenderer.CachedSettings.Event.OverrideEffects && (ev.Controller == 0x5B || ev.Controller == 0x5D))
break;

break;
goto default;

case ProgramChangeEvent:
if (!_audioRenderer.CachedSettings.Event.IgnoreProgramChanges)
Expand Down
2 changes: 1 addition & 1 deletion OmniConverter/Forms/MainWindow.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@
</Grid>
<Grid ColumnDefinitions="100, 6*">
<Label Grid.Column="0">Length:</Label>
<Label Grid.Column="1" Name="InfoLength">-:--.--- (- PPQ)</Label>
<Label Grid.Column="1" Name="InfoLength">-:--.--- (-PPQN)</Label>
</Grid>
<Grid ColumnDefinitions="100, 6*">
<Label Grid.Column="0">Tracks:</Label>
Expand Down
1 change: 1 addition & 0 deletions OmniConverter/Forms/SettingsWindow.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ private void AudioRendererChanged(object? sender, SelectionChangedEventArgs e)
switch ((EngineID)SelectedRenderer.SelectedIndex)
{
case EngineID.BASS:
case EngineID.FluidSynth:
BASS_MaxVoices.Value = Program.Settings.Synth.MaxVoices;

BASSSettingsPanel.IsVisible = true;
Expand Down

0 comments on commit 5db240a

Please sign in to comment.