Torna indietro   Hardware Upgrade Forum > Software > Programmazione

AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-05-2007, 12:07   #1
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
[C] File audio WAV: devo leggerne l'Header x saperne la lunghezza in tempo?!

... ho dei file WAV da utilizzare, ma devo usare il C per capire quanti secondi/minuti/ore/ecc ... durano in modo da impiegarli nel modo migliore.

Qualcuno lo ha già fatto per caso?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 12:09   #2
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Utilizzare qualcosa tipo questo:

Codice:
/*	*********************************************
		controllo che il file sia un file WAV in "Canonical Wave Format"
		leggo i primi 12 bytes in cui c'e' il primo header di tipo RIFF	*/

	if(*plenfile<12) {
		fprintf(stderr, "lunghezza file troppo piccola, non c'e' il primo 
header\n");
		fclose(f);
		return(0);
	}
	ris=fread(buf,1,12,f);
	if(ris<12) {
		fprintf(stderr, "letti solo %d byte invece di 12\ntermino\n", ris);
		fclose(f);
		return(0);
	}
	/* nei primi 4 byte ci deve essere "RIFF" */
	ris=strncmp(buf,"RIFF",4);
	if(ris!=0) {
		fprintf(stderr, "il primo campo del file non e' RIFF,  non e' un file 
WAV\ntermino\n");
		fclose(f);
		return(0);
	}
	/* nei byte dal 5 all 8 ci deve essere la lunghezza totale del file */
	filelendentroilfile=littleendian32bit2littleendian(buf+4);
	fprintf(stderr, "filelendentroilfile %ld\n", filelendentroilfile);

	if(filelendentroilfile!=*plenfile) {
		fprintf(stderr, "WARNING: filelendentroilfile=%ld  !=  *plenfile=%ld 
\n", filelendentroilfile, *plenfile );
		fprintf(stderr, "ma continuo lo stesso\n" );
		/*
		fclose(f);
		return(0);
		*/
	}
	/* nei byte dal 9 al 12 ci deve essere "WAVE" */
	ris=strncmp(buf+8,"WAVE",4);
	if(ris!=0) {
		fprintf(stderr, "il terzo campo del file non e' WAVE,  non e' un file 
WAV\ntermino\n");
		fclose(f);
		return(0);
	}
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 13:45   #3
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
io non ho mai gestito il formato WAV, ma per i file formats wotsit.org è la fonte: http://www.wotsit.org/list.asp?search=wav&button=GO%21

ciao

edit: questo link dovrebbe fare al caso tuo: http://www.wotsit.org/getfile.asp?fi...e&sc=232612309
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 13:55   #4
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Utilizzare qualcosa tipo questo:

Codice:
/*	*********************************************
		controllo che il file sia un file WAV in "Canonical Wave Format"
		leggo i primi 12 bytes in cui c'e' il primo header di tipo RIFF	*/

	if(*plenfile<12) {
		fprintf(stderr, "lunghezza file troppo piccola, non c'e' il primo 
header\n");
		fclose(f);
		return(0);
	}
	ris=fread(buf,1,12,f);
	if(ris<12) {
		fprintf(stderr, "letti solo %d byte invece di 12\ntermino\n", ris);
		fclose(f);
		return(0);
	}
	/* nei primi 4 byte ci deve essere "RIFF" */
	ris=strncmp(buf,"RIFF",4);
	if(ris!=0) {
		fprintf(stderr, "il primo campo del file non e' RIFF,  non e' un file 
WAV\ntermino\n");
		fclose(f);
		return(0);
	}
	/* nei byte dal 5 all 8 ci deve essere la lunghezza totale del file */
	filelendentroilfile=littleendian32bit2littleendian(buf+4);
	fprintf(stderr, "filelendentroilfile %ld\n", filelendentroilfile);

	if(filelendentroilfile!=*plenfile) {
		fprintf(stderr, "WARNING: filelendentroilfile=%ld  !=  *plenfile=%ld 
\n", filelendentroilfile, *plenfile );
		fprintf(stderr, "ma continuo lo stesso\n" );
		/*
		fclose(f);
		return(0);
		*/
	}
	/* nei byte dal 9 al 12 ci deve essere "WAVE" */
	ris=strncmp(buf+8,"WAVE",4);
	if(ris!=0) {
		fprintf(stderr, "il terzo campo del file non e' WAVE,  non e' un file 
WAV\ntermino\n");
		fclose(f);
		return(0);
	}

http://msdn2.microsoft.com/en-us/library/ms713497.aspx


ciao
okay è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 16:22   #5
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
OK, grazie.
Adesso vedo se ci capisco qualcosa.

Ma voi non utilizzate mai:
http://www.google.com/codesearch?hl=it

?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 19:49   #6
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
O_O
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 22:28   #7
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da 71104 Guarda i messaggi
O_O
Si, x cercare codice da riutilizzare o vedere gli altri come fanno le cose tanto per migliorarsi o 1000 altri usi.

Insomma: è inutile reinventare la ruota. NO?
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 23:11   #8
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19149
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
OK, grazie.
Adesso vedo se ci capisco qualcosa.

Ma voi non utilizzate mai:
http://www.google.com/codesearch?hl=it

?!
cavolo non lo conoscevo, MITICO
io di solito scarico i sorgenti che possono interessarmi e uso cscope, ma così si fa più in fretta
recoil è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2007, 23:19   #9
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da recoil Guarda i messaggi
cavolo non lo conoscevo, MITICO
io di solito scarico i sorgenti che possono interessarmi e uso cscope, ma così si fa più in fretta
Si infatti, ma aiutiamo a vicenda.
Quindi sbizzarritevi ad aiutarmi plz:
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
... ho dei file WAV da utilizzare, ma devo usare il C per capire quanti secondi/minuti/ore/ecc ... durano in modo da impiegarli nel modo migliore.

Qualcuno lo ha già fatto per caso?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2007, 09:54   #10
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
http://www.google.com/codesearch?q=wav+reader&hl=it
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2007, 21:54   #11
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da 71104 Guarda i messaggi
edit: questo link dovrebbe fare al caso tuo: http://www.wotsit.org/getfile.asp?fi...e&sc=232612309
Link inesistente.

Tra l'altro da tutti questi link sembra non uscire un campo di TOT bytes per indicare il tempo.
Come lo ricavo?!

Io pensavo che data la frequenza di campionamento costante si potesse tentare qualcosa del tipo:
frequenza di campionamento * numero di campioni?!

Con un MP3 la vita sarebbe + semplice?!
C'è 1 campo esplicito x la lunghezza del file audio?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 22-05-2007 alle 21:59.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2007, 22:05   #12
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
O almeno trovare un programma che posso lanciare con la funzione "System(STRINGA DI COMANDO)" che mi possa restituire come risultato la lunghezza del file audio.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2007, 22:11   #13
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Link inesistente.

Tra l'altro da tutti questi link sembra non uscire un campo di TOT bytes per indicare il tempo.
Come lo ricavo?!

Io pensavo che data la frequenza di campionamento costante si potesse tentare qualcosa del tipo:
frequenza di campionamento * numero di campioni?!

Con un MP3 la vita sarebbe + semplice?!
C'è 1 campo esplicito x la lunghezza del file audio?!


certo che c'è:

//
TimeWav=Lunghezzafile/W.persec;
//controllo bit
if(W.wBitsPerSample==16)
TimeWav=TimeWav/2;
//numero canali
TimeWav=TimeWav/W.Canali;

forse se guardi il link sopra capiresti meglio...
okay è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2007, 22:17   #14
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da okay Guarda i messaggi
certo che c'è:

//
TimeWav=Lunghezzafile/W.persec;
//controllo bit
if(W.wBitsPerSample==16)
TimeWav=TimeWav/2;
//numero canali
TimeWav=TimeWav/W.Canali;

forse se guardi il link sopra capiresti meglio...
Ti giuro che ho guardato, magari sono io che non capisco, ma guardare ho guardato.
Mi son fatto anche 1 raccolta di quello che ho trovato:
LINK della raccolta.

Ma tu a quale link in particolare stai facendo riferimento?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 22-05-2007 alle 22:23.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2007, 00:21   #15
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Link inesistente.
ops, è vero: il link è divenuto invalido subito dopo che io ho chiuso il browser, si vede che era correlato alla ricerca che ho fatto. comunque non ho fatto nulla di chè: ho solo cercato "WAV" su wotsit.org.

Quote:
Io pensavo che data la frequenza di campionamento costante si potesse tentare qualcosa del tipo:
frequenza di campionamento * numero di campioni?!
veramente sarebbe una divisione, non una moltiplicazione. esempio: 2 campioni al secondo, totale 4 campioni, risultato 2 secondi; però 2*4 fa 8
dovresti fare 4 / 2, cioè numero di campioni / frequenza (intesa come campioni al secondo).
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2007, 19:31   #16
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da okay Guarda i messaggi
certo che c'è:

//
TimeWav=Lunghezzafile/W.persec;
//controllo bit
if(W.wBitsPerSample==16)
TimeWav=TimeWav/2;
//numero canali
TimeWav=TimeWav/W.Canali;

forse se guardi il link sopra capiresti meglio...
Non riesco proprio a capire a che documento stai facendo riferimento.
Io leggendo:



, mi sono fatto questa idea del file wave:

__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2007, 19:41   #17
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Per una migliore soluzione del problema ho incrociato le informazioni:
HELP: devo leggere la lunghezza di files audio WAV con un programmino in C.

... per il ricavo della lunghezza del file audio (in secondi) attraverso algoritmo.
Questo nel qualcaso non riusci a identificare ed ad accedere al fantasmagorico "campo" TimeWav.

[EDIT]

Quote:
Originariamente inviato da cicciociccio Guarda i messaggi
Ok, capito, io ti dico come trovarla poi la applichi tu!
Allora ti spiego come si trova il peso poi con una formula inversa ricavi il tempo.
Prendiamo per esempio un file Wav campionato a 16bit,44.100Hz,stereo(sono 2 canali).
16(bit) x 44.100 (freq.) x 2(canali) x Y (secondi) = peso in bite.
chiaramente se hai un campione con freq. e bit canali diversi basta che li cambi,
es. 8(bit) x 48Khz (freq.) x 1(canale) x Y (secondi) = peso in bite

http://www.lcnet.it/priv/erioforo/mhlpmp3.html qui c'è una buona spiegazione
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 30-05-2007 alle 16:03.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2007, 20:57   #18
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Per una migliore soluzione del problema ho incrociato le informazioni:
HELP: devo leggere la lunghezza di files audio WAV con un programmino in C.

... per il ricavo della lunghezza del file audio (in secondi) attraverso algoritmo.
Questo nel qualcaso non riusci a identificare ed ad accedere al fantasmagorico "campo" TimeWav.
l'include:
#include <mmsystem.h>

apertura file:
HMMIO hmmio;
MMCKINFO mmckinfoParent;
MMCKINFO mmckinfoSubchunk;


/* Apertura file*/
if ((hmmio = mmioOpen(&WaveName[0], 0, MMIO_READ|MMIO_ALLOCBUF)))
{
/* prendi la lunghezza */
WaveDataSize = mmckinfoSubchunk.cksize;

/* chiudi il file */
mmioClose(hmmio, 0);
}

printf WaveDataSize



ciao
okay è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2007, 22:09   #19
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Un pò di riferimenti alla struttura degli Wav
http://www.sonicspot.com/guide/wavefiles.html
http://ccrma.stanford.edu/courses/42...cts/WaveFormat

Devi andare a trovare il Chunk chiamato 'data' e prendere i 4 byte successivi.
A me però risulta che il campo "datasize" sia in big endian (verificabile aprendo un file wave con un editor esadecimale)
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2007, 08:33   #20
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Ecco quì:

Codice HTML:
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <mmsystem.h>
#include <malloc.h>
#include <tchar.h>
#include <stdlib.h>


TCHAR		WaveName[] = "stereo.wav";
WAVEFORMATEX WaveFormat;
DWORD		WaveDataSize;

int _tmain(int argc, _TCHAR* argv[])
{

	HMMIO       hmmio;             
	MMCKINFO    mmckinfoParent;		
	MMCKINFO    mmckinfoSubchunk;	
	//prima intestazione
	if ((hmmio = mmioOpen(&WaveName[0], 0, MMIO_READ|MMIO_ALLOCBUF)))
	{
		mmckinfoParent.fccType = mmioFOURCC('W', 'A', 'V', 'E'); 
		if (mmioDescend(hmmio, (LPMMCKINFO)&mmckinfoParent, 0, MMIO_FINDRIFF)) 
		{
			return(-2);
		} 

...code

		WaveDataSize = mmckinfoSubchunk.cksize;
		printf("Wave size = %u\n", WaveDataSize);
		mmioClose(hmmio, 0);
		system("pause");
		return(0);
	}
	return(-1);
}
così me lo sono imparato anche io

Ultima modifica di okay : 26-05-2007 alle 08:35.
okay è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Booking.com e OpenAI annunciano SME AI A...
Xiaomi SU7 Ultra: da domani tutti i gioc...
Sharp Inspire Expo 2026: da produttore d...
Razer Synapse Web è realtà...
Concessionarie Audi chiudono improvvisam...
Resident Evil Requiem: 4K, 60 FPS e ray ...
Le batterie LFP sono piccole e pesanti? ...
Motorola inarrestabile: nuova serie moto...
Decima generazione Pokémon: grafi...
Una nuova legge consente di rottamare un...
Google mostra per sbaglio Android per PC...
Tesla non convince più: crolla il...
OpenAI lancia Prism: l'AI ora lavora fia...
Nissan mette i pannelli solari su Ariya:...
Day 3 a Barcellona: la prima di Norris c...
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: 23:58.


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