Recorder Parent¶
This module contains the abstract class to implement a proper Recorder Class. To do so, subclass RecorderParent when creating a new Recorder class.
- Example:
from RecorderParent import RecorderParent
- class newRecorder(RecorderParent):
If you have PyQt, it will import RecEmitter for emitting Signals.
Attributes¶
QT_EMITTER : Indicates whether you can use qt Signals
-
class
cued_datalogger.acquisition.RecorderParent.RecorderParent(channels=1, rate=44100, chunk_size=1024, num_chunk=4)¶ Bases:
objectRecorder abstract class. Sets up the buffer and skeleton for audio streaming
Attributes
channels: int Number of Channels rate: int Sampling rate chunk_size: int Number of samples to get from each channel in one chunk num_chunk: int Number of chunks to store in circular buffer recording: bool Indicate whether to record Methods
-
allocate_buffer()¶ Set up the circular buffer
-
audiodata_to_array(data)¶ Convert audio data obtained into a proper array
Parameters: data: Numpy Array
Audio data
-
available_devices()¶ Displays all available device for streaming
-
chunk_size¶ - int
- Number of samples to get from each channel in one chunk The setter method will calculate the maximum possible size based on an arbitrary number of sample limit (2^25 in here)
-
close()¶ Close the audio object, to be called if streaming is no longer needed
-
current_device_info()¶ Displays information about available the current device set
-
flush_record_data()¶ Add in any partial posttrigger data Slice the recorded data into the requested amount of samples Add in any pretrigger data
Returns: flushed_data: numpy array
2D numpy array (similar to get_buffer)
-
get_buffer()¶ Convert the buffer data as a 2D array by stitching the chunks together
Returns: Buffer data: Numpy Array
with dimension of(chunk_size * num_chunk) x channels The newest data on the most right
-
num_chunk¶ - int
- Number of chunks to store in circular buffer The setter method will calculate the maximum possible number of chunks based on an arbitrary number of sample limit (2^25 in here)
-
open_recorder()¶ Initialise the variables for recording.
-
record_cancel()¶ Cancel a recording and clear any recorder data
-
record_data(data)¶ Append recorded chunk to recorder_data and stop doing so if neccessary amount of chunks is recorded
-
record_init(samples=None, duration=3)¶ Remove any pretrigger and postrigger data Calculate the number of chunk to record It will record more samples than necessary, then slice down to the amount of samples required + putting in pretrigger data
Parameters: samples: int
Number of samples to record
duration: int
The recording duration
-
record_start()¶ Start recording if it is possible
Returns: bool
True if possible, False otherwise
-
set_device_by_name(name)¶ Set the device to be used for audio streaming
-
show_stream_settings()¶ Show the settings of the recorder
-
stream_close()¶ Callback function for closing the audio streaming.
-
stream_init(playback=False)¶ Callback function for initialising audio streaming.
Parameters: playback: bool
Whether to output the stream to a device
Returns: bool
True if successful, False otherwise
-
stream_start()¶ Callback function for starting the audio streaming.
-
stream_stop()¶ Callback function for stopping the audio streaming.
-
trigger_init()¶ Initialise the variable for the trigger recording
-
trigger_start(duration=3, threshold=0.09, channel=0, pretrig=200, posttrig=5000)¶ Start the trigger if possible
Returns: bool
True if successful, False otherwise
-
write_buffer(data)¶ Write the data obtained into buffer and move to the next chunk
Parameters: data: Numpy Array
Audio data
-