Jump to content
Get 30% off Cakewalk Sonar and Next thru October 14. Claim Offer ×
  • 0

External Command to Set Timeline Position


Matthew Carr

Question

An Unusual request perhaps - does anyone know of a way to send a command from an external device to CBB to move the timeline to a particular position? 

Similar to a Song Position Pointer MIDI message I guess, but I'm not having any luck in getting CBB to respond to those..

TIA

 

Link to comment
Share on other sites

Recommended Posts

  • 0
10 hours ago, Matthew Carr said:

An Unusual request perhaps - does anyone know of a way to send a command from an external device to CBB to move the timeline to a particular position? 

Similar to a Song Position Pointer MIDI message I guess, but I'm not having any luck in getting CBB to respond to those..

TIA

 

By moving "the timeline to a particular position" are you meaning the move the NOW cursor?

If so, then my “thinking outside the square” solution would be to write a CAL script to do that.  Then use MIDI note keybinding to run that CAL. 

Mind you, the issue with CAL scripts is that sometimes, Cakewalk is not in a state to run CAL scripts at times.  If the menu item Process | run CAL entry is greyed out, then CAL scripts will not run - even from key bindings.

It would also depend on how you would program your “external device” to send the right MIDI events.

Link to comment
Share on other sites

  • 0
11 hours ago, Promidi said:

By moving "the timeline to a particular position" are you meaning the move the NOW cursor?

Yes, sorry for not being clearer!

 

11 hours ago, Promidi said:

If so, then my “thinking outside the square” solution would be to write a CAL script to do that.  Then use MIDI note keybinding to run that CAL. 

Mind you, the issue with CAL scripts is that sometimes, Cakewalk is not in a state to run CAL scripts at times.  If the menu item Process | run CAL entry is greyed out, then CAL scripts will not run - even from key bindings.

It would also depend on how you would program your “external device” to send the right MIDI events.

That is definitely some lateral thinking! I hadn't really thought about using CAL - although the fact it's sort of deprecated and isn't always available to run is a downside

Thanks for a great suggestion. It's a shame there isn't some sort of documented API for Cakewalk, or another way though. 

Link to comment
Share on other sites

  • 0
20 hours ago, Matthew Carr said:

 although the fact it's sort of deprecated and isn't always available to run is a downside

Even with this downside, I still use CAL scripts for many things in CbB.  Makes my MIDI sequencing so much easier and light years quicker....

In fact if the bakers ever drop support for CAL totally (though I don’t ever think that will happen), I would stay with the last version that supported it.  Same goes for Studioware panels.

Link to comment
Share on other sites

  • 0

Hi:)

@Matthew Carr

What does "External" mean? (Bluetooth)Midi Connection or from a Tablet or Handy?

There are different possibilities. From a Controller you need either a button and a Rotor to choose the bar number or just use a fader to move to a specific bar.

Same with Tablet or Handy. "Goto" Command and typing in the bar number....

SPP should also work with syncing Cakewalk....

 

Bassman.

 

Link to comment
Share on other sites

  • 0
On 5/25/2021 at 8:41 AM, Heinz Hupfer said:

Hi:)

@Matthew Carr

What does "External" mean? (Bluetooth)Midi Connection or from a Tablet or Handy?

There are different possibilities. From a Controller you need either a button and a Rotor to choose the bar number or just use a fader to move to a specific bar.

Same with Tablet or Handy. "Goto" Command and typing in the bar number....

SPP should also work with syncing Cakewalk....

 

Bassman.

 

The 'External' input will be from a setlist manager app, so basically I'm looking to send a message from the setlist app to move to a particular Now time in Bandlab.

The 'Goto' command will allow me to type a bar number to go to, but I don't want to be typing in bar numbers - the external command needs to specify the bar number to move to.

If I can control the Now time via an external controller, as you suggest, then this would be a great starting point - can you give a bit more detail please?

Thanks,

Matt

 

 

