Musique - générateur de mélodies chromatiques aléatoires

Soyez le premier à donner votre avis sur cette source.

Vue 16 642 fois - Téléchargée 877 fois

Description

GENERATOR est un petit programme qui crée des mélodies chromatiques aléatoires - une sorte de compositeur électronique !?!

Source / Exemple :


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 !?!

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
lundi 26 novembre 2012
Statut
Membre
Dernière intervention
26 novembre 2012

nul a chi*** mais c'est rigolo, aucune utilité (sauf peut etre pour une imitation de R2D2 ) aucune cohérence dans l'harmonie les rhytmiques idem
l’intérêt?

c'est un generateur de note aleatoire
Messages postés
86
Date d'inscription
lundi 8 décembre 2003
Statut
Membre
Dernière intervention
27 décembre 2011

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

http://www.mille.ca/mille/colibris/fDescrip/fDesc_jazz+.htm
Messages postés
86
Date d'inscription
lundi 8 décembre 2003
Statut
Membre
Dernière intervention
27 décembre 2011

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

3) midi_outshotrmsg

merci
A+
Messages postés
328
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
8 mars 2007

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.!
Messages postés
201
Date d'inscription
mercredi 25 septembre 2002
Statut
Membre
Dernière intervention
10 novembre 2007

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++
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.