diff --git a/OmniConverter/Directory.Build.props b/OmniConverter/Directory.Build.props index ebe90a5..f637704 100644 --- a/OmniConverter/Directory.Build.props +++ b/OmniConverter/Directory.Build.props @@ -1,5 +1,5 @@ - 1.0.0.77 + 1.0.0.83 \ No newline at end of file diff --git a/OmniConverter/Extensions/Audio/Renderers/BASSRenderer.cs b/OmniConverter/Extensions/Audio/Renderers/BASSRenderer.cs index d8d3636..a8a75f1 100644 --- a/OmniConverter/Extensions/Audio/Renderers/BASSRenderer.cs +++ b/OmniConverter/Extensions/Audio/Renderers/BASSRenderer.cs @@ -17,33 +17,6 @@ public class BASSEngine : AudioEngine public BASSEngine(Settings settings) : base(settings, false) { - /* - -+++------. - -++###+#++++++++++#+++- - ++##+-.. -#+- .++#++ - -+#+. .++. .+#+- - +#+. .+++ - ++#+++. .+++ - ##++++####+-. -#+- - +#- -+++##++- .+++- - .+- ++. .##+ - . +- +#+ +##. - ++. ++++++++#+ KHANG!!! .+++ - -++#+++++-. -++ - ++- + - -++++++++++++++++. - .------------#+ - -++. - +#- -- - +#+#+ .++##+ - -+#+- ++. +++. .#+. - +++..-+#+- +#- -++#+#. - ++++#+++++ -+++#+-. - . .#+ -+- - ++- - -++. - */ - if (Bass.Init(Bass.NoSoundDevice, _waveFormat.SampleRate, DeviceInitFlags.Default)) { _bassArray = InitializeSoundFonts(); @@ -297,13 +270,16 @@ public override bool SendCustomCC(int channel, short reverb, short chorus) public override void SendEvent(byte[] data) { var status = data[0]; + + var isSysEx = (EventType)status == EventType.SystemExclusive; + var type = (EventType)(status & 0xF0); var param1 = data.Length >= 2 ? data[1] : 0; var param2 = data.Length >= 3 ? data[2] : 0; - + int eventParams; var eventType = MidiEventType.Note; - switch ((EventType)(status & 0xF0)) + switch (type) { case EventType.NoteOn: eventParams = param2 << 8 | param1; @@ -334,11 +310,28 @@ public override void SendEvent(byte[] data) break; default: - BassMidi.StreamEvents(_streamHandle, MidiEventsMode.Raw | MidiEventsMode.NoRunningStatus, data, data.Length); + var ret = BassMidi.StreamEvents(_streamHandle, MidiEventsMode.Raw | MidiEventsMode.NoRunningStatus, data, data.Length); + + if (ret == -1 || (isSysEx && ret < 1)) + Debug.PrintToConsole(Debug.LogType.Error, $"Unsupported {(isSysEx ? "SysEx" : "data")}! >> {BitConverter.ToString(data).Replace("-", "")}"); + return; } - BassMidi.StreamEvent(_streamHandle, status & 0xF, eventType, eventParams); + var success = BassMidi.StreamEvent(_streamHandle, status & 0xF, eventType, eventParams); + + if (!success) + { + switch (type) + { + case EventType.Controller: + Debug.PrintToConsole(Debug.LogType.Error, $"Unsupported CC! >> {(ControllerType)param1}"); + break; + + default: + break; + } + } } public override void RefreshInfo() diff --git a/OmniConverter/Extensions/Audio/Renderers/FluidSynthRenderer.cs b/OmniConverter/Extensions/Audio/Renderers/FluidSynthRenderer.cs index 19a25ca..614c88c 100644 --- a/OmniConverter/Extensions/Audio/Renderers/FluidSynthRenderer.cs +++ b/OmniConverter/Extensions/Audio/Renderers/FluidSynthRenderer.cs @@ -209,11 +209,12 @@ public override void SendEvent(byte[] data) return; var status = data[0]; + var type = (EventType)(status & 0xF0); var chan = status & 0xF; var param1 = data[1]; var param2 = data.Length >= 3 ? data[2] : (byte)0; - switch ((EventType)(status & 0xF0)) + switch (type) { case EventType.NoteOn: if (param1 == 0) @@ -240,7 +241,9 @@ public override void SendEvent(byte[] data) return; case EventType.Controller: - handle.CC(chan, param1, param2); + if (!handle.CC(chan, param1, param2)) + Debug.PrintToConsole(Debug.LogType.Error, $"Unsupported CC! >> {(ControllerType)param1}"); + return; case EventType.PitchBend: diff --git a/OmniConverter/Extensions/Audio/Renderers/XSynthRenderer.cs b/OmniConverter/Extensions/Audio/Renderers/XSynthRenderer.cs index 4093508..06b2939 100644 --- a/OmniConverter/Extensions/Audio/Renderers/XSynthRenderer.cs +++ b/OmniConverter/Extensions/Audio/Renderers/XSynthRenderer.cs @@ -11,8 +11,6 @@ public class XSynth { private const string XSynthLib = "xsynth"; - public const uint APIVersion = 0x300; - public enum AudioEvent : ushort { NoteOn = 0, @@ -164,7 +162,8 @@ public struct SoundfontOptions [DllImport(XSynthLib, EntryPoint = "XSynth_Soundfont_Remove", CallingConvention = CallingConvention.Cdecl)] public static extern void Soundfont_Remove(XSynth_Soundfont id); - public static Version Version => MiscFunctions.ConvertIntToVersion((int)GetVersionInt()); + public static Version LibraryVersion => MiscFunctions.ConvertIntToVersion((int)GetVersionInt()); + public static Version APIVersion => new Version(0, 3, 0 ,0); } public class XSynthEngine : AudioEngine @@ -179,12 +178,8 @@ public class XSynthEngine : AudioEngine public unsafe XSynthEngine(Settings settings) : base(settings, false) { - var libraryVersion = GetVersionInt(); - if (libraryVersion >> 8 != APIVersion >> 8) - { - var neededVer = MiscFunctions.ConvertIntToVersion((int)APIVersion); - throw new Exception($"Unsupported version of XSynth loaded. Please use version {neededVer.Major}.{neededVer.Minor}.x"); - } + if (LibraryVersion.Major != APIVersion.Major) + throw new Exception($"Unsupported version of XSynth loaded. Please use version {APIVersion.Major}.{APIVersion.Minor}.x"); Debug.PrintToConsole(Debug.LogType.Message, $"Preparing XSynth..."); diff --git a/OmniConverter/Forms/InfoWindow.axaml b/OmniConverter/Forms/InfoWindow.axaml index a3a6f56..b79375e 100644 --- a/OmniConverter/Forms/InfoWindow.axaml +++ b/OmniConverter/Forms/InfoWindow.axaml @@ -27,18 +27,7 @@ - Copyright Ⓒ 2024 Keppy's Software and Arduano - - Free MIDI converter for Microsoft Windows, Linux and macOS - - - This software is open-source. - - Redistribution and use of this code or any derivative works are permitted - - provided that specific conditions are met. - - Click the blue note button to see the license. + EMPTY diff --git a/OmniConverter/Forms/InfoWindow.axaml.cs b/OmniConverter/Forms/InfoWindow.axaml.cs index 2694b65..55956c9 100644 --- a/OmniConverter/Forms/InfoWindow.axaml.cs +++ b/OmniConverter/Forms/InfoWindow.axaml.cs @@ -1,4 +1,4 @@ -using Avalonia.Controls; +using Avalonia.Controls; using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.Media; @@ -12,23 +12,38 @@ namespace OmniConverter; public partial class InfoWindow : Window { + private string BleBleBleBlaBlaBla = + "Copyright Ⓒ DATE_YEAR Keppy's Software & Black MIDI Devs\n" + + "Free MIDI converter for 64-bit Windows, Linux and macOS\n\n" + + "This software is open-source.\n" + + "Redistribution and use of this code or any derivative works\n" + + "are permitted provided that specific conditions are met.\n" + + "Click the blue note button to see the license."; + public InfoWindow() { InitializeComponent(); + Loaded += FillUpInfo; + } + + private void FillUpInfo(object? sender, RoutedEventArgs e) + { + var year = DateTime.Now.Year.LimitToRange(2024, 9999); + var pp = Environment.ProcessPath; var cv = Assembly.GetExecutingAssembly().GetName().Version; - bool isDev = false; + var isDev = false; var dummy = new Version(0, 0, 0, 0); - Version? bassVer = dummy; - Version? bmidiVer = dummy; - Version? xsynthVer = dummy; - Version convVer = cv != null ? cv : dummy; + var bassVer = dummy; + var bmidiVer = dummy; + var xsynthVer = dummy; + var convVer = cv != null ? cv : dummy; try { bassVer = Bass.Version; } catch { } try { bmidiVer = BassMidi.Version; } catch { } - try { xsynthVer = XSynth.Version; } catch { } + try { xsynthVer = XSynth.LibraryVersion; } catch { } if (pp != null) { @@ -46,6 +61,8 @@ public InfoWindow() BMIDIVersion.Content = MiscFunctions.ReturnAssemblyVersion(string.Empty, "Rev. ", [bmidiVer.Major, bmidiVer.Minor, bmidiVer.Build, bmidiVer.Revision]); XSynthVersion.Content = MiscFunctions.ReturnAssemblyVersion(string.Empty, "Rev. ", [xsynthVer.Major, xsynthVer.Minor, xsynthVer.Build, xsynthVer.Revision]); + CopyrightText.Text = BleBleBleBlaBlaBla.Replace("DATE_YEAR", $"{year}"); + SetBranchColor(); } diff --git a/nfluidsynth b/nfluidsynth index 172f2db..eba0584 160000 --- a/nfluidsynth +++ b/nfluidsynth @@ -1 +1 @@ -Subproject commit 172f2db84be2134c89757952bbf02b05cbb2f5ae +Subproject commit eba05848e0d9bb1d4c5388758f0130ac808f2877