All of lore.kernel.org
 help / color / mirror / Atom feed
* Maintaining sound card at a specific frequency
@ 2005-01-16 21:05 Mark Knecht
  2005-01-17  5:14 ` Patrick Shirkey
  2005-01-19  9:07 ` Clemens Ladisch
  0 siblings, 2 replies; 25+ messages in thread
From: Mark Knecht @ 2005-01-16 21:05 UTC (permalink / raw)
  To: alsa-devel

Hi all,
   I have a problem with my currently setup. I've filed a bug in the
Alsa tracker a couple of days ago but I hope there might be some
simple solution to this that only the Alsa developers know.

https://bugtrack.alsa-project.org/alsa-bug/view.php?id=818

The issue is explained in the bug report, but stated in a more general
way, in a multi-PC setup where I'm using ADAT clocking to sync all the
PCs together, there needs to be a way for me to lock down the sample
rate of my sound card and not let applications change it. In the
following setup GSt is sending audio continuously to Pro Tools. The
audio goes through the HDSP 9652 sound card, but not through Linux.
The HDSP 9652 has a hardware mixer and audio data is just roouted
through the hardware. The HDSP 9652 is the master clock for the
system. This works fine.

GSt ====> HDSP 9652 ====> Pro Tools
     
However if I open Mozilla and browse around the Pro Tools side starts
telling me that the ADAT clock is invalid. My suspicion is that the
web page I went to in Mozilla has some sort of audio content on it and
it's not encoded at the frequency I'm running at so Mozilla tries to
change the frequency of the card to adjust. This would make sense in a
single PC setup bu makes no sense in a multi-PC setup like this one.

It does not matter that the apps I'm using on the left and right are
Windows. The problem would be there even if they were Linux.

I guess I'm wondering if there isn't some .asoundrc magic that could
be done in my Linux account on this machine that would tell all
applications (other than Jack for now) to use some virtual device that
handles all frequencies. If that virtual device was the default and
the resampling (for Mozilla/games/whatever) was done in software and
the sound cards frequency was never changed then I think things would
work much better.

Is this possible?

Thanks in advance,
Mark


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-16 21:05 Maintaining sound card at a specific frequency Mark Knecht
@ 2005-01-17  5:14 ` Patrick Shirkey
  2005-01-18 15:50   ` Giuliano Pochini
  2005-01-19 19:59   ` Mark Knecht
  2005-01-19  9:07 ` Clemens Ladisch
  1 sibling, 2 replies; 25+ messages in thread
From: Patrick Shirkey @ 2005-01-17  5:14 UTC (permalink / raw)
  To: Mark Knecht; +Cc: alsa-devel

Quoting Mark Knecht <markknecht@gmail.com>:

>
> I guess I'm wondering if there isn't some .asoundrc magic that could
> be done in my Linux account on this machine that would tell all
> applications (other than Jack for now) to use some virtual device that
> handles all frequencies. If that virtual device was the default and
> the resampling (for Mozilla/games/whatever) was done in software and
> the sound cards frequency was never changed then I think things would
> work much better.
>

I think you can use default as the device name in .asoundrc and it will be used
as the default device for all apps.

Then just give it a plughw instead of hw

ex.


pcm.default {
        type plughw
        card card1
        device 0
}

ctl.default {
        type hw
        card 0
}



 --
 Patrick Shirkey - Boost Hardware Ltd.
 Http://www.boosthardware.com
 Http://www.djcj.org/ - The Linux Audio Users guide
 Http://www.djcj.org/gigs - Gigs Guide Korea
 ========================================

 Being on stage with the band in front of crowds shouting, "Get off! No!
 We want normal music!", I think that was more like acting than anything
 I've ever done.

 Goldie, 8 Nov, 2002
 The Scotsman


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-17  5:14 ` Patrick Shirkey
@ 2005-01-18 15:50   ` Giuliano Pochini
  2005-01-18 16:48     ` Takashi Iwai
  2005-01-19 19:59   ` Mark Knecht
  1 sibling, 1 reply; 25+ messages in thread
From: Giuliano Pochini @ 2005-01-18 15:50 UTC (permalink / raw)
  To: Patrick Shirkey; +Cc: alsa-devel, Mark Knecht


On 17-Jan-2005 Patrick Shirkey wrote:

>> I guess I'm wondering if there isn't some .asoundrc magic that could
>> be done in my Linux account on this machine that would tell all
>> applications (other than Jack for now) to use some virtual device that
>> handles all frequencies. If that virtual device was the default and
>> the resampling (for Mozilla/games/whatever) was done in software and
>> the sound cards frequency was never changed then I think things would
>> work much better.
>>
>
> I think you can use default as the device name in .asoundrc and it
> will be used as the default device for all apps.

IMHO we should think on a good solution for this problem. Some
cards have many channels/voices but the sample rate is common
for all of them. Currently the only clean way to manage it is
a control that locks the sample rate at a given frequency, but
it isn't a nice solution because it requires explicit user
intervention. In the echoaudio driver I implemented a kludge
that automatically locks the sample frequency in order to avoid
unwanted rate changes.


--
Giuliano.


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 15:50   ` Giuliano Pochini
@ 2005-01-18 16:48     ` Takashi Iwai
  2005-01-18 17:01       ` Mark Knecht
  2005-01-18 17:31       ` Giuliano Pochini
  0 siblings, 2 replies; 25+ messages in thread
From: Takashi Iwai @ 2005-01-18 16:48 UTC (permalink / raw)
  To: Giuliano Pochini; +Cc: Patrick Shirkey, alsa-devel, Mark Knecht

At Tue, 18 Jan 2005 16:50:36 +0100 (CET),
Giuliano Pochini wrote:
> 
> 
> On 17-Jan-2005 Patrick Shirkey wrote:
> 
> >> I guess I'm wondering if there isn't some .asoundrc magic that could
> >> be done in my Linux account on this machine that would tell all
> >> applications (other than Jack for now) to use some virtual device that
> >> handles all frequencies. If that virtual device was the default and
> >> the resampling (for Mozilla/games/whatever) was done in software and
> >> the sound cards frequency was never changed then I think things would
> >> work much better.
> >>
> >
> > I think you can use default as the device name in .asoundrc and it
> > will be used as the default device for all apps.
> 
> IMHO we should think on a good solution for this problem. Some
> cards have many channels/voices but the sample rate is common
> for all of them. Currently the only clean way to manage it is
> a control that locks the sample rate at a given frequency, but
> it isn't a nice solution because it requires explicit user
> intervention. In the echoaudio driver I implemented a kludge
> that automatically locks the sample frequency in order to avoid
> unwanted rate changes.

You can add a control to lock the sample rate (e.g. ICE1712).


Takashi


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 16:48     ` Takashi Iwai
@ 2005-01-18 17:01       ` Mark Knecht
  2005-01-18 17:08         ` Takashi Iwai
  2005-01-18 17:31       ` Giuliano Pochini
  1 sibling, 1 reply; 25+ messages in thread
From: Mark Knecht @ 2005-01-18 17:01 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Giuliano Pochini, Patrick Shirkey, alsa-devel

On Tue, 18 Jan 2005 17:48:30 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> At Tue, 18 Jan 2005 16:50:36 +0100 (CET),
> Giuliano Pochini wrote:
> >
> >
> > On 17-Jan-2005 Patrick Shirkey wrote:
> >
> > >> I guess I'm wondering if there isn't some .asoundrc magic that could
> > >> be done in my Linux account on this machine that would tell all
> > >> applications (other than Jack for now) to use some virtual device that
> > >> handles all frequencies. If that virtual device was the default and
> > >> the resampling (for Mozilla/games/whatever) was done in software and
> > >> the sound cards frequency was never changed then I think things would
> > >> work much better.
> > >>
> > >
> > > I think you can use default as the device name in .asoundrc and it
> > > will be used as the default device for all apps.
> >
> > IMHO we should think on a good solution for this problem. Some
> > cards have many channels/voices but the sample rate is common
> > for all of them. Currently the only clean way to manage it is
> > a control that locks the sample rate at a given frequency, but
> > it isn't a nice solution because it requires explicit user
> > intervention. In the echoaudio driver I implemented a kludge
> > that automatically locks the sample frequency in order to avoid
> > unwanted rate changes.
> 
> You can add a control to lock the sample rate (e.g. ICE1712).
> 
> 
> Takashi
> 

That could be a good solution if it would also set the initial
frequency of the card.

Right now I have to manually set the HDSP 9652's frequency to 44.1K
every time I boot to get the ADAT network to the right frequency.
While other may like 48K for audio work those of us that work alot
with samplers are far more bound by the frequency that the samples
were recorded. This, in the case of GigaSampler and LinuxSampler, is
always 44.1K and the HDSP 9652 always comes up at 48K.

To be clear, I think this problem will effect more people in the
future and the solution should be general in format and enforced by
the Alsa management team for all cards. The default can be unlocked if
you like, and that probably works better for the stand alone
workstation.

- Mark


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 17:01       ` Mark Knecht
@ 2005-01-18 17:08         ` Takashi Iwai
  2005-01-18 17:12           ` Mark Knecht
  2005-01-18 17:48           ` Takashi Iwai
  0 siblings, 2 replies; 25+ messages in thread
From: Takashi Iwai @ 2005-01-18 17:08 UTC (permalink / raw)
  To: Mark Knecht; +Cc: Giuliano Pochini, Patrick Shirkey, alsa-devel

At Tue, 18 Jan 2005 09:01:21 -0800,
Mark Knecht wrote:
> 
> On Tue, 18 Jan 2005 17:48:30 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> > At Tue, 18 Jan 2005 16:50:36 +0100 (CET),
> > Giuliano Pochini wrote:
> > >
> > >
> > > On 17-Jan-2005 Patrick Shirkey wrote:
> > >
> > > >> I guess I'm wondering if there isn't some .asoundrc magic that could
> > > >> be done in my Linux account on this machine that would tell all
> > > >> applications (other than Jack for now) to use some virtual device that
> > > >> handles all frequencies. If that virtual device was the default and
> > > >> the resampling (for Mozilla/games/whatever) was done in software and
> > > >> the sound cards frequency was never changed then I think things would
> > > >> work much better.
> > > >>
> > > >
> > > > I think you can use default as the device name in .asoundrc and it
> > > > will be used as the default device for all apps.
> > >
> > > IMHO we should think on a good solution for this problem. Some
> > > cards have many channels/voices but the sample rate is common
> > > for all of them. Currently the only clean way to manage it is
> > > a control that locks the sample rate at a given frequency, but
> > > it isn't a nice solution because it requires explicit user
> > > intervention. In the echoaudio driver I implemented a kludge
> > > that automatically locks the sample frequency in order to avoid
> > > unwanted rate changes.
> > 
> > You can add a control to lock the sample rate (e.g. ICE1712).
> > 
> > 
> > Takashi
> > 
> 
> That could be a good solution if it would also set the initial
> frequency of the card.

The system clock of HDSP can be set via control API.  So, it works
like:
	amixer cset iface=PCM,name="Sample Clock Source" "Internal 48.0 kHz"

If this works like you want, only the locking is missing...


Takashi


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 17:08         ` Takashi Iwai
@ 2005-01-18 17:12           ` Mark Knecht
  2005-01-18 17:15             ` Takashi Iwai
  2005-01-18 17:48           ` Takashi Iwai
  1 sibling, 1 reply; 25+ messages in thread
From: Mark Knecht @ 2005-01-18 17:12 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On Tue, 18 Jan 2005 18:08:50 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> At Tue, 18 Jan 2005 09:01:21 -0800,
> Mark Knecht wrote:
> >
> > On Tue, 18 Jan 2005 17:48:30 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> > > At Tue, 18 Jan 2005 16:50:36 +0100 (CET),
> > > Giuliano Pochini wrote:
> > > >
> > > >
> > > > On 17-Jan-2005 Patrick Shirkey wrote:
> > > >
> > > > >> I guess I'm wondering if there isn't some .asoundrc magic that could
> > > > >> be done in my Linux account on this machine that would tell all
> > > > >> applications (other than Jack for now) to use some virtual device that
> > > > >> handles all frequencies. If that virtual device was the default and
> > > > >> the resampling (for Mozilla/games/whatever) was done in software and
> > > > >> the sound cards frequency was never changed then I think things would
> > > > >> work much better.
> > > > >>
> > > > >
> > > > > I think you can use default as the device name in .asoundrc and it
> > > > > will be used as the default device for all apps.
> > > >
> > > > IMHO we should think on a good solution for this problem. Some
> > > > cards have many channels/voices but the sample rate is common
> > > > for all of them. Currently the only clean way to manage it is
> > > > a control that locks the sample rate at a given frequency, but
> > > > it isn't a nice solution because it requires explicit user
> > > > intervention. In the echoaudio driver I implemented a kludge
> > > > that automatically locks the sample frequency in order to avoid
> > > > unwanted rate changes.
> > >
> > > You can add a control to lock the sample rate (e.g. ICE1712).
> > >
> > >
> > > Takashi
> > >
> >
> > That could be a good solution if it would also set the initial
> > frequency of the card.
> 
> The system clock of HDSP can be set via control API.  So, it works
> like:
>         amixer cset iface=PCM,name="Sample Clock Source" "Internal 48.0 kHz"
> 
> If this works like you want, only the locking is missing...
> 

Unfortunately it set it to Autosync, not 48K. I tried 44.1K also but
it jsut stays at Autosync. Here's what I see in the terminal:

[mark@Godzilla mark]$ amixer cset iface=PCM,name="Sample Clock Source"
"Internal 48.0 kHz"
numid=11,iface=PCM,name='Sample Clock Source'
  ; type=ENUMERATED,access=rw---,values=1,items=7
  ; Item #0 'AutoSync'
  ; Item #1 'Internal 32.0 kHz'
  ; Item #2 'Internal 44.1 kHz'
  ; Item #3 'Internal 48.0 kHz'
  ; Item #4 'Internal 64.0 kHz'
  ; Item #5 'Internal 88.2 kHz'
  ; Item #6 'Internal 96.0 kHz'
  : values=0
[mark@Godzilla mark]$

Maybe a different form of the command somehow?

