Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Apr 09 21:23

    brunchboy on main

    Remove no-longer needed environ… (compare)

  • Apr 07 02:45

    brunchboy on main

    Force browsers to load updated … (compare)

  • Apr 07 02:23

    github-actions[bot] on v7.0.1-SNAPSHOT

    (compare)

  • Apr 07 02:22

    brunchboy on main

    No longer throw exceptions when… (compare)

  • Apr 05 14:13
    CKunhardt closed #133
  • Apr 05 14:13
    CKunhardt commented #133
  • Apr 05 04:48
    brunchboy commented #133
  • Mar 26 19:45
    dependabot[bot] labeled #134
  • Mar 26 19:45
    dependabot[bot] opened #134
  • Mar 26 19:45

    dependabot[bot] on npm_and_yarn

    Bump minimist from 1.2.5 to 1.2… (compare)

  • Mar 26 10:27
    dependabot[bot] labeled #43
  • Mar 26 10:27
    dependabot[bot] opened #43
  • Mar 26 10:27

    dependabot[bot] on npm_and_yarn

    Bump minimist from 1.2.5 to 1.2… (compare)

  • Mar 21 00:13

    brunchboy on main

    Add thread dump instructions fo… (compare)

  • Mar 18 04:05

    brunchboy on main

    Add Zulip chat links [skip ci] (compare)

  • Mar 18 03:56

    brunchboy on v0.6.3-SNAPSHOT

    (compare)

  • Mar 18 03:55

    brunchboy on v0.7.0-SNAPSHOT

    (compare)

  • Mar 18 03:55

    brunchboy on v7.0.0-SNAPSHOT

    (compare)

  • Mar 17 23:01

    brunchboy on main

    Update chat links to the specif… (compare)

  • Mar 17 22:30

    brunchboy on main

    Update chat links to the specif… (compare)

James Elliott
@brunchboy
Anyway, that’s strange that the Enabled menu is there with no devices present. What shows up in the MIDI Output menu?
whoman321
@whoman321
The MIDI Output menu shows one of the two interfaces. I'm assuming I unplugged that one last
James Elliott
@brunchboy
If that was what was chosen when you exited, then it will still be in the menu. But it should not be showing Enabled. Let me try reproducing that here.
whoman321
@whoman321
I'm going to try creating a new blank trigger and deleting the existing ones
James Elliott
@brunchboy
Yeah, when I launch BLT with a trigger configured to use a device name that does not exist, it shows “Not found” at launch time.
whoman321
@whoman321
Okay, only one blank trigger, restarted BLT with nothing plugged in. Then plugged in the adapter, and MIDI Output list now has the adapter, but even if I select it, it says NOT FOUND
James Elliott
@brunchboy
Are there any stack traces in the log file?
whoman321
@whoman321
No, nothing
I'm going to try on a different laptop right now just for the heck of it (same Ubuntu version)
James Elliott
@brunchboy
Well, maybe I am doing something wrong in how I am trying to open the devices, but you’re the first person that has run into it. :(
I posted another experiment you could try in the issue on GitHub.
whoman321
@whoman321
okay cool will try it now
James Elliott
@brunchboy
Gah, I wonder how those extra ( ended up in the expressions.
whoman321
@whoman321
Okay, so the Midi Output Selector dialog opens, but it's empty. When I run it with the simple jar file you made earlier, the dialog does show the adapter
James Elliott
@brunchboy
Interesting and troubling. Somehow midi-clj in the context of the BLT jar can’t see your MIDI interfaces.
whoman321
@whoman321
Yeah, that's so strange that they do appear in the MIDI Output list though
unless you're pulling those in from somewhere else
James Elliott
@brunchboy
Let me look. I think I ask midi-clj for all the output devices it knows about.
(And then I add back the selected output if it was missing, so the trigger will continue to work when you run BLT with that device connected.)
Yes, I use the midi-sinks method in midi-clj to get all available MIDI outputs. I would think that is the same thing its GUI uses, but I will take a look there too.
James Elliott
@brunchboy
Yes, that uses midi-sinks as well. Very, very strange. Something inexplicable is going on with midi-clj in the two environments. Although why it works for building up BLT’s list and not the midi-clj GUI list, I am at a loss.
whoman321
@whoman321
could there be a difference in the clj libraries between BLT and the midi-test jars?
James Elliott
@brunchboy
There are lots, lots more Java libraries in the BLT jar, but I thik we chose the same version of midi-clj for both.
The midi-clj readme even says “In Ubuntu Linux I use the snd-virmidi kernel module to provide software midi ports. USB midi devices should be pretty much plug and play.” so this ought to work!
whoman321
@whoman321
could there be a library in BLT that could be interfering in midi-clj's operation?
James Elliott
@brunchboy
That’s a question that I would not know how to answer.
Computers and software have grown so complex that it is amazing when anything works.
whoman321
@whoman321
yeah it's a massive amount of libraries.
James Elliott
@brunchboy
However, this doesn’t seem to happen under macOS or Windows, and I don’t have an Ubuntu machine or hardware MIDI adapter to experiment with myself.
If Raspbian and a USB MIDI keyboard is close enough I could try some stuff there, but this is very frustrating.
whoman321
@whoman321
does the Midi keyboard have MIDI IN? can it work as a receiver? or is it just MIDI out to trigger something else?
James Elliott
@brunchboy
The USB is bi-directional, so I can light up buttons by sending MIDI from BLT.
whoman321
@whoman321
Raspbian would definitely be close enough for sure... just might take a long time to launch. I get the same results in Debian stretch, which is pretty much what raspbian is built on top of
Okay yeah that should be enough to test it with
Bro, I just wanna say that I am wholly grateful for all your help. I really appreciate you taking the time to help dig into all of this
James Elliott
@brunchboy
(I also have an Ableton Push and Push 2, and developed some really cool pressure-sensitive UIs for running light shows on them, and drive the mini RGB monitor at the top of the Push 2 using another Java library of mine, so I could enlist those for more testing.)
whoman321
@whoman321
awesome!
James Elliott
@brunchboy
I’m just annoyed this snag is preventing you from accomplishing what you want! I appreciate all the careful testing and reports you have been giving me.
I will try some experiments with Raspbian and get back to you. I probably don’t have time tonight because I need to finish laundry and then tackle today’s Advent of Code challenge. But hopefully tomorrow.
whoman321
@whoman321
Sounds good. Have a rad night my man!
James Elliott
@brunchboy
Thanks, you too! Maybe sleeping on this will give me some other ideas too. I suspect it has to do with the way that BLT opens MIDI devices as soon as it knows about them, and keeps them open, to be able to share them between triggers. I will have to re-learn how that all works, and then see if there is a way to not do that in Linux if it doesn’t work there. But the first step will be seeing if I can reproduce the problem with hardware I have here.
whoman321
@whoman321
Hey bud! Hope all is well. Have you had a chance to test it out on the Raspberry Pi? No rush at all.. I'm sure you've got plenty on your plate already. Just checking in.
James Elliott
@brunchboy
You’ll be the first to know when I do, @whoman321! Unfortunately, last week was too busy, between work and the competetiveness my coworkers encourage in solving Advent of Code problems. I hope to have time to take out and set up the Pi this weekend, though, probably Sunday afternoon.
James Elliott
@brunchboy
Well, @whoman321, I finally had time to hook everything up, and I can confirm that Raspbian has the same probelmatic behavior as you have reported. I will try to dig a little bit deeper, but right now I am being stymied as I can’t seem to establish an nREPL connection from my development machine to the Beat Link Trigger process running on the Pi, which will make experimentation far more tedious. I’ll start installing some development tools on the Pi.
But what seems to be the case is that MIDI interface management works fundamentally different in Linux JVMs that macOS and Windows JVMs. So if you can help try to find a way around this, that will definitely speed things up. However, we would have to be very careful not to change the way it currently works on macOS and Windows, because I have many people using it for touring shows, festivals, and clubs today, and can’t risk breaking them. So for now the answer is going to be telling people not to try to use the built-in trigger MIDI features on Linux, and perhaps deprecating that OS family entirely.
James Elliott
@brunchboy
Well, I have Leiningen and the BLT source installed on the Pi, and am trying to bring it up in a REPL for more testing. I have some ideas about things to try. But Leiningen has been timing out because the Pi is not nearly as fast as my development machine (go figure! :wink:). I think I just figured out how to work around that.
James Elliott
@brunchboy
Ok, it has been very frustrating and slow getting anything testable, but I have already learned something very interesting and promising. The problem may be a lot easier to work around than I feared, because it seems to be simply that in Linux, midi-clj can’t find a device you are asking for when you supply the name that it gave for that device!
James Elliott
@brunchboy
Woo hoo, I think I have an answer @whoman321! It turns out all this time I’ve been calling the midi-clj functions wrong, because they behave in a way that is not idiomatic Clojure (they are pretty old, they were written when Clojure was new and best practices weren’t widely known). They treat input strings as if they were regular expressions, and so the brackets in Linux device names are making them not match. The more idiomatic (and developer-friendly) way for the functions to work would be to accept both plain strings and regular expressions as the target being searched for (regular expressions have nice, concise literal syntax in Clojure so they are easy to type), and then it could work either way. I may open a PR with midi-clj about this, although the only backwards-compatible way to do it would be to offer a new function that works this way and deprecates the old one. (While I’m at it, I might suggest they get rid of the midi- prefix on all their function names, that is also not idiomatic, the best practice is just to name the functions for what they do, and let people use namespace aliases to make it clear where they come from.) But that is a project for another day; for now I just need to fix the places that Beat Link Trigger is calling these functions to properly escape any regular expression special characters, and we should be able to get MIDI output selection working in Linux!
James Elliott
@brunchboy
I have verified that my proposed fix works on Raspbian, and have pushed it to GitHub. When you get a chance, could you download the latest preview jar at https://github.com/Deep-Symmetry/beat-link-trigger/releases/tag/v0.6.3-SNAPSHOT and see if it works for you too?
If this works, it’s definitely time to publish a new official release of BLT. I should have a while ago, there is some good stuff in 0.6.3.