HISE Logo Forum
    • Categories
    • Register
    • Login

    Has anyone made a custom PNG based keyboard ?

    Scheduled Pinned Locked Moved General Questions
    22 Posts 7 Posters 969 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.healeyD
      d.healey @lalalandsynth
      last edited by

      @lalalandsynth said in Has anyone made a custom PNG based keyboard ?:

      I seem to recollect that you can make a keyboard using png´s

      https://docs.hise.audio/ui-components/floating-tiles/plugin/keyboard.html
      53cbc905-3122-46c4-aa0f-2cd0868e065a-image.png

      @lalalandsynth said in Has anyone made a custom PNG based keyboard ?:

      Can I skip the native custom keyboard settings and make this entirely with panels

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

      lalalandsynthL 1 Reply Last reply Reply Quote 1
      • lalalandsynthL
        lalalandsynth @d.healey
        last edited by

        @d-healey The custom graphics one will not allow me to do the custom start and end notes , as far as i can tell , let me have a look at that video

        https://lalalandaudio.com/

        https://lalalandsynth.com/

        https://www.facebook.com/lalalandsynth

        https://www.facebook.com/lalalandsynth

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

          @lalalandsynth

          The custom graphics one will not allow me to do the custom start and end notes , as far as i can tell ,

          It's very limited. You can't do key colours either. I wouldn't use it.

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

          Christoph HartC 1 Reply Last reply Reply Quote 2
          • B
            BWSounds
            last edited by

            Is it possible to make a custom keyboard and create a callback for each note and key(off the keyboard) on the onNoteOn and onNoteOff? Might take awhile but maybe?

            The keys can be created separately then in HISE placed them together, basically making the keys Buttons.

            Maybe…

            d.healeyD ustkU 2 Replies Last reply Reply Quote 0
            • d.healeyD
              d.healey @BWSounds
              last edited by

              @bwsounds said in Has anyone made a custom PNG based keyboard ?:

              create a callback for each note and key(off the keyboard) on the onNoteOn and onNoteOff?

              What do you mean?

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

              1 Reply Last reply Reply Quote 0
              • ustkU
                ustk @BWSounds
                last edited by

                @bwsounds Buttons are not recommended, but you can use a panel with an advanced mouseCB/paintRoutine.
                I believe @d-healey made a video about it, but it might come with its own set of issues...

                Maybe a panel overlay would work?

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

                1 Reply Last reply Reply Quote 0
                • Christoph HartC
                  Christoph Hart @d.healey
                  last edited by

                  It's very limited. You can't do key colours either. I wouldn't use it.

                  @d-healey Actually I think the best way would be to have a scriptable look and feel for it. I'm currently pretty busy, but if anyone might want to give it a shot, there's a guide of how to add scriptable look and feels here:

                  Link Preview Image
                  HISE | Docs

                  favicon

                  (docs.hise.audio)

                  The first steps are already done, so you just need to subclass this

                  Link Preview Image
                  HISE/hi_components/keyboard/CustomKeyboard.h at d503b363fd7e449cf9a587607c6c94c913e90546 · christophhart/HISE

                  The open source framework for sample based instruments - HISE/hi_components/keyboard/CustomKeyboard.h at d503b363fd7e449cf9a587607c6c94c913e90546 · christophhart/HISE

                  favicon

                  GitHub (github.com)

                  from the script look and feel and register the methods.

                  d.healeyD 1 Reply Last reply Reply Quote 4
                  • d.healeyD
                    d.healey @Christoph Hart
                    last edited by

                    @christoph-hart said in Has anyone made a custom PNG based keyboard ?:

                    Actually I think the best way would be to have a scriptable look and feel for it.

                    Oh that's a very good idea

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

                    Christoph HartC 1 Reply Last reply Reply Quote 0
                    • Christoph HartC
                      Christoph Hart @d.healey
                      last edited by

                      @d-healey Ah, I just realized that it won't be of much use unless you can draw images in a look and feel callback which sadly requires my brain skills to implement.

                      d.healeyD 1 Reply Last reply Reply Quote 1
                      • d.healeyD
                        d.healey @Christoph Hart
                        last edited by

                        @christoph-hart Yeah I see what you mean.

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

                        Christoph HartC 1 Reply Last reply Reply Quote 0
                        • Christoph HartC
                          Christoph Hart @d.healey
                          last edited by

                          @d-healey Brain Skills -> Applied.

                          Link Preview Image
                          - added image drawing to custom look and feel · christophhart/HISE@f4b0b17

                          The open source framework for sample based instruments - - added image drawing to custom look and feel · christophhart/HISE@f4b0b17

                          favicon

                          GitHub (github.com)

                          d.healeyD 1 Reply Last reply Reply Quote 2
                          • d.healeyD
                            d.healey @Christoph Hart
                            last edited by d.healey

                            @christoph-hart That was quick! :D

                            So this can be added to any LAF routine?

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

                            Christoph HartC 1 Reply Last reply Reply Quote 0
                            • Christoph HartC
                              Christoph Hart @d.healey
                              last edited by

                              @d-healey Yup.

                              I also noticed that the keyboard look and feel methods are a bit messy, so I'll do it myself. Oh and I'll remove the non-vector default keyboard during the process, I don't think anyone uses them anymore.

                              d.healeyD 1 Reply Last reply Reply Quote 1
                              • d.healeyD
                                d.healey @Christoph Hart
                                last edited by

                                @christoph-hart Will the Engine.setKeyColour() affect a LAF keyboard or will the LAF override it?

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

                                Christoph HartC 1 Reply Last reply Reply Quote 0
                                • Christoph HartC
                                  Christoph Hart @d.healey
                                  last edited by

                                  @d-healey Good call, I'll make sure it will get passed on as property into the call.

                                  BTW, I've just pushed a preliminary version. This is a example use case:

                                  laf.registerFunction("drawWhiteNote", function(g, obj)
                                  {
                                  	g.setColour(obj.hover ? Colours.yellow : Colours.white);
                                  	
                                  	g.fillRect(obj.area);
                                  	g.setColour(Colours.brown);
                                  	g.drawRect(obj.area, 1.0);
                                  	
                                  	g.setColour(0x22FF0000);
                                  	
                                  	if(obj.down)
                                  		g.fillRect(obj.area); 
                                  });
                                  
                                  laf.registerFunction("drawBlackNote", function(g, obj)
                                  {
                                  	g.setColour(obj.hover ? Colours.yellow : Colours.black);
                                  	
                                  	obj.area[1] += -4.0;
                                  	obj.area[3] += 4.0;
                                  
                                  	g.fillRoundedRectangle(obj.area, 3.0);
                                  });
                                  
                                  1 Reply Last reply Reply Quote 5
                                  • Christoph HartC
                                    Christoph Hart
                                    last edited by

                                    And this is how you use it with filmstrips:

                                    const var laf = Engine.createGlobalScriptLookAndFeel();
                                    
                                    for(i = 0; i < 12; i++)
                                    {
                                    	// use whatever prefix you want
                                    	var prefix = "{PROJECT_FOLDER}Oink/";
                                    
                                    	var d = "down_" + i;
                                    	var u = "up_" + i;
                                    
                                    	laf.loadImage(prefix + d + ".png", d);
                                    	laf.loadImage(prefix + u + ".png", u);
                                    }
                                    
                                    laf.registerFunction("drawWhiteNote", function(g, obj)
                                    {
                                    	g.setColour(Colours.black);
                                    	
                                    	var x = obj.down ? "down_" : "up_";
                                    	x += obj.noteNumber % 12;
                                    	g.drawImage(x, obj.area, 0,0);
                                    	
                                            // fill the key color if it's defined
                                    	if(obj.keyColour)
                                    	{
                                    		g.setColour(Colours.withAlpha(obj.keyColour, 0.2));
                                    		g.fillRect(obj.area);	
                                    	}
                                    	
                                            // draw the hover state
                                    	if(obj.hover)
                                    	{
                                    		g.setColour(0x33000000);
                                    		g.fillRect(obj.area);	
                                    	}
                                    	
                                            // Add the C octave numbers using the best font available
                                    	if(obj.noteNumber % 12 == 0)
                                    	{
                                    		obj.area[3] -= 4.0;
                                    
                                    		g.setFont("Comic Sans MS", 14.0);
                                    		g.setColour(0x77000000);
                                    		g.drawAlignedText("C" + parseInt(obj.noteNumber / 12), obj.area, "centredBottom");
                                    	}
                                    });
                                    
                                    laf.registerFunction("drawBlackNote", function(g, obj)
                                    {
                                    	g.setColour(Colours.black);
                                    
                                    	var x = obj.down ? "down_" : "up_";
                                    	x += obj.noteNumber % 12;
                                    	g.drawImage(x, obj.area, 0,0);
                                    	
                                    	if(obj.keyColour)
                                    	{
                                    		g.setColour(Colours.withAlpha(obj.keyColour, 0.3));
                                    		g.fillRect(obj.area);	
                                    	}
                                    	
                                    	if(obj.hover)
                                    	{
                                    		g.setColour(0x33FFFFFF);
                                    		g.fillRect(obj.area);	
                                    	}
                                    });
                                    
                                    for(i = 60; i < 72; i++)
                                    	Engine.setKeyColour(i, Colours.green);
                                    
                                    d.healeyD DabDabD 2 Replies Last reply Reply Quote 2
                                    • d.healeyD
                                      d.healey @Christoph Hart
                                      last edited by

                                      @christoph-hart said in Has anyone made a custom PNG based keyboard ?:

                                      var x = obj.down ? "down_" : "up_";

                                      I had no idea you could assign with the ternary operator in this way. I have some edits to make to my scripts!

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

                                      1 Reply Last reply Reply Quote 0
                                      • DabDabD
                                        DabDab @Christoph Hart
                                        last edited by

                                        @christoph-hart Does it only work with New Layout branch or Develop branch ? Or it will work with Master branch as well?

                                        Bollywood Music Producer and Trance Producer.

                                        Matt_SFM 1 Reply Last reply Reply Quote 0
                                        • Matt_SFM
                                          Matt_SF @DabDab
                                          last edited by Matt_SF

                                          @dabdab Only new_layout for now

                                          Develop branch
                                          Win10 & VS17 / Ventura & Xcode 14. 3

                                          DabDabD 1 Reply Last reply Reply Quote 1
                                          • DabDabD
                                            DabDab @Matt_SF
                                            last edited by

                                            @matt_sf OK. Thank you :)

                                            Bollywood Music Producer and Trance Producer.

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

                                            49

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            101.8k

                                            Posts