Intro to Controller Scripting - Bitwig Studio 1.0.x
- KVRAF
- Topic Starter
- 6534 posts since 9 Dec, 2008 from Berlin
double post...
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." · Rumi
UrbanFlow.art · Instagram · YouTube
UrbanFlow.art · Instagram · YouTube
-
- KVRer
- 4 posts since 7 May, 2014
Hi
First I'm totally new at this script programming, i have just tried to combine two different scripts I have tested solo. Tomsgeneric script and the Analog factory script both linked here and they have some functions working well but together they would match quite good at least to test out all instruments plugs inside bitwig.
I have an Arturia Keylab 25 that i would love to be fully functional with bigwig.
Is there someone out there working on a script for Arturias key lab range.
I don't get Arturias Analog lab synts to respond at all to the key lab under any script i have tried.
But i can assign knobs and faders to bigwigs synts.
What i would like is to take the script part from the script the analog factory that are for the transport function and past it in to Tomsgeneric scripts.
May someone help me get it right, please.
Brgds D
First I'm totally new at this script programming, i have just tried to combine two different scripts I have tested solo. Tomsgeneric script and the Analog factory script both linked here and they have some functions working well but together they would match quite good at least to test out all instruments plugs inside bitwig.
I have an Arturia Keylab 25 that i would love to be fully functional with bigwig.
Is there someone out there working on a script for Arturias key lab range.
I don't get Arturias Analog lab synts to respond at all to the key lab under any script i have tried.
But i can assign knobs and faders to bigwigs synts.
What i would like is to take the script part from the script the analog factory that are for the transport function and past it in to Tomsgeneric scripts.
May someone help me get it right, please.
Brgds D
- KVRist
- 240 posts since 23 Apr, 2014
Hi,
Here is a script for Korg NanoKontrol 1
using the scenes (this feature disappeared on nanoKontrol 2)
to control 24 tracks under Bitwig Studio :
- volume sliders
- track mute toggle
- track record toggle
- transport with PunchIn PunchOut and Loop
1. Use Korg nanoKontrol Editor to write the attached config file into the controller.
2. Put the script under your "~/Documents/Bitwig Studio/Controller Scripts/" directory.
3. Chose the Korg MyNanoKontrol24 controller under BwS.
Here is a script for Korg NanoKontrol 1
using the scenes (this feature disappeared on nanoKontrol 2)
to control 24 tracks under Bitwig Studio :
- volume sliders
- track mute toggle
- track record toggle
- transport with PunchIn PunchOut and Loop
1. Use Korg nanoKontrol Editor to write the attached config file into the controller.
2. Put the script under your "~/Documents/Bitwig Studio/Controller Scripts/" directory.
3. Chose the Korg MyNanoKontrol24 controller under BwS.
Code: Select all
loadAPI(1);
host.defineController("Korg", "MYnanoKONTROL24", "1.0", "F74ABCE1-7BA8-4526-A769-25A7E1F8212F");
host.defineMidiPorts(1, 1);
var ECHO_ID = "12";
host.defineSysexDiscovery("F0 42 50 00" + ECHO_ID + "F7", "F0 42 50 01 ?? " + ECHO_ID + " 04 01 00 00 ?? ?? ?? ?? F7");
host.addDeviceNameBasedDiscoveryPair(["MYnanoKONTROL24"], ["MYnanoKONTROL24"]);
var SYSEX_HEADER = "F0 42 40 00 01 04 00";
var CC =
{
LOOP : 125,
STOP : 46,
PLAY : 45,
REC : 44,
REW : 47,
FF : 126,
SLIDER1 : 2,
SLIDER5 : 6,
SLIDER6 : 8,
SLIDER7 : 9,
SLIDER8 : 12,
SLIDER9 : 13,
SLIDER10 : 48,
SLIDER17 : 55,
SLIDER18 : 56,
SLIDER19 : 85,
SLIDER26 : 92,
SLIDER27 : 93,
KNOB1 : 14,
KNOB9 : 22,
KNOB10 : 57,
KNOB18 : 65,
KNOB19 : 94,
KNOB27 : 102,
UPPER_BUTTON1 : 23,
UPPER_BUTTON8 : 30,
TOGGLE_VIEW : 31,
LOWER_BUTTON1 : 33,
LOWER_BUTTON8 : 40,
TOGGLE_MODE_PAGE : 41,
UPPER_BUTTON10 : 67,
UPPER_BUTTON17 : 74,
UPPER_BUTTON18 : 75,
LOWER_BUTTON10 : 76,
LOWER_BUTTON17 : 83,
LOWER_BUTTON18 : 84,
UPPER_BUTTON19 : 107,
UPPER_BUTTON26 : 114,
UPPER_BUTTON27 : 115,
LOWER_BUTTON19 : 116,
LOWER_BUTTON26 : 123,
LOWER_BUTTON27 : 124
};
var isPlay = false;
function init()
{
host.getMidiInPort(0).setMidiCallback(onMidi);
// //////////////////////////////////////// host sections
transport = host.createTransportSection();
application = host.createApplicationSection();
trackBank = host.createTrackBankSection(24, 1, 0);
cursorTrack = host.createCursorTrackSection(2, 0);
cursorDevice = host.createCursorDeviceSection(24);
masterTrack = host.createMasterTrackSection(0);
// ////////////////////////////////////////////////
masterTrack.getVolume().setIndication(true);
transport.addIsPlayingObserver(function(on)
{
isPlay = on;
});
primaryInstrument = cursorTrack.getPrimaryInstrument();
activePage.updateIndications();
sendSysex(SYSEX_HEADER + "00 00 01 F7"); // Enter native mode
// sendSysex(SYSEX_HEADER + "1F 10 00 F7"); //sysex dump request
}
function exit()
{
sendSysex(SYSEX_HEADER + "00 00 00 F7"); // Leave native mode
}
function onMidi(status, data1, data2)
{
var cc = data1;
var val = data2;
// printMidi(status, cc, val);
if (status == 176)
{
if (withinRange(data1, CC.SLIDER1, CC.SLIDER5))
{
var index = data1 - CC.SLIDER1;
activePage.onSlider(index, val);
// trackBank.getTrack(index).getVolume().set(data2, 128);
}
else if (withinRange(data1, CC.SLIDER6, CC.SLIDER7))
{
var index = data1 - (CC.SLIDER1) - 1;
activePage.onSlider(index, val);
}
else if (cc == CC.SLIDER8)
{
var index = 7;
activePage.onSlider(index, val);
}
else if (cc == CC.SLIDER9 || cc == CC.SLIDER18 || cc == CC.SLIDER27)
{
masterTrack.getVolume().set(data2, 128);
}
else if (withinRange(data1, CC.SLIDER10, CC.SLIDER17))
{
var index = data1 - (CC.SLIDER10) + 8;
activePage.onSlider(index, val);
}
else if (withinRange(data1, CC.SLIDER19, CC.SLIDER26))
{
var index = data1 - (CC.SLIDER19) + 16;
activePage.onSlider(index, val);
}
else if (withinRange(data1, CC.KNOB1, CC.KNOB1 + 7))
{
var index = data1 - CC.KNOB1;
activePage.onKnob(index, val);
}
else if (withinRange(data1, CC.KNOB10, CC.KNOB10 + 7))
{
var index = data1 - CC.KNOB10 + 8;
activePage.onKnob(index, val);
}
else if (withinRange(data1, CC.KNOB19, CC.KNOB19 + 7))
{
var index = data1 - CC.KNOB19 + 16;
activePage.onKnob(index, val);
}
else if (cc == CC.KNOB9 || cc == CC.KNOB18 || cc == CC.KNOB27)
{
// var tempo = Math.round((val * 0.5)+10);
// transport.getTempo().set(val+30, 500);
}
if (val > 0) // deal with button presses here
{
if (withinRange(data1, CC.UPPER_BUTTON1, CC.UPPER_BUTTON8))
{
var index = data1 - CC.UPPER_BUTTON1;
trackBank.getTrack(index).getMute().toggle();
}
else if (withinRange(data1, CC.LOWER_BUTTON1, CC.LOWER_BUTTON8))
{
var index = data1 - CC.LOWER_BUTTON1;
trackBank.getTrack(index).getArm().toggle();
}
else if (withinRange(data1, CC.UPPER_BUTTON10, CC.UPPER_BUTTON17))
{
var index = data1 - CC.UPPER_BUTTON10 + 8;
trackBank.getTrack(index).getMute().toggle();
}
else if (withinRange(data1, CC.LOWER_BUTTON10, CC.LOWER_BUTTON17))
{
var index = data1 - CC.LOWER_BUTTON10 + 8;
trackBank.getTrack(index).getArm().toggle();
}
if (withinRange(data1, CC.UPPER_BUTTON19, CC.UPPER_BUTTON26))
{
var index = data1 - CC.UPPER_BUTTON19 + 16;
trackBank.getTrack(index).getMute().toggle();
}
else if (withinRange(data1, CC.LOWER_BUTTON19, CC.LOWER_BUTTON26))
{
var index = data1 - CC.LOWER_BUTTON19 + 16;
trackBank.getTrack(index).getArm().toggle();
}
switch (data1)
{
case CC.TOGGLE_MODE_PAGE:
switchPage();
break;
case CC.TOGGLE_VIEW:
application.nextPerspective();
break;
case CC.PLAY:
isPlay ? transport.restart() : transport.play();
break;
case CC.STOP:
transport.stop();
break;
case CC.REC:
transport.record();
break;
case CC.REW:
transport. togglePunchIn();
break;
case CC.FF:
transport. togglePunchOut();
break;
case CC.LOOP:
transport.toggleLoop();
break;
}
}
}
}
function onSysex(data)
{
// printSysex(data);
}
function Page()
{
}
devicePage = new Page();
devicePage.onKnob = function(index, val)
{
primaryInstrument.getMacro(index).getAmount().set(val, 128);
}
devicePage.onSlider = function(index, val)
{
cursorDevice.getParameter(index).set(val, 128);
}
devicePage.updateIndications = function()
{
for ( var p = 0; p < 24; p++)
{
macro = primaryInstrument.getMacro(p).getAmount();
parameter = cursorDevice.getParameter(p);
track = trackBank.getTrack(p);
parameter.setIndication(true);
macro.setIndication(true);
track.getVolume().setIndication(false);
track.getPan().setIndication(false);
}
}
mixerPage = new Page();
mixerPage.onKnob = function(index, val)
{
trackBank.getTrack(index).getPan().set(val, 128);
}
mixerPage.onSlider = function(index, val)
{
trackBank.getTrack(index).getVolume().set(val, 128);
}
mixerPage.updateIndications = function()
{
for ( var p = 0; p < 24; p++)
{
macro = primaryInstrument.getMacro(p).getAmount();
parameter = cursorDevice.getParameter(p);
track = trackBank.getTrack(p);
track.getVolume().setIndication(true);
track.getPan().setIndication(true);
parameter.setIndication(false);
macro.setIndication(false);
}
}
var activePage = devicePage;
function switchPage()
{
switch (activePage)
{
case devicePage:
activePage = mixerPage;
sendChannelController(0, CC.TOGGLE_MODE_PAGE, 0);
break;
case mixerPage:
activePage = devicePage;
sendChannelController(0, CC.TOGGLE_MODE_PAGE, 127);
break;
}
activePage.updateIndications();
}
You do not have the required permissions to view the files attached to this post.
Last edited by Ybom on Thu May 08, 2014 10:57 am, edited 1 time in total.
-
humanbeingbeing humanbeingbeing https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=314144
- KVRist
- 390 posts since 10 Oct, 2013
Tom, if you can help at all with better lemur integration (with bi-directional comms) I would be so grateful.... also I appreciate how you've been helping everyone on this board.... it would be great if I could send everything without too much programming.... I've started making templates but I would so much like to be able to program my lemur apps on the fly....ThomasHelzle wrote:Yeah, the way Bitwig Studio handles everything except CCs and Notes is a bit more involved.
I'm currently thinking about creating a generic script that makes all those things mappable in a predefined way. That is, you would need to use certain values for your controls in - for instance - mididesigner (but it should work in Lemur and other similar tools too) that are pre-defined in that script.
Can't say if and when that will happen yet. I'll hopefully know more by the end of the week.
Until then, your only hope is to dig deeper into the API and check out some of the existing scripts to see how it's done.
Cheers,
Tom
- KVRAF
- Topic Starter
- 6534 posts since 9 Dec, 2008 from Berlin
I wrote this in another thread already, but I think it makes sense to repeat it here:
You will actually see more of me in the future - since yesterday I work directly with and for Bitwig to improve the API and Controller area and the Documentation ...
There also is a dedicated Controller Script Website on the way to make it easier to collaborate on scripts and provide more help etc.
Bitwig provides access to controllers for me now, so in the future I will be able to provide more focussed help
As for the Lemur: Bitwig has a way of dealing with controllers that is on one hand very powerful, but on the other lends itself less ideally to controllers like the Lemur.
I was thinking over the last couple of days about that situation and the one idea I came up with was a kind of "generic über controller script" that makes more or less the whole API accessible through a defined set of CCs etc.
So you would have to use a certain set of controllers for each function but otherwise would be free to build what you want.
This is a major project though, so I don't know how long it will take.
Right now, I'm working on understanding the whole API better so I/we can then create such a script together to be as efficient as possible.
What do you think?
Cheers,
Tom
You will actually see more of me in the future - since yesterday I work directly with and for Bitwig to improve the API and Controller area and the Documentation ...
There also is a dedicated Controller Script Website on the way to make it easier to collaborate on scripts and provide more help etc.
Bitwig provides access to controllers for me now, so in the future I will be able to provide more focussed help
As for the Lemur: Bitwig has a way of dealing with controllers that is on one hand very powerful, but on the other lends itself less ideally to controllers like the Lemur.
I was thinking over the last couple of days about that situation and the one idea I came up with was a kind of "generic über controller script" that makes more or less the whole API accessible through a defined set of CCs etc.
So you would have to use a certain set of controllers for each function but otherwise would be free to build what you want.
This is a major project though, so I don't know how long it will take.
Right now, I'm working on understanding the whole API better so I/we can then create such a script together to be as efficient as possible.
What do you think?
Cheers,
Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." · Rumi
UrbanFlow.art · Instagram · YouTube
UrbanFlow.art · Instagram · YouTube
-
- KVRAF
- 3071 posts since 29 Sep, 2005
Congratulations Tom and Team BWS! 
It all just gets better
Great(er) things will be happening in the world of (for) Bitwigs.
Happy Musiking!
dsan
It all just gets better
Great(er) things will be happening in the world of (for) Bitwigs.
Happy Musiking!
dsan
My DAW System:
W7, i5, x64, 8Gb Ram, Edirol FA-101
W7, i5, x64, 8Gb Ram, Edirol FA-101
-
- KVRAF
- 3071 posts since 29 Sep, 2005
I just want to put this out there:ThomasHelzle wrote:.....I was thinking over the last couple of days about that situation and the one idea I came up with was a kind of "generic über controller script" that makes more or less the whole API accessible through a defined set of CCs etc.
So you would have to use a certain set of controllers for each function but otherwise would be free to build what you want.
This is a major project though, so I don't know how long it will take.
Right now, I'm working on understanding the whole API better so I/we can then create such a script together to be as efficient as possible.
What do you think?
Cheers,
Tom
I have noticed each device I have uses a different set of CC's depending on function required. I assume this to also be true for devices I do not have.
I'm not sure if a script that locks down CC's for exclusive use of managing functions will be practical. It surely would be convenient if so.
However, you guys are the scripting genius so maybe I should leave it to those in the know.
Happy Musiking!
dsan
My DAW System:
W7, i5, x64, 8Gb Ram, Edirol FA-101
W7, i5, x64, 8Gb Ram, Edirol FA-101
- KVRAF
- Topic Starter
- 6534 posts since 9 Dec, 2008 from Berlin
hey dsan,
yeah, it would not be practical for "normal controllers", they need dedicated scripts. But things like the Lemur etc. let you design your controller from scratch, so I think it should be no problem to set the controls to certain CCs?
Cheers,
Tom
yeah, it would not be practical for "normal controllers", they need dedicated scripts. But things like the Lemur etc. let you design your controller from scratch, so I think it should be no problem to set the controls to certain CCs?
Cheers,
Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." · Rumi
UrbanFlow.art · Instagram · YouTube
UrbanFlow.art · Instagram · YouTube
-
humanbeingbeing humanbeingbeing https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=314144
- KVRist
- 390 posts since 10 Oct, 2013
Cheers Tom, it sounds great and well done, I'm actually a very proficient JS developer but as you said, that API does not lend itself well to the Lemur, and I would like it to be able to transmit all the messages and channels, I've said it before, but I think they need a vanilla script like Ableton perhaps this script doesn't even have an API.ThomasHelzle wrote:I wrote this in another thread already, but I think it makes sense to repeat it here:
You will actually see more of me in the future - since yesterday I work directly with and for Bitwig to improve the API and Controller area and the Documentation ...
There also is a dedicated Controller Script Website on the way to make it easier to collaborate on scripts and provide more help etc.
Bitwig provides access to controllers for me now, so in the future I will be able to provide more focussed help
As for the Lemur: Bitwig has a way of dealing with controllers that is on one hand very powerful, but on the other lends itself less ideally to controllers like the Lemur.
I was thinking over the last couple of days about that situation and the one idea I came up with was a kind of "generic über controller script" that makes more or less the whole API accessible through a defined set of CCs etc.
So you would have to use a certain set of controllers for each function but otherwise would be free to build what you want.
This is a major project though, so I don't know how long it will take.
Right now, I'm working on understanding the whole API better so I/we can then create such a script together to be as efficient as possible.
What do you think?
Cheers,
Tom
- KVRAF
- Topic Starter
- 6534 posts since 9 Dec, 2008 from Berlin
I think I understand what you want but the way BWS deals with Controllers is different, which is good in some cases and not so good in others. AFAIK there is no way "around" the API, and this isn't about to change anytime soon as I understand it...
So if you would be willing to look into this together, I think we could come up with a versatile solution that should make it easier for people that use a kind of Meta-Controller like the Lemur.
If you are a proficient JS developer, it should be rather straight forward to build such an über-script.
Did you check out the API already?
My idea was, to start the script with definitions of all the controllers used, which would also double as a reference for people who would use the same script for their own implementations (I worked on the AKAI MPK mini yesterday and it starts with such a list too for example).
After that, the different tools and commands would be implemented in an "open" fashion, so that they could work in whatever Lemur setup you use.
More involved parts could be added later (like a step sequencer etc.).
I could offer to help and get answers if you get stuck, but I'm sure you would see results much faster than if you wait until I can come up with something.
What do you think?
Cheers,
Tom
So if you would be willing to look into this together, I think we could come up with a versatile solution that should make it easier for people that use a kind of Meta-Controller like the Lemur.
If you are a proficient JS developer, it should be rather straight forward to build such an über-script.
Did you check out the API already?
My idea was, to start the script with definitions of all the controllers used, which would also double as a reference for people who would use the same script for their own implementations (I worked on the AKAI MPK mini yesterday and it starts with such a list too for example).
After that, the different tools and commands would be implemented in an "open" fashion, so that they could work in whatever Lemur setup you use.
More involved parts could be added later (like a step sequencer etc.).
I could offer to help and get answers if you get stuck, but I'm sure you would see results much faster than if you wait until I can come up with something.
What do you think?
Cheers,
Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." · Rumi
UrbanFlow.art · Instagram · YouTube
UrbanFlow.art · Instagram · YouTube
-
humanbeingbeing humanbeingbeing https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=314144
- KVRist
- 390 posts since 10 Oct, 2013
My problem at the moment is that I have 2 really large Js related projects I'm doing for work, one is for a homelessness app that is going to be used in 19000 cities and with 100k volunteers....so that kinda has to take preference over my music 'hobby'.... that being said, I would love for this to work and I'm prepared to spend some spare time on this.... I have looked into the API and I get the whole jist of the process I think... but I've got some problems/questions... I don't like the documentation, I'm used to much better docs with more comprehensive listings of all objects and functions... and I'm still not sure about what I'm actually capable of doing with the API... I mean I considered this idea, you mentioned it, having all the controller definitions listed... but I'm still in the dark about some things, and I can't find the appropriate code to do what I would like to do, and I'm not sure if it is even possible... maybe you can help me with some of these missing pieces... say for example if I define every CC, there doesn't seem to be a way to define not just the message but also the channel involved, so I'd like to define every CC on every midi channel.... I've noticed I can send out to a particular channel but no way to receive, define the original message definition to say what channel that def belongs to.... so it's almost like everything is on channel 1 (maybe this is the way it works?)... I could probably handle being limited to 1 channel as a start... there are just a few messages I routinely used on the lemur, CC's obviously, but I also sometimes use note messages and I'm not sure if I can define note(on & off) messages individually, I guess I could exploit a standard keyboard procedure and it may work just as well... program/control change/ and stuff like that I think would be easy enough but they'd all have to be defined individually as well.... but I was kinda stopped in my tracks with my most basic test script... with 1 fader and 1 cc, I could not get bidirectional to work properly, and it was frustrating as hell because one minute it would work and then stop working altogether, I'm not sure if this is a bug or something I'm doing wrong... but I'm not interested in a one way controller. Templates are not the end of the world, I could for example end up doing macro controls that way also... a nice general template would be OK, I use the same template on the lemur half the time anyway, but no bidirectional, no point.... I think I'll give it a shot and consult with you when I get stuck... thanks for your help.ThomasHelzle wrote:I think I understand what you want but the way BWS deals with Controllers is different, which is good in some cases and not so good in others. AFAIK there is no way "around" the API, and this isn't about to change anytime soon as I understand it...
So if you would be willing to look into this together, I think we could come up with a versatile solution that should make it easier for people that use a kind of Meta-Controller like the Lemur.
If you are a proficient JS developer, it should be rather straight forward to build such an über-script.
Did you check out the API already?
My idea was, to start the script with definitions of all the controllers used, which would also double as a reference for people who would use the same script for their own implementations (I worked on the AKAI MPK mini yesterday and it starts with such a list too for example).
After that, the different tools and commands would be implemented in an "open" fashion, so that they could work in whatever Lemur setup you use.
More involved parts could be added later (like a step sequencer etc.).
I could offer to help and get answers if you get stuck, but I'm sure you would see results much faster than if you wait until I can come up with something.
What do you think?
Cheers,
Tom
- KVRAF
- Topic Starter
- 6534 posts since 9 Dec, 2008 from Berlin
Wow, sounds like a REALLY big project 
I will have sessions over the next weeks with the developers since I have the same problems basically, missing the bigger picture.
Therefore my first focus will be on a.) understanding the whole thing myself and b.) improving the docs from that point. Your questions will become part of that process.
Midi channels is one part that is underdeveloped ATM. in BWS. While I was able with my Multi Controller Script to access all midi channels individually, everything that goes through "tracks" is reduced to channel 1.
Depending on what you are actually doing with your Lemur Templates that may or may not a problem.
As for actual functions: I think it's necessary to go with the flow of the API there. Many control functions can only be accessed with dedicated functions in the script. That is what I meant with a rather general approach, having predefined CCs for instance for all transport functions, all the track-switching, device access etc.
Then you could define your Lemur Template accordingly...
Do you have the original Lemur Hardware or the iPad app?
Cheers,
Tom
I will have sessions over the next weeks with the developers since I have the same problems basically, missing the bigger picture.
Therefore my first focus will be on a.) understanding the whole thing myself and b.) improving the docs from that point. Your questions will become part of that process.
Midi channels is one part that is underdeveloped ATM. in BWS. While I was able with my Multi Controller Script to access all midi channels individually, everything that goes through "tracks" is reduced to channel 1.
Depending on what you are actually doing with your Lemur Templates that may or may not a problem.
As for actual functions: I think it's necessary to go with the flow of the API there. Many control functions can only be accessed with dedicated functions in the script. That is what I meant with a rather general approach, having predefined CCs for instance for all transport functions, all the track-switching, device access etc.
Then you could define your Lemur Template accordingly...
Do you have the original Lemur Hardware or the iPad app?
Cheers,
Tom
"Out beyond the ideas of wrongdoing and rightdoing, there is a field. I’ll meet you there." · Rumi
UrbanFlow.art · Instagram · YouTube
UrbanFlow.art · Instagram · YouTube
-
humanbeingbeing humanbeingbeing https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=314144
- KVRist
- 390 posts since 10 Oct, 2013
Thanks for bringing these issues to the table...ThomasHelzle wrote:Wow, sounds like a REALLY big project
I will have sessions over the next weeks with the developers since I have the same problems basically, missing the bigger picture.
Therefore my first focus will be on a.) understanding the whole thing myself and b.) improving the docs from that point. Your questions will become part of that process.
Midi channels is one part that is underdeveloped ATM. in BWS. While I was able with my Multi Controller Script to access all midi channels individually, everything that goes through "tracks" is reduced to channel 1.
Depending on what you are actually doing with your Lemur Templates that may or may not a problem.
As for actual functions: I think it's necessary to go with the flow of the API there. Many control functions can only be accessed with dedicated functions in the script. That is what I meant with a rather general approach, having predefined CCs for instance for all transport functions, all the track-switching, device access etc.
Then you could define your Lemur Template accordingly...
Do you have the original Lemur Hardware or the iPad app?
Cheers,
Tom
I have 2 ipad apps... though I used to use the hardware lemurs, kinda obsolete these days.
