* asihpi: Control naming
@ 2010-09-30 3:44 Eliot Blennerhassett
2010-09-30 5:46 ` Takashi Iwai
2010-09-30 6:28 ` David Henningsson
0 siblings, 2 replies; 22+ messages in thread
From: Eliot Blennerhassett @ 2010-09-30 3:44 UTC (permalink / raw)
To: alsa-devel; +Cc: Takashi Iwai
Hi all,
I'm struggling with getting the correct names for controls, so that they
show up correctly in the Playback or Capture modes of alsamixer
E.g. "PCM 3 Capture Meter" appears in the playback controls?
How is capture vs playback display determined?
or to put it another way: What are the rules for creating control names.
Here is a reduced schematic of one of our cards (in reality more
channels e.g. 4 physical stereo ins and outs, 12 players, 8 recorders)
All players and inputs are mixed to outputs.
All inputs and players multiplexed to each capture.
How should all these controls be named?
(1)-[vol]--+
(2)-[vol]--+
[play0]--[vol]--[meter]--[mode]--,-[vol]--+----[vol]-[meter]--[level]--[lineout0]
`-[vol]--|-.
| |
.-[vol]--' |
[play1]--[vol]--[meter]--[mode]--'-[vol]----+--[vol]-[meter]--[level]--[lineout1]
(1)-[vol]----+
(2)-[vol]----+
[linein0]-[level]-\ \
mux>-[meter]-(1)-,-------|\
[digitalin0]------/ | mux >--[mode]--[meter]--[cap0]
| ,../
| |
`--|--\
[linein1]-[level]-\ | >--[mode]--[meter]--[cap1]
mux>-[meter]-(2)-----'--/
[digitalin1]------/
notes
[level] means calibrated reference level setting in dBu
[mode] stereo channel modifier
+ summing junction
--|-- wires cross, no join
(1) connect from input to matrix mix output
thanks and regards
--
Eliot Blennerhassett
AudioScience Inc.
^ permalink raw reply [flat|nested] 22+ messages in thread* Re: asihpi: Control naming 2010-09-30 3:44 asihpi: Control naming Eliot Blennerhassett @ 2010-09-30 5:46 ` Takashi Iwai 2010-09-30 20:23 ` Eliot Blennerhassett 2010-09-30 6:28 ` David Henningsson 1 sibling, 1 reply; 22+ messages in thread From: Takashi Iwai @ 2010-09-30 5:46 UTC (permalink / raw) To: Eliot Blennerhassett; +Cc: alsa-devel At Thu, 30 Sep 2010 16:44:14 +1300, Eliot Blennerhassett wrote: > > Hi all, > > I'm struggling with getting the correct names for controls, so that they > show up correctly in the Playback or Capture modes of alsamixer > > E.g. "PCM 3 Capture Meter" appears in the playback controls? > > How is capture vs playback display determined? > or to put it another way: What are the rules for creating control names. The rule is simple. The control name consists of three parts, base-name, direction, and suffix. The direction is either "Playback" or "Capture", and the suffix is either "Volume" or "Switch". Then the direction and the capture are omitted, and grouped together with other controls with the same base name. (There are a few exceptional cases, but in general the rule above is applied.) "PCM 3 Capture Meter" is regarded as a playback control since it has an invalid (unknown) suffix. If it's "PCM 3 Meter Capture Volume", in mixer, it'll become "PCM 3 Meter". Also, you can (better to) use an index for each control, so it can be expressed as "PCM Meter" with index 3, too. Takashi > Here is a reduced schematic of one of our cards (in reality more > channels e.g. 4 physical stereo ins and outs, 12 players, 8 recorders) > All players and inputs are mixed to outputs. > All inputs and players multiplexed to each capture. > > How should all these controls be named? > > > (1)-[vol]--+ > (2)-[vol]--+ > [play0]--[vol]--[meter]--[mode]--,-[vol]--+----[vol]-[meter]--[level]--[lineout0] > `-[vol]--|-. > | | > .-[vol]--' | > [play1]--[vol]--[meter]--[mode]--'-[vol]----+--[vol]-[meter]--[level]--[lineout1] > (1)-[vol]----+ > (2)-[vol]----+ > > [linein0]-[level]-\ \ > mux>-[meter]-(1)-,-------|\ > [digitalin0]------/ | mux >--[mode]--[meter]--[cap0] > | ,../ > | | > `--|--\ > [linein1]-[level]-\ | >--[mode]--[meter]--[cap1] > mux>-[meter]-(2)-----'--/ > [digitalin1]------/ > > notes > [level] means calibrated reference level setting in dBu > [mode] stereo channel modifier > + summing junction > --|-- wires cross, no join > (1) connect from input to matrix mix output > > thanks and regards > > -- > Eliot Blennerhassett > AudioScience Inc. > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-09-30 5:46 ` Takashi Iwai @ 2010-09-30 20:23 ` Eliot Blennerhassett 2010-09-30 20:56 ` Takashi Iwai 2010-09-30 20:56 ` asihpi: Control naming Takashi Iwai 0 siblings, 2 replies; 22+ messages in thread From: Eliot Blennerhassett @ 2010-09-30 20:23 UTC (permalink / raw) Cc: Eliot Blennerhassett, alsa-devel Thanks Takashi, On 30/09/10 18:46, Takashi Iwai wrote: > At Thu, 30 Sep 2010 16:44:14 +1300, > Eliot Blennerhassett wrote: >> >> Hi all, >> >> I'm struggling with getting the correct names for controls, so that they >> show up correctly in the Playback or Capture modes of alsamixer >> >> E.g. "PCM 3 Capture Meter" appears in the playback controls? >> >> How is capture vs playback display determined? >> or to put it another way: What are the rules for creating control names. > > The rule is simple. The control name consists of three parts, > base-name, direction, and suffix. The direction is either "Playback" > or "Capture", and the suffix is either "Volume" or "Switch". > Then the direction and the capture are omitted, and grouped together > with other controls with the same base name. > (There are a few exceptional cases, but in general the rule above is > applied.) > > "PCM 3 Capture Meter" is regarded as a playback control since it has > an invalid (unknown) suffix. If it's "PCM 3 Meter Capture Volume", But it is not a volume, it is a level meter?! We also have controls for tuners, microphones, equalizers, sampleclocks etc. Surely these can't be all "Volume" or "Switch" I'm not sure why the suffix has any bearing on the direction? > in mixer, it'll become "PCM 3 Meter". Also, you can (better to) use > an index for each control, so it can be expressed as "PCM Meter" with > index 3, too. We used to have it this way. It makes sense for the controls attached to the single node e.g. player or lineout. However, it is confusing for identifying the volumes between play1 and lineout0? Without using indices I have (consistent) PCM 0 Playback Volume PCM 1 Playback Volume PCM 0 to Lineout 0 Playback Volume PCM 0 to Lineout 1 Playback Volume PCM 1 to Lineout 0 Playback Volume PCM 1 to Lineout 1 Playback Volume Lineout 0 Playback Volume Lineout 1 Playback Volume with indices (maybe) PCM Playback Volume, 0 PCM Playback Volume, 1 PCM 0 to Lineout 0 Playback Volume PCM 0 to Lineout 1 Playback Volume PCM 1 to Lineout 0 Playback Volume PCM 1 to Lineout 1 Playback Volume Lineout Playback Volume, 0 Lineout Playback Volume, 1 Now, if I could have 2 indices, maybe ... PCM to Lineout Playback Volume, 1, 0 Also, on the input multiplexer (route?), the options are Linein 0 Linein 1 rather than Linein, 0 Linein, 1 I.e. the names match, rather than using indices in one place, and distinct names in another ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-09-30 20:23 ` Eliot Blennerhassett @ 2010-09-30 20:56 ` Takashi Iwai 2010-09-30 21:28 ` Sebastian H. ` (2 more replies) 2010-09-30 20:56 ` asihpi: Control naming Takashi Iwai 1 sibling, 3 replies; 22+ messages in thread From: Takashi Iwai @ 2010-09-30 20:56 UTC (permalink / raw) To: Eliot Blennerhassett; +Cc: Eliot Blennerhassett, alsa-devel At Fri, 01 Oct 2010 09:23:52 +1300, Eliot Blennerhassett wrote: > > Thanks Takashi, > > On 30/09/10 18:46, Takashi Iwai wrote: > > At Thu, 30 Sep 2010 16:44:14 +1300, > > Eliot Blennerhassett wrote: > >> > >> Hi all, > >> > >> I'm struggling with getting the correct names for controls, so that they > >> show up correctly in the Playback or Capture modes of alsamixer > >> > >> E.g. "PCM 3 Capture Meter" appears in the playback controls? > >> > >> How is capture vs playback display determined? > >> or to put it another way: What are the rules for creating control names. > > > > The rule is simple. The control name consists of three parts, > > base-name, direction, and suffix. The direction is either "Playback" > > or "Capture", and the suffix is either "Volume" or "Switch". > > Then the direction and the capture are omitted, and grouped together > > with other controls with the same base name. > > (There are a few exceptional cases, but in general the rule above is > > applied.) > > > > "PCM 3 Capture Meter" is regarded as a playback control since it has > > an invalid (unknown) suffix. If it's "PCM 3 Meter Capture Volume", > > But it is not a volume, it is a level meter?! > We also have controls for tuners, microphones, equalizers, sampleclocks > etc. Surely these can't be all "Volume" or "Switch" > I'm not sure why the suffix has any bearing on the direction? Actually, this control is handled as a "neutral" control without the directional attribute. alsamixer or else may show it in the playback but also may show in capture, too. Maybe the mixer element parser can be improved to look for the direction word to determine the additional direction attribute. If one word of either "Playback" or "Capture" is found, we can assume its direction as such. > > in mixer, it'll become "PCM 3 Meter". Also, you can (better to) use > > an index for each control, so it can be expressed as "PCM Meter" with > > index 3, too. > > We used to have it this way. > It makes sense for the controls attached to the single node e.g. player > or lineout. > However, it is confusing for identifying the volumes between play1 and > lineout0? > > Without using indices I have (consistent) > > PCM 0 Playback Volume > PCM 1 Playback Volume > PCM 0 to Lineout 0 Playback Volume > PCM 0 to Lineout 1 Playback Volume > PCM 1 to Lineout 0 Playback Volume > PCM 1 to Lineout 1 Playback Volume > Lineout 0 Playback Volume > Lineout 1 Playback Volume > > with indices (maybe) > PCM Playback Volume, 0 > PCM Playback Volume, 1 > PCM 0 to Lineout 0 Playback Volume > PCM 0 to Lineout 1 Playback Volume > PCM 1 to Lineout 0 Playback Volume > PCM 1 to Lineout 1 Playback Volume > Lineout Playback Volume, 0 > Lineout Playback Volume, 1 > > Now, if I could have 2 indices, maybe ... > PCM to Lineout Playback Volume, 1, 0 So, you have matrix volumes. We had discussions how to implement the matrix volumes, and there is actually an infrastructure to handle multi-dimension volume arrays. But, no driver is using the feature, IIRC... > Also, on the input multiplexer (route?), the options are > Linein 0 > Linein 1 > > rather than > Linein, 0 > Linein, 1 > > > I.e. the names match, rather than using indices in one place, and > distinct names in another One (known) remaining problem is the matching between an enum item string to a control (or mixer) with an index number. For example, some HD-audio codecs have multiple mics, and a similar problem appears there. Takashi ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-09-30 20:56 ` Takashi Iwai @ 2010-09-30 21:28 ` Sebastian H. 2010-10-01 7:05 ` Clemens Ladisch 2010-09-30 23:47 ` Mark Brown 2010-10-05 5:10 ` Eliot Blennerhassett 2 siblings, 1 reply; 22+ messages in thread From: Sebastian H. @ 2010-09-30 21:28 UTC (permalink / raw) To: Takashi Iwai; +Cc: Eliot Blennerhassett, Eliot Blennerhassett, alsa-devel >>> "PCM 3 Capture Meter" is regarded as a playback control since it has >>> an invalid (unknown) suffix. If it's "PCM 3 Meter Capture Volume", >> >> But it is not a volume, it is a level meter?! >> We also have controls for tuners, microphones, equalizers, sampleclocks >> etc. Surely these can't be all "Volume" or "Switch" >> I'm not sure why the suffix has any bearing on the direction? > > Actually, this control is handled as a "neutral" control without > the directional attribute. alsamixer or else may show it in the > playback but also may show in capture, too. > This is interesting. In alsamixer-qt4 I've just stumbled over enum elements for which both snd_mixer_selem_is_enum_playback and snd_mixer_selem_is_enum_capture return 0/false (2.6.32 kernel emu10k1 chip). May I drop the question in if this state can be considered valid and besides *playback* and *capture* elements there's a third group of *neutral* elements? (On the other hand switches and volumes are always directed.) Right now I handle it by dumping a warning message to stdout and puting it into the playback direction element list. Sebastian ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-09-30 21:28 ` Sebastian H. @ 2010-10-01 7:05 ` Clemens Ladisch 2010-10-01 11:31 ` Sebastian H. 0 siblings, 1 reply; 22+ messages in thread From: Clemens Ladisch @ 2010-10-01 7:05 UTC (permalink / raw) To: Sebastian H.; +Cc: Takashi Iwai, Eliot Blennerhassett, alsa-devel Sebastian H. wrote: > In alsamixer-qt4 I've just stumbled over enum elements for which both > snd_mixer_selem_is_enum_playback and > snd_mixer_selem_is_enum_capture > return 0/false (2.6.32 kernel emu10k1 chip). > > May I drop the question in if this state can be considered valid Yes. > and besides *playback* and *capture* elements there's a third group of > *neutral* elements? Those are elements where the simple mixer code doesn't know the direction (because the driver author didn't put "Playback" or "Capture" into the name). Regards, Clemens ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-10-01 7:05 ` Clemens Ladisch @ 2010-10-01 11:31 ` Sebastian H. 2010-10-01 12:45 ` Raymond Yau 2010-10-01 13:19 ` Clemens Ladisch 0 siblings, 2 replies; 22+ messages in thread From: Sebastian H. @ 2010-10-01 11:31 UTC (permalink / raw) To: Clemens Ladisch; +Cc: Takashi Iwai, Eliot Blennerhassett, alsa-devel Am 01.10.2010 09:05, schrieb Clemens Ladisch: > Sebastian H. wrote: >> In alsamixer-qt4 I've just stumbled over enum elements for which both >> snd_mixer_selem_is_enum_playback and >> snd_mixer_selem_is_enum_capture >> return 0/false (2.6.32 kernel emu10k1 chip). >> >> May I drop the question in if this state can be considered valid > > Yes. > >> and besides *playback* and *capture* elements there's a third group of >> *neutral* elements? > > Those are elements where the simple mixer code doesn't know the > direction (because the driver author didn't put "Playback" or "Capture" > into the name). Ok, but I wonder how to interpret this state in which both functions return zero. 1) There's a bug or uncertainty somewhere in the libs/driver and in a perfekt world this would not happen. It always should be either. 2) This is intentional and the respective element belongs to the group of *general* elements which exists in parallel to the *playback* and the *capture* element groups. As mentioned alsamixer-qt4 considers 1) and handles it somehow gracefully. I just wonder if that is the correct thing to do in case. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-10-01 11:31 ` Sebastian H. @ 2010-10-01 12:45 ` Raymond Yau 2010-10-01 13:19 ` Clemens Ladisch 1 sibling, 0 replies; 22+ messages in thread From: Raymond Yau @ 2010-10-01 12:45 UTC (permalink / raw) To: ALSA Development Mailing List 2010/10/1 Sebastian H. <vand2@gmx.de> > Am 01.10.2010 09:05, schrieb Clemens Ladisch: > > Sebastian H. wrote: > >> In alsamixer-qt4 I've just stumbled over enum elements for which both > >> snd_mixer_selem_is_enum_playback and > >> snd_mixer_selem_is_enum_capture > >> return 0/false (2.6.32 kernel emu10k1 chip). > >> > >> May I drop the question in if this state can be considered valid > > > > Yes. > > > >> and besides *playback* and *capture* elements there's a third group of > >> *neutral* elements? > > > > Those are elements where the simple mixer code doesn't know the > > direction (because the driver author didn't put "Playback" or "Capture" > > into the name). > > Ok, but I wonder how to interpret this state in which both functions > return zero. > > 1) There's a bug or uncertainty somewhere in the libs/driver and > in a perfekt world this would not happen. It always should be either. > > 2) This is intentional and the respective element belongs to the > group of *general* elements which exists in parallel > to the *playback* and the *capture* element groups. > > As mentioned alsamixer-qt4 considers 1) and handles it somehow > gracefully. I just wonder if that is the correct thing to do in case. > But the number of control related to capture is limited 1) Capture Volume 2) Capture Switch 3) Capture Source 4) Input Source 5) Mic Boost 6) ADC attenuation Most of the other controls are related to playback ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-10-01 11:31 ` Sebastian H. 2010-10-01 12:45 ` Raymond Yau @ 2010-10-01 13:19 ` Clemens Ladisch 2010-10-01 20:06 ` Sebastian H. 1 sibling, 1 reply; 22+ messages in thread From: Clemens Ladisch @ 2010-10-01 13:19 UTC (permalink / raw) To: Sebastian H.; +Cc: Takashi Iwai, Eliot Blennerhassett, alsa-devel Sebastian H. wrote: > Am 01.10.2010 09:05, schrieb Clemens Ladisch: > > Those are elements where the simple mixer code doesn't know the > > direction (because the driver author didn't put "Playback" or "Capture" > > into the name). > > Ok, but I wonder how to interpret this state in which both functions > return zero. There are cases where the playback/capture direction is obvious from the name ("just implement an AI!"), but these can be considered bugs. In the other cases, the control really doesn't belong to a direction. (Which doesn't prevent many mixers that have two pages from just throwing them in with the playback controls.) Regards, Clemens ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-10-01 13:19 ` Clemens Ladisch @ 2010-10-01 20:06 ` Sebastian H. 2010-10-02 4:10 ` Raymond Yau 0 siblings, 1 reply; 22+ messages in thread From: Sebastian H. @ 2010-10-01 20:06 UTC (permalink / raw) To: Clemens Ladisch; +Cc: Takashi Iwai, Eliot Blennerhassett, alsa-devel Am 01.10.2010 15:19, schrieb Clemens Ladisch: > Sebastian H. wrote: >> Am 01.10.2010 09:05, schrieb Clemens Ladisch: >>> Those are elements where the simple mixer code doesn't know the >>> direction (because the driver author didn't put "Playback" or "Capture" >>> into the name). >> >> Ok, but I wonder how to interpret this state in which both functions >> return zero. > > There are cases where the playback/capture direction is obvious from the > name ("just implement an AI!"), but these can be considered bugs. Ok, I'll stick to the element name list from Raymond then for an automated detection. > In the other cases, the control really doesn't belong to a direction. > (Which doesn't prevent many mixers that have two pages from just > throwing them in with the playback controls.) Bringing up a separate page for rare *general* elements doesn't seem worthwile then and the *playback* page should be fine. Cheers, Sebastian ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-10-01 20:06 ` Sebastian H. @ 2010-10-02 4:10 ` Raymond Yau 2010-10-02 11:10 ` Sebastian H. 0 siblings, 1 reply; 22+ messages in thread From: Raymond Yau @ 2010-10-02 4:10 UTC (permalink / raw) To: ALSA Development Mailing List 2010/10/2 Sebastian H. <vand2@gmx.de> > Am 01.10.2010 15:19, schrieb Clemens Ladisch: > > Sebastian H. wrote: > >> Am 01.10.2010 09:05, schrieb Clemens Ladisch: > >>> Those are elements where the simple mixer code doesn't know the > >>> direction (because the driver author didn't put "Playback" or "Capture" > >>> into the name). > >> > >> Ok, but I wonder how to interpret this state in which both functions > >> return zero. > > > > There are cases where the playback/capture direction is obvious from the > > name ("just implement an AI!"), but these can be considered bugs. > > Ok, I'll stick to the element name list from Raymond then for an > automated detection. > I just only mention the keywords in those capture controls in sound card drivers. They may have slightly different name (e.g. 'Mic Boost (+20dB)' , 'Front Mic Boost' ) In simple_none.c , it also defined some keywords for stanard ac97 control too some of them are used (e.g. "3D Control - Switch" is regarded a pswitch) but "Depth and Rear Depth are regarded as volume ) Simple mixer control '3D Control - Switch',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control '3D Control Sigmatel - Depth',0 Capabilities: volume volume-joined penum Playback channels: Mono Capture channels: Mono Limits: 0 - 3 Mono: 0 [0%] Simple mixer control '3D Control Sigmatel - Rear Depth',0 Capabilities: volume volume-joined penum Playback channels: Mono Capture channels: Mono Limits: 0 - 3 Mono: 0 [0%] They are just 3D effect and have no dB information. However alsa-python return run-time error when you try to use the function get_volume_range_dB() to find out whether the mixer elem has dB Info or not > > > In the other cases, the control really doesn't belong to a direction. > > (Which doesn't prevent many mixers that have two pages from just > > throwing them in with the playback controls.) > > Bringing up a separate page for rare *general* elements doesn't seem > worthwile then and the *playback* page should be fine. > > Cheers, > Sebastian > > ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-10-02 4:10 ` Raymond Yau @ 2010-10-02 11:10 ` Sebastian H. 0 siblings, 0 replies; 22+ messages in thread From: Sebastian H. @ 2010-10-02 11:10 UTC (permalink / raw) To: Raymond Yau; +Cc: ALSA Development Mailing List Am 02.10.2010 06:10, schrieb Raymond Yau: > 2010/10/2 Sebastian H. <vand2@gmx.de> > >> Am 01.10.2010 15:19, schrieb Clemens Ladisch: >>> Sebastian H. wrote: >>>> Am 01.10.2010 09:05, schrieb Clemens Ladisch: >>>>> Those are elements where the simple mixer code doesn't know the >>>>> direction (because the driver author didn't put "Playback" or "Capture" >>>>> into the name). >>>> >>>> Ok, but I wonder how to interpret this state in which both functions >>>> return zero. >>> >>> There are cases where the playback/capture direction is obvious from the >>> name ("just implement an AI!"), but these can be considered bugs. >> >> Ok, I'll stick to the element name list from Raymond then for an >> automated detection. >> > > I just only mention the keywords in those capture controls in sound card > drivers. > They may have slightly different name (e.g. 'Mic Boost (+20dB)' , 'Front Mic > Boost' ) > For sure, I won't do an exact match comparison but rather look for occurences of a "Mic" strings or so. > In simple_none.c , it also defined some keywords for stanard ac97 control > too Thanks, I'll have a look into that one. The whole issue is probably no big deal at all. In the worst case the elements just ends up in the playback page. > some of them are used (e.g. "3D Control - Switch" is regarded a pswitch) but > "Depth and Rear Depth are regarded as volume ) > > > Simple mixer control '3D Control - Switch',0 > Capabilities: pswitch pswitch-joined penum > Playback channels: Mono > Mono: Playback [off] > Simple mixer control '3D Control Sigmatel - Depth',0 > Capabilities: volume volume-joined penum > Playback channels: Mono > Capture channels: Mono > Limits: 0 - 3 > Mono: 0 [0%] > Simple mixer control '3D Control Sigmatel - Rear Depth',0 > Capabilities: volume volume-joined penum > Playback channels: Mono > Capture channels: Mono > Limits: 0 - 3 > Mono: 0 [0%] > > They are just 3D effect and have no dB information. > > However alsa-python return run-time error when you try to use the function > get_volume_range_dB() to find out whether the mixer elem has dB Info or not The ambiguity can only appear for enum elements because the following functions allow uncertain return value combinations. snd_mixer_selem_is_enumerated ( ... ) snd_mixer_selem_is_enum_playback ( ... ) snd_mixer_selem_is_enum_capture ( ... ) Volumes and Switches are always playback and/or capture because they can be detected by direction aware functions. snd_mixer_selem_has_playback_volume ( ... ) snd_mixer_selem_has_capture_volume ( ... ) snd_mixer_selem_has_playback_switch ( ... ) snd_mixer_selem_has_capture_switch ( ... ) Sebastian ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-09-30 20:56 ` Takashi Iwai 2010-09-30 21:28 ` Sebastian H. @ 2010-09-30 23:47 ` Mark Brown 2010-10-05 5:10 ` Eliot Blennerhassett 2 siblings, 0 replies; 22+ messages in thread From: Mark Brown @ 2010-09-30 23:47 UTC (permalink / raw) To: Takashi Iwai; +Cc: Eliot Blennerhassett, Eliot Blennerhassett, alsa-devel On Thu, Sep 30, 2010 at 10:56:45PM +0200, Takashi Iwai wrote: > So, you have matrix volumes. We had discussions how to implement > the matrix volumes, and there is actually an infrastructure to > handle multi-dimension volume arrays. But, no driver is using the > feature, IIRC... If there was something working well it'd be very useful for embedded stuff where flexible mixers are very common. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-09-30 20:56 ` Takashi Iwai 2010-09-30 21:28 ` Sebastian H. 2010-09-30 23:47 ` Mark Brown @ 2010-10-05 5:10 ` Eliot Blennerhassett 2010-10-05 7:07 ` Clemens Ladisch 2 siblings, 1 reply; 22+ messages in thread From: Eliot Blennerhassett @ 2010-10-05 5:10 UTC (permalink / raw) To: Takashi Iwai; +Cc: Eliot Blennerhassett, alsa-devel On 01/10/10 09:56, Takashi Iwai wrote: > So, you have matrix volumes. We had discussions how to implement > the matrix volumes, and there is actually an infrastructure to > handle multi-dimension volume arrays. But, no driver is using the > feature, IIRC... Further on the subject of playback vs capture vs other... Of course we do have controls that are obviously "Playback" or "Capture", however we also have controls that connect PCM out to PCM in i.e. both Playback and Capture are involved, "PCM0 to PCM1 Playback Capture Volume" .. nooo! "PCM0 to PCM1 Loop Volume" ??? and others that connect linein to lineout ie. neither Capture or Playback involved. "LineIn2 to LineOut3 Volume" maybe "LineIn2 to LineOut3 Loop Volume" ? > >> Also, on the input multiplexer (route?), the options are ... >> I.e. the names match, rather than using indices in one place, and >> distinct names in another > > One (known) remaining problem is the matching between an enum item > string to a control (or mixer) with an index number. Exactly! > For example, > some HD-audio codecs have multiple mics, and a similar problem appears > there. > > > Takashi -- Eliot Blennerhassett AudioScience Inc. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-10-05 5:10 ` Eliot Blennerhassett @ 2010-10-05 7:07 ` Clemens Ladisch 2010-10-05 8:14 ` Eliot Blennerhassett 2010-10-05 8:15 ` Eliot Blennerhassett 0 siblings, 2 replies; 22+ messages in thread From: Clemens Ladisch @ 2010-10-05 7:07 UTC (permalink / raw) To: Eliot Blennerhassett; +Cc: Takashi Iwai, alsa-devel Eliot Blennerhassett wrote: > Further on the subject of playback vs capture vs other... > Of course we do have controls that are obviously "Playback" or "Capture", > however we also have controls that connect PCM out to PCM in i.e. both > Playback and Capture are involved, > > "PCM0 to PCM1 Playback Capture Volume" .. nooo! > "PCM0 to PCM1 Loop Volume" ??? Capture controls affect audio data that is recorded by the computer. Playback controls affect audio data that comes out of the sound card. With this definition, these controls are clearly capture controls, e.g., "PCM0 to PCM1 Loopback Capture Volume". > and others that connect linein to lineout ie. neither Capture or > Playback involved. > > "LineIn2 to LineOut3 Volume" > maybe "LineIn2 to LineOut3 Loop Volume" ? Monitoring controls like these are playback controls: "LineIn2 to LineOut3 Monitor Playback Volume" If your card has so many controls that you need a special mixer application, the exact control names don't matter anyway. Regards, Clemens ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-10-05 7:07 ` Clemens Ladisch @ 2010-10-05 8:14 ` Eliot Blennerhassett 2010-10-05 8:15 ` Eliot Blennerhassett 1 sibling, 0 replies; 22+ messages in thread From: Eliot Blennerhassett @ 2010-10-05 8:14 UTC (permalink / raw) Cc: Takashi Iwai, Eliot Blennerhassett, alsa-devel On 05/10/10 20:07, Clemens Ladisch wrote: > Capture controls affect audio data that is recorded by the computer. > Playback controls affect audio data that comes out of the sound card. OK. I think everything fits one of these two. I find the asymmetry a little odd. (i.e. Capture controls defined by destination of PCM Capture, while Playback controls not defined by source of PCM Playback) I.e. in reality they are "Capture" and "Output" ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-10-05 7:07 ` Clemens Ladisch 2010-10-05 8:14 ` Eliot Blennerhassett @ 2010-10-05 8:15 ` Eliot Blennerhassett 2010-10-05 9:47 ` Clemens Ladisch 1 sibling, 1 reply; 22+ messages in thread From: Eliot Blennerhassett @ 2010-10-05 8:15 UTC (permalink / raw) To: Clemens Ladisch; +Cc: Takashi Iwai, Eliot Blennerhassett, alsa-devel On 05/10/10 20:07, Clemens Ladisch wrote: > Capture controls affect audio data that is recorded by the computer. > Playback controls affect audio data that comes out of the sound card. OK. I think everything fits one of these two. I find the asymmetry a little odd. (i.e. Capture controls defined by destination of PCM Capture, while Playback controls not defined by source of PCM Playback) I.e. in reality they are "Capture" and "Output" -- Eliot Blennerhassett AudioScience Inc. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-10-05 8:15 ` Eliot Blennerhassett @ 2010-10-05 9:47 ` Clemens Ladisch 2010-10-05 9:53 ` Takashi Iwai 2010-10-06 22:55 ` asihpi: Control naming, Irritated Currant edition Eliot Blennerhassett 0 siblings, 2 replies; 22+ messages in thread From: Clemens Ladisch @ 2010-10-05 9:47 UTC (permalink / raw) To: Eliot Blennerhassett; +Cc: Takashi Iwai, alsa-devel Eliot Blennerhassett wrote: > On 05/10/10 20:07, Clemens Ladisch wrote: > > Capture controls affect audio data that is recorded by the computer. > > Playback controls affect audio data that comes out of the sound card. > > OK. I think everything fits one of these two. > > I find the asymmetry a little odd. (i.e. Capture controls defined by > destination of PCM Capture, while Playback controls not defined by > source of PCM Playback) In both cases, it's the destination that determines the type. When it comes to partitioning the controls into two groups according to overall direction, using the destination makes the most sense in practice. > I.e. in reality they are "Capture" and "Output" Yes, but this naming convention is already there for hysterical raisins. Regards, Clemens ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-10-05 9:47 ` Clemens Ladisch @ 2010-10-05 9:53 ` Takashi Iwai 2010-10-06 22:55 ` asihpi: Control naming, Irritated Currant edition Eliot Blennerhassett 1 sibling, 0 replies; 22+ messages in thread From: Takashi Iwai @ 2010-10-05 9:53 UTC (permalink / raw) To: Clemens Ladisch; +Cc: Eliot Blennerhassett, alsa-devel At Tue, 05 Oct 2010 11:47:12 +0200, Clemens Ladisch wrote: > > Eliot Blennerhassett wrote: > > On 05/10/10 20:07, Clemens Ladisch wrote: > > > Capture controls affect audio data that is recorded by the computer. > > > Playback controls affect audio data that comes out of the sound card. > > > > OK. I think everything fits one of these two. > > > > I find the asymmetry a little odd. (i.e. Capture controls defined by > > destination of PCM Capture, while Playback controls not defined by > > source of PCM Playback) > > In both cases, it's the destination that determines the type. > > When it comes to partitioning the controls into two groups according > to overall direction, using the destination makes the most sense in > practice. Yes, basically this is a heuristic mapping to the traditional mixer interface. Not all components match properly, indeed. We need either give compromised element names or implement something new... > > I.e. in reality they are "Capture" and "Output" > > Yes, but this naming convention is already there for hysterical raisins. Still better than angry grapes :) Takashi ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming, Irritated Currant edition 2010-10-05 9:47 ` Clemens Ladisch 2010-10-05 9:53 ` Takashi Iwai @ 2010-10-06 22:55 ` Eliot Blennerhassett 1 sibling, 0 replies; 22+ messages in thread From: Eliot Blennerhassett @ 2010-10-06 22:55 UTC (permalink / raw) To: Clemens Ladisch; +Cc: Takashi Iwai, alsa-devel Thanks for your comments FYI Here is what I now have for ASI6644 mode 1 (4 player) http://audioscience.com/internet/products/sound_cards/asi664x.htm I think it conforms, in that Playback or Capture is the second to last word, and the last word is the control type. (?) Of course I'm open to suggestions how to improve further... numid=1,iface=MIXER,name='Line 0 Capture Level' numid=2,iface=MIXER,name='Line 1 Capture Level' numid=3,iface=MIXER,name='Line 2 Capture Level' numid=4,iface=MIXER,name='Line 3 Capture Level' numid=5,iface=MIXER,name='Digital 0 Capture Format' numid=6,iface=MIXER,name='Digital 0 Capture Status' numid=7,iface=MIXER,name='Digital 1 Capture Format' numid=8,iface=MIXER,name='Digital 1 Capture Status' numid=9,iface=MIXER,name='Digital 2 Capture Format' numid=10,iface=MIXER,name='Digital 2 Capture Status' numid=11,iface=MIXER,name='Digital 3 Capture Format' numid=12,iface=MIXER,name='Digital 3 Capture Status' numid=13,iface=MIXER,name='Clock 0 Capture Format' numid=14,iface=MIXER,name='Clock 0 Capture Status' numid=15,iface=MIXER,name='Line 0 Capture Route' numid=16,iface=MIXER,name='Line 1 Capture Route' numid=17,iface=MIXER,name='Line 2 Capture Route' numid=18,iface=MIXER,name='Line 3 Capture Route' numid=19,iface=MIXER,name='PCM0 Line0 Playback Volume' numid=20,iface=MIXER,name='PCM1 Line0 Playback Volume' numid=21,iface=MIXER,name='PCM2 Line0 Playback Volume' numid=22,iface=MIXER,name='PCM3 Line0 Playback Volume' numid=23,iface=MIXER,name='Line0 Line0 Monitor Playback Volume' numid=24,iface=MIXER,name='Line1 Line0 Monitor Playback Volume' numid=25,iface=MIXER,name='Line2 Line0 Monitor Playback Volume' numid=26,iface=MIXER,name='Line3 Line0 Monitor Playback Volume' numid=27,iface=MIXER,name='Line 0 Playback Volume' numid=28,iface=MIXER,name='PCM0 Line1 Playback Volume' numid=29,iface=MIXER,name='PCM1 Line1 Playback Volume' numid=30,iface=MIXER,name='PCM2 Line1 Playback Volume' numid=31,iface=MIXER,name='PCM3 Line1 Playback Volume' numid=32,iface=MIXER,name='Line0 Line1 Monitor Playback Volume' numid=33,iface=MIXER,name='Line1 Line1 Monitor Playback Volume' numid=34,iface=MIXER,name='Line2 Line1 Monitor Playback Volume' numid=35,iface=MIXER,name='Line3 Line1 Monitor Playback Volume' numid=36,iface=MIXER,name='Line 1 Playback Volume' numid=37,iface=MIXER,name='PCM0 Line2 Playback Volume' numid=38,iface=MIXER,name='PCM1 Line2 Playback Volume' numid=39,iface=MIXER,name='PCM2 Line2 Playback Volume' numid=40,iface=MIXER,name='PCM3 Line2 Playback Volume' numid=41,iface=MIXER,name='Line0 Line2 Monitor Playback Volume' numid=42,iface=MIXER,name='Line1 Line2 Monitor Playback Volume' numid=43,iface=MIXER,name='Line2 Line2 Monitor Playback Volume' numid=44,iface=MIXER,name='Line3 Line2 Monitor Playback Volume' numid=45,iface=MIXER,name='Line 2 Playback Volume' numid=46,iface=MIXER,name='PCM0 Line3 Playback Volume' numid=47,iface=MIXER,name='PCM1 Line3 Playback Volume' numid=48,iface=MIXER,name='PCM2 Line3 Playback Volume' numid=49,iface=MIXER,name='PCM3 Line3 Playback Volume' numid=50,iface=MIXER,name='Line0 Line3 Monitor Playback Volume' numid=51,iface=MIXER,name='Line1 Line3 Monitor Playback Volume' numid=52,iface=MIXER,name='Line2 Line3 Monitor Playback Volume' numid=53,iface=MIXER,name='Line3 Line3 Monitor Playback Volume' numid=54,iface=MIXER,name='Line 3 Playback Volume' numid=55,iface=MIXER,name='PCM 0 Playback Volume' numid=56,iface=MIXER,name='PCM 1 Playback Volume' numid=57,iface=MIXER,name='PCM 2 Playback Volume' numid=58,iface=MIXER,name='PCM 3 Playback Volume' numid=59,iface=MIXER,name='Line 0 Capture Volume' numid=60,iface=MIXER,name='Line 1 Capture Volume' numid=61,iface=MIXER,name='Line 2 Capture Volume' numid=62,iface=MIXER,name='Line 3 Capture Volume' numid=63,iface=MIXER,name='Line 0 Capture Meter' numid=64,iface=MIXER,name='Line 1 Capture Meter' numid=65,iface=MIXER,name='Line 2 Capture Meter' numid=66,iface=MIXER,name='Line 3 Capture Meter' numid=67,iface=MIXER,name='Line 0 Playback Meter' numid=68,iface=MIXER,name='Line 1 Playback Meter' numid=69,iface=MIXER,name='Line 2 Playback Meter' numid=70,iface=MIXER,name='Line 3 Playback Meter' numid=71,iface=MIXER,name='Line0 Line0 Monitor Playback Mode' numid=72,iface=MIXER,name='Line1 Line0 Monitor Playback Mode' numid=73,iface=MIXER,name='Line2 Line0 Monitor Playback Mode' numid=74,iface=MIXER,name='Line3 Line0 Monitor Playback Mode' numid=75,iface=MIXER,name='Line 0 Playback Level' numid=76,iface=MIXER,name='Line 1 Playback Level' numid=77,iface=MIXER,name='Line 2 Playback Level' numid=78,iface=MIXER,name='Line 3 Playback Level' numid=79,iface=MIXER,name='Digital 0 Playback Format' numid=80,iface=MIXER,name='Digital 1 Playback Format' numid=81,iface=MIXER,name='Digital 2 Playback Format' numid=82,iface=MIXER,name='Digital 3 Playback Format' numid=83,iface=MIXER,name='PCM 0 Playback Meter' numid=84,iface=MIXER,name='PCM 1 Playback Meter' numid=85,iface=MIXER,name='PCM 2 Playback Meter' numid=86,iface=MIXER,name='PCM 3 Playback Meter' numid=87,iface=MIXER,name='PCM 0 Playback Mode' numid=88,iface=MIXER,name='PCM 1 Playback Mode' numid=89,iface=MIXER,name='PCM 2 Playback Mode' numid=90,iface=MIXER,name='PCM 3 Playback Mode' numid=91,iface=MIXER,name='PCM 0 Capture Route' numid=92,iface=MIXER,name='PCM 1 Capture Route' numid=93,iface=MIXER,name='PCM 2 Capture Route' numid=94,iface=MIXER,name='PCM 3 Capture Route' numid=95,iface=MIXER,name='PCM 0 Capture Mode' numid=96,iface=MIXER,name='PCM 1 Capture Mode' numid=97,iface=MIXER,name='PCM 2 Capture Mode' numid=98,iface=MIXER,name='PCM 3 Capture Mode' numid=99,iface=MIXER,name='PCM 0 Capture Meter' numid=100,iface=MIXER,name='PCM 1 Capture Meter' numid=101,iface=MIXER,name='PCM 2 Capture Meter' numid=102,iface=MIXER,name='PCM 3 Capture Meter' numid=103,iface=MIXER,name='Clock 0 Capture Source' numid=104,iface=MIXER,name='Clock 0 Capture Localrate' numid=105,iface=MIXER,name='Clock 0 Capture Rate' And example capture source selector numid=93,iface=MIXER,name='PCM 2 Capture Route' ; type=ENUMERATED,access=rw------,values=1,items=8 ; Item #0 'Line 0' ; Item #1 'Line 1' ; Item #2 'Line 2' ; Item #3 'Line 3' ; Item #4 'PCM 0' ; Item #5 'PCM 1' ; Item #6 'PCM 2' ; Item #7 'PCM 3' : values=2 Input analog/digital select. numid=15,iface=MIXER,name='Line 0 Capture Route' ; type=ENUMERATED,access=rw------,values=1,items=2 ; Item #0 'Line 0' ; Item #1 'Digital 0' : values=0 -- Eliot Blennerhassett AudioScience Inc. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-09-30 20:23 ` Eliot Blennerhassett 2010-09-30 20:56 ` Takashi Iwai @ 2010-09-30 20:56 ` Takashi Iwai 1 sibling, 0 replies; 22+ messages in thread From: Takashi Iwai @ 2010-09-30 20:56 UTC (permalink / raw) To: Eliot Blennerhassett; +Cc: Eliot Blennerhassett, alsa-devel At Fri, 01 Oct 2010 09:23:52 +1300, Eliot Blennerhassett wrote: > > Thanks Takashi, > > On 30/09/10 18:46, Takashi Iwai wrote: > > At Thu, 30 Sep 2010 16:44:14 +1300, > > Eliot Blennerhassett wrote: > >> > >> Hi all, > >> > >> I'm struggling with getting the correct names for controls, so that they > >> show up correctly in the Playback or Capture modes of alsamixer > >> > >> E.g. "PCM 3 Capture Meter" appears in the playback controls? > >> > >> How is capture vs playback display determined? > >> or to put it another way: What are the rules for creating control names. > > > > The rule is simple. The control name consists of three parts, > > base-name, direction, and suffix. The direction is either "Playback" > > or "Capture", and the suffix is either "Volume" or "Switch". > > Then the direction and the capture are omitted, and grouped together > > with other controls with the same base name. > > (There are a few exceptional cases, but in general the rule above is > > applied.) > > > > "PCM 3 Capture Meter" is regarded as a playback control since it has > > an invalid (unknown) suffix. If it's "PCM 3 Meter Capture Volume", > > But it is not a volume, it is a level meter?! > We also have controls for tuners, microphones, equalizers, sampleclocks > etc. Surely these can't be all "Volume" or "Switch" > I'm not sure why the suffix has any bearing on the direction? Actually, this control is handled as a "neutral" control without the directional attribute. alsamixer or else may show it in the playback but also may show in capture, too. Maybe the mixer element parser can be improved to look for the direction word to determine the additional direction attribute. If one word of either "Playback" or "Capture" is found, we can assume its direction as such. > > in mixer, it'll become "PCM 3 Meter". Also, you can (better to) use > > an index for each control, so it can be expressed as "PCM Meter" with > > index 3, too. > > We used to have it this way. > It makes sense for the controls attached to the single node e.g. player > or lineout. > However, it is confusing for identifying the volumes between play1 and > lineout0? > > Without using indices I have (consistent) > > PCM 0 Playback Volume > PCM 1 Playback Volume > PCM 0 to Lineout 0 Playback Volume > PCM 0 to Lineout 1 Playback Volume > PCM 1 to Lineout 0 Playback Volume > PCM 1 to Lineout 1 Playback Volume > Lineout 0 Playback Volume > Lineout 1 Playback Volume > > with indices (maybe) > PCM Playback Volume, 0 > PCM Playback Volume, 1 > PCM 0 to Lineout 0 Playback Volume > PCM 0 to Lineout 1 Playback Volume > PCM 1 to Lineout 0 Playback Volume > PCM 1 to Lineout 1 Playback Volume > Lineout Playback Volume, 0 > Lineout Playback Volume, 1 > > Now, if I could have 2 indices, maybe ... > PCM to Lineout Playback Volume, 1, 0 So, you have matrix volumes. We had discussions how to implement the matrix volumes, and there is actually an infrastructure to handle multi-dimension volume arrays. But, no driver is using the feature, IIRC... > Also, on the input multiplexer (route?), the options are > Linein 0 > Linein 1 > > rather than > Linein, 0 > Linein, 1 > > > I.e. the names match, rather than using indices in one place, and > distinct names in another One (known) remaining problem is the matching between an enum item string to a control (or mixer) with an index number. For example, some HD-audio codecs have multiple mics, and a similar problem appears there. Takashi ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: asihpi: Control naming 2010-09-30 3:44 asihpi: Control naming Eliot Blennerhassett 2010-09-30 5:46 ` Takashi Iwai @ 2010-09-30 6:28 ` David Henningsson 1 sibling, 0 replies; 22+ messages in thread From: David Henningsson @ 2010-09-30 6:28 UTC (permalink / raw) To: Eliot Blennerhassett; +Cc: Takashi Iwai, alsa-devel On 2010-09-30 05:44, Eliot Blennerhassett wrote: > Hi all, > > I'm struggling with getting the correct names for controls, so that they > show up correctly in the Playback or Capture modes of alsamixer > > E.g. "PCM 3 Capture Meter" appears in the playback controls? > > How is capture vs playback display determined? > or to put it another way: What are the rules for creating control names. In addition to Takashi's comment, please consider either making your control names compliant with PulseAudio (see earlier post on "alsamixertest" for more information), or make a PulseAudio mixer profile for your card. (At least until UCM is finished enough.) Thanks! -- David Henningsson, Canonical Ltd. http://launchpad.net/~diwic ^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2010-10-06 22:55 UTC | newest] Thread overview: 22+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-09-30 3:44 asihpi: Control naming Eliot Blennerhassett 2010-09-30 5:46 ` Takashi Iwai 2010-09-30 20:23 ` Eliot Blennerhassett 2010-09-30 20:56 ` Takashi Iwai 2010-09-30 21:28 ` Sebastian H. 2010-10-01 7:05 ` Clemens Ladisch 2010-10-01 11:31 ` Sebastian H. 2010-10-01 12:45 ` Raymond Yau 2010-10-01 13:19 ` Clemens Ladisch 2010-10-01 20:06 ` Sebastian H. 2010-10-02 4:10 ` Raymond Yau 2010-10-02 11:10 ` Sebastian H. 2010-09-30 23:47 ` Mark Brown 2010-10-05 5:10 ` Eliot Blennerhassett 2010-10-05 7:07 ` Clemens Ladisch 2010-10-05 8:14 ` Eliot Blennerhassett 2010-10-05 8:15 ` Eliot Blennerhassett 2010-10-05 9:47 ` Clemens Ladisch 2010-10-05 9:53 ` Takashi Iwai 2010-10-06 22:55 ` asihpi: Control naming, Irritated Currant edition Eliot Blennerhassett 2010-09-30 20:56 ` asihpi: Control naming Takashi Iwai 2010-09-30 6:28 ` David Henningsson
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.