Edited by Matthew Carr
Link to comment
Share on other sites

  • 0

HI:)

I've made a short video with a small AZController preset: (Attached the preset)

Button 1 jumps to Bar 100

Button 2 jumps to Bar 150

Button 3 jumps to Bar 200

Button 4 jumps to Bar 10

It is also possible to set save several Now Times in the timeline and load them with Button Presses but they are gone when you exit the project. 

So this is the better possibility. You can have as many Now Times as many Buttons you have or add some Ctrl, Shift or Alt Buttons for more NowTimes.

Now the problem is how to access the Buttons. Normally via a Midi Command, in this case CC 57,58,59,60.

I know it is possible to send these CCs via a Handy(OSC) or a Tablet, but therefore you have to ask Alexey(AZSlow, www.azslow.com) cause I have never used this....

With Midi controller it is very easy as you can see:)

P.S. I forgot, you can lay this on a Rotor or Slider, so 127 Positions with just 1 Rotor/Slider, but it's a bit tricky to just move 1 value, so better just 64 Points per Rotor/Slider. You could combine a Rotor and a Button. So Choose the Position with the Rotor and Move to with the Button.

Greetz;)

Bassman.

 

Jump to Position.spp

Edited by Heinz Hupfer
writing mistakes
Link to comment
Share on other sites

  • 0
On 5/28/2021 at 9:15 AM, Heinz Hupfer said:

I've made a short video with a small AZController preset: (Attached the preset)

 

Thanks so much Bassman, that's pretty much exactly what I was looking to do..  and including a preset for AZController is great!

Sorry for the  late reply, my band performed our first post pandemic gig yesterday - good times! Lots of people commented how good it was to be able to see live music again.

I'm wondering how AZController achieves it's integration, it seems to have pretty deep control over Cakewalk, so perhaps there an API available somewhere?

My setlist manager has a scripting engine, so it might be possible to do this directly, and avoid another piece of software running on my live rig.

 

Link to comment
Share on other sites

  • 0
1 hour ago, Matthew Carr said:

Thanks so much Bassman, that's pretty much exactly what I was looking to do..  and including a preset for AZController is great!

Sorry for the  late reply, my band performed our first post pandemic gig yesterday - good times! Lots of people commented how good it was to be able to see live music again.

I'm wondering how AZController achieves it's integration, it seems to have pretty deep control over Cakewalk, so perhaps there an API available somewhere?

My setlist manager has a scripting engine, so it might be possible to do this directly, and avoid another piece of software running on my live rig.

 

AZController uses the Cakewalk Control Surface API :  https://github.com/Cakewalk/Cakewalk-Control-Surface-SDK

Link to comment
Share on other sites

  • 0

Cheers guys, the API looks interesting and started me wondering if I could write a small app to expose the controls I need via OSC (which can be sent from my setlist manager)... but it looks like AZController may have that covered!

Will have a dig in over the weekend and see how I get on

Thanks again for all your help!

Link to comment
Share on other sites

  • 0
On 6/2/2021 at 7:23 AM, Heinz Hupfer said:

Just write if you need more help for this.....

 

Hi @Heinz Hupfer,

Apologies for bringing back a very old thread, but have been trying out your script for AZController, which looks like it will be perfect for my needs, but I find that when sending a zero value for CC:57 (btn off), the 'Go' dialog is displayed, but the subsequent keystrokes for entering the now time (100) and pressing Enter are ignored

i.e. I just get the 'Go' dialog with the value for the last go to entry displayed and waiting for input, such as:

image.png.42ee4df14ec2efeae1bf9044fa6130a6.png

Any ideas what I'm doing wrong, or how to fix this?

Thanks so much!

Matt

 

Link to comment
Share on other sites

  • 0

I think for that particular implementation to work, Cakewalk has to be in focus.

Let me propose other possibility. Currently AZ Controller has no way to navigate internally by time (can be added... if really required...), but I think for
your case it is better navigate by markers. So you create a set of markers and ask AZ Controller navigate to them. Advantages:

  1. if you modify the project timing, markers will be shifted properly and you don't need to correct the list
  2. you can expose the list (throw OSC), so it will be project specific in the app

Current limit in AZ Controller is 20 (can be easily extended if required). But if you don't need jumps you can show "current" and 1-2 previous/next, then the list will not be long and there is no limits.

I can make an example preset.

  • Like 1
Link to comment
Share on other sites

  • 0
On 6/3/2022 at 6:22 AM, azslow3 said:

I think for that particular implementation to work, Cakewalk has to be in focus.

Let me propose other possibility. Currently AZ Controller has no way to navigate internally by time (can be added... if really required...), but I think for
your case it is better navigate by markers. So you create a set of markers and ask AZ Controller navigate to them. Advantages:

  1. if you modify the project timing, markers will be shifted properly and you don't need to correct the list
  2. you can expose the list (throw OSC), so it will be project specific in the app

Current limit in AZ Controller is 20 (can be easily extended if required). But if you don't need jumps you can show "current" and 1-2 previous/next, then the list will not be long and there is no limits.

I can make an example preset.

Hi @azslow3

Firstly, thanks for picking up on my post, and more importantly thanks so much for taking the time and effort to write such a useful utility for cakewalk - it's been a real lifesaver given the current state of hardware integration!

Totally makes sense about Cakewalk having to be in focus when receiving the keystrokes, although in my case that's not really ideal.

I agree that navigating by markers would be the best -  my initial attempt was to just navigate X markers from the start, but I have more than 20 markers in my project so that wasn't possible - and I need to jump to non contiguous markers, so using next / previous marker won't work either. Is there any chance the number of markers to navigate could be made an input field allowing a larger number, rather than a drop down limited between -20 and 20?

e.g. the drop down shown is replaced with a text or combo box

image.png.84aafe6f6b542cdf07783c03c6e68e48.png

The idea of having named markers to jump to would be great - is it possible to add an alternative dropdown which is populated with the names of markers in the current project? That would be completely awesome and far better than just allowing a larger number of markers to select from, as it would avoid having to count markers in the project, and adding or removing markers in the project wouldn't affect the existing mappings after any changes, which could end up being a real pain.

Obviously that would be more work than just changing the drop down to a text box, but conceptually it could work something like this:

- Add an additional drop down in the 'Marker' action list

image.png.8347d7d98ff02408fb6bbc61a5514af1.png

- When to 'To Marker' is selected, the drop down list of values shows the names of markers in the project

image.png.d006dd7c1324b05099b1e16f9eef1665.png

- Not sure how things work under the hood in the SDK, but I'd imagine the list of marker names would be mapped to an index of marker IDs in the project, so adding / deleting a marker in the project would mess up this mapping. Hence they'd also need to be a 'refresh' button of some sort, which would re-map all marker names to the current marker index based on the name of each marker. 

image.png.b298dcc2992440bd10b8e15d47ee587c.png

- i.e. although the marker name is initially selected from a list of marker names in the current project, the actual marker name string is stored internally rather than the index. This would facilitate the refresh button functionality, which could then be extended to also remove marker names not found in the project (or perhaps map them to a default 'Marker Not Found' entry)

image.png.5146e266ec1480d9c226936b634d06ec.png

Obviously I appreciate that you have developed and worked on AZController for free,  so I have no expectations -  I just thought this would be a cool feature to add if you ever wanted to (or had time) to work on another version. Sorry for going down the rabbit hole on this!

Thanks again for all your development efforts, they are really appreciated.

Matt

Link to comment
Share on other sites

  • 0

Ideas are good, but... let be practical. What is the number of "jumps" you are going to have for one project and how you are going to know to which marker you are going to jump?

+-20 in Marker Action was designed with TouchOSC in mind. To show some set of markers around current one and allow jump to one of it. Note that iterative "scrolling" happens relatively fast (till the project has markers at every measure).

