|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 | |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Quote:
Faccio 2 commisioni e poi vedo se riesco a capirlo.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
|
#22 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Per completezza e per gli utenti interessati futuri, ho trovato alcuni codici indicativi:
SDL_mixer-1.2.6/mikmod/mwav.c di: http://gentoo.osuosl.org/distfiles/S...r-1.2.6.tar.gz libmikmod-3.1.11/playercode/mwav.c di: http://ftp.osuosl.org/pub/nslu2/sour...-3.1.11.tar.gz uqm-0.3/src/sc2code/libs/sound/decoders/mikmod/mwav.c di: http://familiar.handhelds.org/source...0.3-source.tgz pysol-sound-server-3.01/src/mikmod/mwav.c di: http://www.pysol.org/download/pysol/...r-3.01.tar.bz2 mpeg4ip-0.9/server/lib/sndfile/src/wav.c di: http://internap.dl.sourceforge.net/s...4ip-0.9.tar.gz xmovie-1.9.13/libsndfile-1.0.5/src/wav.c di: http://prdownloads.sourceforge.net/h...13-src.tar.bz2 vorbis-tools-1.0.1/oggenc/audio.c di: http://ftp.osuosl.org/pub/nslu2/sour...s-1.0.1.tar.gz gtkwave-2.0.0pre2/src/reader.c di: ftp://ftp.cs.man.ac.uk/pub/amulet/gt...0.0pre2.tar.gz arnold/src/cpc/wav.c di: http://www.portal-to-web.de/pub/pkgs...rc27012002.zip linphone-0.12.2/ffmpeg/libav/wav.c di: http://familiar.handhelds.org/source...-0.12.2.tar.gz wavplay-1.4/wavfile.c di: http://www.sunsite.unc.edu/pub/Linux...lay-1.4.tar.gz libcdio-0.74/src/cd-paranoia/header.c di: http://ftp.gnu.org/gnu/libcdio/libcdio-0.74.tar.gz release/IoFull-2006-01-27/libs/libsndfile/libsndfile/src/wav.c di: ftp://ftp.freebsd.org/pub/FreeBSD/po...6-01-27.tar.gz Max-0.7.1-source/Frameworks/sndfile/libsndfile/src/wav.c di: http://prdownloads.sourceforge.net/m...source.tar.bz2 libao-0.8.4/src/ao_wav.c di: http://downloads.xiph.org/releases/a...o-0.8.4.tar.gz a52dec-0.7.4/libao/audio_out_wav.c di: http://freshmeat.net/redir/liba52/17...c-0.7.4.tar.gz audacity-src-1.3.2-beta/lib-src/libsndfile/src/wav.c di: http://gentoo.osuosl.org/distfiles/a...c-1.3.2.tar.gz libsndfile-1.0.12/src/wav.c di: http://www.mega-nerd.com/libsndfile/...-1.0.12.tar.gz smirc-0.70/libsndfile-0.0.12/src/wav.c di: http://fresh.t-systems-sfr.com/linux...rc-0.70.tar.gz spPlugin-0.8.3/spPlugin/input_sndfile/libsndfile/src/wav.c di: http://www.sp.m.is.nagoya-u.ac.jp/pe...in-0.8.3-3.zip
__________________
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 : 28-05-2007 alle 12:47. |
|
|
|
|
|
#23 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
by okay
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; 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); } mmckinfoSubchunk.ckid = mmioFOURCC('f', 'm', 't', ' '); if (mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent, MMIO_FINDCHUNK)) { return(-2); } if (mmioRead(hmmio, (HPSTR)&WaveFormat, mmckinfoSubchunk.cksize) != (LRESULT)mmckinfoSubchunk.cksize) { return(-2); } mmioAscend(hmmio, &mmckinfoSubchunk, 0); mmckinfoSubchunk.ckid = mmioFOURCC('d', 'a', 't', 'a'); if (mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent, MMIO_FINDCHUNK)) { return(-2); } WaveDataSize = mmckinfoSubchunk.cksize; printf("Wave size = %u\n", WaveDataSize); mmioClose(hmmio, 0); system("pause"); return(0); } return(-1); } ... di niente figurati |
|
|
|
|
|
#24 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Mi ricordi vagamente quei sistemi bot di AI che rispondono alle chat tipo mirc.
Sintetico e pragmatico, quasi monosillabo (codice a parte). CMQ quello che hai postato è tutto merito della tua conoscienza, ma mi sapresti anche indicare 1 documento dove posso accolturarmi anche io?! Io del C ho il manuale Kernighan ed ho fatto solo programmi come parser, sistemi di prenotazione con semafori, mutex, qualche lista pila (ma ricordo poco), quindi certa cose che usi sicuramente non mi saranno chiare. Al max se non ti è troppo disturbo ti chiederò chiarimenti ancora, ammesso che per te non sia una fatica ed un fastitio rispondermi. CMQ tu, Andbin, cionci e ChristinaAmeliana siete sicuramente quelli che mi aiutate D+ sul forum. Una volta erano D+ ad aiutare, CMQ pochi ma buoni. Grazie.
__________________
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 : 26-05-2007 alle 18:25. |
|
|
|
|
|
#25 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
www.mega-nerd.com/libsndfile/ |
|
|
|
|
|
|
#26 | |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Quote:
![]() Quindi del codice postato da OKAY non capisco tutto, io uso MinGW o al max CygWin x compilare in Windows, ma vorrei più compatibilità possibile con gli altri SO. Non capisco ad esempio: -- la funzione principale "_tmain", ma che è roba "moddata" di Micro$oft? -- il tipo tchar (che mi pare praticamente in tipo char ANSI) -- queste librerie stdafx.h, windows.h, mmsystem.h e tchar.h. -- Capisco ad esempio: -- il nome del tipo HMMIO indicherà approssimativamente qualcosa del tipo "header mm(multimediale?!) input-output" -- MMCHKINFO sarà 1 sorta di struttura in cui potro controllaredelle informazioni del file multimendiale -- tutto quello che fa riferimento a "mm" suppongo siano derivate dalla libreria "mmsystem.h" -- Diciamo che non tutti siamo MdT e che un minimo di spiegazione del codice può dare una mano enorme. D'altronde siamo nella sezione programmazione, non nella sezione "copia&incolla".
__________________
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 : 28-05-2007 alle 12:10. |
|
|
|
|
|
|
#27 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Per aprire e leggere un file bastano poche righe: Codice:
SF_INFO sfInfo;
sfInfo.format = 0;
SNDFILE * sndFile = sf_open ("file.wav", SFM_READ, &sfInfo) ;
if (sndFile != NULL)
{
int readed = 0;
int readSize = 4096;
short * buffer = new short[readSize * sfInfo.channels];
while(readed < sfInfo.frames)
{
readed += sf_readf_short(sndFile,buffer,readSize);
...
}
delete [] buffer;
}
|
|
|
|
|
|
|
#28 | |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
quello postato è un normale progetto console win32 fatto con vs net 2005. per le var puoi documentarti su msdn della m$. Le API sotto windows non le inventa nessuno... sono state già inventate e implementate dagli ingegneri della m$. Se vuoi sapere cosa fanno le API in windows ti devi documentare tu stesso a meno che non trovi un anima pia che lo faccia per te. io non ci penso proprio a farlo. Ho 1000 altre cose da fare e non ne ho proprio voglia di farlo per te. Edit: per farlo funzionare devi includere nelle opzioni di progetto del tool 2005 o 2003 in particolar modo in: "Linker"-->"input" devi includere la winmm.lib per il sound. Edit2: L'ho fatto per me stesso la prossima volta ti vai a vedere la documentazione dell'msdn, cosa che già avevo fatto nel post precedente. Se hai voglia di tutorial sull'argomento impara ad usare google non certo un forum. se scrivi su google: "hmmio" il secondo link ti porterebbe quì: http://www.borg.com/~jglatt/tech/mmio.htm le API/IO di windows. Leggitelo e studiatelo! stammi bene... ciao Ultima modifica di okay : 28-05-2007 alle 15:45. |
|
|
|
|
|
|
#29 | |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Quotando il General RIFF File Background.
Quote:
![]() Quindi anche questo mi vincola a Windows?! I file WAV che io vado ad aprire sono file creati con DSpeech, ma avrei potuto scegliere anche altri tool di TTS se AVISynth girasse anche su Linux. Voi che dite, questo vincolo mi ostacolerà?! Non c'è come JPEG/MPEG 1 standard di riferimento?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
|
#30 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Gli wave non sono altro che un formato di dati pubblico, chiunque implementi un parser per quella struttura può leggerli (e scriverli), non a caso sono letti da tutti e ci sono decine di librerie multipiattaforma che leggono gli wav. |
|
|
|
|
|
|
#31 | |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Quote:
Io ho visto solo dei grandi link al sito Micro$oft, allora pensavo fosse 1 suo formato. Poi se in quel documento parla di "INCAPSULAMENTO IN RIFF DEL WAVE" tu cosa capiresti?! ![]() CMQ non sto ancora agendo, sto solo raccogliendo le informazioni x sapere come meglio muovermi, vorrei eliminare qualunque ambiguità prima di muovermi e magari capire di essermi infilato in un vicolo T. http://it.wikipedia.org/wiki/WAV http://en.wikipedia.org/wiki/WAV WAV (o WAVE), contrazione di WAVEform audio format (formato audio per la forma d'onda) è un formato audio sviluppato da Microsoft e IBM
__________________
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 : 29-05-2007 alle 11:52. |
|
|
|
|
|
|
#32 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Dove trovo il file "stdafx.h" per compilare il III pezzo di codice scritto da Okay?!
Lo sto compilando con MinGW e per ora quando faccio: gcc okay3.c -o okay3.exe si lamente di non trovare "stdafx.h". Per ora solo quel problema, speriamo bene. 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; 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); } mmckinfoSubchunk.ckid = mmioFOURCC('f', 'm', 't', ' '); if (mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent, MMIO_FINDCHUNK)) { return(-2); } if (mmioRead(hmmio, (HPSTR)&WaveFormat, mmckinfoSubchunk.cksize) != (LRESULT)mmckinfoSubchunk.cksize) { return(-2); } mmioAscend(hmmio, &mmckinfoSubchunk, 0); mmckinfoSubchunk.ckid = mmioFOURCC('d', 'a', 't', 'a'); if (mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent, MMIO_FINDCHUNK)) { return(-2); } WaveDataSize = mmckinfoSubchunk.cksize; printf("Wave size = %u\n", WaveDataSize); mmioClose(hmmio, 0); system("pause"); return(0); } return(-1); }
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
#33 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
L'ho cercato qui:
http://www.google.com/codesearch?q=s...Ricerca+Codici , ma con quello che ho preso alla compilazione da problemi: ![]() [EDIT] Presuppongo di avere SICURAMENTE sbagliato file!!!
__________________
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 15:58. |
|
|
|
|
|
#34 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
PREMESSA
OK, stavolta ho studiato ed incrociato le informazioni che mi avete passato. ANDIAMO AL PUNTO Abbiamo assodato quello che segue, mi pare. [1] Quello che mi serve del file.wav, per determinarne la durata in tempo, è contenuto nel chunk di format "fmt": - Bit di campionamento, con byte range da 22 a 23. - Frequenza di campionamento, con byte range da 12 a 15. - Numero di canali, con byte range da 10 a 11. , e nel chunk di dati "data": - Lunghezza dei dati effettivi, con byte range da 4 a 7, in bytes. [2] Calcolo il tempo agoritmicamente con questa formula: Secondi di file.wav = (Lunghezza dei dati effettivi * 8) / (Bit di campionamento * Frequenza dicampionamento * Numero di canali); [3] Procedo a estrapolare le informazioni di cui ho bisogno dai loro campi utilizzando due strade: [a] Utilizzando le librerie Windows' MultiMedia (File) I/O (MMIO) REFER1 o REFER2 [b] Utilizzando le librerie Llibsndfile [4] Finalmente ci sono?! ![]() DOMANDONE: ... posso usare lo stesso con MinGW o CygWin le HMMIO?! Se si dove le prendo?!
__________________
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 19:52. |
|
|
|
|
|
#35 | |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
Secondi di file.wav = Lunghezzafile/Frequenza dicampionamento;//khz es: 44100 //controllo bit if(BitsPerSample==16)//è 8 o 16 bit Secondi di file.wav=Secondi di file.wav/2; //numero canali 1 o 2 ovvero mono o stereo Secondi di file.wav=Secondi di file.wav/Canali; printf Secondi di file.wav |
|
|
|
|
|
|
#36 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Purtroppo non sono un programmatore smaliziato, ma sto cercando d'imparare e purtroppo mi vien da rompervi le scatole, portate pazienza.
Altrimenti non saprei proprio in che altro modo imparare. Non riesco a trovarli i file delle librerie HMMIO Se li avete me li mandi a: [email protected] ?! Posso usarli anche con MinGW e CygWin o sono 1 esclusiva della suite Visual di MS?! Grazie infinite, mi dispiace rompervi.
__________________
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 : 31-05-2007 alle 11:54. |
|
|
|
|
|
#37 | |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
per CygWin non sò cosa è... e non mi va di saperlo! Se vuoi essere un dilettante e studiare per proprio divertimento e raggiungere l'obbiettivo in + anni usa MinGW. Se vuoi essere professionale e rendere da subito installa vsNET 2005 quello integrale. Come diceva Little Tony: Se vuoi cantare rock&blues idossa il giubbino con le frange (Hit). Oppure canta in mutande e con una chitarra sgangherata solo per te e per passione. Ovvero se vuoi essere produttivo usa vsNET 2005 integrale oppure impieghi un pò + di tempo usando MingGW o altri toolletti. Con un pò di tempo riesci a cavartela anche con MingGW... ma io, purtroppo per te, non lo uso. Edit: #include "stdafx.h" lo puoi anche togliere usando vc 6.0 ma vale anche per vsNET 2005. Ho preparato un progettino di default... mi dispiace che mi abbia incluso anche "stdafx.h" Ultima modifica di okay : 31-05-2007 alle 12:01. |
|
|
|
|
|
|
#38 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Ho esortato l'intervento del saggio cionci, sono in attesa della sua venuta.
CMQ facendo 1 ricerca ho trovato: ![]() ![]() Posso provare sto PM a viluppare l'applicazione x trovare il time di 1 wave con quelle librerie?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
|
#39 | |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Quote:
CygWin è 1 ambiente GPL Unix per Windows e quindi porta il GCC, ma anche altre "cose" di Unix. Li uso xkè cerco di essere il + ortodosso possibile coi linguaggi, questo perchè vedo lo scempio che MS hanno apportato con le loro MOD. Tutto li. DOMANDA: Sto cavolo di "stdafx.h" posso anche non metterlo allora, non è basilare vero? Il basilare sono quei 2 file sopra riportati nella ricerca giusto?! --- Oggi mi chiuderò in biblioteca 4 orette e proverò a realizzare l'applicazione con le informazioni raccolte in questo 3D, pregate per me.
__________________
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 : 31-05-2007 alle 13:59. |
|
|
|
|
|
|
#40 |
|
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Piccolo link complementare:
[c++] wav calcolare la dyrata del sound
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:18.


























