-
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
525 additions
and
535 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,70 +1,68 @@ | ||
/* | ||
============================================================================== | ||
IONode.h | ||
Created: 15 Nov 2020 8:42:54am | ||
Author: bkupe | ||
============================================================================== | ||
*/ | ||
|
||
#pragma once | ||
|
||
class IONode : | ||
public Node | ||
{ | ||
public: | ||
IONode(StringRef name, var params = var(), bool isInput = true); | ||
virtual ~IONode() {} | ||
|
||
bool isInput; | ||
ControllableContainer channelsCC; | ||
var channelsGhostData; | ||
bool isRoot; | ||
|
||
int realNumInputs; | ||
int realNumOutputs; | ||
|
||
int ghostNumChannels; //for root nodes | ||
|
||
void setIsRoot(bool value); | ||
|
||
virtual void setAudioInputs(const StringArray& inputNames, bool updateConfig = true) override; | ||
virtual void setAudioOutputs(const StringArray& outputNames, bool updateConfig = true) override; | ||
|
||
void updateAudioInputsInternal() override; | ||
void updateAudioOutputsInternal() override; | ||
void updateIO(); | ||
|
||
void processBlockInternal(AudioBuffer<float>& buffer, MidiBuffer& midiMessages) override; | ||
void processBlockBypassed(AudioBuffer<float>& buffer, MidiBuffer& midiMessages) override; | ||
|
||
var getJSONData() override; | ||
void loadJSONDataItemInternal(var data) override; | ||
|
||
BaseNodeViewUI* createViewUI() override; | ||
}; | ||
|
||
class AudioInputNode : | ||
public IONode | ||
{ | ||
public: | ||
AudioInputNode(var params = var()) : IONode(getTypeString(), params, true) {} | ||
|
||
String getTypeString() const override { return getTypeStringStatic(); } | ||
static const String getTypeStringStatic() { return "Audio In"; } | ||
|
||
void updatePlayConfigInternal() override; | ||
}; | ||
|
||
class AudioOutputNode : | ||
public IONode | ||
{ | ||
public: | ||
AudioOutputNode(var params = var()) : IONode(getTypeString(), params, false) {} | ||
|
||
String getTypeString() const override { return getTypeStringStatic(); } | ||
static const String getTypeStringStatic() { return "Audio Out"; } | ||
|
||
void updatePlayConfigInternal() override; | ||
/* | ||
============================================================================== | ||
IONode.h | ||
Created: 15 Nov 2020 8:42:54am | ||
Author: bkupe | ||
============================================================================== | ||
*/ | ||
|
||
#pragma once | ||
|
||
class IONode : | ||
public Node | ||
{ | ||
public: | ||
IONode(StringRef name, var params = var(), bool isInput = true); | ||
virtual ~IONode() {} | ||
|
||
bool isInput; | ||
ControllableContainer channelsCC; | ||
var channelsGhostData; | ||
bool isRoot; | ||
|
||
int realNumInputs; | ||
int realNumOutputs; | ||
|
||
int ghostNumChannels; //for root nodes | ||
|
||
void setIsRoot(bool value); | ||
|
||
virtual void setAudioInputs(const StringArray& inputNames, bool updateConfig = true) override; | ||
virtual void setAudioOutputs(const StringArray& outputNames, bool updateConfig = true) override; | ||
|
||
void updateAudioInputsInternal() override; | ||
void updateAudioOutputsInternal() override; | ||
void updateIO(); | ||
|
||
void processBlockInternal(AudioBuffer<float>& buffer, MidiBuffer& midiMessages) override; | ||
void processBlockBypassed(AudioBuffer<float>& buffer, MidiBuffer& midiMessages) override; | ||
|
||
var getJSONData() override; | ||
void loadJSONDataItemInternal(var data) override; | ||
|
||
BaseNodeViewUI* createViewUI() override; | ||
}; | ||
|
||
class AudioInputNode : | ||
public IONode | ||
{ | ||
public: | ||
AudioInputNode(var params = var()) : IONode(getTypeString(), params, true) {} | ||
|
||
DECLARE_TYPE("Audio In"); | ||
|
||
void updatePlayConfigInternal() override; | ||
}; | ||
|
||
class AudioOutputNode : | ||
public IONode | ||
{ | ||
public: | ||
AudioOutputNode(var params = var()) : IONode(getTypeString(), params, false) {} | ||
|
||
DECLARE_TYPE("Audio Out"); | ||
|
||
void updatePlayConfigInternal() override; | ||
}; |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,51 +1,50 @@ | ||
/* | ||
============================================================================== | ||
AudioLooperNode.h | ||
Created: 1 Dec 2020 11:16:14pm | ||
Author: bkupe | ||
============================================================================== | ||
*/ | ||
|
||
#pragma once | ||
|
||
class AudioLooperNode : | ||
public LooperNode, | ||
public AudioManager::AudioManagerListener | ||
{ | ||
public: | ||
AudioLooperNode(var params = var()); | ||
~AudioLooperNode(); | ||
|
||
IntParameter* numChannelsPerTrack; | ||
std::unique_ptr<RingBuffer<float>> ringBuffer; | ||
std::unique_ptr<RingBuffer<float>> retroRingBuffer; | ||
|
||
enum TrackOutputMode { MIXED_ONLY, SEPARATE_ONLY, ALL }; | ||
EnumParameter* trackOutputMode; | ||
|
||
|
||
void initInternal() override; | ||
|
||
virtual void updateOutTracks(bool updateConfig = true); | ||
virtual LooperTrack * createLooperTrack(int index) override; | ||
virtual void updateRingBuffer(); | ||
virtual void updateRetroRingBuffer(); | ||
virtual int getFadeNumSamples(); //for ring buffer fade | ||
|
||
virtual void audioSetupChanged() override; | ||
|
||
virtual void prepareToPlay(double sampleRate, int maximumExpectedSamplePerBlock) override; | ||
|
||
void onContainerParameterChangedInternal(Parameter* p) override; | ||
void onControllableFeedbackUpdateInternal(ControllableContainer* cc, Controllable* c) override; | ||
|
||
virtual void bpmChanged() override; | ||
virtual void playStateChanged(bool isPlaying, bool forceRestart) override; | ||
|
||
virtual void processBlockInternal(AudioBuffer<float>& buffer, MidiBuffer& midiMessages) override; | ||
|
||
String getTypeString() const override { return getTypeStringStatic(); } | ||
static String getTypeStringStatic() { return "Audio Looper"; } | ||
/* | ||
============================================================================== | ||
AudioLooperNode.h | ||
Created: 1 Dec 2020 11:16:14pm | ||
Author: bkupe | ||
============================================================================== | ||
*/ | ||
|
||
#pragma once | ||
|
||
class AudioLooperNode : | ||
public LooperNode, | ||
public AudioManager::AudioManagerListener | ||
{ | ||
public: | ||
AudioLooperNode(var params = var()); | ||
~AudioLooperNode(); | ||
|
||
IntParameter* numChannelsPerTrack; | ||
std::unique_ptr<RingBuffer<float>> ringBuffer; | ||
std::unique_ptr<RingBuffer<float>> retroRingBuffer; | ||
|
||
enum TrackOutputMode { MIXED_ONLY, SEPARATE_ONLY, ALL }; | ||
EnumParameter* trackOutputMode; | ||
|
||
|
||
void initInternal() override; | ||
|
||
virtual void updateOutTracks(bool updateConfig = true); | ||
virtual LooperTrack * createLooperTrack(int index) override; | ||
virtual void updateRingBuffer(); | ||
virtual void updateRetroRingBuffer(); | ||
virtual int getFadeNumSamples(); //for ring buffer fade | ||
|
||
virtual void audioSetupChanged() override; | ||
|
||
virtual void prepareToPlay(double sampleRate, int maximumExpectedSamplePerBlock) override; | ||
|
||
void onContainerParameterChangedInternal(Parameter* p) override; | ||
void onControllableFeedbackUpdateInternal(ControllableContainer* cc, Controllable* c) override; | ||
|
||
virtual void bpmChanged() override; | ||
virtual void playStateChanged(bool isPlaying, bool forceRestart) override; | ||
|
||
virtual void processBlockInternal(AudioBuffer<float>& buffer, MidiBuffer& midiMessages) override; | ||
|
||
DECLARE_TYPE("Audio Looper"); | ||
}; |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,42 +1,41 @@ | ||
/* | ||
============================================================================== | ||
MIDILooperNode.h | ||
Created: 1 Dec 2020 11:15:31pm | ||
Author: bkupe | ||
============================================================================== | ||
*/ | ||
|
||
#pragma once | ||
|
||
class MIDILooperNode : | ||
public LooperNode | ||
{ | ||
public: | ||
MIDILooperNode(var params= var()); | ||
~MIDILooperNode(); | ||
|
||
MidiMessageCollector cleanupCollector; | ||
|
||
struct NoteInfo { | ||
int channel; | ||
int noteNumber; | ||
inline bool operator == (const NoteInfo& other) const { return channel == other.channel && noteNumber == other.noteNumber; } | ||
}; | ||
Array<NoteInfo> currentNoteOns; //keeping track of onNotes to cleanup good | ||
|
||
virtual LooperTrack* createLooperTrack(int index) override; | ||
|
||
// virtual void receiveMIDIFromInput(Node* n, MidiBuffer& inputBuffer) override; | ||
virtual void midiMessageReceived(MIDIInterface* i, const MidiMessage& m) override; | ||
|
||
void onControllableFeedbackUpdateInternal(ControllableContainer * cc, Controllable *c) override; | ||
|
||
void prepareToPlay(double sampleRate, int maximumExpectedSamplesPerBlock) override; | ||
|
||
virtual void processBlockInternal(AudioBuffer<float>& buffer, MidiBuffer& midiMessages) override; | ||
|
||
String getTypeString() const override { return getTypeStringStatic(); } | ||
static String getTypeStringStatic() { return "MIDI Looper"; } | ||
/* | ||
============================================================================== | ||
MIDILooperNode.h | ||
Created: 1 Dec 2020 11:15:31pm | ||
Author: bkupe | ||
============================================================================== | ||
*/ | ||
|
||
#pragma once | ||
|
||
class MIDILooperNode : | ||
public LooperNode | ||
{ | ||
public: | ||
MIDILooperNode(var params= var()); | ||
~MIDILooperNode(); | ||
|
||
MidiMessageCollector cleanupCollector; | ||
|
||
struct NoteInfo { | ||
int channel; | ||
int noteNumber; | ||
inline bool operator == (const NoteInfo& other) const { return channel == other.channel && noteNumber == other.noteNumber; } | ||
}; | ||
Array<NoteInfo> currentNoteOns; //keeping track of onNotes to cleanup good | ||
|
||
virtual LooperTrack* createLooperTrack(int index) override; | ||
|
||
// virtual void receiveMIDIFromInput(Node* n, MidiBuffer& inputBuffer) override; | ||
virtual void midiMessageReceived(MIDIInterface* i, const MidiMessage& m) override; | ||
|
||
void onControllableFeedbackUpdateInternal(ControllableContainer * cc, Controllable *c) override; | ||
|
||
void prepareToPlay(double sampleRate, int maximumExpectedSamplesPerBlock) override; | ||
|
||
virtual void processBlockInternal(AudioBuffer<float>& buffer, MidiBuffer& midiMessages) override; | ||
|
||
DECLARE_TYPE("MIDI Looper"); | ||
}; |
Oops, something went wrong.