• Smoothing enabled on RAW C++?

    7
    4 Votes
    7 Posts
    408 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
    303 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
    371 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
    510 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
    416 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
    269 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
    214 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
    148 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
    382 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
    275 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
    102 Views
    No one has replied
  • C++ API: How to connect Intensity to a Slider?

    20
    0 Votes
    20 Posts
    803 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;
  • How to add a Container on raw C++ API?

    3
    1 Votes
    3 Posts
    208 Views
    hisefiloH

    @Christoph-Hart was trying like that but using mainSynthChain instead of modulator. Thanks a lot Christoph

  • Broken Preset Browser on VCSL example (C++ API)

    3
    0 Votes
    3 Posts
    181 Views
    hisefiloH

    @Christoph-Hart that worked!!!!!!! Do u have all of your codebase in your head??? Man u are a genius

  • C++ API - Pitch Chain

    13
    0 Votes
    13 Posts
    691 Views
    ulrikU

    @hisefilo Sounds great, well done! :)

  • rlottie GNU/Linux support

    4
    0 Votes
    4 Posts
    298 Views
    ustkU

    @d-healey Linux still have a future 😛

  • Raw plugin parameters, automation, and macros

    1
    0 Votes
    1 Posts
    227 Views
    No one has replied
  • Custom LookAndFeel drawRotarySlider need C++ help...

    10
    1 Votes
    10 Posts
    668 Views
    NatanN

    @ustk Sir, Is This Ready To Use?
    Any Examples Is Much Appreciated

  • UIConnection and Parameter Watcher style binding for Macros

    2
    0 Votes
    2 Posts
    237 Views
    O

    UPDATE: I added a new method to MacroConnectionListener virtual void macroLoadedFromValueTree(int macroIndex, float value){} which I call when a new value tree is loaded for the macros. My custom component calls setMacroControl on the sliderValueChanged callback, and updates the slider value on the macroLoadedFromValueTree callback.

    To watch the parameter, I search for the first parameter for that macro index and set up a parameter watcher, converting the NormalisableRange to a linear 0 to 1 value in the callback.

    Since parameters can change with every preset, I set that parameter watcher up at the same time macroLoadedFromValueTree is called making sure to dispatch to the MessageManager for any repaints.

    It's not as convenient as a UIConnection class, but it works.

33

Online

1.6k

Users

11.4k

Topics

99.4k

Posts