- Mark


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 17:12           ` Mark Knecht
@ 2005-01-18 17:15             ` Takashi Iwai
  2005-01-18 17:43               ` Mark Knecht
  0 siblings, 1 reply; 25+ messages in thread
From: Takashi Iwai @ 2005-01-18 17:15 UTC (permalink / raw)
  To: Mark Knecht; +Cc: alsa-devel

At Tue, 18 Jan 2005 09:12:44 -0800,
Mark Knecht wrote:
> 
> On Tue, 18 Jan 2005 18:08:50 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> > At Tue, 18 Jan 2005 09:01:21 -0800,
> > Mark Knecht wrote:
> > >
> > > On Tue, 18 Jan 2005 17:48:30 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> > > > At Tue, 18 Jan 2005 16:50:36 +0100 (CET),
> > > > Giuliano Pochini wrote:
> > > > >
> > > > >
> > > > > On 17-Jan-2005 Patrick Shirkey wrote:
> > > > >
> > > > > >> I guess I'm wondering if there isn't some .asoundrc magic that could
> > > > > >> be done in my Linux account on this machine that would tell all
> > > > > >> applications (other than Jack for now) to use some virtual device that
> > > > > >> handles all frequencies. If that virtual device was the default and
> > > > > >> the resampling (for Mozilla/games/whatever) was done in software and
> > > > > >> the sound cards frequency was never changed then I think things would
> > > > > >> work much better.
> > > > > >>
> > > > > >
> > > > > > I think you can use default as the device name in .asoundrc and it
> > > > > > will be used as the default device for all apps.
> > > > >
> > > > > IMHO we should think on a good solution for this problem. Some
> > > > > cards have many channels/voices but the sample rate is common
> > > > > for all of them. Currently the only clean way to manage it is
> > > > > a control that locks the sample rate at a given frequency, but
> > > > > it isn't a nice solution because it requires explicit user
> > > > > intervention. In the echoaudio driver I implemented a kludge
> > > > > that automatically locks the sample frequency in order to avoid
> > > > > unwanted rate changes.
> > > >
> > > > You can add a control to lock the sample rate (e.g. ICE1712).
> > > >
> > > >
> > > > Takashi
> > > >
> > >
> > > That could be a good solution if it would also set the initial
> > > frequency of the card.
> > 
> > The system clock of HDSP can be set via control API.  So, it works
> > like:
> >         amixer cset iface=PCM,name="Sample Clock Source" "Internal 48.0 kHz"
> > 
> > If this works like you want, only the locking is missing...
> > 
> 
> Unfortunately it set it to Autosync, not 48K. I tried 44.1K also but
> it jsut stays at Autosync. Here's what I see in the terminal:

Ah, my mistake.  Try
	amixer cset iface=PCM,name="Sample Clock Source" 3


Takashi


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 16:48     ` Takashi Iwai
  2005-01-18 17:01       ` Mark Knecht
@ 2005-01-18 17:31       ` Giuliano Pochini
  2005-01-18 17:40         ` Takashi Iwai
  2005-01-18 17:45         ` Mark Knecht
  1 sibling, 2 replies; 25+ messages in thread
From: Giuliano Pochini @ 2005-01-18 17:31 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Patrick Shirkey, alsa-devel, Mark Knecht



On Tue, 18 Jan 2005, Takashi Iwai wrote:

> > IMHO we should think on a good solution for this problem. Some
> > cards have many channels/voices but the sample rate is common
> > for all of them. Currently the only clean way to manage it is
> > a control that locks the sample rate at a given frequency, but
> > it isn't a nice solution because it requires explicit user
> > intervention. In the echoaudio driver I implemented a kludge
> > that automatically locks the sample frequency in order to avoid
> > unwanted rate changes.
>
> You can add a control to lock the sample rate (e.g. ICE1712).

Yep, I know, but it's not part of the pcm API: applications do not
lock the sample rate themselves. The user has to do it manually. This is
why I choosed an alternate solution. If apps were able to lock the rate it
would be very useful. It may need some help from the driver, though.


--
Giuliano.


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 17:31       ` Giuliano Pochini
@ 2005-01-18 17:40         ` Takashi Iwai
  2005-01-19 10:07           ` Giuliano Pochini
  2005-01-18 17:45         ` Mark Knecht
  1 sibling, 1 reply; 25+ messages in thread
From: Takashi Iwai @ 2005-01-18 17:40 UTC (permalink / raw)
  To: Giuliano Pochini; +Cc: Patrick Shirkey, alsa-devel, Mark Knecht

At Tue, 18 Jan 2005 18:31:28 +0100 (CET),
Giuliano Pochini wrote:
> 
> 
> 
> On Tue, 18 Jan 2005, Takashi Iwai wrote:
> 
> > > IMHO we should think on a good solution for this problem. Some
> > > cards have many channels/voices but the sample rate is common
> > > for all of them. Currently the only clean way to manage it is
> > > a control that locks the sample rate at a given frequency, but
> > > it isn't a nice solution because it requires explicit user
> > > intervention. In the echoaudio driver I implemented a kludge
> > > that automatically locks the sample frequency in order to avoid
> > > unwanted rate changes.
> >
> > You can add a control to lock the sample rate (e.g. ICE1712).
> 
> Yep, I know, but it's not part of the pcm API: applications do not
> lock the sample rate themselves. The user has to do it manually. This is
> why I choosed an alternate solution. If apps were able to lock the rate it
> would be very useful. It may need some help from the driver, though.

I think this is above the PCM API since this influences the whole
system.  It's fine to add a new API call in alsa-lib, just as a
wrapper to toggle such a  control, though...


Takashi


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 17:15             ` Takashi Iwai
@ 2005-01-18 17:43               ` Mark Knecht
  0 siblings, 0 replies; 25+ messages in thread
From: Mark Knecht @ 2005-01-18 17:43 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On Tue, 18 Jan 2005 18:15:41 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> At Tue, 18 Jan 2005 09:12:44 -0800,
> Mark Knecht wrote:
> >
> > On Tue, 18 Jan 2005 18:08:50 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> > > At Tue, 18 Jan 2005 09:01:21 -0800,
> > > Mark Knecht wrote:
> > > >
> > > > On Tue, 18 Jan 2005 17:48:30 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> > > > > At Tue, 18 Jan 2005 16:50:36 +0100 (CET),
> > > > > Giuliano Pochini wrote:
> > > > > >
> > > > > >
> > > > > > On 17-Jan-2005 Patrick Shirkey wrote:
> > > > > >
> > > > > > >> I guess I'm wondering if there isn't some .asoundrc magic that could
> > > > > > >> be done in my Linux account on this machine that would tell all
> > > > > > >> applications (other than Jack for now) to use some virtual device that
> > > > > > >> handles all frequencies. If that virtual device was the default and
> > > > > > >> the resampling (for Mozilla/games/whatever) was done in software and
> > > > > > >> the sound cards frequency was never changed then I think things would
> > > > > > >> work much better.
> > > > > > >>
> > > > > > >
> > > > > > > I think you can use default as the device name in .asoundrc and it
> > > > > > > will be used as the default device for all apps.
> > > > > >
> > > > > > IMHO we should think on a good solution for this problem. Some
> > > > > > cards have many channels/voices but the sample rate is common
> > > > > > for all of them. Currently the only clean way to manage it is
> > > > > > a control that locks the sample rate at a given frequency, but
> > > > > > it isn't a nice solution because it requires explicit user
> > > > > > intervention. In the echoaudio driver I implemented a kludge
> > > > > > that automatically locks the sample frequency in order to avoid
> > > > > > unwanted rate changes.
> > > > >
> > > > > You can add a control to lock the sample rate (e.g. ICE1712).
> > > > >
> > > > >
> > > > > Takashi
> > > > >
> > > >
> > > > That could be a good solution if it would also set the initial
> > > > frequency of the card.
> > >
> > > The system clock of HDSP can be set via control API.  So, it works
> > > like:
> > >         amixer cset iface=PCM,name="Sample Clock Source" "Internal 48.0 kHz"
> > >
> > > If this works like you want, only the locking is missing...
> > >
> >
> > Unfortunately it set it to Autosync, not 48K. I tried 44.1K also but
> > it jsut stays at Autosync. Here's what I see in the terminal:
> 
> Ah, my mistake.  Try
>         amixer cset iface=PCM,name="Sample Clock Source" 3
> 

