HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. HISEnberg
    3. Posts
    • Profile
    • Following 0
    • Followers 6
    • Topics 64
    • Posts 718
    • Groups 1

    Posts

    Recent Best Controversial
    • RE: Audio FX - Play an audio file?

      Cool just to confirm for anyone else who ends up here, it does indeed work with the file_player in scriptnode

      HiseSnippet 1448.3ocuX8zSabDEeVCiSvoIsopsms5IRUDxFLjf5gXL1t0sAvB6PiTOfF1cLdj2cls6NKXmnHkC8P+Vzy8qP+1zC8d9Fz9dyt16t0FJXQqQB44OuY9898dueuA5Fnr4ggp.hUo9S74DqOh1ahTOb+gLgjzoIw5SnsGuWjiPcTjtOOTSZLwmEFxcHVVq7M3trVaUh4yGdQClKSZySmhPNQIr4uT3Izoy1s92Kbcayb38EdY1cs5crUx8UtpH.QqPqP7Y1iXmyOjgaq.k7srvgDquht8laYWy4YNat416tiMaG9tCXCFTcKmZ01446VcqcY0d9N7JaSrJ1xQnUA8zLMODNzFJmI8FptTFeAmHBEm4xwAUI8faNdZx9CEtNcmROgDh0pcSIqUhIqOidfvQLa9rjFtP4TKxRZVEtNHU8V.IqLPZ0XH8XZO6.guNcEDOOf1Qp4ACXPrIKTh2Kw5Oo6qfMH0a3wFwaG.ClYv5aVoxSKC+5IecoRsjmKj7MbULGSRQagKOD1ppqR4tNtiRChj1ZgRVVIOTo4GIW+Ikdao0J8tRk+mKMXvBWCwRfx0kGrvkwblfqyv0kQdmwCdZ4KXtQ7YaD3n7DewaFwaGSMY1nR1QJzG4ySF2V45fDJ984CSjDtEBXERPHb2ZS35ySBWFx7GXWvGnB7HBGLEJ2bUIFmIakkCSyHVeI8scO9nuq098Os8QurYqie2IBkKWW9PkHjuwkrKHAL44bvoCfHM0BM0LSKoCN9298hwPzfqUhw0iRvUiHsVIM.ZMZ7fEfDxq5zDACjRk3qf+6yCzBjlsZxu.z.hyOWi1jGNRq7MjgmuRhLiE8VSGiyBfIYG3Ok663XzyLmX41uFiMo2XwafidE2w6+w5W8c3yB.wJn1AW4QzFZog46gtLY95UPoP4D4xz4kOPg0jEfT6b0rXgoLTnmjU38VnoT4Z0TtoP7wztBs8vEiwBK.iX1++AXLQI9gzVCFvs0o.bUZ6WurxtUt4xtz36uTRJ.bm3kmKiHKHNLxKU2Dq9vxwopv+BMULyOfCYR79pttrIqGx77c4GC.+okOyUYOpm3M74U.SxJaf6Xc6gLoj6FtLBkEui5PQNVEoExyOfoCDP0DE7+dPyca99InC4fBnFY73JSUn5wkNlA+E7IYwpyHLXwpSWLUdkbHWeoJXjIFk7ch08w.xWDKefjIO3zjX0XxdttpKQQAQRRLDhLy0U4NwenRJrwoh2wTLummJxnYY.dZEPioAlo9.7Xk9LgKVPzKJD5V3bjrGbNlWHYsxI7fPycdOZkMfefBjCUNvR2qMyFX+IcY5gXkF1.BRq4AaXOK89Jbnb4ZlGMcEaDuooOzJFsfS5YTFgmYgw5tSExPI7BVqjQROtD.GAE3EhS36DdBtpMykbRb+AfdvaINZXbrh3VeHc.vAm5a.DImq9ofqFv2H65y6P4s+58i7n1H+6xGOsWUlJwri.siNRG93oGXKnFwA5uaLKIo6.gLwKi2yArwyFaZnlg8vmNNcDjNlZZpzXp4ylqdOM2ONaJUlu2H9kwLV1YQV8QTLBeF7b4CPptOertuxblP4wE.Cf28CnuBbrAPpjCYNLzjOfE4pmadRFvu1MC7.PuUfuHzuSeGB5O7h8hzJO3LMciHWO8Wq9bdP8ecAzOn6bkdvGSOVozsC3+TDTdO4V6Ju+s0Wnq.yStCRdp+Gu4muF9+ATD4GipX29fvGdwUEDxWDXk0OhSYy83n69TqVigKSxby7HEnQcSQHCZd4jO2Y9TKyaYkbSKyv7CSTpwW3kWMpa1G+kjUSZnTi7Xl1RK0Ck+eoIpGyNPcpc76BP289lY.EToQ0cM5A33xK30+dvep6o114Op4Lbyk0vsVVCqsrFt8xZ3NKqgOaYM74+6Fh+mHRjCwTWnnpaq3VYVsjwUBPuUxeCPIPoOE
      
      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Audio FX - Play an audio file?

      @griffinboy Yes I am going to run a quick test now, but @ustk made a good assessment. It would be nice if there was a separate flag which would allow audio output from any of the sound generators in an FX plugin, though perhaps there is a good reason this doesn't exist (i.e. the relationship of input to output channels).

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Audio FX - Play an audio file?

      @ustk Ah this is exactly the issue I have been using the Audio Loop Player! This explains why I could see it operating in the background but not output any audio.

      @griffinboy thanks for confirming it's possible. I didn't imagine there would be anything unique about the FX export that would disable audio generation, so I'll test with the scriptnode version!

      posted in General Questions
      HISEnbergH
      HISEnberg
    • Audio FX - Play an audio file?

      Is it possible to export an audio FX plugin and play an audio file from it?

      I see there is the Enable Sound Generators in the project settings but it explicitly states that the sound output will not be used.

      Has anyone had success in creating an FX plugin that can produce sound. I have an example snippet of using an Audio Loop Player here which doesn't work.

      HiseSnippet 1320.3ocyWssSibCF1CvrpjtUsa6VopdQ0nU8B1JDJIDBj1KJPNrKc4PTRV11KpPlwNIV3wdjGGfHDOS80nW1WhdeeCn+1yDxLPVHjtrp4hn3+C9+y+mSSkzmFEIUHmbcFFRQNO0s8Pgte09Xl.sSMjyW3137sFPXxCFn6PiznsGFhihnDjiy7uxHkyhKfre9medaLGK7oiIgPGJY9zcYAL8XpM27MLNuAlP6vBRIcoM2wWJpJ4xA.hl2MOJD6eBtGcerQr4bQuFG0G47CtqUbU+Rj0IEKtVkx93xzJcwc6VXURoRk2nRgUqfKsQYZ90PNOoNgokp1ZrlFAW51Rxv18kmIhMvgrH1wbp4PATavxwjQU6y3jlibOQHjiaywNq4icVO2cOFgcM8zNMCCuwZj1o4L2cAoBO.H4jBRKDCom411WwB0i4Xvym5tiPSUcwPrIMThkE472tUkf.B8JA3SnMTvgqUXoh4yurG70K+ob4pK5wDzU3RLwlTzfwoQfnxlRIeIiD45NP3qYRgmTruTSOPrzKycQtEycYNuaxpa2IxyfEkjyopIx1jyntKEWRLH3XpZYuSw7AzqED7QYc7OY5b79wtlTBJE6HX5CBoImaH4DiC076aGlPI9VS.KAgfs01v0WmDtrNy2gOk1UpBPLhIEJCsBH6iIckEAqwHmuy8hlsN3WpWsyQMNX2Z0acYaHBcFn1JvWHEVziBOXEDkccLpYoTWPLmC9Cfva2ol4lRPG.T.7gTklY7QN0nmBEvwIWK5ViFchVFB0hUkAgRg4Y439feKmm9cLL8gvQNtcHl5Kqdd6JkgdM43gTkwAO1xOUmTGFa4FPdolI50AxJsF9ycSS58a2eayyXDceiK4Ogi8ord8sNrFiCewtfbtugN7XIVQPG2aTmpEeBgPtxbQLMMXL0qt5puMK0hIjsBqomqGK7HXYCFy86NtWjyy6Ef0dmAZu3G8JTZk7KanUiEEBNiC70fCceatNvtKlGQs72UdFnFPph83qYwmJTbc64pChzxfWovg8Y9QYzrFsKd.WuUXHEqLcxAtZ0fXlayglwvU0BbnRfQ9UJWw9YiMxudk7qWvJUGYudb5dRBMyMa5GB8GEBJ2.EKs2FQOj5CEjovx0VCX1fi0s0C423lZVeTH3lzs44isRwQzgr8T1tbtKgQP2pyIzyVRF.lLaibyHtDFPSlLcOMsHEQL8vzi.e.c2yemc2mVH9L2lLse+Iiw4l.FgJ8GCLlLS7ybq2sKDUGCvEba7qy5.vo27e0HyaaYX5XPim8MwlHu+kX9qocIlvodIFXiJeSAQ5zDaLqiBpnflSoMkAl0EX38SRStkTpMyLSuDUabPHOt4Nb8YjldJUEk8FLipi2i5dFYDXbGwyJBvmOZLAGvUl4HbKPudLhy7YCpKLcCWyVdkR9IrtyBOVafsvzk.dOi4++eKkLKLt3HL1lYRipKNkxghFKF+R2jIAinlshYOoPF1WJX9YS5zJVudTUZrOwGzVZMj3Olxy2rEkSwQoxt+9M2ExIwpaV27nt77DiWeiaLb8Lk4d+WhaeTSytywByOUiE9fi2YeDwGFnzRNvrK3dXHQ0zXC1cpMzk1mlrcPjoY1blU9hOmeTut1TAwdvr5VByBlyNILKLh4GEaDf8Uxi7i+uDlb4OwRAd2BaC9Ec2yb1aB+og.nq3Q99YupaoXwYUwUmUEKMqJt1rpX4YUw0mUE239UzLzZqAv54wkrHDr8p8OD33b8RANyi9WPT0jLt
      
      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: ScriptEditor: better CSS styling

      @Christoph-Hart said in ScriptEditor: better CSS styling:

      HISE | Scripting |

      Thanks for clarifying!!

      posted in Feature Requests
      HISEnbergH
      HISEnberg
    • RE: ScriptEditor: better CSS styling

      @Christoph-Hart Can you explain a bit further? How do you you "use" a CSS file within the HISE scripting framework?

      posted in Feature Requests
      HISEnbergH
      HISEnberg
    • RE: Get FFT values

      @ustk @griffinboy are right the scripting portion doesn’t work for realtime. I’ve recently worked on something similar to this, you can perform the FFT analysis in a C++ node then broadcast the values to HISE using global cables.

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: HISE would crash when compiling ScriptFX network and now when trying to load project after reinstalling to the latest version on Windows.

      @Bicrome the issue is your air windows nodes. Whenever you update HISE you need to recompile any nodes you are using as well. If you have air windows inside of scriptnode networks it will fail initially. You need to compile the air windows nodes first, then do another round of compiling the scriptnode networks that contain them.

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: a simple compressor meter to show how much compression...

      @gryphonsegg ah apologies I didn’t piece together you were using the dynamics module. If you check out this HISE tutorial I believe it has an example of displaying gain reduction:

      Link Preview Image
      hise_tutorial/DynamicsFX at master · christophhart/hise_tutorial

      The Tutorial project for HISE. Contribute to christophhart/hise_tutorial development by creating an account on GitHub.

      favicon

      GitHub (github.com)

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: a simple compressor meter to show how much compression...

      @gryphonsegg have a look at this it may be useful

      Link Preview Image
      Anyone know why this isn't working?

      Hi guys, anyone know why this isn't working? I've been going round in circles for the past 3 days straight. All I aim to do is send the core.peak for the inp...

      favicon

      Forum (forum.hise.audio)

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Anyone know why this isn't working?

      @Delamere I would personally probably use global cables for this, they can be used to send data out of scriptnode networks to just about anywhere in HISE. Your method is not wrong either, you can also use the buffer and calculate the differences, but I think global cables is just a bit easier.

      Link Preview Image
      HISE | Scripting | Global Cable

      A script reference to a cable object of the Global Routing System

      favicon

      (docs.hise.audio)

      HiseSnippet 2413.3oc6Y0rbaibDFPRPxh9u3TasUtErp1CTdskIze1N1tLMoj7pJqjYIJoroRkhYDvPxoD3LH.CkE2etmJOE4YXeBxiPdT70bxo6Y.HFPRIKyX6JaRntHLS2S+0+2CPiXgOMIQDaYW5vAQTK6a3zb.W1sdWBias6VV12143iZsGURiacHMQZUaPDIIgFXYaO6KQhrWbNK0u277ZjPB2mlujk0wBlO8aX8Xx7UaT82xBC2gDPOj0yf50qtqufWWDJ5C.ZVmJVQD+SIcn6SPxlww5qIIcsruqyFqtl+5AOLX0U23wa5S1j931j1s8VKX8027QO1asGSV+QaRqrgk87aGvjh3lRhjlXYOWMQvflcEulqEvwrD1IgT7AOqlfj0KuiHL.UQbUq5cYgAMxrTIVV1NMxsaypsaelydr.1v0yse+B0Ft4bXZ.smoH7ls.77LgWEC3MAHYa.o4zP5NNM8iYQx7cP7bcmc4fyrMA7SlPQSq0L+5EbpK.J3xU5QNktSL7vPNJ6sQk649nJK+jRk.WUhz8LRraV.h6ybyXsCUVWzKRvgGJuTFAKUjuN98.V1l2gwoHGuLTbBI7.QeIi2YOBG77wkAVL4nEiG0WBrALqjBArOkWJaiHJ4zkFkE3.u.dz6jwToG7.2CncXIntTmDFdBD9gKtuPRckcIR2DpDAmKS5JEtuHY.22kk31gxow.CCb6IhQRioj.2DRaZIFODTO21849Rlf61OJ.70GejxfTd4ReeIW3WnvmD5x3GSB6SUHUqOHbUqUdY2655UoxSLHGPuA8Zc4RYHf0tcFGYx59COlm3BpJlR6FSC5qQKomnOWpNhLm3JIYRX3wsrVHfyOQDRWIJlgdc0QcP1Q8abWx8qLPvW4tTPMzp+iEs69o18D21hX2SDxtvRf+JozPaRbJsYtnxYF2xmoPSpMcDKMHo6o8Xf6j0l4SPVP2dtw6C8Im86A20HhbqZMA6upLK5s1hkDERFTqe61z3lPoOHMaIc1Xqc91VdpHyggOBNVyLOvAOvcQqRK8A.mLb9ictkqj5iP5ekRYeGL3ghE4f01s7WTPD+vO39EEOCXESJVIjx6.Ntm55gaUfVi8VVc9Z8.+ESk8i4Zb9ikFQ8TQSOqfX9CU9iioTojUPjJ5FpKFG2SelaEC.NbsQA13g9Yly2Ir2pVgRbaQ8YmPCS1QDiRaGhOT82.Ri6ktRGfgBj41viXXx2PCGbZ2O+jMHsdHoWDMnkIK6QfHzdjyKC070+OiWdHA2yc8JKmIswsPkG+De.xgtpjNuWmCjHIwRcT8ZpNK28AEB3wpuuhqh3WD3xczsZ2dh6gshhEggoIKitcdZzEvXYd+dmPium6vTeEgP60h8rct3d1liT3q6LZPnfuKmIeUDkeQCZXk1NE9ui1cKhjfM5SWCnKhFKYHDr2hdFLlkts+hNaQSNUJhTzl1C1x9VR0t2Jcnflgr.ZrEC58WZ3DdVmmOL1WVcf4CIjyn6xaDSAGLNtPOVPPHsgHggVsbJ2s5qYAxtCWn5epZWJqSWiw+1uJDSk+3uuZhbPnZzyuVDy9NP8HgVTNVzWMYBSR6kMT3hyaY82dKx1IcxWqd85Ggqk.F2ComKqINGYzZ7YhfowDA8CIxhingINoafZi4bQ3rObPKGXNn6Gr41tpP7NNMXR+tSFiyLALBQJeLvX5zt2zYanvpuLGfy4ry29IXzVGs7KkFECxDE9McL5WV.E62uWg1ZX9p8LfNkNtq8ewIO0OJlFQhoGJZ.zWNAJeERO.P+8bOAle5zlruiNd8hHM3pgTT1uKgygpySSYk4ux1KuK2cMb.ZYLCxCb.afdrh5onKyFj9bE7YLhoIkGnd3svuzM8vmsS2zKaSiBS6SkuVDepxQk9+V1WC8JF0UNFr7pxDK3TYE3OqWDFJdMVchkFNqTK35cGRXgZMSQRCQ3fntBNyG8lZFxziWnlMcnCseBTIM3U7l.EpKgZOad5RsLGXltZOy9h.3oEzcPGzffEstiCVlFhogNY9CisMTj7XKDh56kZrM5uZPhgkkpXMToP4jUpRKaPM5opIC2nEBQg8Qq2BZ.MOJw4cv6jXU.aWGvVLLbMtQgPbEHtgitAeCb62gHmyn2gkUtQ5PRLLgQRZSFN0W6YTVpcCvdGcT2PqkZfbqgJJt2BNp19JIAoMmm0sZjruQWwBKdEPOOCmaC4FAvUuUrmErYXQsrLrRifmBVqO2IVmFrRAZF2vMxgXZ5Vb9W98+zaG2iYZ9TUmvmFfpxVnivv1osInLLte5DM4ETR3PydBPwdoWUyr39djyGYs277lRZjNDOmtlmRes1tXRIhyLGF1u7Pg5+AfeFnInPutyQfaoMjHDXMlf1h1lzOTN15unuTzCpdo5IY5nVvoCjKs5DimwclXZ07ptxEbH2vY8Uez5U1b0MWe0h9jYJX9l0v7cswMe+ymNt46IUyMeNPQJuBlNGGOnnkNyTgpTtQzVzZf7B0tLrDyZYflExQilxbjbMGXtXboKGHUVYsz2iSydB31wPHdFZl2YUj+h.JcwK.DWy49dUJhCMttLPLuyFq.N.cz9AzrQ9sJb.SxrXUnvSg5cRBu6nwG8v6bn1X7z1TNdGU5lof.uvTrE93lhckSfFOmYs2ublaCcATovAsFK4Yhlm2irlIYQdxeeZxZx49+m67uetyBpYE7deFV3lNouBfOlSKb6BMV89fOtf8663BiBnoadgQOkhCL7Su7u9gXfga6T3kS++HSLbw0mMpgb4sygL1GNgLvw3XRYXSVyMitSuL7k4K2M4XbWeRXlPAEqlPbZOh5RRS0Kxw7F32RuITBCL0pWflpXxmqd182QNi59R0Wi.zCuK4q08Otpestnq7Wq6U9RP7GFS3IQhjhQUzdrCEbTGyW7nD5Nwz+7AXbs450Ej3It0ad9NfRNQdZRj8iUIHYWKz3MgL6k8Q.8lxOB3b+G2GA7mAuuqBuLmEyvXSF1DXanVRHjKnv3uzIMEMa0hwx6I3hr2KPti9.pLl0oCsXoqIoPuPJI9mluxmU8.ZHkXFz9kU+FHXiDumpCxTYK7du+lsSze8qbzv0ES.c+466ob1+q98T9I48t8oPF8H9whV95WWIFmdM0JfdyUS.snyd3ytdVmM5PF8fpbs78KdTiw3pSKiqMsLt9zx3FSKiaNsL9vokwG8tYDaBkNxElZBCE1Xa8ny1am+8Vr9W2bw+RC
      
      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Preset Browser Tags - Proper Customisation

      @DanH Looks like you can apply some CSS styling to them but that is about the extent, I think the location and function will remain the same.

      Link Preview Image
      HISE | UI Components | Preset Browser

      A Floating tile used for loading user presets

      favicon

      (docs.hise.dev)

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Project-Specific Debug Logging Directory Structure

      @Dan-Korneff Nice thanks for sharing!

      posted in Feature Requests
      HISEnbergH
      HISEnberg
    • RE: HISE Meet Up

      @HISEnberg I sense Christoph is working on some HISE stuff, I suggest we wait until it's ready then he can present it at the meetup.

      Since we have the new update could be interesting to see an end of the summer HISE meet up. I'd also love to see the development @d-healey has made towards his Audio Dev school if the stars align. 🌠

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Zipper

      @dannytaurus Yes you can recreate the chorus in scriptnode pretty easily and use the smoothed node. If you want to use the built in one you can try smoothing the parameter with script, check out Math.smoothstep
      https://docs.hise.dev/scripting/scripting-api/math/index.html#smoothstep

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: ViewPort view position y

      @Oli-Ullmann Okay here is a cheeky solution to the problem.

      Inside the viewport put a panel to act like a container, then set the x/y position of the panel to whatever you desire. Once you recompile, the viewport will start from the top.

      const var Viewport1 = Content.getComponent("Viewport1");
      Viewport1.set("viewPositionY", 0.00); // Doesn't work
      
      const var ContainerPanel = Content.getComponent("ContainerPanel");
      ContainerPanel.set("x", 0);
      ContainerPanel.set("y", 0);
      
      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Best Practice for Managing Dynamic FX Chains with UI Buttons?

      @jhonnmick Lindon is right, you will want to spend most of your time looking at the SlotFx API.

      I've shared one template on how you might handle this here:

      Link Preview Image
      Modular FX Template - changing Fx order with drag and drop panels

      Modular FX Template Every now and again I see a user posting about how to rearrange FX networks and a new method crossed my mind on how to approach it. This ...

      favicon

      Forum (forum.hise.audio)

      it's fairly recent but may be outdated now, as the most recent update of HISE contains a dynamic container which is well suited to this task. If you pull from the recent developer branch on github you can experiment with this (I haven't yet).

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: MIDI Player overlay panel LAF

      @rzrsharpeprod said in MIDI Player overlay panel LAF:

      when I use my transpose script

      How are you transposing the notes? If you are using the transpose module it should be automatically get placed after the MIDI Player. Are you using a custom script processor?
      I'm not able to recreate the behaviour you described so if you shared a snippet it might help.

      If you minimize the range of the min and max Note, I think this should give you the behaviour you want, so change:

      var minNote = 127;
      var maxNote = 0;
      

      You can also edit this line to simply draw the note’s height in a fixed range (instead of dynamically resizing it

      var noteRect = [xPos, yPos, width, noteHeight];

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: MIDI Player overlay panel LAF

      Here you go, this shows how to display the MIDI data in a panel. I think there is also an example in the HISE docs under MIDI somewhere. My version tries to scale the MIDI data to fill the whole panel, so it should resize the notes depending on how far they are from each other (in pitch, not time) in the MIDI sequence. But this will give you full customization over how the notes are displayed using the paint routine.

      HiseSnippet 2161.3ocyXr1Siqb0AVu8RZ2pck5O.28CW4rKXrSBPPnaK4II.IjMIvBrZ6dGrmDOA+B6IgXp1+a89s9mX+OTU0uVs8L1N1NA1GBcuR0BgxbdMmWy4bloqqsJ1yy1kKS1A9NXtL+A999VT8p5HhEWqZbYdFuIQiTi34Xf74p36f77vZbYxr5ALRxr1S3B99W+0JHCjkJNADG2Y1DU7wDSBMAZ28OhXXz.ogGPLSQcw8aoZaU01vdBnNqxKy4fTuFMB2AwHaEdtlHOctLuheq7ETKpsiV97as61pnsw6NDMbnRAshE2tztJE1EUrz1X4s3x7z5ZDpsaeJhh83x7jJ1Z980su0JbCNi3Qtx.yVnv0G14PvMrMzXlHCJWUchgV249IONPJcS7ZqF509S7sAmTL7Du2yCPHjvQZGXlUVT8VcA0S4KodOfJsRJU52MOPFnRPPC6FnJ+Q91sp0RHDhxBJR0IttXKZe7MSvKFA2OB0.WHVjNXerssScKDndZoAyj9U.o8cvKhHyp+JYqbLypAw.GX2yW.TyrQHIoFhh3x7K7JEkkrFr8QkpdlgzfxkkZN3MC1or6A8lluzoiJciZgdFyTFapqzSIemJ96RuZ5VH7YCqV6ldkjNpvssJ29jQUuzsf9M61svwimT.4zz8rxkt8xV0FI207jy6ocadK+iOt01GNQu9QmJcv0GUs.tu6fxGWVhVc312VrRkgRim52s7j1Tc+yaWpfhtdiYRJCqTS+zRSd6fZ05LE0ubkaLeaeyR9ac4EmvwrpvLeS9MO0C65sI10B6Q2rF16ZpsylkmnQrE5iLc.mwlsa2ci5P.0hRPFdavbLazEhDaHmeiZtSLgETJHAfRHMHj71cyuQcMy7anjuzUNlRvIcHcfcrrOYjEhNwE19m1YhYED35iilOe+N1lD.OKcKAXMr0CAlko.QcWZ5BCgoOKjgL.a5Xm.3m2m6KEb+O7J6TJJ3pzn7fAPv0+1K6VwpUOIxXylG1cbkZijp8lxUtqRCpaO8qqn16v1EGewEiLO+5lXkxyFbxzCnie8YM145hnS8OeZs7mK4TW8L+AdzqTPZZmMXX4AjyObl132bwzxM0O4rCNxWt904ct4z563Qk6T+5S6d9AUbtRRZx3Vuw6tdac2wutSy23IctTEqwC0mpcEA45WuUKKsNRSpNEO97AVGHeSsi6fGnXHe4cVGRt7Hc8iv488l42bxc8lVR+j7EOb3NSu9tNct6vCqlJev92z7glDml1NE1nTg++Ii3u8ea7uW4eLXetTk4dRXYtWv2W0k3PSvvRU987sr.iaHBJlktPWHsbqbwZ7UsAJrnRlnqwMbgEwbHVPVdcg7xx41KaVnkjGUXJxUf4lhJdJ7SBAcIkFgoIUYEeY5BruD3NgYGKiOzNoOJHf46OHhp1fcZAKDe4RzwDR1kfI4gocg9Kzd1SnDKr3vIVpThsk3nbY+6YEfuQRCgVrkMLDo5DO1VH9xqFE1Z8k4.YxHJ3eatoPeUjAVfpiCrPAM3Hl.0VfIg.nNHKrQ.wLCwxlBMzAq5mR6PXaQG.SOrJEYMxHfDw2AtQ3u45vaIZTcwbI.ZhIizoh4dejFwjOjtvDDHdk76jBLZVDX4E09SrL7EbXAerVnNSFxTaWr.wKwhBHGvH9mSq0Du5lNTewbB+3OFaYRFXqQTcg+hfbt.1B8orug1tBhL5DHVwzmKFcBgo8VvgkqvtflyV7Nk2uWjxO+KwhaifTJXoXDn0SwejKJloX+QHSnYhQf9BL8w3eE+Cv6UEYnNw.5HKnEkX5fbghLvIAurKaH8fH6B6nx5w5wFyMiTaYPdOK4ILNCbtbfeQZQSQDC1DE8gA+XaTZl2LzwGpCuVPYIdY3h2lXErz5KIzTbk1MTyEcafH7dbgZPDAdg3Lszp1rt1dyi9xueu6g21kLBpQZzILrkJQ4djdK6DzbBxuDAKqQ8vlHmfSvWH3X6QXkHBOXSCfNOh6xboOPlqqIxfbGVKT8EWVMSh3PrINzbec1et4mVduRPLcvciTwubeEqJNSDJy.x7cLW65A6v5g9l0SInGv+4oizruMM2rToPID9qukTV1IGm4r.hQrZzgkaSUAlPwlKUCNgAVoKnftEbwi3hnhysUnajjbtuSMQ.ZKX.8E9hZj7rxkaD7kaOgknRCjxWQMTjjC928Jr7wEJJGnKNQWEHI4iXoQTYCCDWVeNMg4HK0PoaBx.9gxzuZ4lI6k86wemO1gGZgGyZalZuWWXgExRx2uI07XvGYsjSqoPSdKv4LvtKKiVbot0fKlUmMjF1wuv1ooE.n68vNrN5mXM2VgaPBmlDotSvgRHhBgfMIa1487ErCNCdB3bfd+qkEhCKiZ3vGDGa9CWaCCXtkGBMajO2uFihVAsXVGhiFfRNmPXvrEun2S+9tnmZ33PoHz1pkEgdhCNZ8W+V4bQySA+5zVAWS.l2KBFPmC1kRXpSlZ3oDUb3viqwGM6b.sQCgwkIKM.6ylOZIykywFD9E7KEc4lkdDV+zKBpjvkgOy5Y33zCRhXq9m.p4ihAj+zrYy9YF4IIqLne5Se5WVDZdFXNtO+QFXJdFMg3OCegurx8lN947ss0XM3W7MIXubSDBHltvDxrofsfbP+Et792+CUH+0u792oJ9B9tDpp9Cqiq7.5H6s.9MPGiddmmwWe3P37ahB9D9Fm+XeKmuw1GNV+HXHFWBjdwCMa6CQZULql.jI5wRiVgkwGtVlsl4A5iszBVvRHhPpvVmIBoxbjblHUW6OnFdRl8PJ+P.DPmrBth4Z7sYqET3BNcm1OydMvOnptnntGi4erLV3wxXwGKia8XYb6GKi67XYrz2lQVwoxSn1lgGa33Z2sd3qljI945xrJ2+CqyWNGC
      
      Content.makeFrontInterface(300, 200);
      
      const var MIDIPlayer1 = Synth.getMidiPlayer("MIDI Player1");
      const var pnl_MidiDisplay = Content.getComponent("pnl_MidiDisplay");
      
      pnl_MidiDisplay.setPaintRoutine(function(g)
      {
          g.fillAll(this.get("bgColour"));
          
          // Scale the MIDI data to fill the panel
          var noteList = MIDIPlayer1.getNoteRectangleList([0, 0, this.getWidth(), this.getHeight()]);
          var minNote = 127;
          var maxNote = 0;
          
          // Only proceed fill if there is MIDI data
          if (!MIDIPlayer1.isEmpty() && noteList.length > 0)
          {
              for (note in noteList)
              {
                  var noteNumber = note[1];  
                  minNote = Math.min(minNote, noteNumber);
                  maxNote = Math.max(maxNote, noteNumber);
              }
              
              // Calculate display parameters
              var noteRange = Math.max(1, maxNote - minNote);
              var panelHeight = this.getHeight();
              var availableSpace = panelHeight / (noteRange + 1);
              var noteHeight = Math.max(8, availableSpace);
              
              // Draw notes
              for (note in noteList)
              {
                  // Note data
                  var xPos = note[0];
                  var originalNoteNum = note[1];
                  var width = note[2];
                  
                  // Remap the Y position to fit the display range
                  var normalizedPos = (originalNoteNum - minNote) / noteRange;
                  var yPos = normalizedPos * (panelHeight - noteHeight);
                  
                  var noteRect = [xPos, yPos, width, noteHeight];
                  var shadowRect = [xPos + 1, yPos + 1, width, noteHeight];
                  
                  // Draw note
                  g.setColour(this.get("itemColour"));
                  g.fillRoundedRectangle(noteRect, 2.0);
                  
                  // Draw note outline
                  g.setColour(0xAAFFFFFF); 
                  g.drawRoundedRectangle(noteRect, 1.0, 1.0);
              }
          }
          
          // Draw playback position indicator
          var playbackPos = MIDIPlayer1.getPlaybackPosition() * this.getWidth();
          g.setColour(this.get("itemColour2"));
          g.drawLine(playbackPos, playbackPos, 0.0, this.getHeight(), 2.0);
      });
      
      MIDIPlayer1.connectToPanel(pnl_MidiDisplay); // Connect to panel
      MIDIPlayer1.setRepaintOnPositionChange(true); // Repaint Panel
      
      
      

      giffy.gif

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: MIDI Player overlay panel LAF

      @rzrsharpeprod Yes you have to display them in a panel and use a paint routine. I'll share a script for this shortly!

      posted in General Questions
      HISEnbergH
      HISEnberg