Gambas-it

Gambas3 => Programmazione => Topic aperto da: dregi - 16 Novembre 2019, 19:27:34

Titolo: Sparito il suono
Inserito da: dregi - 16 Novembre 2019, 19:27:34
Con la funzione che segue eseguivo dei file wav in risposta ad eventi nella app. Il tutto funzionava egregiamente, ma dopo l'aggiornamento di Ubuntu a 19.10, non si sente più nulla, anche se la scheda audio funziona per suoni diversi da wav.
Codice: [Seleziona]
Public Sub Suona(nomeWav As String)
Dim err, channel As Integer
 Dim audio_rate As Integer = 44100   ' Imposta la frequenza che verrà usata da "SDL_mixer"
 Dim audio_buffers As Short = 4096   ' Determina la quantità di blocchi di memoria utilizzati per incamerare ed eseguire i campioni audio
 Dim fl, psound As Pointer

' Inizializza il dispositivo SDL audio:
   err = SDL_Init(SDL_INIT_AUDIO)
   If err < 0 Then Error.Raise("Impossibile inizializzare la libreria SDL: " & SDL_GetError())

' Inizializza la libreria "SDL_mixer" con specifiche impoostazioni audio:
   err = Mix_OpenAudio(audio_rate, AUDIO_S16SYS, STEREO, audio_buffers)
   If err <> 0 Then Error.Raise("Impossibile inizializzare l'audio: " & Mix_GetError())
   
' Carica il file WAV:
   fl = SDL_RWFromFile(VP.AppPath & "suoni/" & nomeWav, "rb")
   If fl = 0 Then Error.Raise("Errore nel caricamento del file !")

   psound = Mix_LoadWAV_RW(fl, 1)

' Esegue il file WAV caricato, ed intercetta il canale sul quale viene eseguito.
' Passando il valore -1 al primo argomento della funzione, il campione audio sarà eseguito sul primo canale audio disponibile:
   channel = Mix_PlayChannelTimed(-1, psound, 0, 0)
   If channel = -1 Then Error.Raise("Impossibile eseguire il file WAV: " & Mix_GetError())

' Attende che sia terminato il file WAV:
   While Mix_Playing(channel) <> 0
     Wait 0.01
   Wend

' Libera la memoria precedentemente allocata per l'esecuzione sonora:
   Mix_FreeChunk(psound)
 
' Chiude l'interfaccia audio SDL e SDL_mixer:
   Mix_CloseAudio()
 
   SDL_Quit()
  End Sub
Titolo: Re:Sparito il suono
Inserito da: vuott - 16 Novembre 2019, 21:16:29
Da quel che vedo lì usi le funzioni esterne della libreria SDL.
Hai provato ad usare le risorse di Gambas, ossia quelle del Componente "gb.sdl2.audio", per verificare se il suono si sente ?
Titolo: Re:Sparito il suono
Inserito da: dregi - 16 Novembre 2019, 22:50:09
con componente o che riga di codice lo richiamo?
Music.Load( percorso)
Music.Play

non danno alcun risultato

Titolo: Re:Sparito il suono
Inserito da: vuott - 17 Novembre 2019, 00:00:57
Ma è presente nel tuo sistema la libreria /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.....  ?
Titolo: Re:Sparito il suono
Inserito da: dregi - 17 Novembre 2019, 12:09:02
Dall'immagine allegata, mi sembra di essere a posto....dagli un'occhiata....
Comunque:
sudo apt-get install libsdl2-2.0-0
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze       
Lettura informazioni sullo stato... Fatto
libsdl2-2.0-0 è già alla versione più recente (2.0.10+dfsg1-1ubuntu1).
0 aggiornati, 0 installati, 0 da rimuovere e 0 non aggiornati.

Quindi non ho installato nulla e sembra essere presente alla versione più recente.
Tra i componenti del progetto è flaggato gb.sdl2.audio.
Devo fare qualcos'altro?
Titolo: Re:Sparito il suono
Inserito da: Gianluigi - 17 Novembre 2019, 17:08:16
a me questo progetto allegato allegato funziona.
Purtroppo essendo i file wav enormi rispetto agli ogg devo inviare le immagini delle form nel prossimo post.
Titolo: Re:Sparito il suono
Inserito da: Gianluigi - 17 Novembre 2019, 17:09:53
le immagini da inserire in LikeBomber-wav
Titolo: Re:Sparito il suono
Inserito da: vuott - 17 Novembre 2019, 17:15:54
a me questo progetto allegato allegato funziona.
Anche a me si sente l'allarme.
Titolo: Re:Sparito il suono
Inserito da: vuott - 17 Novembre 2019, 17:20:22
Music.Load( percorso)
Music.Play

