Skip to content

Commit

Permalink
DECLARE_TYPE
Browse files Browse the repository at this point in the history
  • Loading branch information
benkuper committed Nov 26, 2024
1 parent e3789de commit a853a9b
Show file tree
Hide file tree
Showing 9 changed files with 525 additions and 535 deletions.
3 changes: 1 addition & 2 deletions Source/Node/nodes/container/ContainerNode.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,7 @@ class ContainerNode :
var getJSONData() override;
void loadJSONDataItemInternal(var data) override;

String getTypeString() const override { return getTypeStringStatic(); }
static const String getTypeStringStatic() { return "Container"; }
DECLARE_TYPE("Container");

BaseNodeViewUI* createViewUI() override;
};
136 changes: 67 additions & 69 deletions Source/Node/nodes/io/IONode.h
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;
};
99 changes: 49 additions & 50 deletions Source/Node/nodes/looper/AudioLooperNode.h
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");
};
81 changes: 40 additions & 41 deletions Source/Node/nodes/looper/MIDILooperNode.h
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");
};
Loading

0 comments on commit a853a9b

Please sign in to comment.