@Christoph-Hart Well, suppose it's time to start another attempt to learn JUCE. Thanks for all the info; I wasn't even aware that documentation existed!
Posts made by NotHereAnymore
-
RE: Making plugins that network with each other
-
RE: Making plugins that network with each other
@Christoph-Hart My thoughts exactly, it just seemed pretty hacky. I wouldn't know where to even begin on adding C++ code to a HISE project, I'm honestly very new to working with open-source software of any kind, but that seems to be the solution - JUCE's SharedResourcePointer thingamajig. I've worked with code before, including C++ (not that I remember much of it because it's been so long), so I'm confident I could learn, but I haven't got the foggiest clue where to start. Or even where the C++ would get put, I don't know if HISE itself has support for C++ or if I'd need to do that within JUCE.
I noticed that when all instances of the plugin are closed the memory shared is deleted - but is there a way to do that when a single instance is closed? Just deleting the data that plugin was contributing? I assume there is, but I've not worked with JUCE before at all aside from a brief attempt.
-
RE: Making plugins that network with each other
@Lindon As interesting as it is, that solution would be hard to work into anything more than a personal use plugin, unless there's a way to detect if plugins are loaded in different project files in order to create 'channels' as lined out in the above experiment. Maybe I should check some JUCE forums to try and see what other people might be trying.
-
RE: Making plugins that network with each other
Well, that was an educational attempt at the usage of json files. But I can't help but wonder if there's a cleaner, more 'proper' way to do this. One less prone to bugs rising up from working on multiple projects.
Maybe @Christoph-Hart can chime in before we go too far and start designing an even more convoluted solution...
-
RE: Making plugins that network with each other
@d-healey That's an interesting idea. The file would need to be re-written and re-loaded any time the project in the DAW is loaded, or it would somehow need to be able to be saved with each project.
Example data would be things such as stage positioning, early reflection strength, which stage every player is being set in - that data would need to be polled with a timer, I think. I worry that using a timer would affect performance when doing absolutely nothing. I wonder if there's a way to only poll while the VST's GUI is open... but then again, that wouldn't work for shared data that isn't purely visible. It seems like implementation of that could get incredibly messy. That's also just examples from VSS2, which is one of the few plugins I'm aware of that communicates with its other instances.
I'm pretty sure VSL's software uses some kind of LAN network. I know VSL's sample players share loaded samples with each other - if you load the same patch on two different instances, the sample pool is actually only loaded once. It's hard to actually tell how that all works, and the answer is probably proprietary, which is frustrating.
-
Making plugins that network with each other
I can't remember if I asked about this before, but -
There are some examples of plugins that network with each other somehow out there. For example, Virtual Sound Stage 2 is able to display the stage position of every other instance of the plugin, as well as synchronize certain settings, such as which hall has been chosen. I think VSL's MIR does this too.
How does that work? Does it use LAN networking? Does HISE have any similar capability, and how would I approach doing that? -
RE: Endless trouble trying to build scriptnode
@d-healey My build succeeded with that one, so it's definitely a scriptnode-specific problem... Frustrating that I can't use the latest version, but whatever. I suppose I'll try again in a month or so when Christoph releases 3.0 (that is what he said, right?)
-
RE: Endless trouble trying to build scriptnode
@d-healey I have no idea which branch is actually the stable release anymore, which one is it?
-
Endless trouble trying to build scriptnode
As far as I can tell, everything is arranged correctly, including the SDK files. I am trying to build HISE again because my last build keeps randomly pressing a specific MIDI note for no reason, while I'm testing the instrument, which is incredibly annoying.
While building in Visual Studio 2017 I get these errors:
I'm not very experienced in having to build GitHub projects, so I have no idea what to do here. The trouble of having to build HISE makes it pretty annoying to use, but it's the only tool like it. Grr.
-
RE: Additive Synth Headaches
@hisefilo I checked it out, it definitely allows for more detailed shaping, although I have to do all the shaping in the attack phase. Still seems that if I release the key before the note is fully built-up, it stops right there and ruins the effect. I can filter out all note-off events, but then I wonder how to add a choke key. I also worry about the CPU hit, if the note continues playing silently - I shall have to experiment more.
Tl;DR that seems like a step in the right direction, thank you!
-
RE: Additive Synth Headaches
@hisefilo said in Additive Synth Headaches:
HiseSnippet 945.3oc6Z1zbRCDFGeCvZaG6K5LNdxC4niynCzVe4FP4k1pkJCAq5oNaS1B6zvtXxFr3WCOqdoNi27tiG7Sfm7rS8aP+Fn6l.kPKPgXegpgSrO69D9mmm8+leSFJZwzw11LKfxTkaVGCTlFp0jxqloJhPAqlEnLKr.xlisT8BsTy5HaarAPQI5xx.JSEC394fjKgLQTcbmP.vFLhNdMRMBuSzhodBwzLOx.WlTy2pWL0p5LZFlIyQnmnv3f5H8cPUvqijKKBDnbkbFDNyRii3XafRrkXFM0pxdM0a8aPrIaYhkCR.zDWHuv4YlFREK+NHSUhoQw1221.fBrXmpPTupvMfEHFjCi2oZbM2IT6jg+5gRjAIuD9kW7dJuD8Pd.epKlm5DhfY3Xh3cqLY6n0DDV2cpUobL0lva5uccgJ2qCKR35U6sdizC8JZTm05sUyeFXts2Fqy6H1Xv7u37sSOYebiWEpQnX0sPzcNMrh0GZqnRzyBq2DgVuPq2Xl0aVOo34zbsetB4ldNumiZfUWFSwVxhZh9YBUu0J+7z2D9Tct3murEhZWmY20EVCWiTlQkUjNAelMNuE9UkjcY+wyvPV8bpCRlWbS1ybzPbGK2sKoqwbn7t1dbjCGf8um3+vgtcM9V+faVJwBO03jj6HbFrhO8Nmmdm.ldkrZkZcZg62UyQafMY0wcuku.ixpWkQI592OTBysHUpfs7q9ddKklyELdYbrZz0t4rXcTyiE0aw9MHdQVCKjl+Eth3N9XWtCCj8iozbr4c8DyW9sRXSLxmm5NeNUNcln8fGTKH5v0BNApyAsMYFn2Mop6gCi2OYY11Z0qiLdK1ogtaKtLTWmC1ZC6khB6rvVdoKCk1ABCE8+SXnRLGNgVo.RbJ9thSpV2ollfAQGKTBkhMkOgWIhjivabb4XOHDpg6feK9zZxDxwJslLQ6ICJv078E3pw2+x4Hv0AIGAfqCRNh.Wo90a1K4ECvU7PfqwLfq4uP.tDaA+QxiBb0FAaDAt9zdCCv0tuKD3JD3JD3JD3JD3Z7A3Zg9Abs+iW4CWz.WpoFYfKPp97Ft1ej.th8WBbEBYMdAYsv3ya0JfPV298CCj0WeaHjUHjUHjUHjUHj0Y.j0+J+F0P5VrMErYbKlo7b8IciHpsT2+KNSAKHGql.z.Y5HB.gwuWbPMATxl55xV5cE8fdmy7AHmEBPNKFfbte.x4AAHmGFfbdz.yQxCl1gyp4Y2EAJlKKhiD9obTjvs35r.+AfGNqMz
Hm, I didn't consider that because using a synth group is supposed to be far more efficient, but I'll have to play around with that. Part of the issue is - and it shows up with this example patch too - certain harmonics, such as the fundamental in a marimba, take some time to reach their peak, so I have to put a (relatively) high attack value on it. If I release the key, the sustain stops building up and it immediately fades out before ever being as loud as it should be, which ruins the effect. I can't seem to find a sort of one-shot envelope effect, which would be ideal... even more ideal if it could be choked off if necessary, like a choke button on cymbals.
Thanks for the tip though.
-
Additive Synth Headaches
I decided I'd get around to trying to make a sort of tuned percussion sound using additive synthesis.
First I've found that the 'decay curve' knob on the AHDSR envelope doesn't work at all - the curve doesn't change and there's no audible difference in the decay. Second I've found that the release value on the gain modulation envelope on the Synth Group overrides every release value on every single harmonic that's also using an envelope, which makes shaping every harmonic how I want nearly impossible for this particular purpose. HISE will not let me just remove the envelope on the Synth Group, either.
I thought "Maybe I'll disable note off messages" and that almost worked just using the decay value, but then - even with sustain set to -100 dB, the lowest possible - higher notes continue to sustain forever, albeit quietly, after decaying. This is completely unusable for my purpose.
I'm unsure what to do, because the notes must play as if they were one-shot samples... documentation is basically non-existent and I can't find a similar problem on these forums. Is it a bug in HISE, or what am I doing wrong? I can't seem to find a solution for what I want to do. It seems like the additive synthesis is geared only for sounds that sustain forever. I can't properly shape the gain of harmonics for emulating chromatic percussion.
-
RE: 2.0.0 has arrived
@d-healey No... I said they are based on waveguide synthesis. For example, the Audiomodeling website straight up says that about their SWAM strings. Based on waveguide synthesis. Karplus-Strong is just a simple, early form of waveguide synthesis.
-
RE: 2.0.0 has arrived
@d-healey Karplus-Strong by itself never sounded too realistic - digital waveguide synthesis is the evolution of it and is capable of much more, as evidenced by what newer modeled instruments are capable of.
But of course additive synthesis is the most feasible way in HISE right now. I'm still waiting to see how to work with the wavetable synth and extract the harmonic spectrum from samples. I also don't know what to use for a proper analysis - SPEAR seems pretty good, but I can't get it to tell me the volume of a sine wave at any given point.
-
RE: 2.0.0 has arrived
After a teeny bit of reading, from what I can understand, Karplus-Strong is actually a form of waveguide synthesis - waveguide synthesis is just different arrangements of delay lines and low-pass filters and, for the sake of simulating sympathetic resonance of other strings in instruments such as the guitar, feeding the signal into other delay lines.
For example an additional delay line might be arranged differently to simulate the bridge or pickup of an instrument...
With that in mind, a Waveguide module might be possible if you adapted the visual scripting system to just include audio routing, delay, and low-pass filters. Of course the filters and delays would need to be automatable. That's how I'd do it, since it seems the arrangements differ depending on the instrument you are trying to imitate. Again probably not trivial.
I'm not entirely sure if the filters are always low-pass, either, but I don't know much about it. It probably is, since it's always used to simulate the reflections throughout the instrument and such. That's my thoughts on the waveguide part.
On another note it also seems the Phase FX is not polyphonic - it'd be useless for instruments that can play more than one note at a time.
-
RE: 2.0.0 has arrived
@christoph-hart Any physical modeling I've ever seen is based on some combination of Karplus-Strong, Waveguide synthesis (which is a sort of advanced version of Karplus-Strong, I'm unsure what it actually constitutes; it really depends on the application, like 2D meshes to simulate drum membranes or something), comb filtering, and convolution. Of course I'm not EXACTLY sure how they work, stuff like Audio Modeling's SWAM strings (which are 100% physical modeling pretty much) or MODO bass or Pianoteq seem pretty arcane and mysterious, but I know the SWAM strings are based on waveguide synthesis, from reading their website. There's also AAS Chromaphone, but that's definitely much simpler, at least from how it sounds.
Convolution's already there, and comb filtering is possible with the phase FX, although I'm not sure how to use it since it has two dials for frequency instead of delay time - I have no idea how they relate to each other and it's hard to use properly as a result, since all the information I can find is based on delay times. Just Karplus-Strong by itself would be a big stepping stone in experimenting; Waveguide synthesis is its own beast as far as I can tell and probably isn't trivial to implement at all.
-
RE: 2.0.0 has arrived
@d-healey I would, but I enjoy the HISE environment and find it more stable to work with. I'm mostly just interested in toying with Karplus-Strong, so maybe just that could be implemented into HISE somehow in the future. No need for finishing an entire visual scripting environment, just a single filtered delay line FX to work with.
-
RE: 2.0.0 has arrived
@christoph-hart That's a shame - I was interested in that for the purpose of tinkering with various forms of physical modeling.
-
RE: 2.0.0 has arrived
What about that visual 'scripting' environment you've shown little bits of before? I'm highly interested in that feature.
-
RE: A few questions relating to synthesis
@hisefilo Not yet, mostly still experimenting and doing research. That's also a problem I've been thinking about.