Animusic Studio

graphiboc Message lu Posté le 25 Jan 2009 à 23:04 Bulle
Membre Avancé

Messages : 262
GCPoints : 40352
Hello tout le monde.
Voici ici les premiers aspects d'un projet qui me tient à coeur depuis trop longtemps, mais cette année ne se prete guere plus à la programmation que la précédente malheureusement :S
Voici donc ici quelques bribes d'informations sur un projet qui ne verra pas le jour avant un certain temps (du moins je ne peux commencer à bosser dessus avant cet été).

Bon deja :

qu'est ce que c'est?
Peut etre que quelques uns d'entre vous ont deja entendu parler d'Animusic? (le nom de mon projet va changer, car celui-ci est donc deja utilisé!).
Non?
Et bien tapez "Animusic" dans youtube et amusez vous devant les qques vidéos présentes. (faites le réellement ca vaut le détour)
Mon but? Faire la meme chose, mais en temps réel (avec des graphismes plus modestes bien sur).
L'idée est la suivante : vous construisez votre studio, le logiciel mettra à votre disposition un ensemble d'outils pour designer votre studio, choisir les instruments de votre choix parmis une large gamme, les placer où vous voulez etc.

Ok c'est cool mais un studio ca va me servir à quoi?
(je fais durer le suspens ;-) )
Et bien une fois un studio créé, vous aurez le loisir de voir vos instruments s'animer et jouer le morceau de votre choix! (pour peu qu'il soit en midi).
En fait c'est plus un divertissement qu'un logiciel, ca peut meme servir de fond d'ecran, et pour moi c'est surtout un défi technique.

Le principe?
les morceaux midis contiennent précisément les notes jouées par chaque instrument.
Un algorithme se chargera ensuite de calculer les mouvement nécessaire pour que chaque instrument prenne vie et que chaque son entendu correspondent à un mouvement bien réel de l'instrument.
Le défi, c'est qu'il va falloir gérer un timing extrémement précis entre l'audio et le visuel, sans le moindre écart, tout en conservant un fps sufisant pour une animation fluide et une lecture linéaire des notes... tout un programme :D

En gros, le probleme est un probleme de synchronisation : cmt etre sur que ce qui est entendu est bien ce qui est joué, mais surtout que le tempo soit clairement respecté?
L'idée n'est pas bien compliquée, il suffit de baser le programme sur l'horloge interne de l'ordinateur!
Dès lors il ne reste plus qu'à fournir à chaque instrument (ou plutot a chaque partie d'instrument) une equation horaire qui lui est propre. L'idée c'est qu'un fps de 30 doit voir la meme chose qu'un fps a 60 (à la fluidité près).
Donc deja un probleme de résolu! :D
Bon alors la viens la question :

Les equations horaires on les sort d'où?
c'est la tout le reste du travail en fait.
Chaque instrument va fonctionner differemment, et va donc avoir des equation horaires paramétrables qui lui sont propres. (exemple : positionnement de la baguette d'une batterie + rotation etc, mais les contraites peuvent etre differentes). Il faut ensuite un long paramètrage de chaque instrument, le but etant de n'avoir à utiliser aucun mouvement précalculé, aucune animation. Le logiciel va lire le morceau et construire dynamiquement l'ensemble des equations. (c'est plus compliqué qu'il n'y parait. Par exemple une batterie peut avoir plusieurs bras, il faut donc que si un des bras soit occupé à jouer une note, que ce soit un autre qui prenne la note suivante etc...).

Et ensuite?
Enfin, on empile toutes ces equation dans une pile propre à chaque instrument.
Chaque equation est munie d'une "date de mort" : cette date dépassée, l'équation est ejectée de la pile et la suivante prend le dessus.

L'interet des piles?
Le logiciel n'aua pas à se poser de question : il lit le dessus de la pile, dès que la date devient dépassée, il fou l'élément du dessus a la poubelle -> facilité d'accès.
Ensuite, un morceau peut contenir plusieurs milliers de mouvements, et n'ayant pas esoin de lire tous ces milliers de mouvements à la fois, mais seulement le dernier présent, inutile d'utiliser les tableaux, gourmants en mémoire.
De plus ici la mémoire se videra au fur et à mesure, ce qui n'est pas une mauvaise chose en soi

Pas d'animations?
Comme je l'ai expliqué, chaque instrument sera dirigé par des equations horaires.
Tout fonctionne alors grace aux limbs (je ne les avaient jamais utilisés avant et c'est merveilleux o_O)
Aucun moteur physique externe, les aspects physiques seront aussi dirigés par des equations horaires finement calculées :P (merci le cours de physique ;-) )

