Giter Club home page Giter Club logo

la-jarre-a-son / midi-jar Goto Github PK

View Code? Open in Web Editor NEW
69.0 2.0 7.0 12.33 MB

MIDI Jar is a tool box for musicians, learners, streamers, that want to route MIDI message between devices, and display a piano or chords while playing, and integrate it on a video or on a Twitch stream.

Home Page: http://midi-jar.ljas.fr/

License: MIT License

TypeScript 89.47% JavaScript 2.23% SCSS 8.17% EJS 0.12%
chords midi music-theory obs-studio piano-keyboard twitch music-learning piano piano-chords midi-router

midi-jar's People

Contributors

artistix 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

Watchers

 avatar  avatar

midi-jar's Issues

Circle of fifths screen is empty on Linux

I can send screenshots but basically, the whole circle of fifth screen doesn't have the graphic visible on Linux. Linux. I can see it on Windows but the graph is not here on Linux.

Your Environment

Arch Linux, kde

  • MIDI Jar version:
  • Operating System:
  • Hardware Devices:

v1.5.0 is actually 1.4.0 and tries to download an update for AppImage

Expected Behavior

That installing the 1.5.0 appimage says 1.5.0 on startup

Current Behavior

It says 1.4.0 on the startup and then says it will download it. But I don't think the self updating works properly for AppImages (linux) anyways. Unless the auto updater isn't pointed correctly to the latest version

Your Environment

  • MIDI Jar version:1.5.0
  • Operating System:Archlinux
  • Hardware Devices:

feature - show the history of previous chords

I'm thinking this could be useful especially for improvising and learning.. But I would like to hear other thoughts on it, too.

I'd like it to store and show a little bit of history of the chords\notes that were previously played, especially helping to look back and see how to move between the chords

What do you think?

Chord Display keyboard range

Hello and thanks for Midi Jar!

It would be very practical IMO to have a chord/melody split point. (i.e. A4)

This way I can display my entire keyboard range (i.e. C2 thru C6) but notes above (i.e.) A4 are NOT included in the chord calculation. Additionally, I would like to highlight the melody notes with a different color (ignored by the chord calculation, and played with right hand).

Recognize invertions and display more common chords first

Issue has been forwarded to author of tonal library, but may be useful here for tuning display algorithm when several variants available.

Expected Behavior

E-A-C triad is expected to be displayed as Am/E

Current Behavior

E-A-C chord recognizing as C6/E without alternatives

am-inversion

Yes, it could be C6 with omitted V, but primary display should be basic minor triad.

Soon I found than midi-jar do not recognize inversions (as in Am/E case) or treat them as very uncommon chords for main display. For example when playing simple D major chord inversion from A (A-D-F#) midi-jar displays as main choice a very uncommon Gb6addb6/A chord and then small display of DM/A that is definitely more relevant in most cases.

d-inversion

Steps to Reproduce

  1. Play almost any triad inversion

Suggested Solution (if any)

Tune algorithm of chords recognition to recognize inversions and display most relevant (simplest, most common) variants first.

Your Environment

  • MIDI Jar version: 1.5.0 (2023-11-07)
  • Operating System: Windows 10 64-bit
  • Hardware Devices: USB MIDI Keyboard

Malfunction with keyboards that send 'Note On' with 0 velocity instead of 'Note Off'

Expected Behavior

The notes should go off when releasing the keys.

Current Behavior

The notes show up doubled upon releasing and stay on forever, because the midi message is always Note On.

Capture

Debug log:
[58496.5730] Axiom 61 MIDI In: channel 1 - 144:Note On - note 48 - 57
[58667.0615] Axiom 61 MIDI In: channel 1 - 144:Note On - note 48 - 0
[60075.9404] Axiom 61 MIDI In: channel 1 - 144:Note On - note 50 - 57
[60208.6306] Axiom 61 MIDI In: channel 1 - 144:Note On - note 50 - 0
[60919.7518] Axiom 61 MIDI In: channel 1 - 144:Note On - note 52 - 82
[61023.0185] Axiom 61 MIDI In: channel 1 - 144:Note On - note 52 - 0
[64152.0226] Axiom 61 MIDI In: channel 1 - 144:Note On - note 53 - 52
[64264.1501] Axiom 61 MIDI In: channel 1 - 144:Note On - note 53 - 0

Suggested Solution (if any)

The midi message Note On (0x90) should only be considered to be a note on trigger when its velocity is not 0. Also an 0x90 message with 0 velocity should be equivalent to Note Off (0x80).

Unfortunately this setting cannot be changed in my midi keyboard itself.

Your Environment

  • MIDI Jar version: v1.2.0
  • Operating System: Windows 10 Version 10.0.16299 Build 16299
  • Hardware Devices: M-Audio Axiom 61 Mk2 through USB, Creative Audigy RX (with native ASIO driver)

Chord display should understand no 5th chords

It seems that midi jarr gets confused when you drop the 5th from extended chords

Take an Emaj7 for instance, root position. E, G#, B and D#...

You can see it understand this chord. However, if you remove the 5th(leave out the B) as jazz often does... It gets confused and won't show it as any chord...

But, to my eyes I can see this and understand it's just an Emaj7 without a 5th. What's weird is I've seen it before say "no5" for a chord... So it does kinda understand this concept in some contexts...

Start minimized option seems doesn't work

Expected Behavior

Expect midi-jar to be minimized when launching at startup

midi-jar-start-minimized

Current Behavior

Every system restart I see midi-jar window like above screenshot.

Steps to Reproduce

  1. Restart system

Your Environment

  • MIDI Jar version: 1.6.1
  • Operating System: Windows 10 Pro

After some time, ALSA fails with cannot allocate memory

I'm currently tracing a system crash periodically that...as I dig more into this, I am becoming more suspect it is this app/node-midi, in particular

I'm currently connecting my raspberry pi as a client to this desktop machine's server of rtpmidid. It could very well be rtpmidid, but more digging on the error pointed me towards this issue below

Log issue I receive is:


Aug 24 20:57:42 sreich-archlinux-desktop rtpmidid[674]: [rtppeer.cpp:351] Send CK0 to raspberrypi
Aug 24 20:57:42 sreich-archlinux-desktop rtpmidid[674]: [rtppeer.cpp:292] Latency raspberrypi: 65.60 ms (client / 2)
Aug 24 20:57:42 sreich-archlinux-desktop rtpmidid[674]: [rtppeer.cpp:300] Latency raspberrypi/rtpmidi raspberrypi-sreich-archlinux-desktop: 3.50 ms (server / 3)
Aug 24 20:57:42 sreich-archlinux-desktop rtpmidid[674]: [mdns_rtpmidi.cpp:297] (Browser) REMOVE: service 'raspberrypi' of type '_apple-midi._udp' in domain 'local'
Aug 24 20:57:42 sreich-archlinux-desktop rtpmidid[674]: [rtpmidid.cpp:284] Removing rtp midi client raspberrypi
Aug 24 20:57:42 sreich-archlinux-desktop rtpmidid[674]: [rtpmidid.cpp:290] Found client to delete: alsa port 3. Deletes all known addreses.
Aug 24 20:57:42 sreich-archlinux-desktop rtpmidid[674]: [rtpmidid.cpp:647] Removing peer from known peers list. Port 3
Aug 24 20:57:42 sreich-archlinux-desktop rtpmidid[674]: [rtpmidid.cpp:340] Disconnect aseq port 3, signal: disconnect(4)
Aug 24 20:57:42 sreich-archlinux-desktop rtpmidid[674]: [rtppeer.cpp:53] ~rtppeer 'sreich-archlinux-desktop/PipeWire-RT-Event-input' (local) <-> 'raspberrypi' (remote)
Aug 24 20:57:42 sreich-archlinux-desktop MIDI-Jar-1.1.0_b94c6fccb5821201111ab46ec635f799.appimage[1413]: ALSA lib seq_hw.c:466:(snd_seq_hw_open) open /dev/snd/seq failed: Cannot allocate memory
Aug 24 20:57:42 sreich-archlinux-desktop MIDI-Jar-1.1.0_b94c6fccb5821201111ab46ec635f799.appimage[1413]: MidiOutAlsa::initialize: error creating ALSA sequencer client object.
Aug 24 20:57:42 sreich-archlinux-desktop MIDI-Jar-1.1.0_b94c6fccb5821201111ab46ec635f799.appimage[1413]: ALSA lib seq_hw.c:466:(snd_seq_hw_open) open /dev/snd/seq failed: Cannot allocate memory
Aug 24 20:57:42 sreich-archlinux-desktop MIDI-Jar-1.1.0_b94c6fccb5821201111ab46ec635f799.appimage[1413]: MidiOutAlsa::initialize: error creating ALSA sequencer client object.
Aug 24 20:57:42 sreich-archlinux-desktop MIDI-Jar-1.1.0_b94c6fccb5821201111ab46ec635f799.appimage[1413]: ALSA lib seq_hw.c:466:(snd_seq_hw_open) open /dev/snd/seq failed: Cannot allocate memory
Aug 24 20:57:42 sreich-archlinux-desktop MIDI-Jar-1.1.0_b94c6fccb5821201111ab46ec635f799.appimage[1413]: MidiOutAlsa::initialize: error creating ALSA sequencer client object.
Aug 24 20:57:42 sreich-archlinux-desktop MIDI-Jar-1.1.0_b94c6fccb5821201111ab46ec635f799.appimage[1413]: ALSA lib seq_hw.c:466:(snd_seq_hw_open) open /dev/snd/seq failed: Cannot allocate memory
Aug 24 20:57:42 sreich-archlinux-desktop MIDI-Jar-1.1.0_b94c6fccb5821201111ab46ec635f799.appimage[1413]: MidiOutAlsa::initialize: error creating ALSA sequencer client object.
Aug 24 20:57:42 sreich-archlinux-desktop MIDI-Jar-1.1.0_b94c6fccb5821201111ab46ec635f799.appimage[1413]: ALSA lib seq_hw.c:466:(snd_seq_hw_open) open /dev/snd/seq failed: Cannot allocate memory
Aug 24 20:57:42 sreich-archlinux-desktop MIDI-Jar-1.1.0_b94c6fccb5821201111ab46ec635f799.appimage[1413]: MidiOutAlsa::initialize: error creating ALSA sequencer client object.
Aug 24 20:57:42 sreich-archlinux-desktop MIDI-Jar-1.1.0_b94c6fccb5821201111ab46ec635f799.appimage[1413]: ALSA lib seq_hw.c:466:(snd_seq_hw_open) open /dev/snd/seq failed: Cannot allocate memory

when I run aconnect -l I get this

ALSA lib seq_hw.c:466:(snd_seq_hw_open) open /dev/snd/seq failed: Cannot allocate memory

My system gets into a state of this, looks like it is resource locked until I reboot. Mind you, this is now for all clients. But I think it might be a resource leak caused by midi-jar which of course causes issues for everyone.

justinlatimer/node-midi#118

Mind you these are just bits of info I've been scavenging, i'm trying to trace it through my system. Do you happen to know if the architecture could cause something like this, and the node-midi that you are using? I don't want to waste your time if it is not this software, but perhaps you will have a "ah-ha!" moment by me asking this

I will further investigate(gotta wait for it to reproduce itself) to see if I can blame it on the other MIDI client software that I am using (rtpmidid). But for now it is pointing this way. I will keep you updated.

  • MIDI Jar version:1.1.0
  • Operating System: Archlinux
  • Hardware Devices: Roland FP-30

Wrong G/Em key info in menu of Circle of Fifths

Expected Behavior

Em/G keys have one #

Current Behavior

This menu in Circle of Fifths shows 5#

5#

Steps to Reproduce

Just select menu in Circle of Fifths.

Suggested Solution (if any)

Correct the typo :)

