begin process at 2012 02 14 03:41:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > MUSIQUE - GÉNÉRATEUR DE MÉLODIES CHROMATIQUES ALÉATOIRES

MUSIQUE - GÉNÉRATEUR DE MÉLODIES CHROMATIQUES ALÉATOIRES


 Information sur la source

Note :
Aucune note
Catégorie :Tutoriaux Niveau :Débutant Date de création :28/07/2003 Date de mise à jour :28/07/2003 10:39:34 Vu / téléchargé :11 366 / 526

Auteur : carolito

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
GENERATOR est un petit programme qui crée des mélodies chromatiques aléatoires - une sorte de compositeur électronique !?!

  

Source

  • Option Explicit
  • Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
  • Private Sub Form_Load()
  • End Sub
  • 'ce qui se passe lorsque vous cliquez sur le bouton ------------------------------
  • Private Sub jouer_Click()
  • 'initialisation du champ texte -------------------------------------------------------
  • Text1.Text = ""
  • 'déclaration des différentes variables ----------------------------------------------
  • Dim a As Single
  • Dim i As Single
  • Dim j As Single
  • Dim n As Single
  • Dim entier As Single
  • Dim note(0 To 36) As Single
  • Dim jeu(0 To 24) As Single
  • Dim jeu_mel(0 To 24) As String
  • Dim tempo(0 To 2) As Single
  • Dim t As Single
  • Dim tint As Single
  • Dim rythm(0 To 24) As Single
  • Dim txt As String
  • Dim mel(0 To 36) As String
  • '125=double-croche 250=croche 500=noire ----------------------------------------
  • tempo(0) = 125
  • tempo(1) = 250
  • tempo(2) = 500
  • 'notes de la gamme chromatique en partant du la 220 hz -----------------------
  • note(0) = 220
  • note(1) = 233
  • note(2) = 247
  • note(3) = 262
  • note(4) = 277
  • note(5) = 294
  • note(6) = 311
  • note(7) = 330
  • note(8) = 349
  • note(9) = 370
  • note(10) = 392
  • note(11) = 415
  • note(12) = 440
  • note(13) = 466
  • note(14) = 494
  • note(15) = 523
  • note(16) = 554
  • note(17) = 587
  • note(18) = 622
  • note(19) = 659
  • note(20) = 698
  • note(21) = 740
  • note(22) = 784
  • note(23) = 830
  • note(24) = 880
  • note(25) = 932
  • note(26) = 988
  • note(27) = 1047
  • note(28) = 1109
  • note(29) = 1175
  • note(30) = 1245
  • note(31) = 1319
  • note(32) = 1397
  • note(33) = 1480
  • note(34) = 1568
  • note(35) = 1661
  • note(36) = 1760
  • 'notes de musiques -----------------------------------------------------------------
  • mel(0) = "la1"
  • mel(1) = "la#1"
  • mel(2) = "si1"
  • mel(3) = "do1"
  • mel(4) = "do#1"
  • mel(5) = "ré1"
  • mel(6) = "ré#1"
  • mel(7) = "mi1"
  • mel(8) = "fa1"
  • mel(9) = "fa#1"
  • mel(10) = "sol1"
  • mel(11) = "sol#1"
  • mel(12) = "la2"
  • mel(13) = "la#2"
  • mel(14) = "si2"
  • mel(15) = "do2"
  • mel(16) = "do#2"
  • mel(17) = "ré2"
  • mel(18) = "ré#2"
  • mel(19) = "mi2"
  • mel(20) = "fa2"
  • mel(21) = "fa#2"
  • mel(22) = "sol2"
  • mel(23) = "sol#2"
  • mel(24) = "la3"
  • mel(25) = "la#3"
  • mel(26) = "si3"
  • mel(27) = "do3"
  • mel(28) = "do#3"
  • mel(29) = "ré3"
  • mel(30) = "ré#3"
  • mel(31) = "mi3"
  • mel(32) = "fa3"
  • mel(33) = "fa#3"
  • mel(34) = "sol3"
  • mel(35) = "sol#3"
  • mel(36) = "la4"
  • 'fabrication du rythme ---------------------------------------------------------------
  • For i = 0 To 24
  • t = Int(Rnd * 10) / 3
  • tint = Int(((t / 3) - Int(t / 3)) * 3.00001)
  • rythm(i) = tempo(tint)
  • Next i
  • 'fabrication de la mélodie -----------------------------------------------------------
  • For i = 0 To 24
  • n = Int(Rnd * 100)
  • entier = Int(((n / 36) - Int(n / 36)) * 36.00001)
  • jeu(i) = note(entier)
  • jeu_mel(i) = mel(entier)
  • Next i
  • 'affichage de la mélodie ------------------------------------------------------------
  • For i = 0 To 24
  • txt = jeu_mel(i)
  • Text1.Text = Text1.Text + " " + txt
  • Next i
  • 'exécution de la mélodie ------------------------------------------------------------
  • For i = 0 To 24
  • Beep jeu(i), rythm(i)
  • Next i
  • End Sub
