Skip to content

Commit 700b38f

Browse files
committed
Convert synchronized timestamps to doubles instead of floats
1 parent 6c9cb9b commit 700b38f

13 files changed

Lines changed: 33 additions & 26 deletions

File tree

JuceLibraryCode/modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,5 +1069,8 @@ class AudioBuffer
10691069
*/
10701070
typedef AudioBuffer<float> AudioSampleBuffer;
10711071

1072+
// Add AudioBuffer of doubles to hold synchronized timestamps
1073+
typedef AudioBuffer<double> SynchronizedTimestampBuffer;
1074+
10721075

10731076
#endif // JUCE_AUDIOSAMPLEBUFFER_H_INCLUDED

Source/Processors/RecordNode/BinaryFormat/BinaryRecording.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ void BinaryRecording::openFiles(File rootFolder, int experimentNumber, int recor
104104
ScopedPointer<NpyFile> tFile = new NpyFile(contPath + datPath + "timestamps.npy", NpyType(BaseType::INT64,1));
105105
m_dataTimestampFiles.add(tFile.release());
106106

107-
ScopedPointer<NpyFile> ftsFile = new NpyFile(contPath + datPath + "synchronized_timestamps.npy", NpyType(BaseType::FLOAT,1));
107+
ScopedPointer<NpyFile> ftsFile = new NpyFile(contPath + datPath + "synchronized_timestamps.npy", NpyType(BaseType::DOUBLE,1));
108108
m_dataFloatTimestampFiles.add(ftsFile.release());
109109

110110
m_fileIndexes.set(recordedChan, nInfoArrays);
@@ -513,7 +513,7 @@ void BinaryRecording::increaseEventCounts(EventRecording* rec)
513513
if (rec->metaDataFile) rec->metaDataFile->increaseRecordCount();
514514
}
515515

516-
void BinaryRecording::writeSynchronizedData(int writeChannel, int realChannel, const float* dataBuffer, const float* ftsBuffer, int size)
516+
void BinaryRecording::writeSynchronizedData(int writeChannel, int realChannel, const float* dataBuffer, const double* ftsBuffer, int size)
517517
{
518518

519519
if (!size)
@@ -558,7 +558,7 @@ void BinaryRecording::writeSynchronizedData(int writeChannel, int realChannel, c
558558

559559
//LOGD("BinaryRecording::writeSynchronizedData: ", *ftsBuffer);
560560

561-
m_dataFloatTimestampFiles[fileIndex]->writeData(ftsBuffer, size*sizeof(float));
561+
m_dataFloatTimestampFiles[fileIndex]->writeData(ftsBuffer, size*sizeof(double));
562562
m_dataFloatTimestampFiles[fileIndex]->increaseRecordCount(size);
563563

564564
}

Source/Processors/RecordNode/BinaryFormat/BinaryRecording.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class BinaryRecording : public RecordEngine
2121
void closeFiles() override;
2222
void resetChannels() override;
2323
void writeData(int writeChannel, int realChannel, const float* buffer, int size) override;
24-
void writeSynchronizedData(int writeChannel, int realChannel, const float* dataBuffer, const float* ftsBuffer, int size) override;
24+
void writeSynchronizedData(int writeChannel, int realChannel, const float* dataBuffer, const double* ftsBuffer, int size) override;
2525
void writeEvent(int eventIndex, const MidiMessage& event) override;
2626
void addSpikeElectrode(int index, const SpikeChannel* elec) override;
2727
void writeSpike(int electrodeIndex, const SpikeEvent* spike) override;

Source/Processors/RecordNode/DataQueue.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ void DataQueue::fillTimestamps(int channel, int index, int size, int64 timestamp
134134
}
135135
}
136136

137-
void DataQueue::writeSynchronizedTimestampChannel(float start, float step, int destChannel, int64 nSamples)
137+
void DataQueue::writeSynchronizedTimestampChannel(double start, double step, int destChannel, int64 nSamples)
138138
{
139139

140140
int index1, size1, index2, size2;
@@ -153,7 +153,7 @@ void DataQueue::writeSynchronizedTimestampChannel(float start, float step, int d
153153
for (int i = 0; i < size1; i++)
154154
{
155155
//LOGD("setSample: ", start + (float)i*step);
156-
m_FTSBuffer.setSample(destChannel, index1+i, start+(float)i*step);
156+
m_FTSBuffer.setSample(destChannel, index1+i, start+(double)i*step);
157157
//LOGD("Set sample ", index1+i, " to ", start);
158158
//m_FTSBuffer.setSample(destChannel, index1+i, start + (float)i*step);
159159
}
@@ -163,7 +163,7 @@ void DataQueue::writeSynchronizedTimestampChannel(float start, float step, int d
163163
for (int i = 0; i < size2; i++)
164164
{
165165
//m_FTSBuffer.setSample(destChannel, index2+i, start + (float)i*step);
166-
m_FTSBuffer.setSample(destChannel, index2 + i, start+(float)size1*step + float(i*step));
166+
m_FTSBuffer.setSample(destChannel, index2 + i, start+(double)size1*step + double(i*step));
167167
}
168168
}
169169

@@ -217,7 +217,7 @@ const AudioSampleBuffer& DataQueue::getAudioBufferReference() const
217217
return m_buffer;
218218
}
219219

220-
const AudioSampleBuffer& DataQueue::getFTSBufferReference() const
220+
const SynchronizedTimestampBuffer& DataQueue::getFTSBufferReference() const
221221
{
222222
return m_FTSBuffer;
223223
}

Source/Processors/RecordNode/DataQueue.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@ class DataQueue
5050
//Only the methods after this comment are considered thread-safe.
5151
//Caution must be had to avoid calling more than one of the methods above simulatenously
5252
void writeChannel(const AudioSampleBuffer& buffer, int srcChannel, int destChannel, int nSamples, int64 timestamp);
53-
void writeSynchronizedTimestampChannel(float start, float step, int destChannel, int64 nSamples);
53+
void writeSynchronizedTimestampChannel(double start, double step, int destChannel, int64 nSamples);
5454
bool startRead(Array<CircularBufferIndexes>& indexes, Array<int64>& timestamps, int nMax);
5555
bool startSynchronizedRead(Array<CircularBufferIndexes>& dataIndexes, Array<CircularBufferIndexes>& ftsIndexes, Array<int64>& timestamps, int nMax);
5656
const AudioSampleBuffer& getAudioBufferReference() const;
57-
const AudioSampleBuffer& getFTSBufferReference() const;
57+
const SynchronizedTimestampBuffer& getFTSBufferReference() const;
5858
void stopRead();
5959
void stopSynchronizedRead();
6060

@@ -67,7 +67,7 @@ class DataQueue
6767
OwnedArray<AbstractFifo> m_FTSFifos;
6868

6969
AudioSampleBuffer m_buffer;
70-
AudioSampleBuffer m_FTSBuffer;
70+
SynchronizedTimestampBuffer m_FTSBuffer;
7171

7272
Array<int> m_readSamples;
7373
Array<int> m_readFTSSamples;

Source/Processors/RecordNode/OpenEphysFormat/OriginalRecording.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ void OriginalRecording::writeTTLEvent(int eventIndex, const MidiMessage& event)
445445
diskWriteLock.exit();
446446
}
447447

