Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

29.12.2006, 16:17

richtiges aufnehmen (record) über die Soundkarte?

Hallo zusammen,

Hardware: Laptop mit VIA 8233 Soundkarte sowie integrierten Mikrophon

hab es irgendwie noch nicht hinbekommen die Audiosignale aufzunehmen, die gerade ausgegeben werden. Wenn ich einen Stream im Internet habe klappt das ja ganz gut mit dem mplayer, diesen in ein "dumpfile" umzulenken.
Jedoch möchte ich zum Beispiel von Flashanwendungen gespielten Sound in eine Datei umlenken. Als Geräte finde ich bei mir folgendes vor:

ls -l /dev/snd/

Quellcode

1
2
3
4
5
6
7
8
9
10
11
insgesamt 0
crw-rw---- 1 root audio 116,   0 29. Dez 11:33 controlC0
crw-rw---- 1 root audio 116, 32 29. Dez 11:33 controlC1
crw-rw---- 1 root audio 116, 24 29. Dez 11:33 pcmC0D0c
crw-rw---- 1 root audio 116, 16 29. Dez 11:33 pcmC0D0p
crw-rw---- 1 root audio 116, 25 29. Dez 11:33 pcmC0D1c
crw-rw---- 1 root audio 116, 17 29. Dez 11:33 pcmC0D1p
crw-rw---- 1 root audio 116, 56 29. Dez 11:33 pcmC1D0c
crw-rw---- 1 root audio 116, 48 29. Dez 11:33 pcmC1D0p
crw-rw---- 1 root audio 116,   1 29. Dez 11:33 seq
crw-rw---- 1 root audio 116, 33 29. Dez 11:33 timer


Als wichtig erscheinen mir hier die "pcm*" - Geräte. Wobei die Ausgabe von arecord -l

Quellcode

1
2
3
4
5
6
7
8
9
10
**** List of CAPTURE Hardware Devices ****
card 0: V8233 [VIA 8233], device 0: VIA 8233 [VIA 8233]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: V8233 [VIA 8233], device 1: VIA 8233 [VIA 8233]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: modem [VIA 82XX modem], device 0: VIA 82XX modem [VIA 82XX modem]
  Subdevices: 1/1
  Subdevice #0: subdevice #0


ganz gut verdeutlicht, dass "pcmC1*" das Modem arstellt und "pcmC0D*" jeweils die beiden Monokanäle unterteilt in play und capture devices, dem "p" und dem "c" nach zu urteilen. Wobei das Capture Device hier das Mikrophon sein dürfte

Nun habe ich mit verschiedenen Shell tools versucht bei gerade abgespielten Sounds per:

Quellcode

1
sox /dev/snd/pcmC0D0p ausgabedatei.wav

oder einfach mit

Quellcode

1
cat /dev/snd/pcmC0D0p ausgabe_datei.wav

bzw. mit dem Tool arecord

Quellcode

1
2
3
arecord -D dmixer
ALSA lib pcm_dmix.c:803:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
arecord: main:550: audio open error: Das Argument ist ungültig


Jedoch bekomme ich mit "sox" immer die Fehlermeldung "Speicherzugriffsfehler" und mit arecord will es auch nich klappen.
Kann ich ja auch teilweise verstehen, da das Gerät ja gerade in Benutzung ist.

Jedoch muss es doch hier eine Möglichkeit geben???

für Ratschläge immer dankbar

citoki

2

29.12.2006, 17:51

Da musst Du Dich mal durch die ALSA-Doku wühlen. Da gibt es bestimmt ein plugin, welches als Audiodevice auftritt und auf Platte schreibt.
__
Rud

3

29.12.2006, 19:35

Hallo rudwardt,

danke soweit für den Tipp mit dem plugin. habe jetzt das alsa nen bissle besser verstanden.

Jedoch klappen die Eingaben:

Quellcode

1
arecord -D file:audio.wav -r 44100


(den obigen wahlweise auch mit 48000 Bit probiert) und

Quellcode

1
ecasound -i alsa,hw:0,0 -o alsa,file:audio.wav


nicht. Benötige ich für arecord noch mehr Parameter? Eine die Datei audio.wav wird ja erstellt nur kommt kein Ton beim abspielen. Mplayer gibt sogar aus "Audio: kein Ton!" und versucht ein Video abzuspielen (is nur alles grau zu sehen)

Vielleicht noch nen Vorschlag??

citoki

4

29.12.2006, 21:20

Das funktioniert nicht, weil das default-Device ein reiner Eingang ist. Aus Sicht der Anwendung werden Audiodaten hineingetan und kommen aus Deinen Lautsprechern wieder heraus. Das kann man nicht direkt in Gegenrichtung - also zum Aufnehmen - öffnen.

