1#ifndef VIBROSONICS_API_H
2#define VIBROSONICS_API_H
10#include <AudioPrism.h>
65 float getMean(
float* data,
int dataLength);
68 float getMean(complex* data,
int dataLength);
74 void noiseFloorCFAR(
float* data,
int numRefs,
int numGuards,
float bias);
79 void assignWave(
float freq,
float amp,
int channel);
83 void assignWaves(
float* freqs,
float* amps,
int dataLength,
int channel);
91 void mapAmplitudes(
float* ampData,
int dataLength,
float minAmpSum = 10000,
92 float smoothFactor = 0.05);
122 AmpEnv createAmpEnv(
float attackAmp,
float decayAmp,
float sustainAmp,
float releaseAmp);
125 DurEnv createDurEnv(
int attackDuration,
int decayDuration,
int sustainDuration,
int releaseDuration,
float curve);
137 void pause() { AudioLab.pauseSampling(); }
140 void resume() { AudioLab.resumeSampling(); }
constexpr float FREQ_RES
Frequency range of an FFT bin in Hz.
Definition VibrosonicsAPI.h:30
constexpr float FREQ_WIDTH
Duration of a window, in seconds.
Definition VibrosonicsAPI.h:37
constexpr uint16_t WINDOW_SIZE_OVERLAP
Definition VibrosonicsAPI.h:21
constexpr int WINDOW_SIZE_BY_2
Definition VibrosonicsAPI.h:22
Definition VibrosonicsAPI.h:39
float getMean(float *data, int dataLength)
Returns the mean of some float data.
Definition VibrosonicsAPI.cpp:91
void processAudioInput(float *output)
Perform fast fourier transform on the AudioLab input buffer.
Definition VibrosonicsAPI.cpp:23
float mapFrequencyMIDI(float inFreq, float minFreq, float maxFreq)
Maps a frequency to the haptic range by quantizing it using MIDI values.
Definition VibrosonicsAPI.cpp:288
Grain * createGrainArray(int numGrains, uint8_t channel, WaveType waveType)
Creates and returns a static array of grains on desired chanel with specified wave type.
Definition VibrosonicsAPI.cpp:314
void pause()
Stops the audio input sampling interrupt.
Definition VibrosonicsAPI.h:137
Grain * createDynamicGrain(uint8_t channel, WaveType waveType, FreqEnv freqEnv, AmpEnv ampEnv, DurEnv durEnv)
Creates and returns a single dynamic grain with the specified channel and wave type....
Definition VibrosonicsAPI.cpp:336
void complexToMagnitude()
Computes frequency magnitudes in vReal data.
Definition VibrosonicsAPI.cpp:78
void noiseFloorCFAR(float *data, int numRefs, int numGuards, float bias)
Floors data using the CFAR algorithm.
Definition VibrosonicsAPI.cpp:143
void setGrainDurEnv(Grain *grains, int numGrains, DurEnv durEnv)
Sets the duration envelope paramaters for an array of grains.
Definition VibrosonicsAPI.cpp:459
DurEnv createDurEnv(int attackDuration, int decayDuration, int sustainDuration, int releaseDuration, float curve)
Creates a duration envelope for a grain.
Definition VibrosonicsAPI.cpp:418
void triggerGrains(Grain *grains, int numGrains, FreqEnv freqEnv, AmpEnv ampEnv, DurEnv durEnv)
Updates an array of numPeaks grains sustain and release windows.
Definition VibrosonicsAPI.cpp:367
void mapAmplitudes(float *ampData, int dataLength, float minAmpSum=10000, float smoothFactor=0.05)
Maps amplitudes in some data to between 0.0-1.0 range.
Definition VibrosonicsAPI.cpp:196
void fftWindowing()
Applies windowing function to vReal data.
Definition VibrosonicsAPI.cpp:67
void assignWaves(float *freqs, float *amps, int dataLength, int channel)
Add waves to a channel from the values in the frequency and amplitude arrays.
Definition VibrosonicsAPI.cpp:256
void init()
Definition VibrosonicsAPI.cpp:11
void resume()
Resumes the audio input sample interrupt.
Definition VibrosonicsAPI.h:140
bool isAudioLabReady()
Check if a new audio window has been recorded.
Definition VibrosonicsAPI.cpp:268
void updateGrains()
Updates all grains in the globalGrainList.
Definition VibrosonicsAPI.cpp:352
void noiseFloor(float *data, float threshold)
Floors data that is below a certain threshold.
Definition VibrosonicsAPI.cpp:121
void assignWave(float freq, float amp, int channel)
Add a wave to a channel with specified frequency and amplitude.
Definition VibrosonicsAPI.cpp:240
FreqEnv createFreqEnv(float attackFreq, float decayFreq, float sustainFreq, float releaseFreq)
Creates a frequency envelope for a grain.
Definition VibrosonicsAPI.cpp:387
AmpEnv createAmpEnv(float attackAmp, float decayAmp, float sustainAmp, float releaseAmp)
Creates an amplitude envelope for a grain.
Definition VibrosonicsAPI.cpp:402
void setGrainFreqEnv(Grain *grains, int numGrains, FreqEnv freqEnv)
Sets the frequency envelope parameters for an array of grains.
Definition VibrosonicsAPI.cpp:431
void computeHammingWindow()
Pre compute hamming windows for FFT operations.
Definition VibrosonicsAPI.cpp:55
void dcRemoval()
Perform DC Removal to reduce noise in vReal.
Definition VibrosonicsAPI.cpp:47
float mapFrequencyByOctaves(float inFreq, float maxFreq)
Maps a frequency to the haptic range (0-230Hz) by transposing it down by octaves.
Definition VibrosonicsAPI.cpp:273
void setGrainAmpEnv(Grain *grains, int numGrains, AmpEnv ampEnv)
Sets the amplitude envelope parameters for an array of grains.
Definition VibrosonicsAPI.cpp:445