From 857f4e25873b7851e68395a145fbdd1dd3bf7423 Mon Sep 17 00:00:00 2001 From: shockdude <shockdudex@gmail.com> Date: Fri, 28 Jun 2019 19:15:54 -0700 Subject: [PATCH] support exporting the filter effect to midi --- Sharktooth/Mub/MubExport.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Sharktooth/Mub/MubExport.cs b/Sharktooth/Mub/MubExport.cs index 00c56f8..17e60e8 100644 --- a/Sharktooth/Mub/MubExport.cs +++ b/Sharktooth/Mub/MubExport.cs @@ -202,15 +202,18 @@ private List<MidiEvent> CreateEffectsTrack() long start = NotePosToTicks(entry.Start); long end = NotePosToTicks(entry.Start + entry.Length); - if ((entry.Modifier & 0xFF000000) == 0x06000000) + if ((entry.Modifier & 0xFF000000) == 0x06000000 || entry.Modifier == 0x05FFFFFF) { + // Filter effect doesn't actually need an effect note, but sometimes 0x05FFFFFF is used for Filter. + // For the midi, using pitch 0x7F (127) for Filter is good enough. + int effectMod = entry.Modifier & 0x7F; if (effects == null) { effects = new List<MidiEvent>(); effects.Add(new NAudio.Midi.TextEvent("EFFECTS", MetaEventType.SequenceTrackName, 0)); } - effects.Add(new NoteEvent(start, 1, MidiCommandCode.NoteOn, entry.Modifier & 0xFF, entry.Data + 1)); - effects.Add(new NoteEvent(end, 1, MidiCommandCode.NoteOff, entry.Modifier & 0xFF, entry.Data + 1)); + effects.Add(new NoteEvent(start, 1, MidiCommandCode.NoteOn, effectMod, entry.Data + 1)); + effects.Add(new NoteEvent(end, 1, MidiCommandCode.NoteOff, effectMod, entry.Data + 1)); continue; } }