Voila les bases du programme, il y a encore bp d'autres problemes qui se posent (lecture d'un midi etc...).
Par contre j'ai pas encore vérifié si dbp gérait bien les piles et sans ça ca ne marchera jamais >.>
Ah oui et j'oubliais, pour le momment il est hors de question d'user de shaders et autre technologies récentes, j'envisagerai par la suite si ca vaut le coup mais pour le momment je me contente de graphismes simples, l'important c'est que le corps du programme fonctionne.

Ce qui a été fait pour le momment :
-quelques designs d'instrument : une guitare, une triple scie, une harpe-metallophone-cloche-flute :P
-un premier instrument deja jouable à la souris! (la fameuse harpe-metallophone-cloche-flute )
il suffit de cliquer sur les cordes, tubes etc pour en faire sortir des notes.
Les aspects techniques ici sont : emission de son MIDI, animation des cordes, simulation physique des tubes, premiers designs ;-)

et quelques screens (j'essaye de posterla harpe sur megaupload mais ca marche pô T_T):
Image

Image
Image


une premiere demo:
http://www.megaupload.com/fr/?d=LW1LJJ2R
Dernière édition le 27 Jan 2009 à 22:04
L'Homme est un créateur...
shûji Message lu Posté le 26 Jan 2009 à 15:02 Bulle
Avatar de shûji
Membre Confirmé

Messages : 339
GCPoints : 80803
ta harpe est original avec les... hum, comment ça s'appelle déjà les sorte de grelots (en violet sur la harpe)

Je ne sais pour l'instant que légèrement programmer en C pour apprendre le C++ ensuite donc je comprend pas tout mais je me pose des questions:

tu vas faire tous les instrument tout seul? oO Si c'est le cas, bon courage

En tout cas je ne connaissais pas ce concept et c'est diablement intéressant! Si tu t'en sort, je pense que ce logiciel fera un tabac :proud: , c'est pas un jeu mais le mot qui correspondrais bien c'est surement "jouissif"!

Tu as l'intention de créer un outils "caméra" aussi?

graphiboc Message lu Posté le 26 Jan 2009 à 21:43 Bulle
Membre Avancé

Messages : 262
GCPoints : 40352
les "grelots" sont sensés représenter un métalophone. (en fait, c'est à la fois une harpe, un metalophone, une cloche et une flute de pan, que je n'ai pas encore ajoutée.)
L'instrument est directement inspiré, tout comme les autres, de ceux présents dans les vidéos d'animusic.
Je compte faire tous les instruments tout seul en effet, de toute facon, les instrument doivent etre fournit avec des conditions ien précises sur les lims, de manière à ce que je puisse les gérer correctement (le but, c'est un instrument = un objet, une note = un limb de l'objet ou plus).
L'instruement que j'ai le plus hate de réaliser et la batterie que vous pourrais voir dans la vidéo retro je sais plus quoi...
Mon plus grand regret est de devoir modéliser en low poly :S
du coup le résultat n'est pas aussi beau que prévu, mais je pense que c'est letout qui compte.

pour l'outil caméra, j'y pense bien sur, je ne sais pas encore comment je vais le gérer, peut etre avec des angles de vue prépaamétrés, et l'utilisateur dira ensuite à tel momment je veux tel point de vue, avec ou sans transition etc...

merci pour les encouragements ;-)
je vais retenter de poster la demo de la harpe ds la soirée si ca marche.
je tiens à préciser que dans cette démo, c'est vous qui jouez directement les notes en cliquant à la souris (les instruments ne sont pas encore accordés convenablement par contre pour le momment) alors que dans la suite, il y aura des marteaux qui frapperont sur les tubes etc...
L'Homme est un créateur...
graphiboc Message lu Posté le 26 Jan 2009 à 22:11 Bulle
Membre Avancé

Messages : 262
GCPoints : 40352
Chose promise, chose due :

http://www.megaupload.com/fr/?d=LW1LJJ2R

bonne soirée à tous
Dernière édition le 27 Jan 2009 à 22:04
L'Homme est un créateur...
Mod Message lu Posté le 26 Jan 2009 à 23:06 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
Je ne connaissais pas le concept, est c'est franchement sympa à ce que j'ai pu voir sur le net. Ca l'air aussi assez complexe à mettre en oeuvre. Le format midi étant en plus assez complexe.

Je pense que ça serait assez amusant de voir mes tortures auditives s'animer ainsi :p.

Je m'en vais télécharger la démo de ce pas ^^.

[Edit] Crash au démarrage :

Code :
Runtime Error 1507 - Display using 32 bit is not supported by available hardware at line 1


Sans doute un essai de mise en résolution pour un écran wide.
Dernière édition le 27 Jan 2009 à 11:36
graphiboc Message lu Posté le 27 Jan 2009 à 22:05 Bulle
Membre Avancé

Messages : 262
GCPoints : 40352
petit détail que j'ai tendance à oublier ^^
merci mod ;-)

