Coder Social home page Coder Social logo

gbevin / showmidi Goto Github PK

View Code? Open in Web Editor NEW
415.0 8.0 10.0 12.68 MB

Multi-platform GUI application to effortlessly visualize MIDI activity

Home Page: https://uwyn.com

License: GNU General Public License v3.0

Makefile 0.81% C 0.38% C++ 98.19% Objective-C++ 0.15% CMake 0.16% Shell 0.12% Inno Setup 0.14% PowerShell 0.06%
midi midi-messages midi-monitor mpe

showmidi's Introduction

showmidi's People

Contributors

alexandreleroux avatar gbevin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

showmidi's Issues

Feature request: Allow monitoring of virtual MIDI signals

The current version (0.7.0) allows monitoring of the MIDI inputs. It may be advantageous to allow monitoring of other points in the MIDI chain, e.g.

MIDI Input>>A>>Processor>>B>>MIDI Output

It would be good to be able to monitor at points 'A' & 'B' (and ideally also at MIDI Output. This is invaluable when tracing issues with MIDI signal within the host. It may benefit from being configurable so that you are not inundated with sources but can enable internal sources as required.

This may be challenging due to the different MIDI / audio subsystems used in different (or even the same) systems / platforms, e.g. Linux may be using ALSA, JACK, Pipewire, etc. for MIDI signal routing.

Feature request: Reset theme

The "Random" theme generator can create some wacky colour combinations. It would be advantageous to be able to reset to the default theme. You cannot do so by restarting the app because the theme is persistent through restarts.

Feature request: Portable version

Windows user here, it would be nice to be able to have ShowMIDI.settings in same directory as ShowMIDI.exe. A common way to implement this is to check if ShowMIDI.settings exists in the program folder and, if so, use that file. If the file doesn't exist, the program uses the default location (C:\Users<user>\AppData\Roaming\ShowMIDI\ShowMIDI.settings).

BTW this tool is extremely useful, thank you for making it available!

Linux build questions

As I started maintaining an Arch Linux package for ShowMIDI on the AUR, I have a few questions on the Linux build:

  • I'm currently using JUCE_CPPFLAGS_VST="-DJucePlugin_Build_VST=0" in the make command to disable the VST2 for license reasons, is that the right way to do it? I couldn't find anything more specific in the Linux Makefile.

  • Also, is there a way to enable the CLAP plugin with a make option on Linux? I don't think that there's anything in the Linux Makefile at present.

  • I noticed that libcurl4-openssl-dev is listed as a dependency in the Linux build instructions, but I don't think that this is needed? Maybe the README could be updated accordingly?

show Sysex

Currently Sysex isn't shown at all. I don't know how to display it nicely, so that it matches the way you show other info, but showing it would be great.
Ideally with an option to switch between hex and/or decimal (Ableton/M4L user here)

Does not play nicely with audio subsystems

Some operating systems implement audio subsystems that expect to have control of the audio / MIDI ports, e.g. JACK on Linux. If such a subsystem is running then ShowMIDI fails to show MIDI messages.

Example: Linux running JACK2. ShowMIDI will start and detect the physical MIDI inputs, showing them in its GUI but no MIDI messages are displayed. Stopping JACK2 and restarting ShowMIDI allows it to show received MIDI messages.

Sidebar open / close symbol may be reversed

Running version 0.7.0 the sidebar can be shown by pressing the "<<" button and hidden by pressing the ">>" button. This feels reversed to me. I would expect the button to display the action it takes, i.e. ">>" to open and "<<" to close. This is on Linux.

Failure to build on arm with gcc 8.3.0

Attempts to build on a Raspberrry Pi running Debian Bullseye armv71 (32-bit) fails with the error:

/usr/include/c++/8/bits/unique_ptr.h:79:16: error: invalid application of ‘sizeof’ to incomplete type ‘showmidi::MainLayoutComponent::Pimpl’
  static_assert(sizeof(_Tp)>0,

This is during an attempt to build the standalone or the LV2 plugin:

make Standalone
make LV2

I will also test on 64-bit Bookworm...

Fails to build on Linux due to missing vst2 includes?

It seems to want the vst2 headers

make  CONFIG=Release
Compiling include_juce_audio_plugin_client_VST2.cpp
In file included from ../../JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp:9:
../../JuceLibraryCode/modules/juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp:88:10: fatal error: pluginterfaces/vst2.x/aeffect.h: No such file or directory
   88 | #include "pluginterfaces/vst2.x/aeffect.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:219: build/intermediate/Release/include_juce_audio_plugin_client_VST2_dd551e08.o] Error 1

Typo in README

The path to the Linux makefile has a capitalisation error. It should be LinuxMakefile. The error occurs three times.

LV2 target?

Hi! Just saw the update, wondering if an LV2 version could be possible also? Thanks!

Note numbering?

Thanks a lot for this program, I love it! Simple and straightforward.

My only minor quibble is that having middle C = C2 is not very common. IPN (a.k.a "scientific pitch notation") seems to be the most common standard and has middle C = C4. Maybe you could change DEFAULT_OCTAVE_MIDDLE_C in MidiDeviceComponent.cpp accordingly? Or is there a reason that you've chosen this particular numbering of the octaves?

ShowMIDI is available as MIDI FX Plugin in Logic, but doesn't show any events

You can call up ShowMIDI (Mac/AU version) as a MIDI FX plugin in Logic in the MIDI FX insert slot.

It opens, displays a window, but never shows any MIDI events, whether incoming in realtime, or via the track playback - both sources of MIDI data should be passing through the plugin.

Is this supposed to work? Presumably the app has been compiled to be available as a MIDI Plugin in Logic for a reason, or maybe I'm doing something wrong...?

Ordering by most recent note on (vs. ascending channel number)

Pushing my luck here, but I'm wondering if an incoming new note could always populate the top slot?

Notes are ordered by channel right now, which means things can feel "jumpy" (not always clear where the latest note is when there's a larger list) but also, if i hit a few notes, it often requires scrolling to see the latest note on. If new notes always populated the top slot, one could always focus attention in the same top spot (and it would smooth overall motion to some degree).

I'm guessing the channel ordering is in part because notes are grouped by channel (can be multiple things per channel happening) so perhaps this is non-trivial / would require the whole channel group to be repositioned?...

Feature request: two rows of MIDI sources on iPadOS version

Thanks for ShowMIDI. Feature request: capability to show two rows of MIDI sources in the iPadOS version.

In ShowMIDI for iPadOS version 0.8.0, on the largest 12,9" iPad screen with ShowMIDI's menu folded, I can display a maximum of 5 MIDI devices at once, one per column. I have to drag the screen to the right to see my other MIDI devices.

I would be nice if instead of 1 MIDI source per column, we could have 2 MIDI sources per column by adding an horizontal split in the middle of the layout. This would enable ShowMIDI users to see 10 MIDI sources without any scrolling required on a 12,9" device.

An alternative solution (which should likely deserve another feature request ticket) would be to be able to reorder MIDI source columns. I could thus put my most important MIDI sources in the first 5 columns.

Did I explain well enough the request? Thoughts or comments? Thank you!

FR: Show note on velocity post note off

Hi Geert!

Really thankful to be able to use such a high quality free utility — and one that looks nice! <3

Wondering if it would be possible to persist Note On velocity somewhere. I'm assuming my controller is sending Note Off with a velocity of 0 — so when notes are quick, it's a bit tough to inspect velocity. A hacky solution you may not like would be to display 0 (127) or something on Note Off, or still show ON 127 above the note off?

ShowMIDI.-.2024-01-02.51.mp4

Related huge "what if" feature request that you should 100% definitely ignore (but if you gave me some indication of interest, i could try to submit a PR) — it might be really nice to see a channel / note independent histogram of velocity, CP, CC 74, etc...

The plugin blocks all expressions in Bitwig

The title says all. If I place it in front of a MPE capable instrument to monitor incoming Midi, the expressions are blocked. The LinnStrument pitch bend isn't passed on anymore...
And if you are at it, just list expressions as well. Would be very helpful for trouble shooting...

README does not describe need for recursive git clone

ShowMIDI depends on JUCE and has a submodule dependancy linked in the git repository. Users must clone with --recursive option to pull this dependancy. Without this the build fails. It may be advantageous to describe this dependancy to avoid users falling at the first hurdle!

Feature Request: ability to hide/unhide MIDI devices

Love the idea here and it is really useful alongside other MIDI monitors that provide the data streams.

To cope with monitoring multiple controllers, many of which can present multiple MIDI devices (in some cases up to 4 devices) it would be really helpful if there were a way to switch individual MIDI port monitoring on/off - maybe through an expandable left-hand folder list approach on the left (or right) with check boxes for enabled, or alternatively some form of dialog box from the menu.

As a further enhancement, it would be really good if you could have multiple "favourite" collections (presets if you like) of MIDI inputs available, so you could easily recall a setup to look at one/more instruments/controllers easily without having to select individual MIDI ports to enable/disable them.

Also the "hide" option should ideally disconnect from the specific MIDI devices to cope with the situation where a MIDI device is already connected to say a virtual MIDI device and, on Windows with the normal driver (not multi-client capable) this can cause connection issues.

custom install path for VST2 on Windows

currently the plugin install to C:\Program Files\Common Files\VST, however this is not the most common path for VST2 plugins on Windows (which is C:\Program Files\vstplugins ).
But even this is not a universal thing. Mine is at C:\Program Files\vstplugins 64.

Could we have a custom install path and also ideally there is a way to ask Windows for (in Registry) set VST plugin folder. So if this setting, if existing, could be recognized?

BTW Thanks for the great tool!! :-)

Feature Request: Ability to hide all devices

Personally, I have too many MIDI “devices”. Many of them are just empty ports that don’t have anything attached. I wish there was an easy way to just hide them all, so I can quickly show the few select devices I’m focused on right now.

My suggestion (as a Mac user) would be “option-click” affects all devices.

  • option-click on a visible device would hide all
  • option-click on a hidden device would show all

Feature request: Support for 14-bit CC

ShowMIDI currently displays 14-bit CC signals as two separate controls (which is correct insofar as this is how these are transmitted, but of course not useful for the intended purpose).

At a minimum, a 14 bit cc feature would entail creating a list of pairs of CC numbers that represent a combined 14-bit control, plus specifying whether the device is sending the least or most significant bits first.

A more usable + helpful version of this feature would simply detect streams of CC data that look like 14-bit CC, and offer an option to interpret these as 14 bit automatically. This should be straightforward - 14-bit CC messages should always come in ordered pairs at the same time, with one value that tends toward small deltas and one with large / semi-random deltas.

Text re-sizing for increaased usability scenarios

I ran into the problem of readability with my multi monitor setup, the text became too small to discern on the furthest screen, which is the best place for it to be for my workflow.

Text options would help with odd scenarios like mine and folks with minor vision impairments.

After loading up the program and checking again, I think at least a 4X size increase would be needed for my use case to work well.

The font itself is less of an issue, it's sheer size that is the problem. The method to achieve the scaling is not a concern, UI scaling would be fine instead of arbitrary text loading.

Maybe 4 clearly distinct sizes, like, 1X, 2X, 4X, 8X perhaps if things need to remain in perfect scaling.

Overall, love that you made the tool to begin with, really helps with troubleshooting my odd setup 👍

iPad host compatibility

These hosts work:

  • AUM
  • Drambo
  • miRack

These hosts have issues:

  • It crashes apeMatrix
  • I don't see it listed in Logic Pro - resolved: appears in MIDI FX on an existing track
  • It loads in Loopy Pro but won't display (OSStatus error 10868)

iPad Pro (11-inch) (3rd generation) iPadOS 17.1.1

Feature: Option for the timeout on CC and pitchbend to be unbounded

An option for the timeout on CC and pitchbend (at least) to be unbounded would be very useful. So that the current state of those can always be visible... since they actually have persistent state in the real world of midi instruments/devices. You can add a reset/clear button per midi device so it can be manually cleared on demand. When that's on some other visual indication can let the user know if it is "old" via text/background intensity.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.