Accueil > > > CREATION DUN FICHIER.WAV EN VB.NET
CREATION DUN FICHIER.WAV EN VB.NET
Information sur la source
Description
Bonjour, je vous presente un fichier mht que j'ai trouvé sur vbfrance.Ce fic n'ete pas tres claire pour moi, allors j'ai essayé d'ecrire une deuxieme partis pour cette article , mais moi je l'ai ecris en text ("courrier new" pour avoir les tableau en ligne ). Il s'agis de creer plussieurs *.wav, silence en 8 et 16 bit et un sinus en mono et stereo 8 et 16 bits. En plus il y a un wav d'origine (un ringtone). Malleheureusement ce wav et le fichier mht sont assez lourds, peutetre vous n'avais pas bezoin de les telecharger hmhmhm. Ammusez vous avec ce petit text. A+ Guy van der velden
Source
- 'pour votre plaizier un des sub
-
- Private Sub btnSinusStereo8_Click(ByVal sender As System.Object, _
- ByVal e As System.EventArgs) Handles btnSinusStereo8.Click
- '
- Dim FreqL As Integer = 500 ' frequentie left =gauche
- Dim FreqR As Integer = 800 ' frequentie right = droite
- Dim SRate As Integer = 8000 ' sample frequence
- Dim Tsec As Integer = 1 ' laps de temps
- Dim BitR As Short = 8 ' resolution en bits
- Dim MS As Short = 2 ' (1=mono, 2=stereo)
-
- '-----prepare headerfields --------
- F1 = "RIFF"
- F2 = F2 ' not set yet
- F3 = F3 ' already set
- F4 = F4 ' already set
- F5 = 16 ' fmtBlockLength
- F6 = 1 ' 1=PCM classic, not compressed
- F7 = MS ' 1=mono, 2=stereo
- F8 = SRate ' samplingRate(Frequency)
- F9 = MS * SRate * (BitR / 8) ' total number of bytes per sec
- F10 = MS * (BitR / 8) ' BlockAlign
- F11 = BitR ' bits per sample ( resolution )
- F12 = "data"
- F13 = MS * (BitR / 8) * SRate * Tsec ' dataBlock-length in bytes incl chr(0)
- F2 = F13 + 44 - 8 ' RiffBlock-length
-
- 'Save de header
- FN = Application.StartupPath & "\SinusStereo8.wav"
- If Dir(FN, FileAttribute.Normal) <> "" Then Kill(FN)
- K1 = FreeFile()
- FileOpen(K1, FN, OpenMode.Binary)
- 'header schrijven
- FilePut(K1, F1) ' 4 bytes
- FilePut(K1, F2) ' 4 b
- FilePut(K1, F3) ' 4 b
- FilePut(K1, F4) ' 4 b
- FilePut(K1, F5) ' 4 b
- FilePut(K1, F6) ' 2 b
- FilePut(K1, F7) ' 2 b
- FilePut(K1, F8) ' 4 b
- FilePut(K1, F9) ' 4 b
- FilePut(K1, F10) ' 2 b
- FilePut(K1, F11) ' 2 b
- FilePut(K1, F12) ' 4 b
- FilePut(K1, F13) ' 4 b
-
- 'save data chunck
- ' 8 bits(= byte 0..255) le sinus = -127 .. +127, transformer en byte 0..255
- ' stereo
- 'taille du dataChunck F13, mais chaque echatillon compte un byte pour chaque canal
- 'Je prefer compter en echantillon au lieu de octet.
- i2 = F8 * Tsec
- Dim Bt As Byte
- Const pi = 3.14
- Dim dL As Double = 2 * pi * FreqL / SRate
- Dim dR As Double = 2 * pi * FreqR / SRate
- Dim D1 As Double
- For i1 = 0 To i2 - 1
- D1 = 127 * Math.Sin(i1 * dL)
- Bt = CByte(D1 + 127)
- FilePut(K1, Bt)
- D1 = 127 * Math.Sin(i1 * dR)
- Bt = CByte(D1 + 127)
- FilePut(K1, Bt)
- Next
- FileClose(K1)
- MsgBox(FN & " is gesaved")
- End Sub
-
-
-
- Private Sub btnSilMono16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSilMono16.Click
- '
- Dim SRate As Integer = 8000 ' sample frequency
- Dim Tsec As Integer = 1 ' longueur du silence en secondes
- Dim BitR As Short = 16 ' resolution en bits
- Dim MS As Short = 1 ' (1=mono, 2=stereo)
- Dim Bt As Byte
-
- '-----prepare headerfields --------
- F1 = "RIFF"
- F2 = F2 ' not set yet
- F3 = F3 ' already set
- F4 = F4 ' already set
- F5 = 16 ' fmtBlockLength
- F6 = 1 ' 1=PCM classic, not compressed
- F7 = MS ' 1=mono, 2=stereo
- F8 = SRate ' samplingRate(Frequency)
- F9 = MS * SRate * (BitR / 8) ' total number of bytes per sec
- F10 = MS * (BitR / 8) ' BlockAlign
- F11 = BitR ' bits per sample ( resolution )
- F12 = "data"
- F13 = MS * (BitR / 8) * SRate * Tsec ' dataBlock-length in bytes incl chr(0)
- F2 = F13 + 44 - 8 ' RiffBlock-length
-
- 'Save de header
- FN = Application.StartupPath & "\SilStereo16.wav"
- If Dir(FN, FileAttribute.Normal) <> "" Then Kill(FN)
- K1 = FreeFile()
- FileOpen(K1, FN, OpenMode.Binary)
- 'header schrijven
- FilePut(K1, F1) ' 4 bytes
- FilePut(K1, F2) ' 4 b
- FilePut(K1, F3) ' 4 b
- FilePut(K1, F4) ' 4 b
- FilePut(K1, F5) ' 4 b
- FilePut(K1, F6) ' 2 b
- FilePut(K1, F7) ' 2 b
- FilePut(K1, F8) ' 4 b
- FilePut(K1, F9) ' 4 b
- FilePut(K1, F10) ' 2 b
- FilePut(K1, F11) ' 2 b
- FilePut(K1, F12) ' 4 b
- FilePut(K1, F13) ' 4 b
-
- 'save nu de data chunck
- ' mono
- ' 16 bit (= short -32768 <> +32767)
- ' nombres de short (16 bit) a ecrire = Srate * Tsec
- i2 = Tsec * SRate
- 'voire ici "entete.txt"
- Dim sh As Short ' 2 bytes
- sh = 0
- For i1 = 0 To i2 - 1
- FilePut(K1, sh)
- Next
- FileClose(K1)
- MsgBox(FN & " is gesaved")
- End Sub
'pour votre plaizier un des sub
Private Sub btnSinusStereo8_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSinusStereo8.Click
'
Dim FreqL As Integer = 500 ' frequentie left =gauche
Dim FreqR As Integer = 800 ' frequentie right = droite
Dim SRate As Integer = 8000 ' sample frequence
Dim Tsec As Integer = 1 ' laps de temps
Dim BitR As Short = 8 ' resolution en bits
Dim MS As Short = 2 ' (1=mono, 2=stereo)
'-----prepare headerfields --------
F1 = "RIFF"
F2 = F2 ' not set yet
F3 = F3 ' already set
F4 = F4 ' already set
F5 = 16 ' fmtBlockLength
F6 = 1 ' 1=PCM classic, not compressed
F7 = MS ' 1=mono, 2=stereo
F8 = SRate ' samplingRate(Frequency)
F9 = MS * SRate * (BitR / 8) ' total number of bytes per sec
F10 = MS * (BitR / 8) ' BlockAlign
F11 = BitR ' bits per sample ( resolution )
F12 = "data"
F13 = MS * (BitR / 8) * SRate * Tsec ' dataBlock-length in bytes incl chr(0)
F2 = F13 + 44 - 8 ' RiffBlock-length
'Save de header
FN = Application.StartupPath & "\SinusStereo8.wav"
If Dir(FN, FileAttribute.Normal) <> "" Then Kill(FN)
K1 = FreeFile()
FileOpen(K1, FN, OpenMode.Binary)
'header schrijven
FilePut(K1, F1) ' 4 bytes
FilePut(K1, F2) ' 4 b
FilePut(K1, F3) ' 4 b
FilePut(K1, F4) ' 4 b
FilePut(K1, F5) ' 4 b
FilePut(K1, F6) ' 2 b
FilePut(K1, F7) ' 2 b
FilePut(K1, F8) ' 4 b
FilePut(K1, F9) ' 4 b
FilePut(K1, F10) ' 2 b
FilePut(K1, F11) ' 2 b
FilePut(K1, F12) ' 4 b
FilePut(K1, F13) ' 4 b
'save data chunck
' 8 bits(= byte 0..255) le sinus = -127 .. +127, transformer en byte 0..255
' stereo
'taille du dataChunck F13, mais chaque echatillon compte un byte pour chaque canal
'Je prefer compter en echantillon au lieu de octet.
i2 = F8 * Tsec
Dim Bt As Byte
Const pi = 3.14
Dim dL As Double = 2 * pi * FreqL / SRate
Dim dR As Double = 2 * pi * FreqR / SRate
Dim D1 As Double
For i1 = 0 To i2 - 1
D1 = 127 * Math.Sin(i1 * dL)
Bt = CByte(D1 + 127)
FilePut(K1, Bt)
D1 = 127 * Math.Sin(i1 * dR)
Bt = CByte(D1 + 127)
FilePut(K1, Bt)
Next
FileClose(K1)
MsgBox(FN & " is gesaved")
End Sub
Private Sub btnSilMono16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSilMono16.Click
'
Dim SRate As Integer = 8000 ' sample frequency
Dim Tsec As Integer = 1 ' longueur du silence en secondes
Dim BitR As Short = 16 ' resolution en bits
Dim MS As Short = 1 ' (1=mono, 2=stereo)
Dim Bt As Byte
'-----prepare headerfields --------
F1 = "RIFF"
F2 = F2 ' not set yet
F3 = F3 ' already set
F4 = F4 ' already set
F5 = 16 ' fmtBlockLength
F6 = 1 ' 1=PCM classic, not compressed
F7 = MS ' 1=mono, 2=stereo
F8 = SRate ' samplingRate(Frequency)
F9 = MS * SRate * (BitR / 8) ' total number of bytes per sec
F10 = MS * (BitR / 8) ' BlockAlign
F11 = BitR ' bits per sample ( resolution )
F12 = "data"
F13 = MS * (BitR / 8) * SRate * Tsec ' dataBlock-length in bytes incl chr(0)
F2 = F13 + 44 - 8 ' RiffBlock-length
'Save de header
FN = Application.StartupPath & "\SilStereo16.wav"
If Dir(FN, FileAttribute.Normal) <> "" Then Kill(FN)
K1 = FreeFile()
FileOpen(K1, FN, OpenMode.Binary)
'header schrijven
FilePut(K1, F1) ' 4 bytes
FilePut(K1, F2) ' 4 b
FilePut(K1, F3) ' 4 b
FilePut(K1, F4) ' 4 b
FilePut(K1, F5) ' 4 b
FilePut(K1, F6) ' 2 b
FilePut(K1, F7) ' 2 b
FilePut(K1, F8) ' 4 b
FilePut(K1, F9) ' 4 b
FilePut(K1, F10) ' 2 b
FilePut(K1, F11) ' 2 b
FilePut(K1, F12) ' 4 b
FilePut(K1, F13) ' 4 b
'save nu de data chunck
' mono
' 16 bit (= short -32768 <> +32767)
' nombres de short (16 bit) a ecrire = Srate * Tsec
i2 = Tsec * SRate
'voire ici "entete.txt"
Dim sh As Short ' 2 bytes
sh = 0
For i1 = 0 To i2 - 1
FilePut(K1, sh)
Next
FileClose(K1)
MsgBox(FN & " is gesaved")
End Sub
Conclusion
Vous avez vu que la taille des fichiers wave sont assez lourds, mais j'espere que ce petit tutorial aidera au moins une personne, commeca j'aurai gagner mon paradis. A+
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Pb de compilation [ par Xaviou ]
Salut à tousJ'ai un petit problème à la compilation d'un petit jeu de cartes genre FreeCell.Lorsque je lance la création de l'EXE, VB compile, puis, a
créer un tableau [ par maryem ]
salut! je suis débutante en Vb et1- je voudrais savoir comment créer un tableau pour y stocker des valeurs constantes2- je voudrais savoir comment fa
créer un service !! help [ par nilrem ]
salut,j'ai essayé de créer un service en VB mais ca ne marche pasil me dit a la compilation :"point d'entrée registerserviceprocess d'une dll introuva
menu contextuel [ par tchacm25 ]
je suis en train de créer un petit prog sous visual basic 4.j'aurais besoin de créer un menu contextuel sur une liste de fichier.je sais créer ce menu
Carnet d'adresses [ par Raynald ]
Bonjour,le logiciel que je suis en train de créer demande l'adresse e-mail du client.Est-il possible, à partir de cette réponse, de créer un carnet d'
lire un wav urgent [ par Nic ]
comment faire pour lire un fichier *.waven cliquant sur un command boutton
comment créer un menu ? [ par 2001 ]
merci pour ce site, qui aide les neophytes.comment faire pour un créer un menu ?jj
Comment créer moteur de recherche? [ par alinefr57@caramail.com ]
J'aimerais savoir comment creer un moteur de recherche sous vb 6 avec du texte qui est afficher en Richtextbox envoyer moi des exemples car je suis dé
Créer un contrôle image dynamiquement [ par Fred ]
Salut,je voudrais faire un gestionnaire d'albums photos. Sachant qu'un album peut contenir un nombre d'images indéfini, il me faut créer (et afficher)
|
Derniers Blogs
[SHAREPOINT] NOUVELLE PRéSENTATION POUR LA DOCUMENTATION SHAREPOINT SUR TECHNET.[SHAREPOINT] NOUVELLE PRéSENTATION POUR LA DOCUMENTATION SHAREPOINT SUR TECHNET. par Patrick Guimonet
Vous l'avez peut-être déjà remarqué ? La documentation SharePoint a subit un cure de "relooking" et prend un style inspiré de Metro, donc plus sobre, plus pur, plus clair ! C'est sur fond blanc et ca ressemble à ça : Globaleme...
Cliquez pour lire la suite de l'article par Patrick Guimonet ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Forum
FEUILLE EXCELFEUILLE EXCEL par samanta26
Cliquez pour lire la suite par samanta26
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|