j'ai mis le lien à jour
pour gérer la caméra c'est avec F1,F2,etc..
L'Homme est un créateur...
Darktib Message lu Posté le 28 Jan 2009 à 13:57 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Sympa, meme si il y a une erreur et que le programme ne peut pas utiliser les sons MIDI...

Et pour ma part, j'en suis a 555 fps...
Syltech Message lu Posté le 28 Jan 2009 à 14:16 Bulle
Avatar de Syltech
Membre Confirmé

Messages : 282
GCPoints : 71266
Sympa comme concept!

J'ai essayé et moi aussi j'ai le problème du MIDI

Error opening MIDIOut

Invalid device identifier.

J'ai 890 Fps sans rien faire et 730 avec des notes jouée.


Syltech
Image
graphiboc Message lu Posté le 28 Jan 2009 à 21:12 Bulle
Membre Avancé

Messages : 262
GCPoints : 40352
donc vous n'entendez pas de son? :S
le fps élevé est normal, la resolution etant relativement faible et les ojets ayant peu de polygones.
Cependant je n'ai toujours pas réduit les texture qui doivent etre en 1024x1024 a l'heure actuelle.
je changerait surement ca plus tard

je vais voir à quoi le pb midi peut etre du mais je ne vois pas trop :S
Ca ne marche chez personne?
L'Homme est un créateur...
Mod Message lu Posté le 28 Jan 2009 à 22:16 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
Je n'ai pas d'erreur mais je n'entends rien, ce qui revient au même.

Question bête, mais je ne vois pas de fichier midi dans le dossier de l'application. La partition est censée se trouver dans l'exe ?
graphiboc Message lu Posté le 28 Jan 2009 à 22:24 Bulle
Membre Avancé

Messages : 262
GCPoints : 40352
actuellement c'est vous qui faite jouer l'instrument en cliquant dessus.
Il n'y a donc aucun fichier midi ou autre son deja présent en fait les instructions sont directement envoyés à la carte midi, du genre tu clique et le logiciel envoi un signal à la carte son pour lui indiquer quelle note produire
L'Homme est un créateur...
Syltech Message lu Posté le 29 Jan 2009 à 15:29 Bulle
Avatar de Syltech
Membre Confirmé

Messages : 282
GCPoints : 71266
Oui, le problème est que l'on entend rien ^^ et j'ai testé sur plusieurs ordinateurs même chose :/
Ça serait nettement mieux avec du son, si tu pouvais réglé ce problème ;)

Syltech
Image
graphiboc Message lu Posté le 20 Jan 2010 à 13:04 Bulle
Membre Avancé

Messages : 262
GCPoints : 40352
Salut à tous.
Je sonde à déterrer ce projet après mes partiels (donc d'ici une semaine), histoire de varier un peu, Bomberman étant un projet assez conséquent.
Pour cela, je vais commencer à m'intéresser à la principale difficulté du soft : convertir un MIDI en un format propre au logiciel (le reste étant un long travail de paramétrage des équations des instruments, de modélisation etc).
Le problème c'est que j'ai beaucoup de mal à avoir des informations précises sur le format midi.
Il me faudrait une source qui définisse clairement le format MIDI pour que je puisse récupérer chaque canal instrumental, chaque note etc.
Je me rappelle avoir vu il y a quelques années un site génial qui expliquait un nombre immense de formats de fichier (aussi bien musicaux que fichiers 3, documents, images et autres), une vraie mine d'or quoi. Mais impossible de remettre la main dessus.
Quelqu'un connaitrait il ce site, ou a défaut pourrait me proposer un site suffisamment complet sur le format midi ?

EDIT : je pense avoir trouvé. Pour les intéressés : http://www.sonicspot.com/guide/midifiles.html
Au premier coup d'oeil ça a l'air fastidieux, de quoi m'occuper ! :grin:

EDIT2 : mieux encore j'ai retrouvé la mine d'or !
http://www.wotsit.org/ En espérant que ç adonne des idées à certains ;-)

EDIT3 : j'en profite pour mettre une "nouvelle" version de la harpe qui cette fois-ci devrait produire du son sur tous vos ordinateurs ;-)
Sinon, je n'ai rien changé, j'ai du boulot ! :tongue:
http://www.toofiles.com/fr/oip/documents/zip/harpe.html
Dernière édition le 20 Jan 2010 à 21:21
L'Homme est un créateur...
Darktib Message lu Posté le 20 Jan 2010 à 22:37 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Marche toujours pas. Bizarrement, je ne vois aucun fichier de son - ils sont integrés dans l'exe ?
graphiboc Message lu Posté le 21 Jan 2010 à 07:32 Bulle
Membre Avancé

Messages : 262
GCPoints : 40352
C'est du midi, les sons sont directement générés par ta carte son ;-)
Tu as une erreur au lancement ou pas ?

EDIT : j'ai pas résisté ce midi j'ai pris une pause et j'ai commencé l'importation des midis.
Et ça se passe plutôt bien ! j'arrive déjà à lire toutes les infos du midi.
Après mes partiels (c'est lundi...) je commencerai par faire des tests relativement simples du type importer un midi et le lire.
Dernière édition le 22 Jan 2010 à 15:22
L'Homme est un créateur...
Darktib Message lu Posté le 22 Jan 2010 à 16:37 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Pas d'erreur au lancement.

Sinon, pourquoi ne pas utiliser du wav ou mp3 pour les sons ? Certes, ca ferait beaucoup de fichiers...
graphiboc Message lu Posté le 23 Jan 2010 à 11:07 Bulle
Membre Avancé

Messages : 262
GCPoints : 40352
Justement ça ferait trop de fichiers et ça prendrait des mois pour réussir à tous les obtenir et les gérer correctement.
Tout simplement parce que le midi permet de synthétiser plus de 120 instruments disposant chacun de plus de 100 notes soit un total de plus de 12000 sons différents.
Sans oublier la simplicité du principe : il suffit d'envoyer un message à la carte son comportant quelque paramètre pour jouer n'importe quelle note de n'importe quel instrument, avec la possibilité de gérer les vibratos, etc.
Enfin, le format de fichier midi contient l'intégralité des notes et autre pour chaque instrument donc l'idée c'est d'importer le midi comme si c'était une partition et chaque instrument jouera sa partie.
Après certes le son ne sera jamais aussi bon que celui d'un mp3 mais tu n'obtiendras jamais les mêmes possibilités en temps réel avec du mp3
L'Homme est un créateur...
graphiboc Message lu Posté le 07 Mar 2010 à 18:04 Bulle
Membre Avancé

Messages : 262
GCPoints : 40352
Le projet a un peu avancé ces derniers temps.
En fait le décryptage des fichiers midi s'est avéré beaucoup plus complexe que je l'avais prévu, entre autre la manière dont sont stockées eles données et toutes les exceptions étaient assez difficiles à gérer.

Toujours est-il que à l'heure actuel, j'arrive à décrypter presque n'importe que fichier midi, avec un taux de réussite de 100% si vous passer le fichier midi tout d'abord dans un midi file stripper. En tout cas pour le moment ça me satisfait même si je vais essayer d'obtenir un taux de 100% sans logiciel externe.

J'espère réussir d'ici quelque temps la lecture d'un fichier, ce qui marquera le début des choses sérieuses :wink:

EDIT : ça y est, lecture complète d'un fichier MIDI réussie !
Il y a encore quelques soucis de compatibilité, la gestion de la batterie qui est un instrument à part en MIDI, et des problèmes plus techniques (par exemple, la gestion du pan : souvent en MIDI, les gens utilisent deux pistes différentes avec 2 pans différents pour un même instrument. Je pourrai gèrer ça de la même manière, mais le but est que les deux pistes soient jouée au final sur le même instrument. Mais du coup je prend plus en compte le pan donc c'est moins joli à écouter...)

EDIT2 : ça y est ma harpe-vibraphone arrive à jouer des morceaux midis !!! Le résultat est assez sympa, j'essaierai sûrement de faire une version du modèle un peu plus réaliste. J'ai réussi à augmenter la compatibilité avec certains fichiers midi au prix d'erreurs de tempo. Le problème vient d'événements midi à priori inconnus.
Dernière édition le 14 Mar 2010 à 18:57
L'Homme est un créateur...
graphiboc Message lu Posté le 23 Mar 2010 à 12:00 Bulle
Membre Avancé

Messages : 262
GCPoints : 40352
La partie technique a bien avancé.
J'ai rajouté une fonctionnalité permettant aux instruments virtuels de se connecter automatiquement à l'instrument midi le plus approprié.
Cette connexion peut cependant toujours se faire de façon manuel (par exemple, une harpe peut jouer la partition d'un xylophone, c'est pas très réaliste mais bon...). J'ai aussi corrigé pas mal de petits trucs et améliorés les équations des instruments pour que ça rende un peu mieux.
Pour l'instant je ne dispose que de 3 instruments virtuels : la superharpe, une guitare, et un truc destiné aux son synthétiques du genre dent de scie

Voilà un petit aperçu de l'état actuel des choses en vidéo :

http://www.youtube.com/watch?v=3Ay5XkYnGk4

la vidéo est un peu désynchronisée c'est dommage :confused:

EDIT : en fait youtube a pas réussi à convertir la piste son >.<
Dernière édition le 23 Mar 2010 à 14:24
L'Homme est un créateur...
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.0583 secondes