non danno alcun risultato

Ricorda che, se usi un'applicazione a riga di comando (senza grafica), dopo quelle due righe devi porre un ciclo o un Wait per far riprodurre il file audio.
Titolo: Re:Sparito il suono
Inserito da: dregi - 21 Novembre 2019, 14:56:13
Ho lanciato il programmino di Gianluigi effetti:
1) fuori della finestra è passato unabomber
2) non si apre lo chassis
3) da me il silenzio è assoluto

Confermo che fuori da Gambas la app Video esegue i wav .
anche se in terminal il seguente:
aplay laser.wav dà come risultato: Riproduzione in corso WAVE 'laser.wav' : Unsigned 8 bit, Frequenza 22050 Hz, Mono
ma non si ode nulla. il mixer di alsa ha i volumi a posto.
Dopo l'installazione sudo apt-get install mpg123
play laser.wav     f u n z i o n a.

Non so più che pesci pigliare.

P.S. carino il programma!! :)
Titolo: Re:Sparito il suono
Inserito da: Gianluigi - 21 Novembre 2019, 15:17:56
Ho lanciato il programmino di Gianluigi effetti:
1) fuori della finestra è passato unabomber
2) non si apre lo chassis
Intendi dire che, anche se clicchi sul pulsante Apri lo chassis il menu popup non si mostra cliccando sulla finestra con il tasto destro del mouse?
Apri lo chassis dovrebbe sbloccare il menu popup  :-\
Citazione
3) da me il silenzio è assoluto
Ti allego il programma originale con i file ogg, vedi se ti funziona... anche se ne dubito, provare non costa nulla e si ottiene un'informazione in più.
Citazione
Confermo che fuori da Gambas i wav vengono eseguiti.
Non so più che pesci pigliare.

P.S. carino il programma!! :)

Grazie  :)

Titolo: Re:Sparito il suono
Inserito da: dregi - 21 Novembre 2019, 15:28:09
Non so se lo hai fatto per aumentare il brivido  :)  ,ma si deve prima cliccare col sinistro e solo dopo il destro apre il pop-up
Titolo: Re:Sparito il suono
Inserito da: dregi - 21 Novembre 2019, 15:38:57
Ti allego il programma originale con i file ogg, vedi se ti funziona... anche se ne dubito, provare non costa nulla e si ottiene un'informazione in più.
Citazione

I' ultimo allegato tar.gz estrae un altro archivio "inlucchettato"
Titolo: Re:Sparito il suono
Inserito da: dregi - 21 Novembre 2019, 16:12:11
al terminale:
my@corsair-ubuntu:~/OPTODENT$ play laser.wav
play WARN alsa: can't encode 0-bit Unknown or not applicable

laser.wav:

 File Size: 17.4k     Bit Rate: 177k
  Encoding: Unsigned PCM 
  Channels: 1 @ 8-bit   
Samplerate: 22050Hz     
Replaygain: off         
  Duration: 00:00:00.79 

In:100%  00:00:00.79 [00:00:00.00] Out:17.3k [!=====|=====!]        Clip:0   
Done.


Funziona

in Gambas con Shell "cd OPTODENT;play laser.wav" la console restituisce :

play WARN alsa: can't encode 0-bit Unknown or not applicable

laser.wav:

 File Size: 17.4k     Bit Rate: 177k
  Encoding: Unsigned PCM 
  Channels: 1 @ 8-bit   
Samplerate: 22050Hz     
Replaygain: off         
  Duration: 00:00:00.79


....e non si sente nulla!
Titolo: Re:Sparito il suono
Inserito da: Gianluigi - 21 Novembre 2019, 16:28:53
Circa LikeBomber l'ho scaricato con due diversi PC e non è luchettato, forse c'è stato un problema durante il download, riprova.

Circa il tema, tu Linux come lo hai installato, su macchina virtuale?
Perché in questo caso potresti provare alzando il volume al massimo.

La prova che fai con laser.wav falla anche con un file wav di likebomber.
Titolo: Re:Sparito il suono
Inserito da: dregi - 28 Novembre 2019, 12:32:09
No, ubuntu è installato normalmente.

