Autore Topic: Rilevare I/O audio  (Letto 1337 volte)

Offline sigmund

  • Gamberetto
  • *
  • Post: 7
    • Mostra profilo
Rilevare I/O audio
« il: 15 Marzo 2009, 11:52:58 »
Ciao a tutti ho il seguente problemino:
Esiste un metodo che permetta a Gambas di rilevare se la scheda audio stà riproducendo qualcosa ?
Stesso problema per l'input microfonico.
A me basterebbe rilevare la presenza del segnale, in parte ho risolto usando un programma esterno (record) ma non mi sembra il metodo migliore (poco gambasiano).

Offline madnessmike

  • Gamberetto
  • *
  • Post: 43
    • Mostra profilo
    • MadnessBlog
Re: Rilevare I/O audio
« Risposta #1 il: 15 Marzo 2009, 14:14:19 »
Per vedere se la scheda audio è occupata o no per riprodurre un suono ho fatto così, sfruttando la proprietà del catch, che viene attivato in caso di errore di un comando:

Codice: [Seleziona]

PUBLIC SUB Suona()
  DIM SoundToPlay AS Sound
  SoundToPlay= NEW Sound("nomefile")
  SoundToPlay.Play()
  CATCH
    PRINT "Device occupato"
END

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Rilevare I/O audio
« Risposta #2 il: 16 Marzo 2009, 20:07:07 »
Puoi anche evitare di mandare in CATCH il codice:

Codice: [Seleziona]

PUBLIC SUB Suona()
  DIM SoundToPlay AS Sound
  SoundToPlay= NEW Sound("nomefile")
  TRY SoundToPlay.Play()
  IF ( ERROR ) THEN
    PRINT "Device occupato"
  END IF
END

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.264
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Rilevare I/O audio
« Risposta #3 il: 30 Giugno 2013, 23:07:02 »
.... ma non mi sembra il metodo migliore (poco gambasiano).

Un modo ancor meno gambasiano, ma molto sbrigativo ed efficace  ;D , è di lanciare da terminale la seguente linea di comando:

 ~ $ cat < /proc/asound/card0/pcm0p/sub0/status

(il numero identificativo presente nel nome pcm0p del dispositivo audio della scheda può essere anche diverso: pcm1p, pcm2p, etc)

Se il risultato è "closed", significa che la scheda audio (in questo caso la prima, qualora ve ne siano due o più disponibili, identificata con il numero zero) non sta processando alcun segnale audio.


 
« Ultima modifica: 19 Settembre 2023, 07:52:06 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.264
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Rilevare I/O audio
« Risposta #4 il: 16 Novembre 2013, 02:23:11 »
...ma, ovviamente, è possibile anche una soluzione tutta gambasiana:

http://www.gambas-it.org/wiki/index.php?title=Rilevare_se_la_scheda_audio_sta_processando_dati_audio
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »