Krotos Modules 3
Loading...
Searching...
No Matches
Kwidget_Recorder.cpp
Go to the documentation of this file.
1namespace krotos
2{
3 Kwidget_Recorder::Kwidget_Recorder(const String& id) : Kwidget("Recorder", id)
4 {
5 // CustomParameters can be used to store strings in the Kwidget's state.
6 // auto& param = *createAndAddCustomParameter(Parameters::Custom, "");
7 // param.valueChanged = [this](const var& /*value*/)
8 // {
9 // // do something
10 // };
11
12 // This must be called after all custom parameters are added.
13 init();
14
15 // Parameter callbacks can be added to deal with parameter changes at the Kwidget level, instead
16 // of having each KwidgetProcessor voice apply the changes separately. This function must be called
17 // after init().
18 // addParameterCallback(Parameters::Example, [this](float /*newValue*/)
19 // {
20 // // do something
21 // });
22
23 m_active = false;
24 m_draggable = false;
26
27 const String nameFormatSetting(KwidgetAudioProcessor::DroppedFileNameFormat);
28 const String nameFormatString = KwidgetAudioProcessor::settingsFile.getSetting(nameFormatSetting);
29 m_recordDragAndDropName.setNameFormat(nameFormatString);
30 }
31
32 void Kwidget_Recorder::addListener(Listener* listenerToAdd) { m_listeners.add(listenerToAdd); }
33
35 {
36 if (!m_listeners.contains(listenerToRemove))
37 return;
38 m_listeners.remove(listenerToRemove);
39 }
40
41 void Kwidget_Recorder::setPresetName(String newPresetName) { m_recordDragAndDropName.setPresetName(newPresetName); }
42
44 {
45 m_listeners.call([isPerforming](Listener& l) { l.notifyPerformingState(isPerforming); });
46 }
47
48 void Kwidget_Recorder::setFinishedPerformingState(bool isFinishedPerforming)
49 {
50 m_listeners.call(
51 [isFinishedPerforming](Listener& l) { l.notifyFinishedPerformingState(isFinishedPerforming); });
52 }
53
55
56 void Kwidget_Recorder::setActive(bool activeState)
57 {
58 m_active = activeState;
60 }
61
62 void Kwidget_Recorder::setDraggable(bool isDraggable)
63 {
64 m_draggable = isDraggable;
66 }
67
68 std::vector<Kwidget::ParameterInfo> Kwidget_Recorder::createParameters()
69 {
70 return {
71 // { Parameters::Example, Parameters::Example, { 0.0f, 1.0f }, 0.0f }
72 };
73 }
74
75 std::unique_ptr<KwidgetProcessor> Kwidget_Recorder::createProcessor()
76 {
77 return std::make_unique<KwidgetProcessor_Recorder>(*this);
78 }
79
80 std::unique_ptr<KwidgetGUI> Kwidget_Recorder::createGUI() { return std::make_unique<KwidgetGUI_Recorder>(*this); }
81
83 {
84 if (!m_dragAndDropFilenames.isEmpty())
85 {
86 return *m_dragAndDropFilenames.getLast();
87 }
88
89 return "";
90 }
91
92 void Kwidget_Recorder::handleMidiMessages(MidiBuffer& midiMessages)
93 {
94 // for (auto metaData : midiMessages.data)
95 MidiBufferIterator iter = midiMessages.cbegin();
96 while (iter != midiMessages.cend())
97 {
98 auto metadata = *iter;
99 auto m = metadata.getMessage();
100 const int channel = m.getChannel();
101
102 if (m.isNoteOn())
103 {
104 getActiveVoice()->noteOn(m.getNoteNumber(), m.getFloatVelocity());
106 }
107 else if (m.isNoteOff())
108 {
109 getActiveVoice()->noteOff(m.getFloatVelocity());
111 }
112 iter++;
113 }
114 }
115
117 {
118 String sourceFilename = getTopFilename();
119
120 if (sourceFilename == "")
121 {
122 // did not return a fileName
123 File empty("");
124 return empty;
125 }
126
127 File source(sourceFilename);
128
129 // create filename
130 const String filename = m_recordDragAndDropName.getNextName();
131 String outputFilename = File::addTrailingSeparator(AssetManager::readDragAndDropPath()) + filename;
132
133 File outputFile(outputFilename);
134
135 source.copyFileTo(outputFile);
136 return outputFile;
137 }
138} // namespace krotos
static String readDragAndDropPath()
Definition AssetManager.cpp:450
Definition Kwidget_Recorder.h:8
virtual void notifyFinishedPerformingState(bool isFinishedPerforming)=0
virtual void notifyPerformingState(bool isPerforming)=0
bool m_active
Definition Kwidget_Recorder.h:78
void handleMidiMessages(MidiBuffer &midiMessages)
Definition Kwidget_Recorder.cpp:92
void setPresetName(String newPresetName)
Definition Kwidget_Recorder.cpp:41
std::unique_ptr< KwidgetProcessor > createProcessor() override
Definition Kwidget_Recorder.cpp:75
std::unique_ptr< KwidgetGUI > createGUI() override
Definition Kwidget_Recorder.cpp:80
File fetchRecordedFile()
Definition Kwidget_Recorder.cpp:116
OwnedArray< String > m_dragAndDropFilenames
Definition Kwidget_Recorder.h:77
void addListener(Listener *listenerToAdd)
Definition Kwidget_Recorder.cpp:32
bool m_draggable
Definition Kwidget_Recorder.h:79
RecorderDropName m_recordDragAndDropName
Definition Kwidget_Recorder.h:82
std::vector< ParameterInfo > createParameters() override
Definition Kwidget_Recorder.cpp:68
void triggerRecordingStateListenerCallback()
Definition Kwidget_Recorder.cpp:54
Kwidget_Recorder(const String &id)
Definition Kwidget_Recorder.cpp:3
int m_activeVoices
Definition Kwidget_Recorder.h:80
void setDraggable(bool draggableState)
Definition Kwidget_Recorder.cpp:62
void setActive(bool activeState)
Definition Kwidget_Recorder.cpp:56
void setFinishedPerformingState(bool isFinishedPerforming)
Definition Kwidget_Recorder.cpp:48
void removeListener(Listener *listenerToRemove)
Definition Kwidget_Recorder.cpp:34
ListenerList< Listener > m_listeners
Definition Kwidget_Recorder.h:75
String getTopFilename()
Definition Kwidget_Recorder.cpp:82
void setPerformingState(bool isPerforming)
Definition Kwidget_Recorder.cpp:43
static SettingsFile settingsFile
Definition KwidgetAudioProcessor.h:221
static const String DroppedFileNameFormat
Definition KwidgetAudioProcessor.h:230
Definition Kwidget.h:8
void init()
Definition Kwidget.cpp:27
KwidgetProcessor * getActiveVoice() const
Definition Kwidget.h:61
virtual void noteOn(int midiNoteNumber, float velocity, int voiceIndex=-1)
Definition KwidgetProcessor.cpp:20
virtual void noteOff(float velocity)
Definition KwidgetProcessor.cpp:22
void setPresetName(String newPresetName)
Definition RecorderDropName.cpp:11
String getNextName()
Definition RecorderDropName.cpp:24
void setNameFormat(String formatString)
Definition RecorderDropName.cpp:9
var getSetting(const Identifier &key)
Retrieves the value associated with a given key.
Definition SettingsFile.cpp:11
Definition AirAbsorptionFilter.cpp:2