Provided by: oss4-base_4.2-build2010-5ubuntu9.1_amd64 bug

NAME

       oss_envy24 - ICE Envy24 audio device driver.

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:

       •  8/16 bit playback/record

       •  mono/stereo/4ch/5.1ch/7.1ch playback

       •  mono/sterero recording

       •  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.

       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.

        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.

        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.

                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).

                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.

                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:

              •  The hardware rate needs to be 44100, 48000 or 96000 Hz.

              •  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.

              •  Only mono and stereo (1 or 2 channel) streams are supported.

              •  The SRC algorithm does cause minor artifacts to the sound (SNR is around 60 dB).

        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.

        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.

        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:

              •  INTERNAL: Use the internal sampling rate as defined by envy24.rate

              •  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.

              •  WCLOCK: Like SPDIF but uses the world clock input signal (Delta 1010 only).

        OUTPUT ROUTINGS

              Output routing of output ports can be changed  by  changing  the  route.*  settings
              using ossmix. The possible choices are:

              •  DMA: Playback from the associated /dev/dsp# device.

              •  MONITOR: Output of the digital mixer (only out1/2 and S/PDIF).

              •  IN1/2 to IN9/10 or IN1 to IN10: Loopback from the analog inputs

              •  SPDIFL or SPDIFR or SPDIF: Loopback from the S/PDIF input.

        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.

        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.

OPTIONS

       •  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

       •  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

       •  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

       •  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

       •  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

       •  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

       •  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

FILES

       /etc/oss4/conf/oss_envy24.conf Device configuration file

AUTHOR

       4Front Technologies

                                         17 January 2023                            oss_envy24(7)