Ensoniq ESQ1 Panel – work commenced!

Home Forums General Panels, Components, Macros Ensoniq ESQ1 Panel – work commenced!

Tagged: 

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #50207
    jasefos
    Participant
      • Topics: 13
      • Replies: 76
      • Total: 89

      Got my nerd-on this weekend. I recently bought a Ensoniq ESQ1 in not-working condition for a few hundred AUD. Well, after fitting a replacement PSU board and re-seating the CPU in its socket it is now working! Here is an early screenshot of the CTRLR Panel I have started building for it. When I’ve finished it I’ll share it with the community.

      One question for those skilled in LUA script.

      I’ve implemented the panel so far largely with NRPN controls using a Multi CC message (CC 98 MSB, CC 98 LSB to pick the parameter and then CC 6 to adjust). If I tweak the parameters too quickly the ESQ1 takes a while to deal process the incoming traffic and will sometimes crash. I figure once a parameter is selected via CC 98 then CC 99, then repeated edits to the same parameter will require only CC 6 to be sent.

      I had a little look at the SQ80 editor someone else made (sadly it isn’t compatible with the parameter layout of the ESQ1) and it would appear the author has overcome this issue by only sending CC 6 and making attaching a MouseOver method to trigger sending CC 98 and CC 99 to select the parameter. While this seems like a good method I don’t plan to always edit the synth via the mouse but rather from my Push controller and sending automation data from Ableton clips.

      So LUA heads … I had a thought. Is it possible to attach a LUA method to my panel which looks for successive CC 98 and CC 98 bytes in the MIDI stream for the SAME parameter and filter them out? I’m guessing this is possible however would love to see a code example on how to accomplish this.

      Cheers!

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

      --> Music: www.soundcloud.com/jasefos
      --> DAW: OSX10.10.5 with Live 9.6 x64, UA Apollo Quad
      --> Controllers: Push 2, KeyLab61, Maschine mk2, MCU Pro, 2xMCU-Ext
      --> Synths: Cyclone Bass Bot TT303, ESQ1, MKS80/MPG80, Matrix 6R, Matrix1000, Mopho, 05RW, DW8000, Virus TI Polar, Voyager Electric Blue, MiniBrute, AN1X, K5000s, FIZMO, ASR10 rack, Kenton ProSolo (controls Sequential Pro-One, Yamaha CS15), Prophecy, EMX1, MonoTribe, SP1200, DX100, KARP Odyssey

      #50213
      dasfaker
      Keymaster
        • Topics: 80
        • Replies: 793
        • Total: 873
        • ★★★

        I had a similar problem with a Yamaha SY35, this synth only send and receive the whole patch, not individual parameter changes, so every element of the panel, instead of sending it’s value, writes it in a memoryblock that is later sent to the synth. Imagine what happens with a a rapid fader movement from the panel.

        I solved this by adding a timer that sends the memoryBlock with a 100 ms interval.

        function sendDump()
        
        	if timer:isTimerRunning(19) == false then
        
        		timer:setCallback (19, timerSendDump)
        		timer:startTimer(19,100)
        	end
        
        	sendingDump = 1
        end
        function timerSendDump (timerId)
        
        	m = CtrlrMidiMessage(bufferPatchSyx)
        	panel:sendMidiMessageNow(m)
        
        	if sendingDump == 1 then
        
        		sendingDump = 0
        		timer:stopTimer(19)
        	end
         end
        #50250
        pascalc
        Participant
          • Topics: 7
          • Replies: 27
          • Total: 34

          Hi,

          I have started working on this panel as well. It is pretty much done except that the GUI isn’t that beautiful.

          Would you be interested in cooperating around this panel?

          You can find my version here: https://github.com/locurasoft/Panels/tree/master/pascalc

          BR
          /Pascal

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

            Jase,

            I’m looking at doing a similar, but much more complicated running status method.

            My approach is going to be to save the last message sent, and if the current one is the same message “type”, just send the changing status bytes.

            You could do a similar thing with your panel. Basically for all the NRPN knobs, save the last message sent as a variable, or possibly last ctrlr slider moved. onValueChange for the controller, have a little logic test. If the current control is the same as the last, just send the data message, otherwise send the NRPN headers.

            To send a message from LUA, this code will help (thanks to DasFaker)

            
            m = CtrlrMidiMessage({0xb0, 0x6e, 0x02})
            panel:sendMidiMessageNow(m)
            m = CtrlrMidiMessage({0xb0, 0x6f, panel:getModulatorByName("AEnvA1TLayer":getValue()})
            panel:sendMidiMessageNow(m)
            

            With NRPN’s I think you need to send messages to indicate that you’ve finished with the NRPN (so inadvertent data slider messages don’t change stuff you aren’t planning to), so you may need to incorporate this into sending the NRPN headers.

            • This reply was modified 8 years, 10 months ago by Puppeteer.

            The Puppeteer
            http://godlike.com.au

            #50785
            jasefos
            Participant
              • Topics: 13
              • Replies: 76
              • Total: 89

              Heya Puppeteer,

              Thanks for chiming in and offering your expertise with LUA (I am a long way from getting to grips with LUA).

              Your logic is completely sound … from a ‘human’ logic POV, the problem seems simple enough to solve. I was thinking along the lines of hooking a LUA method to the overall panel which is triggered whenever the panel sends MIDI data to the device which filters out redundant (repeated) NRPN headers where the header component is the same (i.e. same parameter selected across the CC98, C98) and just allows the CC6 data to emerge. Just not sure at this stage how to accomplish this – I need to learn LUA from scratch.
              ; )

              I have no doubt your Kurz PC3 panel will have some epic functionality implemented!

              Cheers!

              --> Music: www.soundcloud.com/jasefos
              --> DAW: OSX10.10.5 with Live 9.6 x64, UA Apollo Quad
              --> Controllers: Push 2, KeyLab61, Maschine mk2, MCU Pro, 2xMCU-Ext
              --> Synths: Cyclone Bass Bot TT303, ESQ1, MKS80/MPG80, Matrix 6R, Matrix1000, Mopho, 05RW, DW8000, Virus TI Polar, Voyager Electric Blue, MiniBrute, AN1X, K5000s, FIZMO, ASR10 rack, Kenton ProSolo (controls Sequential Pro-One, Yamaha CS15), Prophecy, EMX1, MonoTribe, SP1200, DX100, KARP Odyssey

              #50868
              jasefos
              Participant
                • Topics: 13
                • Replies: 76
                • Total: 89

                Hi Pascal,

                Keen to collab of course … Can you attach the panel you have in progress so far to this thread? I can’t download properly from your Github link.

                CheerS!

                --> Music: www.soundcloud.com/jasefos
                --> DAW: OSX10.10.5 with Live 9.6 x64, UA Apollo Quad
                --> Controllers: Push 2, KeyLab61, Maschine mk2, MCU Pro, 2xMCU-Ext
                --> Synths: Cyclone Bass Bot TT303, ESQ1, MKS80/MPG80, Matrix 6R, Matrix1000, Mopho, 05RW, DW8000, Virus TI Polar, Voyager Electric Blue, MiniBrute, AN1X, K5000s, FIZMO, ASR10 rack, Kenton ProSolo (controls Sequential Pro-One, Yamaha CS15), Prophecy, EMX1, MonoTribe, SP1200, DX100, KARP Odyssey

                #50920
                pascalc
                Participant
                  • Topics: 7
                  • Replies: 27
                  • Total: 34

                  Hi,

                  Here’s my version of the panel. It is based on the driver in jSynthlib, another midi synth controller.

                  BR
                  /Pascal

                  Attachments:
                  You must be logged in to view attached files.
                  #51274
                  jasefos
                  Participant
                    • Topics: 13
                    • Replies: 76
                    • Total: 89

                    OK ladies and gentlemen, here is where I’m at so far … LOADS more work to go however it currently functions perfectly was as a one-way editor and snapshot firer to the ESQ1 and works fine with mine (updated the EEPROM to software version 3.50 however it should work fine with previous versions).

                    I’ll release a series of ‘alpha’ builds on this thread before publishing something resembling ‘finished’ properly on the downloads page of CTRLR.org.

                    Keen for any input, particularly those with great LUA skills, since I’m great at the graphics and GUI design aspects, OK with the MIDI side of things but I lack skill with LUA which I’ll get into when time permits.

                    Anyway, attached is the Panel so far with graphic resources packed in the .Bpanelz file.

                    Things I want to do next:

                    1) Filtering out redundant NRPRN header messages to prevent ESQ1 from crashing when fed too many rapid tweaks (requires LUA skills). With the version here, tweak with care otherwise your ESQ1 will freeze if you tweak fast. I’ve set sensible ‘double click’ defaults for most parameters. I’ve had much success using my mouse’s scroll wheel for tweaking the controls and currently I recommend you do the same.

                    2) Realtime rendered overlapped graphic display of envelopes since the ESQ1 sports 4 envelopes. Not draggable nodes but more so a visualisation like I’ve seen some others do here recently (That MKS70/JX10 Panel looks sensational and will be adapting the envelope code from that or using it as a learning example).

                    3) SysEx single patch dumps back and forth and parsing the dumps to map to modulators.

                    4) Patch Randomiser.

                    5) Implement Layers/Splits functions.

                    6) Ability to name programs created and zap them back into the synth.

                    7) Supporting 8 way Multi-timbral use of ESQ1 withIN a single CTRLR instance.

                    Anyhow, any of you people out there lucky enough to have an Ensoniq ESQ1 – enjoy the beginnings of my panel project.

                    Cheers!

                    • This reply was modified 8 years, 10 months ago by jasefos.
                    Attachments:
                    You must be logged in to view attached files.

                    --> Music: www.soundcloud.com/jasefos
                    --> DAW: OSX10.10.5 with Live 9.6 x64, UA Apollo Quad
                    --> Controllers: Push 2, KeyLab61, Maschine mk2, MCU Pro, 2xMCU-Ext
                    --> Synths: Cyclone Bass Bot TT303, ESQ1, MKS80/MPG80, Matrix 6R, Matrix1000, Mopho, 05RW, DW8000, Virus TI Polar, Voyager Electric Blue, MiniBrute, AN1X, K5000s, FIZMO, ASR10 rack, Kenton ProSolo (controls Sequential Pro-One, Yamaha CS15), Prophecy, EMX1, MonoTribe, SP1200, DX100, KARP Odyssey

                    #51748
                    badmind36
                    Participant
                      • Topics: 0
                      • Replies: 1
                      • Total: 1

                      You guys are awesome, hope this continues to develop! Thanks Jase!!!

                      #52474
                      spacelordmother
                      Participant
                        • Topics: 0
                        • Replies: 1
                        • Total: 1

                        Ditto — looking forward to this. Thanks for all the hard work!

                        #52672
                        jasefos
                        Participant
                          • Topics: 13
                          • Replies: 76
                          • Total: 89

                          Just serving my own needs in the studio and sharing the fruit – but nice to hear others appreciate it.

                          http://ctrlr.org/ensoniq-esq1-one-way-editor/

                          • This reply was modified 8 years, 9 months ago by jasefos.

                          --> Music: www.soundcloud.com/jasefos
                          --> DAW: OSX10.10.5 with Live 9.6 x64, UA Apollo Quad
                          --> Controllers: Push 2, KeyLab61, Maschine mk2, MCU Pro, 2xMCU-Ext
                          --> Synths: Cyclone Bass Bot TT303, ESQ1, MKS80/MPG80, Matrix 6R, Matrix1000, Mopho, 05RW, DW8000, Virus TI Polar, Voyager Electric Blue, MiniBrute, AN1X, K5000s, FIZMO, ASR10 rack, Kenton ProSolo (controls Sequential Pro-One, Yamaha CS15), Prophecy, EMX1, MonoTribe, SP1200, DX100, KARP Odyssey

                          #58667
                          mckayallday
                          Participant
                            • Topics: 1
                            • Replies: 8
                            • Total: 9

                            Ooooh yeah, this is great. I look forward to being able to leave my ESQ in one spot and edit while playing another controller keyboard and working in my DAW. Thanks, all!

                          Viewing 12 posts - 1 through 12 (of 12 total)
                          • The forum ‘Panels, Components, Macros’ is closed to new topics and replies.
                          There is currently 0 users and 86 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