HISE Logo Forum
    • Categories
    • Register
    • Login

    Change filmstrip on button click?

    Scheduled Pinned Locked Moved General Questions
    16 Posts 6 Posters 868 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.
    • LindonL
      Lindon @tomekslesicki
      last edited by

      @tomekslesicki
      mycomponent_name.set("filmstripImage", "{PROJECT_FOLDER}my graphic.png");

      HISE Development for hire.
      www.channelrobot.com

      1 Reply Last reply Reply Quote 1
      • T
        tomekslesicki
        last edited by tomekslesicki

        Hey @Lindon , thanks! This is what I'm using and it kind of works but the images get updated only after I compile the script again.

        ulrikU 1 Reply Last reply Reply Quote 0
        • ulrikU
          ulrik @tomekslesicki
          last edited by

          @tomekslesicki can you use "mycomponent_name.changed()"?

          Hise Develop branch
          MacOs 15.3.1, Xcode 16.2
          http://musikboden.se

          T 1 Reply Last reply Reply Quote 0
          • T
            tomekslesicki @ulrik
            last edited by

            @ulrik Thanks, but still no luck, though! For some reason, the images still change only after I compile again :-(

            ulrikU 1 Reply Last reply Reply Quote 0
            • ulrikU
              ulrik @tomekslesicki
              last edited by

              @tomekslesicki Ok :(

              Hise Develop branch
              MacOs 15.3.1, Xcode 16.2
              http://musikboden.se

              1 Reply Last reply Reply Quote 0
              • d.healeyD
                d.healey
                last edited by

                Post a snippet

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

                1 Reply Last reply Reply Quote 0
                • T
                  tomekslesicki
                  last edited by

                  // Knobs //
                  
                  const var Attack = Content.getComponent("Attack");
                  
                  
                  // BG //
                  
                  const var BG_Front = Content.getComponent("BG_Front");
                  const var BG_Back = Content.getComponent("BG_Back");
                  const var Articulation = Content.getComponent("Articulation");
                  
                  
                  // Change articulation //
                  
                  
                  inline function onArticulationControl(number, value) 
                  {
                      if (value == 1) // Sustains
                      {
                          BG_Front.setImageFile("{PROJECT_FOLDER}wallpaper_piano_sustains.png", true);
                          BG_Back.setImageFile("{PROJECT_FOLDER}wallpaper_piano_sustains_2nd.png", true);
                          Attack.set("filmstripImage", "{PROJECT_FOLDER}attack.png");
                          
                          Attack.changed();
                          BG_Front.changed();
                          BG_Back.changed();
                      }
                          if (value == 2) // Shorts
                      {
                          BG_Front.setImageFile("{PROJECT_FOLDER}wallpaper_piano_shorts.png", true);
                          BG_Back.setImageFile("{PROJECT_FOLDER}wallpaper_piano_shorts_2nd.png", true);
                          Attack.set("filmstripImage", "{PROJECT_FOLDER}attack_b.png");
                          
                          Attack.changed();
                          BG_Front.changed();
                          BG_Back.changed();
                      }
                  }
                  Articulation.setControlCallback(onArticulationControl);
                  
                  
                  // Sustains
                  inline function onArticulationButton1Control(number, value) 
                  {
                          Articulation.setValue(1);
                  
                  }
                  
                  ArticulationButton1.setControlCallback(onArticulationButton1Control);
                  
                  
                  
                  // Shorts
                  inline function onArticulationButton2Control(number, value) 
                  {
                          Articulation.setValue(2);
                  }
                  
                  ArticulationButton2.setControlCallback(onArticulationButton2Control);
                  
                  1 Reply Last reply Reply Quote 0
                  • d.healeyD
                    d.healey
                    last edited by d.healey

                    Export >> Export as HISE Snippet ;)

                    I don't want to have to build a project to test your problem, if you give me the snippet I can quickly check it out on my system and only have to replace the image files with my own.

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

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      tomekslesicki @d.healey
                      last edited by

                      @d-healey There you go! :-)

                      HiseSnippet 1214.3ocsWssaiaCDkxwJM1sdQWf1WKD7SN.oIwdy1TfEAqVeKvcyEi3zfE8EuzRz1DQhTPhJYcSCPequ1Og9ozOo8OnkWjrjcjcrSSEBBLIm4LmY3vgC65SsPAATefVgKm3g.ZekduID13FigXBnSSfVI8NtvQnd2hYViA0m3ACBP1.MsMNVHhVg7.42meacnCjXgRlB.thhsPmfcwrjY6Z9driSanM5RraJoOvriEkzf5PC4zYC88AdPqq4l9LnPrb5.sMaYiYT+dLHCEvkoN0dRuwzaIJ4uBGfG3fDCpB5wARMMnwXric2XWM..zx2Mww2P43ei9oXa7z4SB.esbAiDMRGCzxMKkxOCkptHJ0l5XK.XAzSKE8xqn2K06Y4i8XIqH31Wp2gvP9Cg7vdZZojEj6W2TuAkKAgsqK7ZTae9foZT4vWc3NG75C29MkJVp3d6Y7dBcPfwd6IFx2JBXF2.8MdGiw2GLNxHFoQHVCpqGkvGTorZ4xJPjvT+3GfQ8i6Ks8BQIV.INorsOCaE5.YXJYwLHkPS4gjI7MQxHjALMJBpksApGxXTR0UxNQxtD5pjn1ZfVsTjGSbvDjwvPhkj0TRZ4EH5ScpPBcGf72gaamPz1FkJdWohF7O7PiJx4LN5Hipay8YidgALdFcfRfH4DewQ9cCPL4I81XGTkx208hy+oVMtre6yOoYqKt+VniiGzC422CCIz9AQ3sqGYT4cLX9bB7lDTUYEBLqTdH1wMfwSHkvyE9AfCURKfJMHO.NK49ockzBMk+KXw5Yo38IhLSrplJVMl5yd9hTRzdFiS8G7LGo3QC9eoSvDDJJIqA2cFvgrRlofoN1mjgs7j2niNOVNrzYliRWIjoRUkQuW7uL.9w49rLXlJFwa8qhKT6o6B0DFcANPsU0ApM0ARQyynLz4jJaW7thEJdew4WY3vrVJBHGjeVqJtl1eIpMm+GIG+lqYuZbyU6pQKU0xTBRIcHX14dnnwIWdVMiKOAQkaE2xGQPtnL4knuH5RzdNXajO.yAYKc0IFfj7o6cArHsUQeo1eqdF4UwPoq8eAlZyynO+VvJ3OuXFndfWYB94NMgLnnIin.EO3wKVwvh8Hslna3croZ4nfdSTv0LpG2UldwEP6KT1tTjskEqjltndbEFvmh89Iw+3VrMa7Thr0eXNFgGMNosv+72L40+h50aG8UunpH.OO2V197mlZx+9WLmLcvGwlyRw+xYdJ96mXNaIZf12ourRzKiZOZRjLDtaNYHLd66CwbTWylOLlepQ9PaL8XeZnW7QimpwqkkwMwOUiu0plrtvrlrrnKLYmDT17l3pIZa.dX2y7d3o1ByLai8hWvDsfv9o6fVzkLI.ylj9.3Zzs+9Y1selErVQ59R8thmfkMeykAe4mw++luQucpjdqgCQVrDxlWu8GdpOTZMnxEzPFlL5TH+LoH64rP2d7mOZgDc9SPNAhrkbhhvpw6GmX0CQrkC9G9WzhUEi0hVrZ7h7DMKeZeKUoWwqy1RNCmSDYwpB5mJFaLstuf2t7mL12xRDH99p.P1ZTas03UqsFGr1Z750VieXs03v0ViebIZHde96BYTW0wB9DcaIujSSqEAxypjYff+EnQR+NF
                      
                      ustkU 1 Reply Last reply Reply Quote 0
                      • ustkU
                        ustk @tomekslesicki
                        last edited by ustk

                        @tomekslesicki You'll probably need to draw the images in panels:
                        https://docs.hise.audio/scripting/scripting-in-hise/scriptpanel.html#the-paint-routine

                        Can't help pressing F5 in the forum...

                        1 Reply Last reply Reply Quote 0
                        • d.healeyD
                          d.healey
                          last edited by

                          Ok the code works fine (with a slight modification) but it's not well structured.

                          The button is changing the value of the slider but changing the value (using setValue()) doesn't trigger the slider's callback which is where you are changing the image. To do this you need to do as ulrik suggested and put Articulation.changed() after you set the value.

                          If all your button presses are doing is changing the value of a slider, why do you have the slider at all?

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

                          1 Reply Last reply Reply Quote 0
                          • Christoph HartC
                            Christoph Hart
                            last edited by

                            @tomekslesicki said in Change filmstrip on button click?:

                            Hey @Lindon , thanks! This is what I'm using and it kind of works but the images get updated only after I compile the script again.

                            There are a few properties which are not updated on "runtime", but only on initialisation (the most obvious being saveInPreset) and it might be possible that the filmstrip image property is one of them.

                            Be aware that HISE will just embed the image files which are used by the project, so if you don't click that button after loading the project and make it show once before export, the image resources will be missing in the compiled plugin (which is one of the reasons why I didn't allow changing strips on runtime).

                            1 Reply Last reply Reply Quote 0
                            • LindonL
                              Lindon
                              last edited by

                              @tomekslesicki - given what Christoph says, and your limited number of "states" you are probably better off doing something like this:

                              > // Change articulation //
                              > 
                              > 
                              > inline function onArticulationControl(number, value) 
                              > {
                              >     if (value == 1) // Sustains
                              >     {
                              >         BG_Front.setImageFile("{PROJECT_FOLDER}wallpaper_piano_sustains.png", true);
                              >         BG_Back.setImageFile("{PROJECT_FOLDER}wallpaper_piano_sustains_2nd.png", true);
                              >         AttackA.showControl(true);
                              >         AttacKB.showControl(false);
                              >         
                              >         AttackA.changed();
                              >         BG_Front.changed();
                              >         BG_Back.changed();
                              >     }
                              >         if (value == 2) // Shorts
                              >     {
                              >         BG_Front.setImageFile("{PROJECT_FOLDER}wallpaper_piano_shorts.png", true);
                              >         BG_Back.setImageFile("{PROJECT_FOLDER}wallpaper_piano_shorts_2nd.png", true);
                              >         AttackB.showControl(true);         
                              >         AttackA.showControl(false);
                              >       
                              >         AttackB.changed();
                              >         BG_Front.changed();
                              >         BG_Back.changed();
                              >     }
                              > }
                              > Articulation.setControlCallback(onArticulationControl);
                              

                              HISE Development for hire.
                              www.channelrobot.com

                              1 Reply Last reply Reply Quote 0
                              • d.healeyD
                                d.healey
                                last edited by

                                Another option is to have duplicate controls, each with its own filmstrip, then just hide the one that you don't want to show. But like I said before, your code works, you were just missing a line. Whether it will still work when exported as a plugin though I don't know.

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

                                1 Reply Last reply Reply Quote 0
                                • T
                                  tomekslesicki
                                  last edited by

                                  @d-healey , @Christoph-Hart , @ulrik , @Lindon , thanks so much for your help! I managed to get it to work thanks to your suggestions :-) Cheers!

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  11

                                  Online

                                  1.7k

                                  Users

                                  11.9k

                                  Topics

                                  103.6k

                                  Posts