Created
October 21, 2019 17:32
-
-
Save Xenakios/53932df786409f84b4ff8359ea98f4cc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // .h | |
| /* | |
| ============================================================================== | |
| This file was auto-generated! | |
| ============================================================================== | |
| */ | |
| #pragma once | |
| #include "../JuceLibraryCode/JuceHeader.h" | |
| AudioProcessor* JUCE_CALLTYPE createPluginFilter(); | |
| class MainComponent : public AudioAppComponent | |
| { | |
| public: | |
| //============================================================================== | |
| MainComponent(); | |
| ~MainComponent(); | |
| //============================================================================== | |
| void prepareToPlay (int samplesPerBlockExpected, double sampleRate) override; | |
| void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) override; | |
| void releaseResources() override; | |
| //============================================================================== | |
| void paint (Graphics& g) override; | |
| void resized() override; | |
| private: | |
| //============================================================================== | |
| // Your private member variables go here... | |
| std::unique_ptr<AudioProcessor> m_faust_dsp; | |
| AudioBuffer<float> m_helper_buffer; | |
| MidiBuffer m_midi_buffer; | |
| std::unique_ptr<GenericAudioProcessorEditor> m_ed; | |
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent) | |
| }; | |
| // .cpp | |
| #include "MainComponent.h" | |
| //============================================================================== | |
| MainComponent::MainComponent() | |
| { | |
| m_faust_dsp = std::unique_ptr<AudioProcessor>(createPluginFilter()); | |
| m_ed = std::make_unique<GenericAudioProcessorEditor>(*m_faust_dsp); | |
| addAndMakeVisible(m_ed.get()); | |
| auto& pars = m_faust_dsp->getParameters(); | |
| for (auto& par : pars) | |
| Logger::writeToLog(par->getName(100)); | |
| setSize (800, 600); | |
| // Some platforms require permissions to open input channels so request that here | |
| if (RuntimePermissions::isRequired (RuntimePermissions::recordAudio) | |
| && ! RuntimePermissions::isGranted (RuntimePermissions::recordAudio)) | |
| { | |
| RuntimePermissions::request (RuntimePermissions::recordAudio, | |
| [&] (bool granted) { if (granted) setAudioChannels (2, 2); }); | |
| } | |
| else | |
| { | |
| // Specify the number of input and output channels that we want to open | |
| setAudioChannels (0, 2); | |
| } | |
| } | |
| MainComponent::~MainComponent() | |
| { | |
| // This shuts down the audio device and clears the audio source. | |
| shutdownAudio(); | |
| } | |
| //============================================================================== | |
| void MainComponent::prepareToPlay (int samplesPerBlockExpected, double sampleRate) | |
| { | |
| m_helper_buffer.setSize(2, samplesPerBlockExpected); | |
| m_faust_dsp->prepareToPlay(sampleRate, samplesPerBlockExpected); | |
| m_faust_dsp->setPlayConfigDetails(0, 1, 44100.0, 512); | |
| } | |
| void MainComponent::getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) | |
| { | |
| m_helper_buffer.setSize(2, bufferToFill.numSamples, false, false, true); | |
| for (int i = 0; i < 2; ++i) | |
| m_helper_buffer.copyFrom(i, 0, *bufferToFill.buffer, i, bufferToFill.startSample, bufferToFill.numSamples); | |
| m_faust_dsp->processBlock(m_helper_buffer, m_midi_buffer); | |
| for (int i = 0; i < 2; ++i) | |
| bufferToFill.buffer->copyFrom(i, bufferToFill.startSample, m_helper_buffer, i, 0, bufferToFill.numSamples); | |
| } | |
| void MainComponent::releaseResources() | |
| { | |
| } | |
| //============================================================================== | |
| void MainComponent::paint (Graphics& g) | |
| { | |
| g.fillAll (getLookAndFeel().findColour (ResizableWindow::backgroundColourId)); | |
| } | |
| void MainComponent::resized() | |
| { | |
| m_ed->setBounds(0, 0, getWidth(), getHeight()); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment