Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-10-2008, 11:17   #1
christiantric
Member
 
L'Avatar di christiantric
 
Iscritto dal: Apr 2007
Città: Lecce
Messaggi: 227
[C++]Riprodurre un file audio

Salve a tutti,
è da tanto che non sono alle prese con c++ per cui chiedo aiuto per una cosa che non ho mai fatto.
Devo riprodurre un file audio (qualsiasi formato va bene) al verificarsi di un certo evento.
Lavoro su un sistema unix (Linux Ubuntu Hardy) ed avevo letto qualcosa che faceva intendere si postesse fare con l'ausilio della sola <stdio.h>.
Potete darmi qualche suggerimento?
Grazie
__________________
MY PC CONFIGURATION:
SCHEDA MADRE: ASROCK 4CORE-DUAL VSTA PROCESSORE: CONROE E6600 CORE DUO RAM: 1Gb Geil PC 3200 400MHz (2.5,4,4,8)
ALI: ALLIED da 450WSCHEDA VIDEO: HD4850 Sapphire Design 512MB HARD DISK: Saegate 500Gb 7200Rpm MAST DVD LG LETTORE DVD LG
christiantric è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 11:48   #2
tglman
Senior Member
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
Credo che sia possibile suonare un file audio su linux solo con stdio !!!

ma probabilmente devi aver installato dei driver che gestiscono la cosa.

ed a quel punto basta aprire il file giusto sotto /dev

vedi questo esempio credo che ti può essere di aiuto:
http://users.powernet.co.uk/kienzle/...io/aurecord.cc
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 11:50   #3
tglman
Senior Member
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
anche questa guida credo ti sia utile:
http://www.oreilly.de/catalog/multil...pt/ch14-05.htm
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 14:15   #4
christiantric
Member
 
L'Avatar di christiantric
 
Iscritto dal: Apr 2007
Città: Lecce
Messaggi: 227
Grazie tglman ci dò subito un'occhiata!!
__________________
MY PC CONFIGURATION:
SCHEDA MADRE: ASROCK 4CORE-DUAL VSTA PROCESSORE: CONROE E6600 CORE DUO RAM: 1Gb Geil PC 3200 400MHz (2.5,4,4,8)
ALI: ALLIED da 450WSCHEDA VIDEO: HD4850 Sapphire Design 512MB HARD DISK: Saegate 500Gb 7200Rpm MAST DVD LG LETTORE DVD LG
christiantric è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2008, 12:08   #5
christiantric
Member
 
L'Avatar di christiantric
 
Iscritto dal: Apr 2007
Città: Lecce
Messaggi: 227
Grazie alla guida sopra linkata forse ho capito che direzione prendere tuttavia non sto riuscedo a riprodurre il contenuto di un file audio.
L'esempio proposto per programmare /dev/dsp permette di registrare un audio di 3 secondi e di riprodurlo.
Ho visto che per registrare utilizza la funzione read allora ho pensato:

Codice:
audio = open("/home/jacktric/Scrivania/Provadir/prova_audio.wav", O_RDONLY);
status = read(audio, buf, sizeof(buf)); /* mette il contenuto del file audio in buf */
status = write(fd, buf, sizeof(buf)); /* play it back */
per portare il contenuto del file "prova_audio.wav" nel buffer "buf".
In realtà però quando riproduco scrivendo nel file dsp mi viene fuori un suono pazzesco che nulla centra con quello della traccia!!
Vi prego come posso fare ci sto perdendo i giorni!!
__________________
MY PC CONFIGURATION:
SCHEDA MADRE: ASROCK 4CORE-DUAL VSTA PROCESSORE: CONROE E6600 CORE DUO RAM: 1Gb Geil PC 3200 400MHz (2.5,4,4,8)
ALI: ALLIED da 450WSCHEDA VIDEO: HD4850 Sapphire Design 512MB HARD DISK: Saegate 500Gb 7200Rpm MAST DVD LG LETTORE DVD LG
christiantric è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2008, 13:37   #6
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da christiantric Guarda i messaggi
per portare il contenuto del file "prova_audio.wav" nel buffer "buf".
In realtà però quando riproduco scrivendo nel file dsp mi viene fuori un suono pazzesco che nulla centra con quello della traccia!!
Vi prego come posso fare ci sto perdendo i giorni!!
Per forza il file wav contiene anche degli header, mentre la scheda audio si aspetta solo campioni PCM.
Devi prima usare una libreria per leggere gli wav (o scrivertela da te) e poi passare i campioni ottenuti alla scheda audio.
Io ti consiglio la libreria libsndfile
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2008, 15:23   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Oppure usi aplay richiamandolo con fork - exec. Certo funziona solo se è presente ALSA nel sistema.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2008, 16:08   #8
christiantric
Member
 
