The master device is that last one to bestarted after all stimuli are loaded for all devices. Thisfeature can be used when using triggers to synchronizedevices.
Diagram
Type
xs:IDREF
Properties
content
simple
minOccurs
0
maxOccurs
1
Source
<xs:element name="master" type="xs:IDREF" minOccurs="0" maxOccurs="1"><xs:annotation><xs:documentation>The master device is that last one to be started after all stimuli are loaded for all devices. This feature can be used when using triggers to synchronize devices.</xs:documentation></xs:annotation></xs:element>
<xs:element name="device" type="apex:deviceType" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>All real devices derive from this base.</xs:documentation></xs:annotation></xs:element>
ASIO is a proprietary windows/mac-only audioframework by Steinberg. Use it if low latency/more then2 channels is required.
enumeration
coreaudio
CoreAudio is MacOsX' audio framework.
enumeration
jack
Jack is a cross-platform audioframework. A jack connection will be made to the "drivername" specified in the main config file.
Source
<xs:element name="driver" minOccurs="0"><xs:annotation><xs:documentation>Driver architecture to be used for sound output</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="dummy"><xs:annotation><xs:documentation>Dummy soundcard</xs:documentation></xs:annotation></xs:enumeration><xs:enumeration value="portaudio"><xs:annotation><xs:documentation>Portaudio is a cross-platform audio framework</xs:documentation></xs:annotation></xs:enumeration><xs:enumeration value="qtaudio"><xs:annotation><xs:documentation>Qt Multimedia framework</xs:documentation></xs:annotation></xs:enumeration><xs:enumeration value="asio"><xs:annotation><xs:documentation>ASIO is a proprietary windows/mac-only audio framework by Steinberg. Use it if low latency/more then 2 channels is required.</xs:documentation></xs:annotation></xs:enumeration><xs:enumeration value="coreaudio"><xs:annotation><xs:documentation>CoreAudio is MacOsX' audio framework.</xs:documentation></xs:annotation></xs:enumeration><xs:enumeration value="jack"><xs:annotation><xs:documentation>Jack is a cross-platform audio framework. A jack connection will be made to the "drivername" specified in the main config file.</xs:documentation></xs:annotation></xs:enumeration></xs:restriction></xs:simpleType></xs:element>
Name of the soundcard to be used. Cards are defined inthe main config file. Every soundcard in the system can beenumerated in the main configfile. Use the ID defined there.Otherwise the "default" card can be used.
Diagram
Type
xs:string
Properties
content
simple
minOccurs
0
Source
<xs:element name="card" type="xs:string" minOccurs="0"><xs:annotation><xs:documentation>Name of the soundcard to be used. Cards are defined in the main config file. Every soundcard in the system can be enumerated in the main configfile. Use the ID defined there. Otherwise the "default" card can be used.</xs:documentation></xs:annotation></xs:element>
Number of output channels to be used. This isrestricted by the selected driver, with a maximum of 2 forportaudio.
Diagram
Type
xs:positiveInteger
Properties
content
simple
Source
<xs:element name="channels" type="xs:positiveInteger"><xs:annotation><xs:documentation>Number of output channels to be used. This is restricted by the selected driver, with a maximum of 2 for portaudio.</xs:documentation></xs:annotation></xs:element>
Used to specify a single channel to apply gain to,instead of applying it to all channels at once.For example, for an amplifier having two channels, these are set independently by using <gain id="ch0" channel="0">-3.00</gain><gain id="ch1" channel="1">-6.00</gain> Channels are zero based, ie the first channel is 0, thesecond 1 and so on.
<xs:element name="gain" type="apex:channelGainType" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>Final gain of the device, implemented with a software mixer.</xs:documentation></xs:annotation></xs:element>
Sample rate of the device. Warning: not all samplerates are supported by all devices and some drivers automaticallyconvert to other sample rates. Check your sound carddocumentation.
Diagram
Type
restriction of xs:string
Properties
content
simple
Facets
enumeration
16000
enumeration
44100
enumeration
96000
enumeration
32000
enumeration
48000
enumeration
8000
enumeration
22050
enumeration
72000
Source
<xs:element name="samplerate"><xs:annotation><xs:documentation>Sample rate of the device. Warning: not all sample rates are supported by all devices and some drivers automatically convert to other sample rates. Check your sound card documentation.</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="16000"/><xs:enumeration value="44100"/><xs:enumeration value="96000"/><xs:enumeration value="32000"/><xs:enumeration value="48000"/><xs:enumeration value="8000"/><xs:enumeration value="22050"/><xs:enumeration value="72000"/></xs:restriction></xs:simpleType></xs:element>
Applies to the soundcard buffer size, not the internal apex buffer size.Larger sizes aremore efficient, smaller sizes have smaller latencies.Some notes: for asio, latency is always ( 2 * buffersize + overhead ) / samplerate.The overhead is very small, eg 16 samples for an Rme Multiface.Portaudio however always uses a number of internal buffers, mostly 4. Hence, actual latencyis ( 2 * 4 * buffersize + overhead ) / samplerate.For asio/jack: must be set to the system buffer size.
Diagram
Type
xs:positiveInteger
Properties
content
simple
minOccurs
0
Source
<xs:element name="buffersize" minOccurs="0" type="xs:positiveInteger"><xs:annotation><xs:documentation>Applies to the soundcard buffer size, not the internal apex buffer size. Larger sizes are more efficient, smaller sizes have smaller latencies. Some notes: for asio, latency is always ( 2 * buffersize + overhead ) / samplerate. The overhead is very small, eg 16 samples for an Rme Multiface. Portaudio however always uses a number of internal buffers, mostly 4. Hence, actual latency is ( 2 * 4 * buffersize + overhead ) / samplerate. For asio/jack: must be set to the system buffer size.</xs:documentation></xs:annotation></xs:element>
Applies to the block size that is used in the internal apex audio streams (for filters etc.).Larger sizes are more efficient, smaller sizes have smaller latencies. If not defined, the soundcard buffersize will be used.
Diagram
Type
xs:positiveInteger
Properties
content
simple
minOccurs
0
Source
<xs:element name="blocksize" minOccurs="0" type="xs:positiveInteger"><xs:annotation><xs:documentation>Applies to the block size that is used in the internal apex audio streams (for filters etc.). Larger sizes are more efficient, smaller sizes have smaller latencies. If not defined, the soundcard buffersize will be used.</xs:documentation></xs:annotation></xs:element>
Size of internal apex sound buffer in seconds. This buffer ensures that no bufferunderruns occur. The default value is 1s. If continuous filters are used, the system will needthis amount of seconds before the next stimulus can be output.Note that the value in seconds is rounded down to the nearest multiple of 8192 samples(the buffersize used to fill the buffer):so using 1 second here, with a samplerate of 44100, the actual amount of time will be40960 samples / 44100 samples/sec = 0.9 seconds. If a buffersize smaller than 16384 samples is specified, a buffer of 16384 samples will be used.
Diagram
Type
restriction of xs:decimal
Properties
content
simple
minOccurs
0
Facets
maxInclusive
60
minExclusive
0
Source
<xs:element name="buffersize_apex" minOccurs="0"><xs:annotation><xs:documentation>Size of internal apex sound buffer in seconds. This buffer ensures that no buffer underruns occur. The default value is 1s. If continuous filters are used, the system will need this amount of seconds before the next stimulus can be output. Note that the value in seconds is rounded down to the nearest multiple of 8192 samples (the buffersize used to fill the buffer): so using 1 second here, with a samplerate of 44100, the actual amount of time will be 40960 samples / 44100 samples/sec = 0.9 seconds. If a buffersize smaller than 16384 samples is specified, a buffer of 16384 samples will be used.</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:decimal"><xs:minExclusive value="0"/><xs:maxInclusive value="60"/></xs:restriction></xs:simpleType><!--xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="0.5"/>
<xs:enumeration value="1"/>
<xs:enumeration value="1.5"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
<xs:enumeration value="4"/>
<xs:enumeration value="5"/>
<xs:enumeration value="10"/>
</xs:restriction>
</xs:simpleType--></xs:element>
If smaller than 16: add padzero*8196 samples to the end of each stream. If larger than 16: add padzero samples to the end of each stream. This avoids dropping of the last N frames on some soundcards (notoriously LynxOne and FirefaceUC)
Diagram
Type
xs:nonNegativeInteger
Properties
content
simple
minOccurs
0
Source
<xs:element name="padzero" type="xs:nonNegativeInteger" minOccurs="0"><xs:annotation><xs:documentation>If smaller than 16: add padzero*8196 samples to the end of each stream. If larger than 16: add padzero samples to the end of each stream. This avoids dropping of the last N frames on some soundcards (notoriously LynxOne and FirefaceUC)</xs:documentation></xs:annotation></xs:element>
<xs:element name="cisim" type="apex:cisimType" minOccurs="0"><xs:annotation><xs:documentation>Parameters for automatic CI simulation</xs:documentation></xs:annotation></xs:element>
Device identifier. For NIC 2, this identifier consists of three parts: the device type (e.g. l34) , the implant type (e.g. cic3, cic4) and the device number (e.g. 1, ordered according to the assigned COM port, device 0 is a simulated device).
Diagram
Type
xs:string
Properties
content
simple
Source
<xs:element name="device" type="xs:string"><xs:annotation><xs:documentation>Device identifier. For NIC 2, this identifier consists of three parts: the device type (e.g. l34) , the implant type (e.g. cic3, cic4) and the device number (e.g. 1, ordered according to the assigned COM port, device 0 is a simulated device).</xs:documentation></xs:annotation></xs:element>
Generate or use a trigger from the audio port.Currently the trigger button status is not checked (nicv2 doesn'tallow this yet)
Diagram
Type
restriction of xs:string
Properties
content
simple
Facets
enumeration
in
enumeration
out
enumeration
none
Source
<xs:element name="trigger"><xs:annotation><xs:documentation>Generate or use a trigger from the audio port. Currently the trigger button status is not checked (nicv2 doesn't allow this yet)</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="in"/><xs:enumeration value="out"/><xs:enumeration value="none"/></xs:restriction></xs:simpleType></xs:element>
Number of powerup pulses to send.No powerup pulses will be sent if this is setto 0.
Diagram
Type
xs:nonNegativeInteger
Properties
content
simple
minOccurs
0
default
4000
Source
<xs:element name="powerup_count" minOccurs="0" default="4000" type="xs:nonNegativeInteger"><xs:annotation><xs:documentation>Number of powerup pulses to send. No powerup pulses will be sent if this is set to 0.</xs:documentation></xs:annotation></xs:element>
<xs:element name="volume" minOccurs="0"><xs:complexType><xs:annotation><xs:documentation>Volume parameter for Cochlear device. The current level (in clinical units) is calculated according the following formula: round(t + (c-t) * volume/100 * mag) Where: t=treshold level c=comfort level volume=current value of volume parameter mag=magnitude [0,1]</xs:documentation></xs:annotation><xs:simpleContent><xs:extension base="apex:volumeParam"><xs:attributeGroup ref="apex:filterParam"/></xs:extension></xs:simpleContent></xs:complexType></xs:element>
<xs:element name="defaultmap"><xs:annotation><xs:documentation>Defines the default subject map to be used</xs:documentation></xs:annotation><xs:complexType><xs:choice><xs:element name="inline" type="apex:CohMap"><xs:annotation><xs:documentation>The map is defined below</xs:documentation></xs:annotation></xs:element><xs:element name="from_r126"><xs:annotation><xs:documentation>The user can select the map from the R126 wizard. R126 is the clinical fitting software.</xs:documentation></xs:annotation></xs:element></xs:choice></xs:complexType></xs:element>
When using a Freedom processor, the maximum phasewidth is 429.8usWhen using an L34 processor, the maximum phasewidth is 434.4us
Diagram
Type
restriction of xs:double
Properties
content
simple
Facets
maxInclusive
434.4
minInclusive
25
Source
<xs:element name="pulsewidth"><xs:annotation><xs:documentation>When using a Freedom processor, the maximum phasewidth is 429.8us When using an L34 processor, the maximum phasewidth is 434.4us</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:double"><xs:minInclusive value="25"/><xs:maxInclusive value="434.4"/></xs:restriction></xs:simpleType></xs:element>
When using a Freedom processor, the maximum phase gap is 57usWhen using an L34 processor, the maximum phase gap is 58usWhen using a cic3 implant, the minimum phase gap is 8usWhen using a cic4 implant, the minimum phase gap is 7us
Diagram
Type
restriction of xs:double
Properties
content
simple
Facets
maxInclusive
58
minInclusive
7
Source
<xs:element name="pulsegap"><xs:annotation><xs:documentation>When using a Freedom processor, the maximum phase gap is 57us When using an L34 processor, the maximum phase gap is 58us When using a cic3 implant, the minimum phase gap is 8us When using a cic4 implant, the minimum phase gap is 7us</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:double"><xs:minInclusive value="7"/><xs:maxInclusive value="58"/></xs:restriction></xs:simpleType></xs:element>
When using a Freedom processor, the maximum period is 13078usWhen using an L34 processor, the maximum period is 13107usWhen using a cic3 implant, the minimum period is 70usWhen using a cic4 implant, the minimum period is 64.6us
Diagram
Type
restriction of xs:double
Properties
content
simple
Facets
maxInclusive
13107
minInclusive
64.6
Source
<xs:element name="period"><xs:annotation><xs:documentation>When using a Freedom processor, the maximum period is 13078us When using an L34 processor, the maximum period is 13107us When using a cic3 implant, the minimum period is 70us When using a cic4 implant, the minimum period is 64.6us</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:double"><xs:minInclusive value="64.6"/><xs:maxInclusive value="13107"/></xs:restriction></xs:simpleType></xs:element>
"all" will result in all pulses having triggers. "none" will result in no pulses having triggers."first" will result in the first pulses that needs mapping to have a trigger, the ones afterward will have no trigger.
Diagram
Type
restriction of xs:string
Properties
content
simple
minOccurs
0
default
none
Facets
enumeration
all
enumeration
none
enumeration
first
Source
<xs:element name="trigger" minOccurs="0" default="none"><xs:annotation><xs:documentation>"all" will result in all pulses having triggers. "none" will result in no pulses having triggers. "first" will result in the first pulses that needs mapping to have a trigger, the ones afterward will have no trigger.</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="all"/><xs:enumeration value="none"/><xs:enumeration value="first"/></xs:restriction></xs:simpleType></xs:element>
The user can select the map from the R126 wizard. R126 is the clinical fittingsoftware.
Diagram
Source
<xs:element name="from_r126"><xs:annotation><xs:documentation>The user can select the map from the R126 wizard. R126 is the clinical fitting software.</xs:documentation></xs:annotation></xs:element>
<xs:element name="filter" minOccurs="0" maxOccurs="unbounded" type="apex:filterType"><xs:annotation><xs:documentation>Every filter/generator derives from this base type. All filters to be used are defined here.</xs:documentation></xs:annotation></xs:element>
ID of the device to which this filter belongs. The mode of thefilter (online or offline) is determined by the device.
Diagram
Type
xs:IDREF
Properties
content
simple
Source
<xs:element name="device" type="xs:IDREF"><xs:annotation><xs:documentation>ID of the device to which this filter belongs. The mode of the filter (online or offline) is determined by the device.</xs:documentation></xs:annotation></xs:element>
<xs:element name="channels" type="xs:positiveInteger"><xs:annotation><xs:documentation>Number of channels</xs:documentation></xs:annotation></xs:element>
If continuous==true, the filter/generator keeps on runningbetween trials (ie while the user is entering input). Only makes sense forgenerators.
Diagram
Type
xs:boolean
Properties
content
simple
minOccurs
0
Source
<xs:element name="continuous" type="xs:boolean" minOccurs="0"><xs:annotation><xs:documentation>If continuous==true, the filter/generator keeps on running between trials (ie while the user is entering input). Only makes sense for generators.</xs:documentation><!-- FIXME: move to generator --></xs:annotation></xs:element>
Single pulse with peak amplitude = totalgain. The polarity is set using the "polarity"parameter.
Source
<xs:element name="type"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="noise"><xs:annotation><xs:documentation>White noise (this is NOT gaussian noise)</xs:documentation></xs:annotation></xs:enumeration><!--xs:enumeration value="square">
<xs:annotation>
<xs:documentation>Square wave with peak amplitude = total
gain</xs:documentation>
</xs:annotation>
</xs:enumeration--><xs:enumeration value="sinus"><xs:annotation><xs:documentation>Sinus with peak amplitude = total gain</xs:documentation></xs:annotation></xs:enumeration><!--xs:enumeration value="triangle">
<xs:annotation>
<xs:documentation>Triangle with peak amplitude = total
gain</xs:documentation>
</xs:annotation>
</xs:enumeration--><xs:enumeration value="singlepulse"><xs:annotation><xs:documentation>Single pulse with peak amplitude = total gain. The polarity is set using the "polarity" parameter.</xs:documentation></xs:annotation></xs:enumeration></xs:restriction></xs:simpleType></xs:element>
The total gain is basegain+gain. Basegain is usefulfor amplitude normalization between differentblocks
Diagram
Type
xs:double
Properties
content
simple
minOccurs
0
default
0
Source
<xs:element name="basegain" type="xs:double" default="0" minOccurs="0"><xs:annotation><xs:documentation>The total gain is basegain+gain. Basegain is useful for amplitude normalization between different blocks</xs:documentation></xs:annotation></xs:element>
Inverts the gain of the block (but not the basegain).Invertgain is useful for the attenuation of noise depending on an SNR
Diagram
Type
xs:boolean
Properties
content
simple
minOccurs
0
default
false
Source
<xs:element name="invertgain" type="xs:boolean" default="false" minOccurs="0"><xs:annotation><xs:documentation>Inverts the gain of the block (but not the basegain). Invertgain is useful for the attenuation of noise depending on an SNR</xs:documentation></xs:annotation></xs:element>
<xs:element name="gain" default="0" type="apex:gainparam"><xs:annotation><xs:documentation>The total gain is basegain+gain. Gain is a parameter that can be changed by other modules</xs:documentation></xs:annotation></xs:element>
<xs:element name="frequency" default="1000"><xs:annotation><xs:documentation>Frequency: only makes sense for sinus, square and triangle</xs:documentation></xs:annotation><xs:complexType><xs:simpleContent><xs:extension base="xs:nonNegativeInteger"><xs:attributeGroup ref="apex:filterParam"/></xs:extension></xs:simpleContent></xs:complexType></xs:element>
<xs:element name="phase" default="0"><xs:annotation><xs:documentation>Phase (rad): only makes sense for sinus, square and triangle</xs:documentation></xs:annotation><xs:complexType><xs:simpleContent><xs:extension base="xs:double"><xs:attributeGroup ref="apex:filterParam"/></xs:extension></xs:simpleContent></xs:complexType></xs:element>
Pulse width in samples. Currently only used for single pulse generator
Diagram
Type
xs:positiveInteger
Properties
content
simple
minOccurs
0
default
1
Source
<xs:element name="pulsewidth" default="1" type="xs:positiveInteger" minOccurs="0"><xs:annotation><xs:documentation>Pulse width in samples. Currently only used for single pulse generator</xs:documentation></xs:annotation></xs:element>
<xs:element name="basegain" type="apex:gainparam" default="0" minOccurs="0"><xs:annotation><xs:documentation>The total gain is basegain+gain. Basegain is useful for amplitude normalization between different blocks</xs:documentation></xs:annotation></xs:element>
Inverts the gain of the block (but not the basegain).Invertgain is useful for the attenuation of noise depending on an SNR
Diagram
Type
xs:boolean
Properties
content
simple
minOccurs
0
default
false
Source
<xs:element name="invertgain" type="xs:boolean" default="false" minOccurs="0"><xs:annotation><xs:documentation>Inverts the gain of the block (but not the basegain). Invertgain is useful for the attenuation of noise depending on an SNR</xs:documentation></xs:annotation></xs:element>
Used to specify a single channel to apply gain to,instead of applying it to all channels at once.For example, for an amplifier having two channels, these are set independently by using <gain id="ch0" channel="0">-3.00</gain><gain id="ch1" channel="1">-6.00</gain> Channels are zero based, ie the first channel is 0, thesecond 1 and so on.
Fader direction: fadein (beginning of stimulus) orfadeout(end of stimulus)
Diagram
Type
restriction of xs:string
Properties
content
simple
default
in
Facets
enumeration
in
enumeration
out
Source
<xs:element name="direction" default="in"><xs:annotation><xs:documentation>Fader direction: fadein (beginning of stimulus) or fadeout(end of stimulus)</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="in"/><xs:enumeration value="out"/></xs:restriction></xs:simpleType></xs:element>
The total gain is basegain+gain. Basegain is usefulfor amplitude normalization between differentblocks
Diagram
Type
xs:double
Properties
content
simple
minOccurs
0
default
0
Source
<xs:element name="basegain" type="xs:double" default="0" minOccurs="0"><xs:annotation><xs:documentation>The total gain is basegain+gain. Basegain is useful for amplitude normalization between different blocks</xs:documentation></xs:annotation></xs:element>
Inverts the gain of the block (but not the basegain).Invertgain is useful for the attenuation of noise depending on an SNR
Diagram
Type
xs:boolean
Properties
content
simple
minOccurs
0
default
false
Source
<xs:element name="invertgain" type="xs:boolean" default="false" minOccurs="0"><xs:annotation><xs:documentation>Inverts the gain of the block (but not the basegain). Invertgain is useful for the attenuation of noise depending on an SNR</xs:documentation></xs:annotation></xs:element>
Jump to a random place in the datablock uponstart. Only functional if randomjump=false
Diagram
Type
xs:boolean
Properties
content
simple
minOccurs
0
default
false
Source
<xs:element name="randomjump" type="xs:boolean" default="false" minOccurs="0"><xs:annotation><xs:documentation>Jump to a random place in the datablock upon start. Only functional if randomjump=false</xs:documentation></xs:annotation></xs:element>
Jump to a fixed place in the datablock when the generator is started. The place is specified in seconds. Take care that you do not jump further than the length of the wave file.
Diagram
Type
xs:double
Properties
content
simple
minOccurs
0
default
0
Source
<xs:element name="jump" type="xs:double" default="0" minOccurs="0"><xs:annotation><xs:documentation>Jump to a fixed place in the datablock when the generator is started. The place is specified in seconds. Take care that you do not jump further than the length of the wave file.</xs:documentation></xs:annotation></xs:element>
<xs:complexType name="devicesType"><xs:sequence><xs:element name="master" type="xs:IDREF" minOccurs="0" maxOccurs="1"><xs:annotation><xs:documentation>The master device is that last one to be started after all stimuli are loaded for all devices. This feature can be used when using triggers to synchronize devices.</xs:documentation></xs:annotation></xs:element><xs:element name="device" type="apex:deviceType" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>All real devices derive from this base.</xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType>
<xs:complexType name="deviceType"><xs:annotation><xs:documentation>Base type for all devices</xs:documentation></xs:annotation><xs:attribute name="id" type="xs:ID" use="required"/><!--xs:attribute name="mode" type="apex:deviceModesEnum" use="optional">
<xs:annotation>
<xs:documentation>Processing mode of this device. Impacts all associated
filters.</xs:documentation>
</xs:annotation>
</xs:attribute--></xs:complexType>
<xs:complexType name="wavDeviceType"><xs:complexContent><xs:extension base="apex:deviceType"><xs:sequence><xs:element name="driver" minOccurs="0"><xs:annotation><xs:documentation>Driver architecture to be used for sound output</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="dummy"><xs:annotation><xs:documentation>Dummy soundcard</xs:documentation></xs:annotation></xs:enumeration><xs:enumeration value="portaudio"><xs:annotation><xs:documentation>Portaudio is a cross-platform audio framework</xs:documentation></xs:annotation></xs:enumeration><xs:enumeration value="qtaudio"><xs:annotation><xs:documentation>Qt Multimedia framework</xs:documentation></xs:annotation></xs:enumeration><xs:enumeration value="asio"><xs:annotation><xs:documentation>ASIO is a proprietary windows/mac-only audio framework by Steinberg. Use it if low latency/more then 2 channels is required.</xs:documentation></xs:annotation></xs:enumeration><xs:enumeration value="coreaudio"><xs:annotation><xs:documentation>CoreAudio is MacOsX' audio framework.</xs:documentation></xs:annotation></xs:enumeration><xs:enumeration value="jack"><xs:annotation><xs:documentation>Jack is a cross-platform audio framework. A jack connection will be made to the "drivername" specified in the main config file.</xs:documentation></xs:annotation></xs:enumeration></xs:restriction></xs:simpleType></xs:element><xs:element name="card" type="xs:string" minOccurs="0"><xs:annotation><xs:documentation>Name of the soundcard to be used. Cards are defined in the main config file. Every soundcard in the system can be enumerated in the main configfile. Use the ID defined there. Otherwise the "default" card can be used.</xs:documentation></xs:annotation></xs:element><xs:element name="channels" type="xs:positiveInteger"><xs:annotation><xs:documentation>Number of output channels to be used. This is restricted by the selected driver, with a maximum of 2 for portaudio.</xs:documentation></xs:annotation></xs:element><xs:element name="gain" type="apex:channelGainType" minOccurs="0" maxOccurs="unbounded"><xs:annotation><xs:documentation>Final gain of the device, implemented with a software mixer.</xs:documentation></xs:annotation></xs:element><xs:element name="samplerate"><xs:annotation><xs:documentation>Sample rate of the device. Warning: not all sample rates are supported by all devices and some drivers automatically convert to other sample rates. Check your sound card documentation.</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="16000"/><xs:enumeration value="44100"/><xs:enumeration value="96000"/><xs:enumeration value="32000"/><xs:enumeration value="48000"/><xs:enumeration value="8000"/><xs:enumeration value="22050"/><xs:enumeration value="72000"/></xs:restriction></xs:simpleType></xs:element><xs:element name="buffersize" minOccurs="0" type="xs:positiveInteger"><xs:annotation><xs:documentation>Applies to the soundcard buffer size, not the internal apex buffer size. Larger sizes are more efficient, smaller sizes have smaller latencies. Some notes: for asio, latency is always ( 2 * buffersize + overhead ) / samplerate. The overhead is very small, eg 16 samples for an Rme Multiface. Portaudio however always uses a number of internal buffers, mostly 4. Hence, actual latency is ( 2 * 4 * buffersize + overhead ) / samplerate. For asio/jack: must be set to the system buffer size.</xs:documentation></xs:annotation></xs:element><xs:element name="blocksize" minOccurs="0" type="xs:positiveInteger"><xs:annotation><xs:documentation>Applies to the block size that is used in the internal apex audio streams (for filters etc.). Larger sizes are more efficient, smaller sizes have smaller latencies. If not defined, the soundcard buffersize will be used.</xs:documentation></xs:annotation></xs:element><xs:element name="buffersize_apex" minOccurs="0"><xs:annotation><xs:documentation>Size of internal apex sound buffer in seconds. This buffer ensures that no buffer underruns occur. The default value is 1s. If continuous filters are used, the system will need this amount of seconds before the next stimulus can be output. Note that the value in seconds is rounded down to the nearest multiple of 8192 samples (the buffersize used to fill the buffer): so using 1 second here, with a samplerate of 44100, the actual amount of time will be 40960 samples / 44100 samples/sec = 0.9 seconds. If a buffersize smaller than 16384 samples is specified, a buffer of 16384 samples will be used.</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:decimal"><xs:minExclusive value="0"/><xs:maxInclusive value="60"/></xs:restriction></xs:simpleType><!--xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="0.5"/>
<xs:enumeration value="1"/>
<xs:enumeration value="1.5"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
<xs:enumeration value="4"/>
<xs:enumeration value="5"/>
<xs:enumeration value="10"/>
</xs:restriction>
</xs:simpleType--></xs:element><xs:element name="padzero" type="xs:nonNegativeInteger" minOccurs="0"><xs:annotation><xs:documentation>If smaller than 16: add padzero*8196 samples to the end of each stream. If larger than 16: add padzero samples to the end of each stream. This avoids dropping of the last N frames on some soundcards (notoriously LynxOne and FirefaceUC)</xs:documentation></xs:annotation></xs:element><xs:element name="cisim" type="apex:cisimType" minOccurs="0"><xs:annotation><xs:documentation>Parameters for automatic CI simulation</xs:documentation></xs:annotation></xs:element></xs:sequence></xs:extension></xs:complexContent></xs:complexType>
Used to specify a single channel to apply gain to,instead of applying it to all channels at once.For example, for an amplifier having two channels, these are set independently by using <gain id="ch0" channel="0">-3.00</gain><gain id="ch1" channel="1">-6.00</gain> Channels are zero based, ie the first channel is 0, thesecond 1 and so on.
<xs:complexType name="channelGainType"><xs:simpleContent><xs:extension base="apex:gainparam"><xs:attribute name="channel" type="xs:nonNegativeInteger"><xs:annotation><xs:documentation>Used to specify a single channel to apply gain to, instead of applying it to all channels at once. For example, for an amplifier having two channels, these are set independently by using<gain id="ch0" channel="0">-3.00</gain><gain id="ch1" channel="1">-6.00</gain>Channels are zero based, ie the first channel is 0, the second 1 and so on.</xs:documentation></xs:annotation></xs:attribute></xs:extension></xs:simpleContent></xs:complexType>
<xs:complexType name="dummyDeviceType"><xs:annotation><xs:documentation>Dummy device that does nothing. Useful to temporarily suppress output of a certain device. Allows anything as parameters.</xs:documentation></xs:annotation><xs:complexContent><xs:extension base="apex:deviceType"><xs:sequence><xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:extension></xs:complexContent></xs:complexType>
<xs:complexType name="CohDeviceType"><xs:annotation><xs:documentation>Cochlear stimulation device device</xs:documentation></xs:annotation><xs:complexContent><xs:extension base="apex:deviceType"><xs:sequence><xs:element name="device" type="xs:string"><xs:annotation><xs:documentation>Device identifier. For NIC 2, this identifier consists of three parts: the device type (e.g. l34) , the implant type (e.g. cic3, cic4) and the device number (e.g. 1, ordered according to the assigned COM port, device 0 is a simulated device).</xs:documentation></xs:annotation></xs:element><xs:element name="trigger"><xs:annotation><xs:documentation>Generate or use a trigger from the audio port. Currently the trigger button status is not checked (nicv2 doesn't allow this yet)</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="in"/><xs:enumeration value="out"/><xs:enumeration value="none"/></xs:restriction></xs:simpleType></xs:element><!--xs:element name="volume" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:double">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element --><xs:element name="powerup_count" minOccurs="0" default="4000" type="xs:nonNegativeInteger"><xs:annotation><xs:documentation>Number of powerup pulses to send. No powerup pulses will be sent if this is set to 0.</xs:documentation></xs:annotation></xs:element><xs:element name="volume" minOccurs="0"><xs:complexType><xs:annotation><xs:documentation>Volume parameter for Cochlear device. The current level (in clinical units) is calculated according the following formula: round(t + (c-t) * volume/100 * mag) Where: t=treshold level c=comfort level volume=current value of volume parameter mag=magnitude [0,1]</xs:documentation></xs:annotation><xs:simpleContent><xs:extension base="apex:volumeParam"><xs:attributeGroup ref="apex:filterParam"/></xs:extension></xs:simpleContent></xs:complexType></xs:element><xs:element name="defaultmap"><xs:annotation><xs:documentation>Defines the default subject map to be used</xs:documentation></xs:annotation><xs:complexType><xs:choice><xs:element name="inline" type="apex:CohMap"><xs:annotation><xs:documentation>The map is defined below</xs:documentation></xs:annotation></xs:element><xs:element name="from_r126"><xs:annotation><xs:documentation>The user can select the map from the R126 wizard. R126 is the clinical fitting software.</xs:documentation></xs:annotation></xs:element></xs:choice></xs:complexType></xs:element></xs:sequence></xs:extension></xs:complexContent></xs:complexType>
<xs:complexType name="CohMap"><xs:sequence><xs:element name="number_electrodes"><xs:simpleType><xs:restriction base="xs:positiveInteger"><xs:maxInclusive value="22"/></xs:restriction></xs:simpleType></xs:element><xs:element name="mode" type="apex:CohModeEnum"><xs:annotation><xs:documentation>Stimulation mode; bipolar modes use a lower, reverse bipolar modes a higher reference electrode.</xs:documentation></xs:annotation></xs:element><xs:element name="pulsewidth"><xs:annotation><xs:documentation>When using a Freedom processor, the maximum phasewidth is 429.8us When using an L34 processor, the maximum phasewidth is 434.4us</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:double"><xs:minInclusive value="25"/><xs:maxInclusive value="434.4"/></xs:restriction></xs:simpleType></xs:element><xs:element name="pulsegap"><xs:annotation><xs:documentation>When using a Freedom processor, the maximum phase gap is 57us When using an L34 processor, the maximum phase gap is 58us When using a cic3 implant, the minimum phase gap is 8us When using a cic4 implant, the minimum phase gap is 7us</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:double"><xs:minInclusive value="7"/><xs:maxInclusive value="58"/></xs:restriction></xs:simpleType></xs:element><xs:element name="period"><xs:annotation><xs:documentation>When using a Freedom processor, the maximum period is 13078us When using an L34 processor, the maximum period is 13107us When using a cic3 implant, the minimum period is 70us When using a cic4 implant, the minimum period is 64.6us</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:double"><xs:minInclusive value="64.6"/><xs:maxInclusive value="13107"/></xs:restriction></xs:simpleType></xs:element><xs:element name="trigger" minOccurs="0" default="none"><xs:annotation><xs:documentation>"all" will result in all pulses having triggers. "none" will result in no pulses having triggers. "first" will result in the first pulses that needs mapping to have a trigger, the ones afterward will have no trigger.</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="all"/><xs:enumeration value="none"/><xs:enumeration value="first"/></xs:restriction></xs:simpleType></xs:element><xs:element name="channel" minOccurs="1" maxOccurs="22"><xs:complexType><xs:attribute name="number" use="required"><xs:simpleType><xs:restriction base="xs:positiveInteger"><xs:maxInclusive value="22"/></xs:restriction></xs:simpleType></xs:attribute><xs:attribute name="electrode" use="required"><xs:simpleType><xs:restriction base="xs:positiveInteger"><xs:maxInclusive value="22"/></xs:restriction></xs:simpleType></xs:attribute><xs:attribute name="threshold" use="required"><xs:simpleType><xs:restriction base="xs:nonNegativeInteger"><xs:maxInclusive value="255"/></xs:restriction></xs:simpleType></xs:attribute><xs:attribute name="comfort" use="required"><xs:simpleType><xs:restriction base="xs:nonNegativeInteger"><xs:maxInclusive value="255"/></xs:restriction></xs:simpleType></xs:attribute></xs:complexType></xs:element></xs:sequence><xs:attribute name="id" type="xs:ID"/></xs:complexType>
All processing (mixing, filtering, ...) is done in real timewhile sending output
Source
<xs:simpleType name="deviceModesEnum"><xs:restriction base="xs:string"><xs:enumeration value="online"><xs:annotation><xs:documentation>All processing (mixing, filtering, ...) is done in real time while sending output</xs:documentation></xs:annotation></xs:enumeration><!--xs:enumeration value="offline">
<xs:annotation>
<xs:documentation>All processing is done beforehand and the resulting output
data is stored in memory. Not all devices support this
mode.</xs:documentation>
</xs:annotation>
</xs:enumeration--></xs:restriction></xs:simpleType>
<xs:complexType name="filtersType"><xs:sequence><xs:element name="filter" minOccurs="0" maxOccurs="unbounded" type="apex:filterType"><xs:annotation><xs:documentation>Every filter/generator derives from this base type. All filters to be used are defined here.</xs:documentation></xs:annotation></xs:element></xs:sequence></xs:complexType>
<xs:complexType name="filterType"><xs:annotation><xs:documentation>Base type for all filters</xs:documentation></xs:annotation><xs:sequence><xs:element name="device" type="xs:IDREF"><xs:annotation><xs:documentation>ID of the device to which this filter belongs. The mode of the filter (online or offline) is determined by the device.</xs:documentation></xs:annotation></xs:element><xs:element name="channels" type="xs:positiveInteger"><xs:annotation><xs:documentation>Number of channels</xs:documentation></xs:annotation></xs:element><xs:element name="continuous" type="xs:boolean" minOccurs="0"><xs:annotation><xs:documentation>If continuous==true, the filter/generator keeps on running between trials (ie while the user is entering input). Only makes sense for generators.</xs:documentation><!-- FIXME: move to generator --></xs:annotation></xs:element></xs:sequence><xs:attribute name="id" type="xs:ID" use="required"/></xs:complexType>
<xs:complexType name="generator"><xs:annotation><xs:documentation>A generator is a filter without any input.</xs:documentation></xs:annotation><xs:complexContent><xs:extension base="apex:filterType"><xs:sequence><xs:element name="type"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="noise"><xs:annotation><xs:documentation>White noise (this is NOT gaussian noise)</xs:documentation></xs:annotation></xs:enumeration><!--xs:enumeration value="square">
<xs:annotation>
<xs:documentation>Square wave with peak amplitude = total
gain</xs:documentation>
</xs:annotation>
</xs:enumeration--><xs:enumeration value="sinus"><xs:annotation><xs:documentation>Sinus with peak amplitude = total gain</xs:documentation></xs:annotation></xs:enumeration><!--xs:enumeration value="triangle">
<xs:annotation>
<xs:documentation>Triangle with peak amplitude = total
gain</xs:documentation>
</xs:annotation>
</xs:enumeration--><xs:enumeration value="singlepulse"><xs:annotation><xs:documentation>Single pulse with peak amplitude = total gain. The polarity is set using the "polarity" parameter.</xs:documentation></xs:annotation></xs:enumeration></xs:restriction></xs:simpleType></xs:element><xs:element name="basegain" type="xs:double" default="0" minOccurs="0"><xs:annotation><xs:documentation>The total gain is basegain+gain. Basegain is useful for amplitude normalization between different blocks</xs:documentation></xs:annotation></xs:element><xs:element name="invertgain" type="xs:boolean" default="false" minOccurs="0"><xs:annotation><xs:documentation>Inverts the gain of the block (but not the basegain). Invertgain is useful for the attenuation of noise depending on an SNR</xs:documentation></xs:annotation></xs:element><xs:element name="gain" default="0" type="apex:gainparam"><xs:annotation><xs:documentation>The total gain is basegain+gain. Gain is a parameter that can be changed by other modules</xs:documentation></xs:annotation></xs:element><xs:element name="frequency" default="1000"><xs:annotation><xs:documentation>Frequency: only makes sense for sinus, square and triangle</xs:documentation></xs:annotation><xs:complexType><xs:simpleContent><xs:extension base="xs:nonNegativeInteger"><xs:attributeGroup ref="apex:filterParam"/></xs:extension></xs:simpleContent></xs:complexType></xs:element><xs:element name="phase" default="0"><xs:annotation><xs:documentation>Phase (rad): only makes sense for sinus, square and triangle</xs:documentation></xs:annotation><xs:complexType><xs:simpleContent><xs:extension base="xs:double"><xs:attributeGroup ref="apex:filterParam"/></xs:extension></xs:simpleContent></xs:complexType></xs:element><xs:element name="pulsewidth" default="1" type="xs:positiveInteger" minOccurs="0"><xs:annotation><xs:documentation>Pulse width in samples. Currently only used for single pulse generator</xs:documentation></xs:annotation></xs:element><xs:element name="polarity" minOccurs="0" default="positive"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="positive"/><xs:enumeration value="negative"/></xs:restriction></xs:simpleType></xs:element></xs:sequence></xs:extension></xs:complexContent></xs:complexType>
<xs:complexType name="amplifier"><xs:complexContent><xs:extension base="apex:filterType"><xs:sequence><xs:element name="basegain" type="apex:gainparam" default="0" minOccurs="0"><xs:annotation><xs:documentation>The total gain is basegain+gain. Basegain is useful for amplitude normalization between different blocks</xs:documentation></xs:annotation></xs:element><xs:element name="invertgain" type="xs:boolean" default="false" minOccurs="0"><xs:annotation><xs:documentation>Inverts the gain of the block (but not the basegain). Invertgain is useful for the attenuation of noise depending on an SNR</xs:documentation></xs:annotation></xs:element><xs:element name="gain" minOccurs="1" maxOccurs="unbounded" type="apex:channelGainType"></xs:element></xs:sequence></xs:extension></xs:complexContent></xs:complexType>
<xs:complexType name="dataloop"><xs:annotation><xs:documentation>Loops a datablock forever.</xs:documentation></xs:annotation><xs:complexContent><xs:extension base="apex:filterType"><xs:sequence><xs:element name="datablock" type="xs:IDREF"/><xs:element name="basegain" type="xs:double" default="0" minOccurs="0"><xs:annotation><xs:documentation>The total gain is basegain+gain. Basegain is useful for amplitude normalization between different blocks</xs:documentation></xs:annotation></xs:element><xs:element name="invertgain" type="xs:boolean" default="false" minOccurs="0"><xs:annotation><xs:documentation>Inverts the gain of the block (but not the basegain). Invertgain is useful for the attenuation of noise depending on an SNR</xs:documentation></xs:annotation></xs:element><xs:element name="gain" type="apex:gainparam"/><xs:element name="randomjump" type="xs:boolean" default="false" minOccurs="0"><xs:annotation><xs:documentation>Jump to a random place in the datablock upon start. Only functional if randomjump=false</xs:documentation></xs:annotation></xs:element><xs:element name="jump" type="xs:double" default="0" minOccurs="0"><xs:annotation><xs:documentation>Jump to a fixed place in the datablock when the generator is started. The place is specified in seconds. Take care that you do not jump further than the length of the wave file.</xs:documentation></xs:annotation></xs:element></xs:sequence></xs:extension></xs:complexContent></xs:complexType>
Used to specify a single channel to apply gain to,instead of applying it to all channels at once.For example, for an amplifier having two channels, these are set independently by using <gain id="ch0" channel="0">-3.00</gain><gain id="ch1" channel="1">-6.00</gain> Channels are zero based, ie the first channel is 0, thesecond 1 and so on.
<xs:attribute name="channel" type="xs:nonNegativeInteger"><xs:annotation><xs:documentation>Used to specify a single channel to apply gain to, instead of applying it to all channels at once. For example, for an amplifier having two channels, these are set independently by using<gain id="ch0" channel="0">-3.00</gain><gain id="ch1" channel="1">-6.00</gain>Channels are zero based, ie the first channel is 0, the second 1 and so on.</xs:documentation></xs:annotation></xs:attribute>