Repository 32bit  Forum
Repository 64bit  Wiki

Audio: play & rec simultanei in una shell (sox?) [risolto]

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Audio: play & rec simultanei in una shell (sox?) [risolto]

Messaggioda zoros » sab mar 21, 2009 15:15

Ciao a tutti,
stavo cercando una soluzione semplice per realizzare uno strumentino che utilizza la scheda audio ... lo strumento dovrebbe inviare in uscita una nota audio e contemporaneamente registrare il segnale proveniente da un'altra fonte (attraverso l'ingresso MIC o AUX) ... la cosa più carina sarebbe utilizzare programmi di uso comune, magari richiamati in una shell ...

ho fatto delle prove con sox, ma sembra che non mi permetta di usare la scheda audio in full-duplex, cioè:

genero facilmente una nota in uscita sugli altoparlanti:
Codice: Seleziona tutto
sox -t nul /dev/null -t ossdsp /dev/dsp synth 1 sine 600
e registro l'audio proveniente dal microfono:
Codice: Seleziona tutto
sox -t ossdsp /dev/dsp waveout.wav

se metto insieme i due comandi registro la nota generata e non il segnale proveniente dal microfono ...

probabilmente usando solo sox non è possibile realizzare quanto premesso ... preferirei rimanere in ambito shell (cioè trovare un semplice script), comunque anche un programma in C, fpc-Pascal, ecc., purché semplice, mi potrebbe andar bene ...
Ultima modifica di zoros il mer mar 25, 2009 17:08, modificato 1 volta in totale.
vorrei riavere le mie firme ...
Avatar utente
zoros
Linux 3.x
Linux 3.x
 
Messaggi: 1302
Iscritto il: lun mag 28, 2007 21:51
Località: Gorizia
Nome Cognome: Fabio∙Zorba
Slackware: 13.37
Kernel: 3.2.5
Desktop: KDE-3.5.10

Audio: play & rec simultanei in una shell (sox?) [risolto]

Messaggioda zoros » mer mar 25, 2009 16:01

Facendo un po' la parte di chi "se la conta e se la dice", direi che il mio problema è risolto ... il play con sox non inibisce la simultanea registrazione da /dev/dsp, bisognava settare la scheda audio (ci avevo provato con kmix, ma senza risultato ... troppi bottoni sulla nVidia CK804) ... comunque, messo in kmix ChMode:2ch e capture collegato al mic, si lavora in full duplex ... lo script che cercavo è il seguente:
Codice: Seleziona tutto
#!/bin/sh
# sweep.sh - tone generator and audio recorder

FREQ=100
SALT=100
TIME=0.9

while [ $FREQ -le 900 ]
do

   sox -t nul /dev/null -t ossdsp /dev/dsp synth $TIME sine $FREQ &

   dd if=/dev/dsp of=dsp-$FREQ.bin bs=1 count=8000

   let FREQ=$FREQ+$SALT

done

cat dsp-*.bin > all-dsp-record.bin
rm -f dsp-*.bin

genera una serie di note a distanza di 1 secondo e contemporaneamente registra da una fonte esterna ... notare che la nota generata in background con sox dura 0.9 secondi mentre con il dd registro 8000 bytes (cioè 1 secondo, stando alla velocità di campionamento di default) ...

sarebbe interessante adesso sapere come si fa ad impostare la velocità di campionamento della scheda audio da linea di comando ...
vorrei riavere le mie firme ...
Avatar utente
zoros
Linux 3.x
Linux 3.x
 
Messaggi: 1302
Iscritto il: lun mag 28, 2007 21:51
Località: Gorizia
Nome Cognome: Fabio∙Zorba
Slackware: 13.37
Kernel: 3.2.5
Desktop: KDE-3.5.10

Re: Audio: play & rec simultanei in una shell (sox?) [risolto]

Messaggioda sixjan » gio apr 09, 2009 12:35

zoros ha scritto:Facendo un po' la parte di chi "se la conta e se la dice", direi che il mio problema è risolto ... il play con sox non inibisce la simultanea registrazione da /dev/dsp, bisognava settare la scheda audio (ci avevo provato con kmix, ma senza risultato ... troppi bottoni sulla nVidia CK804) ... comunque, messo in kmix ChMode:2ch e capture collegato al mic, si lavora in full duplex ... lo script che cercavo è il seguente:
Codice: Seleziona tutto
#!/bin/sh
# sweep.sh - tone generator and audio recorder

