Forum Liberty Basic France

Jeux » Composer sans etre " Compositeur" Un petit log de musique
Le 13/10/2012 à 23h32

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
Bon, je pense qu'il au point.
La consultation de l'aide qui est un fichier "Aide mus.txt", qui se trouve dans le dossier, ne saurait trop etre conseillée.

Pour les esthètes du code: je rappelle qu'il s'agit d'un travail d'amateur si ce n'est de novice, qui demande donc l'indulgence.
Le lien est réparé ( Sciouse me, j'avais changé le nom..)

Compose_3a.zip



Edité par Roland Le 04/11/2012 à 02h30
____________________
Roro

   
Le 14/10/2012 à 12h40

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Jolie usine à gaz Roland :top
Beaucoup de travail, félicitation :top

A qui est-ce destiné exactement ?

Pas facile à comprendre l'utilisation si l'on n'est pas musicien :siffle

Côté code ,tu aurais peut-être pu te passer du fichier BMP car un clavier est quand même très facile à dessiner en quelques lignes !

Il y aurait même une autre façon de faire qui peut aussi te simplifier grandement la vie quant à savoir à tout moment quelle touche a été pressée...: les sprites.
Et oui, hormis leur but d'animation, ils peuvent aussi être utilisé d'une autre façon grâce à leur très utile fonction "spritecollides" : regarde l'aide.
Tu crées facilement 12 sprites qui représentent les touches, puis un treizième qui suis toujours la souris que tu peux nommer "curseur" par exemple, et tu sauras exactement quelle touche a été pressée à tout moment grâce au contenu de la list$ rempli par "spritecollides" de ce treizième sprite.

Toujours trop de goto [label] et autres variables redondantes...

Mais ça, tu le sais déjà ;)

Cette histoire de limites me gêne un peu quand même !!! tu ne pouvais vraiment pas faire autrement ?

En tout cas tu bosses dur !!

Si je puis me permettre : lis systématiquement l'aide de chaque commande JB que tu utilises, tu trouveras des possibilités d'utilisation qui te simplifieront sûrement la vie ;)
ex: Code VB :
   sub analyse note$, note  ' pour affich armature ( géré en fin de code )
       select case
       case note$="do" or note$="re" or note$="mi" or note$="fa"_
       or note$="so" or note$="la" or note$="si"
         call domaj
       case note$="dod"
         call remaj
       case note$="red"
         call mimaj
       case note$="fad"
         call somaj
       case note$="sod"
         call lamaj
       case note$="lad"
         call simaj
       end select
   end sub


=

Code VB :
   sub analyse note$, note  ' pour affich armature ( géré en fin de code )
       select case note$
       case "do","re","mi","fa","so","la","si" : call domaj
       case "dod" : call remaj
       case "red" : call mimaj
       case "fad" : call somaj
       case "sod" : call lamaj
       case "lad" : call simaj
       end select
   end sub


Petite remarque : à quoi sert le 2ième paramètre "note" puisque tu ne l'utilises pas dans cette SUB ?

Bon courage.

@+



Edité par cassiope01 Le 14/10/2012 à 20h09
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 14/10/2012 à 13h37

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
Un qui sait vaut mieux que cent qui cherchent.
Trés trés trés intéréssantes tes suggestions. ça donne vraiment envie de le refaire avec "spritecollides"
case "red" : call mimaj .....en effet !!!
mon problème, c'est que j'en sait assez pour pouvoir avancer en me passant de l'aide, ce qui me prive de pas mal de choses. ( tu vois juste, avec ton conseil )
Et puis, il y a que: une idée vient, et vite je veut la voir fonctionner, sans rammasser les épluchures que je laisse en amont. ( comme le parametre:note, qui devait bien servir à quelque chose...Mais quand ?? )
Ma façon de coder est tellement anarchique, que toute mon attention consiste à ne pas perdre le controle.
Et je me tape de ces frayeurs.....La programmation ...c'est des émotions assurées.
____________________
Roro

   
Le 14/10/2012 à 17h46

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
Comme tout a une cause:
la variable: note est utilisée aux lignes: 277
#w.g, "place ";note(1,note)-6;" ";y ' affiche ordre d'arrivée notes clavier N° 2
et 279, dans [clav2]
afco(note)=afco(note)+1 'pour décalage vertic affich ordre
or, le contenu de ce [clav2] était dans la sub. c'est pourquoi note était en paramètre.
et comme un gros bricoleur que je suis j' ai du mal à jeter...meme les vieux paramètres... ;)
j' ai profité de cette vérif pour corriger un peit bug dans le zip

