Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Nov 02 02:10
    daffron commented #111
  • Oct 28 09:02
    nudge commented #29
  • Oct 27 04:19
    brunchboy closed #112
  • Oct 27 04:19
    brunchboy commented #112
  • Oct 26 05:33
    brunchboy commented #112
  • Oct 26 05:32
    brunchboy commented #111
  • Oct 26 05:25

    brunchboy on master

    Try eliminating set-env in Wind… (compare)

  • Oct 26 05:15
    brunchboy labeled #112
  • Oct 26 05:15
    brunchboy opened #112
  • Oct 26 05:09

    brunchboy on master

    Start avoiding deprecated GitHu… (compare)

  • Oct 26 04:54

    brunchboy on guide-0.6.2

    Fix grandMA2 link. [skip ci] (compare)

  • Oct 26 04:50

    brunchboy on master

    Fix grandMA2 link. (compare)

  • Oct 26 04:50

    brunchboy on guide-0.5.3

    Fix grandMA2 link. [skip ci] (compare)

  • Oct 26 04:49

    brunchboy on guide-0.5.4

    Fix grandMA2 link. [skip ci] (compare)

  • Oct 26 04:49

    brunchboy on guide-0.6.0

    Fix grandMA2 link. [skip ci] (compare)

  • Oct 26 04:47

    brunchboy on guide-0.6.1

    Fix grandMA2 link. [skip ci] (compare)

  • Oct 26 04:17

    brunchboy on master

    Update dependencies. Also pull… (compare)

  • Oct 26 04:14

    brunchboy on master

    Only report unrecognized packet… (compare)

  • Oct 26 03:35

    brunchboy on master

    Use real sharps and flats. Tweak some formatting. (compare)

  • Oct 26 03:35
    brunchboy commented on d1bf155
supersport05
@supersport05

I have never been successful in ONLY showing the master track and not showing the non-master tracks information. that's as close as I can get so far. I also attempted to use something like this:

{% if players{{number}}.is-temp-master == true %}

But it flat out ignores this...just shows everything still

James Elliott
@brunchboy
Thanks for sharing your attempt! I’d be happy to try helping sort it out. First a little important background to help you understand what is going on and how to think about the code, and then I will see if I can get it running with my XDJ using your desired layout and result.
There are multiple stages going on, and you need to think about them separately. The first stage is when the browser (or OBS plugin) makes the request for the page to the server embedded in BLT. At that point the template is rendered, and the Selmer expressions are evaluated. So if we could figure out the right way to get your {% if … %} Selmer expresson written, it could control which player information got written to the page.
But the problem is, that happens only one time! So once the page is delivered to the browser (or OBS plugin), it’s done. If later a different player becomes the tempo master, that doesn’t matter. The page is rendered, the browser has it, these templates don’t matter any more. They didn’t get sent to the browser, they only executed inside BLT, and the results got sent to the browser, and the results don’t change over time. You would need to reload the page to get different results.
That is why in my example, after setting up the page, I have a bunch of JavaScript code to update the information on the page when it changes. That code is sent to the browser, and runs in the browser (or OBS plugin), and it makes requests back to BLT for new information many times per second, and updates the page appropriately.
James Elliott
@brunchboy
So trying to determine which player is the master, and render only that player, using Selmer template code is not going to work for you even if you figure out the syntax. It’s just not an approach that can work for something that is going to change over time, unless you configure the whole page to be refreshed periodically (so the browser/plugin will reload the whole thing), and as I mentioned earlier, that leads to too much flicker.
Also, the syntax you had is wrong. I think the right syntax might be {% if players.number.is-tempo-master %} but it’s not worth nailing down because we don’t want to do it that way.
James Elliott
@brunchboy
If what you want to do is render information about whichever player happens to be tempo master, you don’t need to use the players variable at all! I created a master variable for that purpose, see Table 1 in the Variables section of the User Guide: https://blt-guide.deepsymmetry.org/beat-link-trigger/obsoverlay#variables
So no loop, no worry about it getting out of date when the master player changes, just render a single set of information using master.track.title for example. And wait, I just noticed that you already figured that out @supersport05 so you just need to eliminate the number loop entirely.
I’ll take a crack at that here, and then make sure to properly integrate it into my JavaScript code that will update it after the page has already rendered.
James Elliott
@brunchboy
Ah, here’s one subtlety; since we don’t have a loop, we don’t have the loop counter number available any more for requesting the album art. But that is not a problem, because the master variable has as number property which reports the channel number of the current master player, so we can ask for its art using the URL "artwork/{{master.number}}".
Ok, yes, there are some changes and simplifications that need to be made to the JavaScript code, working on those now.
James Elliott
@brunchboy
I’m getting rid of all the code related to formatting playback timecode, and for parameterizing page elements by channel number, since you are only showing simple track information for a single player.
James Elliott
@brunchboy
Ok, @supersport05 this seems to be working: https://gist.github.com/brunchboy/223f99e39d832e0ca94c09eab3b04134
Does that Titillium Web font work for you? Is it one that’s installed on your computer? I would expect you’d need to add a URL for the browser and plugin to know where to download it from otherwise.
(And remember on that GitHub Gist page, when you are done reading my simplified version of the OBS Overlay template, hit the Raw button if you want to save it using your web browser. Or, the Gist interface has a Download ZIP button above that which you can use as well.)
James Elliott
@brunchboy
I spoke a wee bit too soon. This is mostly working, but the code to reload the artwork is not, that is getting stuck showing the artwork of whatever player was the master when the page first loaded.
The way I originally wrote it assumed it was going to be tied to a single player. Looking into writing a different version now.
I’ll have to do something like I did in the updateState function, to fetch the current JSON information from BLT so we can find the current tempo master, and load the appropriate image there. Working on it…
James Elliott
@brunchboy
Ok, I have updated the gist linked above. The current (second) revision gets the artwork right as well. Please let me know if it works for you!
I tried downloading the ZIP using the Gist button for that and pointing BLT at the resulting folder as its OBS Overlay template folder, and it’s working for me.
And @PimW_gitlab thanks for sharing the logs, you are right there don’t seem to be any significant differences between them that give me any hints as to what might be going wrong. I am also baffled because there are precious few differences between the 0.1.0 release and the 0.1.1 snapshot. But one thing I did notice is that you are not running the 0.1.0 release, you are still running an old 0.1.0 snapshot, is there a reason for that?
I still hope to find some back burner time to see if I can reproduce this problem here, which is the only hope for me being able to dig into it.
James Elliott
@brunchboy
(And finally, before I head to bed tonight, if you want to send more code for me to look at in the future @supersport05 — or anyone, really — the best way to do that is using a GitHub Gist like I did above. It’s easier to read and download there, doesn’t clutter the channel, and can track revisions; if you look at the Revisions tab on the one I linked above, you can see the changes I made between the two versions to get the artwork updating properly as a nice color-coded context diff thanks to GitHub.)
densma1
@densma1
@brunchboy
i'm interested in this overlay. how do you use this overlay.html with BLT? how is it able to connect to overlay server?
supersport05
@supersport05
@brunchboy Works like a charm! thanks so much for the help. . I knew I was close...but also knew I needed help. Thank you for the help....and all the work before I ever got here :D
James Elliott
@brunchboy
Yes, you were very much on the right track @supersport05, there are just so many layers to worry about and integrate properly. Thanks for letting me know! I think I will start a Wiki page with alternate overlay examples, may I include yours?
And @densma1 the OBS overlay server is embedded inside current preview/snapshot builds of Beat Link Trigger, it has not yet been part of any frozen release. You can read about it in the development branch of the user guide: https://blt-guide.deepsymmetry.org/beat-link-trigger/obsoverlay
James Elliott
@brunchboy
And looking over that today, I see I need to revise it to emphasize the JSON/JavaScript approach, because since I first wrote it we have learned that trying to refresh the whole page results in too much flicker in the OBS browser plugin, so the only way to get good looking results is to use JavaScript and the JSON URL to update the overlay, like my current template does.
densma1
@densma1
@brunchboy yes i have been running that version. not sure how to replace default template with this overlay. I will look at the guide if its has directions
James Elliott
@brunchboy
It does, and there were discussions a bit back on this channel.
Please always look at the guide, I spend many hours carefully writing it. :smile:
densma1
@densma1
sounds good
supersport05
@supersport05

Yes, you were very much on the right track @supersport05, there are just so many layers to worry about and integrate properly. Thanks for letting me know! I think I will start a Wiki page with alternate overlay examples, may I include yours?

@brunchboy Sure if you like, feel free. I reckon it'll likely be a rather commonly requested layout tbh thanks again :D

densma1
@densma1
got it working . thx
James Elliott
@brunchboy
Yay!
That’s great! :tada:
James Elliott
@brunchboy
All right, I have tweaked the user guide to give more emphasis to the JSON/JavaScript approach to updating the OBS overlay content, since that is what turns out to look best.
I also added a wiki page to collect other templates, starting with the one we came up with today.
David Ng
@nudge
Good news everyone! I've started reverse engineering the link cue and link preview protocols between CDJ-3000 and supported mixers. Audio seems to be sent over UDP 50004 in uncompressed format: signed 16-bit PCM, little endian, 48000Hz, stereo
James Elliott
@brunchboy
That’s awesome, @nudge! I have no idea if or when I will be able to get my hands on any 3000s. Can you capture all the details and update the protocol analysis document to reflect them?
James Elliott
@brunchboy
Sorry it took a while to respond, I was taking a break from my computers.
David Ng
@nudge
will do, i'll create some PRs when its a bit more complete. There's a bit of device handoff and timing/synchronization details it iron out. Will do some prototyping and see where it ends up!
James Elliott
@brunchboy
Excellent, thank you so much!
David Ng
@nudge
@brunchboy got a couple more PRs for u: Deep-Symmetry/beat-link#44 and Deep-Symmetry/dysentery#29 cheers!
James Elliott
@brunchboy
Yes, GitHub notified me about those. I didn’t have time to incorporate them this weekend, though, because I wanted to take advantage of the unexpectedly nice weather before I get stuck in my house for a long, lonely, CoViD-hammered winter.
Thank you! I look forward to reviewing them when I have time. :smile:
David Ng
@nudge
👌 enjoy the nice weather while it lasts!
Evan Purkhiser
@EvanPurkhiser
@brunchboy have you seen a menu item of type 0x002A?
also sidenote: sorry for anyone coming in here asking about my software :pray: haha, I saw you @ me above from someone asking about it. I'm not nearly as active as you :)