• Text rendering on Mac versus Windows

    General Questions
    7
    0 Votes
    7 Posts
    81 Views
    dannytaurusD

    @David-Healey Had Claude do a deep dive on this. My summary:

    1. It was fixed in JUCE 8.

    JUCE 8 (2024) introduced TypefaceMetricsKind with two modes: legacy (the old per-platform behaviour - explicitly documented as "metrics may differ for the same font file on different platforms") and portable (same metrics everywhere, based on the sTypo metrics - i.e. the same table family our harmonisation aligned everything to). portable is the default for the new FontOptions API. legacy survives only for the deprecated Font constructors. JUCE 9 (released three days ago) carries that forward. So the divergence we measured isn't just fixed upstream - it's acknowledged as a framework bug with a designed migration path.

    2. Submitting a JUCE 6 to JUCE is a non-starter. It's 2 major versions EOL. Fixed in JUCE 8 anyway.

    3. Would a fix even be accepted, considering it's technically the font at fault?

    JUCE 8 is the counterargument to that. The JUCE team looked at this exact situation and concluded the framework should absorb it. And our own data supports that: Google-shipped fonts (multiple Barlows and Michroma) carry disagreeing tables. When the ecosystem's most mainstream font foundry ships "broken" metrics, they're not broken - the platform-divergent reading of them is.

    4. Submit a fix to HISE

    This would technically be a fix to the current JUCE_customized submodule repo and I don't really want to go there. It's a heavily customised version of JUCE 6 and sounds like at some point Christoph will move to JUCE 9 (judging by previous comments), possibly inheriting the fix anyway, so I wouldn't know where to start with this.

    I'm happy to leave all this here with a note to @Christoph-Hart that if he wants to take this on I'm sure we would all appreciate it but it feels too messy/convoluted for me to take on right now.

  • HISE segfaults when loading large sample maps

    Bug Reports
    6
    0 Votes
    6 Posts
    1k Views
    David HealeyD

    Working on a large project again - probably the same one :) and the same issue, loading wavs the project crashes/times out, convert to monoliths - in fact I only converted one of the maps to monolith - and the project loads. I will try poking Claude about this but just wanted to give this thread a bump.

  • "Help, I'm getting an error when compiling HISE."

    General Questions
    7
    0 Votes
    7 Posts
    93 Views
    Christoph HartC

    You're trying to build the Faust build without having installed Faust. Select another Scheme to build that doesn't include Faust (or use the hise-cli for setting this all up).

  • 13 Votes
    109 Posts
    24k Views
    ChazroxC

    @lalalandsynth The background is transparent by default when you export. 👍

  • How to get CPU serial number using HISE?

    General Questions
    42
    0 Votes
    42 Posts
    12k Views
    dannytaurusD

    @ustk Just the ever-tightening security of OS vendors. Privacy is a selling point now, as is anti-machine-fingerprinting.

    A user account authentication system, via the browser, feels much more lightweight, predictable and more transparent to the user.

  • Make expansion hr without samples

    General Questions
    6
    0 Votes
    6 Posts
    2k Views
    David HealeyD

    Now that I've reverted to using the hr1 system I ran into this issue again.

    I have a library that is going to be about 20GB compressed and when I send out an update to my users that changes only the data (hxi) I don't want them to have to redownload the entire 20GB all over again.

    So I worked with Claude to implement a split archive solution.

    The default behaviour is the current behaviour, bundle everything together into one set of hr files - works for expansions and regular plugins as before. I did change the default split size to 2GB as that seems to me to make sense.

    Then there are two new options:

    Split Data From Samples: This will put the data into its own .hr1 file with the suffix _data. The samples will then be bundled into .hr2, .hr3, etc. as needed. If the user only needs the data (because they installed the samples previously) then they just download and extract the .hr1. As it extracts it will still check for the next archive as before but will fail silently if its not there. However if one of the other archives is missing it will report an error as expected - I also improved the error message so instead of just saying Read Error, it tells the user which archive is missing. Data Only Update: This just compresses the data into an .hr1 archive and assumes the samples haven't changed and have already been compressed using the split option.
  • 0 Votes
    19 Posts
    139 Views
    Christoph HartC

    With the mod matrix system each connection can have a intensity and you should also be able to set it programmatically without the matrix floating tile using the API.

    For targets that dont expose a mod chain you can just define a UI knob and give it a matrixTargetId. You‘ll loose the precision of the real mods but if it‘s acceptable then fine.

    The modwheel could also be a global source modulator using a control modulator.

  • ShapeFX functions missing

    General Questions
    2
    0 Votes
    2 Posts
    47 Views
    dannytaurusD

    @bashfulsound It's a bug. I submitted a PR here but not sure if Christoph has seen it yet.

    https://github.com/christophhart/HISE/pull/962

  • 0 Votes
    1 Posts
    17 Views
    No one has replied
  • dublicate and rename Hise project

    General Questions
    3
    0 Votes
    3 Posts
    60 Views
    C

    @David-Healey cool. thanks!

  • 6 Votes
    23 Posts
    3k Views
    lalalandsynthL

    @Bart I get inspiration from everywhere, having said that I have a massive PureRef file with all kinds of designs.

  • 1 Votes
    21 Posts
    741 Views
    David HealeyD

    @Christoph-Hart I've merged the new commit and it no longer crashes, just shows some ugly errors. Is this intended as a stop-gap solution? Because isDefined() still returns true for the none-existent function.

    Edit: Oh I see, it just stops the execution at the "error"

    Tried your suggestion and appears to be working here, maybe a preprocessor definition (default true) to protect older buggy projects?

  • Warnings about vars

    Scripting
    2
    0 Votes
    2 Posts
    69 Views
    Christoph HartC

    @David-Healey That's fixed now, it now respects the scope of anonymous functions within a namespace like this.

  • Most up-to date build instructions for HISE? (July 2026)

    Solved General Questions
    10
    0 Votes
    10 Posts
    67 Views
    GUJIANG

    @Christoph-Hart

    The newly built HISE version creates a new RHAPSODY template

    0.png

    1.png

    2.png

    3.png

  • Saving MIDI CC assignments in user presets?

    Scripting
    60
    2 Votes
    60 Posts
    5k Views
    David HealeyD

    @dannytaurus Yeah this is what I'm doing

    const automationDataFile = Expansions.getAppDataFolder().getChildFile("automation.xml"); const automationDefaults = Engine.createMidiAutomationHandler().getAutomationDataObject(); // Pulls the defaults from the project on first run const uph = Engine.createUserPresetHandler(); uph.setStateManagerProperties({ SubStates: { MidiAutomation: "External", MPEData: "External", macro_controls: "External" }, ExternalFileDefault: { MidiAutomation: automationDefaults }, ExternalFile: automationDataFile.toString(automationDataFile.FullPath) });
  • Get The Preset Browser To Select SampleMaps

    General Questions
    2
    0 Votes
    2 Posts
    45 Views
    David HealeyD

    @justinfitzmusic

    All a user preset does is store/restore the state of controls on the UI. So to get a sample map to change when a preset changes you need to script one of your UI controls to change the sample map when its value changes.

    I have a video here that shows how to do it using a combo box - but you can use any control.

    https://youtu.be/eQ7YvIeS5lY

  • Claude's ugly code

    AI discussion
    14
    3 Votes
    14 Posts
    1k Views
    David HealeyD

    @dannytaurus ah that makes sense. I'm just getting Claude to help with small little tasks so I haven't gone to the trouble of setting up a remote repo, etc.

  • Preset browser LAF - the text box font and text colour?

    Scripting
    2
    0 Votes
    2 Posts
    48 Views
    David HealeyD

    @Lurch It's part of the alert window system so you need to use functions like drawAlertWindow

  • Help with persistent build failure

    Newbie League
    4
    0 Votes
    4 Posts
    155 Views
    S

    @Christoph-Hart i figured out that the jucer file didn't have the hi_faust module included, but it exported fine after adding that

  • Circuit Bent Toy VST

    Blog Entries
    3
    9 Votes
    3 Posts
    183 Views
    F

    @Chazrox Thx, it was kind of tricky to code but makes it fun.
    I thought about making it grabbable for potential updates.