Juce Tutorial 64 - Building Your First Plug-In (2020 Update)

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 ม.ค. 2025

ความคิดเห็น • 161

  • @SoundPeer
    @SoundPeer 2 ปีที่แล้ว +34

    For guys using Visual Studio 2022 and Juce 7.x.x, the reference to PluginProcessor.cpp mentioned around 37:50 might not be called "processor" but rather "audioProcessor" - so spare yourself the headache by checking this.
    Also, as the code I start with (having opened Projucer's basic VST preset in VS) uses juce::Graphics, juce::MidiBuffer etc. to begin with, remember to type
    juce::Slider instead of just Slider,
    juce::Colours instead of Colours,
    and so on...
    Typing "using namespace juce" on top might be a more elegant solution for this. Haven't checked it out yet.
    Hope this helps!

    • @MouldyGuitars
      @MouldyGuitars 2 ปีที่แล้ว +2

      Lost 2 hours looking for that "audioProcess" issue. Until I spotted the "audio" on front of reference... and then vaguely remembered your comment So MANY thanks for that. How satisfying it is to finally get a slider that does something :)

    • @CanidCanine
      @CanidCanine ปีที่แล้ว

      Im so happy I managed to figure this out on my own for my first project but big thanks for dropping this here..I should of checked comments before starting lol

    • @b9boy
      @b9boy ปีที่แล้ว

      yeah, GPT told me the same thing haha. scratched my head for a while.

  • @nymoz3587
    @nymoz3587 ปีที่แล้ว +1

    Thanks for your great explanation. I watched 3 obsolete Vids before and was about to call it a day :D

  • @markmcdonald6534
    @markmcdonald6534 3 ปีที่แล้ว +7

    Man oh Man .. This took an epic effort to make it work as I believe there has been some major amendments to both JUCE and XCODE since you made this vid!!! BUT with patience tenacity and endless hours + some luck I managed to resolve the issues and get this code to function perfectly!!!!! I have wanted to write code for audio for over 20 years and this is a dream come true ! A real bucket list moment! .... I even went to college and studied advanced networking in an attempt to gain the knowledge I needed to write code ( it was the only corse with coding available that I could afford ) BUT sadly none of the teachers new enough about coding to teach me how to program for AUDIO... so THANK YOU SO SO VERY MUCH !!! but It may be time to upgrade this video!

    • @Hoptronics
      @Hoptronics ปีที่แล้ว

      You're like 50yrs old huh? Yeah me too.

  • @bathtub_marmot
    @bathtub_marmot 4 ปีที่แล้ว +3

    I appreciate that the audio quality upgrades over the 2017 videos :-)

  • @andreievkalupniek5717
    @andreievkalupniek5717 2 ปีที่แล้ว +5

    Thank you. I know javascript but I am a total newbie in C++ and I built my first audio plugin today! One thing that was different on the current version of Juce is that the 'processor' reference that was auto-created is now called 'audioProcessor', so the line to get the slider value needs 'audioProcessor.mGain = mGainSlider.getValue();'😀

  • @samueleaster
    @samueleaster 4 ปีที่แล้ว +9

    Thanks for the upload! JUCE is finally starting to make sense!

  • @Tifredi
    @Tifredi 4 ปีที่แล้ว +5

    Awesome Tutorial, way clearer than the old one !

  • @hegood
    @hegood 3 ปีที่แล้ว +1

    What joy from such a simple thing!

  • @imagiromusic
    @imagiromusic 5 ปีที่แล้ว +19

    why did you have to blow my ears out after the first 2 seconds haha

    • @BigKaTrob
      @BigKaTrob 4 ปีที่แล้ว +1

      @imagiro Bro I just bought your piano plug in and it made me curious about how to create VSTs. Funny finding you here!! I'm loving it so far and I'm happy to support a fellow programmer/composer. Everyone check out vst.imagiromusic.com/piano

    • @imagiromusic
      @imagiromusic 4 ปีที่แล้ว

      @@TheAudioProgrammer only just found this comment, didn't mean to sound so savage haha - super helpful video, thank you so much for updating it!

    • @imagiromusic
      @imagiromusic 4 ปีที่แล้ว

      @@BigKaTrob thank you, im glad you enjoy it :D

    • @Hoptronics
      @Hoptronics ปีที่แล้ว

      Fkin sound producers that can't make the audio sound decent.. like wtf?! Ew your shit put some damn compression on those fkin constants.. fer realz..

  • @WebGarmony
    @WebGarmony 4 ปีที่แล้ว +2

    Thanks for the tutorials. Very detailed and intelligible. I could not tear myself away from the monitor, although I am sitting with a temperature

  • @minimumviablepizza
    @minimumviablepizza 4 หลายเดือนก่อน

    Great tutorial. Easy to follow and great lesson in using the documentation.

  • @Ryan_Wiseman
    @Ryan_Wiseman ปีที่แล้ว +1

    As a note, if you have to go through the juce::Slider approach in your Xcode version, when we get to this line of code, you may stumble into an error:
    if (slider == &mGainSlide
    {
    processor.mGain = mGainSlider.getValue();
    }
    Error: mGainSlider is not recognized under juce::Slider
    A better alternative that fixes this is:
    if (slider == &mGainSlide
    {
    audioProcessor.mGain = mGainSlider.getValue();
    }
    It then runs as it should

    • @coldthrn
      @coldthrn ปีที่แล้ว

      Thank you! This was a problem for me at the end!

  • @FrashMex
    @FrashMex 2 ปีที่แล้ว +1

    Want to say thank you for this amazing tutorial first of all!
    I more or less followed the steps in this video and now unfortunately I have run into the problem of the plugin using an absurdly huge chunk of my CPU. Has anyone encoutered the same problem? I have read a little bit on forums, and my guess now is that for some system architecture reason the CPU overloads itself with constantly repainting the GUI even when nothing is happening, i.e. when nothing needs repainting. I'll keep you updated on the issue!

  • @jaredtravis9446
    @jaredtravis9446 2 ปีที่แล้ว +1

    This is really, really good stuff. Very informative, but not too slow. Great job!

  • @tim110-handle
    @tim110-handle 11 หลายเดือนก่อน

    You explained it so well that i could easily follow!

  • @dgrins552
    @dgrins552 ปีที่แล้ว

    Expertly taught. Very understandable. Thanks!

  • @ksmooth7667
    @ksmooth7667 3 ปีที่แล้ว +8

    does anyone know how to open the plug in in a daw for visual studio?!?!?!?

  • @CanidCanine
    @CanidCanine ปีที่แล้ว

    Big thanks for this Audio Programmer

  • @Chalisque
    @Chalisque 4 ปีที่แล้ว

    Little nitpick. At around 11:50, the .setRange method takes double parameters, not float parameters, so there is no point appending f to the literals (like 0.0f) since the compiler will then just have to cast them to doubles (like the literal 0.0), and hopefully the optimiser will optimise this cast away.

  • @MouldyGuitars
    @MouldyGuitars 2 ปีที่แล้ว

    Thanks for a great tutorial. Took me about 8-10 hours with not knowing xCode and only vague knowledge of C++ along with the need for the name changes to juce:: and the audiProcessor issue. BUT got there in the end. Probably need to go through it a few times to understand the dependencies/relationships but at least its a working start. SO now for a modulating reverb LOL

  • @smarpids8533
    @smarpids8533 4 ปีที่แล้ว +2

    my life saver ! really need it for my Master Final Project now。。。 thank you sooooo much!

  • @nyaa5274
    @nyaa5274 3 ปีที่แล้ว

    Thank You! There was a little problem but finally succeed!!

  • @tania2654
    @tania2654 4 ปีที่แล้ว +3

    Coding is little unfinished. It will override the user slider change value with the set value (0.5 in this example). If a user changes Slider value from Daw and if the plugins is opened or closed it will always be initialised by the mygainSlider.set value (0.5f);

    • @ivanbrutalart3992
      @ivanbrutalart3992 4 ปีที่แล้ว +3

      that also happened to me, and the thing i solve it is just to set the value to mGainSlider.setValue(processor.mGain); that works for me

    • @Jon-ge9mv
      @Jon-ge9mv 4 ปีที่แล้ว

      @@ivanbrutalart3992 Great tip! I added that to the code and it worked, but now do I how set a default value?

    • @KempStrings
      @KempStrings 4 ปีที่แล้ว

      @@Jon-ge9mv This is set already when you put
      float mGain { 0.5 };
      into the public bit of PluginProcessor.h

  • @ashutoshupadhyay3875
    @ashutoshupadhyay3875 3 ปีที่แล้ว

    Thanks for this wonderful tutorial

  • @TheFloB1212
    @TheFloB1212 4 ปีที่แล้ว +1

    Dude thank you so much! Best Beginner Tutorial

  • @welcomeaioverlords
    @welcomeaioverlords 4 ปีที่แล้ว

    Really well done tutorial--thanks!

  • @b9boy
    @b9boy ปีที่แล้ว

    thanks, this is awesome!

  • @ORagnar
    @ORagnar 4 ปีที่แล้ว

    Excellent tutorial. Thanks!

  • @Hoptronics
    @Hoptronics ปีที่แล้ว

    26:34 but ++sample means skip sample0..

  • @rasmusdiamant4324
    @rasmusdiamant4324 3 ปีที่แล้ว

    Super cool tutorial man!! Big up!

  • @Resoundsound
    @Resoundsound 4 ปีที่แล้ว

    Thank you so much for doing this. Extremely helpful.

  • @vatochulukhadze3741
    @vatochulukhadze3741 4 ปีที่แล้ว +2

    Hey, every time I use override for virtual functions it tells me "member function declared with override does not override a base class member." This has been happening for almost any function I want to call override on and is virtual.

    • @bradsmith8914
      @bradsmith8914 3 ปีที่แล้ว

      I’ve had the same issue. Did you manage to find out what it was?

  • @georgemoraitis1923
    @georgemoraitis1923 4 ปีที่แล้ว

    Congratulations !! This is very good information, I learned a lot.

    • @georgemoraitis1923
      @georgemoraitis1923 4 ปีที่แล้ว

      The Audio Programmer by the way Reason Studios opened their sdk for Rack extensions to the public !!

  • @delatronics
    @delatronics 3 ปีที่แล้ว

    Nicely explained thank you for sharing your knowledge. Subscribed!

  • @dionysismaniatakosmusic
    @dionysismaniatakosmusic 4 ปีที่แล้ว

    Very helpful and easy to understand tutorial,thanks a lot!

  • @cupcakearmy
    @cupcakearmy 4 ปีที่แล้ว +1

    You are a hero my man :)

  • @simonedeangelis
    @simonedeangelis 4 ปีที่แล้ว +1

    Amazing! so clear! Thank you!!

  • @lientien7959
    @lientien7959 3 ปีที่แล้ว +1

    why is the float mGain variable initialized with curly brackets

  • @mrbela8364
    @mrbela8364 4 ปีที่แล้ว

    Very very useful and good. Thank you very much for this tutorial!!

  • @OHHnoYOUdidntMAN
    @OHHnoYOUdidntMAN 4 ปีที่แล้ว +2

    Great video!
    Do you happen to know any resources for making plugins from modeling hardware?

  • @JaredKeefer
    @JaredKeefer 3 ปีที่แล้ว

    Thanks a bunch man! I've been wanting to get into dsp programming for a long time, but didn't know how/where to start. Your video has helped immensely; and you have inspired me to take on a few plugin projects of my own.

  • @lipo971
    @lipo971 4 ปีที่แล้ว +1

    Quick tip: If your code is not working but it's the same as the code from the video, try adding juce:: before any juce class

    • @Table-Top
      @Table-Top 4 ปีที่แล้ว

      I turned the namespace feature off didn't need to prefix juce::.... but the problem I am having is in PluginProcessor.cpp, where it says void GainTutorial20AudioProcessor::processBlock. Its gives compile error "name followed by :: must be class or namespace name". So, GainTutorial20AudioProcessor must be undefined. Any ideas?

    • @lipo971
      @lipo971 4 ปีที่แล้ว

      @@Table-Top wow that's weird. Try creating a new project and building it right away to see if it works. If not, its not a code problem, it's something missing in your computer

    • @Table-Top
      @Table-Top 4 ปีที่แล้ว

      @@lipo971 @: 23:28 I don't have lines 22-23 GainTutorial20AudioProcessor(); and the next line. I had NewProjectAudioProcessor(); I inserted the definition but still no compile, am working on it now.

    • @Table-Top
      @Table-Top 4 ปีที่แล้ว +1

      Yes, it was the way I created the project at the beginning. I thought creating a folder called gainTutorial20 was enough but the actual name of the default project needs to be changed from NewProject

    • @Table-Top
      @Table-Top 4 ปีที่แล้ว

      I finally got it working, but another heads-up is 38:19 "processor", line 46 This gave me an error message compiling, but I found out that this had been changed to "audioProcessor" . Maybe the guys at Juce made that change because I didn't touch that.

  • @mateo-santos
    @mateo-santos 4 ปีที่แล้ว +2

    I'm having trouble getting this to work with LogicX. It works perfectly as a standalone app, just doesn't appear in my DAW. Any ideas?

    • @jahlijah
      @jahlijah 4 ปีที่แล้ว

      Did you ever figure this out? I use Logicx as well.

    • @jahlijah
      @jahlijah 4 ปีที่แล้ว

      Okay I think I figured it out... Logic doesn't support VST's and Xcode automatically creates the plugin in your User files, where Logic usually retrieves plugins from your normal library... Hope that helps

    • @Amfjsjahcheja
      @Amfjsjahcheja 2 ปีที่แล้ว

      @@jahlijah how did you get this to show in logic? Have it set to AU and it still doesnt show

    • @jahlijah
      @jahlijah 2 ปีที่แล้ว

      @@Amfjsjahcheja i had this weird issue where my logic files were being placed in two separate folders. make sure they are in the one connected to your logic. honestly its been such a long time idk if i can help much

  • @JAMStudiosIE
    @JAMStudiosIE 4 ปีที่แล้ว

    Great tutorial

  • @AmeyahOfficialTV
    @AmeyahOfficialTV 3 ปีที่แล้ว

    a little tip: if you get "identifier Slider is undefined", that is because in the tutorial the namespace is set to juce, for using the vanilla juce template, you need to add juce::Slider infront.
    Have yet to find out, if thats the case for the other stuff too.
    i hope i can setup a Juce template in the projucer and fix this and other things.
    So far very helpful the tutorial ;)

    • @AmeyahOfficialTV
      @AmeyahOfficialTV 3 ปีที่แล้ว +1

      ahh okay i added for the problem above simple using namespace juce; under the imports. Now it works.
      around 38:35 is a nother problem which is not compatible with new juce:
      actual
      processor.gain = GainSlider.getValue();
      to this…
      audioProcessor.gain = GainSlider.getValue();
      and now it work here for me with juce 6.0.8

    • @DeltaSigmaTV
      @DeltaSigmaTV 3 ปีที่แล้ว +1

      In the Projucer you have to turn “add using namespace juce to JuceHeader.h” to ENABLED which defaults to DISABLED in a new audio plugin project.

    • @AmeyahOfficialTV
      @AmeyahOfficialTV 3 ปีที่แล้ว

      @@DeltaSigmaTV yeh people told me later on discord i could fix it that way ...

    • @DS-pz4zx
      @DS-pz4zx 3 ปีที่แล้ว

      @@AmeyahOfficialTV Not working for me at 38:35 ... :(

    • @AmeyahOfficialTV
      @AmeyahOfficialTV 3 ปีที่แล้ว

      @@DS-pz4zx try abit around andif u dont know come to the discord server? Members will help u there ...

  • @Neetamusic
    @Neetamusic 2 ปีที่แล้ว

    Thank you for breaking this down so clearly and allow my plug-in making journey to begin! Unfortunately I've got a little stuck around the 17 min mark... I have successfully built the project and Ableton opens but I cannot see my plugin listed under VST3. Any advice as to what my issue might be? Thanks!

  • @dendriloquist
    @dendriloquist 6 หลายเดือนก่อน

    Thank you so much for your detailed videos and also for taking your time to go over the things. I needed to be kinda spoon fed :)
    I was wondering. why do I always need to use juce:: before I use other namespaces like e.g. juce::Colours ? you don't use it here but my xcode screams at me when I dont use the juce:: first.
    is it because of some settings? do I need to write "using namespace juce" ?
    again . thank you for fantastic tutorials

  • @benscovers9596
    @benscovers9596 4 ปีที่แล้ว +1

    For some reason when I edit the code to add the slider and run it nothing changes

  • @isaacslost7418
    @isaacslost7418 2 ปีที่แล้ว

    the slider resets when i tab out of it in my DAW. is there any way to fix this/suggestions?

  • @andx4024
    @andx4024 5 ปีที่แล้ว

    interesting. I have to look at this more

  • @midas4t4
    @midas4t4 3 ปีที่แล้ว

    Thank you for this wonderful video, very helpful however I’m having an error as regards having one of the juce modules not being accessible to finish up my code, any pointers

  • @manning181016
    @manning181016 4 ปีที่แล้ว +1

    You've earned a new subscriber! By chance do you know why when I try to type "Slider mGainSlider;" into xcode in the plugineditor.h file I get the error "Unknown type name 'Slider'; did you mean 'juce::Slider'?" This happens for every juce object, how do I fix this so I can just type Slider instead of having to put juce:: in front of everything? Thank you!

  • @BoogieChap42
    @BoogieChap42 2 ปีที่แล้ว

    Excellent tutorial! Thanks! You seem to have command completion in projucer. Do you use a ctrl key or similar to get this?

    • @BoogieChap42
      @BoogieChap42 2 ปีที่แล้ว

      @@TheAudioProgrammer Thanks for the response. Does not seem to work for me - maybe because I run the community edition...

    • @BoogieChap42
      @BoogieChap42 2 ปีที่แล้ว

      @@TheAudioProgrammer Yep, Windows and VS. Target platform is a Raspberry Pi using VSTs and Carla as a host. But your question prompted me to edit in VS rather than in Projucer. And yeah - cmd completion works. Thanks!

  • @intelligenceservices
    @intelligenceservices 3 ปีที่แล้ว

    Got any insights on how to use Juce to make GUI-less plugins? For example, creating user parameters that a DAW will be able to recognize?

  • @polviggen
    @polviggen 3 ปีที่แล้ว

    How do you save the slider setting ? Now it's always back to default after closing and opening.

  • @ORagnar
    @ORagnar 4 ปีที่แล้ว

    Working on the slider here... next is the curve ball.

  • @cmorin2555
    @cmorin2555 3 ปีที่แล้ว +1

    I Have a small question ! when i want to create a slider i did find Slider Class inside the list what im doing wrong i mean when i type in private Slider nothing happen and that give me a error

  • @soclestudio7489
    @soclestudio7489 4 ปีที่แล้ว +1

    Love the tuto, however i got stuck there for this line :
    if (slider == &mGainSlider)
    {
    processor.mGain = mGainSlider.getValue();
    }
    I get this error :
    Erreur (active) E0135 class "juce::AudioProcessor" n'a pas de membre "mGain" PluginEditor.cpp ligne 53

    • @mirkogredig4668
      @mirkogredig4668 4 ปีที่แล้ว +3

      change processor to audioProcessor

  • @VasaMusic438
    @VasaMusic438 4 ปีที่แล้ว

    Super !!!! Thank You !!!!

  • @hectorcastillo4633
    @hectorcastillo4633 4 ปีที่แล้ว +1

    Does it works the same if i use visual studio instead of Xcode?

  • @andybainton5179
    @andybainton5179 4 ปีที่แล้ว

    Hey! I really dig your videos! Could you make a 2020 update for creating IIR filters? I keep getting the "'createAndAddParamater' is deprecated" notification in Xcode, and I'm not yet sure how to implement the new AudioProcessorValueTree setup. Thanks! (I am using JUCE v5.4.7, and Xcode v11.3.1.)

  • @pentabitsmusic
    @pentabitsmusic 4 ปีที่แล้ว +1

    Hey, It doesn't bring me to the first screen even if i click "New Project"

    • @pentabitsmusic
      @pentabitsmusic 4 ปีที่แล้ว

      @@glassprison01 Oh Thanks! But i only see the option "Audio" I don't see audio plugins anywhere. Where can i find it?

    • @NesCroft
      @NesCroft 4 ปีที่แล้ว

      @@pentabitsmusic its there. Plugins > Basic. i had the same issue.

  • @jahlijah
    @jahlijah 4 ปีที่แล้ว +2

    I can't find the plugin-in when I open up Ableton Live 10 Lite... Am I missing something in my setup of JUUC or Ableton?

    • @jahlijah
      @jahlijah 4 ปีที่แล้ว

      i figured the problem out if anyone is having trouble with this. on my mac i have two separate libraries for my plugins for some reason. you have to change your ableton to access your user plugin library

  • @semioticatonal4424
    @semioticatonal4424 3 ปีที่แล้ว

    What's the Discord community?

  • @nteves1
    @nteves1 4 ปีที่แล้ว +1

    i followed every step, project compiles successfully, but ableton can't find it, i scan in the correct folder (visual studio 2019 on windows 10)

    • @SoundPeer
      @SoundPeer 2 ปีที่แล้ว

      Same here, only using VS 2022.

  • @TheRangeControl
    @TheRangeControl 4 ปีที่แล้ว

    Ummmm.... Is there a software link for juce?

  • @RAFAELLO077
    @RAFAELLO077 ปีที่แล้ว

    Can you learn juce without knowing any other programming ?

  • @noah568ify
    @noah568ify 4 ปีที่แล้ว

    wow thank you!!

  • @intelligenceservices
    @intelligenceservices 3 ปีที่แล้ว

    I already know the essence of DSP programming, provided I know where to put the code. Videos like yours help me find where to put that code. As you said before, the scope of this is so huge that it's not feasible to cover it all in a short enough time to teach it all. I find that when it's time to hit the big old mishmash of API's Dependencies Compilers etc (out the yin yang) then it gets real hazy real fast. I guess Juce is a collection of code snippets that are commonly used to make GUI's (and probably DSP snippets?) but the main big 'problem' here is just what is Juce and why do we need it? Is it just basically a library with its own frontend?

    • @AndrosYang
      @AndrosYang 2 ปีที่แล้ว

      Yes. And with licensing costs for the big bois. It does make life easier though

  • @blissofkundalini
    @blissofkundalini 4 ปีที่แล้ว

    hm, thanks for the tutorial, somehow something is wrong with the namespaces in my project. It won't recognize the functions. Any clue how to set this up?

    • @bigKaup
      @bigKaup 3 ปีที่แล้ว +1

      You can either put "juce::" in front of all the JUCE classes (ie. "juce::Slider mGainSlider;"), or you can just toss "using namespace juce;" at the top of your header file, I put mine right below the #include statements.

  • @whyattlee9633
    @whyattlee9633 4 ปีที่แล้ว

    Where can I get a copy of juice

  • @morsmortis4114
    @morsmortis4114 4 ปีที่แล้ว

    Nice tutorial, i got everything working, but I think your DBFS scale is a little bit incorrect.
    It might be due to this being an entry level tutorial, but shouldnt it go from negative infinity to 0.0?
    Thanks for the awesome work for the community!

    • @ashenpall
      @ashenpall 2 ปีที่แล้ว +1

      Probably already found this, but for anyone else, the control level with decibels tutorial from Juce shows you how to replace the lowest value with “-inf”

  • @robertparenton7470
    @robertparenton7470 4 ปีที่แล้ว

    What Apple laptop do you have and operating system?

  • @edwinwong
    @edwinwong 4 ปีที่แล้ว

    Hi! First off, thank you so much for this. I have a question, by the 16:20 mark, I've followed the guide and clicked build. However, instead of opening up Ableton live, I am greeted with an error message saying "Reference to AudioBuffer is ambiguous". I am not sure how I could troubleshoot that? Thank you so much.

    • @edwinwong
      @edwinwong 4 ปีที่แล้ว

      @@TheAudioProgrammer Wow! Thank you so much! It really worked! There really was a name collision.

  • @lourdescobo-reyes2486
    @lourdescobo-reyes2486 4 ปีที่แล้ว

    Hi! Could you give me a small hint on how to manage 16 input channels? when I access one of them (created by getWritePointer) its value change and I don't know how to manage them parallely! Thanks even for reading :)

  • @HerraHazar
    @HerraHazar 4 ปีที่แล้ว

    How do you set up autocomplete in VS or Xcode for that matter ?

    • @sloppyprogrammer4373
      @sloppyprogrammer4373 3 ปีที่แล้ว

      Typically autocompletion is generated by inherited files/libraries/references as well as the core syntax. If you are missing autocompletion or segments of auto completion, it immediately tells you there are certain dependencies missing in your project or the IDE you are using (in this case dependencies or references to those dependencies in your project)
      Think you should've figured out by now, but it's because you are storing all your files in a different location and due to that; you are missing corresponding references your IDE can use. Without those (modules/references) you have to manually add all the references to the corresponding files the application is using. You can workaround this when you make a new project by checking: "Create local copy" when you are selecting the modules you want to inherit in your project. After this code completion should work and all your red lines should disappear.
      Programmer tip #1: Click everything
      Programmer tip #2: Read everything
      Programmer tip #3: Do not copy+paste, do not exactly copy what other people type or use (be imaginative)
      Programmer tip #4: Make sure you understand the basics of programming and the C++ syntax before you dive heads first into plugin development.
      Programmer tip #5: Having a goal and a project is good, but: "Keep it simple and don't start with too difficult problems or challenges"
      Programmer tip #6: If you have no patience to learn the basics, programming is probably not for you (doesn't take long, but it takes quite some practice to understand what you are doing).
      Let me quote the information icon for creating local copy of modules:
      "If this is enabled, then a local copy of the entire module will be made inside your project (in the auto-generated jucelibraryfiles folder), so that your project will be self-contained and won't need to contain any references to files in other folders. This also means that you can check the module into your source-control system to make sure it is always in sync with your own code"
      During developing/testing new things, it's wise to make a hard copy of the modules so you have them at hand.

  • @johnnikitin2014
    @johnnikitin2014 4 ปีที่แล้ว +1

    When i add the variable mSliderGain it gives me this error "Identifier "Slider" Is Undefined" Please Help!!

    • @els705
      @els705 3 ปีที่แล้ว

      @@TheAudioProgrammer thanks!! it really help me

  • @natefuller5857
    @natefuller5857 4 ปีที่แล้ว

    How come your code doesn't use the "juce::" prefix on all JUCE members? Is this a new change to C++. Bare with me, I'm a Swift/Obj-C Developer learning C++ for the first time.

    • @JamesBurner
      @JamesBurner 4 ปีที่แล้ว

      use a namespace for juce

  • @joshd265
    @joshd265 4 ปีที่แล้ว

    Is this something someone could build with no prior development experience?

  • @universeman657
    @universeman657 4 ปีที่แล้ว

    I thought I got it then I got a bunch of errors. I tried to make them go away, but now I’m stuck with error c2612 and have no idea what a trailing ‘identifier’ is.
    They even said it with the quotes in the error
    I know what identifier means but what is an ‘identifier’
    I also have 199 warnings. Is that to be expected?

  • @ScottySR
    @ScottySR 3 ปีที่แล้ว +1

    Did anyone manage to figure out how to get Visual Studio to run the plugin in a DAW?

    • @davidste60
      @davidste60 3 ปีที่แล้ว

      Not exactly but with Reaper at least you can just build the vst3 project each time you make a change and then remove the plugin from a track and reload it into the track. It reloads the new version. (obviously you need to add the path of the vst3 build folder to Reaper's plugin scanning path the first time).

    • @SoundPeer
      @SoundPeer 2 ปีที่แล้ว

      I'm having trouble with it, no VST3 to be found in Ableton, also no .dll file created.

  • @s.l5787
    @s.l5787 4 ปีที่แล้ว

    For setRange, it requests a double data type for input. Is it possible to use float here? And why?

    • @Chalisque
      @Chalisque 4 ปีที่แล้ว

      The C++ compiler will automatically cast the single float he gives to a double. Though there is no need to write e.g. 0.0f at 11:50 -- 0.0 would have sufficed. In C++, a decimal like 0.0 means a double, a decimal with f appended like 0.0f means single float, and for completeness a decimal with L appended like 0.0: means long double (80bit, a throwback to the x87 FPU).

  • @cancrispy3928
    @cancrispy3928 4 ปีที่แล้ว

    Do I have to get the paid version of JUCE, or could I do all of this for free?

  • @giovannimonte1819
    @giovannimonte1819 4 ปีที่แล้ว

    Hi guys, I need help please.
    How can I do the step at the min 03:40 on Visual Studio?
    Thanks in advance.

    • @igglue7671
      @igglue7671 4 ปีที่แล้ว

      Build it and open it as a d.ll

    • @SoundPeer
      @SoundPeer 2 ปีที่แล้ว

      @@igglue7671 How? :D

    • @igglue7671
      @igglue7671 2 ปีที่แล้ว

      ​@@SoundPeer I don't really remember this was a while ago. But think I just compiled it as .dl filel and just opened it like a normal plugin in ableton

  • @luiza177music
    @luiza177music 4 ปีที่แล้ว

    Is there are reason you chose to make sliderValueChanged() public? (I noticed the basic JUCE tutorial has it as private)
    Also, would you say it's better practice to convert from decibels to gain in the processor, as opposed to converting inside sliderValueChanged()?

  • @milutinmarjanovic3531
    @milutinmarjanovic3531 4 ปีที่แล้ว

    Hello, first, thanks for the lovely tutorials. I have one question. When I load my builded VST3 plugin to DAW, output volume goes way up high and red :(... I also tried to build a distortion plugin and the output is all messed up. Any thoughts what can it be?

  • @thedarkglovemusic
    @thedarkglovemusic 4 ปีที่แล้ว

    Anyone know the equivalent in VS to automatically launch in a DAW?

  • @glennoberlander
    @glennoberlander 4 ปีที่แล้ว

    How would I modify this to create the gainSlider as a separate component in a separate .cpp and .h file? I cannot find any beginner++ tutorials on this. Every tutorial I find keeps all this stuff in a single header file and it is completely frustrating because it is not at all realistic. Nobody would build a synth or plugin in a single header file...
    So, would I pass the audioProcessor object to the GainSlider component when I instantiate it in PluginEditor, or would I #include the PluginProcessor.h in GainSlider.h? Or some other option? Any help would be appreciated, or any references that are above beginner, but below advanced.
    Do you have any tutorials that are more advanced and larger that build a project in a more realistic setting? Separating components into different .h/.cpp files and passing the audioProcessor around?
    I think AudioProcessorValueTreeState is something that might be what I am looking for, but again, I don't know if I would pass this to the components that are going to get/set the audio thread, or if it's somehow inherited. Passing the object seems the correct answer, but idk if that is bad design or what.

    • @igglue7671
      @igglue7671 4 ปีที่แล้ว

      Most VST Plugins Are not build with JUCE. The majority are build with a open source sdk from steinberg.I dont know much about it but I do know a dude who knows about it if you want me to ask him. Think of this as an beginners program when learning how to make vsts. Dont think of juce as the next big synth builder. if you want to know more here is some great beginners videos here th-cam.com/video/Cp0rtLaXBio/w-d-xo.html th-cam.com/video/vLnPwxZdW4Y/w-d-xo.html th-cam.com/video/3SjRrtB4CrU/w-d-xo.html

  • @chinguaga
    @chinguaga 3 ปีที่แล้ว

    Hi nice Tutorial.
    If u are on windows with Visual Studio u will have to at juce:: everywere
    like:
    juce::Slider::SliderStyle::LinearVertical
    apart from that everything worked niceley

    • @chinguaga
      @chinguaga 3 ปีที่แล้ว

      @@TheAudioProgrammer hi im trying to combine this tutorial with your JUCE 16 Parameter Automation tutorial , its not that easy however. I think the approaches on the new tutorial are quite different compared to the old one. Gonna start digging ;D

  • @nathanvillarosa
    @nathanvillarosa 4 ปีที่แล้ว +1

    I use Fl Studio and I am on PC, what changes would I have to make? Am I able to still use JUCE?

    • @SizzledBeats
      @SizzledBeats 4 ปีที่แล้ว

      Just did it on pc with fl studio. You need to get Visual Studio (community is free) for editing the and building the app.
      To get Juce, you download it and build the solution in Visual Studio, then in the build you can access the program "Projucer" (path JUCE-master\extras\Projucer\Builds\VisualStudio2019\x64\Debug\App).
      The changes for windows & fl studio are that you have to manually copy the built vst3 file that the program creates into your vst3 folder for FL studio (the path is typically C:\Program Files (x86)\Common Files\VST3)

  • @moneyspendin
    @moneyspendin 4 ปีที่แล้ว

    🙏🙏

  • @RyanMartinRAM
    @RyanMartinRAM 3 ปีที่แล้ว

    Drink some water next time :)
    Thanks for this video!

  • @lithium
    @lithium 3 ปีที่แล้ว +1

    My thread safety spidey senses are going wild with the way you're modifying mGain from the UI thread and potentially reading it simultaneously from the audio thread. Looks like the compiler is probably hoisting it for you at the moment so you're getting lucky but you need to be very careful to sync ui and audio data properly.

  • @UrThysis
    @UrThysis 4 ปีที่แล้ว +1

    Does anyone know how can i make it so that in Visual Studio 2019 when I tab out the autocomplete it also completes the arguments like he has on Xcode??? that seems waaaay more helpful than having to read small tooltips and I refuse to use windows scaling to get bigger text :( ... thanks

  • @frogfox9577
    @frogfox9577 3 ปีที่แล้ว

    Hello i Discovery Juce to make VST Ableton Friendly. But I code only in C++. SomeOne know a JS framwork to code VST ( Ableton firendly ) in JS ?

    • @mishasinitcyn5383
      @mishasinitcyn5383 3 ปีที่แล้ว

      Juce VST plugins work in Ableton. It's all in C++

  • @s.l5787
    @s.l5787 4 ปีที่แล้ว

    My ears man

  • @totallyg1112
    @totallyg1112 4 ปีที่แล้ว

    333rd like. A little annoying to hear your breathing so close... And actually I can't build this code in VS2019. But I how you explain things in detail.

  • @DJ_EasyHard
    @DJ_EasyHard 4 ปีที่แล้ว

    Dislike. Yes, you explain things properly. BUT, you do not explain for beginners, why their JUCE UI is looking different. That is very confusing, when you search and find lots of tutorials and videos, try to install and see, that your version differs from that one, you've seen in a tutorial. It's unclear. It's stupid. There is absolutely NO information about ACTUAL JUCE ui, project creation and so on. I AM a programmer. And my opinion is that difference between versions(huge difference) is the thing TO BE COVERED if you make tutorials. You are professional experienced programmer. You MUST realise, that the problem with difference between versions is clear and solvable for you, but it's extremely unclear and frustrating for less experienced programmes. You must realise it if you are a GOOD programmer. Hope you agree and i did not abused you. Thank you.

    • @DJ_EasyHard
      @DJ_EasyHard 4 ปีที่แล้ว

      @@TheAudioProgrammer Thanks for your answer and for the link) I understand what you are talking about and i have smth to say. I haven't actually watched many of the videos in this playlist, but if a lot of people say, that you explain too much, i believe it's true) But i think, they are talking about partucular JUCE technical moments, or smth about the code. In that theme you can vary amount of details to explain. But the very first problem of all people that start studying JUCE is that difference between versions, so, finally, what i mean. You already showed me, that you are clever person, so, it's not reproach, but just an advice. Try to prioritize all that you want to say and then think about things that MUST be explained. Problems that EVERY beginner would face. They are obligatory. And after that, when you have a list of things that you would say surely, you can vary a list of unnecessarily things. I don't actually know, if you get me right) I'll try to finalize. I believe you about users that say that you explain too much. It's ok. But so important things like beginner's silent question "why i don;t have same gui?", it's not a things that you can drop out if you are said to explain too much. Last two sentences explain mu point of view better that the other whole piece of text. Thank you again for your reply)
      UPD: Changed to like)

  • @aucusticguitar8069
    @aucusticguitar8069 2 ปีที่แล้ว

    Have an error when building the solution: unresolved external symbol "class juce::AudioProcessor * __cdecl createPluginFilter(void)" (?createPluginFilter@@YAPEAVAudioProcessor@juce@@XZ) PreAmp Boost_StandalonePlugin D:\Documents\Plugins\PreAmp Boost\Builds\VisualStudio2022\include_juce_audio_plugin_client_Standalone.obj
    Can't figure out what's causing it

  • @Bm23CC
    @Bm23CC 4 ปีที่แล้ว

    I cant join the discord even when I give my phone number for verification. :-(

    • @Bm23CC
      @Bm23CC 4 ปีที่แล้ว

      @@TheAudioProgrammer says its invalid even though its correct.

    • @Bm23CC
      @Bm23CC 4 ปีที่แล้ว

      @@TheAudioProgrammer my bad it was the JUCE discord not the AP one. :-)