← Back to team overview

sslug-teknik team mailing list archive

jackd hj� �s (--realtime og USB lydkort)

 

Hej lyd-elskere.

Jeg prøver at lægge min harddisk recording over til at
køre under Linux. Har indtil nu brugt Samplitude på
Windows 2000 og der kan jeg snildt mixe 8 monospor med
EQ på alle spor, et par rumklange og master
kompressor.

Jeg kører på en Compaq Evo N400C laptop med 700 MHz
Pentium III og 128 MB RAM. Det er ikke meget efter
dagens standard, men som sagt er det rigeligt til at
køre 8 spor. Da Linux efter min erfaring plejer at
have mindre overhead end Windows forventer jeg
naturligvis at kunne lige så meget, om ikke mere, end
jeg kunne på Windows.

Jeg kører Debian Sarge og har kompileret en kernel
2.6.10 med pre-emptible kernel og ren ALSA (ingen OSS
emulering). Derefter har jeg installeret jackd og
ardour, da ardour så ud til at være det harddisk
recording program der er længst fremme på Linux. Mine
versioner af ardour og jackd er (installeret vha.
apt-get)

  bonham:~# ardour --version
  Ardour/GTK 0.565.2 running with libardour 0.861.3
  bonham:~# jackd --version
  jackd version 0.99.0 tmpdir /dev/shm protocol 13
  bonham:~#

Men... jeg har ærlig talt voldsomme problemer med at
få det til at spille ordentligt. Jeg får xruns og
dermed udfald når jeg optager og jeg kan ikke sætte
buffer-størrelsen højere end 8192 samples i jackd. Jeg
ville derfor prøve at køre jackd med --realtime for at
undgå xruns, men det belaster systemet helt abnormt.
Normalt starter jeg jackd med

  jackd -d alsa --device hw:1 --rate 44100 --period
8192 --nperiods 2

Når jeg har loadet en session (ca. 45 minutters audio
- 833 MB data) kan top fortælle mig at 

  ardour bruger 20.4 %MEM
  jackd  bruger  2.1 %MEM

Hvis jeg starter jackd med --realtime parameteren og
loader samme session får jeg

  ardour bruger 69.5 %MEM
  jackd  bruger 25.6 %MEM

Med --realtime tager det desuden flere minutter at
åbne sessionen og kswapd er på overarbejde. Når jackd
ikke kører med --realtime tager det et par sekunder at
åbne samme session. Virker som om --realtime gør at
både jackd og klienter får låst _al_ deres hukommelse
ind i RAM ? Ikke særlig smart efter min mening. Det
burde vel kun være buffere og nødvendig kode der blev
låst ? Som det er nu kan jeg ikke køre noget med
--realtime med den "smule" hukommelse jeg har :-(.

Jeg har også prøvet at renice jackd så den kører med
prioritet 0. Skulle det ikke give næsten det samme som
at køre med --realtime ?

Et andet problem er at jeg kører med et USB lydkort -
EgoSys U2A. Det virker fint og jeg kan optage og
afspille uden problemer. Men hvis jeg hiver USB
stikket ud uden at have stoppet jackd først går det
helt galt! Jeg har oplevet en enkelt gang at få en
"(Broken pipe)" men for det meste begynder jackd at
spytte følgende fejlmeddelelse ud ad infinitum:

  status error: Inappropriate ioctl for device
  alsa_pcm: channel flush for playback failed
(Inappropriate ioctl for device)

I begge tilfælde bliver resultatet det samme: mit
keyboard holder op med at fungere! Jeg kan _intet_
skrive på maskinen. Mærkeligt nok fungerer musen og X
fint fint, men jeg kan altså ikke få fat i noget med
keyboardet. Jeg kan logge ind på maskinen vha. ssh og
så kan jeg slå jackd ned. Der kommer så beskeden

  DRIVER NT: error stopping driver

men jeg får ikke mit lokale keyboard tilbage :-(.
Nogen forklaring på dette ? Jeg kan selvfølgelig
"bare" lade være med at hive USB stikket ud når jackd
kører, men hvis man nu lige glemmer det eller der er
nogen der snubler i kablet eller... Det er da for
fjollet at maskinen skal gå død ved det.

På forhånd tak hvis der er nogen der har nogle gode
forslag eller workarounds.

Mvh
-- Jan Holst Jensen


		
__________________________________ 
Do you Yahoo!? 
Take Yahoo! Mail with you! Get it on your mobile phone. 
http://mobile.yahoo.com/maildemo 


Follow ups