Forum
    • Categories
    • Register
    • Login
    1. Home
    2. Lindon
    3. Posts
    • Profile
    • Following 0
    • Followers 11
    • Topics 638
    • Posts 6,992
    • Groups 1

    Posts

    Recent Best Controversial
    • Scope - .dump()

      am I doing something wrong or does the hashed pointer after dump before: and dump after, e.g.

      Interface: dump before: {SW50ZXJmYWNlfHwxNzE4fDk0fDY3}
      args[0] = 1
      args[1] = 31.0
      args[2] = 29

      only work in the init, I dbl click it and it doesnt take me anywhere useful in included script or on note on etc.

      posted in General Questions
      LindonL
      Lindon
    • RE: Instrument Design problem.......

      @Christoph-Hart have at it.....

      posted in General Questions
      LindonL
      Lindon
    • RE: Instrument Design problem.......

      Ok so after some simple dickering about on my part I can report (unsurprisingly) @Christoph-Hart 's approach 1 works fine for "std" modulators and FX and for Hardcoded FX too.. so all good here.....

      posted in General Questions
      LindonL
      Lindon
    • RE: Instrument Design problem.......

      @Christoph-Hart thanks for getting this back on track...OK well Im using a Hardcoded master FX to host my filters as they are korg and obi models not available in HISE, and Im using(not that Ive mentioned it) another HCFX for the FM modulation as FM mod seems to be broken in Syntheseiser groups now....So i think this points me down path 2, which is a problem as I have no idea how to script an extra mod chain to respond to note on and get an array value with a counter...

      posted in General Questions
      LindonL
      Lindon
    • HardCodedMaster FX and the GlobalRouting Manager

      Ok so whilst my post about timing problems and modulation disappears into an evangelical discussion about AI.....

      I cant seem to get the Global Routing Manager to work with EventData modulators when placed in HardCodedMasterFX, it works fine with std fx and places we'd put modulation, gain, pitch, filter freq etc.

      Any one else have this problem?

      posted in General Questions
      LindonL
      Lindon
    • RE: Instrument Design problem.......

      @Lindon ok so heres my first question:
      assuming Im attaching to Filter frequency using index 0, what do I put in nextValue, can it be a normalised value or does it have to be in the applicable range (20 ->20K )??

      posted in General Questions
      LindonL
      Lindon
    • RE: Instrument Design problem.......

      @dannytaurus thanks, sadly Claude has it wrong as the interface script isnt deferred and point 1 was Daves idea so thats worth a try, point 2 is interesting never thought of doing it this way might give it a go, tho my knowledge in this area is very very limited.

      thank again.

      posted in General Questions
      LindonL
      Lindon
    • RE: Instrument Design problem.......

      @David-Healey said in Instrument Design problem.......:

      @Lindon If it's a custom effect could you implement the MIDI handling directly inside it using MIDI nodes?

      perhaps, not sure that will solve the delay problem, but itas not so problematic on the FM side so I will look at it... thanks again.

      posted in General Questions
      LindonL
      Lindon
    • RE: Instrument Design problem.......

      @David-Healey said in Instrument Design problem.......:

      @Lindon said in Instrument Design problem.......:

      Sadly I dont think so, its a drum player, so the note number is the same for every incoming note,

      Does it have to be?

      For gain and pitch you can change these on the individual events instead of using an effect or modulator.

      Yes thats true, i might look at doing that at least for these values, it still leaves me with Filter Freq and FM depth (its a scriptnode Faust effect), but it should improve things, thanks.

      posted in General Questions
      LindonL
      Lindon
    • RE: Instrument Design problem.......

      @David-Healey said in Instrument Design problem.......:

      @Lindon There is a note number modulator you can put in the modulation chains, would that solve it and avoid scripting?

      Sadly I dont think so, its a drum player, so the note number is the same for every incoming note,

      @Lindon said in Instrument Design problem.......:

      I set these new "FX Params" in the interfaces on note call back.

      If you do need to script it I'd put this stuff in a separate MIDI processor and leave the interface deferred.

      Yeah once I have it working I will attend to that...

      posted in General Questions
      LindonL
      Lindon
    • Instrument Design problem.......

      So I have an instrument design problem....

      I'm implementing a per-note modulation system: for each sampler in my system - each time a note arrives I look up the next value in an array and set the target effects parameter. I am aiming to modulate Gain, Pitch, and Filter freq.

      I set these new "FX Params" in the interfaces on note call back.

      This all works, but.......

      I have a timing issue: the note passes to the sampler and it begins to play before the FX param change has completed. So this produces an audible effect, for instance if the previous note had a loud gain setting, and the new note has a quiet one, the new note begins to play at the old setting before moving to the new setting giving me a nasty audible click.

      So I need to not start the note until these FX changes have completed, and for the life of me I cant think of a nice way to do this....

      So the ugly ways to do it....

      1. ignore the incoming note and then use a fixed length timer to duplicate the note event.... now I have to manage publishing some fixed delay time to the DAW- with no g'tee everything is done...

      2. Publish(use Globals - ugh!) each modified value for each FX param, use a while loop to make sure the target samplers FX params are currently == the published value....

      3. use Message.delayEvent - with no g'tee everything is done...

      Anyone got any better ideas???

      posted in General Questions
      LindonL
      Lindon
    • RE: Opening plugin UI disables active automation in Ableton Live

      @David-Healey said in Opening plugin UI disables active automation in Ableton Live:

      @Lindon Christoph said in another thread that he's currently busy with a theatre project but will get to the PRs soon.

      https://forum.hise.audio/topic/15026/au-component-version-is-always-0-in-exported-plugins-xcode-exporter-misses-versionashex/8?_=1788803845075

      yes I know I read it- Im just tagging this one as one I think needs to be included - of course Christoph is entitled to tell me to F'k right off with my view of what is important or not :-)

      posted in Bug Reports
      LindonL
      Lindon
    • RE: Opening plugin UI disables active automation in Ableton Live

      @dannytaurus another useful and helpful PR...@Christoph-Hart ??

      posted in Bug Reports
      LindonL
      Lindon
    • RE: KODA is in early access - anyone tried it?

      @dannytaurus its an attempt to offer an alternative to Kontakt from Mike Greene and friends...

      posted in General Questions
      LindonL
      Lindon
    • RE: HISE made Plugin Installer

      @resonant - I think Dave's right there are not any real problems these days getting the plugin into the "system" folders on a Mac (but its been a while since I've done it as Im nearly exclusively on Tracktion these days) so caveat emptor... but every other problem (locations and content) are still there which is what the CR Setup componentry is there to resolve.

      posted in General Questions
      LindonL
      Lindon
    • RE: HISE made Plugin Installer

      @resonant said in HISE made Plugin Installer:

      I think I’ve seen a few users (maybe @Lindon @ustk @orange) try this before; I’d really like to know what the risks are or what needs to be done.

      Okay heres what I've done over the last few years, first the problem:

      HISE products(especially those using samples) require a number of "additional" steps to any set up e.g. the Link file, putting the samples in a user-defined location, putting presets in the AppData folder as well as images, IR's, wavetable; files and any meta data, json or js files you want to ship with your product (the list goes on, and on, and on and - well you get the picture).

      PackageBuilder, Packages etc and inno etc on windows dont really understand these locations, or any interaction required with the user whilst the install is underway - its possible but its fiddly and in my experience very time consuming.

      So first I built a separate stand alone installer in HISE, it required the user to download one(or more) zip file(s) and point the installer at these...not massively friendly end-user tool, but it dealt with all the problems above....

      Next I took it a step further and got it to use a defined manifest file(a json file) that allowed it to download its own zipped up content files (it asked the user where they wanted to put these temp files and cleaned up afterwards). So more friendly, and also on its way to being a "generic" Channel Robot Installer system that I could use for all my plugins.

      Biggest outstanding problems: 3rd-party distributors (like Tracktion) and their insistence on using their own in-house installer systems and I'd never been able to get the installer to put the plugin in anything but the "user" plugin folder structure on MacOS.

      So in the end it became clear that this read-a-manifest-down-load-some-files-and-install-them-where you-are-told componentry would fit inside the plugin itself pretty easily.

      So my current system? Every plugin is a simple VST3, AU, AAX plugin that any 3rd-party installer can put where those plugins belong, so now you can use packages or whatever to put the plugin in the "system" plugins folder, or you can hand your plugins over to some distributor based system (e.g.Pulse) and they can install it their way....

      When the plugin is fired up for the first time it recognises its not got all it needs and starts the download and write to disk process for all it's "content":

      • it first asks where the user wants these temp file to be located
      • it then asks the user for the Sample folder they want to use
      • it then starts downloading, using its manifest to know what to download, and where to unzip it to
      • once everything is downloaded it starts its own set up process
      • puts samples in the user selected samples folder and creates/updates the link file
      • puts images in the AppDat/images folder
      • presets in the AppData/User Presets folder
      • meta data in the AppData Folder
      • tells the user its done and offers to clean up after itself, telling the user to just restart the plugin to get it all to work.

      You could easily define more locations for "stuff" as you need it but right now the plugin set up componentry knows about these locations:

      • sample folder
      • images folder
      • expansions folder
      • Audio folder
      • AppData folder

      Here's a list of the constants it currently users for locations:

      const var USERSAMPLE_LOCATION = 0;   // a user defined sample location - i.e. the contents of the LINK file location(folder)
      const var EXISTING_LOCATION = 1; // whatever is in linkWindows/linkMacos (read, or write this if missing/empty)
      const var APPDATA_LOCATION = 2; // the location of {APPDATA}
      const var AUDIOFILES_LOCATION = 3; // Appdata/AudioFiles  -- for the Loops and HWT files
      const var PRESETS_LOCATION = 4;  //  AppData/User Presets
      const var EXPANSIONS_LOCATION = 5;  // APPDATA/EXPANSIONS/<the expansion name>  where the expansion json goes...dont forget to add the exp name ot teh install file
      const var EXPANSIONS_MAPLOCATION = 6; // APPDATA/EXPANSIONS/<the expansion name>/SampleMaps
      const var USERDOWNLOADS_LOCATION = 7;
      const var IMAGES_LOCATION = 8;
      const var SKINS_LOCATION = 9;
      

      It turned into a pretty simple effort to extend this to allow download and install of expansions, and theses sell pretty well, here's an example page for Atmosia :

      https://www.tracktion.com/products/atmosia

      scroll to the bottom and you will see there are 5 expansion packs users can buy.

      Generally its a pretty fail safe system and I get few support calls for it, maybe 1 in 100 (but that's a guess)

      If the HISE shop ever gets up and running - I intended to offer it as a set of script files, widgets and guideline documents so you can add it to your own plugins.

      posted in General Questions
      LindonL
      Lindon
    • RE: Fm mode in the Synthesiser Group seems to be broken

      @Lindon so as a work around you can create a Faust based FX and drop it into a Hardcoded Fx slot, heres the faust code for a simple FM FX (as provided by Gemini):

      import("stdfaust.lib");
      
      // Modulator Controls
      modFreq = hslider("Mod Frequency [unit:Hz]", 100, 10, 2000, 0.1);
      modOctave = hslider("Mod Octave Offset", 0, -3, 3, 1);
      modDepth = hslider("Mod Depth", 0.2, 0, 1, 0.001);
      
      // Calculate the effective modulator frequency using the octave offset
      effFreq = modFreq * ba.semi2ratio(modOctave * 12);
      
      // Modulator oscillator (sine wave oscillating between -1 and 1)
      modulator = os.osc(effFreq);
      
      // Convert depth to a delay modulation amplitude (in samples)
      // A small maximum delay (e.g., 2ms) keeps the FM effect tight and clean
      maxDelayMs = 2;
      maxDelaySamples = ma.SR * (maxDelayMs / 1000);
      delayMod = (modulator * modDepth + 1) * (maxDelaySamples / 2);
      
      // Apply Phase/Frequency Modulation using a fractional delay line
      fmEffect(x) = de.fdelay(maxDelaySamples, delayMod, x);
      
      // Process stereo or mono input
      process = _,_ : fmEffect, fmEffect;
      
      posted in Bug Reports
      LindonL
      Lindon
    • Fm mode in the Synthesiser Group seems to be broken

      I cant set the carrier and modulator manually , the one Im not setting flips back to unassigned, and programmatically assigning seems to set it only after a couple of compiles, and even then Im not sure it works, and if you try and set another synthesister group the first one unsets itself....

      HiseSnippet 1338.3oc6Z80aaaCDWx1JnwsqaEHacOJTrGRGBBrT9iSwvPbhcbpwpSLhSa2acLRmiIhDoFEUVCF12s89dYeDxGg9MXiTxNlJV0wwKIKcS9gfv63Q8iGu62IdPcXTGHLjxzzKe3YAfl9iL5dFg2udeDln0pgl9iMZiB4.yLQz1mEfBCAWMc8h6JEnOeIs3eeXysQdHhCLRjl1anXG3UXeLejzN09ArmWSjKbH1WY1qVqkCkTm5QiD3onQEs.jyInig8PxoUvP6knv9Z5eqw5t8Pq6VcsJVvJa3V01p5ZuX0pqWoRO2MrpdT0iVA4hVuZEM841wEyortbDGB0zKsM08rt8o+BI4A7FbH9HOPNvRqq3ImHtI0yUtEk+uV89XO2NCcTgZhEsyH2VwD21BFswt3KjOx88EwJLGYgpCTuPZ3ULE7r9XvKCHoq.oRIP5IFccX3.9HMR77PiVDwoYOj3bREJIyUqvOUvnNULCBeYezIPSlXvEVrnvEujo3OO+6JWVbVExMOEwLiiXfPbHv1kQiBrL+9DYKeLviwZ7nEelxDMSl4yDqzXlubHv2hyY3ih3vhiqtNhwv.qEwEd+RVyxJzl5F4gDd9j0vdx6G6od+Xm09wdxnw9p2OW4JL99oWDwgioDSJYOJG1mr3yK+qkmu7uU17xp50KScxv.F0yCXYpVl6xljgKRh7OBXKIbodQvESTDelNnetoKn2IIpTYhTRKBlue.LX7nrVqLRQzFDVK9uW2pAhijYMCjIlW.v3XIbza.mJ3rRxgl2nADdBmFHXsFKASjZOzsqluKYEGnP3ORkjISjHgX9YprlWlDnzG2eTISNpL2sSIbehQGL2oe13sPF3U30tsw6.J0OyXmd8.G9HvVxn4ONQ9yabn74oJJFmrEijELFmJ6lnzXvTWZbGBRryZ1V8gnxinJOM6fBFp8ZBNjRnwPYKeZDgqZ2.sM.dDIEzGnna.CPtpVHQeWP.U23kLLUbdwzGVFSWde5zIk4eEEoevsUQ56z7y+4zIEmN3dEuSw7CwXWrefGrC4TvSvYNfCoAzCE4wuPpJHaKBTB5SIXG0HnC.QwriOFXpPOy8inrm3s.GIYgZG.d.JTIf7ap8JLAPLgaBlQWw0+0qx735qMRfqoL807+FUAJ9+9p.Sx08HiD5Q4g887SYQUrXB66IP8oIP8gFuEcJDWNMFkeY73dTlu4t.AXx8vjps9m270V22gKfvgLDILfFBVpqbWvGeHk.gojdIKryzhTRShZrFWTpYIcEMEtBk48fZCEZqJrChjZwDiSsRswpE9G75CIkp2OzQ3Xj9Y0y+NQdgvawt79Jq64JhsUE+RDSdonTb7Wtf+rS+NWds77hBeBUTPFC99OcJ++TCAEfsY7ws4+9m2GPi3XxwsQhWQTPZYrWjeWA2rCHPLg.dx6NnWPdi9jwUjiSXZItwC9KwuAJsji0GnzZnRUOyiGVGpq3kHGUG5qhGaJIamlBQu3ON+VuPjxB+6WTUI08xBglL3mOPd7oJuNEwxT0G1roXSloMcQ7HVbbvkuX3MIydobl8bl86CL62EjN2wDaWilWYOgWvVSKu4U4MuJu4U4MuJuZVdyqxad00s4U14Mu5Fs4UmuYdyqxuhSdQg7lWk27pqUyqrua+BExadUNydNyddyqtm8L7QNL56bR9FEi60RrDgukD+YFOuQa4XSKs3uaQ03HeQF76bbRuTiYn8rZ3JypgqNqFt1rZ35ypgUmUC23pMTRvtUDm5mPKHt1Pmch+PO00StwPbFn1ey11qGM
      
      posted in Bug Reports
      LindonL
      Lindon
    • RE: AU component version is always 0 in exported plugins (Xcode exporter misses versionAsHex)

      @dannytaurus
      Perhaps report this - and your findings on the JUCE forums?

      posted in Bug Reports
      LindonL
      Lindon
    • RE: Customer support software

      @dannytaurus said in Customer support software:

      By the way, I think your 5% number is too high. I just checked and Wise will convert 1k EUR to GBP at a rate of 1 EUR = 0.8553 GBP with a fee of 4.78 EUR, which is more like 0.5%, not 5%. Maybe the fee varies by amount converted.

      Sorry yes my typo...

      posted in General Questions
      LindonL
      Lindon