public class ASIOSoundSystem extends DaqSystem implements PamSettings
DaqSystem
,
AcquisitionProcess
PARAMETER_FIXED, PARAMETER_UNKNOWN, STREAM_CLOSED, STREAM_ENDED, STREAM_OPEN, STREAM_PAUSED, STREAM_RUNNING
Constructor and Description |
---|
ASIOSoundSystem(AcquisitionControl acquisitionControl) |
Modifier and Type | Method and Description |
---|---|
boolean |
areSampleSettingsOk(int numInputsRequested,
float sampleRateRequested) |
boolean |
canPlayBack(float sampleRate) |
void |
daqHasEnded()
Called after DAQ has stopped - for whatever reason.
|
boolean |
dialogGetParams()
Called by AcquisitionDialog.GetParams so that parameters can be extracted from the dialog
component.
|
void |
dialogSetParams()
Called by AcquisitionDialog.SetParams so that the dialog componenet can update it's
fields
|
int |
getChannels() |
javax.swing.JPanel |
getDaqSpecificDialogComponent(AcquisitionDialog acquisitionDialog)
The AcquisitionDialog has been designed to that each data source type can plug
in it's own panel of device specific controls.
|
int |
getDataUnitSamples() |
java.lang.String |
getDeviceName()
Gets a name for the acquisition device (may just be a number
but need to generalise).
|
java.util.ArrayList<AsioDriverInfo> |
getDevicesList() |
int |
getMaxChannels() |
int |
getMaxSampleRate() |
double |
getPeak2PeakVoltage(int swChannel) |
PlaybackSystem |
getPlaybackSystem(PlaybackControl playbackControl,
DaqSystem daqSystem)
Gets a playback system for playing sound back out through headphones / speakers, etc.
|
static short |
getSample(byte[] buffer,
int position) |
int |
getSampleBits()
Get the number of bits in each sample.
|
java.io.Serializable |
getSettingsReference() |
long |
getSettingsVersion() |
java.lang.String |
getSystemName() |
java.lang.String |
getSystemType() |
java.lang.String |
getUnitName() |
java.lang.String |
getUnitType() |
boolean |
isRealTime() |
boolean |
newASIOData(double[] data,
int channel) |
boolean |
preparePlayback(int channels,
float sampleRate) |
boolean |
prepareSystem(AcquisitionControl daqControl)
Prepare the DaqSystem.
|
boolean |
restoreSettings(PamControlledUnitSettings pamControlledUnitSettings) |
void |
showSampleSettingsDialog(AcquisitionDialog acquisitionDialog) |
boolean |
startSystem(AcquisitionControl daqControl)
Start the DaqSystem.
|
void |
stopSystem(AcquisitionControl daqControl)
Stop the DaqSystem.
|
boolean |
supportsChannelLists() |
fillXMLParameters, getChannelGain, getDaqSpecificChannelListPanel, getInputChannelMap, getStatusBarComponent, getStreamStatus, setSelected, setStreamStatus
public ASIOSoundSystem(AcquisitionControl acquisitionControl)
public boolean prepareSystem(AcquisitionControl daqControl)
DaqSystem
Usually this is the time for opening files, preparing data buffers, etc.
prepareSystem
in class DaqSystem
daqControl
- AcquisitionControl unit.public int getDataUnitSamples()
getDataUnitSamples
in class DaqSystem
public boolean preparePlayback(int channels, float sampleRate)
public boolean areSampleSettingsOk(int numInputsRequested, float sampleRateRequested)
areSampleSettingsOk
in class DaqSystem
public void showSampleSettingsDialog(AcquisitionDialog acquisitionDialog)
showSampleSettingsDialog
in class DaqSystem
public boolean startSystem(AcquisitionControl daqControl)
DaqSystem
Most things should be ready from the call to PrepareSystem. In StartSystem you will generally need to start a thread which will read in the data and place PamDataUnits in a buffer from where they are read by the main thred and passed on to other Pam modules for processing (see SoundCardSystem for an example)
startSystem
in class DaqSystem
daqControl
- AcquisitionControl unit.public void stopSystem(AcquisitionControl daqControl)
DaqSystem
stopSystem
in class DaqSystem
public javax.swing.JPanel getDaqSpecificDialogComponent(AcquisitionDialog acquisitionDialog)
DaqSystem
The AcquisitionDialog will handle placing this component on the dialog when a particular DaqSystem is selected. The component will be placed between a drop down list of available DaqSystem's and a section of the dialog showing the sample rate and number of channels.
getDaqSpecificDialogComponent
in class DaqSystem
acquisitionDialog
- the AcquisitionDialog this component will be added topublic java.util.ArrayList<AsioDriverInfo> getDevicesList()
public void dialogSetParams()
DaqSystem
dialogSetParams
in class DaqSystem
public boolean dialogGetParams()
DaqSystem
dialogGetParams
in class DaqSystem
public java.lang.String getSystemType()
getSystemType
in class DaqSystem
Calling functions should be able to handle 'null'
public java.lang.String getSystemName()
getSystemName
in class DaqSystem
public int getMaxChannels()
getMaxChannels
in class DaqSystem
public int getMaxSampleRate()
getMaxSampleRate
in class DaqSystem
public double getPeak2PeakVoltage(int swChannel)
getPeak2PeakVoltage
in class DaqSystem
public boolean isRealTime()
isRealTime
in class DaqSystem
public boolean canPlayBack(float sampleRate)
canPlayBack
in class DaqSystem
public PlaybackSystem getPlaybackSystem(PlaybackControl playbackControl, DaqSystem daqSystem)
DaqSystem
Generally, anything acquiring data in real time should play the sound back through itself so that clocks are correctly synchronised. i.e. A sound card input will go to the same sound card output, etc. At a later date, we may try to support output through different devices at different speeds - but this will be problematic !
If data are being read from a file, then playback is through a sound card which sits in a stand alone implementation of PlaybackSystem
getPlaybackSystem
in class DaqSystem
PlaybackSystem
,
FilePlayback
public int getChannels()
public java.io.Serializable getSettingsReference()
getSettingsReference
in interface PamSettings
public long getSettingsVersion()
getSettingsVersion
in interface PamSettings
public java.lang.String getUnitName()
getUnitName
in interface PamSettings
public java.lang.String getUnitType()
getUnitType
in interface PamSettings
public boolean restoreSettings(PamControlledUnitSettings pamControlledUnitSettings)
restoreSettings
in interface PamSettings
public boolean newASIOData(double[] data, int channel)
public static short getSample(byte[] buffer, int position)
public void daqHasEnded()
DaqSystem
daqHasEnded
in class DaqSystem
public boolean supportsChannelLists()
supportsChannelLists
in class DaqSystem
public java.lang.String getDeviceName()
DaqSystem
getDeviceName
in class DaqSystem
public int getSampleBits()
DaqSystem
getSampleBits
in class DaqSystem