Option Explicit
Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Private Sub Form_Load()
End Sub

'ce qui se passe lorsque vous cliquez sur le bouton ------------------------------
Private Sub jouer_Click()

'initialisation du champ texte -------------------------------------------------------
Text1.Text = ""

'déclaration des différentes variables ----------------------------------------------
Dim a As Single
Dim i As Single
Dim j As Single
Dim n As Single
Dim entier As Single
Dim note(0 To 36) As Single
Dim jeu(0 To 24) As Single
Dim jeu_mel(0 To 24) As String
Dim tempo(0 To 2) As Single
Dim t As Single
Dim tint As Single
Dim rythm(0 To 24) As Single
Dim txt As String
Dim mel(0 To 36) As String

'125=double-croche 250=croche 500=noire ----------------------------------------
tempo(0) = 125
tempo(1) = 250
tempo(2) = 500

'notes de la gamme chromatique en partant du la 220 hz -----------------------
note(0) = 220
note(1) = 233
note(2) = 247
note(3) = 262
note(4) = 277
note(5) = 294
note(6) = 311
note(7) = 330
note(8) = 349
note(9) = 370
note(10) = 392
note(11) = 415
note(12) = 440
note(13) = 466
note(14) = 494
note(15) = 523
note(16) = 554
note(17) = 587
note(18) = 622
note(19) = 659
note(20) = 698
note(21) = 740
note(22) = 784
note(23) = 830
note(24) = 880
note(25) = 932
note(26) = 988
note(27) = 1047
note(28) = 1109
note(29) = 1175
note(30) = 1245
note(31) = 1319
note(32) = 1397
note(33) = 1480
note(34) = 1568
note(35) = 1661
note(36) = 1760

'notes de musiques -----------------------------------------------------------------
mel(0) = "la1"
mel(1) = "la#1"
mel(2) = "si1"
mel(3) = "do1"
mel(4) = "do#1"
mel(5) = "ré1"
mel(6) = "ré#1"
mel(7) = "mi1"
mel(8) = "fa1"
mel(9) = "fa#1"
mel(10) = "sol1"
mel(11) = "sol#1"
mel(12) = "la2"
mel(13) = "la#2"
mel(14) = "si2"
mel(15) = "do2"
mel(16) = "do#2"
mel(17) = "ré2"
mel(18) = "ré#2"
mel(19) = "mi2"
mel(20) = "fa2"
mel(21) = "fa#2"
mel(22) = "sol2"
mel(23) = "sol#2"
mel(24) = "la3"
mel(25) = "la#3"
mel(26) = "si3"
mel(27) = "do3"
mel(28) = "do#3"
mel(29) = "ré3"
mel(30) = "ré#3"
mel(31) = "mi3"
mel(32) = "fa3"
mel(33) = "fa#3"
mel(34) = "sol3"
mel(35) = "sol#3"
mel(36) = "la4"

'fabrication du rythme ---------------------------------------------------------------
For i = 0 To 24
t = Int(Rnd * 10) / 3
tint = Int(((t / 3) - Int(t / 3)) * 3.00001)
rythm(i) = tempo(tint)
Next i

'fabrication de la mélodie -----------------------------------------------------------
For i = 0 To 24
n = Int(Rnd * 100)
entier = Int(((n / 36) - Int(n / 36)) * 36.00001)
jeu(i) = note(entier)
jeu_mel(i) = mel(entier)
Next i

'affichage de la mélodie ------------------------------------------------------------
For i = 0 To 24
txt = jeu_mel(i)
Text1.Text = Text1.Text + " " + txt
Next i

'exécution de la mélodie ------------------------------------------------------------
For i = 0 To 24
Beep jeu(i), rythm(i)
Next i

End Sub   

 Conclusion

- MERCI BEAUCOUP de m'aider à améliorer GENERATOR !!!

