GÉNÉRATEUR DE GRILLES MUSICALES

FirSteph Messages postés 60 Date d'inscription lundi 21 octobre 2002 Statut Membre Dernière intervention 7 octobre 2007 - 20 nov. 2003 à 01:48
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016 - 20 août 2004 à 10:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18055-generateur-de-grilles-musicales

Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
20 août 2004 à 10:26
Désolé de critiquer ton travail ... mais c'est juste pour améliorer ton code :
- Libèrer le périh ...

Private Sub MenuQuitter_Click()
midi_out_close
Quitter_Click
End Sub

- Retirer les DoEvents superflus

Sub note_off(ch As Integer, ByVal kk As Integer)
Call midi_outshort(&H90 + ch, kk, 0)
-> DoEvents ????????????
End Sub

Ces instructions ne servent à rien et consomme du CPU.

Bon j'espère que je ne blesse personne.

A plus

Afyn
Navedac
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
20 août 2004 à 09:55
...
Je repasse par ici !
A tout hazard ?
Il me semble que tu ne libères pas comme il faut le périphérique MIDI ... c pas trés grave mais bon ct a signaler.

A plus

Afyn
Navedac
SergeDD Messages postés 6 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 14 décembre 2003
24 nov. 2003 à 13:59
Ok Afyn, tes remarques sont pertinentes, il ne faut pas perdre de vue que Grilles est un outil pour créer des Grilles et accessoirement les écouter, une fois la grille créée, je la travaille dans un séquenceur quelconque (j'ai trouvé un bug sur le Méta Event 51 (Tempo) que je suis en train de corriger.

Pour l'utilisation CPU, il suffit de lancer 5 ou 6 occurences du programme pour voir que les Doevents font leur office de distribution de ressource et je pense qu'il est naturel que la CPU soit employée à 97% sur une sule occurence si c'est la seule tâche qui tourne... Essaie de lancer CakeWalk et de jouer un fichier midi; l'occupation de la CPU atteint allégrement les 95%.

De plus, il est assez exceptionnel que je travaille en même temps sur plusieurs applications quand je m'amuse en jouant avec des petites compositions musicales (ma CPU est presque mono tâche dans ce domaine).

J'ai essayé plusieurs méthodes pour diminuer l'occupation CPU sans aucun changement notoire.

J'ai donné ce source pour servir d'exemple et faire partager mes idées, ma prétention n'est pas d'écrire Band in a Box ou tout autre générateur de zique, ces produits existent déjà. Bien sur, je prends en compte les désidératas des utilisateurs potentiels mais, je programme en VB par goût et non pour vendre des logiciels.

De toute manière, si une prochaine version existe (à part les corrections de bugs), elle tiendra compte de tes idées qui sont très sympa.

A+ et merci d'avoir passé du temps sur mon modeste programme.
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
23 nov. 2003 à 15:56
C'est trés bien.

A conserver :

Le principe d'une interface simple ...

A améliorer (fonction du temps que l'on a souvent) :

L'interface (attention, pour les puristes le Fb (Fa bémol) se note E et le E est déja dans la liste de la Basse)
Je te propose plutôt cette notation : (et dans cet ordre)
C - C# - D - Eb - E - F - F# - G - G# - A - Bb - B

Le calcul des Delta Times (si tu as lu la Bible du MIDI
de Christian Braut, il y a une petite erreur
sur le livre page 407 et 408. Eventuellement regarde mes
sources pour le calcul des Delta Times).

Pour les autres : ISBN-2-7361-1400-0 (Livre d'or Tome 1)

La gestion du sequencer est trés mauvaise (si tu appuies
sur les touches Alt+Ctrl+Sup, tu verras que ton prog
consomme toutes les ressources du processeur !!!)

A ajouter :

C'est également bien de pouvoir faire tourner une boucle entre
2 Locators. (pour répéter un passage ou improviser).

Tu peux utiliser mon waitable timer, qui compte des Ticks
précisément. (En plus il ne consomme que trés peu de ressources
et il est cadeau sur VBfrance.com, alors plus d'excuses !)
Pour une résolution de 96, il comptera 96 ticks pour une noire.
(Tu n'as pas besoin de plus de précisions)

Si tu veux boucler entre la deuxième et troisième mesure
If Tick 383 then Tick 192 (par exemple)

Courage !

Afyn
NAVEDAC
MIDI-SDKVB@wanadoo.fr
samirog Messages postés 73 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 8 mars 2005
22 nov. 2003 à 15:36
C'est génial, justement le code que je cherchais
SergeDD Messages postés 6 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 14 décembre 2003
21 nov. 2003 à 13:15
Merci radada, je crois qu'il y a d'autres bons sources sur ce site, chacun a sa façon de programmer, j'ai derrière moi 17 années d'analyse et de projets sur gros système ou à l'époque (on dirait mon grand père) il fallait optimiser les sources pour les compiler; évidemment ça marque.

Merci aussi Neo.balastik, c'est vrai que l'interface est rustique. Je n'ai pas fait dans le bô programme, c'est au départ un outil mais, si on me demande quelques jolies fenêtres, je suis prêt a me lancer dans un relookage massif.

A+
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
21 nov. 2003 à 10:09
Joli effort ! Ca vaut un bon 9. Mais comme tout puriste, l'interface pourrait être améliorée, mais comme tu le dis dans l'aide, celle-ci est volontairement simple. Peut-être dans une prochaine version.
cs_radada Messages postés 488 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 21 avril 2009 1
20 nov. 2003 à 09:29
Ah ouais, d'enfer : ). Et ça change des sources habituelles : ). Je t'ai mis 9/10 : p
SergeDD Messages postés 6 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 14 décembre 2003
20 nov. 2003 à 07:50
Merci pour tes remarques pertinentes FirSteph.

Je vais me pencher sur ce vieux code (en fait il a été initialement écrit en VB 3 et à l'époque HTML...) Mais je n'avais pas pensé au Save en TXT. L'impression est en Preview chez moi, peut-être un bug que je n'ai pas vu (1).

D'accord pour l'option Sauver (2 et 3) , erreur de ma part.

Je n'ai pas bien saisi "ajouter ses propres gammes de son", on est en général Midi et la liste d'instruments permet déjà un choix. (4)

Le (5) était volontaire mais, je vais modifier.

Encore merci pour t'être penché sur ce code.

à + ;=)
FirSteph Messages postés 60 Date d'inscription lundi 21 octobre 2002 Statut Membre Dernière intervention 7 octobre 2007
20 nov. 2003 à 01:49
Note: pour le code dans le 5) il faut le mettre dans la Form1.
FirSteph Messages postés 60 Date d'inscription lundi 21 octobre 2002 Statut Membre Dernière intervention 7 octobre 2007
20 nov. 2003 à 01:48
Franchement, tres bonne source, a part qques trucs qui vont pas et la presentation :p Donc je met 8 / 10
Pour les ameliorations, voila une liste par ordre d'importance decroissante:

1) Deja ca serait bien qu'au lieu d'imprimer directement la partition generée, on puisse la voir, et qu'on puisse l'exporter (les 2 formats les + importants sont .txt et .html, mais .txt devrait deja suffire).

2) Ajouter un menu "Sauver" dans le menu "Fichier", sinon c'est un peu ennuyeux de devoir quitter ou faire un nouveau fichier pour pouvoir sauver.

3) Lorsque l'on clique sur Annuler dans la boite de dialogue de sauvegarde de la partition (ou on demande le nom du fichier), ca ne sauvegarde pas le fichier mais pourtant ca continue l'action (nouveau, ouvrir).

4) Pouvoir ajouter ses propres gammes de son pour jouer les paritions.

5) Ca serait quand meme bien de laisser la croix pour fermer la fenetre. Il suffit de mettre:

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Quitter_Click
End Sub

Voila, je te souhaite une bonne continuation, bye =)
Rejoignez-nous