Yes, that works fine, so I'll add that to rc.local or someplace like that.

I suppose that there must be some way to do this with the hdspmixer
settings? Currently I have to run hdspmixer once to get the card
turned on at all. Can I somehow capture the current settings into a
file and then execute a bunch of commands to get things set up
slightly after boot?

thanks,
Mark


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 17:31       ` Giuliano Pochini
  2005-01-18 17:40         ` Takashi Iwai
@ 2005-01-18 17:45         ` Mark Knecht
  2005-01-18 19:51           ` Takashi Iwai
  2005-01-18 21:30           ` Lee Revell
  1 sibling, 2 replies; 25+ messages in thread
From: Mark Knecht @ 2005-01-18 17:45 UTC (permalink / raw)
  To: Giuliano Pochini; +Cc: alsa-devel

On Tue, 18 Jan 2005 18:31:28 +0100 (CET), Giuliano Pochini
<pochini@denise.shiny.it> wrote:
> 
> 
> On Tue, 18 Jan 2005, Takashi Iwai wrote:
> 
> > > IMHO we should think on a good solution for this problem. Some
> > > cards have many channels/voices but the sample rate is common
> > > for all of them. Currently the only clean way to manage it is
> > > a control that locks the sample rate at a given frequency, but
> > > it isn't a nice solution because it requires explicit user
> > > intervention. In the echoaudio driver I implemented a kludge
> > > that automatically locks the sample frequency in order to avoid
> > > unwanted rate changes.
> >
> > You can add a control to lock the sample rate (e.g. ICE1712).
> 
> Yep, I know, but it's not part of the pcm API: applications do not
> lock the sample rate themselves. The user has to do it manually. This is
> why I choosed an alternate solution. If apps were able to lock the rate it
> would be very useful. It may need some help from the driver, though.
> 
But that sort of application level control is actually what's causing
me problems. Mozilla browses around and changes the frequency of the
card, independent of what the overall system architecture requires.

Again, I think you're probably right about this issue for a completely
stand-alone system, but for a multi-PC system I think some sort of
plughw solution that resamples in software when necessary would work
better for me and Mozilla.

thanks,
Mark


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 17:08         ` Takashi Iwai
  2005-01-18 17:12           ` Mark Knecht
@ 2005-01-18 17:48           ` Takashi Iwai
  2005-01-18 18:04             ` Mark Knecht
  1 sibling, 1 reply; 25+ messages in thread
From: Takashi Iwai @ 2005-01-18 17:48 UTC (permalink / raw)
  To: Mark Knecht; +Cc: Giuliano Pochini, Patrick Shirkey, alsa-devel

[-- Attachment #1: Type: text/plain, Size: 298 bytes --]

At Tue, 18 Jan 2005 18:08:50 +0100,
I wrote:
> 
> If this works like you want, only the locking is missing...

The attached is an experimental patch to add this feature.
You can lock system clock via

	amixer cset iface=PCM,name="System Clock Source Locking" on

It's untested, as usual.


Takashi

[-- Attachment #2: Type: text/plain, Size: 4643 bytes --]

Index: alsa-kernel/pci/rme9652/hdsp.c
===================================================================
RCS file: /suse/tiwai/cvs/alsa/alsa-kernel/pci/rme9652/hdsp.c,v
retrieving revision 1.81
diff -u -r1.81 hdsp.c
--- alsa-kernel/pci/rme9652/hdsp.c	14 Jan 2005 19:50:48 -0000	1.81
+++ alsa-kernel/pci/rme9652/hdsp.c	18 Jan 2005 17:44:54 -0000
@@ -450,6 +450,7 @@
 	u32                   control2_register;     /* cached value */
 	u32                   creg_spdif;
 	u32                   creg_spdif_stream;
+	int                   clock_source_locked;
 	char                 *card_name;	     /* digiface/multiface */
 	HDSP_IO_Type          io_type;               /* ditto, but for code use */
         unsigned short        firmware_rev;
@@ -2159,7 +2160,7 @@
 	    if (val > 6) val = 6;
 	}
 	spin_lock_irq(&hdsp->lock);
-	if (val != hdsp_clock_source(hdsp)) {
+	if (val != hdsp_clock_source(hdsp) && ! hdsp->clock_source_locked) {
 		change = (hdsp_set_clock_source(hdsp, val) == 0) ? 1 : 0;
 	} else {
 		change = 0;
@@ -2168,6 +2169,34 @@
 	return change;
 }
 
+static int snd_hdsp_info_clock_source_lock(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+{
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
+	uinfo->count = 1;
+	uinfo->value.integer.min = 0;
+	uinfo->value.integer.max = 1;
+	return 0;
+}
+
+static int snd_hdsp_get_clock_source_lock(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+	hdsp_t *hdsp = snd_kcontrol_chip(kcontrol);
+	
+	ucontrol->value.integer.value[0] = hdsp->clock_source_locked;
+	return 0;
+}
+
+static int snd_hdsp_put_clock_source_lock(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+	hdsp_t *hdsp = snd_kcontrol_chip(kcontrol);
+	int change;
+
+	change = (int)ucontrol->value.integer.value[0] != hdsp->clock_source_locked;
+	if (change)
+		hdsp->clock_source_locked = ucontrol->value.integer.value[0];
+	return change;
+}
+
 #define HDSP_DA_GAIN(xname, xindex) \
 { .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
   .name = xname, \
@@ -3129,6 +3158,13 @@
 HDSP_SPDIF_NON_AUDIO("IEC958 Non-audio Bit", 0),
 /* 'Sample Clock Source' complies with the alsa control naming scheme */ 
 HDSP_CLOCK_SOURCE("Sample Clock Source", 0),
+{
+	.iface = SNDRV_CTL_ELEM_IFACE_PCM,
+	.name = "Sample Clock Source Locking",
+	.info = snd_hdsp_info_clock_source_lock,
+	.get = snd_hdsp_get_clock_source_lock,
+	.put = snd_hdsp_put_clock_source_lock,
+},
 HDSP_SYSTEM_CLOCK_MODE("System Clock Mode", 0),
 HDSP_PREF_SYNC_REF("Preferred Sync Reference", 0),
 HDSP_AUTOSYNC_REF("AutoSync Reference", 0),
@@ -3360,6 +3396,7 @@
 	snd_iprintf (buffer, "System Clock Mode: %s\n", system_clock_mode);
 
 	snd_iprintf (buffer, "System Clock Frequency: %d\n", hdsp->system_sample_rate);
+	snd_iprintf (buffer, "System Clock Locked: %s\n", hdsp->clock_source_locked ? "Yes" : "No");
 		
 	snd_iprintf(buffer, "\n");
 
@@ -3882,21 +3919,19 @@
 		spin_unlock_irq(&hdsp->lock);
  		return 0;
 
-	} else {
-		spin_unlock_irq(&hdsp->lock);
 	}
 
 	/* how to make sure that the rate matches an externally-set one ?
 	 */
 
-	spin_lock_irq(&hdsp->lock);
-	if ((err = hdsp_set_rate(hdsp, params_rate(params), 0)) < 0) {
-		spin_unlock_irq(&hdsp->lock);
-		_snd_pcm_hw_param_setempty(params, SNDRV_PCM_HW_PARAM_RATE);
-		return err;
-	} else {
-		spin_unlock_irq(&hdsp->lock);
+	if (! hdsp->clock_source_locked) {
+		if ((err = hdsp_set_rate(hdsp, params_rate(params), 0)) < 0) {
+			spin_unlock_irq(&hdsp->lock);
+			_snd_pcm_hw_param_setempty(params, SNDRV_PCM_HW_PARAM_RATE);
+			return err;
+		}
 	}
+	spin_unlock_irq(&hdsp->lock);
 
 	if ((err = hdsp_set_interrupt_interval(hdsp, params_period_size(params))) < 0) {
 		_snd_pcm_hw_param_setempty(params, SNDRV_PCM_HW_PARAM_PERIOD_SIZE);
@@ -4318,13 +4353,17 @@
 
 	snd_pcm_hw_constraint_msbits(runtime, 0, 32, 24);
 	snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_SIZE, &hdsp_hw_constraints_period_sizes);
-	if (hdsp->io_type == H9632) {
-		runtime->hw.channels_min = hdsp->qs_out_channels;
-		runtime->hw.channels_max = hdsp->ss_out_channels;
+	if (hdsp->clock_source_locked) {
+		runtime->hw.rate_min = runtime->hw.rate_max = hdsp->system_sample_rate;
+	} else if (hdsp->io_type == H9632) {
 		runtime->hw.rate_max = 192000;
 		runtime->hw.rates = SNDRV_PCM_RATE_KNOT;
 		snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, &hdsp_hw_constraints_9632_sample_rates);
 	}
+	if (hdsp->io_type == H9632) {
+		runtime->hw.channels_min = hdsp->qs_out_channels;
+		runtime->hw.channels_max = hdsp->ss_out_channels;
+	}	
 	
 	snd_pcm_hw_rule_add(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS,
 			     snd_hdsp_hw_rule_out_channels, hdsp,

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 17:48           ` Takashi Iwai
@ 2005-01-18 18:04             ` Mark Knecht
  0 siblings, 0 replies; 25+ messages in thread
From: Mark Knecht @ 2005-01-18 18:04 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Giuliano Pochini, Patrick Shirkey, alsa-devel

Takashi,
   Since I'm on a PlanetCCRMA box I don't even have Alsa source code.
It would be quite difficult for me to test this in any short time.

   Possibly someone else out there with an HDSP box or card can do this?

Sorry,
Mark


On Tue, 18 Jan 2005 18:48:32 +0100, Takashi Iwai <tiwai@suse.de> wrote:
> At Tue, 18 Jan 2005 18:08:50 +0100,
> I wrote:
> >
> > If this works like you want, only the locking is missing...
> 
> The attached is an experimental patch to add this feature.
> You can lock system clock via
> 
>         amixer cset iface=PCM,name="System Clock Source Locking" on
> 
> It's untested, as usual.
> 
> 
> Takashi
> 
> 
> Index: alsa-kernel/pci/rme9652/hdsp.c
> ===================================================================
> RCS file: /suse/tiwai/cvs/alsa/alsa-kernel/pci/rme9652/hdsp.c,v
> retrieving revision 1.81
> diff -u -r1.81 hdsp.c
> --- alsa-kernel/pci/rme9652/hdsp.c      14 Jan 2005 19:50:48 -0000      1.81
> +++ alsa-kernel/pci/rme9652/hdsp.c      18 Jan 2005 17:44:54 -0000
> @@ -450,6 +450,7 @@
>         u32                   control2_register;     /* cached value */
>         u32                   creg_spdif;
>         u32                   creg_spdif_stream;
> +       int                   clock_source_locked;
>         char                 *card_name;             /* digiface/multiface */
>         HDSP_IO_Type          io_type;               /* ditto, but for code use */
>          unsigned short        firmware_rev;
> @@ -2159,7 +2160,7 @@
>             if (val > 6) val = 6;
>         }
>         spin_lock_irq(&hdsp->lock);
> -       if (val != hdsp_clock_source(hdsp)) {
> +       if (val != hdsp_clock_source(hdsp) && ! hdsp->clock_source_locked) {
>                 change = (hdsp_set_clock_source(hdsp, val) == 0) ? 1 : 0;
>         } else {
>                 change = 0;
> @@ -2168,6 +2169,34 @@
>         return change;
>  }
> 
> +static int snd_hdsp_info_clock_source_lock(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
> +{
> +       uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
> +       uinfo->count = 1;
> +       uinfo->value.integer.min = 0;
> +       uinfo->value.integer.max = 1;
> +       return 0;
> +}
> +
> +static int snd_hdsp_get_clock_source_lock(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
> +{
> +       hdsp_t *hdsp = snd_kcontrol_chip(kcontrol);
> +
> +       ucontrol->value.integer.value[0] = hdsp->clock_source_locked;
> +       return 0;
> +}
> +
> +static int snd_hdsp_put_clock_source_lock(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
> +{
> +       hdsp_t *hdsp = snd_kcontrol_chip(kcontrol);
> +       int change;
> +
> +       change = (int)ucontrol->value.integer.value[0] != hdsp->clock_source_locked;
> +       if (change)
> +               hdsp->clock_source_locked = ucontrol->value.integer.value[0];
> +       return change;
> +}
> +
>  #define HDSP_DA_GAIN(xname, xindex) \
>  { .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
>    .name = xname, \
> @@ -3129,6 +3158,13 @@
>  HDSP_SPDIF_NON_AUDIO("IEC958 Non-audio Bit", 0),
>  /* 'Sample Clock Source' complies with the alsa control naming scheme */
>  HDSP_CLOCK_SOURCE("Sample Clock Source", 0),
> +{
> +       .iface = SNDRV_CTL_ELEM_IFACE_PCM,
> +       .name = "Sample Clock Source Locking",
> +       .info = snd_hdsp_info_clock_source_lock,
> +       .get = snd_hdsp_get_clock_source_lock,
> +       .put = snd_hdsp_put_clock_source_lock,
> +},
>  HDSP_SYSTEM_CLOCK_MODE("System Clock Mode", 0),
>  HDSP_PREF_SYNC_REF("Preferred Sync Reference", 0),
>  HDSP_AUTOSYNC_REF("AutoSync Reference", 0),
> @@ -3360,6 +3396,7 @@
>         snd_iprintf (buffer, "System Clock Mode: %s\n", system_clock_mode);
> 
>         snd_iprintf (buffer, "System Clock Frequency: %d\n", hdsp->system_sample_rate);
> +       snd_iprintf (buffer, "System Clock Locked: %s\n", hdsp->clock_source_locked ? "Yes" : "No");
> 
>         snd_iprintf(buffer, "\n");
> 
> @@ -3882,21 +3919,19 @@
>                 spin_unlock_irq(&hdsp->lock);
>                 return 0;
> 
> -       } else {
> -               spin_unlock_irq(&hdsp->lock);
>         }
> 
>         /* how to make sure that the rate matches an externally-set one ?
>          */
> 
> -       spin_lock_irq(&hdsp->lock);
> -       if ((err = hdsp_set_rate(hdsp, params_rate(params), 0)) < 0) {
> -               spin_unlock_irq(&hdsp->lock);
> -               _snd_pcm_hw_param_setempty(params, SNDRV_PCM_HW_PARAM_RATE);
> -               return err;
> -       } else {
> -               spin_unlock_irq(&hdsp->lock);
> +       if (! hdsp->clock_source_locked) {
> +               if ((err = hdsp_set_rate(hdsp, params_rate(params), 0)) < 0) {
> +                       spin_unlock_irq(&hdsp->lock);
> +                       _snd_pcm_hw_param_setempty(params, SNDRV_PCM_HW_PARAM_RATE);
> +                       return err;
> +               }
>         }
> +       spin_unlock_irq(&hdsp->lock);
> 
>         if ((err = hdsp_set_interrupt_interval(hdsp, params_period_size(params))) < 0) {
>                 _snd_pcm_hw_param_setempty(params, SNDRV_PCM_HW_PARAM_PERIOD_SIZE);
> @@ -4318,13 +4353,17 @@
> 
>         snd_pcm_hw_constraint_msbits(runtime, 0, 32, 24);
>         snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_SIZE, &hdsp_hw_constraints_period_sizes);
> -       if (hdsp->io_type == H9632) {
> -               runtime->hw.channels_min = hdsp->qs_out_channels;
> -               runtime->hw.channels_max = hdsp->ss_out_channels;
> +       if (hdsp->clock_source_locked) {
> +               runtime->hw.rate_min = runtime->hw.rate_max = hdsp->system_sample_rate;
> +       } else if (hdsp->io_type == H9632) {
>                 runtime->hw.rate_max = 192000;
>                 runtime->hw.rates = SNDRV_PCM_RATE_KNOT;
>                 snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, &hdsp_hw_constraints_9632_sample_rates);
>         }
> +       if (hdsp->io_type == H9632) {
> +               runtime->hw.channels_min = hdsp->qs_out_channels;
> +               runtime->hw.channels_max = hdsp->ss_out_channels;
> +       }
> 
>         snd_pcm_hw_rule_add(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS,
>                              snd_hdsp_hw_rule_out_channels, hdsp,
> 
> 
>


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 17:45         ` Mark Knecht
@ 2005-01-18 19:51           ` Takashi Iwai
  2005-01-18 21:22             ` Mark Knecht
  2005-01-18 21:30           ` Lee Revell
  1 sibling, 1 reply; 25+ messages in thread
From: Takashi Iwai @ 2005-01-18 19:51 UTC (permalink / raw)
  To: Mark Knecht; +Cc: Giuliano Pochini, alsa-devel

At Tue, 18 Jan 2005 09:45:41 -0800,
Mark Knecht wrote:
> 
> On Tue, 18 Jan 2005 18:31:28 +0100 (CET), Giuliano Pochini
> <pochini@denise.shiny.it> wrote:
> > 
> > 
> > On Tue, 18 Jan 2005, Takashi Iwai wrote:
> > 
> > > > IMHO we should think on a good solution for this problem. Some
> > > > cards have many channels/voices but the sample rate is common
> > > > for all of them. Currently the only clean way to manage it is
> > > > a control that locks the sample rate at a given frequency, but
> > > > it isn't a nice solution because it requires explicit user
> > > > intervention. In the echoaudio driver I implemented a kludge
> > > > that automatically locks the sample frequency in order to avoid
> > > > unwanted rate changes.
> > >
> > > You can add a control to lock the sample rate (e.g. ICE1712).
> > 
> > Yep, I know, but it's not part of the pcm API: applications do not
> > lock the sample rate themselves. The user has to do it manually. This is
> > why I choosed an alternate solution. If apps were able to lock the rate it
> > would be very useful. It may need some help from the driver, though.
> > 
> But that sort of application level control is actually what's causing
> me problems. Mozilla browses around and changes the frequency of the
> card, independent of what the overall system architecture requires.
> 
> Again, I think you're probably right about this issue for a completely
> stand-alone system, but for a multi-PC system I think some sort of
> plughw solution that resamples in software when necessary would work
> better for me and Mozilla.

When the rate is locked in the system (as in my patch), plughw should
work as you expected.


Takashi


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 19:51           ` Takashi Iwai
@ 2005-01-18 21:22             ` Mark Knecht
  0 siblings, 0 replies; 25+ messages in thread
From: Mark Knecht @ 2005-01-18 21:22 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Giuliano Pochini, alsa-devel

On Tue, 18 Jan 2005 20:51:48 +0100, Takashi Iwai <tiwai@suse.de> wrote:

> > Again, I think you're probably right about this issue for a completely
> > stand-alone system, but for a multi-PC system I think some sort of
> > plughw solution that resamples in software when necessary would work
> > better for me and Mozilla.
> 
> When the rate is locked in the system (as in my patch), plughw should
> work as you expected.
> 
> 
> Takashi
> 

Great! I hope we can find someone to test this out and get it into the
main Alsa flow. Then when it shows up through the Planet I'd be able
to test it out.

Thanks for your help,
Mark


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 17:45         ` Mark Knecht
  2005-01-18 19:51           ` Takashi Iwai
@ 2005-01-18 21:30           ` Lee Revell
  2005-01-18 23:16             ` Mark Knecht
  1 sibling, 1 reply; 25+ messages in thread
From: Lee Revell @ 2005-01-18 21:30 UTC (permalink / raw)
  To: Mark Knecht; +Cc: Giuliano Pochini, alsa-devel

On Tue, 2005-01-18 at 09:45 -0800, Mark Knecht wrote:
> But that sort of application level control is actually what's causing
> me problems. Mozilla browses around and changes the frequency of the
> card, independent of what the overall system architecture requires.
> 
> Again, I think you're probably right about this issue for a completely
> stand-alone system, but for a multi-PC system I think some sort of
> plughw solution that resamples in software when necessary would work
> better for me and Mozilla.

Mozilla is not the problem, most likely it's Flash which uses OSS to
play sounds.  Unfortunately Mozilla can't play sounds at all, which
means many of my favorite web sites like http://getyourasstomars.com
don't work.

Lee



-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 21:30           ` Lee Revell
@ 2005-01-18 23:16             ` Mark Knecht
  0 siblings, 0 replies; 25+ messages in thread
From: Mark Knecht @ 2005-01-18 23:16 UTC (permalink / raw)
  To: Lee Revell; +Cc: Giuliano Pochini, alsa-devel

On Tue, 18 Jan 2005 16:30:06 -0500, Lee Revell <rlrevell@joe-job.com> wrote:
> On Tue, 2005-01-18 at 09:45 -0800, Mark Knecht wrote:
> > But that sort of application level control is actually what's causing
> > me problems. Mozilla browses around and changes the frequency of the
> > card, independent of what the overall system architecture requires.
> >
> > Again, I think you're probably right about this issue for a completely
> > stand-alone system, but for a multi-PC system I think some sort of
> > plughw solution that resamples in software when necessary would work
> > better for me and Mozilla.
> 
> Mozilla is not the problem, most likely it's Flash which uses OSS to
> play sounds.  Unfortunately Mozilla can't play sounds at all, which
> means many of my favorite web sites like http://getyourasstomars.com
> don't work.
> 
> Lee
> 

OK, 'Mozilla' as a term is far too broad, and in my case it's only an
example of when this problem can happen. It also has happened when I
fire up some Gnome or KDE game, but what's strange is it doesn't
happen every time I do it. Don't ask me what that's about.

But, true, Mozilla doesn't play audio. I have Shockwave Flash and
Quicktime installed. QT comes from an iTunes installation under
Crossover Office I suppose...

thanks,
Mark


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-16 21:05 Maintaining sound card at a specific frequency Mark Knecht
  2005-01-17  5:14 ` Patrick Shirkey
@ 2005-01-19  9:07 ` Clemens Ladisch
  2005-01-19 10:14   ` Takashi Iwai
  2005-01-19 19:49   ` Mark Knecht
  1 sibling, 2 replies; 25+ messages in thread
From: Clemens Ladisch @ 2005-01-19  9:07 UTC (permalink / raw)
  To: Mark Knecht; +Cc: alsa-devel

Mark Knecht wrote:
> However if I open Mozilla and browse around the Pro Tools side starts
> telling me that the ADAT clock is invalid. My suspicion is that the
> web page I went to in Mozilla has some sort of audio content on it and
> it's not encoded at the frequency I'm running at so Mozilla tries to
> change the frequency of the card to adjust.

If you don't care about sound in Mozilla(/Flash), you could load the
snd-dummy driver and redirect the /dev/dsp symlink to that 'card'
("ln -sf /dev/dsp1 /dev/dsp", assuming the card number is 1).


HTH
Clemens



-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-18 17:40         ` Takashi Iwai
@ 2005-01-19 10:07           ` Giuliano Pochini
  0 siblings, 0 replies; 25+ messages in thread
From: Giuliano Pochini @ 2005-01-19 10:07 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Mark Knecht


On 18-Jan-2005 Takashi Iwai wrote:

>> > You can add a control to lock the sample rate (e.g. ICE1712).
>>
>> Yep, I know, but it's not part of the pcm API: applications do not
>> lock the sample rate themselves. The user has to do it manually. This is
>> why I choosed an alternate solution. If apps were able to lock the rate it
>> would be very useful. It may need some help from the driver, though.
>
> I think this is above the PCM API since this influences the whole
> system.  It's fine to add a new API call in alsa-lib, just as a
> wrapper to toggle such a  control, though...

My driver workarounds the problem this way:

When opencount==1 the app can change the rate freely.
When opencount>1 the app can change the rate only if it
has not been set yet.
pcm_open() always returns the whole frequency range. There
is a rule that does rate_min=rate_max=current_rate when
the user cannot change the sample rate.

This solves all common cases:

1- trivial case:
        open, set_rate, play, close

2- single app, two substreams:
        open(1), open(2), set_rate(1), set_rate(2), ...
        open(1), set_rate(1), open(2), set_rate(2), ...

3- two apps:
        A               B
        open
        set_rate(44)
        ...             open
        ...             set_rate(48) -> sets 44
        ...             play
        close           ...
                        set_rate(48) -> sets 48
                        ...

Of course this method doesn't solve completely the problem
Mark is having, because it doesn't warrant that the rate stays
at 48K always.


--
Giuliano.


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-19  9:07 ` Clemens Ladisch
@ 2005-01-19 10:14   ` Takashi Iwai
  2005-01-19 19:49   ` Mark Knecht
  1 sibling, 0 replies; 25+ messages in thread