FREQ=100
SALT=100
TIME=0.9

while [ $FREQ -le 900 ]
do

   sox -t nul /dev/null -t ossdsp /dev/dsp synth $TIME sine $FREQ &

   dd if=/dev/dsp of=dsp-$FREQ.bin bs=1 count=8000

   let FREQ=$FREQ+$SALT

done

cat dsp-*.bin > all-dsp-record.bin
rm -f dsp-*.bin

genera una serie di note a distanza di 1 secondo e contemporaneamente registra da una fonte esterna ... notare che la nota generata in background con sox dura 0.9 secondi mentre con il dd registro 8000 bytes (cioè 1 secondo, stando alla velocità di campionamento di default) ...

sarebbe interessante adesso sapere come si fa ad impostare la velocità di campionamento della scheda audio da linea di comando ...


Ciao. Ti sei dimenticato una 'l': 'sox -t nul'. Utile correggerlo per altri utenti. Saluti.
sixjan
Linux 2.4
Linux 2.4
 
Messaggi: 407
Iscritto il: dom gen 06, 2008 11:46
Slackware: 14.1
Kernel: 3.10.17-smp
Desktop: Xfce 4.10

Re: Audio: play & rec simultanei in una shell (sox?) [risolto]

Messaggioda zoros » sab apr 11, 2009 12:58

sixjan ha scritto:
Ciao. Ti sei dimenticato una 'l': 'sox -t nul'. Utile correggerlo per altri utenti. Saluti.


Ciao,
se ti riferisci alla linea:
Codice: Seleziona tutto
sox -t nul /dev/null -t ossdsp /dev/dsp synth $TIME sine $FREQ

questa è corretta, stranamente lo switch "-t" accetta "nul" e non "null" ... provare per credere, comunque potremmo avere versioni di sox che si comportano diversamente, eventualmente segnalalo qui ... la versione che ho usato:
Codice: Seleziona tutto
sox -V
sox: Version 12.18.1
vorrei riavere le mie firme ...
Avatar utente
zoros
Linux 3.x
Linux 3.x
 
Messaggi: 1302
Iscritto il: lun mag 28, 2007 21:51
Località: Gorizia
Nome Cognome: Fabio∙Zorba
Slackware: 13.37
Kernel: 3.2.5
Desktop: KDE-3.5.10

Re: Audio: play & rec simultanei in una shell (sox?) [risolto]

Messaggioda sixjan » ven apr 17, 2009 9:45

Sì, io ho la versione inclusa in Slackware 12.2:

sox: SoX v14.1.0

Se do l'argomento "nul" all'opzione "-t" ricevo un errore:

sox formats: no handler for given file type `nul'

A quanto pare è una questione di versioni differenti. Ciao.
sixjan
Linux 2.4
Linux 2.4
 
Messaggi: 407
Iscritto il: dom gen 06, 2008 11:46
Slackware: 14.1
Kernel: 3.10.17-smp
Desktop: Xfce 4.10

Re: Audio: play & rec simultanei in una shell (sox?) [risolto]

Messaggioda zoros » sab apr 18, 2009 17:56

sixjan ha scritto:Sì, io ho la versione inclusa in Slackware 12.2:

sox: SoX v14.1.0

Se do l'argomento "nul" all'opzione "-t" ricevo un errore:

sox formats: no handler for given file type `nul'

A quanto pare è una questione di versioni differenti. Ciao.

Hai fatto molto bene allora ad evidenziare la questione ... purtroppo è una cosa neanche troppo sporadica, per non parlare poi delle differenze tai i vari sh,csh,bash (e dei bugs ivi contenuti) ... chiaramente cose del genere rischiano di invalidare anche script complessi e ben progettati ... non bene, direi ...
vorrei riavere le mie firme ...
Avatar utente
zoros
Linux 3.x
Linux 3.x
 
Messaggi: 1302
Iscritto il: lun mag 28, 2007 21:51
Località: Gorizia
Nome Cognome: Fabio∙Zorba
Slackware: 13.37
Kernel: 3.2.5
Desktop: KDE-3.5.10


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron