* problem linking pcm timer to midi timer at SB Audigy
@ 2006-08-25 15:19 Gerald Grabner
2006-08-25 15:34 ` Clemens Ladisch
0 siblings, 1 reply; 3+ messages in thread
From: Gerald Grabner @ 2006-08-25 15:19 UTC (permalink / raw)
To: alsa-devel
Hi there,
I'm having troubles with linking the pcm timer to the midi timer for a
SB Audigy. I slightly adapted the code of Steve deRosier
[http://thread.gmane.org/gmane.linux.alsa.devel/22156/focus=22160], my
function is listed below. While it works with an ES1938 card, it
doesn't with a SB Audigy: If I'm trying to record audio (generated
from a midi signal I'm sending from the same card), I only hear the
first note sent. Obviously the timing is completely wrong. The problem
doesn't occur for pcm playback.
Unfortunatly, I didn't find much documentation about cards, devices
and subdevices.
Do I have to choose a particular one for the Audigy?
Why the "SDevice = SDevice << 1;" statement?
Where can I find documentation on this topic?
My system: alsa 1.0.11, openSuSE 10.1
Any hints are highly welcome!
Thx a lot,
Gerald
bool SmSeq::LinkPCMTimer( snd_pcm_t* pcm )
{
// get pcm info
snd_pcm_info_t* PCMInfo;
snd_pcm_info_alloca( &PCMInfo );
int err = snd_pcm_info( pcm, PCMInfo );
if( err < 0 ) return false ;
// get the info we need
int Card = snd_pcm_info_get_card ( PCMInfo );
unsigned int Device = snd_pcm_info_get_device ( PCMInfo );
unsigned int SDevice = snd_pcm_info_get_subdevice( PCMInfo );
SDevice = SDevice << 1; // ?
if( ( Card < 0 ) ) return false;
// setup the data that links us to the PCM
snd_timer_id_t* QTID;
snd_timer_id_alloca( &QTID );
snd_timer_id_set_class ( QTID, SND_TIMER_CLASS_PCM );
snd_timer_id_set_sclass ( QTID, SND_TIMER_SCLASS_NONE );
snd_timer_id_set_card ( QTID, Card );
snd_timer_id_set_device ( QTID, Device );
snd_timer_id_set_subdevice( QTID, SDevice );
// setup the actual timer
snd_seq_queue_timer_t* QueueTimer;
snd_seq_queue_timer_alloca( &QueueTimer );
if( snd_seq_get_queue_timer( seq, queue, QueueTimer ) < 0 )
return false;
snd_seq_queue_timer_set_type( QueueTimer, SND_SEQ_TIMER_ALSA );
snd_seq_queue_timer_set_id ( QueueTimer, QTID );
snd_seq_set_queue_timer( seq, queue, QueueTimer );
return true;
}
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: problem linking pcm timer to midi timer at SB Audigy 2006-08-25 15:19 problem linking pcm timer to midi timer at SB Audigy Gerald Grabner @ 2006-08-25 15:34 ` Clemens Ladisch 2006-08-25 20:49 ` Gerald Grabner 0 siblings, 1 reply; 3+ messages in thread From: Clemens Ladisch @ 2006-08-25 15:34 UTC (permalink / raw) To: Gerald Grabner, alsa-devel Gerald Grabner wrote: > I'm having troubles with linking the pcm timer to the midi timer for a > SB Audigy. I slightly adapted the code of Steve deRosier > [http://thread.gmane.org/gmane.linux.alsa.devel/22156/focus=22160], my > function is listed below. While it works with an ES1938 card, it > doesn't with a SB Audigy: If I'm trying to record audio (generated > from a midi signal I'm sending from the same card), I only hear the > first note sent. Obviously the timing is completely wrong. The problem > doesn't occur for pcm playback. Look into /proc/asound/seq/queues and /proc/asound/seq/timers to see what's going on. > Unfortunatly, I didn't find much documentation about cards, devices > and subdevices. > Do I have to choose a particular one for the Audigy? Yes. See "arecord -l" for a list of recording devices. You have to choose the same device that you're using for recording. > Why the "SDevice = SDevice << 1;" statement? The subdevice number of the timer is not the same as the PCM subdevice number, see /proc/asound/timers. > Where can I find documentation on this topic? This stuff is basically undocumented. Regards, Clemens ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: problem linking pcm timer to midi timer at SB Audigy 2006-08-25 15:34 ` Clemens Ladisch @ 2006-08-25 20:49 ` Gerald Grabner 0 siblings, 0 replies; 3+ messages in thread From: Gerald Grabner @ 2006-08-25 20:49 UTC (permalink / raw) To: Clemens Ladisch, alsa-devel Hi Clemens, thanks for those infos! Now I was experimenting with devices and subdevices and looked at /proc/asound/seq/timer, see below. Device 0 and Subdevice 0 is "PCM playback 0-0-0" with a period time of 0.000000000, so the queue is not advancing, which is the problem I had. Device 0 and Subdevice 1 is "PCM capture 0-0-1", and the queue is running, but the Period time is 0.023219952, which is not what I set with snd_pcm_hw_params (period_size=1024 -> period time = 0.00097656). Am I forced to use another period size? (Unfortunately, at the moment I only have internet access to that machine, so I cannot check the audio recording.) Device 0 and Subdevice 1 gives the "system timer", with a period time of 0.004. Hmm... Devices 2 and 4 doen't seem appropriate for timers. Is there a way to get more infos or descriptions of subdevices? Would you cleary recommend any of those devices/subdevices? Many thx, Gerald > arecord -l **** List of CAPTURE Hardware Devices **** card 0: Audigy2 [Audigy 2 Platinum [SB0240P]], device 0: emu10k1 [ADC Capture/Standard PCM Playback] Subdevices: 0/1 Subdevice #0: subdevice #0 card 0: Audigy2 [Audigy 2 Platinum [SB0240P]], device 1: emu10k1 mic [Mic Capture] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: Audigy2 [Audigy 2 Platinum [SB0240P]], device 2: emu10k1 efx [Multichannel Capture/PT Playback] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: Audigy2 [Audigy 2 Platinum [SB0240P]], device 4: p16v [p16v] Subdevices: 1/1 Subdevice #0: subdevice #0 /proc/asound/seq/timer without linking: Timer for queue 0 : RTC timer Period time : 0.000976562 Skew : 65536 / 65536 /proc/asound/seq/timer with linking, device 0, subdevice 0: Timer for queue 0 : PCM playback 0-0-0 Period time : 0.000000000 Skew : 65536 / 65536 /proc/asound/seq/timer with linking, device 0, subdevice 1: Timer for queue 0 : PCM capture 0-0-1 Period time : 0.023219952 Skew : 65536 / 65536 /proc/asound/seq/timer with linking, device=1, subdevice 0: Timer for queue 0 : system timer Period time : 0.004000000 Skew : 65536 / 65536 /proc/asound/seq/timer with linking, device=2, subdevice 0: Timer for queue 0 : PCM playback 0-2-0 Period time : 0.000000000 Skew : 65536 / 65536 /proc/asound/seq/timer with linking, device=4, subdevice 0: Timer for queue 0 : PCM playback 0-4-0 Period time : 0.000000000 Skew : 65536 / 65536 Clemens Ladisch wrote: > Gerald Grabner wrote: >> I'm having troubles with linking the pcm timer to the midi timer for a >> SB Audigy. I slightly adapted the code of Steve deRosier >> [http://thread.gmane.org/gmane.linux.alsa.devel/22156/focus=22160], my >> function is listed below. While it works with an ES1938 card, it >> doesn't with a SB Audigy: If I'm trying to record audio (generated >> from a midi signal I'm sending from the same card), I only hear the >> first note sent. Obviously the timing is completely wrong. The problem >> doesn't occur for pcm playback. > > Look into /proc/asound/seq/queues and /proc/asound/seq/timers to see > what's going on. > >> Unfortunatly, I didn't find much documentation about cards, devices >> and subdevices. >> Do I have to choose a particular one for the Audigy? > > Yes. See "arecord -l" for a list of recording devices. You have to > choose the same device that you're using for recording. > >> Why the "SDevice = SDevice << 1;" statement? > > The subdevice number of the timer is not the same as the PCM subdevice > number, see /proc/asound/timers. > >> Where can I find documentation on this topic? > > This stuff is basically undocumented. > > > Regards, > Clemens ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-08-25 20:49 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-08-25 15:19 problem linking pcm timer to midi timer at SB Audigy Gerald Grabner 2006-08-25 15:34 ` Clemens Ladisch 2006-08-25 20:49 ` Gerald Grabner
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.