Note that Marker Action is already "tricky" (see documentation). You can move to named markers or shift by more then 20, using Software Sets. I can extend the functionality, but only after I understand the intention and agree the change is practical ?

PS. AZ Controller is for controllers... so it is not currently supporting "text input".
PSPS. If you like scripting, may be "another DAW" is more appropriate for you... There is a DAW which support all kind of scripts/extensions in several languages, with complete access to all information in the DAW and projects and  with a possibility to save script/exception specific data into the project. And converting your Cakewalk projects into that DAW can be simple (project dependent) using another tool from my site...

Link to comment
Share on other sites

  • 0

Thanks azslow,

My use case is for live performance, so let me give an overview as maybe I've not explained very well, or there is a better way.

In my cakewalk project I have a master setlist of songs (~60), each of which are marked as arranger sections and have a marker at the start (and potentially some markers at points in the song). Each arranger section (song) has an audio track for a drum track, some midi tracks which are displayed as notation, and program changes for external gear.

I have an third party program (Gig Performer) which hosts my VSTs played from my controller keyboards, and can organise setlists. As each song is selected in the setlist it's able to send a distinct midi message (CC, PC etc), which I want to use to set the now time in cakewalk to the start of each arranger section (song). 

The challenge is therefore to move the now time in cakewalk to a defined point via a midi msg - so when I select a song in Gig performer, the now time in cakewalk moves to the start of the correct arranger section (song) in cakewalk.

The type of MIDI message I can send is comprehensive (Program change, CC Msg, Song Position Pointer etc). I think it may also be possible to send an OSC message as well, using the Gig Performer scripting language, if that would be easier to handle in AZController.

Hope that helps explain the use case, feel free to ask any further questions!

Thanks,

Matt

Link to comment
Share on other sites

  • 0

I propose AZ Controller preset with one Software Set (let say "Markers") into which you add names of all markers in question (f.e. "Song 1", "Song 2", etc.). At the moment there is no "<current state text>" option for Marker Action, so you will need to specify explicitly each jump. If you send CC with value corresponding to required Marker (up to 128), the logic list for the only control you need will be:

'Value:0' - Search marker 'Song 1'
'Value:1' - Search marker 'Song 2'
etc.

Where 'Value:x' you specify in the 'Action conditions' section.

Typing 60 marker names and using copy/paste with selecting different value and marker can take a while... but I guess manageable in 15-20 minutes.

Or in 2-3 days I can add "<current state text>" option, then the action list can be:

- 'Markers' from MIDI value
Search marker from 'Markers'

I mean just 2 actions for up to 128 markers. Obviously you still have to specify all names manually...

For MIDI you will need some MIDI loopback device. For OSC you will have to send a command with float value <marker number>/127.0

May be we should continue the discussion on my forum, so we can exchange AZ Controller presets. On in PM. Your choice.

 

Link to comment
Share on other sites

  • 0

The Markers view in CbB. It lists all the markers in your project, alas it seems you can't externally choose between them. I think you have to select with the mouse only.
With Change Marker Properties, you can lock them to SMPTE (Real World) time. I wonder if there is a keyboard shortcut to go the specific times in a song?

Link to comment
Share on other sites

  • 0
1 hour ago, 57Gregy said:

The Markers view in CbB. It lists all the markers in your project, alas it seems you can't externally choose between them. I think you have to select with the mouse only.

This thread mention the way to select them externally. So that is possible ?

  • Like 1
Link to comment
Share on other sites

  • 0

Hi @azslow3,

Thanks for suggesting a couple of ways to approach this. I think the second option of adding a "<current state text>" option would be the most elegant implementation, although I understand this involves development effort - so you'll need to take a call as to whether you personally think it's worthwhile ?

I've made a post on your forum to continue the discussion, as this topic is now a discussion about AZController rather than Cakewalk,,,

https://www.azslow.com/index.php/topic,603.0.html

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...