Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
vmixctl(7)			  OSS Devices			    vmixctl(7)

NAME
       oss_envy24 - ICE	Envy24 audio device driver.

DESCRIPTION
       Open Sound System driver	for Envy24 based audio cards such as the M-Au-
       dio 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 cre-
       ate  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 actu-
       ally 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_dev-
       mask 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 de-
       fault devicefile	(/dev/dsp) since OSS now supports automatic device al-
       location	 (it  opens the	first available	input or output	devicefile de-
       pending 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 chan-
       nels.  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	appli-
       cations at the same time. Playback will not start before	all  currently
       open devices files have started the playback operation.	The same mech-
       anism  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 them-
       selves. Instead the sampling rate is always locked to the currently se-
       lected rate. This rate selection	can be changed using the  ossmix  pro-
       gram 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 os-
       smix.  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  applica-
       tions.  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 au-
	  dio 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 la-
       tencies caused by dual buffering	are gone. So these device  files  work
       much  like  "ordinary" soundcards. However due to multi channel profes-
       sional nature of	the Envy24 chip	there are some very  fundamental  dif-
       ferences.  This means that these	device files can only be used with ap-
       plications 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 re-
	   sults.

       2.  Number of channels is fixed and cannot be changed. The  output  de-
	   vice	 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 Ter-
       ratec EWS88MT/D and any other card that support s it).

       The settings in the gain.* group	of ossmix are used to change the  lev-
       els  of all inputs and outputs in the digital monitor mixer. The	possi-
       ble 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" out-
       puts 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 op-
       tion 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 prob-
       lems.  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 config-
	  ured 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  dri-
	  ves.	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 out-
	  puts.	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. How-
	  ever	this  mode disables stereo and multi channel usage for all de-
	  vices	so in general it should	not be used.  Values: 1, 0 Default: 0

FILES
       /usr/local/lib/oss/conf/oss_envy24.conf Device configuration file

AUTHOR
       4Front Technologies

				 12 April 2025			    vmixctl(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=oss_envy24&sektion=7&manpath=FreeBSD+Ports+14.3.quarterly>

home | help