• Dark Theme
    • Categories
    • Register
    • Login
    HISE Logo Forum
    • Categories
    • Register
    • Login

    Switching sample maps with radio buttons.

    Scheduled Pinned Locked Moved General Questions
    33 Posts 3 Posters 1.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      d.healey @lalalandsynth
      last edited by 3 Oct 2020, 13:10

      @lalalandsynth This should point you in the right direction.

      https://www.youtube.com/watch?v=eQ7YvIeS5lY&list=PLynv7CujPCfbH2OPE-cC5F4ZK-sVGkBwx&index=21

      Libre Wave - Freedom respecting instruments and effects
      My Patreon - HISE tutorials
      YouTube Channel - Public HISE tutorials

      L 2 Replies Last reply 3 Oct 2020, 14:52 Reply Quote 1
      • L
        lalalandsynth @d.healey
        last edited by 3 Oct 2020, 14:52

        This post is deleted!
        1 Reply Last reply Reply Quote 0
        • L
          lalalandsynth @d.healey
          last edited by 9 Oct 2020, 20:42

          @d-healey So I have a combobox where I can select samplemaps.
          So I have the array for the sample maps , unsure how I can select a sample index with a radio button though , anyone that can help me a bit with this ?

          A 1 Reply Last reply 10 Oct 2020, 05:13 Reply Quote 0
          • A
            andioak @lalalandsynth
            last edited by andioak 10 Oct 2020, 05:17 10 Oct 2020, 05:13

            @lalalandsynth

            Hey there, I played around with it a while and found a solution. It´s not @d-healey style, like looping through everything all efficient n stuff ☺ But it gets it done.

            Note: I just made the basic Samplemap loading using Sampler.loadSamplerMap(), but did not make any actual radio buttons in the design, but I gathered you got that covered from Healey´s video.

            // onInit
            
            Content.makeFrontInterface(633, 400);
            
            // store references to the samplers.
            const var Sampler1 = Synth.getSampler("Sampler1");
            const var Sampler2 = Synth.getSampler("Sampler2");
            const var Sampler3 = Synth.getSampler("Sampler3");
            
            // UI references
            const var ComboBox1 = Content.getComponent("ComboBox1");
            const var boxVals = ComboBox1.getAllProperties(); // just get all properties of the combobox element, for later reference.
            
            // just printing all values of the combobox´s available properties:
            for (var i = 0; i < boxVals.length; i++) {
                Console.print("ComboBox1:s element id " + i + ": " + boxVals[i]);
            }
            
            
            // get state of combobox, on init:
            const var cboxState = ComboBox1.getValue();
            Console.print("Current choice made in combobox: " + cboxState);
            
            
            
            // onControl ui-control:
            
            function onControl(number, value) // this needs to be copied into the onControl callback.
            {
            	
                if (number == ComboBox1)
                {
                    Console.print("ComboBox1: " + value);
                    if (value == 1)
                    {
                        // loading Samplemap nr 1 for all three.
                        Sampler1.loadSampleMap("Samplemap-1-1"); 
                        Sampler2.loadSampleMap("Samplemap-1-2");
                        Sampler3.loadSampleMap("Samplemap-1-3");
                    }
                    if (value == 2)
                    {
                        Sampler1.loadSampleMap("Samplemap-2-1");
                        Sampler2.loadSampleMap("Samplemap-2-2");
                        Sampler3.loadSampleMap("Samplemap-2-3");
                    }
                    if (value == 3)
                    {
                        Sampler1.loadSampleMap("Samplemap-3-1");
                        Sampler2.loadSampleMap("Samplemap-3-2");
                        Sampler3.loadSampleMap("Samplemap-3-3");
                    }
                }
            }
            

            Here´s an upload of the full project from my hise testing, so you can load it directly, with a single sample in the all the sample maps.

            radio-buttons-control-samplermaps.zip

            Made using Scriptnode branch (2020-08 ish), if that´s important. On macos.

            L 1 Reply Last reply 10 Oct 2020, 10:12 Reply Quote 1
            • L
              lalalandsynth @andioak
              last edited by 10 Oct 2020, 10:12

              @andioak said in Switching sample maps with radio buttons.:

              // loading Samplemap nr 1 for all three.
              Sampler1.loadSampleMap("Samplemap-1-1");
              Sampler2.loadSampleMap("Samplemap-1-2");
              Sampler3.loadSampleMap("Samplemap-1-3");

              That is helpful thanks.

              I am still not sure how to approach this ...how can I assign an index value to the buttons in the radio buttons , I guess that would be the way ?

              1 Reply Last reply Reply Quote 0
              • D
                d.healey
                last edited by 10 Oct 2020, 11:45

                Are you planning to let the user change sample maps by clicking buttons?

                Libre Wave - Freedom respecting instruments and effects
                My Patreon - HISE tutorials
                YouTube Channel - Public HISE tutorials

                L 2 Replies Last reply 10 Oct 2020, 11:49 Reply Quote 1
                • L
                  lalalandsynth @d.healey
                  last edited by 10 Oct 2020, 11:49

                  @d-healey yes , that is the plan .

                  1 Reply Last reply Reply Quote 0
                  • L
                    lalalandsynth @d.healey
                    last edited by 10 Oct 2020, 11:56

                    @d-healey These buttons will be switching sample maps.
                    Sample maps.png

                    1 Reply Last reply Reply Quote 0
                    • D
                      d.healey
                      last edited by 10 Oct 2020, 13:21

                      Ok, but if they do it while the instrument is being played they will get some surprises :)

                      Libre Wave - Freedom respecting instruments and effects
                      My Patreon - HISE tutorials
                      YouTube Channel - Public HISE tutorials

                      L 1 Reply Last reply 10 Oct 2020, 13:54 Reply Quote 1
                      • L
                        lalalandsynth @d.healey
                        last edited by lalalandsynth 10 Oct 2020, 14:49 10 Oct 2020, 13:54

                        @d-healey Isnt it just silence while it loads ? I tried it and cannot hear any glitches or nasty stuff ?
                        Its the same as changing a sample map via a combobox or a preset.
                        Not great for live playing but kind of acceptable in a daw ...I guess.
                        To be honest, not sure if that is acceptable?

                        To do it without interruptions I would need 26 samplers.
                        Only 9 running at a time though ,with the other disabled when not in use.. wonder if that is a better way to do it ? Also wonder if they take any cpu if disabled ?
                        Just concerned with the cpu, is it advisable to run have 26 samplers in a project ?

                        Any recommendations ?

                        EDIT: I could maybe cheat and map 2 sample maps into one sampler and use transpose to go from on to the other ...if that makes sense ?
                        That would reduce the amount of samplers needed , although that might give me silence as well....

                        EDIT2: Could I somehow cheat by loading each sample group into different velocity layers and then switch the velocity around ? No velocity is needed for the samples themselves. Probably not...:P

                        D 1 Reply Last reply 10 Oct 2020, 14:52 Reply Quote 0
                        • A
                          andioak
                          last edited by 10 Oct 2020, 14:24

                          @d-healey @lalalandsynth

                          Okay I got a little upgrade here with 6 linked buttons. It does what radio-buttons do. One turned on turns the others off. Also, no button can ever be turned off, if it is trying to set itself to 0, we simply switch it on again.

                          radio-buttons-with-6-buttons.gif

                          onInit callback:

                          • const var all elements
                          • set array with elements var names
                          • sync array with states in 0s and 1s in arr_buttons_sw.
                          const var Button1 = Content.getComponent("Button1");
                          const var Button2 = Content.getComponent("Button2");
                          const var Button3 = Content.getComponent("Button3");
                          const var Button4 = Content.getComponent("Button4");
                          const var Button5 = Content.getComponent("Button5");
                          const var Button6 = Content.getComponent("Button6");
                          const var arr_buttons = [Button1, Button2, Button3, Button4, Button5, Button6];
                          const var arr_buttons_sw = [
                          	
                          	[1, 0, 0, 0, 0, 0], // for button 1 [0], we set all else to 0.
                          	[0, 1, 0, 0, 0, 0], 
                          	[0, 0, 1, 0, 0, 0], 
                          	[0, 0, 0, 1, 0, 0], 
                          	[0, 0, 0, 0, 1, 0], 
                          	[0, 0, 0, 0, 0, 1] 
                          ];
                          

                          Then the onControl callback:

                          for (var i = 0; i < arr_buttons.length; i++) { // loop through the 6.
                          
                          	// for any button matching one in array list.
                          	if (number == arr_buttons[i]) { 
                          
                          		if (value == 1) {
                          
                          			var btn_nr = arr_buttons.indexOf(number);
                          
                          			for (var j = 0; j < arr_buttons.length; j++) { 
                          
                          				// now setting the elements all in one go to their pre-set values in the arr_buttons_sw array number presets.
                          				arr_buttons[j].setValue(arr_buttons_sw[btn_nr][j]);
                          
                          			}
                          
                          		} else {
                          
                          			// we dont want the value to be able to be set to 0, cause that´s not radio-style.
                          			number.setValue(1); // just set it back to one.
                          
                          		}
                          		
                          	}
                          
                          }
                          

                          Here´s the new project in all its might:

                          radio-buttons-control-samplermaps-v2.zip

                          L 1 Reply Last reply 10 Oct 2020, 14:35 Reply Quote 1
                          • L
                            lalalandsynth @andioak
                            last edited by 10 Oct 2020, 14:35

                            @andioak I think you can tidy up and just use this to get the array.

                            const var Buttons = [Content.getComponent("0Btn"),
                                               Content.getComponent("accBtn"),
                                               Content.getComponent("soloBtn"),
                                                Content.getComponent("orchBtn"),
                                               Content.getComponent("organBtn")];
                            
                            D 1 Reply Last reply 10 Oct 2020, 14:55 Reply Quote 1
                            • D
                              d.healey @lalalandsynth
                              last edited by d.healey 10 Oct 2020, 14:53 10 Oct 2020, 14:52

                              @lalalandsynth said in Switching sample maps with radio buttons.:

                              EDIT: I could maybe cheat and map 2 sample maps into one sampler and use transpose to go from on to the other ...if that makes sense ?
                              That would reduce the amount of samplers needed , although that might give me silence as well....
                              EDIT2: Could I somehow cheat by loading each sample group into different velocity layers and then switch the velocity around ? No velocity is needed for the samples themselves. Probably not...:P

                              You have 128 keys, 128 velocities, and a whole lot of groups in each sampler. You can almost certainly map everything in a single sampler. I do this all the time unless I need different modulators/effects for different samples.

                              https://www.youtube.com/watch?v=dG-7K8cZoLI&lc=Ugxe66xKq5OP9f1-L2l4AaABAg

                              Libre Wave - Freedom respecting instruments and effects
                              My Patreon - HISE tutorials
                              YouTube Channel - Public HISE tutorials

                              L 1 Reply Last reply 10 Oct 2020, 15:59 Reply Quote 1
                              • D
                                d.healey @lalalandsynth
                                last edited by 10 Oct 2020, 14:55

                                @lalalandsynth said in Switching sample maps with radio buttons.:

                                @andioak I think you can tidy up and just use this to get the array.

                                const var Buttons = [Content.getComponent("0Btn"),
                                                   Content.getComponent("accBtn"),
                                                   Content.getComponent("soloBtn"),
                                                    Content.getComponent("orchBtn"),
                                                   Content.getComponent("organBtn")];
                                

                                If you rename your buttons you can do it in two lines.

                                for (i = 0; i < num_buttons; i++)
                                    buttons[i] = Content.getComponent("button"+i);
                                

                                Libre Wave - Freedom respecting instruments and effects
                                My Patreon - HISE tutorials
                                YouTube Channel - Public HISE tutorials

                                1 Reply Last reply Reply Quote 1
                                • L
                                  lalalandsynth @d.healey
                                  last edited by lalalandsynth 10 Oct 2020, 16:01 10 Oct 2020, 15:59

                                  @d-healey I dont need any different fx or modulators , so this is perfect , will have a look at this , thanks !
                                  Btw , is it then possible to switch without any interruptions ?

                                  D 1 Reply Last reply 10 Oct 2020, 16:05 Reply Quote 0
                                  • D
                                    d.healey @lalalandsynth
                                    last edited by 10 Oct 2020, 16:05

                                    @lalalandsynth said in Switching sample maps with radio buttons.:

                                    Btw , is it then possible to switch without any interruptions ?

                                    Yep

                                    Libre Wave - Freedom respecting instruments and effects
                                    My Patreon - HISE tutorials
                                    YouTube Channel - Public HISE tutorials

                                    L 1 Reply Last reply 10 Oct 2020, 16:42 Reply Quote 1
                                    • L
                                      lalalandsynth @d.healey
                                      last edited by 10 Oct 2020, 16:42

                                      @d-healey Awesome , redesign time !
                                      Finally understood the Defer script thing as well .

                                      Thanks mate !

                                      1 Reply Last reply Reply Quote 1
                                      • L
                                        lalalandsynth
                                        last edited by lalalandsynth 10 Dec 2020, 13:35 12 Oct 2020, 13:27

                                        ok, So I have set the instrument up with velocity switching but a bit unsure of how to implement the buttons since I am not using the keyswitching , should I set up 4 buttons in the Midi processor On Init and then link to those buttons for the main interface or do I do the whole thing from the main interface script ?

                                        not sure if this is the right approach ?
                                        switching.gif

                                        D 1 Reply Last reply 12 Oct 2020, 13:37 Reply Quote 0
                                        • D
                                          d.healey @lalalandsynth
                                          last edited by d.healey 10 Dec 2020, 13:37 12 Oct 2020, 13:37

                                          @lalalandsynth

                                          Your interface script is non-realtime, so it can't change the velocity of incoming notes. So your first idea is right, you need to add 4 buttons (or a slider pack) to your velocity changing script, and then link the interface controls to them.

                                          Libre Wave - Freedom respecting instruments and effects
                                          My Patreon - HISE tutorials
                                          YouTube Channel - Public HISE tutorials

                                          L 1 Reply Last reply 12 Oct 2020, 15:30 Reply Quote 1
                                          • L
                                            lalalandsynth @d.healey
                                            last edited by lalalandsynth 10 Dec 2020, 15:48 12 Oct 2020, 15:30

                                            @d-healey This seems to work , wonder if you could have a quick look and see if I am breaking any practices here ?

                                            HiseSnippet 3261.3oc6bszbbabDFKIgkHsoSriSUtRkTEJ5KTkUTviAO1njxjbIoLiIEYQJq7vQkJncGRhHr.aAfkRLpzkbH+Kx+gbLGyOgbLGyOAeOGRlAOVLX3vkX6rijcRVxCKlA8L82zyzS2eCVbTRbebZZbhRmkezkivJcdO0StLJ67dm6GDor21zBReQPV+yChNyQYqKG4mlhGnzoyhOfdGcVdIk7Oe8mskeneTebcQJJONNnOd+fgAY0kdzFeQPX3t9CvOJXHyci1Xu9wQ8hCiGSzlEU0UF42+49mgenO81VPUoy6ryffr3jSx7yvoJcVZq3AWdx4wuHp39ebPZvyBwzKLTNgzPEEuab3.pFS+tRuyCBGbTEpSUHM5Q0iAKVLF7QpGDLHXR40iEe27Jzpkfc7nyBSS8L.pdcXTukJTuOP8j9IAixpqgpauq5dQY3jS8Il.V0p3dUV3etjZuXxcDkcug9OGuaB4hIRrtit9c0r00uy8WcE5eDSQZl1E9IZOabVVbjg1OWqR7yvY8hGNJNhbw5qUV+ZTI4kx7FjxTnTV2fTVBkBcCRgVq.aZW8ivBoEW2GWfCi6GjcIoSxWeP6hFSRVespaoreBhBChvZmNNpeVPbjVbT4HEUIShCWuekFdWRODNFemUW4UqtxxUMy8RwYalkkDPDCu9jR2JuQrqjgzUuNu6tAiCs0J63d9ggOirzZcdMpx1ecZt47PyclIM2b5ZtYK0bq4gl6NSZt0z0bqVp4n4gl6MSZNZ5ZNhSyq9irfgQ6eXbF9vn0uyJuZkkW40qbkpN8Tg0U11g3DgUS2wHYZBtdz3gOCmTg2paj35rouY014atewvDyMFGsWTP1givkWeUO1JkisDe2pkZE4Vyx8b+9kdtKLKJADGzKqVtHTIWkY2PUYFD2rRb0N4ROChZAWTzrK52oQQWA0jOe4da6m4S25qbjjL5NBmjEPMbc1FeAIlhhMBWVcab5yyhGkOTWNMVoysZwf8KY6xKYu3EACxNutfe8FmiCN67L1RR7GDD+fj3wi3LWSTgkagAiQE9MaLeTgQUyC2izSqnV4FfDIUBIHJxd86kqAaUpAylFawnw+ie2aCM1ZF0XDiFqm81PiQMz32o0qJXlanwp2+1MZgdqb0PFIAtFOXbneVynYogvWVAwMZivFogFFkRAFC1mgPb0EFhqPGlsTc+.0in4gHVeWPf9RbgHa8sLggUU24zSw8ypU1kT28WAM6.XpxOrPU9P0SxRv9CIoqch+vQjcRy0mUTKuxXdjC2nVmC2QIj0G9CNI32yba+0M1ZLY7JoYo+4Mx6pMGFONpQeUp4GiGg8yHleFYt8FGeb9JTdo95OKexxiRHgtPFJXq3vHLYbOiEi8RhSSOk.m71JkspiFmbFcrptjiwWfSRaV1CGOjX6ihvgzfK5P2M7KSwTacP+C7Igk0X+l7dQ+Q941aRhs4WavcsI20VbWi3t1l6ZGtqcqutiZy4h2pcQCcf+ni7IPj4N2JnbVFothRXSmcxvZdWyjo929RCegqpdee08wmQbQ8KCxN+XLwFe1YkK193xZzdAoJsI00Xo2BcVrodtX6zyoEvoRa4JfYaKQTE72UUSvmoMzezI3Phas3DRZu52uIu.kIhxj0s+fAEEt9ZkUt1c0zI+2Lc8x7.mlfNDAMrtNQcmlntDQMctNQ8llndDQs5VIJqv9IIEQTjRj+qpRAuJg1pzCKakmHL8+B4mjMUc5bWTjIGkvgZxLHtMoFERuU202KHZ.9kGdZsrT0rl+hBZ5VuQCbmWUysQe+Trl9OsIYGjAiz3P78FkDPy.7zfjzr0pZ2pOWch.asOircyyuOW+XL89IESFbGbCcjYa5Hyo2QYmGjbS8CpM8i0MLvEmjc9MzON2P+L.ep+3vro1Q0SGdLMwozuR+IZep1Zj+9TsqTmwTpybJ0Y8Ddfvg1RMskSTdc8bzUW40zEGkqfDQyPy0IzNnbY1rbytyxM60taln6B32XxZ2CHq27OCSaqGW5acclgibpWV8ab7frx7hGjpQjpRzUl.P1hpwEao4vQvsUWzToYYoVwXQ4bNnzrTNKT.eEyf3t+mIt27hsjkXRJcoVLl8xJFdtjgpmYnEbJZg+.7VvsnEVpC3VvqnE9iMZg2XYJuX6R26FN.nkqzwSBnAcuSDMLNRITc7CIl2buxUk1LSuChihGcdbTP+l4xTE2JitKDPalkQbDVWxGswwDWajcFmTze4Osw9jPd7SZlh1UyBGbjthNLLg1qOVsPc0ndVz9uCFNV7+4Y3XZCcueI+FZjdOI6a3142SMOibMJAJusT0iiGmEDcVE4DpOb7vShGmzGyxiwBTmrEWqW4y7Dbzf7K9WjOkUZTQ5AsRipJU5W0TDrU987Mq5rHNhxHPddvgXh6J1ozoiO8TpJsfJ464F0g4jKPG4HkwQ3CEdGDz+nXxvFYEC08h58U574ERpz4cONlx0yRpHCk8i+B7kke+yCp+99wOlpBzQsOOn7qFUcTIsFAgkOHBVpu5niO7WrSuG8zcOb+s243WuEw90CGFF+S1O9L+HM50Z4E7zcMu2K7uPY6wiBC5SLeT.ueb7ncpvOssoETLssysTMLcccTJtmAzB7brsQUiDL3w1pFOjuOAO4kKM7XM63wwxqId5ZoK.OHDi8AwXePyFdPyBddvm.v.4YY1DPHcgFHGFCjCiAxQp.BfExtqUS.4o6IxBwLiCwLiCIyYbO.fAxQmaEjtqsHCjMiAxlw.YKS7.ZEjQS735ZIBOLd3rY7vYKQObaCY91UrOtVhV.gXV.gXV.gj4BnMg3QvwfCPHjoHCjGiAxiw.4IU.AvBYXzzEmqtmqHKDyJHDyJHjLWAsIDCjiM2dp5BWA4xXfbYLPtxDOP7Xay6QnqH7fXvChAOHYhmsfDyid2l3g7Qj8oKi8oKi8oqLwCD6iKWHBtFhV+XwXerXrOVtRzgPuOAjApIfr61UzVpHFCDhw.g5JU.MO1S01QTToVL6AYwrGjkiDmw0ChGNKNObFtFhLPLaAgX1BB4IS7.v93Z51.OntB8XawLgyhYBmkLmvsMnUPF5bqf7DsBxhw.YwXfrjoAZaPdDb4CxVXLO5Ltr0YbYqKS7.JIH9ztQBC4gAOHF7fjId1ATLobaAoaKz9XxXeLYrOlxDOPbX6x4vtqtPZDXvChAOHSI5PXWPzHX1zgfikkvXRY3EwlgWDajTADHW17VHagaA0Bh3LqAj00AH2qGPa1qWAlXKAFYb5bTiz0yCHYbxASfRdfahmsGBHgbsASdyJl.QJmiSyLHbML5BjTNIAJPoQ3waofRLmTl8AibNt8k55XBjbN4fIH6MYxSufkCPBsjxjOXjZwmgjmP24sgTKIAJPVJtn7HKo.RrkTl8AhbKdxF5ZpCjbK4fIP6QwamDdFKsgfKofosLmGQv10CHIWxASPrSHtr.sASzkTbR.hrKGSdP43BjrKIAJHVJGNP4IL.o1P3kTl8AgzKRRTM4TwwEAjzK4fIPw7wkwgqWWfDeIkIefH+x1jieeKWOfmfoj.EHKE+wXpaBjQOoL6a64AoDt1PY0SNXBRLe1VsI9n1vrmTvDD18PdbKnPNd.Y2SNXBTLeH9C0z.HCeRwIAHV9bzs4NIcgmKSaX4SRfBxJJCdFjDGIaK7RfpAk80Ap6e8f5vDBf3fUdYv7T30LSJCOTWfdJjFtf3s3J7HoaZCzag7v0b3QKzTWb17sviQav0OCBt.40v1nYphFtVP8ZHQfAwhgZtukogAzyHPZyD2ET.t7FLwjk0hyIPd3Bxdxbj.ZpKbhXaNq.oMQD14Ezkyf4X.8g3Uh.Cz4j5vYwLrAdlARalHjyMv1tI+EF1lV.O2.4gKPO2AHN6kNzyNPZSDAd9ANbFLOGfmefDA1rawHwXzbOLccg.qMmgfzlIB4bDr6xsByAA8bDjGt.EygN2JLOnOrrRCWfNOAt4gFN1t.OOA4gKP6fwYuL7zAdlBRywArGhVilKvz6Z5A7bEjHvf7j+XXyk2rvmEv1b1BRalHnGpVGNFoLMLAd9BxCWf9A3v4o20AA7LFj1DQXOjsH9fesg9KkRh.CxJLDeThB+Qg1lyZPdLtAIlCGKtmJZ5ONTleG02t32Q8OP8AgwOyOr9WScbTlePT4abqeTY0ZSpWaxMLs23c+s4+a7N92qWy76eLQ+bs6rzagWOZy+e36euqXlR++uRF9V2qjg2Du5.dSzGC86mD+z9Eu+cnKxtcdIDbGk6DbY0CnWqM4kTrpp98zUFRVb8z98oC2+Xx3iXYLAHiE.YP.jwFfLN.jwEfLdSUFpesMGmEOrXoHofi1o3MJQmIaxzYQk+8dgUgd
                                            

                                            Also, Say I need to change the velocity switching for 3 samplers in a synth group at once...do I duplicate the code from the Midi script in each sampler or can I do it in the midi script for the group ?

                                            1 Reply Last reply Reply Quote 1
                                            11 out of 33
                                            • First post
                                              Last post

                                            31

                                            Online

                                            1.9k

                                            Users

                                            10.8k

                                            Topics

                                            94.3k

                                            Posts