From: Takashi Iwai @ 2005-01-19 10:14 UTC (permalink / raw)
  To: Clemens Ladisch; +Cc: Mark Knecht, alsa-devel

At Wed, 19 Jan 2005 10:07:18 +0100 (MET),
Clemens Ladisch wrote:
> 
> Mark Knecht wrote:
> > However if I open Mozilla and browse around the Pro Tools side starts
> > telling me that the ADAT clock is invalid. My suspicion is that the
> > web page I went to in Mozilla has some sort of audio content on it and
> > it's not encoded at the frequency I'm running at so Mozilla tries to
> > change the frequency of the card to adjust.
> 
> If you don't care about sound in Mozilla(/Flash), you could load the
> snd-dummy driver and redirect the /dev/dsp symlink to that 'card'
> ("ln -sf /dev/dsp1 /dev/dsp", assuming the card number is 1).

This reminds me that accessing to the PCM device is exclusive on
HDSP.  So, it might be really better to disable OSS access in this
way.


Takashi


-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-19  9:07 ` Clemens Ladisch
  2005-01-19 10:14   ` Takashi Iwai
@ 2005-01-19 19:49   ` Mark Knecht
  2005-01-19 21:09     ` Russ Pridemore
  1 sibling, 1 reply; 25+ messages in thread
