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