Vergleichbar wäre, wenn Du an einem Eingang Deines Verstärkers ein Aufnahmegerät anschließen würdest. Das klappt nicht. Was Du brauchst ist ein "Line-Out"

In der Manpage von arecord (nicht gelesen ? ;) ) steht auch die Lösung. Du definierst Dir ein eigenes virtuelles Device, welches einfach die Daten vom default-Device kopiert und auch zur Aufnahme geöffnet werden kann.

Quellcode

1
2
3
4
5
6
7
pcm.copy {
	type plug
	slave {
		pcm hw
	}
	route_policy copy
}


Obigen Schnipsel fügst Du in Deine ~/.asoundrc ein. Wenn Die nicht existiert, legst Du eine neue an.
Dadurch wird ein neues device mit Namen 'copy' erstellt. Dieses spiegelt einfach alles, was durch hw0,0 läuft, also alles was Du gerade hörst. Und dieses 'copy'-device kannst Du zum Aufnehmen öffnen:

arecord -f cd -D copy aufnahme.wav

Schau noch mal in 'man arecord'. HIer gibt's noch weitere Informationen.
__
Rud

5

30.12.2006, 11:28

So richtig will es noch nicht klappen. Wenn ich arecord -f cd -D copy audio.wav eingebe, dann wird zwar wieder etwas aufgenommen und der Mplayer erkennt beim abspielen auch eine Audiodatei, jedoch wieder ohne Ton. Dabei läuft ein Stream im amaroke.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
arecord -f cd -D copy -v audio.wav
Recording WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Plug PCM: Hardware PCM card 0 'VIA 8233' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 16
  buffer_size  : 16384
  period_size  : 4096
  period_time  : 92879
  tick_time    : 4000
  tstamp_mode  : NONE
  period_step  : 1
  sleep_min    : 0
  avail_min    : 4096
  xfer_align   : 4096
  start_threshold  : 1
  stop_threshold   : 16384
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824


Ich habe dann noch mal das Plugin file versucht zu optimieren. Wenn ich jetzt arecord -f cd -D file:"audio.wav" eingebe, werden sehr viele Zeichen in die STDIN ausgegeben. Wenn ich dann die Datei audio.wav starte, bekomme ich nur ein eintöniges Pfeifen im 8kHz bereich (geschätzt).

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
arecord -f cd -D file:"audio.wav" -v
Recording WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
File PCM (file=audio.wav)
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 16
  buffer_size  : 16384
  period_size  : 4096
  period_time  : 92879
  tick_time    : 4000
  tstamp_mode  : NONE
  period_step  : 1
  sleep_min    : 0
  avail_min    : 4096
  xfer_align   : 4096
  start_threshold  : 1
  stop_threshold   : 16384
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
Slave: Hardware PCM card 0 'VIA 8233' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 16
  buffer_size  : 16384
  period_size  : 4096
  period_time  : 92879
  tick_time    : 4000
  tstamp_mode  : NONE
  period_step  : 1
  sleep_min    : 0
  avail_min    : 4096
  xfer_align   : 4096
  start_threshold  : 1
  stop_threshold   : 16384
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
RIFF$WAVEfmt DdataOPPLMTQLLIGQPKLNPLRNKONNPRQQSOMOPTONJJIIFDGIHGFGDC>=::=;
?8755534/346;877475848>>A@?162/.1678;974<83438441/'"~’}%#!# ! ~%"+)*+')+&(
%%$! !#%#{’~}’#!~’’! &*$(% ’wrwyz "&$%$"%$'$($"$%) !"(%$"%'' "'$!’$~’|rx’ %!&!!} ~
’xz{’~} #$~{’|’"}|’}}’vyz}uuvs|}’)*&$ ~’$*.))')'%)*1344200+%!z’!'*)!’z’x!&"#"$'1+'+22334.
1159<FFKOTN
....
....
....


Hier meine ~/.asoundrc:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
pcm.via8233 {
	type hw
	card 0
	#rate 48000
}

pcm.!default {
    type plug
    slave.pcm "duplex"
}

pcm.dmixer {
    type dmix
    ipc_key 1024
    #ipc_perm 0664
    slave.pcm "via8233"
    slave {
	period_time 0
	period_size 1024
	buffer_size 4092
	#rate 44100
    }

    bindings {
         0 0
         1 1
    }
}

pcm.dsnooper {
    type dsnoop
    ipc_key 2048
    #ipc_perm 0664 
    slave     {
	pcm "via8233"
	period_time 0
	period_size 1024
	buffer_size 4092
	#rate 44100
    }

    bindings {
	0 0
	1 1
    }
}

# Dies definiert unser Fullduplex-Plugin als Standard fr alle ALSA-Programme.
pcm.duplex {
    type asym
    playback.pcm "dmixer"
    capture.pcm "dsnooper"
}


pcm.copy {
	type plug
	slave {
		pcm hw
	}
	route_policy copy
}

pcm.file {
        @args.0 FILE
        @args.1 FORMAT
        @args.FILE {
                type string
        }
        @args.FORMAT {
                type string
                default raw
        }
        type file
        slave.pcm "hw"
        file $FILE
        format $FORMAT
}


########
# AOSS #
########

# DSP wird simuliert und benutzt dsa dmixer plugin.
pcm.dsp "duplex"
pcm.dsp1 "duplex"

# OSS-Steuerung fr dsp0
ctl.dsp {
    type plug
    slave.pcm "via8233"
}

# OSS-Steuerung fr dsp0
ctl.mixer {
    type plug
    slave.pcm "via8233"
}


Ratschläge???

Danke , citoki

6

30.12.2006, 13:59

Das ist ja 'ne recht umfangreiche .asoundrc. Ich habe es bei mir ausprobiert, mit einer komplett leeren .asoundrc - bis auf das copy-plugin.

Ich habe auch mit amarok etwas dudeln lassen, mit arecord aufgenommen und danach mit aplay wieder abgespielt. Hat geklappt.

Ich würde Dir empfehlen es auch mal mit einer leeren .asoundrc (bis auf copy) zu versuchen. Wenn es klappt, kannst Du stückchenweise die Einträge wieder aufnehmen die Du brauchst, bis es wieder klemmt. Dann weißt Du, woran es liegt. Zum testen würde ich ebenfalls aplay als Player nehmen um die Aufnahme wieder abzuspielen.

Ansonsten weiß ich auch nicht weiter, vielleicht kann Dir die ALSA-Mailinglist helfen, da es ja doch ein ALSA-Setup spezifisches Problem zu sein scheint.

Nur nicht aufgeben!
__
Rud

7

30.12.2006, 18:31

Ja die Einstellungen für den Duplex-Modus (aus mehrere Programme gleichzeitig wiedergeben sowie aufnehmen) hatte ich von der Gentoo-Wiki Seite.

Hab das mal mit einer abgespeckten .asoundrc probiert (d.h. nur mit dem copy Plugin), alsasound neugestartet, arecord wie bereits oben beschrieben gestartet und dann über aplay wiedergegeben, leider ohne Erfolg. Kommt einfach kein Ton heraus.


Hier mal die Ausgabe von lspci -vv.

Quellcode

1
2
3
4
5
6
7
8
9
Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 30)
        Subsystem: TWINHEAD INTERNATIONAL Corp Unknown device 0403
        Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Interrupt: pin C routed to IRQ 11
        Region 0: I/O ports at 1800 [size=256]
        Capabilities: [c0] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-


