#pragma once %%include_juce%% //============================================================================== /* This component lives inside our window, and this is where you should put all your controls and content. */ class %%content_component_class%% : public juce::AudioAppComponent { public: //============================================================================== %%content_component_class%%() { // Make sure you set the size of the component after // you add any child components. setSize (800, 600); // Some platforms require permissions to open input channels so request that here if (juce::RuntimePermissions::isRequired (juce::RuntimePermissions::recordAudio) && ! juce::RuntimePermissions::isGranted (juce::RuntimePermissions::recordAudio)) { juce::RuntimePermissions::request (juce::RuntimePermissions::recordAudio, [&] (bool granted) { setAudioChannels (granted ? 2 : 0, 2); }); } else { // Specify the number of input and output channels that we want to open setAudioChannels (2, 2); } } ~%%content_component_class%%() override { // This shuts down the audio device and clears the audio source. shutdownAudio(); } //============================================================================== void prepareToPlay (int samplesPerBlockExpected, double sampleRate) override { // This function will be called when the audio device is started, or when // its settings (i.e. sample rate, block size, etc) are changed. // You can use this function to initialise any resources you might need, // but be careful - it will be called on the audio thread, not the GUI thread. // For more details, see the help for AudioProcessor::prepareToPlay() } void getNextAudioBlock (const juce::AudioSourceChannelInfo& bufferToFill) override { // Your audio-processing code goes here! // For more details, see the help for AudioProcessor::getNextAudioBlock() // Right now we are not producing any data, in which case we need to clear the buffer // (to prevent the output of random noise) bufferToFill.clearActiveBufferRegion(); } void releaseResources() override { // This will be called when the audio device stops, or when it is being // restarted due to a setting change. // For more details, see the help for AudioProcessor::releaseResources() } //============================================================================== void paint (juce::Graphics& g) override { // (Our component is opaque, so we must completely fill the background with a solid colour) g.fillAll (getLookAndFeel().findColour (juce::ResizableWindow::backgroundColourId)); // You can add your drawing code here! } void resized() override { // This is called when the MainContentComponent is resized. // If you add any child components, this is where you should // update their positions. } private: //============================================================================== // Your private member variables go here... JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%) };