[ALSA] Fix typos and add information about Jack support to Audiophile-Usb.txt
Signed-off-by: Charis Kouzinopoulos <kouzinopoulos@gmail.com> Signed-off-by: Thibault Le Meur <Thibault.LeMeur@supelec.fr> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
c128b82cf4
commit
5732e7a2ce
1 changed files with 54 additions and 27 deletions
|
@ -1,4 +1,4 @@
|
||||||
Guide to using M-Audio Audiophile USB with ALSA and Jack v1.2
|
Guide to using M-Audio Audiophile USB with ALSA and Jack v1.3
|
||||||
========================================================
|
========================================================
|
||||||
|
|
||||||
Thibault Le Meur <Thibault.LeMeur@supelec.fr>
|
Thibault Le Meur <Thibault.LeMeur@supelec.fr>
|
||||||
|
@ -22,16 +22,16 @@ The device has 4 audio interfaces, and 2 MIDI ports:
|
||||||
* Midi In (Mi)
|
* Midi In (Mi)
|
||||||
* Midi Out (Mo)
|
* Midi Out (Mo)
|
||||||
|
|
||||||
The internal DAC/ADC has the following caracteristics:
|
The internal DAC/ADC has the following characteristics:
|
||||||
* sample depth of 16 or 24 bits
|
* sample depth of 16 or 24 bits
|
||||||
* sample rate from 8kHz to 96kHz
|
* sample rate from 8kHz to 96kHz
|
||||||
* Two ports can't use different sample depths at the same time.Moreover, the
|
* Two ports can't use different sample depths at the same time. Moreover, the
|
||||||
Audiophile USB documentation gives the following Warning: "Please exit any
|
Audiophile USB documentation gives the following Warning: "Please exit any
|
||||||
audio application running before switching between bit depths"
|
audio application running before switching between bit depths"
|
||||||
|
|
||||||
Due to the USB 1.1 bandwidth limitation, a limited number of interfaces can be
|
Due to the USB 1.1 bandwidth limitation, a limited number of interfaces can be
|
||||||
activated at the same time depending on the audio mode selected:
|
activated at the same time depending on the audio mode selected:
|
||||||
* 16-bit/48kHz ==> 4 channels in/ 4 channels out
|
* 16-bit/48kHz ==> 4 channels in/4 channels out
|
||||||
- Ai+Ao+Di+Do
|
- Ai+Ao+Di+Do
|
||||||
* 24-bit/48kHz ==> 4 channels in/2 channels out,
|
* 24-bit/48kHz ==> 4 channels in/2 channels out,
|
||||||
or 2 channels in/4 channels out
|
or 2 channels in/4 channels out
|
||||||
|
@ -41,8 +41,8 @@ activated at the same time depending on the audio mode selected:
|
||||||
|
|
||||||
Important facts about the Digital interface:
|
Important facts about the Digital interface:
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
* The Do port additionnaly supports surround-encoded AC-3 and DTS passthrough,
|
* The Do port additionally supports surround-encoded AC-3 and DTS passthrough,
|
||||||
though I haven't tested it under linux
|
though I haven't tested it under Linux
|
||||||
- Note that in this setup only the Do interface can be enabled
|
- Note that in this setup only the Do interface can be enabled
|
||||||
* Apart from recording an audio digital stream, enabling the Di port is a way
|
* Apart from recording an audio digital stream, enabling the Di port is a way
|
||||||
to synchronize the device to an external sample clock
|
to synchronize the device to an external sample clock
|
||||||
|
@ -60,24 +60,23 @@ synchronization error (for instance sound played at an odd sample rate)
|
||||||
The Audiophile USB MIDI ports will be automatically supported once the
|
The Audiophile USB MIDI ports will be automatically supported once the
|
||||||
following modules have been loaded:
|
following modules have been loaded:
|
||||||
* snd-usb-audio
|
* snd-usb-audio
|
||||||
* snd-seq
|
|
||||||
* snd-seq-midi
|
* snd-seq-midi
|
||||||
|
|
||||||
No additionnal setting is required.
|
No additional setting is required.
|
||||||
|
|
||||||
2.2 - Audio ports
|
2.2 - Audio ports
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
Audio functions of the Audiophile USB device are handled by the snd-usb-audio
|
Audio functions of the Audiophile USB device are handled by the snd-usb-audio
|
||||||
module. This module can work in a default mode (without any device-specific
|
module. This module can work in a default mode (without any device-specific
|
||||||
parameter), or in an advanced mode with the device-specific parameter called
|
parameter), or in an "advanced" mode with the device-specific parameter called
|
||||||
"device_setup".
|
"device_setup".
|
||||||
|
|
||||||
2.2.1 - Default Alsa driver mode
|
2.2.1 - Default Alsa driver mode
|
||||||
|
|
||||||
The default behaviour of the snd-usb-audio driver is to parse the device
|
The default behavior of the snd-usb-audio driver is to parse the device
|
||||||
capabilities at startup and enable all functions inside the device (including
|
capabilities at startup and enable all functions inside the device (including
|
||||||
all ports at any sample rates and any sample depths supported). This approach
|
all ports at any supported sample rates and sample depths). This approach
|
||||||
has the advantage to let the driver easily switch from sample rates/depths
|
has the advantage to let the driver easily switch from sample rates/depths
|
||||||
automatically according to the need of the application claiming the device.
|
automatically according to the need of the application claiming the device.
|
||||||
|
|
||||||
|
@ -114,9 +113,9 @@ gain).
|
||||||
For people having this problem, the snd-usb-audio module has a new module
|
For people having this problem, the snd-usb-audio module has a new module
|
||||||
parameter called "device_setup".
|
parameter called "device_setup".
|
||||||
|
|
||||||
2.2.2.1 - Initializing the working mode of the Audiohile USB
|
2.2.2.1 - Initializing the working mode of the Audiophile USB
|
||||||
|
|
||||||
As far as the Audiohile USB device is concerned, this value let the user
|
As far as the Audiophile USB device is concerned, this value let the user
|
||||||
specify:
|
specify:
|
||||||
* the sample depth
|
* the sample depth
|
||||||
* the sample rate
|
* the sample rate
|
||||||
|
@ -174,20 +173,20 @@ The parameter can be given:
|
||||||
|
|
||||||
IMPORTANT NOTE WHEN SWITCHING CONFIGURATION:
|
IMPORTANT NOTE WHEN SWITCHING CONFIGURATION:
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
* You may need to _first_ intialize the module with the correct device_setup
|
* You may need to _first_ initialize the module with the correct device_setup
|
||||||
parameter and _only_after_ turn on the Audiophile USB device
|
parameter and _only_after_ turn on the Audiophile USB device
|
||||||
* This is especially true when switching the sample depth:
|
* This is especially true when switching the sample depth:
|
||||||
- first trun off the device
|
- first turn off the device
|
||||||
- de-register the snd-usb-audio module
|
- de-register the snd-usb-audio module (modprobe -r)
|
||||||
- change the device_setup parameter (by either manually reprobing the module
|
- change the device_setup parameter by changing the device_setup
|
||||||
or changing modprobe.conf)
|
option in /etc/modprobe.conf
|
||||||
- turn on the device
|
- turn on the device
|
||||||
|
|
||||||
2.2.2.3 - Audiophile USB's device_setup structure
|
2.2.2.3 - Audiophile USB's device_setup structure
|
||||||
|
|
||||||
If you want to understand the device_setup magic numbers for the Audiophile
|
If you want to understand the device_setup magic numbers for the Audiophile
|
||||||
USB, you need some very basic understanding of binary computation. However,
|
USB, you need some very basic understanding of binary computation. However,
|
||||||
this is not required to use the parameter and you may skip thi section.
|
this is not required to use the parameter and you may skip this section.
|
||||||
|
|
||||||
The device_setup is one byte long and its structure is the following:
|
The device_setup is one byte long and its structure is the following:
|
||||||
|
|
||||||
|
@ -231,11 +230,11 @@ Caution:
|
||||||
|
|
||||||
2.2.3 - USB implementation details for this device
|
2.2.3 - USB implementation details for this device
|
||||||
|
|
||||||
You may safely skip this section if you're not interrested in driver
|
You may safely skip this section if you're not interested in driver
|
||||||
development.
|
development.
|
||||||
|
|
||||||
This section describes some internals aspect of the device and summarize the
|
This section describes some internal aspects of the device and summarize the
|
||||||
data I got by usb-snooping the windows and linux drivers.
|
data I got by usb-snooping the windows and Linux drivers.
|
||||||
|
|
||||||
The M-Audio Audiophile USB has 7 USB Interfaces:
|
The M-Audio Audiophile USB has 7 USB Interfaces:
|
||||||
a "USB interface":
|
a "USB interface":
|
||||||
|
@ -277,9 +276,9 @@ Here is a short description of the AltSettings capabilities:
|
||||||
- 16-bit depth, 8-48kHz sample mode
|
- 16-bit depth, 8-48kHz sample mode
|
||||||
- Synch playback (Do), audio format type III IEC1937_AC-3
|
- Synch playback (Do), audio format type III IEC1937_AC-3
|
||||||
|
|
||||||
In order to ensure a correct intialization of the device, the driver
|
In order to ensure a correct initialization of the device, the driver
|
||||||
_must_know_ how the device will be used:
|
_must_know_ how the device will be used:
|
||||||
* if DTS is choosen, only Interface 2 with AltSet nb.6 must be
|
* if DTS is chosen, only Interface 2 with AltSet nb.6 must be
|
||||||
registered
|
registered
|
||||||
* if 96KHz only AltSets nb.1 of each interface must be selected
|
* if 96KHz only AltSets nb.1 of each interface must be selected
|
||||||
* if samples are using 24bits/48KHz then AltSet 2 must me used if
|
* if samples are using 24bits/48KHz then AltSet 2 must me used if
|
||||||
|
@ -290,7 +289,7 @@ _must_know_ how the device will be used:
|
||||||
is not connected
|
is not connected
|
||||||
|
|
||||||
When device_setup is given as a parameter to the snd-usb-audio module, the
|
When device_setup is given as a parameter to the snd-usb-audio module, the
|
||||||
parse_audio_enpoint function uses a quirk called
|
parse_audio_endpoints function uses a quirk called
|
||||||
"audiophile_skip_setting_quirk" in order to prevent AltSettings not
|
"audiophile_skip_setting_quirk" in order to prevent AltSettings not
|
||||||
corresponding to device_setup from being registered in the driver.
|
corresponding to device_setup from being registered in the driver.
|
||||||
|
|
||||||
|
@ -317,9 +316,8 @@ However you may see the following warning message:
|
||||||
using the "default" ALSA device. This is less efficient than it could be.
|
using the "default" ALSA device. This is less efficient than it could be.
|
||||||
Consider using a hardware device instead rather than using the plug layer."
|
Consider using a hardware device instead rather than using the plug layer."
|
||||||
|
|
||||||
|
|
||||||
3.2 - Patching alsa to use direct pcm device
|
3.2 - Patching alsa to use direct pcm device
|
||||||
-------------------------------------------
|
--------------------------------------------
|
||||||
A patch for Jack by Andreas Steinmetz adds support for Big Endian devices.
|
A patch for Jack by Andreas Steinmetz adds support for Big Endian devices.
|
||||||
However it has not been included in the CVS tree.
|
However it has not been included in the CVS tree.
|
||||||
|
|
||||||
|
@ -331,3 +329,32 @@ After having applied the patch you can run jackd with the following command
|
||||||
line:
|
line:
|
||||||
% jackd -R -dalsa -Phw:1,0 -r48000 -p128 -n2 -D -Chw:1,1
|
% jackd -R -dalsa -Phw:1,0 -r48000 -p128 -n2 -D -Chw:1,1
|
||||||
|
|
||||||
|
3.2 - Getting 2 input and/or output interfaces in Jack
|
||||||
|
------------------------------------------------------
|
||||||
|
|
||||||
|
As you can see, starting the Jack server this way will only enable 1 stereo
|
||||||
|
input (Di or Ai) and 1 stereo output (Ao or Do).
|
||||||
|
|
||||||
|
This is due to the following restrictions:
|
||||||
|
* Jack can only open one capture device and one playback device at a time
|
||||||
|
* The Audiophile USB is seen as 2 (or three) Alsa devices: hw:1,0, hw:1,1
|
||||||
|
(and optionally hw:1,2)
|
||||||
|
If you want to get Ai+Di and/or Ao+Do support with Jack, you would need to
|
||||||
|
combine the Alsa devices into one logical "complex" device.
|
||||||
|
|
||||||
|
If you want to give it a try, I recommend reading the information from
|
||||||
|
this page: http://www.sound-man.co.uk/linuxaudio/ice1712multi.html
|
||||||
|
It is related to another device (ice1712) but can be adapted to suit
|
||||||
|
the Audiophile USB.
|
||||||
|
|
||||||
|
Enabling multiple Audiophile USB interfaces for Jackd will certainly require:
|
||||||
|
* patching Jack with the previously mentioned "Big Endian" patch
|
||||||
|
* patching Jackd with the MMAP_COMPLEX patch (see the ice1712 page)
|
||||||
|
* patching the alsa-lib/src/pcm/pcm_multi.c file (see the ice1712 page)
|
||||||
|
* define a multi device (combination of hw:1,0 and hw:1,1) in your .asoundrc
|
||||||
|
file
|
||||||
|
* start jackd with this device
|
||||||
|
|
||||||
|
I had no success in testing this for now, but this may be due to my OS
|
||||||
|
configuration. If you have any success with this kind of setup, please
|
||||||
|
drop me an email.
|
||||||
|
|
Loading…
Reference in a new issue