commit 2c7521b0b9a8093ca219e4abe33345abe886b8a4 Author: hellerve Date: Tue Jun 13 19:45:22 2017 -0400 initial; added noise diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..183bc57 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +Builds/ +JuceLibraryCode/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..d2153bc --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# juce\_playground + +A playground for my JUCE projects. diff --git a/noise/Source/Main.cpp b/noise/Source/Main.cpp new file mode 100644 index 0000000..8f957d2 --- /dev/null +++ b/noise/Source/Main.cpp @@ -0,0 +1,102 @@ +/* + ============================================================================== + + This file was auto-generated! + + It contains the basic startup code for a Juce application. + + ============================================================================== +*/ + +#include "../JuceLibraryCode/JuceHeader.h" + +Component* createMainContentComponent(); + +//============================================================================== +class noiseApplication : public JUCEApplication +{ +public: + //============================================================================== + noiseApplication() {} + + const String getApplicationName() override { return ProjectInfo::projectName; } + const String getApplicationVersion() override { return ProjectInfo::versionString; } + bool moreThanOneInstanceAllowed() override { return true; } + + //============================================================================== + void initialise (const String& commandLine) override + { + // This method is where you should put your application's initialisation code.. + + mainWindow = new MainWindow (getApplicationName()); + } + + void shutdown() override + { + // Add your application's shutdown code here.. + + mainWindow = nullptr; // (deletes our window) + } + + //============================================================================== + void systemRequestedQuit() override + { + // This is called when the app is being asked to quit: you can ignore this + // request and let the app carry on running, or call quit() to allow the app to close. + quit(); + } + + void anotherInstanceStarted (const String& commandLine) override + { + // When another instance of the app is launched while this one is running, + // this method is invoked, and the commandLine parameter tells you what + // the other instance's command-line arguments were. + } + + //============================================================================== + /* + This class implements the desktop window that contains an instance of + our MainContentComponent class. + */ + class MainWindow : public DocumentWindow + { + public: + MainWindow (String name) : DocumentWindow (name, + Desktop::getInstance().getDefaultLookAndFeel() + .findColour (ResizableWindow::backgroundColourId), + DocumentWindow::allButtons) + { + setUsingNativeTitleBar (true); + setContentOwned (createMainContentComponent(), true); + setResizable (true, true); + + centreWithSize (getWidth(), getHeight()); + setVisible (true); + } + + void closeButtonPressed() override + { + // This is called when the user tries to close this window. Here, we'll just + // ask the app to quit when this happens, but you can change this to do + // whatever you need. + JUCEApplication::getInstance()->systemRequestedQuit(); + } + + /* Note: Be careful if you override any DocumentWindow methods - the base + class uses a lot of them, so by overriding you might break its functionality. + It's best to do all your work in your content component instead, but if + you really have to override any DocumentWindow methods, make sure your + subclass also calls the superclass's method. + */ + + private: + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow) + }; + +private: + ScopedPointer mainWindow; +}; + +//============================================================================== +// This macro generates the main() routine that launches the app. +START_JUCE_APPLICATION (noiseApplication) diff --git a/noise/Source/MainComponent.cpp b/noise/Source/MainComponent.cpp new file mode 100644 index 0000000..e170d6d --- /dev/null +++ b/noise/Source/MainComponent.cpp @@ -0,0 +1,40 @@ +#include "../JuceLibraryCode/JuceHeader.h" + +class MainContentComponent : public AudioAppComponent { +public: + MainContentComponent() { + setSize (800, 600); + setAudioChannels (2, 2); + this->random = Random(); + } + + ~MainContentComponent() { + shutdownAudio(); + } + + void prepareToPlay(int samplesPerBlockExpected, double sampleRate) override {} + + void getNextAudioBlock(const AudioSourceChannelInfo& buf) override { + for (int c = 0; c < buf.buffer->getNumChannels(); ++c) { + float* const b = buf.buffer->getWritePointer(c, buf.startSample); + + for (int s = 0; s < buf.numSamples; ++s) b[s] = random.nextFloat() * 0.25f - 0.125f; + } + } + + void releaseResources() override {} + + void paint (Graphics& g) override { + g.fillAll (getLookAndFeel().findColour (ResizableWindow::backgroundColourId)); + } + + void resized() override {} + + +private: + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent) + Random random; +}; + + +Component* createMainContentComponent() { return new MainContentComponent(); } diff --git a/noise/noise.jucer b/noise/noise.jucer new file mode 100644 index 0000000..351384b --- /dev/null +++ b/noise/noise.jucer @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +