dnaldoog

Forum Replies Created

Viewing 20 posts - 61 through 80 (of 480 total)
  • Author
    Posts
  • in reply to: Looking for the basic sysex receive/send panel #119822
    dnaldoog
    Participant
      • Topics: 4
      • Replies: 480
      • Total: 484
      • ★★

      Hi Tedjuh and Samoht,

      Great to hear!

      I am now working on a super minimalist version using uiComponent. Stay posted!


      @samoht
      — not familiar with the U-220

      @tedjuh
      — I renamed it LOAD FILE. That works?

      Regards,

      in reply to: Looking for the basic sysex receive/send panel #119816
      dnaldoog
      Participant
        • Topics: 4
        • Replies: 480
        • Total: 484
        • ★★

        Thanks Thomas for the nice compliment.

        Well the problem there as I see it, is as soon as you start implementing too many customisation options, it is taking away from the simplicity of the original idea. I know that a Roland JD-990 dump is sent back exactly the same and the OP’s (Synthtoast’s) synth too. That’s the beauty of it; I don’t even know what synth he’s running these dump requests on; but … if you wanted to customise it for that Roland (Which model is it? I take it your Roland unit changes its header and therefore checksum when re-uploading?) then this would offer a good template and we all know how complex stuff gets as you start introducing more options to a panel. Stuff starts breaking everywhere. This one is on the border of that, but still simple enough I suppose!

        in reply to: Looking for the basic sysex receive/send panel #119811
        dnaldoog
        Participant
          • Topics: 4
          • Replies: 480
          • Total: 484
          • ★★

          Hey Tedjuh!

          Well this panel can open a .syx file, which can then be uploaded. So yes, it can both save and load to/from file. That’s the LOAD SYSEX TO PANEL button – maybe that could be re-worded?

          Regards,

          • This reply was modified 3 years, 7 months ago by dnaldoog.
          in reply to: Looking for the basic sysex receive/send panel #119808
          dnaldoog
          Participant
            • Topics: 4
            • Replies: 480
            • Total: 484
            • ★★

            I’m back!

            Here is another refinement to the previous panel. I realised you really need to be able to switch recording off, otherwise any subsequent Sysex will keep getting added to the dump/snapshot you want to save, so this version has a record/stop button.

            Let me know if this one works well and I will probably release it as a panel. I haven’t fully fully tested it and it is getting more complex code-wise, which means problems could start creeping in.

            Of course this panel should be used with Windows 5.3.201 and presumably MacOS 5.3.198

            Regards,
            John

            GSDR 1.3

            Attachments:
            You must be logged in to view attached files.
            in reply to: Looking for the basic sysex receive/send panel #119787
            dnaldoog
            Participant
              • Topics: 4
              • Replies: 480
              • Total: 484
              • ★★

              This is a new version that should now be able to save sysex across sessions!


              dump me panel version 1.2 beta with load/save state functionality

              Attachments:
              You must be logged in to view attached files.
              in reply to: Looking for the basic sysex receive/send panel #119767
              dnaldoog
              Participant
                • Topics: 4
                • Replies: 480
                • Total: 484
                • ★★

                Thanks Goodweather! ‘?


                Here’s another one that includes an extra dump request field for synths that require a sysex request message be sent. Version 1.1 alpha

                dump me panel

                • This reply was modified 3 years, 7 months ago by dnaldoog. Reason: bulk dump
                • This reply was modified 3 years, 7 months ago by dnaldoog.
                Attachments:
                You must be logged in to view attached files.
                in reply to: Looking for the basic sysex receive/send panel #119764
                dnaldoog
                Participant
                  • Topics: 4
                  • Replies: 480
                  • Total: 484
                  • ★★

                  Great Synthtoast,

                  I think I forgot to attach the actual panel though! (Should be there now!)

                  ?

                  in reply to: Looking for the basic sysex receive/send panel #119758
                  dnaldoog
                  Participant
                    • Topics: 4
                    • Replies: 480
                    • Total: 484
                    • ★★

                    I thought that was an interesting idea, so I put together a quick panel to do that.
                    If it works, let me know and I might refine it and release it as a panel.

                    This panel automatically receives any sysex messages and those messages can then be saved to PC and resent to the machine.

                    Regards,

                    agnostic sysex dump panel

                    Attachments:
                    You must be logged in to view attached files.
                    in reply to: On/Off button: 1 goes on, the other goes off #119755
                    dnaldoog
                    Participant
                      • Topics: 4
                      • Replies: 480
                      • Total: 484
                      • ★★

                      Hi BAUS,

                      You would need to remove all the sysex code from Ctrlr MIDI message type field – set to None and send the sysex all from lua.

                      
                      ProgramSelect = function(--[[ CtrlrModulator --]] mod --[[ number --]], value --[[ number --]], source)
                          if source == 4 then
                              local sName = L(mod:getName())
                      
                              local t = {"PROGRAM01", "PROGRAM02", "PROGRAM03", "PROGRAM04", "PROGRAM05", "PROGRAM06", "PROGRAM07", "PROGRAM08", "PROGRAM09", "PROGRAM10", "PROGRAM11", "PROGRAM12", "PROGRAM13", "PROGRAM14", "PROGRAM15", "PROGRAM16", "PROGRAM17", "PROGRAM18", "PROGRAM19", "PROGRAM20", "PROGRAM21", "PROGRAM22", "PROGRAM23", "PROGRAM24", "PROGRAM25", "PROGRAM26", "PROGRAM27", "PROGRAM28", "PROGRAM29", "PROGRAM30", "PROGRAM31", "PROGRAM32"} -- local table of buttons in radio
                      
                              for i, v in pairs(t) do
                                  if sName == v then
                      				local sysMess=string.format("F0 00 00 23 01 43 C1 00 %.2X F7",i-1)
                      				panel:sendMidiMessageNow(CtrlrMidiMessage(sysMess))
                                  else
                                      _G[v]:setValue(0, true)
                                  end -- fi
                              end -- for
                          end -- source == 4 (user clicked on a button - not lua generated - that would be 5 or 6)
                      end
                      

                      Regards,

                      in reply to: Help with getting the hang of lua+ ctrlr #119668
                      dnaldoog
                      Participant
                        • Topics: 4
                        • Replies: 480
                        • Total: 484
                        • ★★

                        Hi Jsh,

                        You are casting a number as a string then assigning it to the table, when in fact it’s already a number.

                        The two character hex form is just a printing convention for a number, not the number itself if that makes sense.

                        local portaVal = tostring(string.format(“%.2X”, portaValRaw))

                        Should be:

                        
                        myMethod = function(--[[ CtrlrMidiMessage --]] midi)
                        	local msgSize = midi:getSize()
                        	if msgSize == 1179 then -- If message is program dump
                        		local portaValRaw = panel:getModulatorByName("Portamento"):getModulatorValue()
                        		progDump = {}
                        		midi:getData():toLuaTable(progDump)
                        		progDump[28] = portaValRaw
                        		progDumpMsg = CtrlrMidiMessage(progDump)
                        		panel:sendMidiMessageNow(progDumpMsg)
                        	end
                        end
                        
                        
                        • This reply was modified 3 years, 8 months ago by dnaldoog.
                        in reply to: Help with getting the hang of lua+ ctrlr #119658
                        dnaldoog
                        Participant
                          • Topics: 4
                          • Replies: 480
                          • Total: 484
                          • ★★

                          Hi there Jsh,

                          See here for a way of doing this .

                          You can also convert midi:getData() to a lua table using:

                          
                          t={}
                          midi:getData():toLuaTable(t)
                          

                          You could then modify the contents of the table and repack as a MemoryBlock and resend to the Synth: … or send the table as you did!

                          
                          m=MemoryBlock()
                          m:createFromTable(t)
                          panel:sendMidiMessageNow(CtrlrMidiMessage(m:toHexString(1)))
                          

                          or

                          
                          panel:sendMidiMessageNow(CtrlrMidiMessage(t))
                          

                          The other option would be to work solely with MemoryBlocks:

                          Regards,

                          ?

                          • This reply was modified 3 years, 8 months ago by dnaldoog. Reason: replied to post in future but didn't create new post
                          in reply to: Novation Bass Station 2 Panel #119644
                          dnaldoog
                          Participant
                            • Topics: 4
                            • Replies: 480
                            • Total: 484
                            • ★★

                            Thanks An0n3mau5 – Good luck with your journey into lua. I think it’s an amazing language and you will find Ctrlr is an amazing program as you get to know it. ?

                            in reply to: Novation Bass Station 2 Panel #119637
                            dnaldoog
                            Participant
                              • Topics: 4
                              • Replies: 480
                              • Total: 484
                              • ★★

                              You’ll be getting into lua territory there for sure. To disable a control on the interface, you would need a method like:

                              panel:getComponent("pulse_width_control"):setEnabled(false) or setEnabled(true)

                              Changing a single uiSlider or uiFixedSlider’s MULTI message to NRPN and back again is possible, but a bit complex. Instead you could create to different buttons in different layers that sit in the same position, but even that is a little complex.

                              Goodweather’s DS2 panel is a popular one for learning from, but it’s pretty complex.
                              My JD-990 panel uses layers, so that is a good reference for learning how to do it that way, or maybe start with some simpler panels first?

                              When I first got started, I studied this panel: ctrlr.org/akai-sg01v-panel/

                              ?

                              in reply to: Exporting more than 64 parameters #119635
                              dnaldoog
                              Participant
                                • Topics: 4
                                • Replies: 480
                                • Total: 484
                                • ★★

                                I found that in Reaper 32bit version when importing a .panel file into the VST instance of Ctrlr, only 64 VST indexes showed, but when I exported the panel as restricted instance .dll and then opened it in Reaper as a VST it showed all the VST indexes I had assigned.

                                in reply to: Novation Bass Station 2 Panel #119634
                                dnaldoog
                                Participant
                                  • Topics: 4
                                  • Replies: 480
                                  • Total: 484
                                  • ★★

                                  Very interesting – it’s a strange beast indeed that synth!

                                  Well done working that one out!

                                  Strange that Ctrlr isn’t working on Windows 10 with 5.3.201!

                                  ?

                                  in reply to: Novation Bass Station 2 Panel #119620
                                  dnaldoog
                                  Participant
                                    • Topics: 4
                                    • Replies: 480
                                    • Total: 484
                                    • ★★

                                    Hi An0n3mau5,

                                    I checked the panel I sent you. It is working fine for me. What OS and version of Ctrlr are you using?

                                    Also in the manual I see osc 1 coarse cc 27:59 -12. to 12. What does the MIDI out message look like?

                                    Is that supposed to read osc 1 coarse cc 27:59 -120 to 120

                                    If so, using a uiSlider, you would just make modulatorMin=-120 modulatorMax=120 with expression:

                                    (modulatorValue+120)*64

                                    
                                    CC,ByteValue,MSB7bitValue,27,-1
                                    CC,ByteValue,LSB7bitValue,59,-1
                                    

                                    Does that work?

                                    See attached panel: ✨

                                    Bass Station II OSC1 Coarse

                                    Attachments:
                                    You must be logged in to view attached files.
                                    in reply to: On/Off button: 1 goes on, the other goes off #119612
                                    dnaldoog
                                    Participant
                                      • Topics: 4
                                      • Replies: 480
                                      • Total: 484
                                      • ★★

                                      Hi Robin,

                                      All you should have to do is add the 32 button names to the local table in the init function, but don’t change the if source == 4 part. That’s crucial that it be left in there otherwise you’ll get an infinite loop and crash Ctrlr.

                                      You would then need to add 32 modulator names to the initial script.

                                      There is a more elegant way to do this. In the init script each button is assigned to a variable, which is then accessed instead of panel:getModulatorByName() in the function loop. See attached panel

                                      Regards,

                                      ?

                                      Attachments:
                                      You must be logged in to view attached files.
                                      in reply to: On/Off button: 1 goes on, the other goes off #119594
                                      dnaldoog
                                      Participant
                                        • Topics: 4
                                        • Replies: 480
                                        • Total: 484
                                        • ★★

                                        Hi Robin,

                                        I think for me to offer an answer I would have to see your work so far.

                                        If you don’t want to make it public, send me a private message and I’ll send you my email address then you can send it as an attachment.

                                        Regards,

                                        John

                                        in reply to: Novation Bass Station 2 Panel #119592
                                        dnaldoog
                                        Participant
                                          • Topics: 4
                                          • Replies: 480
                                          • Total: 484
                                          • ★★
                                          Hi An0n3mau5,

                                          In reply to your message, which was probably under moderation due to containing a url in it, no one would be expected to immediately grasp what was going on with Novation’s implementation there of left bit shifting every value 6 places (multiplying by 64). There’s no explanation in the manual! Usually an explanation is there, but hard to understand, like Roland’s perennial explanation of Checksum calculation which is confusing, but at least they offer an explanation. But once you know, it seems easy, but isn’t that life?

                                          Here is another panel, this time using Possemo’s uiFixedSlider solution as well as my original lua solution plus a new lua function that uses the JUCE class BigInteger() for your perusal. It is much similar and basically just emulates the Ctrlr way!

                                          It has been very interesting seeing an answer to this emerge! In the end the best most elegant solution supplied by Possemo, seems simple in hindsight. Great thing – hindsight.

                                          
                                          lfo_new = function(--[[ CtrlrModulator --]] mod, --[[ number --]] value, --[[ number --]] source)
                                          local mValue=mod:getValueMapped()
                                              local channelOut = panel:getProperty("panelMidiOutputChannelDevice")
                                              local statusByte = 0xb0 + (channelOut - 1) -- use this code for dynamic channel changes
                                          
                                          local bi=BigInteger(mValue)
                                          local msb7=bi:getBitRangeAsInt(7,14)
                                          local lsb7=bi:getBitRangeAsInt(0,7)
                                          
                                                  local mb= CtrlrMidiMessage({statusByte, 17, msb7})
                                                  panel:sendMidiMessageNow(mb)
                                          
                                                  local lb= CtrlrMidiMessage({statusByte, 49 ,lsb7})
                                                  panel:sendMidiMessageNow(lb)
                                          
                                          end
                                          

                                          ?

                                          • This reply was modified 3 years, 8 months ago by dnaldoog. Reason: added BigInteger() lua function
                                          • This reply was modified 3 years, 8 months ago by dnaldoog. Reason: added extra message in reply to a message that was under moderation
                                          Attachments:
                                          You must be logged in to view attached files.
                                          in reply to: Novation Bass Station 2 Panel #119578
                                          dnaldoog
                                          Participant
                                            • Topics: 4
                                            • Replies: 480
                                            • Total: 484
                                            • ★★

                                            I had to stare at Possemo’s suggestion for a long time, before I understood it! Brilliant!

                                            Does this work? No lua, just

                                            
                                            CC,ByteValue,MSB7bitValue,18,-1
                                            CC,ByteValue,LSB7bitValue,50,-1
                                            

                                            with

                                            (modulatorValue+128)*64

                                            in the expression field and no uiFixedSlider necessary.

                                            Attachments:
                                            You must be logged in to view attached files.
                                          Viewing 20 posts - 61 through 80 (of 480 total)
                                          Ctrlr