Carl Licroy

Forum Replies Created

Viewing 20 posts - 1 through 20 (of 28 total)
  • Author
    Posts
  • in reply to: Slim 'XTC voice browser. #70488
    Carl Licroy
    Participant
      • Topics: 3
      • Replies: 28
      • Total: 31

      Hello,

      This is an hardware limitation : voice browser knob does not send or receive any midi message. The only way is actually to turn the knob manually.

      in reply to: Moog Sub37 panel #68918
      Carl Licroy
      Participant
        • Topics: 3
        • Replies: 28
        • Total: 31

        Finally I’ve finished and uploaded my panel for the Slim Phatty. Was pretty hard to code… These are some informations who can help those who want to create panels for moog’s devices (but can be different according to each device) :

        1) Every rotary knob value is inverted so you have to convert the binary to replace all 1 by 0 and all 0 by 1. They are coded on 14 bits which means values from 0 to 16383. But Moog’s range is 0 – 4095. So we have to convert values with this formula : (14bitsvalue – 3) / 4

        2) These are the 73 characters recognized by the slim phatty (without []) :
        [ ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz!#$%&()*?@]
        Slim Phatty don’t use ascii number, characters have a number starting from 0 (for space) to 72 (for @).

        Hope this helps.

        in reply to: Ctrlr vsti sends midi messages twice #68903
        Carl Licroy
        Participant
          • Topics: 3
          • Replies: 28
          • Total: 31

          Hi Possemo!

          I’ve experienced the same behaviour with CTRLR, that’s why when I load a panel, I only setup midi “Input” and “Output” and let “Controller” set to “none”.

          in reply to: prophet 8 #68884
          Carl Licroy
          Participant
            • Topics: 3
            • Replies: 28
            • Total: 31

            Hi Jerome!

            A new version is available and you can copy or reset layers. 😉

            Hope you like it.

            in reply to: Moog Sub37 panel #68838
            Carl Licroy
            Participant
              • Topics: 3
              • Replies: 28
              • Total: 31

              Thanks that’s interesting! I’m using sysex messages that’s why I have to create this code… Don’t you experience midi overload with NRPN if you have a method which sends a lot of parameters to the synth?

              in reply to: Moog Sub37 panel #68834
              Carl Licroy
              Participant
                • Topics: 3
                • Replies: 28
                • Total: 31

                Hi goodweather!

                Working on next version of POWER08 editor I found the way to create a fully bidirectionnal panel with nrpn parameters.

                The P8 send 4 nrpn messages each time a value change when you move a knob :
                RAW:[b0 63 00]
                RAW:[b0 62 03]
                RAW:[b0 06 00]
                RAW:[b0 26 4b]

                First byte (b0) is for control change. Second byte is for NRPN message type (you can find it in the DSI manual) :
                63 : parameter number msb
                62 : parameter number lsb
                06 : parameter value msb
                26 : parameter value lsb

                The third byte is for the values.

                So I introduce this code in my MidiMessageReceive function and it works (s refers to the size of the midi message) :

                if s == 3 then
                	
                -- Check NRPN message type
                NRPN = data:getByte(1)
                NRPN = string.format("%.2x", NRPN)
                --console ("NRPN: "..NRPN)
                	
                if NRPN == "63" then
                	-- store parameter number MSB
                	parameterMSB = data:getByte(2)
                	parameterMSB = string.format("%.2x", parameterMSB)
                end
                
                if NRPN == "62" then
                	-- store parameter number LSB
                	parameterLSB = data:getByte(2)
                	parameterLSB = string.format("%.2x", parameterLSB)
                end
                
                if NRPN == "06" then
                	-- store parameter value MSB
                	valueMSB = data:getByte(2)
                	valueMSB = string.format("%.2x", valueMSB)
                end
                
                if NRPN == "26" then
                	-- store parameter value LSB
                	valueLSB = data:getByte(2)
                	valueLSB = string.format("%.2x", valueLSB)
                
                        if parameterMSB ~= nil and parameterLSB ~= nil and valueMSB ~= nil then
                
                		-- retreive NRPN parameter number
                		if parameterMSB == "00" then
                			parameterNumber = tonumber(parameterLSB,16)
                			--console("parameterNumber: "..parameterNumber)
                		end
                		if parameterMSB == "01" then
                			parameterNumber = tonumber(parameterLSB,16) + 128
                			--console("parameterNumber: "..parameterNumber)
                		end
                
                		-- retreive NRPN value
                		if valueMSB == "00" then
                			parameterValue = tonumber(valueLSB,16)
                			--console("parameterValue: "..parameterValue)
                		end
                		if valueMSB == "01" then
                			parameterValue = tonumber(valueLSB,16) + 128
                			--console("parameterValue: "..parameterValue)
                		end
                
                		-- update modulator value
                		if parameterNumber == 0 then
                					  panel:getModulatorByName("LAYERA_OSC1_Freq"):setModulatorValue(parameterValue, false, false, false)
                				end
                				
                			else
                				return
                			end

                This example has only one modulator. I’m currently adding the others, but it takes time (about 400 parameters on the P8…). I will upload the new version as soon as I have finished this part.

                Carl Licroy
                Participant
                  • Topics: 3
                  • Replies: 28
                  • Total: 31

                  Hi goodweather!

                  Maybe a solution is to create a variable when your method starts like

                  process = "doubleclick"

                  Or

                  process = "singleclick"

                  Then you can test the value of your variable in your methods.

                  if process == doubleclick then
                      -- your code here
                  end
                  in reply to: Listbox not reacting on "Called when a mouse is down" #68758
                  Carl Licroy
                  Participant
                    • Topics: 3
                    • Replies: 28
                    • Total: 31

                    I’ve already experienced similar bugs in previous Mac builds. Event launchers sometimes work, sometimes not. Maybe it’s not a JUCE limitation but just a bug during Mac build compilation. It’s sad that Atom didn’t get enough donations to buy a Mac because it would be easier for him to test it.

                    I’m also interested by the combination between CTRLR and JUCE because VST exportation makes big sized files (around 40 Mo) and I would like to find a way to make it lighter, with only the code needed (without editing function of CTRLR).

                    in reply to: Moog Sub37 panel #68545
                    Carl Licroy
                    Participant
                      • Topics: 3
                      • Replies: 28
                      • Total: 31

                      Thanks!

                      Graphs are a good idea and your help is welcome. But I’ve tried to have a very compact interface. I have to find more space. I’m thinking to work on my POWER08 panel after finishing the slim phatty. I want to add these new functions : copying and reseting layers / full bidirectional knobs. Maybe I will add graphs, I’ll let you know 😉

                      in reply to: Moog Sub37 panel #68541
                      Carl Licroy
                      Participant
                        • Topics: 3
                        • Replies: 28
                        • Total: 31

                        By the way, your panel looks so cool Goodweather! Keep your work on it, because I’m sure it will be better than the official one…

                        in reply to: Moog Sub37 panel #68540
                        Carl Licroy
                        Participant
                          • Topics: 3
                          • Replies: 28
                          • Total: 31

                          It’s the same with the slim phatty : I bought the official editor and I don’t like it. Even the soundtower editor don’t fit my needs.

                          Commercial softwares always reproduce the interface of hardware devices. But with software you don’t have hardware constraint in placing your knobs and sliders… So you can acheive a much more “logical” and intuitive placing.

                          Manufacturers makes editors that look nice but are not practical. And for me the most important is easy and fast access to presets on my computer disk because I can organise them and store them whithout to deal with storage capacities of my synths.

                          So CTRLR was the best piece of software I found so far because everyone can personalize panels to fit their needs, even if you’re not a programer (I’m not and learn all with infos found on the web).

                          For me, when you buy a synth it’s a right of the owner to have access to the midi and sysex specifications to control it the way you want. Because who knows if the official editor will still works in 5 years? But with the manual of my roland JX8P I achieve to control it even more than 20 years after construction…

                          Hopefully I’m just about to finish decoding every bits of the sysex file of slim phatty… But it was so time consuming… I was interested by the sub37… but now I will think twice before to buy it…

                          in reply to: Convert number string to double #68495
                          Carl Licroy
                          Participant
                            • Topics: 3
                            • Replies: 28
                            • Total: 31

                            I’m not sure what you want to achieve but maybe you have to concatenate your values :

                            
                            -- concatenate values
                            pNumber = pNumber1..pNumber2..pNumber3
                            
                            -- convert in hex format
                            pNumberHex = string.format("%.2x", pNumber)
                            
                            -- Let's see the result
                            console("hex byte for "..pNumber.."is : "..pNumberHex)
                            in reply to: Librarian on Mac #68490
                            Carl Licroy
                            Participant
                              • Topics: 3
                              • Replies: 28
                              • Total: 31

                              Hi Arn!

                              Have you check your midi connections? First check your midi connections in ctrlr (midi input and output).

                              Then what do you see when you hit “Get” button under GLOBAL part of POWER08 panel? if you see “?” in “receive” and “send” boxes, then you have to check your global parameters directly on your synth : –> Global –> + or – to navigate –> and verify that these parameters are correctly setup :

                              – MParam Send:NRPN
                              – M Param Rec: All
                              – MIDI Control : On
                              – MIDI SysEx: On

                              Then you can hit “Get” again and you will see the update in “receive” and “send” boxes.

                              Hope this helps and you can enjoy POWER08 panel!

                              in reply to: Moog Sub37 panel #68478
                              Carl Licroy
                              Participant
                                • Topics: 3
                                • Replies: 28
                                • Total: 31

                                Thanks for your help. Maybe I found the begining of the solution. This is the projet of my knowledge database for the slim phatty :

                                -- CONTENT OF MOOG SLIM PHATTY SYSEX FILE
                                
                                -- All datas are stored as "bits sequence" and "packed" in sysex message. So the 
                                -- device begin to convert every values from decimal to binary, and then store every
                                --  bits in bytes. These bytes coutain 8 bits. Reading right to left, The last bit 
                                -- (the 8th bit) is always empty (=0). Finaly, every bytes are converted in Hex 
                                -- to create a complete sysex file.
                                
                                -- For example, if you have "A" to "G" parameters, which only need 8 bits, they are
                                -- stored in bytes like this :
                                --	                 Binary		       Hex
                                -- byte 1 : 	0 A6 A5 A4 A3 A2 A1 A0 	--> 	00
                                -- byte 2 :	0 B5 B4 B3 B2 B1 B0 A7	-->	01
                                -- byte 3 : 	0 C4 C3 C2 C1 C0 B7 B6	-->	..
                                -- byte 4 : 	0 D3 D2 D1 D0 C7 C6 C5	-->	..
                                -- byte 5 : 	0 E2 E1 E0 D7 D6 D5 D4	-->	..
                                -- byte 6 :	0 F1 F0 E7 E6 E5 E4 E3	-->	..
                                -- byte 7 : 	0 G0 F7 F6 F5 F4 F3 F2	-->	..
                                -- byte 8 : 	0 G7 G6 G5 G4 G3 G2 G1	-->	..
                                -- 
                                -- Now, the device only use the minimum bits required. So if a parameter can only
                                -- have 4 values, only two bits are needed because the first value is always "0" :
                                --
                                -- 0 = |0|0|		1 = |0|1|	2 = |1|0|	3 = |1|1|
                                --
                                -- The number of bits depends on the number of possible value, and does not refer to
                                -- the real value of the parameter! For example, oscillators ranges only have 4
                                -- possible values : 16, 32, 48, 64. So they only use two bits like this :
                                --
                                -- 16 -> 0 = 0 = |0|0|	32 -> 1 = |0|1|	48 -> 2 = |1|0|	64 -> 3 = |1|1|
                                
                                -- To know how much bits are required for a parameter, you have to convert the
                                -- number of values in binary. You can use ctrl buildin midi calculator. For
                                -- example, the number values of oscillators waveforms is 16383. So 14 bits are
                                -- needed.
                                --
                                -- Finaly, you have to find the position of the sequence :
                                -- byte244:	|X|X|X|X|Osc1range1|Osc1range2|X|X|
                                -- byte245:	|X|X|X|X|X|X|Osc2range1|Osc2range2|
                                

                                I have to test it. I’ve found a function to transform a number in bits sequence, and you can choose the number of bits :

                                
                                function numToBits(num,bits)
                                	 -- returns a table of bits, most significant first.
                                    bits = bits or select(2,math.frexp(num))
                                    local t={} -- will contain the bits        
                                    for b=bits,1,-1 do
                                        t=math.fmod(num,2)
                                        num=(num-t)/2
                                    end
                                    return t
                                end
                                

                                Now I have to find a function to transform bits sequence in numbers… and find the places of all bits sequences in sysex file…

                                in reply to: Moog Sub37 panel #68463
                                Carl Licroy
                                Participant
                                  • Topics: 3
                                  • Replies: 28
                                  • Total: 31

                                  Thanks for these informations. It’s reassuring to see that I’m not alone 🙂 I’m working the same way with “Midi monitor” and “HexEdit”.

                                  It seems that for the Slim Phatty every datas are also “packed” in bits sequences. I started to “decrypt” the sysex but it seems pretty hard because we never know how much bits are used. For instance I found this :

                                  — byte244: | X | X | X | X | Osc1range1 | Osc1range2 | X | X |
                                  — byte245: | X | X | X | X | X | X | Osc2range1 | Osc2range2 |
                                  — Osc1range : 16 = |0|0| 32=|0|1| 48=|1|0| 64=|1|1|
                                  — Osc2range : 16 = |0|0| 32=|0|1| 48=|1|0| 64=|1|1|

                                  So it seems that the “bits” doesn’t necessary refers to the real value of the parameter.

                                  I just feel like Alan Turing trying to decode Enigma… to save the world from a quite strange commercial strategy…

                                  in reply to: Moog Sub37 panel #68437
                                  Carl Licroy
                                  Participant
                                    • Topics: 3
                                    • Replies: 28
                                    • Total: 31

                                    Hi,

                                    I’m currently trying to create a panel for the slim phatty. I have some difficulties to decode the preset sysex file. Did you find the way to decode it for sub37?

                                    in reply to: prophet 8 #68325
                                    Carl Licroy
                                    Participant
                                      • Topics: 3
                                      • Replies: 28
                                      • Total: 31

                                      Yes that’s true. It’s because the “receive” button only get names of the presets stored on the P8. Each time you double click a preset, the P8 sends all data of the selected preset. And when you want to save a bank, the panel asks for all presets and store them in a sysex file.
                                      It’s because the panel is not bidirectional. Storing presets momentary on the computer disk would be harder to program and not safe if you change a parameter directly on your P8.
                                      In fact, I prefer to save my presets on my computer disk because I don’t have any bank size limit and I can sort presets and organize them with folders. That’s why synth browser is for me just a step to recover banks from third parties.
                                      Copying layer parameters to the other is not implemented yet but it’s a good idea and will add it in next update 😉

                                      in reply to: prophet 8 #68298
                                      Carl Licroy
                                      Participant
                                        • Topics: 3
                                        • Replies: 28
                                        • Total: 31

                                        Ok then I’ve just uploaded a new update of Power08 (v.2.0.2). I’ve replaced all buttons with listbox 😛 Now it works even with last version of ctrlr. I was not happy with colors of the panel and made some changes… Hope you will like it!

                                        in reply to: prophet 8 #68273
                                        Carl Licroy
                                        Participant
                                          • Topics: 3
                                          • Replies: 28
                                          • Total: 31

                                          Sorry I realised that I wasn’t using the last ctrlr version. I still experience problems with buttons on ctrlr with last mac version. But the browser works well. By the way I don’t use lua coroutines anymore so requesting data dump from P8 should work well. Which version are you using Jerome?

                                          • This reply was modified 8 years, 2 months ago by Carl Licroy.
                                          in reply to: prophet 8 #68268
                                          Carl Licroy
                                          Participant
                                            • Topics: 3
                                            • Replies: 28
                                            • Total: 31

                                            Hi Jerome,

                                            I’m expecting the same problem with last version of ctrlr… it’s because the lua methods are called when “mouse is down on the component” and all these launchers have disappeared on last version of ctrlr 🙁 Atom can you help? It’s sad because the bug with buttons has disappeared on Mac with this version…

                                            The panel works fine on Mac version 5.3.122. So I recommend to use previous ctrlr version with my panel until ctrlr is updated. I don’t recommend to use old versions Power08 because I worked hard to fix a lot of bugs and to properly handle DSI “packed midi data”…

                                          Viewing 20 posts - 1 through 20 (of 28 total)
                                          Ctrlr