human fly

Forum Replies Created

Viewing 20 posts - 61 through 80 (of 1,070 total)
  • Author
    Posts
  • in reply to: Yamaha RX7 UI #83849
    human fly
    Participant
      • Topics: 124
      • Replies: 1070
      • Total: 1194
      • ★★★★

      in fact, i’m still trying to refine behaviour of
      the Pad select method – it works but can be condensed
      a bit.

      it gets a bit complicated trying to introduce ‘multi’,
      so that the last selected voice gets mapped to the top
      12 pads, because those then get a different set of values
      and voice assignments.

      it means introducing an ‘if’ statement somewhere, dependent
      on the state of the single/multi button. if i put it in the
      wrong place, method gets broken.

      in reply to: Yamaha RX7 UI #83848
      human fly
      Participant
        • Topics: 124
        • Replies: 1070
        • Total: 1194
        • ★★★★

        here’s the sysex results i’ve got from it so far, to have
        a look at the format:
        (this is what i discovered reading off messages with my lazy
        technique of hitting ‘enter’ and picking them up with midiox)

        voice bulk dump (voice #00, BD1):
        43 Bytes:(highlighted voice number with asterisks)

        F0 43 00 0B 00 23 4C 4D 20 20 38 35 31 35 56*00*02 78
        36 07 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        00 00 00 00 00 36 F7

        single parameter message:
        (‘??’ was where i found variations, i think; must be msb)
        F0 43 10 03 51 V# pp ?? vv F7

        eg:(value byte as per what i found with this voice)
        voice edit/job 02-05
        decay F0 43 10 03 51 41 01 19 F7
        brate F0 43 10 03 51 41 02 00 F7
        bRange F0 43 10 03 51 41 03 00 F7
        level F0 43 10 03 51 41 04 36 F7
        pan F0 43 10 03 51 41 05 08 F7
        (etc.)
        and here’s what happens with negative values,
        eg: pan:

        repeat pan: -14<>+14
        (4th repeat,pan = 14h (param byte)

        F0 43 10 03 51 41 14 72 F7 > 72h-7Fh = <-14 - -01<0>
        (last values)
        F0 43 10 03 51 41 14 0E F7 > 00h-0Eh = <0> – +14>
        (first values)


        just to have a look. can’t remember off top of my head
        what i concluded from the -/+ parameters, but it made
        sense seen as a midiox list.
        right, i’m off to make a little fader with a message
        on it to see if i can get the RX7 to respond.

        in reply to: pm send/reply not working (for me) #83840
        human fly
        Participant
          • Topics: 124
          • Replies: 1070
          • Total: 1194
          • ★★★★

          uh ok; not so far. i’ll try again (except i ain’t got
          nuffink to say today)

          in reply to: pm send/reply not working (for me) #83837
          human fly
          Participant
            • Topics: 124
            • Replies: 1070
            • Total: 1194
            • ★★★★

            ok i think i see: ‘messages’, yeah? not terribly obvious
            once you get in there: used to have a list of recipients/members.

            also, i thought i’d deleted old messages, but they still seem
            to be there.

            in reply to: GUI without scroll bars as fix Window #83835
            human fly
            Participant
              • Topics: 124
              • Replies: 1070
              • Total: 1194
              • ★★★★

              hey i had a very weird display when i opened the Ctrlr dll
              the other day, like it’s displaced/offset right and down.
              this was just opening it empty without a panel loaded.

              this was Orion on win10 – i don’t recall observing this before.

              in reply to: Yamaha RX7 UI #83808
              human fly
              Participant
                • Topics: 124
                • Replies: 1070
                • Total: 1194
                • ★★★★

                indeed!

                i have read this kind of sysex doc’ before, so
                i’m fairly confident i can figure something out,
                and ‘cheat’ with the Enter button for quick
                visual confirmation in midiox.

                haha we’ll see though 🙂
                i did decide to set it to one side while i worked
                out if i could do my tables thing: very valid for
                things like drum machines where you get lots of
                repetition. remains to be seen what will happen
                when sysex-time comes. i’ll probably be calling out
                for help then, to get some sort of timed-release
                message thing set up.

                in reply to: Yamaha RX7 UI #83796
                human fly
                Participant
                  • Topics: 124
                  • Replies: 1070
                  • Total: 1194
                  • ★★★★

                  Hi Poss’
                  the cool thing about the RX7 is that it will send its
                  last-edited parameter when you press the ‘enter’ button,
                  so i figured i could reverse-engineer from that, and i
                  have done a list already of all the messages.

                  you are no doubt right about working out that routine,
                  and this is perhaps the point where i must look at that.
                  i wanted to figure out the overall structure of how the
                  panel would work first, thought that was an important
                  decision, ie: to have my tables system, or make individual
                  modulators for … (120 x (21+12))x2 parameters ! (which
                  i want to avoid)

                  figuring out the multi-voice is the last step i need to
                  get through before i attempt the sysex. but maybe i should
                  try to get a message to it first and see what happens, yes.

                  i tend to not sit with the device next to me, connected to
                  Ctrlr – mainly because i’ve been learning Lua primarily.
                  this tables build/retrieve system is quite adventurous for me.
                  time to pull out the RX7 🙂 and i would really appreciate
                  your input as i attempt to make a rock-solid sysex
                  send/receive system, as it could go horribly wrong crashing
                  an old slow box like this. (it’s easy to do a factory reset
                  though) – it will be a few day yet before i have something
                  to show there, and in the meantime, i have a couple of users
                  responding on yamahablackboxes group, to talk about this
                  multi-voice mode. most confusing system, i must say…

                  in reply to: Yamaha RX7 UI #83794
                  human fly
                  Participant
                    • Topics: 124
                    • Replies: 1070
                    • Total: 1194
                    • ★★★★

                    Checking the screenshots of the Soundquest editor may be interesting. The interface is as ugly as it gets but you can see the editable parameters.
                    You can see that there are two midi modes. One spreads all voices on the keyboard and You can edit for each of the 100 voices at which note it should play. This way you can trigger more than one voice per note. The other mode assigns a voice on each midi channel. It will then play one voice spread across the whole keyboard.
                    It’s probably possible to switch mode by sysex messages.

                    https://www.squest.com/Products/MidiQuest11/Instruments/YamahaRX7/index.html

                    interesting interpretation. i admit i wasn’t seeing it quite like that.
                    but i have not at all used the Multi job, or had the RX7 connected to
                    a MIDI keyboard yet.

                    i just assume that ‘multi voice/yes’ assigns the current pad’s voice to
                    the top row of 12 pads. until now i have been focusing on regular drum
                    machine mode, where, as i see it, the 1OO Voices can be assigned to
                    any Pad/Key, as many times as you want, with the ‘Key Assign’ parameters
                    defining MIDI IN Note and Channel, and somehow, MIDI OUT Note and Channel.
                    the manual and service manual are not very clear about this.

                    i need to check it out with a midi keyboard plugged into it.

                    in reply to: Yamaha RX7 UI #83780
                    human fly
                    Participant
                      • Topics: 124
                      • Replies: 1070
                      • Total: 1194
                      • ★★★★

                      have a new version here.
                      pad select method just redone, unpacking subfunctions,
                      then condensing(could go further; it stops working if
                      i change too much in one go. just realised i now have
                      to do this with the other main methods too)

                      once again, the idea is to use a few modulators to
                      show data from many parameter groups, so it’s more
                      of an experiment than a panel project (if it ever gets
                      that far).

                      next hurdle is how to make the current voice the ‘multi’
                      voice: with the rx5 and 7, when editing, you’re offered
                      the choice to make that voice the multi voice, spread
                      across the top 12 pads. (not figured out yet…)

                      little check that system is working:
                      if you randomise the voice on any pad, and then go to another
                      pad, and call up the same voice there, the parameters will
                      jump to the same settings when you click on the new pad.
                      (have to make that automatic)
                      of course: it’s the same voice table it’s being updated with.

                      Attachments:
                      You must be logged in to view attached files.
                      in reply to: why is this method looping through several times? #83775
                      human fly
                      Participant
                        • Topics: 124
                        • Replies: 1070
                        • Total: 1194
                        • ★★★★

                        so that didn’t make any difference, but maybe it will
                        when it comes to sending out midi values?

                        but i did root out where the console triggers were coming
                        from: 2 groups of controls are updating and triggering their
                        respective valueChange methods, hence multiple triggers.

                        so far, each time a slider is moved, it rebuilds the value
                        table (maybe it should be narrowed down to that key, but
                        haven’t got that far) – so there’s something to recall
                        when each pad is clicked.

                        mystery solved. (still leaves question of how to prevent
                        unwanted midi messages going out when recalling settings)

                        project is here:

                        Yamaha RX7 UI

                        • This reply was modified 6 years ago by human fly.
                        in reply to: why is this method looping through several times? #83772
                        human fly
                        Participant
                          • Topics: 124
                          • Replies: 1070
                          • Total: 1194
                          • ★★★★

                          oh. can i even do that? nothing under component, so …
                          did you say setValue rather than setModulatorValue?
                          can try that. what is the difference?

                          in reply to: why is this method looping through several times? #83770
                          human fly
                          Participant
                            • Topics: 124
                            • Replies: 1070
                            • Total: 1194
                            • ★★★★

                            Do you using some labelChanged callbak? So when you change something , callback is trigerred which is changing uiLabel wchich again triggers the callback.

                            a-ha: this was good. not labelChanged, but valueChanged: all the modulators
                            jump to position and change value when a button is clicked, and the method
                            they trigger – which i completely forgot about , because it’s in another
                            Folder – is triggering the rogue console prints.

                            so i suppose i’m changing the wrong thing when i’m recalling values from
                            the table. it should be a component property, so value change doesn’t
                            fire the method.

                            was able to re-order and reduce the script before ‘unpacking’ it.
                            some things were happening twice. still full of things happening
                            twice. but runs snappier now.

                            in reply to: why is this method looping through several times? #83768
                            human fly
                            Participant
                              • Topics: 124
                              • Replies: 1070
                              • Total: 1194
                              • ★★★★

                              ok, here’s a working unpack of the little subfunctions.
                              it reaches the end and then spews out a load of console
                              stuff that isn’t even in it. very weird. so it’s something
                              in the panel. see below for version.
                              (“kbmidi()” is nothing to worry about – deals with another
                              part of the panel)

                              function padSelect(mod,value)
                              	-- This variable stops index issues during panel bootup
                              	if panel:getRestoreState() == true or panel:getProgramState() == true then return end
                              --	------------------------------------------------------
                              	psub=nil							--[ pad number ]--
                              	local padName= L(mod:getName())
                              	psub=tonumber(string.sub(padName,4))
                              --	------------------------------------------------------
                              	kitnmbr	=nil						--[ kgetcolour ]--
                              	local tbl_kitcolour={}
                              	for i=1,5 do 
                              	local kitcolour=panel:getComponent("keydata"..i-1):getProperty("uiButtonTextColourOff")
                              	table.insert(tbl_kitcolour,kitcolour)
                              --
                              		if tbl_kitcolour~="FF1291DF" then 
                              		kcolourB = tbl_kitcolour		--[ for psetcolour ]--
                              		kcolourA ="FF1291DF"			--[ for psetcolour ]--
                              		end
                              --
                              		if kcolourB == tbl_kcolourB then 			--[ see utilTables ]--
                              		kitnmbr = i-1	--[ get current kit number ]--	--[ offset to 0-4 ]--
                              		end
                              	end
                              --	------------------------------------------------------
                              	local tbl_pads={}	--[ psetcolour ]--
                              	for i=1,24 do
                              	local pad=panel:getModulatorByName("pad"..i)
                              	table.insert(tbl_pads,pad)
                                     	if i ~= psub then
                              		tbl_pads[ i ]	:getComponent():setProperty("uiButtonTextColourOff",kcolourA, false)	
                              		else
                              		tbl_pads[ psub ]:getComponent():setProperty("uiButtonTextColourOff",kcolourB, false)
                              			--[ change tab etc ]--
                              			--panel:getComponent ("tabs_voiceEdit"):setPropertyInt("uiTabsCurrentTab", psub-1) -- or i-1
                                     	end
                              	end
                              	console(String("setpcolour"))	--..padselct..":"..psub))
                              --	------------------------------------------------------
                              	kitselct=nil		--[ findkit ]--
                              	for i=1,5 do 
                              	local kitcolour=panel:getComponent("keydata"..i-1):getProperty("uiButtonTextColourOff")	
                              		if kitcolour~="FF1291DF" then 
                              		kitselct = i 
                              		end
                              	end
                              	console(String( "kit:"..kitselct))
                              --	------------------------------------------------------
                              	padselct=nil		--[ findpad ]--
                              	for i=1,24 do 
                              	local padcolour=panel:getComponent("pad"..i):getProperty("uiButtonTextColourOff")
                              		if padcolour~="FF1291DF" then 
                              		padselct = i 
                              		end
                              	end
                              	console(String( "pad:"..padselct))
                              --	------------------------------------------------------
                              	keyselct=nil	--[ KeyAssign number, global ]--	--[ keynumber ]--
                              	keyselct = (tbl_bankoffset[ kitselct ]+padselct) 	
                              	console(String("keyselct:"..keyselct))
                              --	------------------------------------------------------
                              	local voice=(_G["tbl_keyassgn"..keyselct]) [ 1 ]	--[ get voice number ]--
                              	vnmbr=nil --[ global? ]--
                              	vname=nil --[ global? ]--
                              	vnmbr= (_G["tbl_keyassgn"..keyselct]) [ 1 ]+1	--[ vnmbr:1st param ]--[ offset for index 0-99]--
                              	vname= tbl_voiceName[ vnmbr ]	--[ get text voice name ]--
                              --[ update display ]--
                              	panel:getComponent("labl_VoiceNmbr"):setPropertyString("uiLabelText","voice "..voice..":"..vname)
                              	panel:getComponent("lcd_paramval"):setPropertyString("uiLabelText","voice "..voice..":"..vname)
                              	console(String("updateVoiceName: "..voice..":"..vname))
                              --	------------------------------------------------------
                              	for i,v in ipairs ((_G[ "tbl_keyassgn"..keyselct ]),1) do 	--[ fetchKeyTable ]--
                              	local param = tbl_keyParam
                              	param:setModulatorValue(v,false,false,false)
                              	end
                              	--
                              	local ktblconcat =nil
                              	ktblconcat = table.concat(_G["tbl_keyassgn"..keyselct]," ")
                              	panel:getComponent("lcd_top2"):setPropertyString("uiLabelText",ktblconcat)
                              	console(String("fetchKeyTable:"..ktblconcat))
                              --	------------------------------------------------------
                              	for i=1,21 do 												--[ fetchVoiceTable ]--
                              	local param = tbl_voiceParam[ i ]
                              	param:setModulatorValue((_G[ "tbl_voice"..vnmbr ])[ i ],false,false,false)
                              	--
                              	local vparam =_G["tbl_voice"..vnmbr][ i ]
                              	table.insert(_G["tbl_voice"..vnmbr],vparam)
                              	end
                              	---
                              	local vtblconcat =nil
                              	vtblconcat = table.concat(_G["tbl_voice"..vnmbr]," ")
                              	panel:getComponent("lcd_top3"):setPropertyString("uiLabelText",vtblconcat)
                              	console(String("fetchVoiceTable:"..vtblconcat))
                              --	------------------------------------------------------
                              	panel:getComponent("lcd_top1"):setProperty("uiLabelText",	--[ displaypad ]--
                              	"pad "..(tbl_padalpha[psub])..":".." kit:"..kitnmbr.." key:"..keyselct.." voice "..
                              	(vnmbr-1)..":"..vname.." midi:"..tbl_initNoteNo[ vnmbr ],false)
                              --	------------------------------------------------------
                              	kbdmidi()
                              -- -------------------------------------
                              end
                              Attachments:
                              You must be logged in to view attached files.
                              in reply to: why is this method looping through several times? #83767
                              human fly
                              Participant
                                • Topics: 124
                                • Replies: 1070
                                • Total: 1194
                                • ★★★★

                                aaagh – tried to unpack functions back into the method,
                                now i’ve broken it…start again.

                                reinstated console messages to check where it got up
                                to, and it’s always the same thing that makes it loop
                                through. maybe it needs to.

                                changed some things round, and got different patterns
                                of repeats.

                                got lost now, so back to last good version.
                                trying to make a readable version.
                                (so much for putting it all in separate functions)

                                in reply to: why is this method looping through several times? #83708
                                human fly
                                Participant
                                  • Topics: 124
                                  • Replies: 1070
                                  • Total: 1194
                                  • ★★★★

                                  does the same thing with:

                                  for i,v in ipairs ((_G[ "tbl_keyassgn"..keyselct ]),1) do 
                                  local param = tbl_keyParam
                                  param:setModulatorValue(v,false,false,false)
                                  end

                                  so it seems to be forcing the previous functions to run for each
                                  time it needs the ‘keyselct’ variable. something like that.
                                  i’m ok with skipping the function calls and putting the code back
                                  in there instead. but i don’t know if it will fix it as it is.

                                  in reply to: why is this method looping through several times? #83707
                                  human fly
                                  Participant
                                    • Topics: 124
                                    • Replies: 1070
                                    • Total: 1194
                                    • ★★★★

                                    it is definitely this that is doing it.
                                    can anyone suggest an alternative way?
                                    ‘keyselect’ is the id number of each key assignment,
                                    and the _G table contain all the values that need to
                                    be retrieved.
                                    is it maybe the way that ‘keyselect’ is obtained, by
                                    finding which pad (1-24) and which kit (0-5), performing
                                    separate iterations? is there an art to this? or do i just
                                    have to run through it as many times as needed? ( i put the
                                    console command in as a marker, to check for loops like this )

                                    for i=1,12 do 
                                    local param = tbl_keyParam
                                    --param:setModulatorValue((_G[ "tbl_keyassgn"..keyselct ])[ i ],false,false,false)
                                    param:setValue((_G[ "tbl_keyassgn"..keyselct ])[ i ],true,true)
                                    end
                                    in reply to: why is this method looping through several times? #83688
                                    human fly
                                    Participant
                                      • Topics: 124
                                      • Replies: 1070
                                      • Total: 1194
                                      • ★★★★

                                      thanks for looking through it.
                                      yes, of course – s’pose i knew some problems could
                                      arise by doing that. and some of it was thrown together
                                      with those series of functions, just getting things
                                      to work.

                                      sort of experimenting with the library thing. don’t know
                                      if it has downsides compared to just having separate
                                      methods – does it have to run through the whole thing
                                      each time it wants that function?

                                      discovered that the_G [ .. ] tables have to be created at
                                      startup, or it doesn’t work – tried without, to see if it was
                                      creating doubles of those tables.

                                      they are created on startup, filled with default values,
                                      and then each time something is changed, the table for that voice,
                                      or key, is initialised and rebuilt ie: filled with current display
                                      values. when a pad with that Voice is clicked, values from the
                                      corresponding _G table are sent to their modulators – so the dispay
                                      jumps to that pad’s settings.

                                      which sort of seems to work – as a way of avoiding having hundreds
                                      of tabs each with 20 or more modulators.

                                      in reply to: why is this method looping through several times? #83673
                                      human fly
                                      Participant
                                        • Topics: 124
                                        • Replies: 1070
                                        • Total: 1194
                                        • ★★★★

                                        if you want to look at the panel it is here:
                                        v.0.91
                                        https://app.box.com/s/jmy8wa2ij0bqmpwsiu8l34ioy4ehzzss

                                        at the moment, it is a UI for a drum machine, with pads
                                        recalling parameter values and displaying voice names etc.
                                        it’s experimental for me – so advance apologies if my
                                        attempt to structure it via a Function Library seems strange.
                                        overall this seems to be working ok, except this retriggering
                                        of one console command with pretty much every panel operation.

                                        in reply to: why is this method looping through several times? #83672
                                        human fly
                                        Participant
                                          • Topics: 124
                                          • Replies: 1070
                                          • Total: 1194
                                          • ★★★★

                                          note that i use the term debugging very loosely, don’t
                                          know exactly what that means technically. i’m ‘fault-finding’.

                                          it seems that as ‘keyselct’ is global, ie: not local
                                          and i’m looking for an index in a ‘global’ table, with:
                                          (_G[ "tbl_keyassgn"..keyselct ])[ i ]
                                          there is an issue there. as these are created on start-up,
                                          they already exist, and not nil.

                                          i will try it with fewer iterations to see what happens.
                                          nb: this does not seem to affect the operation of the UI;
                                          but sometimes there does seem to be a refresh delay, as if
                                          ‘something’ as going on. generally, it seems fast enough.
                                          but if this is going to cause problems further down the line,
                                          with sysex messages triggered 20x, obviously that is no good.

                                          i will think about the structure of my code again. it’s definitely
                                          that bit that’s doing it. i’ll look to see if it happens elsewhere.
                                          all the other console commands i’ve re-activated only trigger once.

                                          in reply to: why is this method looping through several times? #83663
                                          human fly
                                          Participant
                                            • Topics: 124
                                            • Replies: 1070
                                            • Total: 1194
                                            • ★★★★

                                            Hi,
                                            not a problem with midi yet because that bit still
                                            isn’t done – this is just debugging the panel generally.

                                          Viewing 20 posts - 61 through 80 (of 1,070 total)
                                          Ctrlr