Ist vielleicht hier erkennbar ob irgendein Aufahme Flag fehlt?? Ansonsten muss ich noch mal bei alsa direkt nachfragen. Danke soweit für die Unterstützung


EDIT:
Achso , was mit noch aufgefallen war, ist dass es bei mir kein "dsp" unter /dev/ gibt. Trotz das in der Datei /etc/modules.d/alsa folgender Eintrag vorhanden ist:

Quellcode

1
2
3
alias /dev/mixer snd-mixer-oss
alias /dev/dsp snd-pcm-oss
alias /dev/midi snd-seq-oss

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »citoki« (30.12.2006, 18:35)


8

03.01.2007, 17:25

Hallo,

das ist garnicht so schwer.
Hier eine kleine Anleitung zum Aufnehmen und direktem Umwandeln zu mp3. ;)

Sox und lame werden benötigt:

Quellcode

1
emerge -av sox lame

Dann muss hald /dev/dsp vorhanden sein, um mit sox auch aufnahmen zu bewerkstelligen.
Diese Einstellungen sind empfehlenswert: (Achtung: Die Befehlszeile ist von einer Z-Shell)

Quellcode

1
2
3
4
5
6
7
(@}->--)(~)%> zcat /proc/config.gz G oss              (0)(16:59)
# CONFIG_CHR_DEV_OSST is not set
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y

Und nun noch ein kleines Script:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#! /bin/sh

MITSCHNVERZ="$HOME/records"
DATEINAME="aufnahme"
DATEIENDE="$(date +'%m''%d'_'%H'-'%M')"

if [ ! -d $MITSCHNVERZ ]; then
  mkdir -p "$MITSCHNVERZ"
fi

sox -t ossdsp -w -s -r 44100 -c 2 /dev/dsp -t raw - | \
lame -x -m s - $MITSCHNVERZ/$DATEINAME-$DATEIENDE.mp3

#EOF#

Wie man Scripts zum Ausführen überredet, brauche ich wohl nicht erklären. Sollte auf den enstehenden Dateien nichts zu hören sein, dann sind die Mixereinstellungen zu korregieren.

MfG ello

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ello« (03.01.2007, 17:29)