Puppeteer

Forum Replies Created

Viewing 20 posts - 61 through 80 (of 185 total)
  • Author
    Posts
  • in reply to: uiLabel set some text coloured #69816
    Puppeteer
    Participant
      • Topics: 16
      • Replies: 185
      • Total: 201
      • ★★

      I never finished it. I build the single dump functionality (so I can dump and display a single dump). I got some code from someone else and have been speaking with Kurzweil R&D and have a fairly complete understanding of the file and dump structure now, so it’s become a bit redundant for me.

      I will continue to develop it a bit, as I need to test the packing and unpacking required for the Kurzweil dumps, but that won’t be for a while. Basically I’m using this panel as a test bed for pulling data from dumps now (ie check which byte represents the LFO shape, for example)

      I’ve moved on to developing the actual functional panels, and I’m just working with the header data at this stage (unpacked data), so don’t need it. For my next panel for Kurzweil synths, I will need this, so might look at it again then.

      I’ll have a look through my code to make sure there’s nothing confidential in there that I can’t share, and if it’s clear, I’ll publish what I’ve done. I’m under NDA with Kurzweil so need to be very careful about what I share.

      The problem with HxD and similar, is that I need to unpack some of the data first, so I can see changes in the dumps, but parameters are spread across bytes after packing. I need to be able to operate on the unpacked data.

      • This reply was modified 7 years, 9 months ago by Puppeteer.

      The Puppeteer
      http://godlike.com.au

      in reply to: modulator value sent only on mouseUp event? #69643
      Puppeteer
      Participant
        • Topics: 16
        • Replies: 185
        • Total: 201
        • ★★

        Goodweather, I’d be very interested in that code. PM me or email if you wish.

        I’m writing a panel for a Roland Jupiter 8 and the update method is by sending a sysex dump to the edit buffer (basically rewriting the whole edit buffer on value change). It works well, except the processor can’t handle MIDI too quickly, so I need to space the dumps out (ie collect all changes in x ms and update the synth edit buffer).

        If I click individual values on a slider it works perfectly, if I click and move a slider things come to a grinding halt.

        The Puppeteer
        http://godlike.com.au

        in reply to: setting an image for a modulator #69591
        Puppeteer
        Participant
          • Topics: 16
          • Replies: 185
          • Total: 201
          • ★★

          You need to change the uiSlider to an ImageSlider. There is a field for the graphic resource under ImageSlider, that populates from your resources.

          Also, the images only support vertical orientation not horizontal, so make sure you export as vertical out of jKnobMan.

          The Puppeteer
          http://godlike.com.au

          in reply to: Andromeda a6 sysex #69572
          Puppeteer
          Participant
            • Topics: 16
            • Replies: 185
            • Total: 201
            • ★★

            I think you’ll need to do this through LUA. I think the simple SYSEX formulas in the modulator bar can only handle an MSB and LSB value only. Anything more complex will require LUA.

            The Puppeteer
            http://godlike.com.au

            in reply to: console() modulatorValue #69559
            Puppeteer
            Participant
              • Topics: 16
              • Replies: 185
              • Total: 201
              • ★★

              You might be able to use this if you use a fixed slider or a fixed image slider and map all your values.

              Controller7 = panel:getModulatorByName(“EnvAA3T”):getValueMapped()

              The Puppeteer
              http://godlike.com.au

              in reply to: Changing Global Variable #69516
              Puppeteer
              Participant
                • Topics: 16
                • Replies: 185
                • Total: 201
                • ★★

                My application was using 2 x global variables in the same dump request, and not being able to effectively change them.

                The Puppeteer
                http://godlike.com.au

                in reply to: Changing Global Variable #69514
                Puppeteer
                Participant
                  • Topics: 16
                  • Replies: 185
                  • Total: 201
                  • ★★

                  I gave up on the global variables, and use LUA instead.

                  The Puppeteer
                  http://godlike.com.au

                  in reply to: Single panel for multiple keyboards? #69513
                  Puppeteer
                  Participant
                    • Topics: 16
                    • Replies: 185
                    • Total: 201
                    • ★★

                    No reason why not, if it’s all driven through a single MIDI port.

                    The Puppeteer
                    http://godlike.com.au

                    in reply to: Incoming MIDI data #69496
                    Puppeteer
                    Participant
                      • Topics: 16
                      • Replies: 185
                      • Total: 201
                      • ★★

                      You’ll need a script on the Called when panels receives a MIDI Message.

                      In the script you’ll need to check the incoming MIDI message for the message received, probably using a series of IF statements.

                      If the MIDI is what you want, set the Panel Object to the desired state, using a command similar to one of the ones below

                      panel:getModulatorByName(“Env3A1T”):setValueMapped(EnvTimeLookup(0),true,true)
                      panel:getModulatorByName(“Env3A1L”):setModulatorValue(100,false,true,true)

                      The Puppeteer
                      http://godlike.com.au

                      in reply to: How to make a loading patch popup screen? #69493
                      Puppeteer
                      Participant
                        • Topics: 16
                        • Replies: 185
                        • Total: 201
                        • ★★

                        I update a label as well during the loop.

                        For a fancy screen that would probably solve your sysex issue, have a look at the miniak panel. It uses a layer over the top to disable the controls.

                        The Puppeteer
                        http://godlike.com.au

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

                          No, you can only replace the entire string.

                          Best way is create a table to hold each line. Update the relevant table entry.

                          When you need to update the list is content call a method that cycles through each table element concatenating with /N and then write the resulting string to the list is.

                          There’s an example in the miniak panel for the program list.

                          The Puppeteer
                          http://godlike.com.au

                          in reply to: saving/loading data to a file #69443
                          Puppeteer
                          Participant
                            • Topics: 16
                            • Replies: 185
                            • Total: 201
                            • ★★

                            Thanks,

                            Looking at this and the MiniAk panel, I think I may need to convert it all to text, save that, and then deceipher the text to rebuild the table.

                            Was hoping to avoid that and keep the structure in place in the file.

                            The Puppeteer
                            http://godlike.com.au

                            in reply to: saving/loading data to a file #69438
                            Puppeteer
                            Participant
                              • Topics: 16
                              • Replies: 185
                              • Total: 201
                              • ★★

                              I’m working on the same panel as Kunka, and I’ve come up against a bit of a road block.

                              I have a large table of strings (previously declared and populated)

                              prgName[1]=”: Program 1″
                              prgName[2]=”: Program 2″
                              prgName[3]=”: Program 3″
                              prgName[4]=”: Program 4″
                              prgName[5]=”: Program 5″

                              prgName[4223]=”: ”

                              This is used to populate a uiListBox and it works well.

                              What I want to do is save the prgName table to a file so I don’t have to do 4223 dumps every time I open the panel, but can instead just load it from disk, and update small sections of it by dumping single objects.

                              I’m trying to use the saveContentAsData method from the demo panel but get this error.

                              At line [-1]: [C]

                              Error message: std::exception: ‘unable to make cast’

                              I’m sure it’s because I’m trying to convert the table of strings to binary data with

                              mbList = MemoryBlock (prgName)

                              Anyone know how I can convert the table of strings into something I can save and later reload into the same table?

                              The Puppeteer
                              http://godlike.com.au

                              in reply to: Noobstart: Ctrlr for live (touch lcd) #69369
                              Puppeteer
                              Participant
                                • Topics: 16
                                • Replies: 185
                                • Total: 201
                                • ★★

                                I’ve used touch on windows with ctrlr vst’s and it’s pretty responsive right out of the box. I’m using a Samsung series 7 slate.

                                The Puppeteer
                                http://godlike.com.au

                                in reply to: Sysex value referencing earlier value #69363
                                Puppeteer
                                Participant
                                  • Topics: 16
                                  • Replies: 185
                                  • Total: 201
                                  • ★★

                                  I think you are definitely in LUA territory here.

                                  There are 2 ways I would look at doing this. If the Wave Number L and Wave Number R parameters are quite short lists (ie 4 parameters each), you could look at using if statements to read the value of the Wave Number L know and if it’s a certain value either unhide a knob that has the relevant sysex programmed to it for the particular Wave Number L value, or a better way, especially for long lists of values is:

                                  Use concatenate to combine 2 sysex strings. Ie Set Wave Number L and send it’s sysex string on ValueChange and set Wave Number R where it sends Wave Number L concatenated with the 4 additional bytes and concatenated with the string termination (F7) that Wave Number R reads, and use the SendMidiNow() command to send the sysex string.

                                  Regarding receiving the sysex dump and setting the modulator values on the panel, you’ll need to program LUA in the OnMidiReceive (I think that’s what it’s called) event on the panel, and call a module. In the module, you’ll need code that checks the dump, and reads the various bytes and does things with them.

                                  This is quite a tricky part and something I’m in the process of learning myself.

                                  I’d recommend getting the panel to correctly send everything first as step 1. Once that’s all working, start looking at the receiving MIDI end.

                                  The Puppeteer
                                  http://godlike.com.au

                                  in reply to: LUA version #69258
                                  Puppeteer
                                  Participant
                                    • Topics: 16
                                    • Replies: 185
                                    • Total: 201
                                    • ★★

                                    Last I checked it was 5.2. I think Atom was planning on integrating 5.3, but not sure if it’s been done yet or not.

                                    Easy way to test is to see if the LUA bitwise operators are working or not. I had to use the old long hand functions to implement bitshifting, in my current panel.

                                    The Puppeteer
                                    http://godlike.com.au

                                    in reply to: How to test that the selected Midi device is active? #69150
                                    Puppeteer
                                    Participant
                                      • Topics: 16
                                      • Replies: 185
                                      • Total: 201
                                      • ★★

                                      Probably the easiest way is to send a universal SYSEX ID request

                                      0xF0 SysEx
                                      0x7E Non-Realtime
                                      0x7F The SysEx channel. Could be from 0x00 to 0x7F.
                                      Here we set it to “disregard channel”.
                                      0x06 Sub-ID — General Information
                                      0x01 Sub-ID2 — Identity Request
                                      0xF7 End of SysEx

                                      Ref: http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/midispec/identity.htm

                                      All synths (with sysex) should return a response to this that features the manufacturer ID and the Product ID. If the response matches the module you are expecting, then you know the inputs and outputs are set correctly.

                                      edit: accidentally posted the PC3’s response to the universal request, instead of the request itself. Now fixed.

                                      • This reply was modified 8 years ago by Puppeteer.

                                      The Puppeteer
                                      http://godlike.com.au

                                      in reply to: Ctrlr – Step by step guide #69082
                                      Puppeteer
                                      Participant
                                        • Topics: 16
                                        • Replies: 185
                                        • Total: 201
                                        • ★★

                                        There’s a lot of additional info in the InDev document that can be found here – http://ctrlr.org/forums/topic/ctrlr-step-by-step-guide-in-dev-version/

                                        I’ll hopefully be getting back into coding my next panel soon and will add more. I’ll also be trying to build a librarian, so I’m sure there’s going to be a lot built into the guide between Dominique and myself.

                                        The Puppeteer
                                        http://godlike.com.au

                                        in reply to: Sysex value referencing earlier value #69081
                                        Puppeteer
                                        Participant
                                          • Topics: 16
                                          • Replies: 185
                                          • Total: 201
                                          • ★★

                                          I’m not sure what you are trying to achieve here.

                                          Maybe some background on what Knob1 and Knob2 are controlling (ie Knob 1 sets oscillator, knob 2 controls PWM of that oscillator) or something similar.

                                          If you are trying to incorporate a byte/s from the knob1 sysex message into knob2 sysex message, you’ll need to use LUA to store the byte/s from knob1 (onValueChange) and use LUA on knob2 to assemble the SYSEX message and send it.

                                          The Puppeteer
                                          http://godlike.com.au

                                          in reply to: How to make an AU #68114
                                          Puppeteer
                                          Participant
                                            • Topics: 16
                                            • Replies: 185
                                            • Total: 201
                                            • ★★

                                            Install the AU version of Ctrlr.

                                            Open the Ctrlr AU in Ableton, load up the mks-80 panel
                                            Save restricted instance and it will render down the AU of the panel.

                                            Load the new AU into Ableton.

                                            The Puppeteer
                                            http://godlike.com.au

                                          Viewing 20 posts - 61 through 80 (of 185 total)
                                          Ctrlr