From f8e184db6238a1f15f04b882e34b636141d36ef9 Mon Sep 17 00:00:00 2001 From: Kevin Stadler Date: Wed, 15 Aug 2018 15:13:11 +0200 Subject: [PATCH] Add initial codebase created as part of Google Summer of Code 2018 --- .gitignore | 2 + README.md | 21 +- build.xml | 78 +++ examples/Analysis/FFTSpectrum/FFTSpectrum.pde | 64 ++ examples/Analysis/FFTSpectrum/data/beat.aiff | Bin 0 -> 694128 bytes .../Analysis/PeakAmplitude/PeakAmplitude.pde | 49 ++ .../Analysis/PeakAmplitude/data/beat.aiff | Bin 0 -> 694128 bytes .../Effects/BandPassFilter/BandPassFilter.pde | 40 ++ .../Effects/HighPassFilter/HighPassFilter.pde | 33 + .../Effects/LowPassFilter/LowPassFilter.pde | 33 + .../Effects/Reverberation/Reverberation.pde | 46 ++ .../Effects/Reverberation/data/vibraphon.aiff | Bin 0 -> 4939228 bytes .../Effects/VariableDelay/VariableDelay.pde | 41 ++ .../Effects/VariableDelay/data/vibraphon.aiff | Bin 0 -> 4939228 bytes examples/Env/Envelopes/Envelopes.pde | 79 +++ examples/IO/AudioInput/AudioInput.pde | 51 ++ examples/Noise/Brown/Brown.pde | 27 + .../Noise/NoiseSpectrum/NoiseSpectrum.pde | 67 ++ examples/Noise/Pink/Pink.pde | 26 + examples/Noise/White/White.pde | 26 + .../OscillatorSpectrum/OscillatorSpectrum.pde | 79 +++ .../Oscillators/PulseWidth/PulseWidth.pde | 31 + examples/Oscillators/SawWave/SawWave.pde | 34 + .../Oscillators/SineCluster/SineCluster.pde | 55 ++ examples/Oscillators/SineWave/SineWave.pde | 34 + .../Oscillators/SquareWave/SquareWave.pde | 34 + .../Oscillators/TriangleWave/TriangleWave.pde | 34 + .../AudioSampleManipulation.pde | 46 ++ .../JumbleSoundfile/JumbleSoundfile.pde | 46 ++ .../Soundfile/JumbleSoundfile/data/beat.aiff | Bin 0 -> 694128 bytes examples/Soundfile/Keyboard/Keyboard.pde | 140 ++++ examples/Soundfile/Keyboard/data/1.aif | Bin 0 -> 133578 bytes examples/Soundfile/Keyboard/data/2.aif | Bin 0 -> 115686 bytes examples/Soundfile/Keyboard/data/3.aif | Bin 0 -> 163936 bytes examples/Soundfile/Keyboard/data/4.aif | Bin 0 -> 153928 bytes examples/Soundfile/Keyboard/data/5.aif | Bin 0 -> 125694 bytes examples/Soundfile/Sampler/Sampler.pde | 79 +++ examples/Soundfile/Sampler/data/1.aif | Bin 0 -> 133578 bytes examples/Soundfile/Sampler/data/2.aif | Bin 0 -> 115686 bytes examples/Soundfile/Sampler/data/3.aif | Bin 0 -> 163936 bytes examples/Soundfile/Sampler/data/4.aif | Bin 0 -> 153928 bytes examples/Soundfile/Sampler/data/5.aif | Bin 0 -> 125694 bytes .../SimplePlayback/SimplePlayback.pde | 41 ++ .../SimplePlayback/data/vibraphon.aiff | Bin 0 -> 4939228 bytes library.properties | 11 + library/.gitignore | 4 + src/processing/sound/Amplitude.java | 65 ++ src/processing/sound/Analyzer.java | 47 ++ src/processing/sound/AudioDevice.java | 16 + src/processing/sound/AudioIn.java | 128 ++++ src/processing/sound/AudioSample.java | 626 ++++++++++++++++++ src/processing/sound/BandPass.java | 65 ++ src/processing/sound/BrownNoise.java | 98 +++ src/processing/sound/Delay.java | 83 +++ src/processing/sound/Effect.java | 82 +++ src/processing/sound/Engine.java | 199 ++++++ src/processing/sound/Env.java | 55 ++ src/processing/sound/FFT.java | 100 +++ src/processing/sound/HighPass.java | 37 ++ src/processing/sound/JSynAllPass.java | 36 + .../sound/JSynAndroidAudioDeviceManager.java | 220 ++++++ src/processing/sound/JSynCircuit.java | 72 ++ src/processing/sound/JSynDelay.java | 60 ++ src/processing/sound/JSynFFT.java | 46 ++ src/processing/sound/JSynLBCF.java | 51 ++ src/processing/sound/JSynProcessor.java | 42 ++ src/processing/sound/JSynReverb.java | 87 +++ src/processing/sound/LowPass.java | 37 ++ src/processing/sound/Noise.java | 41 ++ src/processing/sound/Oscillator.java | 69 ++ src/processing/sound/PinkNoise.java | 94 +++ src/processing/sound/Pulse.java | 135 ++++ src/processing/sound/Reverb.java | 84 +++ src/processing/sound/SawOsc.java | 111 ++++ src/processing/sound/SinOsc.java | 128 ++++ src/processing/sound/Sound.java | 133 ++++ src/processing/sound/SoundFile.java | 303 +++++++++ src/processing/sound/SoundObject.java | 148 +++++ src/processing/sound/SqrOsc.java | 111 ++++ src/processing/sound/TriOsc.java | 111 ++++ src/processing/sound/WhiteNoise.java | 94 +++ 81 files changed, 5162 insertions(+), 3 deletions(-) create mode 100644 .gitignore create mode 100644 build.xml create mode 100644 examples/Analysis/FFTSpectrum/FFTSpectrum.pde create mode 100644 examples/Analysis/FFTSpectrum/data/beat.aiff create mode 100644 examples/Analysis/PeakAmplitude/PeakAmplitude.pde create mode 100644 examples/Analysis/PeakAmplitude/data/beat.aiff create mode 100644 examples/Effects/BandPassFilter/BandPassFilter.pde create mode 100644 examples/Effects/HighPassFilter/HighPassFilter.pde create mode 100644 examples/Effects/LowPassFilter/LowPassFilter.pde create mode 100644 examples/Effects/Reverberation/Reverberation.pde create mode 100644 examples/Effects/Reverberation/data/vibraphon.aiff create mode 100644 examples/Effects/VariableDelay/VariableDelay.pde create mode 100644 examples/Effects/VariableDelay/data/vibraphon.aiff create mode 100644 examples/Env/Envelopes/Envelopes.pde create mode 100644 examples/IO/AudioInput/AudioInput.pde create mode 100644 examples/Noise/Brown/Brown.pde create mode 100644 examples/Noise/NoiseSpectrum/NoiseSpectrum.pde create mode 100644 examples/Noise/Pink/Pink.pde create mode 100644 examples/Noise/White/White.pde create mode 100644 examples/Oscillators/OscillatorSpectrum/OscillatorSpectrum.pde create mode 100644 examples/Oscillators/PulseWidth/PulseWidth.pde create mode 100644 examples/Oscillators/SawWave/SawWave.pde create mode 100644 examples/Oscillators/SineCluster/SineCluster.pde create mode 100644 examples/Oscillators/SineWave/SineWave.pde create mode 100644 examples/Oscillators/SquareWave/SquareWave.pde create mode 100644 examples/Oscillators/TriangleWave/TriangleWave.pde create mode 100644 examples/Soundfile/AudioSampleManipulation/AudioSampleManipulation.pde create mode 100644 examples/Soundfile/JumbleSoundfile/JumbleSoundfile.pde create mode 100644 examples/Soundfile/JumbleSoundfile/data/beat.aiff create mode 100644 examples/Soundfile/Keyboard/Keyboard.pde create mode 100644 examples/Soundfile/Keyboard/data/1.aif create mode 100644 examples/Soundfile/Keyboard/data/2.aif create mode 100644 examples/Soundfile/Keyboard/data/3.aif create mode 100644 examples/Soundfile/Keyboard/data/4.aif create mode 100644 examples/Soundfile/Keyboard/data/5.aif create mode 100644 examples/Soundfile/Sampler/Sampler.pde create mode 100644 examples/Soundfile/Sampler/data/1.aif create mode 100644 examples/Soundfile/Sampler/data/2.aif create mode 100644 examples/Soundfile/Sampler/data/3.aif create mode 100644 examples/Soundfile/Sampler/data/4.aif create mode 100644 examples/Soundfile/Sampler/data/5.aif create mode 100644 examples/Soundfile/SimplePlayback/SimplePlayback.pde create mode 100644 examples/Soundfile/SimplePlayback/data/vibraphon.aiff create mode 100644 library.properties create mode 100644 library/.gitignore create mode 100644 src/processing/sound/Amplitude.java create mode 100644 src/processing/sound/Analyzer.java create mode 100644 src/processing/sound/AudioDevice.java create mode 100644 src/processing/sound/AudioIn.java create mode 100644 src/processing/sound/AudioSample.java create mode 100644 src/processing/sound/BandPass.java create mode 100644 src/processing/sound/BrownNoise.java create mode 100644 src/processing/sound/Delay.java create mode 100644 src/processing/sound/Effect.java create mode 100644 src/processing/sound/Engine.java create mode 100644 src/processing/sound/Env.java create mode 100644 src/processing/sound/FFT.java create mode 100644 src/processing/sound/HighPass.java create mode 100644 src/processing/sound/JSynAllPass.java create mode 100644 src/processing/sound/JSynAndroidAudioDeviceManager.java create mode 100644 src/processing/sound/JSynCircuit.java create mode 100644 src/processing/sound/JSynDelay.java create mode 100644 src/processing/sound/JSynFFT.java create mode 100644 src/processing/sound/JSynLBCF.java create mode 100644 src/processing/sound/JSynProcessor.java create mode 100644 src/processing/sound/JSynReverb.java create mode 100644 src/processing/sound/LowPass.java create mode 100644 src/processing/sound/Noise.java create mode 100644 src/processing/sound/Oscillator.java create mode 100644 src/processing/sound/PinkNoise.java create mode 100644 src/processing/sound/Pulse.java create mode 100644 src/processing/sound/Reverb.java create mode 100644 src/processing/sound/SawOsc.java create mode 100644 src/processing/sound/SinOsc.java create mode 100644 src/processing/sound/Sound.java create mode 100644 src/processing/sound/SoundFile.java create mode 100644 src/processing/sound/SoundObject.java create mode 100644 src/processing/sound/SqrOsc.java create mode 100644 src/processing/sound/TriOsc.java create mode 100644 src/processing/sound/WhiteNoise.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..26b4508 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/bin/ +*.jar diff --git a/README.md b/README.md index 32858fd..680d1d7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,19 @@ -# processing-sound -Audio library for Processing built with JSyn +## Processing Sound library -This library replaces the prior Processing Sound library (). The API is 100% compatible, so all code written with the prior code base will work with the new version of the library. +The new Sound library for Processing 3 provides a simple way to work with audio. It can play, analyze, and synthesize sound. The library comes with a collection of oscillators for basic wave forms, a variety of noise generators, and effects and filters to alter sound files and other generated sounds. The syntax is minimal to make it easy for beginners who want a straightforward way to add some sound to their Processing sketches! + +### How to use + +The easiest way to install the Sound library is through Processing's Contribution Manager. The library comes with many example sketches, the full online reference can be found [here](https://www.processing.org/reference/libraries/sound/). Please report bugs [https://github.com/processing/processing-sound/issues](here). + +### How to build + +1. `git clone git@github.com:processing/processing-sound.git` +2. into the `library/` folder copy (or soft-link) your Processsing's `core.jar` (and, optionally, also your Android SDK's `android.jar`, API level 26 or higher). Other dependencies (in particular Phil Burk's [JSyn](http://www.softsynth.com/jsyn/) engine on which this library is based) are downloaded automatically. +3. `ant dist` (or, alternatively, run build.xml from within Eclipse) + +The resulting `processing-sound.zip` can be extracted into your Processing installation's `libraries/` folder. + +### License + +LGPL v2.1 diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..119eebe --- /dev/null +++ b/build.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Analysis/FFTSpectrum/FFTSpectrum.pde b/examples/Analysis/FFTSpectrum/FFTSpectrum.pde new file mode 100644 index 0000000..c51b04f --- /dev/null +++ b/examples/Analysis/FFTSpectrum/FFTSpectrum.pde @@ -0,0 +1,64 @@ +/** + * This sketch shows how to use the FFT class to analyze a stream + * of sound. Change the number of bands to get more spectral bands + * (at the expense of more coarse-grained time resolution of the spectrum). + */ + +import processing.sound.*; + +// Declare the sound source and FFT analyzer variables +SoundFile sample; +FFT fft; + +// Define how many FFT bands to use (this needs to be a power of two) +int bands = 128; + +// Define a smoothing factor which determines how much the spectrums of consecutive +// points in time should be combined to create a smoother visualisation of the spectrum. +// A smoothing factor of 1.0 means no smoothing (only the data from the newest analysis +// is rendered), decrease the factor down towards 0.0 to have the visualisation update +// more slowly, which is easier on the eye. +float smoothingFactor = 0.2; + +// Create a vector to store the smoothed spectrum data in +float[] sum = new float[bands]; + +// Variables for drawing the spectrum: +// Declare a scaling factor for adjusting the height of the rectangles +int scale = 5; +// Declare a drawing variable for calculating the width of the +float barWidth; + +public void setup() { + size(640, 360); + background(255); + + // Calculate the width of the rects depending on how many bands we have + barWidth = width/float(bands); + + // Load and play a soundfile and loop it. + sample = new SoundFile(this, "beat.aiff"); + sample.loop(); + + // Create the FFT analyzer and connect the playing soundfile to it. + fft = new FFT(this, bands); + fft.input(sample); +} + +public void draw() { + // Set background color, noStroke and fill color + background(125, 255, 125); + fill(255, 0, 150); + noStroke(); + + // Perform the analysis + fft.analyze(); + + for (int i = 0; i < bands; i++) { + // Smooth the FFT spectrum data by smoothing factor + sum[i] += (fft.spectrum[i] - sum[i]) * smoothingFactor; + + // Draw the rectangles, adjust their height using the scale factor + rect(i*barWidth, height, barWidth, -sum[i]*height*scale); + } +} diff --git a/examples/Analysis/FFTSpectrum/data/beat.aiff b/examples/Analysis/FFTSpectrum/data/beat.aiff new file mode 100644 index 0000000000000000000000000000000000000000..017b7ce235be04821ef706eab00e445d132b2656 GIT binary patch literal 694128 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