grufkork / touchosc-dj

Scripts and layouts for using TouchOSC as a DJ controller for Mixxx
GNU General Public License v3.0
11 stars 3 forks source link

making output mappings so TouchOSC reflects the Mixxx state if using other controllers #1

Open digitalsignalperson opened 1 year ago

digitalsignalperson commented 1 year ago

Hey thanks for sharing this controller.

I started hacking on a way to get feedback from Mixxx back into TouchOSC, so far only implementing volume faders for deck 1 and 2: https://gist.github.com/digitalsignalperson/3703ea6d60f719d415399857d5527a9f

I wouldn't be surprised if there is a wayyyy simpler way to do this with the javascript api for controller scripts, but I haven't dug into that yet.

Have you messed around with output mappings at all? Let me know if you have any thoughts or interest in hacking on this some more!

edit: ah, for sure "Slowly return to original tempo" would be a perfect one to add the feedback for. Tempo is the next one I'm thinking to look at

grufkork commented 1 year ago

Sorry, been offline a couple of weeks. I have not at all looked at sending messages back to TouchOSC... I think some re-architecting might be in place before going deeper into this, as control changes currently are sent in several ways, with intelligence put in many different places. Creating some kind of unified way to communicate back and forth would be ideal. Being able to use OSC instead of MIDI would make a lot of things a lot easier, in particular the jog wheels which could use more precision... I can't remember much of the scripting API works and whether you could send stuff both back and forth.

I've actually gotten myself a proper DJ controller so I've moved on to Rekordbox. I do however miss having just the controls I want right at my fingertips, so I might actually look at having a combined controller/iPad setup with Mixxx. For a rewrite, I think I'd make a proxy program running on the computer which talks with TouchOSC via OSC. That way all the intelligence can be moved from the iPad, while also making it easier to create custom layouts where the TouchOSC layout can use OSC addresses instead of messing about with specific MIDI notes and editing the XML files, which was a major pain point when I wrote this. OSC I think is read/write too so you can both get and set the controls on the iPad through the same channel. I won't have much time to work on this in the coming months though, but please do share any discoveries you make! And check the scripting docs, JS is probably the easiest way to interface with Mixxx. Though there's definitely a lot of things in there that are easy once you know it, but rather cryptic before a lot of trial and error.

digitalsignalperson commented 1 year ago

hey np, thanks for replying. For OSC vs midi, too bad on the mixxx side as far as I can tell there's no OSC (except this https://github.com/mixxxdj/mixxx/wiki/Osc-Client which is limited).

On one of my previous points, I did notice that in the mixxx midi scripting docs it seems like you get access to all the values/parameters, which makes my approach overkill as expected.

I had looked a little into jogwheels by looking up some of the controllers that have built in scripts and documentation in mixxx, and found the Denon MC7000, which has jogwheels with LED indicators around them to indicate position, and these are functional with sending/receiving messages from Mixxx. So that could be a good reference for making a more advanced jog wheel, maybe even showing the spinning time transport indicator you know?

It would be cool to implement softstart/brake/spinback stuff too, which mixxx seems to have in the scripting api. Maybe even loop in/out point changes with the jogs like you have on cdjs. It could also be a project to just try replacing e.g. the Denon MC7000 hardware with a TouchOSC bootleg of it.

The controller I picked up recently is a Xone K2, and I'm imagining using that for some tactile knobs & faders, and supplementing jog wheels and other stuff on a tablet with TouchOSC.