Your Environment

  • MIDI Jar version: 1.7.0
  • Operating System: Windows 10
  • Hardware Devices: USB MIDI Keyboard

Suggestions for improving "Chord Display" GUI in MIDI-Jar

Hi Remi,

I'm loving Midi-jar. This is a very useful application. I love the fact that is has a server attached to it. It displays lots of useful information that has made me reach for it time and time again. I'm not a developer, but I am a teaching musician and I would like to offer a few suggestions to improving the Chord Display.

  1. I would love to be able to rearrange the GUI elements in the Chord display. I haven't figured out a way of doing this. I love to be able to move the Staff exactly where I want it as well as all the other elements that show up on screen.

  2. Provide an option for removing the background. So it could truly be used as an overlay in OBS. It also haven't figured out a way of doing this. I assumed the Chord Display overlay would remove the background but haven't been able to figure it out. Please provide guidance if this is possible.

  3. I see two options for keyboard skin "classic" and "flat". Is it possible to create additional skins? I'm currently using the classic. I like it, but the dimensions are not quite right for my use case. I'd be willing to create one if it's possible.

  4. This is the first application I've come across that displays "Chord degrees". I love this feature!. I'd love the option to move the "chord degrees", and "key names above the keys and display it for the keys that are actively being played not everywhere on the piano. Also give the option of turning off keyboard display for sustained notes. Sustained notes are currently displayed grayed out.

As I stated already, I love the application. I use it for my in-person students. and the interface works very for that use case. I would love to use it for my virtual students as well. I also want to thank you and everyone who contributed to making MIDI-Jar happen. It has been a useful tool for me.

Default startup mode and remembering last state

Every time after startup I have to select mode (Chord Display (internal) in my case) and pin "always on top" button. It's not convenient. Asking for ability to define startup mode or maybe "remember last state" with remembering on exit operating mode and pin state.

Ability to copy chord

Hello!

I think that it would be useful to be able copy to the clipboard the current chord (or the last one, in case that no chord is currently playing) in the "Chord Display" view if we right click it, as a shortcut.
Also, it could be extended to the "Chord Dictionary" view and to the individual notes that were forming that chord.

For example, for a D, F# and B chord, we could be able to copy or "D6" or "Bm/D" depending what chord was right clicked and "D F# B" if, for example, we right click on the keyboard or in one of the notes.
I have attached a screenshot of the "zones" that I'm referring to.
2024-03-02_19-32

Fail to build on Linux (ArchLinux)

Expected Behavior

  • MIDI Jar version:v1.0.0
  • Operating System: Linux (Archlinux)
  • Hardware Devices: n/a

i ran npm install and got this failure on linux, run as my user. interestingly, your previous project builds fine and i can use npm start with it


[email protected] postinstall
npm run licenses && ts-node .erb/scripts/check-native-dep.js && electron-builder install-app-deps && cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.ts

[email protected] licenses
ts-node ./.erb/scripts/licenses.js

• electron-builder version=23.0.3
• loaded configuration file=package.json ("build" field)
• installing production dependencies platform=linux arch=x64 appDir=/home/sreich/Downloads/midi-jar-main/release/app
⨯ /usr/bin/node process failed ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
Exit code:
1
Error output:
npm WARN config production Use --omit=dev instead.
npm ERR! code 1
npm ERR! path /home/sreich/Downloads/midi-jar-main/release/app/node_modules/midi
npm ERR! command failed
npm ERR! command sh /tmp/install-03c68391.sh
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | linux | x64
npm ERR! gyp info find Python using Python version 3.10.5 found at "/usr/bin/python3"
npm ERR! gyp http GET https://electronjs.org/headers/v16.2.1/node-v16.2.1-headers.tar.gz
npm ERR! gyp http 200 https://artifacts.electronjs.org/headers/dist/v16.2.1/node-v16.2.1-headers.tar.gz
npm ERR! gyp http GET https://electronjs.org/headers/v16.2.1/SHASUMS256.txt
npm ERR! gyp http 200 https://artifacts.electronjs.org/headers/dist/v16.2.1/SHASUMS256.txt
npm ERR! gyp info spawn /usr/bin/python3
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args '/home/sreich/Downloads/midi-jar-main/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args 'binding.gyp',
npm ERR! gyp info spawn args '-f',
npm ERR! gyp info spawn args 'make',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/home/sreich/Downloads/midi-jar-main/release/app/node_modules/midi/build/config.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/home/sreich/Downloads/midi-jar-main/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/home/sreich/.electron-gyp/16.2.1/include/node/common.gypi',
npm ERR! gyp info spawn args '-Dlibrary=shared_library',
npm ERR! gyp info spawn args '-Dvisibility=default',
npm ERR! gyp info spawn args '-Dnode_root_dir=/home/sreich/.electron-gyp/16.2.1',
npm ERR! gyp info spawn args '-Dnode_gyp_dir=/home/sreich/Downloads/midi-jar-main/node_modules/node-gyp',
npm ERR! gyp info spawn args '-Dnode_lib_file=/home/sreich/.electron-gyp/16.2.1/<(target_arch)/node.lib',
npm ERR! gyp info spawn args '-Dmodule_root_dir=/home/sreich/Downloads/midi-jar-main/release/app/node_modules/midi',
npm ERR! gyp info spawn args '-Dnode_engine=v8',
npm ERR! gyp info spawn args '--depth=.',
npm ERR! gyp info spawn args '--no-parallel',
npm ERR! gyp info spawn args '--generator-output',
npm ERR! gyp info spawn args 'build',
npm ERR! gyp info spawn args '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! gyp: name 'openssl_fips' is not defined while evaluating condition 'openssl_fips != ""' in binding.gyp while trying to load binding.gyp
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: gyp failed with exit code: 1
npm ERR! gyp ERR! stack at ChildProcess.onCpExit (/home/sreich/Downloads/midi-jar-main/node_modules/node-gyp/lib/configure.js:259:16)
npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:513:28)
npm ERR! gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Linux 5.18.12-arch1-1
npm ERR! gyp ERR! command "/usr/bin/node" "/home/sreich/Downloads/midi-jar-main/node_modules/.bin/node-gyp" "rebuild"
npm ERR! gyp ERR! cwd /home/sreich/Downloads/midi-jar-main/release/app/node_modules/midi
npm ERR! gyp ERR! node -v v18.6.0
npm ERR! gyp ERR! node-gyp -v v8.4.1
npm ERR! gyp ERR! not ok

npm ERR! A complete log of this run can be found in:
npm ERR! /home/sreich/.npm/_logs/2022-08-05T02_19_37_707Z-debug-0.log
failedTask=installAppDeps stackTrace=Error: /usr/bin/node process failed ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
Exit code:
1
Error output:
npm WARN config production Use --omit=dev instead.
npm ERR! code 1
npm ERR! path /home/sreich/Downloads/midi-jar-main/release/app/node_modules/midi
npm ERR! command failed
npm ERR! command sh /tmp/install-03c68391.sh
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | linux | x64
npm ERR! gyp info find Python using Python version 3.10.5 found at "/usr/bin/python3"
npm ERR! gyp http GET https://electronjs.org/headers/v16.2.1/node-v16.2.1-headers.tar.gz
npm ERR! gyp http 200 https://artifacts.electronjs.org/headers/dist/v16.2.1/node-v16.2.1-headers.tar.gz
npm ERR! gyp http GET https://electronjs.org/headers/v16.2.1/SHASUMS256.txt
npm ERR! gyp http 200 https://artifacts.electronjs.org/headers/dist/v16.2.1/SHASUMS256.txt
npm ERR! gyp info spawn /usr/bin/python3
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args '/home/sreich/Downloads/midi-jar-main/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args 'binding.gyp',
npm ERR! gyp info spawn args '-f',
npm ERR! gyp info spawn args 'make',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/home/sreich/Downloads/midi-jar-main/release/app/node_modules/midi/build/config.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/home/sreich/Downloads/midi-jar-main/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args '/home/sreich/.electron-gyp/16.2.1/include/node/common.gypi',
npm ERR! gyp info spawn args '-Dlibrary=shared_library',
npm ERR! gyp info spawn args '-Dvisibility=default',
npm ERR! gyp info spawn args '-Dnode_root_dir=/home/sreich/.electron-gyp/16.2.1',
npm ERR! gyp info spawn args '-Dnode_gyp_dir=/home/sreich/Downloads/midi-jar-main/node_modules/node-gyp',
npm ERR! gyp info spawn args '-Dnode_lib_file=/home/sreich/.electron-gyp/16.2.1/<(target_arch)/node.lib',
npm ERR! gyp info spawn args '-Dmodule_root_dir=/home/sreich/Downloads/midi-jar-main/release/app/node_modules/midi',
npm ERR! gyp info spawn args '-Dnode_engine=v8',
npm ERR! gyp info spawn args '--depth=.',
npm ERR! gyp info spawn args '--no-parallel',
npm ERR! gyp info spawn args '--generator-output',
npm ERR! gyp info spawn args 'build',
npm ERR! gyp info spawn args '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! gyp: name 'openssl_fips' is not defined while evaluating condition 'openssl_fips != ""' in binding.gyp while trying to load binding.gyp
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: gyp failed with exit code: 1
npm ERR! gyp ERR! stack at ChildProcess.onCpExit (/home/sreich/Downloads/midi-jar-main/node_modules/node-gyp/lib/configure.js:259:16)
npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:513:28)
npm ERR! gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Linux 5.18.12-arch1-1
npm ERR! gyp ERR! command "/usr/bin/node" "/home/sreich/Downloads/midi-jar-main/node_modules/.bin/node-gyp" "rebuild"
npm ERR! gyp ERR! cwd /home/sreich/Downloads/midi-jar-main/release/app/node_modules/midi
npm ERR! gyp ERR! node -v v18.6.0
npm ERR! gyp ERR! node-gyp -v v8.4.1
npm ERR! gyp ERR! not ok
npm ERR! A complete log of this run can be found in:
npm ERR! /home/sreich/.npm/_logs/2022-08-05T02_19_37_707Z-debug-0.log
at ChildProcess. (/home/sreich/Downloads/midi-jar-main/node_modules/builder-util/src/util.ts:250:14)
at Object.onceWrapper (node:events:628:26)
at ChildProcess.emit (node:events:513:28)
at maybeClose (node:internal/child_process:1091:16)
at Socket. (node:internal/child_process:449:11)
at Socket.emit (node:events:513:28)
at Pipe. (node:net:757:14)
npm ERR! code 1
npm ERR! path /home/sreich/Downloads/midi-jar-main
npm ERR! command failed
npm ERR! command sh /tmp/postinstall-c756e17a.sh

npm ERR! A complete log of this run can be found in:
npm ERR! /home/sreich/.npm/_logs/2022-08-05T02_19_09_993Z-debug-0.log

Add easier key selection

Switching keys is inconvenient. I only use the mouse when i'm at my piano

I was thinking..a way to improve upon this, perhaps a dropdown embedded on the chord display that shows and lets you edit the current key

But I think what would be even better is, adding the circle of 5ths on the chord display, then clicking it will switch to that key. Also be very great for teaching/showing/learning

Confusions with inversions

Expected Behavior

Simplest chords (triads, 7-th) inversions expected to be displayed as main chord (highest priority). Like midi-jar now displays Am/E chord:

ame-inversion

Current Behavior

Here is display for A/E (first) inversion

ae-inversion

Expected "A/E" display as main variant.

Here is display for C/E (second) inversion:

ce-inversion

Expected "C/E" display as main variant.

At least because both chords definitely sounds as pure major and are used in diatonic scales as A and C respectively.

Second inversion of minor chords displayed as 6 chord with omitted V but retains pure minor sound.

amc-inversion

Sometimes first inversion shows as expected but second (as far as I can see) never.

Role of inversions for 7-chord (except dominant-seventh) and more complex chords is not so clear topic (honestly it's a big mess) because of significant sound changes after inversions. But triads and dominant-7 inversions retain distinctive sound and thus their roles in diatonic scales they're used. So prioritizing of basic chords inversions have solid practical and functional background.

Steps to Reproduce

  1. Just play inversions of any major or minor triad

Suggested Solution (if any)

Globally prioritize basic triads inversions over their exotic relatives. Prioritizing of dominant-7 inversions also have a sense.

Your Environment

  • MIDI Jar version: 1.6.1
  • Operating System: Windows 10
  • Hardware Devices: USB MIDI Keyboard

Rootless voicing quiz?

Hi, great work on this! I'd love it if there was a way to support a quiz for rootless voicings common in jazz, and would be happy to try to help implement. Change would be to recognize the four expected intervals but not expect the root, during the quiz. Taking a quick look it seems like the "complexity" is used to filter chord types for the quiz, so adding a new type of quiz with a different subset of chord types might be more complicated than just adding a new list of intervals -- curious to know if you have considered this and have any advice for potential implementation.

Change might look something like this, in terms of the chord data, with the parentheses indicating that the root is implied. This seems like it would be reasonably straightforward to implement for the quiz but of course would not work for the chord recognition mode.

// '' Rootless Major 7th chords
['(1P) 3M 5P* 7M 9M', 'rootless major seventh added eleventh', 'maj7 M7 Δ7'],

// '' Rootless Minor 7th chords
['(1P) 3m 5P* 7m 9M', 'rootless major seventh added eleventh', 'maj7 M7 Δ7'],

// '' Rootless Dominant 7th chords
['(1P) 3M 5P* 7m 9M', 'rootless major seventh added eleventh', 'maj7 M7 Δ7'],

Optional hide "M" and "maj" for major when displaying triads

Displaying three-notes major chords with single letter is a common way of notation. CM, G#M, Cmaj, Gmaj etc in midi-jar looks unusual for many musicians and chord display apps (e.g. Simple Chord Detection) usually have option to remove M for three-note major chords. Can you add this option to midi-jar for short mode of notation? For long mode this option will remove "maj" in same cases, i.e. for three-notes chords.

Support flatpak

Flatpak seems to be the best and most popular Linux package mechanism, with availability on flathub and such, package managers like those on KDE and thus the steam deck, support flatpak too.

Give setting for font size of key note labels

My primary workflow with this app is having the web interface connected through my tablet. However, the main UI elements that have difficulty are the ones on the piano keys themselves. The ones above the notes that show the name and the ones inside the notes that show the degree. As well as the labels at the bottom of the keys

To me, the most important one is the note names on the top of the keyboard... All in all, these labels are really small even on my A4 sized tablet screen, like text for ants...

To be honest, they're even super small on my desktop monitor. Especially relative to the other UI elements

If you find ways to address these issues this would be huge for me, it's really the biggest complaint I run into these days. Other than that, this thing is serving me so well, I love it. It's really been helping my piano learning journey tremendously

Extend a key selector up to 7 sharps / 7 flats

Music notation may contain up to 7 flats or up to 7 sharps. Some keys have exactly the same notes as others (enharmonical keys), but anyway, it would be nice to have them separately. Right now it's up to 6 sharps and 5 flats.

Native support for PipeWire or alternatively Jack

Hello!

I just discovered your project after screen-sharing a virtual keyboard application during my online music lesson.

I already was already using OBS to bring everything together and I think that MIDI Jar overlay with an OBS Browser Source will be a much more elegant solution going forward.

The application has a built-in MIDI router. This is useful on operating systems like Windows where the MIDI routing capabilities are limited or non-existent by default.

On Linux, with PipeWire or Jack (with some tweaking), this sort of internal routing implemented by applications becomes redundant because there already is a node-based virtual patchbay where MIDI inputs/outputs can be routed to one or many outputs/inputs.

The few graphical applications that exist to manage the virtual page look very similar to the routing page of MIDI Jar.

Each application that is aware of this PipeWire/Jack would register itself as a node, with all the necessary ports.

In the case of MIDI Jar, the application would register itself as a node with three MIDI ports, one for the chord-display in the app, one for the debugger and another for the overlay chord-display.

Routing would be handled outside of the application with whatever tool the user is already using for routing their other MIDI/audio devices/programs between each other.

By disabling the internal router and relying on the audio server MIDI Jar could better integrate with the underlying system.

Is there any interest in this?

[Feature] Allow switching Key from web interface

I've really loved the web interface feature...I have the app hooked up to my computer and then i have my tablet show the chord interface while I practice in piano marvel and other spots.

This works super well and it wasn't even a feature I knew i wanted. but, i'd love to be able to switch certain settings from the server interface. Like what key it is in

Staff customization for MIDI guitar

Hi, Rémi, congratulations for your great work! Everything is working fine here, WIndows 10. I teach both keyboard and guitar (online lessons and video recordings using OBS), and your software is a great solution for displaying the notes on the staff in real-time. I use Roland-A88 keyboard controller and Roland GI-20 as guitar MIDI interface. The problem is that guitar notation uses a single staff with treble clef, and the notes sound one octave lower than written. Can this feature be implemented, so you can switch between the keyboard grand staff and guitar treble clef single staff? It would be nice if the lower ledger lines could go as low as low D, for when you have to drop the low E 6th string down to D. Also, guitar notation demands a considerable amount of upper ledger lines. Thank you very much!

MIDI Signals when triggered don't stop triggering when letting go of a key.

OS: Windows
MIDI Controller: Novation Launchkey MK3 MINI (usb)

When my controller is connected to the chord monitor/display, it picks up incoming MIDI signals whenever I press a key correctly. However, it does not stop registering the key being pressed whenever I let go of the key. There is no sustain that should be whenever the key is being pressed. Whenever this happens, I can't get the chord monitor to clear and stop perceiving the keys as being pressed down unless I exit to the settings page and then click back to the display.
The debug text file shows that MIDI Jar keeps picking up some type of "undefined" signal constantly from the keyboad (even when inactive). And whenever I pressed a C, E, and G to make a chord a couple times it will emit an "on" for its signal but never an "off".
debug.txt

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.