a-tu "Notepad++" avec ses pluggins, qui permets de comparer deux codes, et qui numérote les lignes. ?..trés pratique.



Edité par Roland Le 14/10/2012 à 19h10
____________________
Roro

   
Le 14/10/2012 à 20h04

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Quand j'ai vu le poids de chaque fichier de Note (6,6M) ! j'ai tout de suite pensé qu'ils devaient être surtout plein de vide... ;)
Gagné.
Un petit coup d'Audacity et up, le tour est joué : 265 Ko par fichier soit 2,5Mo les 12 !

Maintenant qu'on a un peu plus d'espace, je me suis permis :top

A propos de permission, même si je les ai allégés, acceptes-tu que je les utilise ?

Je m'essayerai bien à faire un petit piano avec tes notes de musique, et surtout avec la technique "spritecollides" pour que tu vois ce que ça peut donner...

Je ne connais pas encore l'utilisation possible de "playwave", mais un truc me turlupine dans ton programme, c'est que si je clique un peu rapidement plusieurs fois sur une touche, le son ne suis pas !
A mon avis, le son en cours devrait s'arrêter au benéfice du nouveau son appelé, et même plutôt continuer jusqu'à sa fin mais la nouvelle note appelée devrait intervenir toujours immédiatement à son appel !!

@+



Edité par cassiope01 Le 14/10/2012 à 20h22
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 14/10/2012 à 21h38

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
Pour le poids des samples, je crois que c'est un histoire finesse de découpage.
J'ai des samples beaucoup plus léger, mais ceux là viennent du logiciel "..........pas de nom....on ne sait jamais...
et vu le prix du log, il fallait bien qu'ils mette du lourd.
Je vais essayer les tiens, voir ce qu'en pensent mes oreilles...
Pour le temps de réponse, il faudrait pouvoir limiter les calculs entre deux notes.
Ce qui est bizarre c'est que au départ, ça ne décoince pas, mais aprés quelques appuis, le temps de réponse s'améliore....je ne suis pas assez calé pour avoir une explication.
Evidemment que tu peut utiliser ce que tu veux, tout ça est "frit"..heu non..;"free"
Le "spritecollide" est trop pointu encore pour moi. et puis si je fais un sprite comme curseur, il faut pouvoir récupérer le curseur si besoin. et donc, bien maitriser les sprites.
j'ai fais au plus simple...vu de ce coté-ci du monde. à toi l'honneur...fais donc parler les sprites. ;)