L'Avatar di christiantric
 
Iscritto dal: Apr 2007
Città: Lecce
Messaggi: 227
Signori per me state parlando arabo (sopratutto cionci) comunque vi ringrazio per il vostro intervento e mi metto subito a studiare le possibilità da voi esposte!!

Certo che se mi fareste un piccolo banale esempio se ce lo avete a portata...
__________________
MY PC CONFIGURATION:
SCHEDA MADRE: ASROCK 4CORE-DUAL VSTA PROCESSORE: CONROE E6600 CORE DUO RAM: 1Gb Geil PC 3200 400MHz (2.5,4,4,8)
ALI: ALLIED da 450WSCHEDA VIDEO: HD4850 Sapphire Design 512MB HARD DISK: Saegate 500Gb 7200Rpm MAST DVD LG LETTORE DVD LG
christiantric è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2008, 16:12   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
man aplay
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2008, 17:06   #10
christiantric
Member
 
L'Avatar di christiantric
 
Iscritto dal: Apr 2007
Città: Lecce
Messaggi: 227
Ragazzi, ma è possibile che sia così difficile riprodurre un file audio?
Ci sto provando da giorni ormai...vi posto un pò di codice a cui sono giunto ditemi per favore cosa non va (ho usato la libreria libsndfile)

Codice:
#include <stdio.h>
#include <linux/soundcard.h>
#include <sndfile.h> 

int main()
{
  int fd;	/* sound device file descriptor */
  int arg;	/* argument for ioctl calls */
  int status;   /* return status of system calls */
  int audio;	/* audio da riprodurre file descriptor */

  SF_INFO sfinfo;
  sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_32;
  sfinfo.samplerate = 22050;
  sfinfo.channels = 1;
  sfinfo.frames     = 123456789 ;
  char	*filename ;
  filename = "/home/jacktric/Scrivania/Provadir/prova_audio.wav";

 /* apro il file audio da riprodurre in lettura */
  SNDFILE* sf_audio;
  sf_audio = sf_open(filename, SFM_READ, &sfinfo);
  if (sf_audio == NULL) {
    perror("open of file audio failed");
    exit(1);
  }

/* open sound device */
  SNDFILE* sf_fd;
  sf_fd = sf_open("/dev/dsp", SFM_WRITE, &sfinfo); 
  if (sf_fd == NULL) {
    perror("open of /dev/dsp failed");
    exit(1);
  }

sf_command (sf_fd, SFC_SET_UPDATE_HEADER_AUTO, NULL, SF_TRUE) ;

  /* Operazioni di lettura audio ed esecuzione */
  int intptr[659924];
  int status_read;
  status_read = sf_read_int(sf_audio, intptr, 659924); 
  printf("status_read: %d\n", status_read);
  int status_write;
  status_write = sf_write_int(sf_fd, intptr, 659924);
  printf("status_write: %d\n", status_write);
  

  int close;
  close = sf_close(sf_audio);
  close = sf_close(sf_fd);
}
__________________
MY PC CONFIGURATION:
SCHEDA MADRE: ASROCK 4CORE-DUAL VSTA PROCESSORE: CONROE E6600 CORE DUO RAM: 1Gb Geil PC 3200 400MHz (2.5,4,4,8)
ALI: ALLIED da 450WSCHEDA VIDEO: HD4850 Sapphire Design 512MB HARD DISK: Saegate 500Gb 7200Rpm MAST DVD LG LETTORE DVD LG
christiantric è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2008, 19:40   #11
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
[OT]
Ci sara' anche un motivo per cui i giochi sotto Linux non sono molto diffusi.

Sotto Windows, in C#
Codice:
SoundPlayer sp = new SoundPlayer(@"C:\WINDOWS\Media\tada.wav");
sp.Play();
[/OT]
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2008, 19:46   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Ci sara' anche un motivo per cui i giochi sotto Linux non sono molto diffusi.
Le system call in unix/linux solitamente non implementano funzioni di alto livello, basta in ogni caso usare una libreria, OpenAL, SDL etc etc.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2008, 23:34   #13
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
[OT]
Ci sara' anche un motivo per cui i giochi sotto Linux non sono molto diffusi.
e mica solo quello: DirectX dove lo metti?


Quote:
Sotto Windows, in C#
Codice:
SoundPlayer sp = new SoundPlayer(@"C:\WINDOWS\Media\tada.wav");
sp.Play();
niubboh, posso fare di meglio:
Codice:
new SoundPlayer(@"C:\WINDOWS\Media\tada.wav").Play();
una sola riga


