@clevername27 awesome!
Posts
-
A snippet to use computer keyboard keys to press buttons on an interface!
here's another snippet contribution! I needed to create some "key commands" for lack of a better phrase that could press various buttons on my interface to say "mute channel 1" by pressing 1 or open preferences by pressing "P" so on and so forth...this snippet has 25 buttons assigned to 25 various keys on the computer keyboard(all noted in code) im utilizing the
setConsumedKeyPresses
so feel free to tweak and add whatever keys you want these were just keys I used for my project...
The only thing I couldn't work out was the "Shift" or "Command" or "Option" modifiers so I could press Shift +1 or Cmd + G or something like that.... feel free to take a crack at it or tweak/fix my logic...still learning! big shoutout to @ulrik for "teaching me to fish" on this one!
HiseSnippet 1733.3oc0Y0rbaaCDlz1zMVsISxL8R6ITcHi7DaGQJ4+pSZSj+a7j5D0Hmz1ISZBMIDEpo.zPBEG0L9EnO.4ApOM8TmdNWZ2kfjhlx0w1r7P4AXQf8CeK.91k.FsCDNzvPQfl9bGLZ.US+yL5LhK6sYOaFWauszzugw91gRZ.QUUqQCrCCotZ55SuKVg9bynE87WeaKaeatCcbUZZOWvbneGqOSNt11O3QLe+crcoGv5mw5lOXOGAeSguXH3OSaTWafsyQ1dzGailMkgl9ra6xjhfNRaIMDrokvcTmdhi4J6eNKjcnOEewTqCzQpp01rGy2scxXMTSSel1iG4SqF4etw9LWVZ8imAtYTCjwHxNGnO044RlWBWROiKMixktkQGm.1.43VP+4SM1iCKHcsgo5rthxVso18ZFaJ.K3xk5aeDcm.3kTD0LqWu9BDrb9MpT4t2krY.EbchM4PX11KPLj6RFXyo9Dof3XOPNLfRNhNZP.3BzvJATORqcI2mjPhsqaaz9ZUasa0EHPuiccqcWJjJqU8XlqrW0TFSptGk40SNY8199hi2DJQuIDZu5inif4df6pwN7VztLNkH6E4VDX7y738AOIjzUDPrVlb3PoTvUtJXxCyXw8IunBAdpZh8sEVz.KZhEKiEqfEqhEqAEvCPYKUGRLWbME50w1qqZ+7exfd8EMqqfuCBe+KIbSyEMsT3+dD+OfEaiEOEKN.K9Ir3YXwdS57MVzJl+1nE3hU0NXwV+6dRF7VlKZ0TguUUxE7IEOrtT4kpEvmMvEUbuFVvAMT3v9TWXQtsRe8ZT1w3N9CcAQouOt.FFKOlz5Zmd4MVg7TZWZ.EREQnukEJYbuDIAwFT2gP7Zj9oOPDTCwNHvdTjZIwLPl.NKJmp8F6.BCpn9FvetGLLf+dm6LO4cQSEiAgYo.yppFtUI2gTiAElfOgFF2yKMXXXuZIgNd3Xp+.AGdo13tY942.m31gJc5M4P3vQj81pxIQiz83LIy1m8qz3lgAGlHJyfQkYBGQcs8CoKP9+wedYzTPlwGpERisiGlnVIx5nIiNTYZhJHykJGBALFSUjO6VrjJQJkjxoV2gbGISvqIN7WRVjwrj8nPeklywC93PnL48rIXTZoDoAz3dbW5ago+Sa2RLr5mzEoYIWZXTtafVTAifYcI0RA+Mf5ib6aOt2tWpbxmx8j8RbzXm8.gmmuJCYz7DQzM5EGQ.LVA4l6X8TJtrpkWjvzKAG+qN6V1HE4XsFXcrik0tTCwAkpcvgQGcaHdVEJlzAQp8vJYSgnZAWrdts+PZsy1cleiyBjSOatG0slJf5f.lmGrUln4h3E7TTmD8qSHTPNkY5Dy4H7oKMHfAwnQeMhKjvX1Q3wAco6WSvX8IVFIQeo5vgdd3bMWvW7XQvQ3uiRnoX7DvqSDbfP8wBI8I7ZyW4cUlCBvI4apa2yrMLaRfv2mFblMi6xJ37.ViOr+gzfEHuAmeSMD1Fxo2ayrWr813nRtkwPAGiiex.Z766H7cw8rf+dxcBoEmcD1SzWD6gfoxncDci3cDoRxpwfNYNC0KlZQtOrSnoztDvrRfMderWF3MJF7lEC9xEC9JEC9pEC9ZEC95WM3URjK0KHdyBh2pf3aTP7MKH9kKH9UJH9UKH90JH9Bp+rJn9ypf5OqBp+rJn9ypf5OqyR+8r81xVZiGlN9aHv2UFPCjL7yW5aQeCygpNZ8bFaQCORJFno+koaAWS+ST7d8jCdi6TLh1YLZsq1a0zMzQpFk7inS2B81r+wzJmPct1r0b5SzhGeO8Ds3m5Rod1KvW3hb.qDGvJqCzVKuCTK4eBykhDKEIuuTIoghjOTpjzTQxOqWljrrhjeuTIYEEI2dpxjjUUj7akJIqoH4OKURVOWbx6+ujjL6e3zAJkCKl4hTJGVrxEpTNrzHWrR4vRybAKkCKKmKZobXYkbgKkCKqlKd4CkBKqkKdobXY8bwKkBKV0yEuTNrXlKdobXwJW7R4vRibwKkCKMyEuTNrrbt3ETFbQXYxK34lF6KbG5aKO88MgWrVbCLwouyM7hb3gL4nr668RbIT0O2Kg5h5h2xnMS5z6r8woNCeD1RdY3iwWc20M1taWpibrCNiwN+3U8d59Hz+TwP7eG+91x.FpCd7v9cDCCbn.6b33BgnjXJTTodudxYE5P4tQu72vSbil365wMZlznVeam.wqbTmFBubvqEUC3S7n6BcNi8w2ISbFPMs9LW1qbbNcWMAPqqJvFWUfMup.W9pBbkqJvUup.W6iCDuJ4GNTJ5qBazz1u81QmYUWeatMn.iTqZ+CPJmffA
-
Audio Render not working as expected
Messing around with the audio render snippet example in the snippet browser....works fine in the example...but when I bring it into my project...it doesn't render anything but dead space...and then the audio in HISE becomes completely disabled and I have to restart to get it back working....im trying to get it to render a preloaded midi file instead of the one that's created by the example...here's the code ive added in the attempt to make it work....
Content.makeFrontInterface(510, 160); const var DELETE_TEMP_FILE = false; const var SeqView = Content.addPanel("SeqView", 0, 90); SeqView.set("width", 210); const var AudioDragger = Content.addPanel("Dragger", 0, 32); AudioDragger.set("width", 210); AudioDragger.set("allowCallbacks", "Clicks & Hover"); const var MidiPlayer = Synth.getMidiPlayer("MIDI Player1"); AudioDragger.setMouseCallback(function(event) { this.data.hover = event.hover; this.repaint(); if (event.clicked) { if (isDefined(this.data.tempFile)) { var fToDelete = this.data.tempFile; this.startExternalFileDrag(this.data.tempFile, true, function [fToDelete]() { if (DELETE_TEMP_FILE) { Console.print("DELETE " + fToDelete.toString(0)); fToDelete.deleteFileOrDirectory(); } }); } else { Console.print("! You need to click on render first."); } } }); // Button to Begin Rendering const var Button1 = Content.addButton("Button1", 0, 0); Button1.set("text", "Render"); Button1.set("isMomentary", true); Button1.set("saveInPreset", false); Button1.set("width", 210); Button1.setControlCallback(onButton1Control); inline function onButton1Control(component, value) { if (value) { if (!MidiPlayer.isEmpty()) { Console.print("MIDI Player has a sequence loaded."); local eventList = MidiPlayer.getEventList(); Console.print("Event list size: " + eventList.length); if (eventList.length == 0) { Console.print("! Event list is empty. Cannot render."); return; } // Add a stop event at the end local timeSig = MidiPlayer.getTimeSignature(); local length = timeSig.NumBars * timeSig.Nominator * (timeSig.Denominator / 4.0) * timeSig.LoopEnd; local ts = Engine.getSamplesForQuarterBeats(length); local stopEvent = Engine.createMessageHolder(); stopEvent.setType(3); stopEvent.setChannel(1); stopEvent.setControllerNumber(1); stopEvent.setControllerValue(0); stopEvent.setTimestamp(ts); eventList.push(stopEvent); Console.print("Added stop event at timestamp: " + ts); // Render the audio Console.print("Rendering audio..."); Engine.renderAudio(eventList, COMPOSER_RenderAudioCallback); } else { Console.print("! No MIDI file is loaded in the MIDI Player."); } } } inline function COMPOSER_RenderAudioCallback(obj) { local isFinished = obj.finished; local progressPoint = obj.progress; if (isFinished) { Console.print("Rendering complete."); local bufferDataToWrite = obj.channels; local audioFilesDirectory = FileSystem.getFolder(FileSystem.Temp); local fileToExport = audioFilesDirectory.getChildFile("export_temp.wav"); if (!isDefined(bufferDataToWrite[0].length)) { fileToExport.writeAudioFile([bufferDataToWrite], Engine.getSampleRate(), 24); } else { fileToExport.writeAudioFile(bufferDataToWrite, Engine.getSampleRate(), 24); } Console.print("Audio file exported to: " + fileToExport.toString(0)); AudioDragger.data.tempFile = fileToExport; enableBroadcaster.sendAsyncMessage([true]); } else { Console.print("Progress: " + progressPoint); } } // Visualize MIDI Sequence SeqView.setPaintRoutine(function(g) { g.fillAll(0x11FFFFFF); var displayArea = this.getLocalBounds(0); var noteRectangleList = MidiPlayer.getNoteRectangleList(displayArea); g.setColour(Colours.white); for (noteRectangle in noteRectangleList) { g.fillRect(noteRectangle); } }); // Broadcaster definition const var enableBroadcaster = Engine.createBroadcaster({ "id": "enableBroadcaster", "args": ["shouldBeEnabled"], "tags": [] }); enableBroadcaster.addComponentPropertyListener(["Dragger"], ["enabled"], "set the enabled state for the dragger", function(index, shouldBeEnabled) { return shouldBeEnabled; }); enableBroadcaster.addComponentPropertyListener(["Dragger"], ["text"], "update the text", function(index, shouldBeEnabled) { return shouldBeEnabled ? "Drag to waveform or external target" : "Press render"; }); enableBroadcaster.addComponentRefreshListener(["Dragger"], "repaint", "repaint"); enableBroadcaster.sendAsyncMessage([false]); inline function drawDragPanel(g) { g.fillAll(0x22FFFFFF); g.setColour(this.data.hover ? Colours.white : 0xBBFFFFFF); if (!this.get("enabled")) g.setColour(0x44FFFFFF); g.setFont("Default", 14.0); g.drawAlignedText(this.get("text"), this.getLocalBounds(0), "centred"); } AudioDragger.setPaintRoutine(drawDragPanel);
-
RE: Button to Enable/Disable saveinPreset (Snippet)
@d-healey yea I think I remember seeing this but didn't read all the way through...interesting...so far in my situation it's working fine...doing a bunch of tests over the weekend.....its a tempo knob that I programmed to change the bpm of a midi player and I just would need(the end user) to bypass saveinpreset on that knob temporarily to audition loop presets outside of the bpm that's saved into the preset...but been poking around on it all day hadn't had any issues so far...
-
RE: Button to Enable/Disable saveinPreset (Snippet)
@d-healey I just tested...works perfectly...at least for the case im using it in...something im missing?
-
Button to Enable/Disable saveinPreset (Snippet)
Just giving back here...I was searching the forum trying to find info on how to create a button that would disable the 'saveinPreset' on another button. I needed to be able to bypass the function on a "tempo knob" that controls the internal bpm of the midi player...so that users(in the standalone application Im building) could bypass the internal bpm and just use the host bpm when scrolling through presets(in standalone) I couldn't really find anything direct...but I was able to stitch this together from reading a few other posts/snippets...it works! I thought I'd just throw it on here to help someone else that may need to do something like this in their project...Im sure there's a probably a better/cleaner way to do this...so feel free to tweak this if my logic is wrong/bad...but it otherwise works in my project
HiseSnippet 1009.3ocsV0saaaCElxwpX1aqaEnO.D4JGrfD6s1tgFLzV6jL30lTi4rfcWAszQ1DQlzfjJYtE8krWsGi8FrcHojsTsiSlAlPPrHO+78wORcNbfRFAZsTQBZbw7Y.I3qBGNWXlzaBiKH8OlD7vvyXZCnn9o5NeFSqgXRPvN+hchfF0Itm+9EcYoLQDrbJB4RIOBdCeJ2rb1Au707zzSYwvE7ok79IurejTzSlJyP9rSXaxLVzUrwv4Lqa0BIAO3jXtQpFZXFPSBp2UFOe3D4MBu+Wx07QofcPGxPLQ9oOUlFaYrcVRuI7z3AEqaMAyxfkpvNdU3wgmwi4KleoZ7sNCzkQTVOBpUkd6TgdctM5sFJEThR08T5QgCiT7YlkVr74KC6KvMmDFJ6koh2WRsWTOrmD8PXNXJ6J3TENXQDsdV616Sw+s2QMO7PZOEf7lxnixLFofZj3eiGmBTM6ZnuXfBzfglHUTCLcl70hQMwMLsgdMS474Bm6cMB5OSKfcLX5IQuE3fV6Vwqc26HJha2EvABFpOGFy01eq.aIjJ.+VAovg77ewDnXIcCPugIL2AVTonoUP5K3FNKk+9Mn.zQLTxoV9ivv8QP01S.TYRUUoYQPGfYwqEE4b28q5pcEcIKMCZsmeQLDbr1BRTlRgqSTKP6qBRybuQAynjozHVZ5H7CIOsw3y2T8RRStHkK.ZRlHxvwkgTLrb554yRqnB4ceOt607CMo3SNXUkujaQdjhCkII2l5XS2FUHOvG4br.72HGWQTr4NS6Vqwvnrwi4hwNewEhVlBGLSwEeVpobMUHu44zcoe2BP9nSHekVyG6I+J5ItcTcATcGTaOS5BoWdDsVu1hfUR8OWZf2JZY02FHInetojj0ZKOWofZslsUZUaJvVhroi.UocWmiX4mp0zdv8qlVj+CyRNJE1Omd6LHe7lKJSx+xFe626eLyvrEEymC8aFnLbKcBNFtF6v3KQ1H7XPekQNCaVrnb.IHz3r9v7Bn9xMDNh82DVYKi7mnyA+Jh4b6KWguT9XhstJ4dk2lgEmi8o7SEo7uVIkKaURVslO1sQFmkxLUaAY66la.2CqT22VaWn4l4k6K+enuT6M1W59RwGENfahlrdNVaMbD2c++fi4cy+5vSRRfHyRBVO7z+XaaceGv+axLCVy4LlQwsa9mmMcHdglH.QWHfTs8bPM6Ib+311wVEXHHhcC9G7I2XG63fbicJLRlxhTx2kWPxdeguvMCxIg6pRMv6rgiocHtulKqySwqu7tnnpoZk.+9sMveXaC7IaafOcaC7Yaaf+31F3Oc2AZuc4qxLxo9OaHjyFbhq7WPvItKr3NsR9W.5l9c1A
-
RE: Codesigning/Notarization 2024
I know this may muddy the waters a bit...but ive actually never code signed my VST3/AU...only my AAX because its required...Ive only ever codesigned the .PKG when I was using those and the Standalone app(via apple's signing/ notarizing in Xcode) now I have a custom installer that I built and I only have to codesign/Notirize it via Xcode(not via the terminal) and I dont worry about the cosigning any of the individual binaries...and all my plugins run just fine for my users...
-
Create tooltips like this...
When I hover over this combobox in the interface designer I get this info tooltip...How could I create a hover tooltip like this? Thinking of creating a "Help" system like this for each interface component vs having to create a manual or a bunch of tutorials...
-
RE: Anyone here using Cyberpanel for their website?
@orange @d-healey thanks for the clarification! ive had issues with Cpanel in the past...but it's been pretty rock solid for the last year or so!
-
RE: Anyone here using Cyberpanel for their website?
@d-healey cyberpanel as in "CPanel"? making sure im making the correct connection because that's what im using via go daddy hosting...and when you say "Update" do you mean update the PHP version or something else?
-
RE: Delay speed - tap
@ulrik yup this is what I was after! much simpler than I thought! and yes I meant a "Standalone application" so sorry...been separating the two versions of the plugin in my head as "Plugin" and "standalone mode" sorry...Thanks again...gonna play with this and test to make sure it's all good! but so far so good!
-
RE: Delay speed - tap
@ulrik take a look at this snippet...I modified this to work in my current project but it basically "hacks" the tempo sync to use an internal bpm and you can switch between "daw sync" and "Internal" the Internal is what im actually after so that when my plugin is in standalone mode tap tempo could be used to change the internal bpm...there's a knob in there that controls the internal bpm...anyway we could hijack the tap tempo to change the knob position?
HiseSnippet 4007.3oc6as7aibjdu4LSOqIsmYsw5f.jSUzgMTqF2hujFN1vq3qlhT7o3C8xwwoX2EIaw9AU2MEEm.mXDDffbIHmx48XtFfbH2VCjK4+fbZMLRNkSw+Gj7UU2jraJRFNZ7L6jMRXNv9qpup988n9dTcO0MMjHVVFlbAB1ZxPBWfOfu4Dc69Y6iUz4JliKvSoDjpXHSZQrr4xLYH1xhHyEHvCOjNm.AeDG6ue3fLXUrtDYNINtSLTjHkUzTrmSsdpRJpp4wvJpn4Y1IRUTxPOqgpwH.OOjOB2Prz.bORULcZOfmKviEkUrMLaZisIVbAdTFC4IM6aLV2Y9mnXozQkPeHJWSXgbHm2PUlhXJUtr8UTkqOUts3fEs9bsvCczBeLeEEYkYzmqM9P1.n4b3UeD3A9g2C8AundgWDOvaIP5AdfzOYpggAIU7DhoqgoRwbEQNTh5CHYGYZRzsaRtZDwmA4GNvcnVlfp0K8xFFCE0w.7j8Rlt5cfo1bHw+.Ad3FKqQWqrxQEq7JpDpbGX5CvroxHXyygswbA9a4iFIlfdq8KkLaiSMJIHT4XwKtLsffvYBBoEpKnoznYqhwt.nHbXZgKExIHbdiLRB4xzQ3xRoULZ2umP2CuTna2qSW.VfBWb9E2Pfwk0ykQP87LB4OJSwDoqWHZuVEDpmsnvYEZq97CE5EWqNvaKUXs2YmLBbTH53U9WyuaYkNlXyI6ld3PUEIrshgNp4ngCMLs28PCSr9glFFWSrPL6EUQasaArt7Dj6.61vPZ.Jm4HM2eNkgLXKEIujPQhlFkwRBcrsoERRE0GaaAhN0pSOL0TomN1djI.rGWcjVFLngAi128af+9x+yCpZno.iyNt6ZI+vT4H5KiLEmfw0z16wYGuDeNBsHZCMlS37Tbd7cejiu6Gw2TxTYn87QnF22muntMwrKF7P8585LWtG73eFeVCXF51BZ3Aj7lvCy3HbxHQdFZ+HQ19yBAyxxPkHHoRvlgABg18WDJ3wsEAGhZUa9ogBFJ3mf7bZAIaPrz+irQpf7fv1H69DDQWtVW14BD4ZXSeFpyHaDtKrgrwUwV1HcCaBxnaWjhtkMAKiLIViTsUz6ATPXjs4HcvEfHirbO7IDJHB0puhEB9GccjvVDzXB7SSzDiQng.jPcMMzPVT0MSB0wpYUolcCSvJq.+fMKXKnqPk5nvi6SzonAYAQmgsy1fMjF.RBkGFycQRPrTKx1NZ.KhcM8LDrMDOSuGYlVnqhIYpV.9MHlcfIQw8uDUjBZJ3oFBHJ5A+urTFppFiAEgzHKaPjrodGLEogt5DG87MNBHPg7LTepNhQuP5rkPsDqTuFBrlinGiDlgAEaTOCCYp9nCdJHNkpClpuXJBpN1hnRj.KvyXqJUuQsNVz.XfFFx7.1LrjsEUkkK8otPThIGrM7DHkE5ZhoEFMVwtORzEvNKnyBMeI7JnBqTmQIm1zQPY.UCRnZ4nTLIpLOFXwnncWX8.mRcYl4kx.asck4hNt.v9qhFaXpBhYQDVCMxhIkKXVbWRFK5fhelWIJr9HsNfmB3izAhRL00BFGYCARrnlPiQTc6NJVUIigPIa6W5vNVD7vglFXo9GD5WraH3uc2EkiHohMYABsBAozAGpqwlrCftYqPeNhUlgPOh87zZg2xaFssfCxKkYZTDXA7PQ.a4KesSLfcgXsvITLxRQanJAM.NGsqkNFLCI1MwLUQnEVZA3HMDKjvxrEdqDOOtPbCIbCQKbyrYEizqgPubYFqUWlzHVzp0EFYIF6kQxs2EsOoYdySJJeckwVQjJFMMVKchRciEuVNYsXwa1EeBtcrKutlTxDw2+XsqpE6LqiTvkOpx3DILpztS+IkjzJbi3XQy71p4Dq2Qdv9Wp2svHoBIK9R0iTGe8jhUqJku0UQ5XTo2NQtvtbV7KDqMnyNIfDHZG0dxM1I6E+zgsZmcf4.Qqi5jytcxAwa1bX7ZpWaL45N8ZazzrboX06rW81IpTD2hzreD6jEIMNKm9Y6aeo9QsrZmrvkow4DSL9P0pYG1d+yj5oKHl15E8JE+Jr1Xs3Mxb1I4GmPyN49RGUnIAj0xmEUqsR5ytoc1SMibnP77BOu2Y5sJWpXk8doXgLku4vnYRKTljuR1L5k5YojTb3UwLyeRkKJYdQDoW.6RuRpihuemKqcZ9585mnU790ZnHeEoyY6DwnW8m2sPb0qupj7NENKI9HkwxMKU2pVhbGU+Bq3sNo3ESHwilrw3FUZBFGHab8KGalYvKKYXOrggkzgFurbhBVMjNLVbH9YjWbLdu72bYhJx6WbupMGHc0ocss6PRzKudYkB62qtbx81e+iqbt7omGI+HyLipT9pzGlLZqZsacSybWMnL1JeknSTO4zFmCpg7WryKNMdhR6jvzXXiz2DytsTghjjIR2IwNYsincV7gVGlt3kR3h0t33BCN8DipYJuSma1QP+boLZ0nm.B44LPqBfaundOEcHWGDAvl.oqzsnEZPqmPk333OmAVfiR5c.1llIENvk0.npCODdqoSv+YMZHiL15nUxl6D7yEMr0Z4xcB94pOjuEBvxphfx8pXdg4s0RDTfrEv+WrFQElRjs19YgPK+u0yIDQ5K8sqz.4qeScmwZ1y0xWz6Hewti7E+NxWh6He6sLMZEVlQPkB0fWTGRypbMTm.6Am7v0fjlLBSSLOiPcSRWh4z44gz7T3.IZ+rSmCc6MI8fr3NsEQM00LUfiXelaxrh5PsGvIueNT1UHfaHEqSeRGZpHGFp2C.WTAZYnzAAWbeEvUSe5V2DFhM8ULyvzkvatH5NQgZKiJrh5blk6J3fMV0RgTzUgHBntPkmrdOnZb2iCTsuogZXoop9mApYUXEB8mEJnRWTX2mBBOF715.vJLaoDTfRYtoV24qE.ifAGMTlFGhNKZvmfecnu9yB0EJSKbGVMESYeaTGp.4BnrXUUZakguMVYB2hhjucghcKnxLo9nv2FyTgIXvfT4gVncjOMnaDSX2KXXYmYnV3OIJC6AC1AhhNv4mA8vTzkwzzXkTW4Snpsvauvp.xtqgIqmhBWk8AVp0ZdtMBbFC1nkZohBCLSY9EQ+RJmN3z0mALLyjgUaJlCqYtYMOuZVTkZ4DWhnLMF3F6oEz4LzzKUJ7ri7ewzkZIdZeoC7m6WMctqzsZAbMSVpWN84KQLbyn8pIE2pcsvQXAB9ZVKoqKu4xwrePLW82pV8ko4cRm9JB4aE0Y8HdVN6Unk8ggYHNiX5VnrERW8PQ2Pld6JwMnYmYDn7sn7MezvzeVj5R7Lz7VQ.gaZa+CMgFsBGd5XnCPa8KQag9TzVasMZGzL1ombBEDfW6lhnBhMDmsbnV0P4KVMG5zBhUgf8hHQ3gZ4Y+ro3wsEqlUDUrIpgX5rEDygRCCS8jXSnp3YsP0pJN6zOqSVJQmtYCCtsRrdwFPHC82YrSa7jwd5DEZsxjHQfrdxauDy9BEBs4l+EhTCl7EVpkahW994XpmZaYC5y3ZOmxxrtdFNLH8L9YHFzd48osX2Xh2noLgZQj6Ij7RjzPaxedTwUMrI0zcRz.biVbntcW5XtpFVY3KYX58yYtNFcaI2qAjNQt.Ox+UsxuYW0pjyAZOSzPmVLSsgD8UcW3btQA33B7dtnBlpM6R7dp6k3kYjssgNG8NGee9YUUyw.M.t.rqA7Uh4nSYd9sJtIKPH9okI+ZxerE4eyDfY7G+0j+Dul7u2qI+QVB+sKxt3ct.AbcI.2jgDSaEpGXfbjqUjHNWtaP9bDqAPh.t.OYVlCf7F40byrM8a5lZxbD7mjZrhrc+4ihS0mnzqumaiNWJBqNb5M+TlfMceGPlXYEiCMMFMzq+fM4Fa5NSCyxhJS0PuRXMpGrlZzadr9T9rsgL+UVBbehe31TUQlX5ZRmVCmGz9q9y8f1u8ONkl22ZW0TZXOBlQJnUigMUdouSSVi51UAlEOemgZb9k1T+o2RZKlxQDdBOsNXAjyqHPlzEOR0INsWkmE9ZRQcnOMHUxzWRzlXZ9H9ExBrJCD3YsAFnaCikZxbjrOjmkiesdSOwExkwcHpLD+d7reGcU1laATN8k.TrpROcM1N8XdURWaWLUkm8VFnJEmWzvhWtsE6RkYEiXsx7qSewFbDHmCd1aqbyLIdhHOWD4T7HhoFtnHd9qygENWOsP7Eq1RrQ0zkeUQZLOH8aMeafTnvv6DRi6UmN4sARq2PL+WAJ1WUjlv6Iw+h2ZHETrupHcOuV++x27H8C3Y8RybVeUwp2jk.ZdqblJc1VEOQzGRCsRjFj2sA1UATN6TJVULnwtvlSbpAcovxu3fLuk3btKFeLOsKLt0mBYcH1sAVuQjm7FFwz14WFhu8qM+C4qXHORk9l489EnP+rabG.5ev2qNm1autkh8DeepF+X8YoroP7i3qSuctkiwGrDLR+hWdCfQ2OlmmvK1sKQxdN.eDe9ydy7k63c6+8b192m+TvXydcmta9fAq5yn56+6+U+6a5mQ0vM9ynpljMf.22UjEIp2Udgwh4ww4WmiXOR2+zcHEyKIpzA8rqE0qO2ThdmYp5XceKF7ruUphxzigoB8u8ebfy0r2j.RibMKIPX8+Mp7CGTejpE4T5QOOq626gbLujKfMkoW6nO+tGttunrn+tyWTVfM8qx4m4RcNhhtzuNm+f.7nUbmIzanoBvJtGgdyLzgpxtZivai9C+bT78oWRyzI.EyZXRDoewMytn5UekK+3tz+N0M1bmZY++Cj0wmq6O0Ai+D9zEx0rga1F1uQh5WSTAA1u6ZECcig8MzU7cruAw1ToWOhunIKULRaaCMTkcj40D+wAkvS7R86e4G+ctS167bnTl.PyK4BP7iYO+c+CoXK2LBW+OlpIzRluut1y+1FDUB1ZNJh72jRTxf9pStip80+cYFfeCcMdBuiPhXogd2qZjmNEeNVg28.3GvyL+uqp+9o7tNiuyp.eJu6Yi2UUgqsf3G9+aJHd8IXfp+PuS2VyuOOTEZLDyTh9sisrgwH52ZbELj9hderPsOMgx7kHz2klNQkVqQfGPqJv44HSegLMI5xrG9ug+bGLJ84.tCFc5faTGLV5qpClu427y+WdmoClC1jNXNO0R5f4iSsjNXfFN13NX99i+m+t66f4cjNXh8icGLIey0ASx66f49NX9sQGLeymG5+5N1ACW1E5f4e8uZS5f4e5u69NXtuCl66f49NXtuCl66f4GuNXdarGZXISiuRxoJJZxl2iQAjac1+ufCxWg9LZ12lFOeDgHbZPkxekjD0e8SfhgVNOwtC7D+NvSh6.O6cG3Y+6.OO+NvSx0xCsIkzirMzb74AB0Ec9OWdfY+GeOvC49erQklTK
-
RE: Delay speed - tap
@ulrik the "host BPM" at current in your snippet it only changes the bpm of the delay module....Im trying to get it to tap to change the host BPM...kinda like Ableton live's tap tempo function...
-
RE: Delay speed - tap
@ulrik again for the win on something im looking for lol...this is dope and works perfect with the delay...how do you just make this work for the global bpm?
-
RE: Tap Tempo function
@orange wow...just should've scrolled back a few days in the forum lol...question...this is connected to a delay...how would I connect it to just the global BPM?
-
RE: Tap Tempo function
@d-healey was intrigued by this so I hopped in with ChatGPT and started messing around with it with a bit back and forth I came up with this:
namespace TapTempo { const var tapButton = Content.getComponent("tapButton"); const var tapIntervals = []; // Array to store tap intervals const var maxTaps = 4; // Maximum number of taps var lastTapTime = Engine.getUptime(); // Define outside the inline function var currentTime; // Declare these variables outside var interval; var totalInterval; var averageInterval; var bpm; inline function onTapButtonControl(component, value) { if (value) // Only process when button is pressed { currentTime = Engine.getUptime(); // Update currentTime interval = currentTime - lastTapTime; // Calculate interval lastTapTime = currentTime; // Manually maintain the array size tapIntervals.push(interval); // Add the new interval if (tapIntervals.length > maxTaps) { // Create a new array with only the last maxTaps intervals newIntervals = []; // Declare this without 'var' for inline function for (j = tapIntervals.length - maxTaps; j < tapIntervals.length; j++) newIntervals.push(tapIntervals[j]); tapIntervals = newIntervals; // Assign the trimmed array back } if (tapIntervals.length > 1) { totalInterval = 0; // Reset totalInterval for (i = 0; i < tapIntervals.length; i++) totalInterval += tapIntervals[i]; averageInterval = totalInterval / tapIntervals.length; // Calculate averageInterval bpm = Math.round(60 / averageInterval); // Calculate bpm Engine.setHostBpm(bpm); } } } tapButton.setControlCallback(onTapButtonControl); }
when I tap this button like 2-3 times it slows the bpm down to like 10 or something really really slow...but when I go to tap it again it does nothing but the console throws the error:
Line 27: Unqualified assignments are not supported anymore. Use var or const var or reg for definitions"I know this is a bit of AI generated goop...but im curious as to what the proper way to make this button work..
-
RE: Global Midi Learn(not saved in preset) Possible?
@Lindon ok thanks...starting to make sense now...I'll mess around with this a bit and see what I can do with it!
-
RE: Global Midi Learn(not saved in preset) Possible?
@Lindon maybe im missing it... this is the same basic behavior...as soon as I click a new preset it kills whatever user mapping I have assigned unless I save it in preset...maybe im missing something either in my communication or in my understanding...Im sure it's my understanding...maybe explain a bit deeper
here's a video showing...plus it crashes HISE whenever I assign the button
https://www.dropbox.com/scl/fi/hfifi0npxlhzmdezxuhq9/knob-assign-on-2024-10-29-at-12.00.12.mov?rlkey=98jilrqsfs0kcsnh7wdp8vsin&dl=0