From: Mark Knecht @ 2005-01-19 19:49 UTC (permalink / raw)
  To: Clemens Ladisch; +Cc: alsa-devel

On Wed, 19 Jan 2005 10:07:18 +0100 (MET), Clemens Ladisch
<clemens@ladisch.de> wrote:
> Mark Knecht wrote:
> > However if I open Mozilla and browse around the Pro Tools side starts
> > telling me that the ADAT clock is invalid. My suspicion is that the
> > web page I went to in Mozilla has some sort of audio content on it and
> > it's not encoded at the frequency I'm running at so Mozilla tries to
> > change the frequency of the card to adjust.
> 
> If you don't care about sound in Mozilla(/Flash), you could load the
> snd-dummy driver and redirect the /dev/dsp symlink to that 'card'
> ("ln -sf /dev/dsp1 /dev/dsp", assuming the card number is 1).
> 
> HTH
> Clemens
> 
> 
Clemens,
   Hi. No, on the contrary, I do care about Mozilla having audio
access. From this thread I think the set of features people like me
would be looking for would be something like this:

1) When Alsa is started the sound card comes up running in a known
frequency. Solved with an amixer command in rc.local or some other
config file.

2) When Alsa is started the sound card comes up with a default set of
mixer values. Not sure how to solve this yet for the HDSP 9652 but I
presume another set of amixer commands may do this also.

3) When browsing the web, playing games or doing some other set of
"normal everyday user" functions, audio commands from the application
will not change the frequency of the card. I presume that this *might*
be accomplished with some new default device in my .asoundrc file and
using the plughw macro and software resampling, along with some
capability like Takashi's modification to lock the sample rate.

4) When a special audio control app like qjackctl initializes Jack
then Jack can change the sample rate of the card. This allows me to
have the Linux box as the main sample rate controller over the network
when it needs to be.

   I think the above set of ideas would be pretty much what I'm
looking for, but that still needs to be discussed a bit before anyone
starts making major changes.

Thanks!

- Mark


-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-17  5:14 ` Patrick Shirkey
  2005-01-18 15:50   ` Giuliano Pochini
