Create NRPN where first message is different than the rest

Home Forums General Programming Create NRPN where first message is different than the rest

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #71736
    carillonaudioblog
    Participant
      • Topics: 6
      • Replies: 9
      • Total: 15

      Hello,

      I have an odd question because I am working on an odd synth. I have an Ensoniq ESQ-1 and it uses NRPN messages. It only allows one parameter to be changed at a time. When you send a large amount of NRPN changes or more than one at a time it seems to freeze up.

      The SQ80 panel posted here gets around this by sending the CC99 and CC98 messages when you hover your mouse over a knob, then only sends CC6 with the appropriate value as you move the knob.

      I am wondering if it is possible for the knob itself to send a single message with the CC99 and CC98 messages the first time that it is adjusted, but each consecutive value only sends CC6 values until another knob is adjusted. That knob would then send its CC99 and CC98 message to define which parameter is being adjusted and only send CC6 value updates. etc.

      The SQ80 editor works great, but not with a midi controller. You need to use a mouse, and I would much prefer to use actual midi CC knobs, or my Ableton Push, and they don’t work with the editor, and my editor crashes the synth when I spin knobs…

      Any help would be appreciated.

      Thanks,
      Nick

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

        THE way – i think – this is normally dealt with is that an NRPN Null
        message is sent at the end. don’t ask me how it is done, haha, i’ve
        only gleaned this reading up on NRPNs over time !

        i have a feeling that the Novation Remote, for example, which has
        a dedicated NRPN mode, must do this,
        ie: for each message sent, there is a NRPN Null at the end.

        otherwise, say you send another data#6 message – or say you post-edit
        your MIDI file, and accidentally chop out the 98/99 and NRPN number,
        and copy that bit to another place in your track, you could end up
        sending the CC#6 to the wrong parameter – that kind of thing.

        is this not handled in the ESQ panel? it’s pretty well made.
        i think the box for it would be the Multi Message List, and
        maybe if you add whatever ‘Null’ is there, at the end, it could
        do it? try it, with midiox open – before and after – to see what
        is being sent. i think it would probably only be 1 or 2 more bytes,
        added to each value change. if you do it like that, you ‘wrap’ each
        value step so that it always belongs to the parameter you want, and
        the next parameter you go to is kept separate..
        ???
        could work… :o)

        #71756
        carillonaudioblog
        Participant
          • Topics: 6
          • Replies: 9
          • Total: 15

          Thanks. I’ll look into that.
          The ESQ-1 panel crashes the synth if you move parameters too quick whereas the SQ-80 works but only with the mouse. I can’t midi map it to a knob controller. When I look at the SQ-80 panel messages, it just sends CC99 and CC98 once, then a string of CC6 messages until you choose another knob.
          Ideally there is a way to do that with a single slider/knob.

          Any help is appreciated.

          Thanks again.

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

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

              You’ll need to do this with LUA, where you check if you are using a different slider and if you are send the ID message before the value change message, otherwise just send the value message.

              I’m facing a similar problem with the Jupiter 8. I’m going to build a method that sends out the latest values as a dump at a maximum rate, probably around 100ms depending on what the processor can handle.

              The Puppeteer
              http://godlike.com.au

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

                #93665
                john1964
                Participant
                  • Topics: 0
                  • Replies: 2
                  • Total: 2

                  Hi, I have an ensoniq esq1 as well and have been looking into this too and searched the forum on NRPN messages. Now here is what I have found.
                  The esq can’t handle big data streams very well with NRPN. It will crash immediately when you turn a knob in ctrlr. In the past several editor manufacturers had different ways to handle this. I have checked this with midiquest and it turns out they are using the data increment buttons to get around this problem. However, this makes the editor very slow. One little movement on fader or button will generate a long list of midi messages, which are probably timed as well so the esq doesn’t crash.
                  Now I,ve also checked out the iPad version of this editor in trail mode, and this is working very smooth ( without the flickering vid display on the esq) so I analyzed the messages from this app. It turns out that they only send out the lsb and msb once and then a continuous string of cc6 messages. This works very fast and smoothly. However currently we can’t do this without using Luna in ctrlr and the people behind Luna seem to be against using such a method because it’s not the right way to do it. But it’s the only way to handle old synths from the time that a z80 processor was called a personal computer . I would love to be able to have the option to use this method optionally in ctrlr, and not have to deal with workarounds like the sq80 method.

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

                    are you talking about Lua?

                    the ESQ1 should be able to receive MIDI CC messages correctly, so it shouldn’t have
                    a problem receiving Data/CC#6.

                    NRPN just sets up a target parameter, and then you send data to that. the assigned
                    controller will continue sending midiCC#6 messages to that target until you specify
                    another one – or use a Null message to deactivate it.

                    at least that’s how i understand it. (i never use NRPN …)
                    should be possible with Lua – and you can set up timers if you need to make something wait.

                    #93678
                    john1964
                    Participant
                      • Topics: 0
                      • Replies: 2
                      • Total: 2

                      Apples autocorrect, yes Lua of course
                      In ctrlr msb and lsb are being sent with each value if you set the control as NRPN and use the predefined message. The esq is happy with all the cc6’s coming in but it hates to process the msb and lsb coming in at high rates

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

                        this is where i am not 100% about NRPN.
                        i have a feeling you only need to send the msb/lsb stuff once,
                        to specify the target, and then the data#6s will go to that.

                        but i’m not sure. it really is a nightmare protocol.

                        does the ESQ1 not receive sysex ? i find sysex so much more straightforward,
                        and it works(!) – although it is not much good in large amounts for realtime.

                        have you had success changing parameters so far with NRPN ?
                        i mean, have you sent at least one parameter change successfully ?

                        i would really like some clarification, personally, on this, from
                        someone who’s used it a lot.

                      Viewing 10 posts - 1 through 10 (of 10 total)
                      • The forum ‘Programming’ is closed to new topics and replies.
                      There is currently 0 users and 57 guests online
                      No users are currently active
                      Forum Statistics
                      Threads: 2,495, Posts: 17,374, Members: 77,605
                      Most users ever online was 12 on January 22, 2019 3:47 pm
                      Ctrlr