Edité par Roland Le 14/10/2012 à 23h56
____________________
Roro

   
Le 14/10/2012 à 21h57

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
Et bien la différence est nette: y'en a pas.
Par contre chez moi tes samples "allégés" passent beaucoup mieux; plus de temps de latence sur le clavier de saisie.
Je les mets céant dans le zip, à la place des "enclumes" de ............( c'est allemand...donc pour le poids...normal ...)
PS: heureusement que tu m'a habitué aux changement de noms de bmp ( _ ).



Edité par Roland Le 14/10/2012 à 23h58
____________________
Roro

   
Le 15/10/2012 à 11h11

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
J'ai voulu en avoir le coeur net. j'ai mis un: startT1=time$("ms") à l'entrée de [note]

et un: endT1=time$("ms"): #w.t1 "Time = ";endT1-startT1; " ms" au wait. donc aprés les call's (.....playnote)

premier clic =95 ms, ensuite ça varie entre 15 et 16 ms et une fois sur 20 --> 31 ms et le plus étonnant c'est que c'est pareil avec les samples à 260 ko qu'avec ceux à 6,5 Mo. Et pourtant, à l'oreille le temps de réponse diminue .....va comprendre ! :heink
____________________
Roro

   
Le 15/10/2012 à 12h49

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
C'est certain que ça a à voir avec ce que tu fais faire à ton code et sa structure, mais possible aussi avec le fonctionnement et les paramètres de PLAYWAVE, que je ne connais pas encore.

Ceci dit j'ai vu dans ton code quelques WAIT qui n'avaient rien à faire là...;) mais ils n'étaient là où tu me dit avoir mis les time$("ms") je pense.

On verra avec mon code, si je le fais ;)

@+



Edité par cassiope01 Le 15/10/2012 à 12h53
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 15/10/2012 à 14h01

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland, tu n'aurais pas la possibilité d'avoir la 8ième note de la gamme par exemple ? à savoir le dernier DO !
Ce serait sympa :top

@+
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 15/10/2012 à 17h58

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
C'est bon, je l'ai intégrée au code. Je l'ai appelée "doo".....( ne'en demande pas une de plus ;)
Je referai le zip dés que ma conne'...exion voudra bien augmenter le débit.

Pas si simple de faire des sprites "clavier". et le sprite "curseur", il faut qu'il soit minuscule ( effet de bords).

........j'ai ajouté le suivi des notes (point rouge) dans le module rythme.
Je prie pour ne pas avoir introduit de sale bete dans la manip...Amen...

Compose_3a.zip



Edité par Roland Le 04/11/2012 à 02h31
____________________
Roro

   
Le 17/10/2012 à 09h24

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
J'avais utilisé le truc du curseur qui se déplace sous la souris et "spritecollides" dans Petit Mahjong mais j'avais dû penser que tant de lignes pour un si petit fichier BMP (juste 2 pixels : 1 noir en haut 1 blanc en bas) ne valait peut-être pas la peine !
Donc j'avais fabriqué le BMP à l'extérieur du code.
Là il y a les touches du piano à faire aussi, donc je pourrais fabriquer tout ça dans le code...
Mon dilemme est un peu spécial dans ce cas :
On fabrique dans le code en quelques lignes quelques fichiers BMP simples pour en faire des sprites.
Donc les fichiers BMP vont être réellement crées sur le disque dur.
Dès que le programme aura été lancé une fois, ces fichiers existeront.
Pour éviter qu'ils ne se re-fabriquent inutilement à chaque début du code il faut mettre if fileExit( ) etc...
Au final tout réside dans le fait qu'on pourrait ne donner que le fichier du code pour que tout fonctionne, mais n'est-il pas plus simple en définitive de donner aussi les 3 malheureux petit BMP (crées à la main dans PAINT par exemple) et ne pas s'emm..der à écrire dans le code tout ce qu'il faut pour les créer s'il n'existent pas ???

That's the question :siffle

@+



Edité par cassiope01 Le 17/10/2012 à 09h24
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 17/10/2012 à 12h50

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
Ce qui te gène, c'est la procédure de saisie-clavier par les coordonnées.
Si dans le dossier,on nomme les notes par un N°, il y a moyen de faire la saisie avec 2 "for-next". ( avec une complication pour la partie haute des touches blanches. Ou avec 3 "for-next".
Mais comme il y a besoin du nom des notes pour l'affichage, on n'y gagne pas grand chose.
Il n'est pas sur que le temps d'analyse des positions des sprites soit plus court que: select case. ( qui sort, dés le test positif )
Au niveau du temps:
Lors de la saisie, le temps de réponse n'a pas trop d'importance, puisque les notes ont la mème durée, et que l'on peut les entendre enchainées, sans latence (essaie une quinzaine de notes et fait "play" avec 300 de tempo)
--en apparté: " il faut que je mette des butées au tempo"
Dans le module rythme: les durées étant relatives les unes des autres, tant que la latence n'atteint pas des valeurs prohibitives ( ce qui empecherais les tempos rapides), elle n'a pas non plus d'importance, puisque c'est la mème qui affecte toutes les notes.

Ceci dit, que cela ne t'empèche pas d'optimiser.
Dans le dernier zip, j'ai viré 11 lignes (l'effacement des chiffres sur le deuxième clavier ) avec un simple: drawbmp. :nex
.....y'a du potentiel d'optimisation.....et d'introduction de bugs. Faut y aller mollo. ;)





