Skip to content

Commit

Permalink
Applied Code Cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel127 committed Sep 6, 2023
1 parent 5e7b446 commit 44ad55e
Show file tree
Hide file tree
Showing 10 changed files with 100 additions and 101 deletions.
18 changes: 9 additions & 9 deletions RtMidi.Net/Clients/MidiInputClient.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System.Diagnostics;
using RtMidi.Net.Enums;
using RtMidi.Net.Events;
using RtMidi.Net.InteropServices;
using System.Diagnostics;

namespace RtMidi.Net.Clients;

Expand Down Expand Up @@ -46,7 +46,7 @@ public bool IgnoreSenseMessages

public MidiInputClient(MidiDeviceInfo deviceInfo) : base(deviceInfo, new RtMidiIn())
{
_rtMidiInClient = (RtMidiIn) RtMidiClient;
_rtMidiInClient = (RtMidiIn)RtMidiClient;
}

public void ActivateMessageReceivedEvent()
Expand All @@ -66,8 +66,8 @@ private void IgnoreMessageTypes(bool sysex, bool time, bool sense)

private void InternalMessageReceived(double timestamp, IntPtr messagePtr, UIntPtr messageSize, IntPtr userDataPtr)
{
var messageData = new byte [(int) messageSize];
System.Runtime.InteropServices.Marshal.Copy(messagePtr, messageData, 0, (int) messageSize);
var messageData = new byte[(int)messageSize];
System.Runtime.InteropServices.Marshal.Copy(messagePtr, messageData, 0, (int)messageSize);
var message = ConvertMessage(messageData);
var midiEventArgs = new MidiMessageReceivedEventArgs(message, TimeSpan.FromSeconds(timestamp));
OnMessageReceived?.Invoke(this, midiEventArgs);
Expand All @@ -93,7 +93,7 @@ public async Task<(MidiMessage, TimeSpan)> GetMessageAsync(CancellationToken can
{
Stopwatch stopwatch = new();
byte[] messageData;
stopwatch.Start();
do
{
Expand All @@ -113,10 +113,10 @@ private static MidiMessage ConvertMessage(IReadOnlyList<byte> message)
{
MidiMessageType type;

if (message[0] is >= (byte) MidiMessageType.NoteOff and < (byte) MidiMessageType.SystemExclusive)
if (message[0] is >= (byte)MidiMessageType.NoteOff and < (byte)MidiMessageType.SystemExclusive)
{
var channel = (MidiChannel) (0b_0000_1111 & message[0]);
type = (MidiMessageType) (0b_1111_0000 & message[0]);
var channel = (MidiChannel)(0b_0000_1111 & message[0]);
type = (MidiMessageType)(0b_1111_0000 & message[0]);

switch (type)
{
Expand All @@ -143,7 +143,7 @@ private static MidiMessage ConvertMessage(IReadOnlyList<byte> message)
return new MidiMessageUnknown(message.ToArray());
}

type = (MidiMessageType) message[0];
type = (MidiMessageType)message[0];
switch (type)
{
case MidiMessageType.SystemExclusive:
Expand Down
8 changes: 4 additions & 4 deletions RtMidi.Net/Clients/MidiOutputClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public class MidiOutputClient : MidiClient

public MidiOutputClient(MidiDeviceInfo deviceInfo) : base(deviceInfo, new RtMidiOut())
{
_rtMidiOutClient = (RtMidiOut) RtMidiClient;
_rtMidiOutClient = (RtMidiOut)RtMidiClient;
}

public void SendMessage(byte[] message)
Expand Down Expand Up @@ -64,7 +64,7 @@ private static byte[] ConvertMessage(MidiMessage message)
},
MidiMessageType.SystemExclusive when message is MidiMessageSystemExclusive(var data, _) => data,
//TODO Create Message for TimeCodeQuarterFrame
MidiMessageType.TimeCodeQuarterFrame when message is MidiMessageUnknown (var data, _) => data,
MidiMessageType.TimeCodeQuarterFrame when message is MidiMessageUnknown(var data, _) => data,
MidiMessageType.SongPositionPointer when message is MidiMessageSongPositionPointer songPosPointer => new[]
{
(byte) songPosPointer.Type,
Expand Down Expand Up @@ -97,12 +97,12 @@ private static byte[] ConvertMessage(MidiMessage message)

byte ByteFrom(MidiMessageType messageType, MidiChannel channel)
{
return (byte) ((byte) messageType | (byte) channel);
return (byte)((byte)messageType | (byte)channel);
}

byte[] DefaultMessage(MidiMessage midiMessage)
{
return new[] {(byte) midiMessage.Type};
return new[] { (byte)midiMessage.Type };
}
}
}
2 changes: 1 addition & 1 deletion RtMidi.Net/Enums/MidiMessageType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace RtMidi.Net.Enums;
public enum MidiMessageType : byte
{
Unknown = 0,

NoteOff = 0b_1000_0000,
NoteOn = 0b_1001_0000,
PolyphonicKeyPressure = 0b_1010_0000,
Expand Down
2 changes: 1 addition & 1 deletion RtMidi.Net/Enums/MusicNote.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public enum MusicNote : byte
A = 9,
ASharp = 10,
B = 11,

Do = C,
DoSharp = CSharp,
Re = D,
Expand Down
8 changes: 4 additions & 4 deletions RtMidi.Net/InteropServices/RtMidiBase.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using System.Runtime.InteropServices;
using RtMidi.Net.Enums;
using System.Runtime.InteropServices;

namespace RtMidi.Net.InteropServices;

Expand All @@ -19,7 +19,7 @@ internal abstract class RtMidiBase : IDisposable
/// </remarks>
/// <returns>Returns true if a port is open and false if not.</returns>
public bool IsPortOpen { get; private set; }

protected RtMidiBase(IntPtr rtMidiPtr)
{
RtMidiPtr = rtMidiPtr;
Expand Down Expand Up @@ -97,7 +97,7 @@ public string GetPortName(uint portNumber, uint? nameSize = null)
bufferNameSize = nameSize.Value;
}

messagePtr = Marshal.AllocHGlobal((int) bufferNameSize);
messagePtr = Marshal.AllocHGlobal((int)bufferNameSize);
try
{
resultInterop = RtMidiInterop.rtmidi_get_port_name(RtMidiPtr, portNumber, messagePtr, ref bufferNameSize);
Expand Down Expand Up @@ -159,7 +159,7 @@ public static IReadOnlyCollection<MidiApi> GetCompiledApi()
var unmanagedPointer = Marshal.AllocHGlobal(apis.Length);
Marshal.Copy(apis, 0, unmanagedPointer, apis.Length);
var result = RtMidiInterop.rtmidi_get_compiled_api(unmanagedPointer, sizeof(MidiApi));
apis = new byte [result];
apis = new byte[result];
Marshal.Copy(unmanagedPointer, apis, 0, result);
var apisResult = apis.Cast<MidiApi>().ToList();
Marshal.FreeHGlobal(unmanagedPointer);
Expand Down
2 changes: 1 addition & 1 deletion RtMidi.Net/InteropServices/RtMidiCallback.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
namespace RtMidi.Net.InteropServices;

[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate void RtMidiCallback (double timestamp, IntPtr message, UIntPtr size, IntPtr userData);
internal delegate void RtMidiCallback(double timestamp, IntPtr message, UIntPtr size, IntPtr userData);
6 changes: 3 additions & 3 deletions RtMidi.Net/InteropServices/RtMidiIn.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using System.Runtime.InteropServices;
using RtMidi.Net.Enums;
using System.Runtime.InteropServices;

namespace RtMidi.Net.InteropServices;

Expand Down Expand Up @@ -121,12 +121,12 @@ public void IgnoreTypes(bool midiSysex = true, bool midiTime = true, bool midiSe
{
var size = 1024;
var messagePtr = Marshal.AllocHGlobal(size);

var timestamp = RtMidiInterop.rtmidi_in_get_message(RtMidiPtr, messagePtr, ref size);
var message = new byte[size];
Marshal.Copy(messagePtr, message, 0, size);
Marshal.FreeHGlobal(messagePtr);

return (message, timestamp);
}

Expand Down
4 changes: 2 additions & 2 deletions RtMidi.Net/InteropServices/RtMidiOut.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ internal class RtMidiOut : RtMidiBase
public RtMidiOut() : base(RtMidiInterop.rtmidi_out_create_default())
{
}

/// <summary>
/// Default constructor that allows an optional client name.
/// <remarks>
Expand All @@ -36,7 +36,7 @@ public RtMidiOut(MidiApi api, string clientName)
: base(RtMidiInterop.rtmidi_out_create(api, clientName))
{
}

/// <inheritdoc />
public override MidiApi GetCurrentApi()
{
Expand Down
12 changes: 6 additions & 6 deletions RtMidi.Net/MidiNote.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ namespace RtMidi.Net;
public MidiNote(byte note)
{
if (note > 127) throw new ArgumentOutOfRangeException(nameof(note), "The note must be 0 to 127");
Note = (MusicNote) (note % 12);
Octave = (MusicOctave) (note / 12);
Note = (MusicNote)(note % 12);
Octave = (MusicOctave)(note / 12);
}

/// <summary>
Expand All @@ -42,7 +42,7 @@ public MidiNote(MusicNote note, MusicOctave octave)
/// <returns>The MIDI byte representation</returns>
public byte GetByteRepresentation()
{
return (byte) ((byte) Note + (byte) ((byte) Octave * 12));
return (byte)((byte)Note + (byte)((byte)Octave * 12));
}

/// <summary>
Expand All @@ -67,13 +67,13 @@ public string GetName(bool useLatinName = false)
if (useLatinName)
{
var latinName = notesNames.Except(angloSaxonNames).ToList();
noteName = latinName[(int) Note];
noteName = latinName[(int)Note];
}
else
{
noteName = angloSaxonNames[(int) Note];
noteName = angloSaxonNames[(int)Note];
}

return $"{noteName.Replace("Sharp", "#")}{(int) Octave}";
return $"{noteName.Replace("Sharp", "#")}{(int)Octave}";
}
}
139 changes: 69 additions & 70 deletions WorkerTest/Worker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,95 +3,94 @@
using RtMidi.Net.Enums;
using RtMidi.Net.Events;

namespace WorkerTest
namespace WorkerTest;

public class Worker : BackgroundService
{
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private MidiInputClient? _midiInputClient;
private const bool UseEventHandler = true; //Change to test
private readonly ILogger<Worker> _logger;
private MidiInputClient? _midiInputClient;
private const bool UseEventHandler = true; //Change to test

/// <summary>
/// Constructor
/// </summary>
/// <param name="logger"></param>
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
/// <summary>
/// Constructor
/// </summary>
/// <param name="logger"></param>
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}

public override async Task StartAsync(CancellationToken cancellationToken)
public override async Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Starting");
var rtMidiVersion = MidiManager.GetRtMidiVersion();
_logger.LogInformation("RtMidi version: {rtMidiVersion}", rtMidiVersion);
var devices = MidiManager.GetAvailableDevices();
if (devices.Any())
{
_logger.LogInformation("Starting");
var rtMidiVersion = MidiManager.GetRtMidiVersion();
_logger.LogInformation("RtMidi version: {rtMidiVersion}", rtMidiVersion);
var devices = MidiManager.GetAvailableDevices();
if (devices.Any())
_logger.LogInformation("Available devices:");
foreach (var d in devices.OrderBy(info => info.Port))
{
_logger.LogInformation("Available devices:");
foreach (var d in devices.OrderBy(info => info.Port))
{
_logger.LogInformation("{port}) {name} - {type}", d.Port, d.Name, d.Type);
}

var devicePort = 1u; //Change device to test
var device = MidiManager.GetDeviceInfo(devicePort, MidiDeviceType.Input);
_midiInputClient = new MidiInputClient(device);
if (UseEventHandler)
{
_midiInputClient.OnMessageReceived += MidiClient_OnMessageReceived;
_midiInputClient.ActivateMessageReceivedEvent();
}
_midiInputClient.Open();
_logger.LogInformation("{port}) {name} - {type}", d.Port, d.Name, d.Type);
}
else

var devicePort = 1u; //Change device to test
var device = MidiManager.GetDeviceInfo(devicePort, MidiDeviceType.Input);
_midiInputClient = new MidiInputClient(device);
if (UseEventHandler)
{
var exception = new Exception("No Midi devices found");
_logger.LogError(exception, "No Midi devices found");
throw exception;
_midiInputClient.OnMessageReceived += MidiClient_OnMessageReceived;
_midiInputClient.ActivateMessageReceivedEvent();
}

await base.StartAsync(cancellationToken);
_midiInputClient.Open();
}
else
{
var exception = new Exception("No Midi devices found");
_logger.LogError(exception, "No Midi devices found");
throw exception;
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
await base.StartAsync(cancellationToken);
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
_logger.LogInformation("Executing");
if (!UseEventHandler)
{
_logger.LogInformation("Executing");
if (!UseEventHandler)
while (!stoppingToken.IsCancellationRequested)
{
while (!stoppingToken.IsCancellationRequested)
{
var (message, _) = await _midiInputClient!.GetMessageAsync(stoppingToken);
OnMessageReceived(message);
}
var (message, _) = await _midiInputClient!.GetMessageAsync(stoppingToken);
OnMessageReceived(message);
}
}
}

public override async Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Stopping");
_midiInputClient?.Close();
_midiInputClient?.Dispose();
await base.StopAsync(cancellationToken);
}
public override async Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Stopping");
_midiInputClient?.Close();
_midiInputClient?.Dispose();
await base.StopAsync(cancellationToken);
}

private void MidiClient_OnMessageReceived(object? sender, MidiMessageReceivedEventArgs args)
{
OnMessageReceived(args.Message);
}

private void MidiClient_OnMessageReceived(object? sender, MidiMessageReceivedEventArgs args)
private void OnMessageReceived(MidiMessage midiMessage)
{
if (midiMessage is MidiMessageNote { Type: MidiMessageType.NoteOn or MidiMessageType.NoteOff } message)
{
OnMessageReceived(args.Message);
const int offset = 21;
var note = message.Note.GetByteRepresentation() - offset;
_logger.LogInformation("{noteName} - {messageType}, Note number: {noteNumber}", message.Note.GetName(), message.Type, note);
}

private void OnMessageReceived(MidiMessage midiMessage)
else
{
if (midiMessage is MidiMessageNote { Type: MidiMessageType.NoteOn or MidiMessageType.NoteOff } message)
{
const int offset = 21;
var note = message.Note.GetByteRepresentation() - offset;
_logger.LogInformation("{noteName} - {messageType}, Note number: {noteNumber}", message.Note.GetName(), message.Type, note);
}
else
{
_logger.LogInformation("{messageType}", midiMessage.Type);
}
_logger.LogInformation("{messageType}", midiMessage.Type);
}
}
}

0 comments on commit 44ad55e

Please sign in to comment.