Ho provato anche i tuoi file wav: nulla!

Dal momento che laser.wav e altri file vengono regolarmente eseguiti da terminale Ubuntu, e nessuno di essi viene eseguito da una qualsivoglia app Gambas, mi sembra di poter concludere che il problema risiede unicamente in Gambas, allora, non essendoci altri componenti riguardanti il suono se non gb.sdl2.audio.
La domanda allora è che strada devo seguire per provare ad aggiornare/reinstallare detto componente?
Titolo: Re:Sparito il suono
Inserito da: vuott - 28 Novembre 2019, 14:04:33
non essendoci altri componenti riguardanti il suono se non gb.sdl2.audio.

Stai scherzando ?

Se vogliamo parlare sooolo dei "Componenti Gambas", esistono anche gb.media:

   https://www.gambas-it.org/wiki/index.php?title=La_gestione_dei_file_audio_mediante_il_componente_gb.media

e gb.openal:

   https://www.gambas-it.org/wiki/index.php?title=La_gestione_dei_file_audio_mediante_il_componente_gb.openal


Per le "altre" soluzioni rinvio nuovamente alla nostra copiosa Wiki:
   https://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0#Gestione_dei_dati_audio_e_dei_file_audio
Titolo: Re:Sparito il suono
Inserito da: Gianluigi - 28 Novembre 2019, 14:37:36
Le cose importanti le ha scritte vuott.

Io mi limito a parlare del sistema operativo, se non ricordo male hai una versione di Ubuntu standard.
Queste versioni vengono abbandonate dopo nove mesi e non sono adatte per che vuole programmare.
I tuoi problemi è facile che partano da quella scelta.
Installa una LTS e probabilmente risolvi tutti i problemi che ti sono stati creati all'atto dell'aggiornamento.
E poi, questo è un giudizio personale, invece di aggiornare è meglio disinstallare e reinstallare da zero dopo aver fatto il backup esterno di tutti i dati importanti.
Titolo: Re:Sparito il suono
Inserito da: kicco - 28 Novembre 2019, 20:15:26
 :ciao:
Se può servire:
ubuntu 19.04 con gb.sdl2.audio attivo, non ho problemi usando:

Codice: [Seleziona]
  Dim sn As Sound
      sn = Sound.load("fileaudio")
      sn.play
:ciao:
Titolo: Re:Sparito il suono
Inserito da: vuott - 29 Novembre 2019, 00:27:37
con componente o che riga di codice lo richiamo?
Music.Load( percorso)
Music.Play

Vediamo un esempio per eseguire file audio di formato MP3 con la Classe Music del Componente gb.sdl2.audio e con l'ausilio della libreria esterna "libmpeg3":
Codice: [Seleziona]
Library "libmpeg3:2.1.8"

' mpeg3_t* mpeg3_open(char *path, int *error_return)
' Open the MPEG stream.
Private Extern mpeg3_open(path As String, error_return As Pointer) As Pointer
 
' long mpeg3_audio_samples(mpeg3_t *file, int stream)
Private Extern mpeg3_audio_samples(mpeg3file As Pointer, _stream As Integer) As Long

' int mpeg3_sample_rate(mpeg3_t *file, int stream)
Private Extern mpeg3_sample_rate(mpeg3file As Pointer, _stream As Integer) As Integer

' int mpeg3_close(mpeg3_t *file)
' Close the MPEG stream.
Private Extern mpeg3_close(mpeg3file As Pointer) As Integer


Public Sub Main()

  Dim mp3 As Pointer
  Dim perc As String
  Dim camp As Long
  Dim freq, i As Integer
  Dim s As Single
  Dim tmp As Date
 
  perc = "/percorso/del/file.mp3"
 
  mp3 = mpeg3_open(perc, 0)
 
  camp = mpeg3_audio_samples(mp3, 0)
 
  freq = mpeg3_sample_rate(mp3, 0)

  s = camp / freq
 
  Print "Durata: "; Date(0, 0, 0, 0, 0, 0, s * 1000)
     
  Music.Load(perc)
  Music.Play

  tmp = Now

  Repeat
    i = DateDiff(tmp, Now, gb.Second)
    Write "\rTempo trascorso: " & Date(0, 0, 0, 0, 0, 0, i * 1000)
  Until i >= s

  mpeg3_close(mp3)

End