@ 2005-01-19 19:59   ` Mark Knecht
  1 sibling, 0 replies; 25+ messages in thread
From: Mark Knecht @ 2005-01-19 19:59 UTC (permalink / raw)
  To: Patrick Shirkey; +Cc: alsa-devel

On Mon, 17 Jan 2005 06:14:06 +0100, Patrick Shirkey
<pshirkey@boosthardware.com> wrote:
> Quoting Mark Knecht <markknecht@gmail.com>:
> 
> >
> > I guess I'm wondering if there isn't some .asoundrc magic that could
> > be done in my Linux account on this machine that would tell all
> > applications (other than Jack for now) to use some virtual device that
> > handles all frequencies. If that virtual device was the default and
> > the resampling (for Mozilla/games/whatever) was done in software and
> > the sound cards frequency was never changed then I think things would
> > work much better.
> >
> 
> I think you can use default as the device name in .asoundrc and it will be used
> as the default device for all apps.
> 
> Then just give it a plughw instead of hw
> 
> ex.
> 
> pcm.default {
>         type plughw
>         card card1
>         device 0
> }
> 
> ctl.default {
>         type hw
>         card 0
> }
> 

Patrick,
   This was interesting. With this file in place the card was locked
into 48KHz and the controls in hdspconfig wouldn't change it. I wonder
why? Did this allow Alsa to lock up the card so that even hdspconf
couldn't get to it? If so that's going a bit too far I think.

   As soon as I removed the file hdspconf worked again...

   Thansk for the ideas. I think they may be part of the solution eventually.

- Mark


-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-19 19:49   ` Mark Knecht
@ 2005-01-19 21:09     ` Russ Pridemore
  2005-01-19 23:08       ` Mark Knecht
  0 siblings, 1 reply; 25+ messages in thread
From: Russ Pridemore @ 2005-01-19 21:09 UTC (permalink / raw)
  To: alsa-devel

I think I understand your issue, but I'm not sure I like your solution.
Personally, I don't want the sound frequency adjusted in software or by a
cheap soundcard.  This transformation introduces noise and/or distortions
into the sound.  I'm using ALSA to drive a home-theater PC (PVR) setup and
want the purest sound output I can get from a PC to my stereo receiver.  I
wish I had an alternative solution to suggest.  Please correct me if I've
been misled here...

Russ

> On Wed, 19 Jan 2005 10:07:18 +0100 (MET), Clemens Ladisch
> <clemens@ladisch.de> wrote:
>> Mark Knecht wrote:
>> > However if I open Mozilla and browse around the Pro Tools side starts
>> > telling me that the ADAT clock is invalid. My suspicion is that the
>> > web page I went to in Mozilla has some sort of audio content on it and
>> > it's not encoded at the frequency I'm running at so Mozilla tries to
>> > change the frequency of the card to adjust.
>>
>> If you don't care about sound in Mozilla(/Flash), you could load the
>> snd-dummy driver and redirect the /dev/dsp symlink to that 'card'
>> ("ln -sf /dev/dsp1 /dev/dsp", assuming the card number is 1).
>>
>> HTH
>> Clemens
>>
>>
> Clemens,
>    Hi. No, on the contrary, I do care about Mozilla having audio
> access. From this thread I think the set of features people like me
> would be looking for would be something like this:
>
> 1) When Alsa is started the sound card comes up running in a known
> frequency. Solved with an amixer command in rc.local or some other
> config file.
>
> 2) When Alsa is started the sound card comes up with a default set of
> mixer values. Not sure how to solve this yet for the HDSP 9652 but I
> presume another set of amixer commands may do this also.
>
> 3) When browsing the web, playing games or doing some other set of
> "normal everyday user" functions, audio commands from the application
> will not change the frequency of the card. I presume that this *might*
> be accomplished with some new default device in my .asoundrc file and
> using the plughw macro and software resampling, along with some
> capability like Takashi's modification to lock the sample rate.
>
> 4) When a special audio control app like qjackctl initializes Jack
> then Jack can change the sample rate of the card. This allows me to
> have the Linux box as the main sample rate controller over the network
> when it needs to be.
>
>    I think the above set of ideas would be pretty much what I'm
> looking for, but that still needs to be discussed a bit before anyone
> starts making major changes.
>
> Thanks!
>
> - Mark
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
> Tool for open source databases. Create drag-&-drop reports. Save time
> by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
> Download a FREE copy at http://www.intelliview.com/go/osdn_nl
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/alsa-devel
>




-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: Maintaining sound card at a specific frequency
  2005-01-19 21:09     ` Russ Pridemore
@ 2005-01-19 23:08       ` Mark Knecht
  0 siblings, 0 replies; 25+ messages in thread
From: Mark Knecht @ 2005-01-19 23:08 UTC (permalink / raw)
  To: russ; +Cc: alsa-devel

On Wed, 19 Jan 2005 16:09:35 -0500 (EST), Russ Pridemore
<russ@pridemore.org> wrote:
> I think I understand your issue, but I'm not sure I like your solution.
> Personally, I don't want the sound frequency adjusted in software or by a
> cheap soundcard.  This transformation introduces noise and/or distortions
> into the sound.  I'm using ALSA to drive a home-theater PC (PVR) setup and
> want the purest sound output I can get from a PC to my stereo receiver.  I
> wish I had an alternative solution to suggest.  Please correct me if I've
> been misled here...
> 
> Russ


Yeah, I think you're off target. #1 issue is that by default Alsa
works whatever way it works today. Nothing changes. That way in a
SINGLE PC environment, where you want the best sound quality, the card
changes frequency just like it does today. Nothing changes and you
still get the best operation for what your usage model is.

My suggestion is for a different usage model and most specifically
where you have multiple PCs talking to each other. (I.e. - recording
studio, project studio, composer) In this model we can use multiple
PCs and not have frequencies bouncing around just becasue a single
application ononly one PC decides it wants to operate at a different
frequency. In this case I envision that you enable an OPTION and then
the system acts I said earlier.

Hope that helps,
Mark


-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2005-01-19 23:08 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-16 21:05 Maintaining sound card at a specific frequency Mark Knecht
2005-01-17  5:14 ` Patrick Shirkey
2005-01-18 15:50   ` Giuliano Pochini
2005-01-18 16:48     ` Takashi Iwai
2005-01-18 17:01       ` Mark Knecht
2005-01-18 17:08         ` Takashi Iwai
2005-01-18 17:12           ` Mark Knecht
2005-01-18 17:15             ` Takashi Iwai
2005-01-18 17:43               ` Mark Knecht
2005-01-18 17:48           ` Takashi Iwai
2005-01-18 18:04             ` Mark Knecht
2005-01-18 17:31       ` Giuliano Pochini
2005-01-18 17:40         ` Takashi Iwai
2005-01-19 10:07           ` Giuliano Pochini
2005-01-18 17:45         ` Mark Knecht
2005-01-18 19:51           ` Takashi Iwai
2005-01-18 21:22             ` Mark Knecht
2005-01-18 21:30           ` Lee Revell
2005-01-18 23:16             ` Mark Knecht
2005-01-19 19:59   ` Mark Knecht
2005-01-19  9:07 ` Clemens Ladisch
2005-01-19 10:14   ` Takashi Iwai
2005-01-19 19:49   ` Mark Knecht
2005-01-19 21:09     ` Russ Pridemore
2005-01-19 23:08       ` Mark Knecht

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.