Skip to content
Snippets Groups Projects
Commit 6dfd7f19 authored by Aaron Cuevas Lopez's avatar Aaron Cuevas Lopez
Browse files

Add experiment numbering each time acquisition starts

parent e1e90499
No related branches found
No related tags found
No related merge requests found
......@@ -29,7 +29,6 @@ HDF5Recording::HDF5Recording() : processorIndex(-1)
timestamp = 0;
scaledBuffer = new float[MAX_BUFFER_SIZE];
intBuffer = new int16[MAX_BUFFER_SIZE];
mainFile = new KWIKFile();
}
HDF5Recording::~HDF5Recording()
......@@ -68,9 +67,9 @@ void HDF5Recording::addChannel(int index, Channel* chan)
processorMap.add(processorIndex);
}
void HDF5Recording::openFiles(File rootFolder, int recordingNumber)
void HDF5Recording::openFiles(File rootFolder, int experimentNumber, int recordingNumber)
{
String basepath = rootFolder.getFullPathName() + rootFolder.separatorString;
String basepath = rootFolder.getFullPathName() + rootFolder.separatorString + "experiment" + String(experimentNumber);
//KWIK file
mainFile->initFile(basepath);
mainFile->open();
......@@ -151,4 +150,10 @@ void HDF5Recording::addSpikeElectrode(int index, SpikeRecordInfo* elec)
void HDF5Recording::writeSpike(const SpikeObject& spike, int electrodeIndex)
{
//TODO
}
\ No newline at end of file
}
void HDF5Recording::startAcquisition()
{
mainFile = new KWIKFile();
}
......@@ -32,7 +32,7 @@ class HDF5Recording : public RecordEngine
public:
HDF5Recording();
~HDF5Recording();
void openFiles(File rootFolder, int recordingNumber);
void openFiles(File rootFolder, int experimentNumber, int recordingNumber);
void closeFiles();
void writeData(AudioSampleBuffer& buffer, int nSamples);
void writeEvent(MidiMessage& event, int samplePosition);
......@@ -42,6 +42,7 @@ public:
void registerProcessor(GenericProcessor* processor);
void resetChannels();
void updateTimeStamp(int64 timestamp);
void startAcquisition();
private:
......
......@@ -25,7 +25,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "../Audio/AudioComponent.h"
OriginalRecording::OriginalRecording() : separateFiles(true), eventFile(nullptr),
recordingNumber(0), zeroBuffer(1, 50000), blockIndex(0)
recordingNumber(0), experimentNumber(0), zeroBuffer(1, 50000), blockIndex(0)
{
continuousDataIntegerBuffer = new int16[10000];
continuousDataFloatBuffer = new float[10000];
......@@ -73,9 +73,10 @@ void OriginalRecording::resetChannels()
spikeFileArray.clear();
}
void OriginalRecording::openFiles(File rootFolder, int recordingNumber)
void OriginalRecording::openFiles(File rootFolder, int experimentNumber, int recordingNumber)
{
this->recordingNumber = recordingNumber;
this->experimentNumber = experimentNumber;
openFile(rootFolder,nullptr);
for (int i = 0; i < fileArray.size(); i++)
{
......@@ -101,7 +102,7 @@ void OriginalRecording::openFile(File rootFolder, Channel* ch)
isEvent = (ch == nullptr) ? true : false;
if (isEvent)
fullPath += "all_channels.events";
fullPath += "experiment" + String(experimentNumber) + "_all_channels.events";
else
fullPath += getFileName(ch);
......@@ -148,6 +149,7 @@ void OriginalRecording::openSpikeFile(File rootFolder, SpikeRecordInfo* elec)
FILE* spFile;
String fullPath(rootFolder.getFullPathName() + rootFolder.separatorString);
fullPath += "experiment" + String(experimentNumber) + "_";
fullPath += elec->name.removeCharacters(" ");
fullPath += ".spikes";
......@@ -175,6 +177,7 @@ String OriginalRecording::getFileName(Channel* ch)
{
String filename;
filename += "experiment" + String(experimentNumber) + "_";
filename += ch->nodeId;
filename += "_";
filename += ch->name;
......
......@@ -38,7 +38,7 @@ public:
OriginalRecording();
~OriginalRecording();
void openFiles(File rootFolder, int recordingNumber);
void openFiles(File rootFolder, int experimentNumber, int recordingNumber);
void closeFiles();
void writeData(AudioSampleBuffer& buffer, int nSamples);
void writeEvent(MidiMessage& event, int samplePosition);
......@@ -62,6 +62,7 @@ private:
bool separateFiles;
int blockIndex;
int recordingNumber;
int experimentNumber;
/** Holds data that has been converted from float to int16 before
saving.
......
......@@ -50,4 +50,8 @@ SpikeRecordInfo* RecordEngine::getSpikeElectrode(int index)
void RecordEngine::updateTimeStamp(int64 timestamp) {}
void RecordEngine::registerSpikeSource(GenericProcessor* processor) {}
\ No newline at end of file
void RecordEngine::registerSpikeSource(GenericProcessor* processor) {}
void RecordEngine::startAcquisition() {}
void RecordEngine::directoryChanged() {}
\ No newline at end of file
......@@ -46,7 +46,7 @@ public:
RecordEngine();
~RecordEngine();
virtual void openFiles(File rootFolder, int recordingNumber) =0;
virtual void openFiles(File rootFolder, int experimentNumber, int recordingNumber) =0;
virtual void closeFiles() =0;
virtual void writeData(AudioSampleBuffer& buffer, int nSamples) =0;
virtual void writeEvent(MidiMessage& event, int samplePosition) =0;
......@@ -57,6 +57,8 @@ public:
virtual void registerSpikeSource(GenericProcessor* processor);
virtual void resetChannels();
virtual void updateTimeStamp(int64 timestamp);
virtual void startAcquisition();
virtual void directoryChanged();
protected:
Channel* getChannel(int index);
......
......@@ -51,6 +51,9 @@ RecordNode::RecordNode()
spikeElectrodeIndex = 0;
experimentNumber = 0;
hasRecorded = false;
// 128 inputs, 0 outputs
setPlayConfigDetails(getNumInputs(),getNumOutputs(),44100.0,128);
......@@ -262,12 +265,15 @@ void RecordNode::setParameter(int parameterIndex, float newValue)
{
isRecording = true;
hasRecorded = true;
// std::cout << "START RECORDING." << std::endl;
if (newDirectoryNeeded)
{
createNewDirectory();
recordingNumber = 0;
experimentNumber = 1;
EVERY_ENGINE->directoryChanged();
}
else
{
......@@ -281,7 +287,7 @@ void RecordNode::setParameter(int parameterIndex, float newValue)
getEditorViewport()->saveState(File(settingsFileName));
}
EVERY_ENGINE->openFiles(rootFolder, recordingNumber);
EVERY_ENGINE->openFiles(rootFolder, experimentNumber, recordingNumber);
allFilesOpened = true;
......@@ -344,7 +350,15 @@ void RecordNode::closeAllFiles()
bool RecordNode::enable()
{
if (hasRecorded)
{
hasRecorded = false;
experimentNumber++;
}
//When starting a recording, if a new directory is needed it gets rewritten. Else is incremented by one.
recordingNumber = -1;
EVERY_ENGINE->startAcquisition();
isProcessing = true;
return true;
}
......
......@@ -170,7 +170,10 @@ private:
OwnedArray<SpikeRecordInfo> spikeElectrodePointers;
int spikeElectrodeIndex;;
int spikeElectrodeIndex;
int experimentNumber;
bool hasRecorded;
/** Generates a default directory name, based on the current date and time */
String generateDirectoryName();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment