Skip to content

Commit a14d5fd

Browse files
committed
FileReader plugin refactoring and stylystic fixes
1 parent bf75653 commit a14d5fd

4 files changed

Lines changed: 411 additions & 338 deletions

File tree

Source/Processors/FileReader/FileReader.cpp

Lines changed: 135 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -29,44 +29,53 @@
2929

3030

3131
FileReader::FileReader()
32-
: GenericProcessor("File Reader")
32+
: GenericProcessor ("File Reader")
33+
, timestamp (0)
34+
, currentSampleRate (0)
35+
, currentNumChannels (0)
36+
, currentSample (0)
37+
, currentNumSamples (0)
38+
, startSample (0)
39+
, stopSample (0)
40+
, counter (0)
3341
{
42+
enabledState (false);
3443

35-
timestamp = 0;
36-
37-
enabledState(false);
38-
39-
counter = 0;
40-
41-
for (int i = 0; i < AccessClass::getPluginManager()->getNumFileSources(); i++)
42-
{
43-
Plugin::FileSourceInfo info = AccessClass::getPluginManager()->getFileSourceInfo(i);
44-
StringArray extensions;
45-
extensions.addTokens(info.extensions, ";", "\"");
46-
for (int j = 0; j < extensions.size(); j++)
47-
{
48-
supportedExtensions.set(extensions[j].toLowerCase(), i + 1);
49-
}
50-
}
44+
const int numFileSources = AccessClass::getPluginManager()->getNumFileSources();
45+
for (int i = 0; i < numFileSources; ++i)
46+
{
47+
Plugin::FileSourceInfo info = AccessClass::getPluginManager()->getFileSourceInfo (i);
48+
49+
StringArray extensions;
50+
extensions.addTokens (info.extensions, ";", "\"");
51+
52+
const int numExtensions = extensions.size();
53+
for (int j = 0; j < numExtensions; ++j)
54+
{
55+
supportedExtensions.set (extensions[j].toLowerCase(), i + 1);
56+
}
57+
}
5158
}
5259

60+
5361
FileReader::~FileReader()
5462
{
5563
}
5664

65+
5766
AudioProcessorEditor* FileReader::createEditor()
5867
{
59-
editor = new FileReaderEditor(this, true);
68+
editor = new FileReaderEditor (this, true);
6069

6170
return editor;
62-
6371
}
6472

65-
bool FileReader::isReady()
73+
74+
bool FileReader::isReady() /* const */
6675
{
67-
if (input == nullptr)
76+
if (! input)
6877
{
69-
CoreServices::sendStatusMessage("No file selected in File Reader.");
78+
CoreServices::sendStatusMessage ("No file selected in File Reader.");
7079
return false;
7180
}
7281
else
@@ -76,106 +85,121 @@ bool FileReader::isReady()
7685
}
7786

7887

79-
float FileReader::getDefaultSampleRate()
88+
float FileReader::getDefaultSampleRate() /* const */
8089
{
8190
if (input)
8291
return currentSampleRate;
8392
else
8493
return 44100.0;
8594
}
8695

87-
int FileReader::getNumHeadstageOutputs()
96+
97+
int FileReader::getNumHeadstageOutputs() /* const */
8898
{
8999
if (input)
90100
return currentNumChannels;
91101
else
92102
return 16;
93103
}
94104

95-
int FileReader::getNumEventChannels()
105+
106+
int FileReader::getNumEventChannels() /* const */
96107
{
97108
return 8;
98109
}
99110

100-
float FileReader::getBitVolts(Channel* chan)
111+
112+
float FileReader::getBitVolts (Channel* chan) /* const */
101113
{
102114
if (input)
103115
return chan->bitVolts;
104116
else
105117
return 0.05f;
106118
}
107119

108-
void FileReader::enabledState(bool t)
109-
{
110120

121+
void FileReader::enabledState (bool t)
122+
{
111123
isEnabled = t;
112-
113124
}
114125

115126

116-
bool FileReader::setFile(String fullpath)
127+
bool FileReader::setFile (String fullpath)
117128
{
118-
File file(fullpath);
129+
File file (fullpath);
119130

120-
String ext = file.getFileExtension().toLowerCase().substring(1);
131+
String ext = file.getFileExtension().toLowerCase().substring (1);
121132

122-
int index = supportedExtensions[ext] - 1;
133+
const int index = supportedExtensions[ext] - 1;
134+
const bool isSupportedFileExtension = index >= 0;
123135

124-
if (index >= 0)
136+
if (isSupportedFileExtension)
125137
{
126-
Plugin::FileSourceInfo sourceInfo = AccessClass::getPluginManager()->getFileSourceInfo(index);
127-
input = sourceInfo.creator();
138+
Plugin::FileSourceInfo sourceInfo = AccessClass::getPluginManager()->getFileSourceInfo (index);
139+
input = sourceInfo.creator();
128140
}
129141
else
130142
{
131-
CoreServices::sendStatusMessage("File type not supported");
143+
CoreServices::sendStatusMessage ("File type not supported");
132144
return false;
133145
}
134146

135-
if (!input->OpenFile(file))
147+
if (! input->OpenFile (file))
136148
{
137149
input = nullptr;
138-
CoreServices::sendStatusMessage("Invalid file");
150+
CoreServices::sendStatusMessage ("Invalid file");
151+
139152
return false;
140153
}
141154

142-
if (input->getNumRecords() <= 0)
155+
const bool isEmptyFile = input->getNumRecords() <= 0;
156+
if (isEmptyFile)
143157
{
144158
input = nullptr;
145-
CoreServices::sendStatusMessage("Empty file. Inoring open operation");
159+
CoreServices::sendStatusMessage ("Empty file. Inoring open operation");
160+
146161
return false;
147162
}
148-
static_cast<FileReaderEditor*>(getEditor())->populateRecordings(input);
149-
setActiveRecording(0);
150-
163+
164+
static_cast<FileReaderEditor*> (getEditor())->populateRecordings (input);
165+
setActiveRecording (0);
166+
151167
return true;
152168
}
153169

154-
void FileReader::setActiveRecording(int index)
170+
171+
void FileReader::setActiveRecording (int index)
155172
{
156-
input->setActiveRecord(index);
157-
currentNumChannels = input->getActiveNumChannels();
158-
currentNumSamples = input->getActiveNumSamples();
159-
currentSampleRate = input->getActiveSampleRate();
160-
startSample = 0;
161-
stopSample = currentNumSamples;
162-
currentSample = 0;
163-
for (int i=0; i < currentNumChannels; i++)
173+
input->setActiveRecord (index);
174+
175+
currentNumChannels = input->getActiveNumChannels();
176+
currentNumSamples = input->getActiveNumSamples();
177+
currentSampleRate = input->getActiveSampleRate();
178+
179+
currentSample = 0;
180+
startSample = 0;
181+
stopSample = currentNumSamples;
182+
183+
for (int i = 0; i < currentNumChannels; ++i)
164184
{
165-
channelInfo.add(input->getChannelInfo(i));
185+
channelInfo.add (input->getChannelInfo (i));
166186
}
167-
static_cast<FileReaderEditor*>(getEditor())->setTotalTime(samplesToMilliseconds(currentNumSamples));
168-
readBuffer.malloc(currentNumChannels*BUFFER_SIZE);
187+
188+
static_cast<FileReaderEditor*> (getEditor())->setTotalTime (samplesToMilliseconds (currentNumSamples));
189+
190+
readBuffer.malloc (currentNumChannels * BUFFER_SIZE);
169191
}
170192

171-
String FileReader::getFile()
193+
194+
String FileReader::getFile() const
172195
{
173196
if (input)
174197
return input->getFileName();
175198
else
176199
return String::empty;
177200
}
178201

202+
179203
void FileReader::updateSettings()
180204
{
181205
// if (!input) return;
@@ -188,13 +212,11 @@ void FileReader::updateSettings()
188212
}
189213

190214

191-
192-
void FileReader::process(AudioSampleBuffer& buffer, MidiBuffer& events)
215+
void FileReader::process (AudioSampleBuffer& buffer, MidiBuffer& events)
193216
{
217+
setTimestamp (events, timestamp);
194218

195-
setTimestamp(events, timestamp);
196-
197-
int samplesNeeded = (int) float(buffer.getNumSamples()) * (getDefaultSampleRate()/44100.0f);
219+
const int samplesNeeded = int (float (buffer.getNumSamples()) * (getDefaultSampleRate() / 44100.0f));
198220
// FIXME: needs to account for the fact that the ratio might not be an exact
199221
// integer value
200222

@@ -203,84 +225,99 @@ void FileReader::process(AudioSampleBuffer& buffer, MidiBuffer& events)
203225
while (samplesRead < samplesNeeded)
204226
{
205227
int samplesToRead = samplesNeeded - samplesRead;
206-
if ((currentSample + samplesToRead) > stopSample)
228+
if ( (currentSample + samplesToRead) > stopSample)
207229
{
208230
samplesToRead = stopSample - currentSample;
209231
if (samplesToRead > 0)
210-
input->readData(readBuffer+samplesRead,samplesToRead);
211-
input->seekTo(startSample);
232+
input->readData (readBuffer + samplesRead, samplesToRead);
233+
234+
input->seekTo (startSample);
212235
currentSample = startSample;
213236
}
214237
else
215238
{
216-
input->readData(readBuffer+samplesRead,samplesToRead);
239+
input->readData (readBuffer + samplesRead, samplesToRead);
240+
217241
currentSample += samplesToRead;
218242
}
243+
219244
samplesRead += samplesToRead;
220245
}
221-
for (int i=0; i < currentNumChannels; i++)
246+
247+
for (int i = 0; i < currentNumChannels; ++i)
222248
{
223-
input->processChannelData(readBuffer,buffer.getWritePointer(i,0),i,samplesNeeded);
249+
input->processChannelData (readBuffer, buffer.getWritePointer (i, 0), i, samplesNeeded);
224250
}
225251

226252
timestamp += samplesNeeded;
227-
setNumSamples(events, samplesNeeded);
253+
setNumSamples (events, samplesNeeded);
228254

229255
// code for testing events:
256+
// // ===========================================================================
230257

231258
// if (counter == 100)
232259
// {
233260
// //std::cout << "Adding on event for node id: " << nodeId << std::endl;
234-
// addEvent(events, // MidiBuffer
235-
// TTL, // eventType
236-
// 0, // sampleNum
237-
// 1, // eventID
238-
// 0 // eventChannel
239-
// );
240-
// counter++;
241-
// } else if (counter > 120)
261+
// addEvent (events, // MidiBuffer
262+
// TTL, // eventType
263+
// 0, // sampleNum
264+
// 1, // eventID
265+
// 0); // eventChannel
266+
// ++counter;
267+
// }
268+
// else if (counter > 120)
242269
// {
243270
// //std::cout << "Adding off event!" << std::endl;
244-
// addEvent(events, // MidiBuffer
245-
// TTL, // eventType
246-
// 0, // sampleNum
247-
// 0, // eventID
248-
// 0 // eventChannel
249-
// );
271+
// addEvent (events, // MidiBuffer
272+
// TTL, // eventType
273+
// 0, // sampleNum
274+
// 0, // eventID
275+
// 0); // eventChannel
250276
// counter = 0;
251-
// } else {
252-
// counter++;
253277
// }
254-
278+
// else
279+
// {
280+
// ++counter;
281+
// }
282+
// // ===========================================================================
255283
}
256284

257285

258-
void FileReader::setParameter(int parameterIndex, float newValue)
286+
void FileReader::setParameter (int parameterIndex, float newValue)
259287
{
260288
switch (parameterIndex)
261289
{
262-
case 0: //Change selected recording
263-
setActiveRecording(newValue);
290+
//Change selected recording
291+
case 0:
292+
setActiveRecording (newValue);
264293
break;
265-
case 1: //set startTime
266-
startSample = millisecondsToSamples(newValue);
294+
295+
//set startTime
296+
case 1:
297+
startSample = millisecondsToSamples (newValue);
267298
currentSample = startSample;
268-
static_cast<FileReaderEditor*>(getEditor())->setCurrentTime(samplesToMilliseconds(currentSample));
299+
300+
static_cast<FileReaderEditor*> (getEditor())->setCurrentTime (samplesToMilliseconds (currentSample));
269301
break;
270-
case 2: //set stop time
302+
303+
//set stop time
304+
case 2:
271305
stopSample = millisecondsToSamples(newValue);
272306
currentSample = startSample;
273-
static_cast<FileReaderEditor*>(getEditor())->setCurrentTime(samplesToMilliseconds(currentSample));
307+
308+
static_cast<FileReaderEditor*> (getEditor())->setCurrentTime (samplesToMilliseconds (currentSample));
274309
break;
275310
}
276311
}
277312

278-
unsigned int FileReader::samplesToMilliseconds(int64 samples)
313+
314+
unsigned int FileReader::samplesToMilliseconds (int64 samples) const
279315
{
280-
return (unsigned int)(1000.f*float(samples)/currentSampleRate);
316+
return (unsigned int) (1000.f * float (samples) / currentSampleRate);
281317
}
282318

283-
int64 FileReader::millisecondsToSamples(unsigned int ms)
319+
320+
int64 FileReader::millisecondsToSamples (unsigned int ms) const
284321
{
285-
return (int64)(currentSampleRate*float(ms)/1000.f);
322+
return (int64) (currentSampleRate * float (ms) / 1000.f);
286323
}

0 commit comments

Comments
 (0)