359 lines
14 KiB
Groff
359 lines
14 KiB
Groff
|
." Automatically generated text
|
||
|
.TH 7 "August 31, 2006" "OSS" "OSS Devices"
|
||
|
.SH NAME
|
||
|
oss_envy24 - ICE Envy24 audio device driver.
|
||
|
|
||
|
.SH DESCRIPTION
|
||
|
Open Sound System driver for Envy24 based audio cards such as the
|
||
|
M-Audio Delta Series, Terratec EWS88 Series, Hoontech DSP24.
|
||
|
|
||
|
ENVY24 device characteristics:
|
||
|
|
||
|
.IP \(bu 3
|
||
|
8/16 bit playback/record
|
||
|
.IP \(bu 3
|
||
|
mono/stereo/4ch/5.1ch/7.1ch playback
|
||
|
.IP \(bu 3
|
||
|
mono/sterero recording
|
||
|
.IP \(bu 3
|
||
|
8KHz to 192Khz sample rate.
|
||
|
|
||
|
ENVY24 AUDIO DEVICES
|
||
|
|
||
|
Audio devices:
|
||
|
0: M Audio Delta 1010 out1/2
|
||
|
1: M Audio Delta 1010 out3/4
|
||
|
2: M Audio Delta 1010 out5/6
|
||
|
3: M Audio Delta 1010 out7/8
|
||
|
4: M Audio Delta 1010 S/PDIF out
|
||
|
5: M Audio Delta 1010 in1/2
|
||
|
6: M Audio Delta 1010 in3/4
|
||
|
7: M Audio Delta 1010 in5/6
|
||
|
8: M Audio Delta 1010 in7/8
|
||
|
9: M Audio Delta 1010 S/PDIF in
|
||
|
10: M Audio Delta 1010 input from mon. mixer
|
||
|
11: M Audio Delta 1010 (all outputs)
|
||
|
12: M Audio Delta 1010 (all inputs)
|
||
|
|
||
|
Synth devices:
|
||
|
|
||
|
Midi devices:
|
||
|
0: M Audio Delta 1010
|
||
|
|
||
|
Timers:
|
||
|
0: System clock
|
||
|
|
||
|
Mixers:
|
||
|
0: M Audio Delta 1010
|
||
|
|
||
|
|
||
|
The actual /dev/dsp# numbers may be different on your system. Check the right
|
||
|
ones by looking at the output procuced by "ossinfo -a" command. With the
|
||
|
above configuration you can use /dev/dsp0 to /dev/dsp4 for playback of stereo
|
||
|
streams. If you play mono files the signal will be output only from the left
|
||
|
channel. /dev/dsp0 to /dev/dsp3 are connected to the analog outputs while
|
||
|
/dev/dsp4 is the S/PDIF output.
|
||
|
|
||
|
The /dev/dsp5 to /dev/dsp10 device files can be used for recording. /dev/dsp5
|
||
|
to /dev/dsp8 are the analog inputs. /dev/dsp11 and /dev/dsp12 are raw
|
||
|
input/output device files. They will be described in detail in the "Raw I/O
|
||
|
devices" section below.
|
||
|
|
||
|
It's also possible to make OSS to create individual device files for every
|
||
|
channel this creates twice as many device files than the default setting. To
|
||
|
do this just append envy24_skipdevs=1 to the oss_envy24.conf file. This is useful
|
||
|
only if you are working on mono rather than stereo signals. However please
|
||
|
note that setting envy24_skipdevs=1 does _NOT_ lock the device files to one
|
||
|
channel mode, the application can still set them to stereo or multi channel
|
||
|
mode if it likes.
|
||
|
|
||
|
It is possible to set all device files to mono only mode by setting
|
||
|
envy24_skipdevs=1 and envy24_force_mono=1. However this mode disables stereo
|
||
|
and multi channel usage for all devices so in general it should not be used.
|
||
|
.SH
|
||
|
By default the driver will create output devices before the input ones. By
|
||
|
setting envy24_swapdevs=1 in oss_envy24.conf you can ask OSS to create the device
|
||
|
files in opposite order i.e. input device files before the output ones. This
|
||
|
may be useful when using RealProducer.
|
||
|
|
||
|
As a workaround to a bug in RealProducer you also need to create some dummy
|
||
|
mixer devices by defining envy24_realencoder_hack=1 in oss_envy24.conf. Without
|
||
|
these extra mixer devices RealProducer will not be able to access other than
|
||
|
the first input device.
|
||
|
|
||
|
|
||
|
.SH DEVICE MANAGEMENT
|
||
|
|
||
|
By default OSS creates a large number of device files for each envy24 card.
|
||
|
This may be a problem when multiple cards need to be used in the same system.
|
||
|
Adding the envy24_devmask option to oss_envy24.conf should help
|
||
|
in most cases because it removes the devices that are actually not needed in
|
||
|
the system.
|
||
|
|
||
|
The envy24_devmask number is the SUM of the following values:
|
||
|
|
||
|
1: Create primary (analog/ADAT/TDIF) outputs.
|
||
|
2: Create primary (analog/ADAT/TDIF) inputs.
|
||
|
4: Create S/PDIF outputs.
|
||
|
8: Create S/PDIF inputs.
|
||
|
16: Create monitor input device.
|
||
|
32: Create the raw input and output devices.
|
||
|
|
||
|
For example envy24_devmask=12 (4+8) creates only the S/PDIF devices.
|
||
|
To enable all possible (current or future) device files set envy24_devmask
|
||
|
to 65535 (default).
|
||
|
|
||
|
If possible make your application to open the right device file
|
||
|
(/dev/dsp0 to /dev/dsp10) explicitly. It's also possible to use the
|
||
|
default devicefile (/dev/dsp) since OSS now supports automatic device
|
||
|
allocation (it opens the first available input or output devicefile
|
||
|
depending on the open mode).
|
||
|
|
||
|
The channel allocation mechanism between device files is very flexible.
|
||
|
Even there is a device file for every stereo pair (or a mono channel)
|
||
|
it's possible to use any of the device file to access multiple channels.
|
||
|
For example an application can open /dev/dsp0 and set the number of
|
||
|
channels to 10. In this way the application can play all 10 channels
|
||
|
(or any number between 1 and 10) simultaneously (the samples will be
|
||
|
interleaved).
|
||
|
|
||
|
There is simple automatic syncstart feature when using multiple
|
||
|
applications at the same time. Playback will not start before all
|
||
|
currently open devices files have started the playback operation.
|
||
|
The same mechanism works for recording (recording and playback
|
||
|
operations are fully independent).
|
||
|
|
||
|
The Envy24 driver supports 8, 16 and 24/32 bit sample formats.
|
||
|
|
||
|
|
||
|
.SH SAMPLING RATE
|
||
|
|
||
|
Envy24 based cards are multi channel devices and all the channels share the
|
||
|
same sampling rate. For this reason the sampling rate is normally locked to the
|
||
|
value selected using ossmix. However OSS supports some other methods for
|
||
|
changing the sampling rate. There are four ways to change the sampling rate.
|
||
|
|
||
|
BASIC METHOD:
|
||
|
|
||
|
Since all input and output channels of Envy24 work at the same sampling rate
|
||
|
it's not possible for the applications to select the rate themselves. Instead
|
||
|
the sampling rate is always locked to the currently selected rate. This rate
|
||
|
selection can be changed using the ossmix program shipped with OSS.
|
||
|
|
||
|
For example:
|
||
|
|
||
|
ossmix envy24.rate 48000
|
||
|
|
||
|
sets the sampling rate to 48000 Hz (default). The possible alternatives are
|
||
|
- 8000
|
||
|
- 9600
|
||
|
- 11025
|
||
|
- 12000
|
||
|
- 16000
|
||
|
- 22050
|
||
|
- 24000
|
||
|
- 32000
|
||
|
- 44100
|
||
|
- 48000
|
||
|
- 88200
|
||
|
- 96000
|
||
|
|
||
|
When using S/PDIF inputs/outputs only the sampling rates 32000, 44100, 48000, 88200 or 96000 should be used.
|
||
|
|
||
|
.SH EXTERNAL SYNC
|
||
|
It's possible to lock the sampling rate to the S/PDIF or world clock inputs
|
||
|
by setting the envy24.sync setting in ossmix to SPDIF or WCLOCK. However
|
||
|
the envy24.rate setting should be set manually to match the rate being used
|
||
|
(there is no autodetection for that).
|
||
|
|
||
|
.SH NONLOCKED METHOD
|
||
|
It's also possible to turn the envy24.ratelock setting to OFF using ossmix.
|
||
|
After that the first application that opens the device can change the sampling
|
||
|
rate. However great care should be taken that this application gets the
|
||
|
recording/playback process fully started before any of the other
|
||
|
applications open their devices. Otherwise all devices will be locked to 8Khz.
|
||
|
Also keep in mind that subsequent applications will be forced to use the
|
||
|
sampling rate set by the first one.
|
||
|
|
||
|
.SH SOFTWARE SRC
|
||
|
OSS contains a very high quality software based sample rate converter.
|
||
|
It can be enabled by setting envy24.src to ON using ossmix.
|
||
|
|
||
|
After that OSS can do on-fly sample rate conversions between the actual
|
||
|
"hardware" sampling rate and the sampling rates used by the applications. In
|
||
|
this way every application may use different sampling rate. However there are
|
||
|
some drawbacks in this method:
|
||
|
|
||
|
.IP \(bu 3
|
||
|
The hardware rate needs to be 44100, 48000 or 96000 Hz.
|
||
|
.IP \(bu 3
|
||
|
The software SRC algorithm consumes some CPU time (1% to 20% per audio
|
||
|
channel depending on the CPU speed and sampling rates). For this reason this
|
||
|
method may be useless in multi channel use with anything else but the fastest
|
||
|
high end CPUs.
|
||
|
.IP \(bu 3
|
||
|
Only mono and stereo (1 or 2 channel) streams are supported.
|
||
|
.IP \(bu 3
|
||
|
The SRC algorithm does cause minor artifacts to the sound (SNR is around 60 dB).
|
||
|
|
||
|
|
||
|
.SH RAW IO DEVICES
|
||
|
|
||
|
These device files provide an alternative way to access Envy24 based devices.
|
||
|
With these devices it's possible to bypass the dual buffering required by the
|
||
|
"normal" input-output device files described above. This means that also the
|
||
|
mmap() feature is available and that the latencies caused by dual buffering
|
||
|
are gone. So these device files work much like "ordinary" soundcards. However
|
||
|
due to multi channel professional nature of the Envy24 chip there are some very
|
||
|
fundamental differences. This means that these device files can only be used
|
||
|
with applications that are aware of them.
|
||
|
|
||
|
The differences from normal audio device files are:
|
||
|
|
||
|
1. The sample format will always be 32 bit msb aligned (AFMT_S32_LE). Trying to
|
||
|
use any other sample format will cause unexpected results.
|
||
|
2. Number of channels is fixed and cannot be changed. The output device has
|
||
|
always 10 channels (0 to 7 are analog outputs and 8 to 9 are the digital
|
||
|
outputs). This assignment will be used even with cards that don't support
|
||
|
digital (or analog) outputs at all. If the actual hardware being used has
|
||
|
less channels the unused ones will be discarded (however they will be fed to
|
||
|
the on board monitor mixer).
|
||
|
|
||
|
The input device is fixed to 12 channels. Channels 0 to 7 are analog inputs.
|
||
|
Channels 8 to 9 are digital inputs. Channels 10 and 11 are for the result
|
||
|
signal from the on board monitor mixer.
|
||
|
|
||
|
|
||
|
.SH DIGITAL MONITOR MIXER
|
||
|
|
||
|
All Envy24 based cards have a built in monitor mixer. It can be used to mix
|
||
|
allinput and output signals together. The result can be recorded from the
|
||
|
"input from mon mixer" device (device 10 in the /dev/sndstat example above).
|
||
|
The monitor mix signal can also be routed to any of the outputs (including
|
||
|
S/PDIF and the "consumer" AC97 output of Terratec EWS88MT/D and any other card
|
||
|
that support s it).
|
||
|
|
||
|
The settings in the gain.* group of ossmix are used to change the levels of all
|
||
|
inputs and outputs in the digital monitor mixer. The possible values are
|
||
|
between 0 (minimum) and 144 (maximum).
|
||
|
|
||
|
OSS permits using all 10 possible output channels of the monitor mixer even
|
||
|
with cards that have less physical outputs. These "virtual" outputs are only
|
||
|
sent to the monitor mixer and their signal is only present in the monitor mixer
|
||
|
output. To enable these "virtual" channels set the envy24_virtualout parameter
|
||
|
to 1 in oss_envy24.conf. This option has no effect with Delta1010, EWS88MT and
|
||
|
other cards that have 10 "real" outputs.
|
||
|
|
||
|
|
||
|
.SH SYNC SOURCE
|
||
|
|
||
|
On cards with S/PDIF and/or World Clock inputs it's possible to select the
|
||
|
sync source using
|
||
|
|
||
|
ossmix envy24.sync
|
||
|
|
||
|
The possible choices are:
|
||
|
|
||
|
.IP \(bu 3
|
||
|
INTERNAL: Use the internal sampling rate as defined by envy24.rate
|
||
|
.IP \(bu 3
|
||
|
SPDIF: Use the S/PDIF input as the clock source. The envy24.rate setting
|
||
|
must be set manually to match the actual input sampling rate.
|
||
|
.IP \(bu 3
|
||
|
WCLOCK: Like SPDIF but uses the world clock input signal (Delta 1010 only).
|
||
|
|
||
|
|
||
|
.SH OUTPUT ROUTINGS
|
||
|
|
||
|
Output routing of output ports can be changed by changing the route.* settings
|
||
|
using ossmix. The possible choices are:
|
||
|
|
||
|
.IP \(bu 3
|
||
|
DMA: Playback from the associated /dev/dsp# device.
|
||
|
.IP \(bu 3
|
||
|
MONITOR: Output of the digital mixer (only out1/2 and S/PDIF).
|
||
|
.IP \(bu 3
|
||
|
IN1/2 to IN9/10 or IN1 to IN10: Loopback from the analog inputs
|
||
|
.IP \(bu 3
|
||
|
SPDIFL or SPDIFR or SPDIF: Loopback from the S/PDIF input.
|
||
|
|
||
|
|
||
|
.SH PEAK METERS
|
||
|
|
||
|
Envy24 based cards have peak meters for the input and output ports of the
|
||
|
digital monitor mixer. ossmix can show these values under the peak.* group
|
||
|
(these settings are read only). The values are between 0 (minimum) and 255
|
||
|
(maximum). At this moment the only applications that supports these peak meters
|
||
|
are ossmix and ossxmix.
|
||
|
|
||
|
|
||
|
.SH AUDIO LATENCY
|
||
|
|
||
|
IDE disk and CD-ROM drives may cause some interrupt latency problems which
|
||
|
may cause dropouts in recording/playback with Envy24 based cards. For this
|
||
|
reason ensure that DMA is turned on for the disk drive.
|
||
|
|
||
|
Another method to solve the dropout problems is making the fragment size used
|
||
|
by the driver longer. This can be done by adding envy24_nfrags=N to the
|
||
|
oss_envy24.conf file. By default N is 16. Values 2, 4 or 8 make the fragments
|
||
|
longer which should cure the dropout problems. However this may cause
|
||
|
latency problems with some applications. Values 32 and 64 decrease the
|
||
|
latencies but may cause dropouts with IDE.
|
||
|
|
||
|
|
||
|
.SH OPTIONS
|
||
|
|
||
|
.IP \(bu 3
|
||
|
envy24_skipdevs: It's also possible to make OSS to create individual device
|
||
|
files for every channel. This creates twice as many device files than the
|
||
|
default setting.
|
||
|
Values: 1, 0 Default: 0
|
||
|
|
||
|
.IP \(bu 3
|
||
|
envy24_swapdevs: By default the driver will create output devices before the
|
||
|
input ones. You can force the input devices to be configured before output
|
||
|
devices.
|
||
|
Values: 1, 0 Default: 0
|
||
|
|
||
|
.IP \(bu 3
|
||
|
envy24_realencoder_hack: RealProducer wants to see a mixer device in
|
||
|
/dev/mixer. This option allows you to define a dummy /dev/mixer mixer device.
|
||
|
Envy24 Mixer device doesn't provide any consumer level soundcard compatibility
|
||
|
so this dummy mixer fools RealProducer into thinking it's running on a consumer
|
||
|
soundcard like SB Pro or SBLive.
|
||
|
Values: 1, 0 Default: 0
|
||
|
|
||
|
.IP \(bu 3
|
||
|
envy24_gain_sliders: With some devices it's possible to change the gain
|
||
|
controllers to be continuous sliders instead of just enumerated ones.
|
||
|
Values: 1, 0 Default: 0
|
||
|
|
||
|
.IP \(bu 3
|
||
|
envy24_nfrags: To solve the dropout problems make the fragment size used by
|
||
|
the driver longer. By default is 16. Values 2, 4 or 8 make the fragments longer
|
||
|
which should cure the dropout problems. However this may cause latency problems
|
||
|
with some applications. Values 32 and 64 decrease the latencies but may cause
|
||
|
dropouts with IDE drives.
|
||
|
Values: 2-64 Default: 16
|
||
|
|
||
|
.IP \(bu 3
|
||
|
envy24_virtualout: OSS permits using all 10 possible output channels of the
|
||
|
monitor mixer even with cards that have less physical outputs. These "virtual"
|
||
|
outputs are only sent to the monitor mixer and their signal is only present in
|
||
|
the monitor mixer output. This has no effect for Delta1010 or Terratec EWS88MT.
|
||
|
Values: 1, 0 Default: 0
|
||
|
|
||
|
.IP \(bu 3
|
||
|
envy24_force_mono: It is possible to set all device files to mono only mode
|
||
|
by setting envy24_skipdevs=1 and envy24_force_mono=1. However this mode
|
||
|
disables stereo and multi channel usage for all devices so in general it should
|
||
|
not be used.
|
||
|
Values: 1, 0 Default: 0
|
||
|
|
||
|
.SH FILES
|
||
|
/usr/lib/oss/conf/oss_envy24.conf Device configuration file
|
||
|
|
||
|
.SH AUTHOR
|
||
|
4Front Technologies
|
||
|
|