Code Monkey home page Code Monkey logo

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  avatar  avatar  avatar

showmidi's Issues

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.

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 👍

Channel pressure parameters don't pass thru

I just got my hands on the ROLI Seaboard Block M controller and was wondering why the channel pressure aftertouch function wasn't working. Turns out it's because I had ShowMIDI before the synth (Equator2). Turning off ShowMIDI allowed the channel pressure data to pass thru and regain function.

Thought you should know! I'm using the CLAP version on Reaper for mac.

New signing issue with 0.9.0 Windows binary?

I read that as of 0.7.0 Windows builds are now fully code signed

I just tried to install ShowMIDI-Windows-0.9.0.exe (5,099,792 bytes) signed by Open Source Developer, Geert Bevin
and it gives this error:

"Windows protected your PC - Microsoft Defender SmartScreen prevented an unrecognized app from starting. Running this app might put your PC at risk. "

Is this a regression in the signing, or is there another issue with 0.9.0?

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...?

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.

[FR] SysEx human-readable translation?

Hi @gbevin! Amazing work with ShowMIDI – immediately became my go-to tool for visualizing MIDI.

Here's an idea I've had for a while – it might be useful in certain situations to be able to translate SysEx messages that are being sent/received, using their respective schemas (many of which I expect to be already reverse-engineered).

For example, let's say you would want to recall settings for your device, You send a SysEx message, which might look like black magic.
ShowMIDI could have an option to match the intercepted MIDI SysEx message and translate it using a specified schema (for the sake of this example, let's say there's a folder path "SysEx Schemas"/[MIDI device vendor]/[MIDI device model]", where the schema file would be) to represent it in "human-readable" form.
It would show that this is a SysEx message that matched the schema for specific device and then translate any kind of parameters sent, e.g. the filter cutoff in this recall is being set up to this specific value, or this specific fader on the device will now send this MIDI CC message number etc.

Let me know if this is something that interests you and whether you need further clarification. I'd be happy to contribute!

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

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.

VST3 on windows / ableton live wont load

Anyone else having issues with vst3 opening in ableton live? i just get an error after placing the vst on a track. It shows up in the plugin browser correctly and directory structure seems ok.

VST seems to load and works!

some notes:
standalone version is not running
pc not rebooted after install

system
win 11 pro

tested on:
Ableton live 12.1 and 12

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)

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: 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.

LV2 target?

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

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...

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.

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!! :-)

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...

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?

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?

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?...

Compact / Multi NRPN display

Follow up from my YouTube comment, I would like to suggest improvement for the display of NRPN controllers.

  1. Display each controller individually rather than jumping from one to another
  2. Provide alternative display format to make it obvious it's single NRPN controller and not three CC controllers

Original comment: "Could you provide setting for alternate NRPN display, where the unique CC 98 and 99 combinations would be merged together into one visualization slot together with the actual CC 6 value? Right now, not only is it a bit unintuitive, but it is not possible to monitor multiple NRPN controllers (knobs) at the same time."

Video demonstration: https://www.youtube.com/watch?v=KArrbf8KxNM

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!

Typo in README

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

Linux missing libraries

Love the app on MacOS and would like to get it running on Linux where I do a lot of my device development.

I'm running LMDE6 and when I try to run ShowMIDI I get these errors:

./ShowMIDI: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.38' not found (required by ./ShowMIDI) ./ShowMIDI: /lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.32' not found (required by ./ShowMIDI)
./ShowMIDI: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by ./ShowMIDI)

I'm kind of new to Linux and know enough to be dangerous. What do I need to install to get these libraries on my system?

Or better yet... maybe a Flatpak can be made available.

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...

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.

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 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.

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!

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!

Problems with long names of midi ports

ShowMIDI v1.01 on macos Ventura 13.6.7

I can not see the whole name of some midi ports in the side bar.

Could you allow users to increase/decrease the width of the sidebar to show the whole name of the midi ports?

Or just show the whole name of the midi port if the name is hovered by the mouse?

This is how I see the midi ports:

Captura de pantalla 2024-07-22 a les 21 01 28

The midi port names in the columns of the main view seems to be not centered. This makes that some names are also cut.

In this screenshot the midi port called "IAC Everybody > TotalmixMackie" seems to be cut because it is not centered:

Captura de pantalla 2024-07-22 a les 21 12 29

The app is amazing!
Thanks a lot!
Jordi

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.