-
AuthorSearch Results
-
April 9, 2018 at 9:40 am #83436
In reply to: Global Variable issue. It's drive me crazy.
Ah ok I see, well you couldn’t know that. Btw.: nrpn’s are not sysex. All Sysex messages begin with f0 and end with f7. Nrpn’s are a kind of special CC’s. But that may be nitpicking.
In KPA NRPNS can be accesed with sysex messages.
Ok – I’ve found that latest nightly build do not work for me. I’ve downoaded latest recommended version from main site and it is working now with global variables.
Next thing. Im working for something like FirsTimeRun Window where the user Can set devices only once.
I will be runing this script in after panel loaded callback.What this script does – it checks if panelMidiInputDevice is “– None” then lists avaliable MIDI devices and put it in combobox in modal window.
When user select in and out device and click ok- it wil set those choices as
panelMidiInputDevice property for example. And this is almost working.The thing is Restricted Instance don’t save these setting on exit, and my script is triggered on every run.
Here’s code that i have:
if panel:getProperty("panelMidiOutputDevice")=="-- None" or panel:getProperty("panelMidiInputDevice")=="-- None" then saMidiInputDevices = StringArray() for i=0,(utils.getMidiInputDevices():size()) do saMidiInputDevices:set(i, utils.getMidiInputDevices():get(i)) end saMidiOutputDevices = StringArray() for i=0,(utils.getMidiOutputDevices():size()) do saMidiOutputDevices:set(i, utils.getMidiOutputDevices():get(i)) end modalWindow = AlertWindow("\nFirst time run setup.\nPlease select you MIDI Input and Otput Device", " ", AlertWindow.InfoIcon) modalWindow:addButton(" OK ", 1, KeyPress(KeyPress.returnKey),KeyPress()) modalWindow:addButton("Cancel", 0, KeyPress(KeyPress.escapeKey),KeyPress()) modalWindow:addComboBox ("cmbMidiInputDevices", saMidiInputDevices, "MIDI Input Device") modalWindow:addComboBox ("cmbMidiOutputDevices", saMidiOutputDevices, "MIDI Output Device") modalWindow:addTextBlock ("Program will be closed to save changes.") ret = modalWindow:runModalLoop() if ret == 1 then panel:setPropertyString("panelMidiInputDevice",modalWindow:getComboBoxComponent("cmbMidiInputDevices"):getText()) panel:setPropertyString("panelMidiOutputDevice",modalWindow:getComboBoxComponent("cmbMidiOutputDevices"):getText()) panel:setPropertyString("panelMidiControllerDevice",modalWindow:getComboBoxComponent("cmbMidiInputDevices"):getText()) --panel:setProgramState(true) --stateData:setProperty("MIDIin", modalWindow:getComboBoxComponent("cmbMidiInputDevices"):getText(), nil) --stateData:setProperty("MIDIout", modalWindow:getComboBoxComponent("cmbMidiOutputDevices"):getText(), nil) end modalWindow:setVisible (false) end end
- This reply was modified 6 years, 1 month ago by daimondamps.
April 8, 2018 at 6:42 pm #83433In reply to: Global Variable issue. It's drive me crazy.
NRPNs are part of the MIDI spec’ same as any other
data normally published for a device. they’re classed
as MIDI CC’s afaik.you could have got all the data from the device by sending
it a data request message.unless you were privy to some confidential information about
a forthcoming product or firmware update, it seems hard to
justify a ban.April 8, 2018 at 6:11 pm #83430In reply to: Global Variable issue. It's drive me crazy.
Ah ok I see, well you couldn’t know that. Btw.: nrpn’s are not sysex. All Sysex messages begin with f0 and end with f7. Nrpn’s are a kind of special CC’s. But that may be nitpicking.
April 7, 2018 at 10:23 pm #83420In reply to: Global Variable issue. It's drive me crazy.
They publish some beta version of the firmware. And in past times there was a hidden sysexes to enable new delays for example. Some user found a “bug” which enable those new delays and I looked at preset midi file and concluded sysex (nrpn and value) to enable those new features. I’ve published this on this guy thread . They wanted to show this at NAMM as a new feature so I think they were angry that someone posted this. Voila!! 😛 That was my stupid mistake.
- This reply was modified 6 years, 1 month ago by daimondamps.
March 12, 2018 at 7:56 pm #82880In reply to: uiFixedImageSlider no incoming data on the panel
Hallo,
please look at the Attachment. You can see,monitor output 4 messages from panel to hardware,
monitor input 3 messages.
I must use the multi. For my MicroMonst it is ok. Thr MIDIMessages are NRPN.
In the attachment there is a new Test, you can see the Octave Pot. It works from Hardware to Panel and from panel to hardware.
KlausAttachments:
You must be logged in to view attached files.February 11, 2018 at 2:55 am #81790In reply to: Alesis Andromeda A6
I am taking another look at this again because of how well I was able to get my Supernova 2 set up thanks to Ctrlr. Someone built an amazing Ctrlr panel for that synth (it is the digital workhorse counterpart to my A6) and I don’t think integration could be any better than it is (now that I learned how to increase the VST parameters exported to be larger than 64 default value…).
So there are a few approaches. I am hassling Ableton to add NRPN support but I understand that it conflicts with regular CC usability of CC control numbers that are otherwise usable for regular 7-bit messages. It could be possible for them to enable as a switch.
Anyhow we are in luck because for Ableton Live 10, at least Sysex is now supported. So here is what I’m thinking:
1. Build the 1-way CTRLR panel to send Sysex to A6 for all supported parameters first. In this way it can already work similar to how I have my Supernova set up together with an Akai APC40:
a) If all the parameters get exported in the VST, they are available for assignment to Ableton macros (up to 64, but I guess it is enough for automation purposes as long as you can access all of them)
b) The A6 panel cannot be recorded in this limited setup (yet), but it can of course play itself in local mode, and be controlled fully from either the Ctrlr panel or any control surfaced mapped to it
2. See if it is possible to get a feature to synchronize the panel state by requesting a sysex dump of the current patch (if A6 doesn’t acknowledge sysex request, we could still sync state by manually saving to sysex from the panel). If the Supernova 2 person could get this to work, I’m sure we could too.
3. Finally, we will have to see if we can get front panel input from the Andromeda to work. I feel confident this would be fine for all the DAWs except Ableton… so during stages 1 and 2 I will try and keep putting pressure on them to add NRPN support (that process is already started ;))
Ideally once they have enabled it, we can add 2-way support for NRPN as it would be far too complicated to record NRPN but send back out Sysex I think. So by the end of this, maybe there is the option to send data out as either NRPN or Sysex (but never both? although I hear the person who made the iPad editor uses a combination of both)
Just brainstorming here, but I am determined to get this project off the ground. I have a lot of experience with GUIs and JUCER so the front end design shouldn’t take so long compared to untangling the Sysex/NRPN mess, especially for Ableton.
December 10, 2017 at 3:29 pm #73752In reply to: Alesis Andromeda A6
it’s a shame for NRPN in ableton, it slow the future again.. i don’t know if someone can code something with max for ableton could handle NRPN ?
have you see ? https://analogdessert.com/downloads/alesis-andromeda-a6-vst-editor/ alot of work is already done
- This reply was modified 6 years, 5 months ago by guigeek.
November 17, 2017 at 9:44 pm #73547In reply to: Alesis Andromeda A6
I also just learned that because Andromeda only sends NRPN from the front panel and not sysex, it will have to be all-NRPN if we’re going to have a 2-way sync.
I’m not sure if anyone who would know the answer would read this question if posed here, but, one of the main reasons I’m leaning away from Ctrlr towards Max is because I don’t see any way that incoming/outgoing control parameters can be automated within the DAW when a Ctrlr panel is built for a VST, am I just missing something obvious?
November 17, 2017 at 4:51 am #73533In reply to: Alesis Andromeda A6
@guigeek it is not at all impossible it’s just a very large project. Have you seen the Andromeda editor for iPad?
http://www.matrixsynth.com/2013/05/tb-midi-stuff-andromeda-editor-v1-now.htmlI am going to take a shot at this but not decided if I’ll use Ctrlr or something else like MaxMSP. I love the Ctrlr panel for my Supernovas but I want something that will let me automate whatever parameters I feel like in a DAW, and I’m hoping to get something to work with Ableton Live. I’m annoyed because I just found out they are enabling Sysex for Live 10 but not fixing NRPN.
So it might be possible to do a Ctrlr panel with Sysex but since the Andromeda only sends out NRPN from it’s panel I can’t do what I want that way.
August 23, 2017 at 10:24 pm #72772In reply to: modulator value sent only on mouseUp event?
hmmmm…that one is tricky…
In other words: you need a constant 200ms loop (one timer is enough) sending a buffer if it is not empty (assuming the buffer is cleaned if sent). The buffer is filled each time a modulator is changed with a CC or NRPN and the new value (I suppose).If you move the patch volume from 28 to 127 then the OSC1 pitch from 32 to 48 within 200ms you get about 116 pairs (cc/NRPN + value). Correct?
Something like that… But ok, this is only filling the buffer.
And that you control with “Called when Modulator Value Change”What I don’t see how we can do is to keep the timer running (to count the 200ms) while being able to do actions outside the timer loop…
In my case,the message length and content is fixed and I tailored the 150ms to get the “right” timing interval. In your case, you need to continuously count 200ms and check the buffer…
You should do a test of starting a 5s loop timer continuously running until some button is set to OFF (to enable you to stop the endless loop). Then add a few modulators with their OnChange method filling your buffer. Try changing the modulators while the timer is running. In the timer instead of sending to the synth, print the buffer content to the console or to a label including the time stamp.
Doing this test will allow checking if you can keep a timer running while doing other actions on the panel (this may be possible as I think Lua is multithreading).July 23, 2017 at 2:36 am #72522In reply to: Inbound NRPN?
I did this in LUA on a PC3 for outgoing messages, but the messages there are far more complex. Due to the vast number of parameters the control messages are 8 MIDI CC’s long.
I keep track of the last message and do a comparison. If certain elements change, then I send a whole new message, otherwise I send just the running status (ie the short version of the message). I need to do this due to bandwidth, and it’s in line with running messages in the MIDI spec.
To read them in (and this isn’t required on the PC3) I’d either drop them into an array based on the MIDI message, or have a series of IF THEN statements to work out which control should change, and then set the value of the Ctrlr control based on the valaue part of the NRPN. You’d need to make an assumption that unless you receive a new destination parameter that all messages are to change the currently selected control.
Pseudocode would go something like this (I’m not on a computer with Ctrlr or Lua at the moment so can’t do the actual coding)
Assume you read the incoming MIDI and for MIDI CC messages you put Byte 2 into midiCcNum and Byte 3 into midiCcVal
ie IF midiCcNum = 99 THEN
parameterNumber1 = midiCcVal
ELSEIF midiCcNum = 98 THEN
parameterNumber2 = midiCcVal
ELSEIF midiCcNum = 6 THEN
parameterNumber3 = midiCcVal
ELSIF midiCcNum = 38 THEN
ctrlrParamVal = midiCcValctrlrParamName = some function of parameterNumber1, parameterNumber2, parameterNumber3
The set ctrlrParamName.ctrlrParamVal
By default all variables are global in LUA, so just assign the messages to a new variable and it will be accessible to new methods.
- This reply was modified 6 years, 10 months ago by Puppeteer.
The Puppeteer
http://godlike.com.auJuly 23, 2017 at 12:50 am #72521In reply to: Inbound NRPN?
Following up on my own post, it seems similar in spirit to what is discussed in this thread, albeit in the other direction – that thread talks about filtering outbound NRPN data to thin it, I need to do the opposite, create fully formed NRPN messages from inbound thinned (or running status as I like to call them) messages.
Does it sound reasonable to write a Lua script that is “Called when a panel receives a MIDI message” (or perhaps “Called when a panel receives a multi MIDI message”?), keep track of the last inbound NRPN message, and if the new message matches the same element, then create a fully formed 4 CC message to pass on to Ctrlr to process normally.
If that sounds reasonable, I don’t know how to do two things:
* how do I pass the output of the Lua script to the normal inbound MIDI data handling of the panel?
* how do I keep persistent data (the last inbound NRPN message info) between instances of this new method that will be called?Hopefully that’s clear!
July 23, 2017 at 12:31 am #72520In reply to: Inbound NRPN?
Resurrecting my own 6 year old post! I’m now working on a new synth, and to my dismay, I’m finding that it handles outbound NRPN’s in the exact same way I described as for the previous Mutable Instruments synth I was working on before. For this synth, if it is sending a “new” NPRN (e.g. I start twiddling a new knob on the synth), it initially sends the full 4 CC messages, like this:
[Controller] Ch:[ 1] No:[ 99] Val:[ 2] RAW:[b0 63 02]
[Controller] Ch:[ 1] No:[ 98] Val:[ 33] RAW:[b0 62 21]
[Controller] Ch:[ 1] No:[ 6] Val:[ 0] RAW:[b0 06 00]
[Controller] Ch:[ 1] No:[ 38] Val:[ 29] RAW:[b0 26 1d]But then if I continue to twist the same knob, I now get a stream of messages like this:
[Controller] Ch:[ 1] No:[ 38] Val:[ 28] RAW:[b0 26 1c]
[Controller] Ch:[ 1] No:[ 38] Val:[ 27] RAW:[b0 26 1b]
[Controller] Ch:[ 1] No:[ 38] Val:[ 26] RAW:[b0 26 1a]
[Controller] Ch:[ 1] No:[ 38] Val:[ 25] RAW:[b0 26 19]
[Controller] Ch:[ 1] No:[ 38] Val:[ 24] RAW:[b0 26 18]
[Controller] Ch:[ 1] No:[ 38] Val:[ 23] RAW:[b0 26 17]So it’s just sending one CC message for each change in value.
Any suggestions on how to deal with this scenario, so that my panel modulators are reliably updated when I move parameters on the synth itself?
Thanks for any tips!
May 30, 2017 at 10:10 pm #72220In reply to: building text strings
Well, somewhere it is the same… provided that you declare all your mods (I mean assign to variables) in some method launched at the beginning (this is advised by atom).
Look at my method AssignModulators.
I’m using getModulatorByName but I could also used getModulatorByIndex and used for example the NRPN number as index. But which number then for non synth related mods?
I think it is easier to use getModulatorByName and corresponding variable names.April 22, 2017 at 7:03 am #71896you could try making the increment interval 64 instead of 1?
if you look at the synthliteII panel, there is a mixture of
value ranges: some have 0-1023 (10bit?) – so you don’t have
to use the full 0-16535 range. try the combined CC for each
with the range you want and see what happens when you increment.
i’m thinking the novation must interpret it according to its
own OS.
note: i just checked: not easy to see exactly how it is counting
with that resolution. i think there may also be an error in that
panel for osc1+2 level, which only seems to be sending out one CC.
i think it may have the wrong max value assigned, need to check
the manual.edit: yep i checked the synthliteII manual: the Level controls
are 7bit (0-127) – those value ranges there are wrong, and you’ll
note that the ‘multi message’ box is empty.interesting that Novation have managed to exploit the limited
number of CCs available for 14bit, combining them with regular
CCs. i’m not very keen on this implementation for synths, but
there’s no other option with MIDI, other than sysex or NRPN.
don’t know how their RemoteSL boxes are supposed to talk to
the BS II: they don’t support 14bit combined CCs.April 22, 2017 at 1:03 am #71893Hey human fly
Thank you very much for your help. The cutoff from the synth lite II panel works for me! It works like this now: The parameter has a max value of 16383. If I increase the value of the parameter by one, CC48 also increases by one. When CC48 reaches 127, it jumps back to 0 and CC16 increases by one (and so on..). With this method the parameter has bigger resolution than the cutoff of the synth, but it still works. Now I have to increase the value of the parameter by 64 until the cutoff of the synth increases by one. I hope you understand what I mean.
Is there a way to tell CC48 to alternate between 0 and 64 and don’t increase just by one? So every step CC48 increase by 64? That would be perfect. Then the parameter only has a resolution of 256 and not 16384. This would be better for automation etc.
The BS II does not only have 14bit messages. It has normal CC messages, NRPN messages and those like I explained. Here are all messages listed in this manual: http://media.aadl.org/files/catalog_guides/1447741_instructions.pdf#page=20&zoom=110,-869,8
Greetings
April 21, 2017 at 3:24 am #71890this is 14bit MIDI CC – it uses MIDI CCs in pairs, as MSB/LSB
to obtain 0-16k range. you’ll see they are always CC pairs
numbered 32 apart, ie: 15 + 47, 16 + 48 etc.
and can be thought of as coarse/fine, and the values are sent
out interleaved, ie: cc15,cc47,cc15,cc47 etc.as far as i know. may differ depending on device, but i think
this is how CC pairs work.look at atom’s synth lite II panel (and check its output to midiox)
not all controls are 14bit. some are regular 0-127 range, others
are 10?bit or 14bit – these use msb/lsb.look at the first knob, Cutoff: the MIDI message type is ‘Multi’,
and the Multi Message List has 2 entries, msb and lsb.CC,ByteValue,MSB7bitValue,15,-1:
CC,ByteValue,LSB7bitValue,47,-1:i don’t know what the -1 is for (or understand the note in the dialog)
yet, but if you do ‘insert pre-defined’ and select NRPN, it inserts
the format needed but with the nrpn CC numbers and ‘-2’.i could not have figured out how to do that from the dialog, or
without the panel example.
so is the bassstationII all 14bit MIDI CC? or is it nrpn as well?
does the manual give an nrpn list?March 30, 2017 at 10:12 pm #71776In reply to: Global Midi Channel for a panel
am also interested in this. it’s a shame there can’t be
another variable there. if you were using MIDI CC, it can
be done, you just link a combo to panel property midi channel out,
and to modulator value, and it works. probably also ok for
NRPN etc.that would mean midi message type: none, and ‘Called when modulator
value changes’: sysex message lua -?with a lua for every parameter?
with this variable..or would you have a single sysex implementation list, that the lua
fetches from by number/address, to constitute the message after the
header, substituting the midi channel byte?March 28, 2017 at 6:53 pm #71766i just checked what the panel sends out to midiox. no ‘null’ message.
look:http://sig.sapp.org/doc/classes/MidiOutput/rpn.html
and last paragraph here:
http://www.philrees.co.uk/nrpnq.htm
you can add it in the MultiMessage List, i reckon.
need to experiment to see what works.
it’s just another few CC bytes.March 26, 2017 at 9:29 pm #71758would be interesting to see how it works with the same messages
loaded into a Novation Remote SL then.have you ever tried editing it with sysex?
i think it’s just getting jumbled messages running into each other.
nb: i have *never* used nrpn’s successfully :o) – i mean, last time
i tried was on the atari, and i didn’t really get how i was supposed
to send ‘simultaneously’ on a serial bus.i think the first thing to do is to send the data from the panel to
midiox (if you’re on a PC, don’t know what it is for Mac) – you’ll
need loopbe1 for the internal midi buss (easiest one since maple midi cable
no longer works on win10) – then at least you can see what the panel
is spitting out when you use your controller.maybe have a look at the midi implementation of the esq1 and see
what’s there. -
AuthorSearch Results