@Christoph-Hart In your example samples get assigned both an RR and a group XFade, were you planning to add separate controls to manage and filter group xfades?
Posts
-
RE: The Sample Map of The Future: Escaping the 20th Century Sample Mapping Paradigm
-
RE: The Sample Map of The Future: Escaping the 20th Century Sample Mapping Paradigm
Edit: I just noticed you said you'd keep the basic note/vel mapping. I'll boil my question down to "Does this mean XFade groups would be added as an axis separate from RRs, and will I still be able to use Enable MIDI Selection?"
Original novel:
This looks like a dream come true as someone traumatized by too many huge orchestral libraries done in Kontakt.
I'm curious how you see it interacting with the existing controls. Is the idea that in this mode, samples could only be played back with Sampler.addGroupFilter(), or would assigning a sample a note and rr value still put it in the mapping editor? The xfades would need a way to be edited, were you thinking to move the existing group xfade controls out of the RR groups? Or would it all be managed by script?
The library I'm working on would not have been possible without HISE's "Enable MIDI selection", which let me adjust volume, pitch, start, and end of my legato samples to match them to the sustains. In Kontakt, without combined mics, it's almost impossible to do, though Jasper Blunk masochistically manages it with table modulators and force of will. Spitfire and OT probably do it with their dedicated (proprietary) players. Point is this has always been out of reach for me.
The downside was I needed to use RRs for variants -- vowels in this case. Crossfaded dynamics got split out into separate samplers and controlled with a global modulator.
If "XFade" is added as a native concept, and if it were added as a separate axis, similar to how RRs are now, with a dropdown to filter for a given xfade layer in the mapping editor, that "Enable MIDI selection" workflow would still be possible.
I'm biased, as almost all libraries I've worked on have multiple arts, some with rrs, some with xfaded dynamic levels, some with both. I think supporting keyswitching natively is maybe overkill, as separate samplers for separate articulations is logical and works fine, but maaaaybe it's worth natively supporting crossfaded dynamic levels in the UI?
-
RE: Right click menus only appear on external monitor
Wall of text from 2014
Why am I not surprised
Wouldn't you know it, right click menus work fine on X. Amazingly given the reputation, I think it's the first real Wayland issue I've run into!
-
RE: Weird issues with large sample map
@d-healey I had similar issues, including inability to adjust sample properties, samples not playing back, and other weirdness, when some of my samples were mapped using a different path than the project folder.
I have a soft simlink called "WIP Libraries" in my home directory that I access all my projects through. Some samples were loaded with their canonical path and not through the link.
-
Right click menus only appear on external monitor
If I have an external monitor connected, the right click menus in HISE always appear on it, regardless of which display HISE is on or which is set as primary. Anyone else?
This is the usual "I'm on Linux + Wayland" disclaimer.
-
RE: New feature: Release Start
@Christoph-Hart You just couldn't hold off on giving us more goodies, now I have to tweak my project to make use of this right away!
-
RE: How to debug control not linking in exported plugin?
@d-healey I appreciate it, but I already know the alternate approach is re-implementing a bunch of legato logic in both scripts. I understand that's the "correct" way to do it, but if the panel method works I just can't justify the additional code and time spent.
Is there a reason this separation is so insisted upon? The integer in question must be kept track of in the audio thread anyway. Is the performance overhead from setting panel data really higher than running the legato logic twice? Maybe there's a potential for catastrophic failure I'm not seeing?
-
RE: How to debug control not linking in exported plugin?
Despite separating the two scripts as much as possible, I've run into the need to get an integer from the realtime audio script into the deferred interface script.
Trying to use a global here causes a race condition where sometimes the value gets updated before, sometimes after.
This time I created a panel in the interface script, and set its value with Interface.SetAttribute(Interface.storagePanel,value)
It works in an exported plugin, but I'm not sure why!
-
RE: Engine.getPlayhead() functionality
Since I don't think it's been posted explicitly anywhere, it should be clarified that you should uncomment both the const and the setProperty lines corresponding to the properties you want to enable, as well as the &newPosition argument and the ScopedLock.
For example:
The object is a native script object, so you can just go
Console.print(trace(Engine.getPlayHead()));
to test it.Also the TransportHandler exists now which you should probably use instead, but it lacks some options like differentiating between playing and recording.
-
allNotesOff doesn't affect queued events?
It seems that Synth.allNotesOff() doesn't affect notes that are currently queued with a timestamp that is in the future. Is that intentional, maybe there's a more powerful version?
I'm adding handling for overlapping MIDI and hoped to use allNotesOff as an escape hatch when this kind of thing is played.
I already keep track of all note on and off events, so looping through them and doing a normal note off is not a problem, but having a single "Ah something happened please just stop everything" panic button function would be nice.
-
RE: Snippet: Horizontal panel-based slider with hover fade in and out
@orange These are super Getting easing for free is really useful too.
-
RE: Snippet: Horizontal panel-based slider with hover fade in and out
I started the slider as LaF but moved to a panel when I couldn't figure out an elegant way to do the animation, interesting that that's the one part not achievable with LaF.
Coming from Kontakt, the ability to have smooth transitions and (gasp) actual hover states for all controls is a huge win. The average user probably can't articulate the difference, but I think in testing a UI with smoothed hover states would get more positive feedback. When trying to sell something new to a group of people who have been used to Kontakt for potentially decades, I'm convinced this kind of UI polish can help make a HISE library stand out as better in every way than what people have been used to.
I believe I used a separate label so the text wouldn't be part of the hover target.
-
RE: Snippet: Horizontal panel-based slider with hover fade in and out
To use data storage, especially for the current animation state, and when I include a label as in the first example, also a reference to the associated label. Open to any alternate methods that would allow using LAF instead!
-
Snippet: Horizontal panel-based slider with hover fade in and out
In context:
Easy to customize!
HiseSnippet 1890.3ocsXs0aaajEdnSTPk1Tfs.6S8oI5gcohYzMaqj.2z1DeYqQiSDhRylEKJJFSNRbfImgfbjsUKxh9ea+2rOs+C5dNyPJRJK4jZrqfgk3bt8clykYNbbpxmmkoRINsd6hDNw49MlrPpCOHjIjjSNj37YMFmxy3ZxKVjvxx3ADGm67WQpNMuKw74+7MufEwj97xkHj2oD97WJhE5xUG+seuHJ5XV.+sh3Jbu62dhuRdfJRMGPxcZzmjv7OmMi+JFx1VMHeGKKj37vF82aDm+3clFDv1YmfQiF8zm7zce5.1z96xNavnmt6vce7vm73oDm6cTfPqRmnYZdFnzWnBVLITcozZf2IxDmEwwGFPl.V1tL4fPQTv3hskLBw4tiK2jticS5O03TQfX45kaV+QCAZoDU2zb15lfzfeGPxoBjtqEReQiI9ohDcIEDO+gFmH07zoLH1TEJVdIa8uueiCT.GRc2X147iSgGVJg6t866QGrW+N62pkPFIjb5z4ResPIoAb+HVJeRjHfm5Jg3j2UdK7NWpNah3m4c9kVMiT9rHZlgC5ynEFhEDLlI4Q4BQeDsPHuEfkZZEna.Sy5VPADu3mqvAhp2FJ7OWBdMv1f8o85AAD4LN0fX8Rhg7T9RggLZ21gbwrPc6knl9P5P51T2Ma.fgNcPS774ZULSK.WLZAEzFMAcJpUk0MCWxf3JlY7RNKU11SmNmWwUMLkwtfehzVqsdN.Kot7.3+mAEGYs8ZePD.qLO52ot.1g+yzCSYylIjyZWWxSUyy3Exk6auVZVsNiigzX8aTy0fK6VDocm0g9KVdLzgm2+C0kCKlSulALqtZ.MDg5ykhXHT0Gnkx0ySk4II625CWOQqtoWlVsZbGByYqIfseA+XH9Mr.w75LWIqpjuimGEsj2JBtMc85FW8uIBzgEpdFWad1sCjc6NDxZpqVSFjUB0TPDNk4qmmqI5kveLolpUzfT1ksZVEauGrQceeaJTIFm39nUfNjGW.l2whlyAv7PpaIVA5qHgI4tiWeukL0olO92y2NJEYeDbyvb.ay6kVzs8YyrK0tCpjd8fjyKoQ7oZipZ0TL0Z+2S+5U2cZ0DzI55uDSDqSzytK3YATsuVtkzw.qd8dCVJZ2SgrH32PkJ.PoDpVzPKBCbphjsWM7+UOqL3tFXgRrL7lCdu0jBrpKTG686tmEw1cZdTjHIi+B0bY.l.9OrNbMOzqZZID1V84erbK2TwQmBm6VORY+Jq6kBc3oyizhjHAO34QIgrJQQglGa4bX6BWqdgrI7NqKZfirH2slGTDLLfAS0yoto7lRKVj477f.JC1rz5HNVTT1QGd.O1hJftu7TedBVDAAYnwrenwXgpTwOCG7jmA2JOBtVjtRVDrONn6PnTcyckx6h5xu.NXC6MgoRlG55i8l4A3h4w0KvhPHdlyPLJ4gvg+um1iV59WhIMVOuoY0rhxWaUtQKd8612aP29UXy2bjWfKtBf2JHA72YaFFW8+dqSw.do8sIfO3Yql7.GqTHd4h.vpH090XfAYa3IjpYo487gCIKQplkZOIxcvHSC1Aihyn+S5n9SSxJ3JkmfmjbRbLOP.WCKZQ9N1MDisJsH7dM.C24Xsth4Ttsgi45N.OoacBaX4qAE.alnFJ7DURtMQ49.Bulaz382rweDZ7c16lL9Wgr7IX7aXyaM6bUSVhERuX1UkmbC02IPv6TlNrKPrfMfkx6CXIxtxEYFUg0N858Rt9ujUb4SJSFPgpHSkN1Xe1CZAyQjoowKlTbsy5WTssMn11au9l+.8VvqsajTmphVdWlBZuVlSAuJbUApbNm2xNpgPOLSFHdPwJrWo81RAf7YtzHv2Ccw2n.CqXBnossUcwJo7.6IIF8XtQ30iKWycb8UwIJITv4YaLzoEDm.hYpHd2jT7RWseaHu3V7WpROO6Az1v4dGIgqZxw1F+PhFRXbw1AeX+k1RIekRyesz0nRH5QWkzzoqkVNzhvTv0PNO4byB5JmGeFOspCgLBSJUe7q68oM9kucrkJLpjmHE5Wmvye9XUT.NVE96qOrFIetGbrsbDBrpMCs84ECsgiNPDA3z11cZhA73Dx6X97u9FxObxgPsagZ.MBVAN0SKPmw4P9Ev711YAa13Pd14Pgrg27.LLL3G0nWQbZ37H.yKveLD9gcbFPk2694y0uxvLHiNvxUGeoXs5CrPb9xFaZhERQUDZoeC9fVpLyGWk7qjUVcHZGB429Ux0GGFFDWELOhoqOcN9dKxI.4L0FIFG6UlIzKp9dM9cLxd+abj8OUH9EMFKf6trdLt0ZvHjO7+CLl+hN97FGMcJ2WWBv61332eaeqFeDyam7bFz6OUfYhuZd7DHL6yww4gb0LLduEVQYetuM9SHS3x.yCXlSNwAEIgHwAEDIwL+T0O4aqCwWkxmYVAvjz7plZ13T7Y5fxBvh84XHk+m78qqpqI3vaqf6baEb2aqf6caEbzsUvGeaE7IebAwNREuTFnrgPNc7QlFlNNGYZYYxVI+WP3nMW1
-
RE: Webkit2gtk-4.0 not found
@Robert-Puza Any time you are compiling something on Linux and you get a "package not found" error or something of that sort, the first thing to do is check if your distro has a slightly different name for the package and install it. Some distros include "lib" at the start of library packages, some don't, sometimes there's a
-
in one distro but not in another. This is why instructions don't always include one line you can copy paste to install dependencies: each distro needs a slightly different list.As you're on Mint, you use apt. I would type "apt search webkit2gtk" and see what comes up. I believe Mint does have the package, but the correct name is actually "libwebkit2gtk-4.0-dev", which is why it didn't get installed when you copied the line from the readme.
Either way, using David's fork is a good idea.
-
RE: Convolution Reverb
@Christoph-Hart Ahaaaahhh that's the step I was missing, thanks very much!
-
RE: Convolution Reverb
@d-healey They'll be shipped with the plugin, with no option to let the user add more.
@Christoph-Hart I did!
const ConvolutionReverb = Synth.getAudioSampleProcessor("Convolution Reverb"); const reverbSelector = Content.addComboBox("reverbSelctor", 10, 150); reverbSelector.set("items",""); Engine.loadAudioFilesIntoPool(); const impulseFolder = FileSystem.getFolder(FileSystem.AudioFiles); const impulses = FileSystem.findFiles(impulseFolder, "*" , false); for(ir in impulses){ reverbSelector.addItem(ir.toString(ir.Filename).replace(".wav","")); } inline function onreverbSelectorControl(component, value) { local impulse = impulses[value - 1].toString(impulses[value - 1].Filename); ConvolutionReverb.setFile("{PROJECT_FOLDER}" + impulse); }; reverbSelector.setControlCallback(onreverbSelectorControl);
-
RE: Convolution Reverb
I'm still missing something in doing a basic IR loader.
I'm getting the list of audio files with
getFolder(FileSystem.AudioFiles)
as suggested in this thread, and loading the IRs withsetFile("{PROJECT_FOLDER}" + impulseName)
. However in the exported plugin they don't show up in the combobox, I'm guessing because I'm supposed to use{PROJECT_FOLDER}
instead as FileSystem.AudioFiles doesn't resolve.I think I should get a file object for
{PROJECT_FOLDER}
so I can list the files withfindFiles
, but I couldn't find a function to do that in the API.HiseSnippet 2059.3ocuXszaibbDdFIMFVz4wZi8GPCdvfxQQfCeSXDDI9RRYEkXDo0tNAFKZMSSx1ZltI5oGsKggO3a4TNleO4+PNj+F4dNjT87dFNd8tBNgGHl96qqpqtppq9wLA2h34wEZ5UVrcCQS+WXLeKStd3ZLkoc4HM8ekwTrmjHPgPC1tA64Qr0z02+bEf9gGnE76e86GfcvLKRJjl1cbpE4JpKUlhN6zWPcblfsIKntY5cqSuzhyFxc39f8ruQcsMXqGvqHWiUcaOCsKvdq0z+Bi5s6PHcatz1F2rocmNc52qeq9l3k0agu2rS+VMZ0sQutK0z+nw1TIWLWhkDOPoC31amul+FV3.bG0iduCQ0vTaNLxgvZCWScrmE6b7zzzOXVpqZ+PW0yMlRsoI3otrmEPfRkHqSSeu2kIY9AXR5YLoCBMoO0XtkftQlxnrmOw3RFDAWhgXSVSIruZ68C6aLjC8fIOwE+.Yh.ZjHQsN0qeLB96nurREH93IQPmej63Kob1sjGIh6Q+NTPVyIqHxy7so74X2MNjDqnV0LhfBkoJnuP0IBZOm3Pr.+BnqXiAaaOj6dOe.+s0plzKUmpdLxDrJy1JqJu7m3Qj0pRkDWupGWUMJUFyVQYjSb3X6.qaB0g3ASP9LN2oFziCirDp6FeGOxDtiMQYHpNNeKj86plYgv0x.lpsjISjJ7xK8RJyNne0xMDGip9EUQGiVhAHPEKAWEUfnrD0bz2U4vByOvqbInSnimH4ykBJak5ak5YvBkiNQP13nBbUO4M3GC7Afp+9JUnLGvMfV5yrBhCbVdMqb6BvgXwc2vYP.3XziXGexQU.ivgagchMKXxEaf+4ftf9sHyuIi4TBYh8At6cRfTAMUGpU86lc6M+gwCW75I2b0nw298UQ+l3wRMKfn4tg6HCeH1w4dnhQsejI1QeYlo90bI4FVsf4F3bPEoVtrTtHU4.4AkQqJnIdWBVi46duJvm5YUcDV.mupvG89UUvJbkRlNxYWxnxa1PhZGjnYG98t0PzhVpoplDYgPWkA0RdVTsj3kfZTPM+ZibqC0BlFIkvO8Ocp1Wc4HrDGqPP2v3sgHjT0zReD4QXCgvhUGZLh38fjuInuQ4bvT+CX3eqltgdEXj2p93uAeDrvWau+YEiJlnKfLBOTcSzUXwJRPyTzFnoDapuaA3ln4tvWEPaEohOGcMAKRwaGqjhDchTSQ7tIJZDV7PJduTbBYSJd+zAHGgYcUYRKvwl2RMMQmCg7BfMPywLaHjW.uInTlWAOiYKzPGvnKf1FMP.acT.sC5LW0wCrwEbjlcQCHBUEmhJpGZ.2SBqJTsQmkRzOGwfDhFvbcM0BuhmWSMLQ2QILFt.bCzK4BHGWVbnazDsXMAclvZ8H+GHo3sPKD7sno9dTqBhzFbcTlD1fy4Q3iThNPjwZMlQsJ3SZzMRjyIv5I6JMQ2x4tA4gykpcLf4bBViXrAfSm6QRYZlxLAxfRvaEiOLEqcL1nTrNwXiSw5FjDADvZsTzdQSbUyTz9nKH3G2lGER6BySeImaSXEHMiR5KkrQjjKf571E3ZFmkWFYqHsVFWazHQvhC3zWpBqoLcPi9VLaE2qfDciz1c72VfoG5bGUBddz9nYDgkumWvQWxRAokSwBnpLZBealgtgYxZ478uQRMg73Mi5+sEmdPd4tXv5P0lp4A6Dqhbnwy07n8PAmvq.ZezPh5Le4gaVGM.1Rs.XRh7KRwfEcXprf2qYSnJknfeqYKzM3GfqJTXl0Dxhmn71KCwaEGTyTBONLmkKoPdYjwkyKiqU9ZwYoZmDp1gpShTCDzUqk4H6lHWIj8PufB9xxLk9n4Lrnz4Grj6tfCeUFmI5rOeZoLMPCGUJQSzMv9CkwzJr5PYTsgx72G2FpekkqSNtA43.+gOrAiLQoAJBJZCkmSipwP4YShqkSGGYKmsPrMGWlMs2krS9HeNttEC84X6kp1xn6WL0HKKDjC78kNYfn7Ub1peDxFQ6VWNaynp3ky1BVcCU7d0qtJOd6rE8NiJp.dE3x3gwrq4B4ZHf5CailgnAZLVc4vh3Pbh6Wl.sPujTl.sQCgSM3hCqBjhCeYwU2u.p9fWQxv.G0.CivEbeurv8PCA+xLUXLErOr8ObQjTDv0CEYeCrkE5NH9P1lgxDs.1CwgnXy.2.clE1l3tE80XQVBvaSgi.PsyXFpiSggCsxx.0NbKXzezGKDYGvNnw9v4kyZdcQmC2IvNrslKN3Lu7fGRYm6++LiobaeGrL+yQndnlHBHfl6M.T2ym4Qkay9PNe.uQQ824aT79ZhepwLpzZc413dkXiv8K9egMF8xN+RiwKWBWcL0.OvXxqdmOiyAueCe50w9IeRmOK1Vxba4.a44F69ZJ4rsQhs4eZtu9u+RhLOjl1Ufgyrx4SuL7h1WQXqjqylPDYVWx13Kyh+UdD0wCVI39L6EqEDrcV8MSPrIN3biwEzgYzwe4eb5Hr6FXQc19LYxhnqHFA87SUuNP36.drQw2Hn70qpW+PyUMmMzU5HZky+9utulCmuABbBYLmBXLyNlWe+eldiNsagRevjaJVJnpg+ZeWnZHb4DH0hwHNdpgbO0EwCaWO1hlSX1AM9OvuHRSUa8HRyXx+uLFtXKA+0VgOQfJS8iCPf4MKHnbnwTUajYgWDP42o1zWaYkWU6HXimpfMepB15oJX6mpfcdpB18oJXueZAUOU8Y9RtaXcWMsoyFG7BN55iYXHKOnjh1+EQKgIp.
-
RE: How to debug control not linking in exported plugin?
It's for keyswitching. In the realtime script, on note, if a note is in the KS range, it updates a knob. That knob is linked to a knob in the deferred UI script, so it can update the key colors on screen. That's it really. The keyswitching is working, because I can hear the articulation change, it's just the linking part that doesn't work.
It's tricky to debug as it only happens in a compiled vst or standalone. I'll probably try Christoph's logger next: https://forum.hise.audio//post/26752