____________________
Roro

   
Le 17/10/2012 à 17h34

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Ce qui te gène, c'est la procédure de saisie-clavier par les coordonnées.


Pas du tout.

Je préfère simplement la méthode du spritecollides dans ce cas. Ca permet aussi d'utiliser de plus jolies touches par exemple :siffle

Mais chacun ses méthodes :top

@+
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 17/10/2012 à 18h23

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
Citation:
Ca permet aussi d'utiliser de plus jolies touches

J'ai essayé de prendre mon clavier en photo.
a)- Les touches sont trop longues et trop fines. :s
b)- Impossible de corriger la paralaxe. :heink ( il aurait fallu découper les deux ou trois touches du milieu et les cloner pour faire celles des extrémités )..... pas évident.

J'en ai bien assez avec la maitrise du fonctionnement du bazar. Si j'ajoute la gestion des sprites...je meuuurs.
____________________
Roro

   
Le 18/10/2012 à 20h14

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
J'ai crée un sujet où tu peux trouver ma petit version d'un petit piano avec le système "spritecollides".

@+
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 22/10/2012 à 13h25

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
Soyons fous; faisons un cahier des charges.
a)- Récupérer le clavier et la procédure de restitution du son ( because: emploi de "time( )", qui a l'air plus propre mais moins facile que "timer".) du petit piano de l'ami Cassiope.
b)- Ajouter un octave. Soit un demi en dessous, un demi au dessus. Soit un complet en dessous.
c)- Intégrer le tout à "Composer_Sans.....".
J'ai commencé par du "simple": ajouter un octave.
Autant l'avouer de suite, les surprises n'ont pas tardées.
Mais que du banal: dédoublement des boutons ! :heink Disparition subite du clavier ! :s
Bref, les lutins (sprites) sont de sortie...Y va y avoir du sport ! :miam
____________________
Roro

   
Le 23/10/2012 à 13h00

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
Les nouvelles:
J'ai réussi à ajouter un octave au "petit piano", ça marche nickel.
J'ai intégré le tout dans "compose" et...C'est là que le problème est apparu.
Pour mettre des sprites, il faut un background. Mais en mettant un background (de la dim de la #w.g1 réduite du petit piano), dans ma Window_nf, les graphicsbox ont disparu. Et les bmps ne sont pas fiers.
Bref, c'est le souk. :s :heink :(
____________________
Roro

   
Le 25/10/2012 à 20h50

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
Quelques ajouts:
D'abord, le joli clavier made by Cassiope01, auquel à été ajouté un octave ENTIER !
Le bouton: "Affecte" est apparu. Il sers à affecter une durée à toutes les notes D'UN SEUL COUP ! ( voir l'aide)

compose_3.a.zip
____________________
Roro

   
Le 13/03/2013 à 18h01

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2457
Du nouveau pour la machine à dormir debout:
Adjonction d'une fonctionnalité qui affiche et permets de sélectionner toutes les combinaisons de quatre notes du ton en cours.
Quelques tuages de bugs.
Et une aide digne d'un roman de Gustave Flaubert. Compose_3a.zip
____________________
Roro

   
Jeux » Composer sans etre " Compositeur" Un petit log de musique  

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie