Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Nov 13 04:57

    brunchboy on main

    Update OrangePi SMPTE project l… (compare)

  • Nov 13 04:57

    brunchboy on guide-0.6.2

    Update OrangePi SMPTE project l… (compare)

  • Nov 13 04:57

    brunchboy on guide-0.6.3

    Update OrangePi SMPTE project l… (compare)

  • Nov 13 04:38

    brunchboy on main

    Update dependencies. Reduce MIDI clock sensitivity, … (compare)

  • Sep 30 16:13
    Hallucyn8 opened #53
  • Sep 04 21:08
    moemoeq commented #37
  • Sep 04 21:08
    moemoeq commented #37
  • Aug 25 12:38
    brunchboy edited #52
  • Aug 20 19:03
    brunchboy opened #130
  • Aug 20 19:03
    brunchboy labeled #130
  • Jun 24 20:40

    brunchboy on main

    Update Antora components. (compare)

  • Jun 24 20:31

    dependabot[bot] on npm_and_yarn

    (compare)

  • Jun 24 20:31

    brunchboy on main

    Bump handlebars from 4.7.6 to 4… Merge pull request #127 from De… (compare)

  • Jun 24 20:31
    brunchboy closed #127
  • Jun 24 20:30

    dependabot[bot] on npm_and_yarn

    (compare)

  • Jun 24 20:30

    brunchboy on main

    Bump lodash from 4.17.19 to 4.1… Merge pull request #128 from De… (compare)

  • Jun 24 20:30
    brunchboy closed #128
  • Jun 24 20:30

    dependabot[bot] on npm_and_yarn

    (compare)

  • Jun 24 20:29

    brunchboy on main

    Bump normalize-url from 4.5.0 t… Merge pull request #129 from De… (compare)

  • Jun 24 20:29
    brunchboy closed #129
James Elliott
@brunchboy
(They also seem to be afraid of cannibalizing sales of their expensive “club-level” gear if they were to allow too many features to work with their entry-level offerings.)
RJBooty
@RJBooty
Ah my mistake. Thank you for clarifying
James Elliott
@brunchboy
No worries, I’m just sorry I didn’t have better news to share.
Maddix
@nmaddix
Hi @brunchboy, hope all is well. Quick question here... is the only way to generate OSC messages through clojure expressions? Is there a comprehensive guide on this somewhere? I'm finding the search feature to not be too helpful finding examples in the docs. They're sprinkled in there but searching for osc doesn't really find them, and searching for osc-send doesn't work due to the way it searches
Kevinnns
@Kevinnns

@nmaddix Don't know if this helps... but what I've done to communicate with Lightjams! is the following:

In Lightjams!:
Enabled OSC
Set the port and network adapter

Created a mapping /magic/0 this is mapped to "channel 0" in lightjams

Also I've mapped OSC channel 0 to a function inside Lightjams to do a step in a chase (turning lights on/off)

In BLT:
Main Screen:
Triggers -> Global Setup Expression:
(swap! globals assoc :lightjams (osc/osc-client "x.x.x.x" port))

Triggers -> Global Shutdown Expression:
(osc/osc-close (:lightjams @globals))

To send a command per beat to Lightjam, in BLT:
Triggers -> New Trigger

On that new trigger:
Edit Beat Expression:
(when (#{1 3} beat-within-bar)
(osc/osc-send (:lightjams @globals) "/magic/0" 1)
(Thread/sleep 40)
(osc/osc-send (:lightjams @globals) "/magic/0" 0))

Note: With lightjams it's a bit easier, as I don't have to dive into the documentation of a vendor to figure out how OSC needs to be called to execute what function. That's what got us with a "hardware" DMX table like the Hog4.
Note 2: Yes, there is a sleep in there, otherwise the OSC commands follow too quickly and Lightjams doesn't register the 1, so it'll do nothing. It depends on the destination if suchs things are needed
Note 3: The code could be way more clean, but it's what I could do :')

Maddix
@nmaddix
Awesome thank you. Yes I think this covers it, and it matches what I thought I understood about it already
Kevinnns
@Kevinnns
I do think the documentation from vendors is pretty lacking in how to properly call their devices leveraging OSC. Gave me quite some frustration here and there
James Elliott
@brunchboy
Thanks for jumping in while I slept, @Kevinnns! The only thing I would add is I strongly recommend wrapping your sleep and the send which follows inside a (future …) because otherwise they tie up the thread that is processing expressions, and can delay other things that need to happen, as I discuss in this section: https://blt-guide.deepsymmetry.org/beat-link-trigger/0.6.2/expressions#with-great-power-comes-great-responsibility
The search is limited, but it’s a lot better than nothing. If anyone knows of something other than Lunr that can be embedded inside an Antora documentation site to offer offline search, I will happily investigate it. It may also be time to index only the latest release.
James Elliott
@brunchboy
And more broadly, the OSC library I embedded is documented here: https://github.com/rosejn/osc-clj
If you don’t want to use Clojure, you can use any JVM language you like, compile your own library into a Jar file, load it as a local library as described in https://blt-guide.deepsymmetry.org/beat-link-trigger/0.6.2/importinglibraries#local-libraries and call that in your expressions.
Kevinnns
@Kevinnns
@brunchboy good one, thanks! I knew it was a dirty solution ;).
James Elliott
@brunchboy
A dirty solution that works is a triumph though! :grinning:
Kevinnns
@Kevinnns

I was thinking @brunchboy could you in a few simple examples try and explain how I would be able to activate/de-active different Beat Expressions based on triggers from the show interface?

I'm trying to wrap my head around how I'm going to created/trigger "normal chases" and also deactivate them when done with a certain part of a track.
Second thing I'm trying to think of if it would sense to define some global OSC commands in a :Thing making it able to switch to a different chase/color. Since it seems Lightjams works with OSC value's and remember those values when you don't send a 0 to disable them.

I'm even thinking (but correct me when I'm wrong) it would be even better to define global Expressions/Triggers or something that I call from the show interface. For example:
Where would I define OSCColorRed, OSCColorBlue and then define what OSC commands should be send to do that in there. In that case my current believe is that I can just do a search/replace in 1 place for those OSC commands if I were to switch between Lightjams and the Hog, or anything else.

Or is my head making a wrong turn here?
I don't know if I'm explaining myself correct here, seeing my head goes derp about this, it's hard to explain what I'm trying to think :P
James Elliott
@brunchboy
That sounds like a promising line of thought. Full details will have to wait until I am at a real computer, but it sounds like you want to create a library of shared functions (I think that’s what I called them when I added them a release or two ago), and call those from your show triggers.
Kevinnns
@Kevinnns
I think that sums it up in proper wording yes, thank you for that :')
James Elliott
@brunchboy
If you can show me the code you use for lightjams vs. the hog, we might be able to parameterize things so you only need to change a setting in one place.
Kevinnns
@Kevinnns
Oh, the OSC commands or completely different, but I'm inclined to try and go the same route, seeing Lightjams is very flexible in that regard
James Elliott
@brunchboy
Otherwise it’s possible to write two versions of each function and automatically call the proper version based on a setting, using for example a naming pattern.
Kevinnns
@Kevinnns
Yeah, but... I'll read the manual first to see about possibilities of leveraging shared functions and all that. Instead of being lazy
James Elliott
@brunchboy
If you want to do something on each beat of a show cue, the cue beat expression is the place to do it. And once you have your thoughts organized to present specific code you want run in the two scenarios, it’s totally time to have me help you write the framework.
Kevinnns
@Kevinnns
Will do, thanks man!
James Elliott
@brunchboy
whoman321
@whoman321
bunchboy,
Hi Bunchboy. I'm here. Actually, every time I test BLT, I restart it before every new attempt
James Elliott
@brunchboy
That’s a bit of a drag! It takes a while to launch. I sometimes have it up for days on end.
whoman321
@whoman321
So yes, the adapters are plugged in when I launch the application every time. So, this is strange, I unplugged all adapters, restarted BLT, and it shows the Enabled options just fine, even though there's nothing connected
Not here... It takes about 3 seconds to fully launch. I have a gaming laptop so it's a bit hefty
James Elliott
@brunchboy
Ah, true, it’s a lot faster from the Jar. When I launch it in development mode it has to publish the entire User Guide using Antora before it can even start Clojure.
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.)