2929
3030
3131FileReader::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+
5361FileReader::~FileReader ()
5462{
5563}
5664
65+
5766AudioProcessorEditor* 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+
179203void 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