448-
void OriginalRecording::writeSynchronizedData(int writeChannel, int realChannel, const float* dataBuffer, const float* ftsBuffer, int size) {};
448+
void OriginalRecording::writeSynchronizedData(int writeChannel, int realChannel, const float* dataBuffer, const double* ftsBuffer, int size) {};
449449

450450
void OriginalRecording::writeData(int writeChannel, int realChannel, const float* buffer, int size)
451451
{

Source/Processors/RecordNode/OpenEphysFormat/OriginalRecording.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class OriginalRecording : public RecordEngine
4747
void openFiles(File rootFolder, int experimentNumber, int recordingNumber) override;
4848
void closeFiles() override;
4949
void writeData(int writeChannel, int realChannel, const float* buffer, int size) override;
50-
void writeSynchronizedData(int writeChannel, int realChannel, const float* dataBuffer, const float* ftsBuffer, int size) override;
50+
void writeSynchronizedData(int writeChannel, int realChannel, const float* dataBuffer, const double* ftsBuffer, int size) override;
5151
void writeEvent(int eventIndex, const MidiMessage& event) override;
5252
void resetChannels() override;
5353
void addSpikeElectrode(int index, const SpikeChannel* elec) override;

Source/Processors/RecordNode/RecordEngine.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class PLUGIN_API RecordEngine
103103
virtual void writeData(int writeChannel, int realChannel, const float* buffer, int size) = 0;
104104

105105
/** Write continuous data for a channel with synchronized float timestamps */
106-
virtual void writeSynchronizedData(int writeChannel, int realChannel, const float* dataBuffer, const float* ftsBuffer, int size) = 0;
106+
virtual void writeSynchronizedData(int writeChannel, int realChannel, const float* dataBuffer, const double* ftsBuffer, int size) = 0;
107107

108108
/** Called by the record thread after it has written a channel block */
109109
virtual void endChannelBlock(bool lastBlock);

Source/Processors/RecordNode/RecordNode.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -587,8 +587,8 @@ void RecordNode::process(AudioSampleBuffer& buffer)
587587

588588
if (isFirstChannelInRecordedSubprocessor(channelMap[ch]))
589589
{
590-
float first = synchronizer->convertTimestamp(sourceID, subProcIdx, timestamp);
591-
float second = synchronizer->convertTimestamp(sourceID, subProcIdx, timestamp + 1);
590+
double first = synchronizer->convertTimestamp(sourceID, subProcIdx, timestamp);
591+
double second = synchronizer->convertTimestamp(sourceID, subProcIdx, timestamp + 1);
592592
dataQueue->writeSynchronizedTimestampChannel(first, second - first, ftsChannelMap[ch], numSamples);
593593
}
594594

Source/Processors/RecordNode/RecordThread.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ void RecordThread::setFirstBlockFlag(bool state)
8989
void RecordThread::run()
9090
{
9191
const AudioSampleBuffer& dataBuffer = m_dataQueue->getAudioBufferReference();
92-
const AudioSampleBuffer& ftsBuffer = m_dataQueue->getFTSBufferReference();
92+
const SynchronizedTimestampBuffer& ftsBuffer = m_dataQueue->getFTSBufferReference();
9393

9494
bool closeEarly = true;
9595
//1-Wait until the first block has arrived, so we can align the timestamps
@@ -147,7 +147,7 @@ void RecordThread::run()
147147

148148
}
149149

150-
void RecordThread::writeSynchronizedData(const AudioSampleBuffer& dataBuffer, const AudioSampleBuffer& ftsBuffer, int maxSamples, int maxEvents, int maxSpikes, bool lastBlock)
150+
void RecordThread::writeSynchronizedData(const AudioSampleBuffer& dataBuffer, const SynchronizedTimestampBuffer& ftsBuffer, int maxSamples, int maxEvents, int maxSpikes, bool lastBlock)
151151
{
152152

153153
Array<int64> timestamps;

0 commit comments

Comments
 (0)