Quote:
Originariamente inviato da cionci Guarda i messaggi
Le system call in unix/linux solitamente non implementano funzioni di alto livello
in Windows invece si:
http://msdn.microsoft.com/en-us/library/ms712879.aspx
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2008, 00:03   #14
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Ci sta sempre OpenAL + ogg Vorbis... ma poi appunto puoi usare solo gli .ogg.
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2008, 08:02   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da 71104 Guarda i messaggi
Lo so, questo perché il sound server su Linux/Unix non è parte integrante del kernel.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2008, 08:42   #16
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
[OT]
Ci sara' anche un motivo per cui i giochi sotto Linux non sono molto diffusi.

Sotto Windows, in C#
Codice:
SoundPlayer sp = new SoundPlayer(@"C:\WINDOWS\Media\tada.wav");
sp.Play();
[/OT]
OT per OT scriveresti un software per riprodurre musica usando un wrapper del PlaySound?
Io credo proprio di no.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2008, 08:50   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ad esempio su linux se dovessi fare un player utilizzerei libsox. Apro un file (il bello è che supporta molti formati), estraggo i campioni PCM e poi lo butto su /dev/dsp.
Praticamente si riesce a fare un player audio multiformato in 20 linee di codice.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2008, 09:15   #18
christiantric
Member
 
L'Avatar di christiantric
 
Iscritto dal: Apr 2007
Città: Lecce
Messaggi: 227
Mmmm... ...da questa vostra piccola discussione dovrei ricavare la soluzione del mio problema??
Nessuno che abbia usato ste libsndfile per riprodurre un file audio?
Mi state per caso suggerendo qualche via alternativa?

Le proposte windowsniane sono molto allettanti ma io mi trovo sotto Linux e qui DEVO rimanere...
__________________
MY PC CONFIGURATION:
SCHEDA MADRE: ASROCK 4CORE-DUAL VSTA PROCESSORE: CONROE E6600 CORE DUO RAM: 1Gb Geil PC 3200 400MHz (2.5,4,4,8)
ALI: ALLIED da 450WSCHEDA VIDEO: HD4850 Sapphire Design 512MB HARD DISK: Saegate 500Gb 7200Rpm MAST DVD LG LETTORE DVD LG
christiantric è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2008, 09:28   #19
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da christiantric Guarda i messaggi
Mmmm... ...da questa vostra piccola discussione dovrei ricavare la soluzione del mio problema??
Il "non va" è troppo generico. Cosa esattamente non ti funziona?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 04-11-2008, 09:52   #20
christiantric
Member
 
L'Avatar di christiantric
 
Iscritto dal: Apr 2007
Città: Lecce
Messaggi: 227
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Il "non va" è troppo generico. Cosa esattamente non ti funziona?
Praticamente il problema è sempre lo stesso, riesco a passare i dati a dev/dsp con quel codice ma viene riprodotto sempre un suono stridulo, un rumore praticamente.
Ho letto tutta la documentazione di libsndfile ma non trovo nulla (apparentemente) riguardante l'estrazione della sola codifica pcm dell'audio o l'isolamento dell'header ecc ecc come mi avevi tu stesso suggerito.
Allora pensando che lo facesse in automatico ho scritto quel codice che ho postato...ma nada de nada!!
__________________
MY PC CONFIGURATION:
SCHEDA MADRE: ASROCK 4CORE-DUAL VSTA PROCESSORE: CONROE E6600 CORE DUO RAM: 1Gb Geil PC 3200 400MHz (2.5,4,4,8)
ALI: ALLIED da 450WSCHEDA VIDEO: HD4850 Sapphire Design 512MB HARD DISK: Saegate 500Gb 7200Rpm MAST DVD LG LETTORE DVD LG
christiantric è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Google Maps avrà una modalit&agra...
HONOR sta lavorando a uno smartphone con...
Thermaltake MAGFloe 360 Ultra ARGB Sync:...
Xiaomi 15T ora in super offerta su Amazo...
Si stringe il cerchio attorno a TP-Link ...
Amazon cambia i prezzi ancora una volta:...
Imperdibili i Google Pixel 10 a questi p...
Dyson OnTrac in super offerta su Amazon:...
Amazon: la nuova ondata di licenziamenti...
Questo portatile è un mostro: MSI...
Apple Watch Series 11 GPS + Cellular cro...
JBL Clip 5 in forte sconto su Amazon: lo...
Il nuovo top di gamma compatto di OnePlu...
Cresce il divario tra dispositivi elettr...
La missione con equipaggio Shenzhou-21 h...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:34.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v