couldn't you use these cc identifiers with my custom module? something like:
if (host === 'midi' && port === 'DAWtoOSC' && address === '/control' && args[1].value === 117) {
if (args[2].value = 12) {
articulation = SPAO Woods High
}
}
assuming you have the articulations ready in the custom module.
this way you could leave track name as is. i don't know if this works. just a thought.
do you need to see the track name in OSC? if not we could edit the track name on the fly in custom module i think.
"Woods High [SPAO] [v] [m] [wh]" arrives in custom module and gets converted to "117 - 12"
and then:
if (trackname.includes(117 - 12)) {
articulation = SPAO Woods High
}
No don’t think so - the cc value is the one that gets sent back from the transformer plugin using “the old method” to determine the map and therefore is object in the custom module - not the cc for the articulation itself.
I was going to use your custom module method with sysex to grab the track name, extract the tag from it as a variable so therefore use the tag to determine the map being used.
I don’t have too much trouble with the transformer plugin method for midi tracks but the benefit from your sysex method for me will be fixing a limitation on how many instrument tracks I can use the articulation mapping in OSC on - I’ve got a workaround to fix the lack of midi send function on instrument tracks but it is limited to 128 tracks and my template runs to 1000+
Are we still on christmas time ? Santa - @gcat - Claus, i'm trying to get the whole thing working... I understood how to have the trackname in a text widget, and that's super super cool, but now i'm stuck...
So...
to simplify the whole process for me, i just let one instrument in the json :
var as_bass_upright = loadJSON('../Cubase Expression Maps/AS - Bass Upright.json');
var art_as_bass_upright = [as_bass_upright.InstrumentMap.member[0]?.list.obj[0]?.string[1].value,
as_bass_upright.InstrumentMap.member[0]?.list.obj[1]?.string[1].value,
as_bass_upright.InstrumentMap.member[0]?.list.obj[2]?.string[1].value,
as_bass_upright.InstrumentMap.member[0]?.list.obj[3]?.string[1].value,
as_bass_upright.InstrumentMap.member[0]?.list.obj[4]?.string[1].value,
as_bass_upright.InstrumentMap.member[0]?.list.obj[5]?.string[1].value];
var articulation = art_as_bass_upright;
i converted my expression map online (convertjson.com), having set the "encoding field" to uft-8.
in my O-S-C folder, i made a dedicated "Cubase Expression Map" folder, in which i put the converted json.
Yes - this would work, but from what you're saying above the 18 character limitation would make this more difficult as I'd lose the tag - especially if I've got a number of similar tracks with a space at the same place.
Let me have a look at it and see.
i want to get to a point where the track is selected - the name is sent to OSC - OSC (on the fly as you say) extracts the tag from the name, OSC then reads the correct articulations for a map (using the tag) that has been populated into OSC dynamically from the xml of the expression map.
This would then avoid having to repopulate the custom module with articulations every time I edit or create a new map and I could use the sysex instead of plugins and therefore save time every time I add a new track.
Looking again at your original json file I think that there could be a way to slim that down to avoid a lot of the if statements - the really useful bit that you've created is the sysex filter. I'm going to have a real play with this over the next 24 hours and see what I can do.
Btw, i was wondering : i don't know what really means ../ in the file path loadJSON('../Maps/AS_Bass_Upright.json')... i guess it leads to the o-s-c directory...
Wow... as i can see... while i'm on Earth, making some little mouse jumps to try to get into the spacecraft, you're already far far away travelling through the Galaxy... Gonna have a close look at your module ! So interesting ! So much to learn.... Thank you