Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 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
  • Jun 24 04:22

    brunchboy on main

    Fix broken external API doc lin… (compare)

  • Jun 24 04:18

    brunchboy on main

    Fix broken external link in use… Remove newly login-protected ex… (compare)

  • Jun 24 04:18

    brunchboy on guide-0.6.3

    Remove newly login-protected ex… Fix broken external link in use… Fix broken external API doc lin… (compare)

  • Jun 24 04:18

    brunchboy on guide-0.6.2

    Fix broken external API doc lin… Fix broken external link in use… (compare)

RJBooty
@RJBooty
Hi, sorry if this has been asked before but I can't see any results for it.
When using Traktor/DVS and CDJs, the tempo information (tempo slider) is detected by BLT but Ableton/Link doesn't recognise any changes. If I use a CDJ normally (no DVS) everything is as expected. Is there something i've missed? Any pointers much appreciatef
James Elliott
@brunchboy
Hello, @RJBooty! This is the first I have heard anyone asking about this, but unfortunately I don’t really understand what you are trying to accomplish. Beat Link Trigger works with DJ Link Pro, and nearly all features of that protocol require you to be playing a track on the CDJ that has been analyzed in rekordbox to identify where the beats are, and so on. If you are using DVS, none of that is true right? So I would not expect anything to work.
However, Traktor itself can use Ableton Link these days, and so I would recommend you just use that directly, and ignore Beat Link Trigger. The fact that you happen to be using CDJs to control Traktor is irrelevant in this case, you’re not using the rekordbox ecosystem, so BLT is not helpful.
RJBooty
@RJBooty
Hi @brunchboy , thanks for the reply!
It totally makes sense that BLT requires the CDJ to play a track, I guess in this case the 'track' is actually a timecode signal/file.
Though Traktor can indeed use Ableton Link, it isn't possible (as far as I can work out) to make traktor the Master tempo for Link. Which means you can't use tempo faders on CDJs/Turntables running Traktor DVS, as they are locked to the Ableton Link tempo.
I was hoping that there might be a workaround with BLT, as currently (if I use a CDJ in normal mode/not DVS Traktor) BLT acts as the master tempo and Live is the slave.
James Elliott
@brunchboy
Yes, if you are playing a rekordbox-analyzed track, you can use BLT to control an Ableton Link session tempo, or you can allow Ableton Link to be master and control the tempo of the CDJs. That was quite a breakthrough in coding! But when you are just using DVS, I am not going to be able to do anything for you. I think that it is possible to have Traktor be the Ableton Link tempo master, but you will want to ask that on a Traktor forum for details. I have not been using it much since I moved to the rekordbox world.
RJBooty
@RJBooty
I understand that a track has to have been analyzed in Rekordbox and that that's how BLT works, but as mentioned, didn't know if there were any other 'workarounds' for my approach.
If it's any help/insight, I am actually only really using 2 turntables with Traktor DVS, the CDJ doesn't need to be DVS, the issue is having Traktor as the master
James Elliott
@brunchboy
I think that is possible, but I am not the right person to ask for details I’m afraid.
RJBooty
@RJBooty
No worries at all, I appreciate it's not really that BLT related, but thought it worth asking!
Thanks for the replies, and of course for BLT! (Using it in a separate project, as it was meant for, and it's fantastic!)
James Elliott
@brunchboy
Understood! I hope you can get things working the way you want. I may poke around a bit when I have a chance, but don’t wait around for me to. :smile:
And thank you for the kind words, I always love hearing from people who are using these projects.
RJBooty
@RJBooty
Please let me know if you do get the chance!
Weirdly, have just come across this...(I have next to no understanding of code/programming, but maybe you can make more sense of it!)
https://andyland.info/wordpress/?p=6310
James Elliott
@brunchboy
Oh, sad news, that article says I am wrong, and for some reason Native Instruments have chosen not to allow Traktor decks to update the tempo of the Ableton Link session. So that’s something you’ll need to take up with them. But I’m afraid they are having such problems with profitability and layoffs, that it’s not likely to be a development priority for them any time soon. :worried:
Maybe someday that author will figure out how to release a portable version of their program that runs on any Mac, and ideally code-sign and notarize it so it runs without complaint (but that requires paying for an Apple developer program annual membership, so they may not. I do, in order to allow Beat Link Trigger to run without complications, but it’s a bit eccentric that I spend $105/year on that.)
James Elliott
@brunchboy
If you have a Mac and you’re willing to trust an unsigned, non-notarized Mac binary (I wouldn’t recommend that personally) you could try following his instructions on how to reset the quarantine bit to run it. But going from MIDI clock to Ableton Link is a bit icky in the first place, Link is so much better than MIDI clock. Are there any other DVS programs you could use that have better Ableton Link support? I wonder if Mixxx does these days?
James Elliott
@brunchboy
Ironically, before I got sucked into figuring out how to integrate with the rekordbox beat grid, I built a way for my lighting software to tie into the Traktor beat/bar grid: https://afterglow-guide.deepsymmetry.org/afterglow/mapping_sync.html#syncing-to-traktor-beat-phase
RJBooty
@RJBooty

Standard NI being a pain!
Yeah not sure i'd use that Binary, I have other ways of sending MIDI clock and it's just nowhere near as good, as you say, as link.
It's only really traktor I use as I bought it many moons ago. I'll have a dive into some other DVS.
Might be a silly question, but would Rekordbox DJ/DVS work with BLT? The Rekordbox information won't be coming from a CDJ, but from the Rekordbox App on the Mac (I guess what i'm asking is if it's routable, somehow)

Afterglow looks interesting and a potential solution so I'll dig into it, and as it's to do with lighting might be super helpful for what we're doing.

If it's of any interest to you/others, this whole project is to gain (pretty much just) timing information from the CJDs/Turntables from Traktor/DVS system, send out (synced) CV information from Live and (synced) video from Resolume, to modular video eurorack system, final output to a projector and a TV wall. Currently, using BLT as it was meant to be used is perfect (albeit only using it for bpm information at the moment) so big thanks! Hopefully further down the line we'll look at using more of the triggers/BLT system to create something almost entirely automated

James Elliott
@brunchboy
Unfortunately when rekordbox is operating in performance mode it does not participate in a DJ Link network so it won’t communicate with BLT. It’s only CDJs and XDJs (stand-alone and now XZ) that provide the packets we need to work with.
Afterglow is probably too experimental to be worth investing a lot of time into unless you are keen on building a really unique algorithmic light show using Artnet and DMX. :smile:
RJBooty
@RJBooty
I don't suppose there's any discussion of further developing BLT to work with Rekordbox in performance mode?
(if one can even call it further development, pretty much an entirely different feature! haha)
James Elliott
@brunchboy
Sorry, you misunderstood. That’s simply not technically possible. Rekordbox is the limitation: it does not participate in a network in that mode.
So you need to lobby Pioneer to change rekordbox. But they seem to basically have it split into two different words that don’t speak to each other, and they have had no interest in supporting outside compatibility. We had to figure everything out on our own.
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,