1) Je me suis rendu compte que la fonction Rnd du VB n'est pas parfaitement aléatoire ... que faire pour qu'elle le soit vraiment ?

2) c'est "chiant" les notes s'affichent qu'une fois la mélodie exécutée !?! Comment faire dans le CODE pour que le champ text1.text s'affiche avant que la mélodie ne s'exécute ?

3) Pour jouer un son, à la place de la fonction Beep X,Y ( monophonique ) qui dépend de la kernel32.dll - j'aimerais commander un séquenceur MIDI ( par exemple le MPU-401 ) pour faire de la polyphonie - comment faire ? quelle est la syntaxe en Visual Basic ? quelle fonction utiliser ?

4) J'aimerais savoir s'il existe un site sur lequel je peux trouver TOUT le vocabulaire, TOUTES les instructions du Visual Basic avec leur SYNTAXE leur SIGNIFICATION et éventuellement un exemple d'application ?

5) J'aimerais savoir comment fabriquer une DLL

Je sais ça fait beaucoup de questions ... pardonnez-moi, j'adore apprendre ... j'espère que ce n'est pas un gros défaut !?!
  

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   generator par CAROLITO
    • generator.exeTélécharger ce fichier [Réservé aux membres club]24 576 octets
    • generator.frmTélécharger ce fichier [Réservé aux membres club]Voir ce fichier5 539 octets
    • generator.frxTélécharger ce fichier [Réservé aux membres club]190 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture CRÉER UN FICHIER BINAIRE DE TYPE MIDI OU AUTRES (*.*)

 Sources de la même categorie

Source avec Zip DLL PERSONNALISÉ AVEC ÉVÈNEMENTS ET PROPRIÉTÉS EN VB6. par Number7
Source avec Zip Source .NET (Dotnet) EXEMPLE DU TUTORAIL "CLASSES MÉTIER" par Adn56
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DES LISTES : RANGEMENT (LIST.SORT) ET FILTRAGE (LIST... par kbalist
Source avec Zip EXEMPLE SUR LES MENUS POUR AIDER LES DÉBUTANTS COMME MOI ;-) par viragoloco
LES OPÉRATIONS DE LA LISTE CHAINÉE par smaili

Commentaires et avis

Commentaire de Tiscripteur le 28/07/2003 11:44:33

Ce n'est pas, pour moi, un défaut.. (J'adore aussi apprendre...)

1) L'aléatoir parfait n'existe pas mais pour un meilleur résultat, écris Randomize avant tes Rnd

2) Je n'ai pas encore exécuté le code mais il me semble que il faut mettre une instruction DoEvents ou un truc comme ca dans les boucles pour permettre au programme d'exécuter ce qui s'est passé dans la boucle (notament au niveau de l'affichage dans ton cas)

Voila..
@++

Commentaire de etilegr le 28/07/2003 12:14:45

Randomize Timer plus exactement pour l'aléatoire

Commentaire de etilegr le 28/07/2003 12:56:38

on peut réduire le code en remplacant le :
note(0)=220
note(1)=...
...
note(36)=1760

par

racine = 1.059395
For x = 0 To 36
    note(x) = racine ^ (x + 81)
Next
ca enlève en trentaine de lignes de code

Commentaire de clementpat le 29/07/2003 15:13:36

un site tres bien  sur   vb         http://s.alpha.free.fr/vb/bienvenue.html

Commentaire de boursicotteur le 01/08/2003 06:01:48

Si tu veux savoir comment faire du Midi alors vas voir la source que j'ai mise sur ce site... Je crois que tu vas être servi...

Pour les instructions VB le meilleur endroit est MSDN car il y a tout. A cette adresse il y a les API mais à partir de là tu peux trouver tout le reste:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/functions_in_alphabetical_order.asp

Enfin, pour fabriquer une DLL, je crois bien qu'il faille le faire en C++

Commentaire de bloom1 le 11/09/2004 02:56:24

Cool, Je l'ai esayé pis mon haut parleur de ma carte mere se met a chanter! J'ai meme fait peur a mon chat avec tes tounes! lol
10/10 pour le premier que je met!

Bye et bonne prog.!

Commentaire de crogiez le 27/10/2004 21:33:36

1) faut utilisez RND
mais avec randomise parametrée avec timer

3) midi_outshotrmsg

merci
A+

Commentaire de crogiez le 29/10/2004 15:54:21

jazz++ a l'air tres bien et fait tout çà

http://www.mille.ca/mille/colibris/fDescrip/fDesc_jazz+.htm

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,248 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales