Search Results for 'Nrpn'

Home Forums Search Search Results for 'Nrpn'

Viewing 20 results - 41 through 60 (of 278 total)
  • Author
    Search Results
  • #83436
    daimondamps
    Participant
      • Topics: 8
      • Replies: 80
      • Total: 88

      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.
      #83433
      human fly
      Participant
        • Topics: 124
        • Replies: 1070
        • Total: 1194
        • ★★★★

        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.

        #83430
        Possemo
        Participant
          • Topics: 14
          • Replies: 638
          • Total: 652
          • ★★★

          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.

          #83420
          daimondamps
          Participant
            • Topics: 8
            • Replies: 80
            • Total: 88

            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.
            #82880
            tangram
            Participant
              • Topics: 1
              • Replies: 4
              • Total: 5

              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.
              Klaus

              Attachments:
              You must be logged in to view attached files.
              #81790

              In reply to: Alesis Andromeda A6

              kcoul
              Participant
                • Topics: 0
                • Replies: 3
                • Total: 3

                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.

                #73752

                In reply to: Alesis Andromeda A6

                guigeek
                Participant
                  • Topics: 0
                  • Replies: 3
                  • Total: 3

                  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.
                  #73547

                  In reply to: Alesis Andromeda A6

                  kcoul
                  Participant
                    • Topics: 0
                    • Replies: 3
                    • Total: 3

                    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?

                    #73533

                    In reply to: Alesis Andromeda A6

                    kcoul
                    Participant
                      • Topics: 0
                      • Replies: 3
                      • Total: 3

                      @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.html

                      I 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.

                      #72772
                      goodweather
                      Participant
                        • Topics: 45
                        • Replies: 550
                        • Total: 595
                        • ★★★

                        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).

                        #72522

                        In reply to: Inbound NRPN?

                        Puppeteer
                        Participant
                          • Topics: 16
                          • Replies: 185
                          • Total: 201
                          • ★★

                          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 = midiCcVal

                          ctrlrParamName = 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.au

                          #72521

                          In reply to: Inbound NRPN?

                          dnigrin
                          Participant
                            • Topics: 9
                            • Replies: 57
                            • Total: 66

                            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!

                            #72520

                            In reply to: Inbound NRPN?

                            dnigrin
                            Participant
                              • Topics: 9
                              • Replies: 57
                              • Total: 66

                              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!

                              #72220

                              In reply to: building text strings

                              goodweather
                              Participant
                                • Topics: 45
                                • Replies: 550
                                • Total: 595
                                • ★★★

                                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.

                                human fly
                                Participant
                                  • Topics: 124
                                  • Replies: 1070
                                  • Total: 1194
                                  • ★★★★

                                  you 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.

                                  Blutwurst01
                                  Participant
                                    • Topics: 1
                                    • Replies: 2
                                    • Total: 3

                                    Hey 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

                                    human fly
                                    Participant
                                      • Topics: 124
                                      • Replies: 1070
                                      • Total: 1194
                                      • ★★★★

                                      this 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?

                                      #71776
                                      human fly
                                      Participant
                                        • Topics: 124
                                        • Replies: 1070
                                        • Total: 1194
                                        • ★★★★

                                        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?

                                        human fly
                                        Participant
                                          • Topics: 124
                                          • Replies: 1070
                                          • Total: 1194
                                          • ★★★★

                                          i 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.

                                          human fly
                                          Participant
                                            • Topics: 124
                                            • Replies: 1070
                                            • Total: 1194
                                            • ★★★★

                                            would 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.

                                          Viewing 20 results - 41 through 60 (of 278 total)
                                          Ctrlr