A Code Example/Tutorial on Dragging Audio and MIDI to the DAW [UPDATED WITH VIDEO]
-
EDIT: All works now, thanks to the tireless efforts of @Christoph-Hart. Thanks, man!
This code example demonstrates how to:
- Load a MIDI file.
- Draw a map of the MIDI file in a Panel to check if it loaded properly.
- Play back the loaded MIDI sequence, synched to the DAW.
- Create a panel allowing the MIDI file to be dragged to a DAW.
- Render the MIDI file to audio (with the currently-loaded Sample Map).
- Create a panel for dragging the file to a DAW.
The code is straight from my plugin. I've commented it to explain what's happening at each line. Comments/feedback/corrections encouraged/appreciated. [EDIT: @Christoph-Hart improved my code, and added it to the Snippets library — use that code.]
EDIT: Here's the usage case, including a simple progress bar:
Raw code for the dragging and related part (not a project):
HiseSnippet 3952.3oc0a0uaajbjmzqUvIc2Ej.bO.cz+XJDZFoMa9.1vHgRjxlI5CFRpcSvhEBMmoIYGMbZdS2TzDAF3dZt2l7RbOA2avc+pp6Y3PpurT1rqWBCayo6pqpqt93WU8vtYlHk0ZxpTc6AKmopT8eaq9KScSNZhTmVoSqJU+wacjIVIZ+d4zYIpJGtblzZUwUpV8ydKMmpa+7J7m+2e2gxDYZjZ0ipT4KM5H0I5oZ2pm182+G0IIGKiUCzSKM6u322IxjdjIwLGxyms09UlIitRNVcljl1y1pR0eT6Xsyj02IcJakpO+PS7x9SLKR8y+K0V8PHj3KGToOVH+iO1jDSRL8zJGMQmD2MeeaqfUo6Jsvm40B+GacpNVW77UZieBOfXEEk0GUe15h2msl3cvcId2hHUsjH8buH8S2peTldla0Hj77utUmTmJajLZ8iF+bq7r+9K25W7c9mcdRTI52df3hthuCY4+X6RvSwaUNwPXkpSGKlISUIhL0HUlBtA1F6.yYqSbsLyO1kGc9ocOue6dW1RM5nTWh8xt3r6TS5k8U+myIh9RsZwku8hNh2HNxfS1TWiwJ2QloyLo3K018wtP6t2qebhAQ3g9czkM6M3eDAYikhDkbcVbl7iQg09riNuEs5X5cM5T2ocZ04iP+bmzcapiaL4lyi0lmBWJHLeq1LNV3lnDD6EyRjKUYk2jSQrD+SWoH6huSVTf2bjXhybvHdd0189nImsGkoPDHlyCxjo1YlLm3cxz3j04uKevvXfmsSGqSUMh3UXvFiWyu9ehGOQbbmSZKZ0q4aEGewYGMny4m8J+Ivm3wSd.a2FVXIXlaUGISRni6ZilmF4zlzZpqgY4dh+1N6rsdjv+0FQI5nqTw3whc1da7mfumbkKmvYXqjlylIZIcRwHJUYVCwWMYoH1nr7nGqST8WZcpohIxqUBYpPRV5hQX.afl5hgychTCs9ddwp7xS42IdqwDKP.JKI0Mvzx8BHVXaoyTQH+4RXGthmjC.mAOqVoGBIlDXxfjYVIS9T0BlsPNiEiu4FV6ZHFLQa8SZAvhHFpDlqUYKxzN3s6WQkLZhvADJbvpwTDdSTz7LaCQeScAzyKMygRJ8ENwBYpi9ZlvjowTkIq18kW459kFmgPnh0iXox4mVJP4HlfGfMAzvzNIewx0Tz7FXZ+d1e9M2hhiCSQnInGWaWnnvTkYKuTwzz.TPwH1d6b6g9z4IwJZoI0hR.KN0XDKf0YVRgsXhFpBaHyB1iiVQBVl6KhTCKXPS6oAIsV4cPcwArr3kj1oRfMhW3B8Mh.a8G2rjMzXRTP0bsLYNjSKDLEleFIiSMqsQ.g3fejLAZ5gpHIz3d1XXi.daNxjMURFhzRoIMkSESqkze3gniHLr1eTzp4WUeUnb9.CTkZDIlTRakpT.iYCOSFvxAYELSlgiUfPilMQdjgfQybMJ3FSD4f8XCqSl4Z+dLaPJotnP.anx3sD9mbOexomUgDewtdhYdRrHZhhD8QEpSXgZE14QDzwQyS7Nqda2qRMKD.jJ14jjr86Z2jB+zIMVGAWp9EDAIhEH9P6C68ZhseXmO7C0bB8ekn4Es5bt3Gh4DJPZ7wjTX6sE3ySL0PHRuOuPHND+rGeH6BpHKn6ko9HyvagipGeGw+tEwX8.fiSLCkIWJg93ZUet.19fg+bwtMVHud2hjGOPrGevDW1bV9hLyVtRHCAWxiQ3SmPACDR1uIjv4w3hSLprGdYG7fSYtq7iyg86O20OZNJ5b1f18Nq4InZv+zEvrucOwfye6agy6QMO4jCadzeT7ocEgcPJljkhbaBNcgG69KrbI.L3dXU.C9XJ2UtOFAq.T6CJ6+aJCAOAZA.Z.QemYl.4SlXhwYOwsQfDB8gOyEs9ajkhXWcXJmhbBwv7zMYU9rNAwjvBEL2HnepTgh8HhquRhYCahkrILisxRRibtyPoQIYcY8ULfHbhRFWv5fqMXbfGwZafIt.rir0ANQrj3XJBZk42a0PZLRZgtX5RJ6JX77DpTtj4vsswd6nSSPALE6mfucmvp2u.DSsvVrS.2LAFBd4mJsT15iRLbh46GaixgRzhFX7DwzTZYe8Ne3G.YF+Egrf8ZeFhhz4rRIH+zNyHj727X9HNbtyACBXGdnB1JhdrCHh0uSoRh8S5f6rx+v3btiv+mrCnImYRJRBaRCCFF.SeSCyMmRsnbtT2ivsvtriGG2Pu7Cy+YYJpQe+O+W+29j5ESOOWNnPVBvNHIwHiCTvjbuF1ZateR6oybKqcvdhe1a37RqA2r2lQvnmGZffO5Fmx+94ETusILImnstiyLSy4LXZcQwz6sZ4x0w..JkViSp85Gu4PvnnvHPbb3fgWpAkiIR5OJ7FBhMbo3cc52VPQjVJ9U6uuXpkBLaQEgVCWQXDpPYVl4ZcLUjG9eioSKDGFkUeCif6aCJpYF9W8FALToL4PRWiH1vPUSQYfHBMFe.7G5e9YBLe.ChNFPnHDJUaOVmpsTz22PC1XT3qL18vjxkPFWYXd4OiKULXwrZwVyH.ojxTA6SpdVpfIonKAaEI7holJXSLnj6VpYXOxkQmtpxsRzYQQbnfJnMSMt5gkGf.otZKTZd9x7YW.YrNQvFPHkkUG.vVpSBQGbdSh8.n.ap0wwGbn5JC0M.Jf.N.yHbb3oYYT92QntJYJ1X18ZHNbo.xkdLutLOYn50KskrfPkHvgLEIDX8nbWzbRziT4kRyjR.MQt3zq7YjoxK4hJ8fEHpKqtHMaXoGpbKTJ+njcp0mqMX0xlREo2IRdvZJn0tQfOdCh7MNiXl3YSduiccQOFJrJItOAn+KIsgFtf+XQg1.dDgJNkP2CqY72wxg5DsaIKddyROgTOdFX9pLMv79FwiQvyMceDk1D372BU2D36SooTLNq7VFQQP78PxamXodDQMJJ28HXsB6Lf2uzd3a+JkVoM6qT4sVHuOH4NtDLHEPxh7OqjEs8z4IN8QdSHHMZaK0HxWn1MNj+58+lFIpzwtIgZD4xy7aiUc2gdNER5ms9RuG2Xqxa8FrRr3no1WeCF9M0ya4MzG9MdOblUCIeN3W621vrW8fq7MV3GdcorWBZwKGNsad9BnUwYORa67A42mrRNfOhAfAqA5gYHukqlX2bZdkXWbhsV7beoe+v.HJCFsUm9cOo4eo.Dp3e5r7aCfnqCWv20B576yaIFmImMov+M.toQQgd9N0giVagWUlxe3mO4.1s5EMxDLzMQ5P5UpsccDQIJoOmhmYXYRMqHu.8WCTcyxgJOOdAwhoTtaUhZL0+5ERD+8wd+hD32tH0jqmYtCl6qZ+z3RPWTduWDlRlqJvhjXrE2aZdKdPQgDTwlzLei3q2utX+5btLxO5qzwtIjKT9CdmROdhq1deyp9HOPxWFK2KG9FMxQHUpR75giHnAR.rSRj9hWtpUsb5dqnluR22WOTxKWcKD.ND9Dly644Ic7MSEoG4K9drxfEBYMnIloRjTPUwLra8.+G4uaAfxQ8RJZrLcruS5jBfdZu7GRfhCM5+9.Pe1lzTqjZrTO16qJhhl.HNzKZACG4NDmw9JanoUy+O1FKlfXaq5eWGnuHEIkv5tVFvgZqsqHHh2XatFnxtLjOZ47PuBIrYn2M61gE53L4B5jtfWdvbiaP6NZoWmo4QB+juc0h9CZdVql8ZINoyg8Z16u7JTkPu1O5xx+9JV3wA7st4.lgVl7JezQqpnVJKpjLxMm.W6cazQ7U3rLzEm5LfHJk4T51wPXJfSDSm7blYRVhnVyvRN02ALrxoLJ8cAFe2tzMrLkb7Jb7unCh00AiIxqrpgX2dnNJLYpXZUz7DsLaMQ30HvvUpEZezVxbaWD4M6xYlEpLS5trqc4GMZzt7pJiWtadGpVPc4RJ7Y+OUNSLQh5.Ij5g3w2c4f2neUWd54st3j1bbXS1zymIpg814yH2OPoOVqcg1AelaYjsiHj1dMzqV4m8xxeDg2UivvO9WviFVjOJuaF7EUsFtw0Y1MdwD1.zrbsVwU22vQD+R6nxZxhoqWKuhgMeOFn3V99981LcbMeC0Onw9a.i0GLrLa78tkBmSMsrbKKuK1PM.7TSrp1MFrKiuOuW+2Jq4ZmxSHVz2yUEKEAfjTiUI3B5oRBNYQKF3JUmMGAxC0fIlBKrbi9.iJVyWSwbg0MYFXgxLzWY+sySUodvmuuX3robWLBfK57ho.jBNaqWpuNXK+Ni0c3ro0.IanRYmpUcxMhUoVGfFWW7WmaogXInQfjapPclY4l97Ax4o4JPp027IomiOLo0VW15jtV.FRCy9dZKACKUQ2YBph0eynVj.GAFLvuEp0kzk4FCKOj0OYFUnEUfCec+E6U9HHuYBrie9MB4Y.kMFpx8niUtc1kt8+7.UX1uvxMPHsj.pRoXeV9TojUSfWbJQDGxWvPxBB3h+dlynDivfVsBBBeW9gUoDbHNlbQW5uSS8SzoWgy8AlR17zwgWEeqN4kXRo4zl2QEvPQZ5ITh7P+MJQCKJ2K3mLxhyeAW2+DYLxMSJBnZqsg0A7zP.kadqMjRidqVVKhvF2Rv1Og6I3lwGawEDv2HiN5JK2XqxEMvVhjnLTEt7nvqq.2FivwZ94NRr5u2zGTztvxuGt.i6T3.MfX8lB2PDR9JtcqEYRXEe4TI4wzhlmwV0ERcPkkf8dHuWoPcOpC3RLmRy9JAdzmtlTE4W9NzVJv5SfZdEuITJuzhp7hbONcO3k+8H5u0s24+g1GM3xiO+jVs68ApMC2SGin2xn7qwdUDauQzZmiqie5U7gYXcIr6sTY5qYPLMYtfJg3c55K2ssZoEVl2+xQRWoUK7FsT5JZnJqNOs1d6fhS14C6H1bnQit0wBff3WYxaYXxeK69HrV57oCo5T82rS9DqT84q+Fl+i93dCyi7WkUoIZRoHd.jX362+qHekvcgg+2EcndbQuh5gmg4AnlNMINUaotVGo7uv5auUKk8JjUtRka91r+S1BIPlizRq+x0S+hBBC.8wZuQ6Tt8TTA8xx+hCdDuw86euuw8erh3OcqtDD6aWFe1sHiPS8OCYL76T3eeq1.EQjak.97sN9O+T+QI7.r22gmwmJcY52Wo5VmMeZefAJREZ+JV7sp9LxZw+88ouSZf9HYE+k+O7IL3Az2qFF7f7AqLUFkYtLx6EP+RH9W3m.YJk+Qfr8VmReWbPE1ynrdlBkcYTz5K0MH7yepD9KepD9EOUB+UOUB+0OUB+MOUB+sOLgzq.Zyv6JBbapT4zts4PIUq5KUisVq7+CgstiXA
-
Cheers to you man, snippet?
-
This post is deleted! -
@clevername27 God Bless man, Amazing Work
-
Why is that
Most likely a file permission issue - I see you're writing it to a location inside the app data directory, this might cause some issues.
But it's a nice example of a heavily underdocument feature so I'm refactoring it a bit and will add this to the HISE snippet browser.
-
@Christoph-Hart Thank you for the kind words. I thought so, as well about the permission – I tried the Documents and Downloads folder – on both cases, the OS asked permission and I granted it. Same result, tho. I'll try some other permutations. I've also amended my original post to see if someone can try this under Windows or GNU/Linux, where I suspect it might work fine.
-
@Christoph-Hart said in A Code Example/Tutorial on Dragging Audio and MIDI to the DAW*:
I'm refactoring it a bit and will add this to the HISE snippet browser
I just saw the snippet browser link in the help menu. Clicking on it crashes HISE here.
-
@d-healey can you check if it only happens on Linux?
There‘s a lot going on there, it creates another HISE instance in a new window that you can use next to your currently loaded project but it might be a bit funky on Linux as I haven‘t tested this yet.
-
@Christoph-Hart it works on Mac
-
Works on Windows here.
It works on Linux in a debug build but not a release build. And it takes ages to open the snippet browser.
I'm wondering, does the snippet browser thing respect the
USE_LINUX_FONT_HANDLER
flag? I remember if I have this enabled then it takes ages to open HISE so I always disable this in my release build but I have to enable it in the debug build otherwise it won't open. -
@d-healey Does it take longer than the initial startup of HISE?
-
@Christoph-Hart The debug build of HISE takes about 6 seconds to open, from within there the snippet browser takes about 12 seconds. So roughly twice as long.
-
@Christoph-Hart Thanks for the suggestion - I notice that the MIDI file was getting written OK (to the App Data folder), so I tried the same with audio - same thing. I know you're busy - if you have a chance, do you have any further thoughts? Thank you.