• drawTableBackground

    6
    4 Votes
    6 Posts
    249 Views
    DanHD

    @d-healey sounds hectic!

  • Added getTrimmedBounds()

    5
    4 Votes
    5 Posts
    385 Views
    d.healeyD

    @christoph-hart Are there any downsides to including in the component class?

  • g.drawFittedText

    6
    5 Votes
    6 Posts
    303 Views
    ulrikU

    @d-healey Yeah that's my experience as well

  • Little C++ help required

    2
    0 Votes
    2 Posts
    158 Views
    ustkU

    @d-healey I think because struct isn't inside a header file it can't be included in the ScriptExpansion.cpp class

    So maybe try moving the whole struct into PresetBrowser.h and include it in ScriptExpansion.cpp, but it might be a bit more subtle...
    Also have you tried

    struct PresetHelpers PresetHelpers::importPresetFromClipboard

    Since they are in the same namespace? But I bet you I'm saying non-sense 🙃

  • Aliasing on Balance / Pan

    1
    0 Votes
    1 Posts
    138 Views
    No one has replied
  • Building develop for C++ API

    6
    0 Votes
    6 Posts
    350 Views
    Christoph HartC

    @daniel said in Building develop for C++ API:

    I'm curious which way you fixed it

    I would estimate I've added .get() in 90% of all cases and only returned / passed a ref counted pointer where the caller & callee actually takes / shares the ownership.

  • revealToUser doesn't work with spaces

    5
    0 Votes
    5 Posts
    251 Views
  • Smoothing enabled on RAW C++?

    7
    4 Votes
    7 Posts
    485 Views
    hisefiloH

    @Christoph-Hart still trying to find where it happens. I replaced many parts of the source code so... Maybe I mistaked somewhere. Will report later

  • Updating streaming_example

    5
    0 Votes
    5 Posts
    335 Views
    danielD

    Hi @Christoph-Hart

    Great, thank you for the answers and sorry for interrupting your vacation.
    Sorry for teasing, the comment is from a commit (see .gitmodules ;-) )

    I'll have a closer look at the develop branch. My questions stem from the fact that I never used the full features of HISE, and actually the clients codebase doesn't either, even though it is based on an old export.

    Maybe I will know more details next week when you are back.

    Cheers and enjoy the rest of your vacation
    Daniel

  • Develop on GNU/Linux

    4
    0 Votes
    4 Posts
    393 Views
    NatanN

    Linux Threads Be Like 🤣
    https://media.tenor.com/images/220b86608e0781337040b846a71f0ebb/tenor.gif

    alt text

  • Getting debug output to the compiler console..

    17
    0 Votes
    17 Posts
    1k Views
    B

    @Christoph-Hart Sent you a message.

  • Monophonic Aftertouch....

    12
    1 Votes
    12 Posts
    543 Views
    LindonL

    @Lindon - well it looked too good to be true - and it was...
    so I:

    forked the latest MASTER

    changed the code I thought needed changing in ControlModulator.cpp

    to this:

    const bool isAftertouch = controllerNumber == 129 && (m.isAftertouch() || m.isChannelPressure()); const bool isPitchWheel = controllerNumber == 128 && m.isPitchWheel(); if(isAftertouch || m.isControllerOfType(controllerNumber) || isPitchWheel) { if (m.isController()) { inputValue = (float)m.getControllerValue() / 127.0f; } else if (controllerNumber == 128 && m.isPitchWheel()) { inputValue = (float)m.getPitchWheelValue() / 16383.0f; } else if (m.isChannelPressure()) { inputValue = (float)m.getChannelPressureValue() / 127.0f; } else if (m.isAftertouch()) { const int noteNumber = m.getNoteNumber(); polyValues[noteNumber] = (float)m.getAfterTouchValue() / 127.0f; inputValue = FloatVectorOperations::findMaximum(polyValues, 128); jassert(inputValue != -1.0f); if (inputValue < 0.0f) inputValue = 0.0f; } else { jassertfalse; } inputValue = CONSTRAIN_TO_0_1(inputValue); float value; if(useTable) value = table->getInterpolatedValue(inputValue * (float)SAMPLE_LOOKUP_TABLE_SIZE); else value = inputValue; if(inverted) value = 1.0f - value; targetValue = value; } basically just setting the midi controller numbers to their correct values in the boolean or statements at the top...

    Sadly this makes no difference and I dont know how to get it to provide me with debugging information - the HISE debug build crashes out with errors...and even if it didnt I wouldnt know what to add in that was the same as Console.print("something") and I wouldnt know where to look even if I did...

    So anyone got any clues, or is this back to @Christoph ?

    It occurs to me that i should remove any possibility that its my hardware doing this (an Arturia KeyLab) so can anyone else please run this wildly simple snippet:

    HiseSnippet 677.3ocsUs0aSCCE1tqdhVtHFhe.Q6oVwnJE1FH1CLVufpftUQFS71jmiaq0RribbFTg3+L+CfiSxVZGYSaQh7PUOmy2mymO2xDshwiiUZDtwwKh3H7iHdKjl48lSERzn9H7SHiowFt1Iy0AKhnwwbeDFu1GsNvMpiRe986OfFPkLdgKD5Dkfw+rHTXJ7NY+OIBBFR84GKBWB816Ohoj8TApDPOqQbQQT14zY7CoVX0HH75C7EFk1yPM7X.yAJ+EdyUeWlg+DQr3r.t0nKxCNnL2ndyEA9St7tFiP35SJt4qkcyeNYrvWbk+hLvSSC3TvX4b.t1pRp9JRp6MIogp.e6AbCxCuj7pmIuMHdLsHxTDwpsGRFIghyTJj1WVVYXQ0dFlzSAHjlNgzy4C0fwULZsqq6VN6351duoIRlQnjNJ4gJC+HYq1M+YyFM+USmqGZ5zRiYeMZUP.WmEFriUA7NQZgzzZLHYnR1YF2T.7vjvyrvcdgyluaS32RQcBMHg2pc68t1Kz17nuMozRld9a4bg8DtBHjQWsjs9cqjwxxiKATIGIElih341EE0tkTTQ4EB3eecTepgZqy49.bQbsQXkCtO+BXnIqp2fzmGetQEAiM+SKAzXp7SBnlU6Vsik4Af7wJsE1RuLVXVr7X68nE1szV3Rus2Q4tAYhvvlWtdqUhdgr1+a8luP3wjASmxYlBwVmL7aUc5+dHkunRLB4rwTiV7CDl.yIdvNQFGThTxCfWDAWy1QkY6ZssYFOtzO03OvSdvtVabdvtWFDERYZ0orrIE6JmGj5AzjLcaaCXsOX6zEkN8.7HtcbQgvlvSYLap3kf1Kmyqp.mWWANaWAN6TAN6VANuoBbd6sxw9QnOjXTgYiIfiICRWifwCjTnKKsiD8Wjb0bzI

    you should see the controller number and the reported value showing up in the console...where for me it shows

    129:

  • NUM_API_FUNCTION_SLOTS

    12
    0 Votes
    12 Posts
    451 Views
    ustkU

    A while ago I've dug for a very long time with an export issue on one of my projects... Then I realized that the name of this project contained the word "system" in it so it was bugging the compiler... Scratched my head for almost a month 😆

  • Modulate each graph point on TableEnvelope. C++ API

    7
    0 Votes
    7 Posts
    305 Views
    hisefiloH

    @Christoph-Hart I'm not changing the point or moving it. Just adding a modulator to it. As AHDSR allows on Decay Time, or any other state...

    Does it makes sense??

    Asking different: It's possible to create a multi-state ADSR module? will be something like ADADADADSR ?

    Sorry this is the best I can explain with my limited knowledge

  • C++ API. Load/Save button state on presets

    3
    0 Votes
    3 Posts
    226 Views
    hisefiloH

    @Christoph-Hart thanks mate!!!!!!

    Implemented that!
    Still having a weird behaviour loading a button state from preset at the "First time I create it"
    I mean, when I create a preset and the button is "Enabled" or "1" in the preset file, it flips apparently the behaviour of the other presets doing that button to not load the correct state. If I quit or restart de plugin, it loads correctly. I guess the toggle thing makes it not to work properly.
    I just want to save if that module is Enabled or Bypassed.

    This is what I have at Raw.cpp

    addToUserPreset<raw::Data<bool>::Bypassed<true>>("VibratoOnButton", "LfoGain");

    this is the preset

    <?xml version="1.0" encoding="UTF-8"?> <Preset Version="1.0.0"> <Control id="VibratoOnButton" value="1"/>
  • Get and Set Favorite for Current Preset

    3
    0 Votes
    3 Posts
    173 Views
    Casey KolbC

    @ustk Yeah I considered this. It looks like Christoph is doing some fancy stuff with the database but I guess it wouldn't be too difficult to make my own. However, my current users will lose their favorites if I use my own system, so it'd be great to stick with the built-in HISE one.

  • Preset Browser Tagging System with Custom UI

    7
    0 Votes
    7 Posts
    414 Views
    Casey KolbC

    I figured out how to hook it up with the API system in order to get and set tags from presets, so all good!

  • Getting started building with hise and C++

    6
    0 Votes
    6 Posts
    314 Views
    ospfeigrpO

    @Christoph-Hart and @hisefilo thanks for that i'll check it out but seems to be what i am looking for.

  • Synth.addNote bug on C++

    1
    0 Votes
    1 Posts
    108 Views
    No one has replied
  • C++ API: How to connect Intensity to a Slider?

    20
    0 Votes
    20 Posts
    861 Views
    hisefiloH

    @Christoph-Hart
    cannot get it working. Compiles, runs but onController never gets executed.

    This is what I did:
    Changed HardcodedMidiProcessor to HardcodedScriptProcessor because does not exist.
    Changed Modulator for LfoModulator since Modulator does not have setIntensity

    class IntensityForwarder: public hise::HardcodedScriptProcessor { public: /** Set the name and default ID of the processor. */ SET_PROCESSOR_NAME("IntensityForwarder", "IntensityForwarder", "IntensityForwarder"); IntensityForwarder(MainController* mc, const String& id, const String& modId): HardcodedScriptProcessor(mc, id, mc->getMainSynthChain()) { modToUse = dynamic_cast<LfoModulator*>(ProcessorHelpers::getFirstProcessorWithName(mc->getMainSynthChain(), modId)); jassert(modToUse != nullptr); // Add one slider that will forward the value to the intensity. Content.addKnob("modIntensity", 100, 100); } // add all callbacks void onControl(var c, var value) { std::cout << "on Control" << std::endl; modToUse->setIntensity((float)value); } private: WeakReference<LfoModulator> modToUse; JUCE_DECLARE_WEAK_REFERENCEABLE(IntensityForwarder); };

    then I had to build it using add, instead of create

    builder.add<IntensityForwarder>(new IntensityForwarder(mc, "IntensityForwarder1", "LfoGain"), mc->getMainSynthChain(), raw::IDs::Chains::Midi);

    and lately conected it using this:

    sliderForwarder.connect("IntensityForwarder1"); template <int ParameterIndex> class StrippedSlider : public hise::HiSlider, public ControlledObject { public: StrippedSlider(MainController* mc, const String& name) : HiSlider(name), ControlledObject(mc) { raw::Pool pool(mc, true); // flaf.setFilmstripImage(pool.loadImage("Strip.png"), 100); flaf.setFilmstripImage(pool.loadImage("StripBigNew.png"), 64); flaf.setScaleFactor(0.3); setName(name); setSliderStyle(Slider::RotaryHorizontalVerticalDrag); setLookAndFeel(&flaf); setTextBoxStyle(Slider::NoTextBox, false, 0, 0); } ~StrippedSlider() { connection = nullptr; } void connect(const String& id) { auto p = ProcessorHelpers::getFirstProcessorWithName(getMainController()->getMainSynthChain(), id); setup(p, ParameterIndex, Slider::getName()); connection = new raw::UIConnection::Slider<ParameterIndex>(this, getMainController(), id); setLookAndFeel(&flaf); } bool tempoSyncMode = false; FilmstripLookAndFeel flaf; ScopedPointer<raw::UIConnection::Slider<ParameterIndex>> connection;

33

Online

1.7k

Users

11.8k

Topics

102.7k

Posts