Librairie PolySnd  
Librairie PolySnd

  -- Le site --
· News
· Moi
· Liens
·
 Forum
· Me Contacter

  -- Mes projets sur TI --
· Blib
· Librairie PolySnd
· PolySnd Player
· PolySnd MIDI Converter
· PolySnd Converti
· Arkanoid
· Nebulus

 

  -- Rubriques --
· PolySnd v1.0
· PolySnd v1.2
· PolySnd v1.3
· PolySnd v2.0
· Guide de programmation

 

   

Voir directement PolySnd v2.0

PolySnd est une librairie audio destinée à la programmation audio pour divers programmes tel que les jeux, players ou éditeurs de partitions...

La version 1.0 de PolySnd:

  Cette première version de PolySnd est une adpatation du programme sound6d de Laurent Poncey sur TI92 en une librairie capable de jouer n'importe quelle mélodie et ce en stéréo sur 2 voies. Le but principal était de permettre la création de musiques pour PolySnd sans avoir besoin d'énormément de connaissances en programmation ni en musique.

Cette version fonctionne sur TI89/TI92/TI92+ et V200 et sur toutes les ROMs.

 Télécharger la version 1.0 de PolySnd.

 

La version 1.2 de PolySnd:

  Correction de nombreux bugs de la version 1.0 de PolySnd et les musiques prennent moins de place, en effet le moteur de PolySnd 1.0 a été amélioré rendant les musiques de PolySnd 1.0 incompatibles avec cette version. De plus il est possible de créer des musiques en C. Le support sur TI92 a été abandonné.

 Télécharger la version 1.2 de PolySnd.

 

La version 1.3 de PolySnd:

  Tentative de jouer des musiques sur 4 voies. Première version du convertisseur MIDI permettant de convertir un fichier MIDI en données audio utilisables pour PolySnd, cette version du convertisseur est très instable, assez difficle d'utilisation et très peu efficace. Quelques nouvelles améliorations on étaient apportées.

 Télécharger la version 1.3 de PolySnd.

 

 

 

  La librairie PolySnd a été totalement réécrite et repensée, cette version permet enfin de jouer du son en tâche de fond dans des jeux... Elle offre un total de 54 fonctions facilitant la programmation de son. Elle incorpore 4 modes de gestion audio tel que la possibilité de jouer une simple fréquence (beep), jouer une série de fréqeunces avec des durées définit pour réaliser des effets sonores (PlayFX), jouer des musiques (PlaySound) ou encore jouer des WAV en 1 bit avec un taux d'échantillionnage à 8192 Hz maximum et tout ça en mono ou en stéréo, de plus il est possible de combiner ces différents modes pour par exemple jouer une musique sur un canal en même temps que des effets sonores.

  Il est aussi possible de jouer du son avec des niveaux de gris sans que ceci ne clignotes ou sans que la librairie ne diminue la vitesse du programme. Elle fonctionne sur TI89/TI92+ et V200 sur HW1 et HW2 et sur toutes les ROMs ainsi que sur PedRom.

  PolySnd v2.0 offre un grand confort de programmation tout comme ExtGraph, XLib, GraphX, il est possible de l'utiliser dans des projets en Nostub ou en Kernel en C ou en ASM.

PolySnd v2.0 est le fruit de nombreux mois de recherche et de développement, j'espère quelle comblera tous vos désirs.

Accéder au guide de programmation.

 Télécharger PolySnd version 2.47.2.

 Télécharger PolySnd version 2.47.

 Télécharger PolySnd version 2.46.

 Télécharger PolySnd version 2.45.

 Télécharger PolySnd version 2.44.

 

Historique:

04-04-2003:

  Recherche de l'interruption capable de générer du son et surtout trouver une vitesse maximale de cadence de l'interruption. Au début, j'ai beaucoup plus travaillé sur l'idée de faire du son avec des niveaux de gris, les résultats étaient très décevant et pas convainquant du tout. La recherche d'algorithmes était faite en C. J'avais déjà commencé à travailler sur le player et à réfléchir sur un format de données. Le player avait bien commencé surtout la fonction de recherche de fichiers et de lecture. Mais faire un player sans possibilité d'afficher des infos en même temps que de jouer du son, c'est assez difficile.


06-04-2003:

  Et tant donné les résultats, j'ai préféré me diriger avec 2 modes de lectures de PolySnd (Mode pour les jeux et niveaux de gris mais son très médicore et mode bloquant le programme en cours mais avec un son de meilleure qualité).


19-04-2003:

  J'ai réussit à pousser au max l'interruption n°5 et à jouer des fréquences dans l'interruption, le seul problème c'est que je divise les temps d'interruption donnant pour résultat peut de fréquences et surtout peu d'aigus soit un total de 45 notes.

Je décide de m'orienter de cette façon:
Mode 1:

-Son de basse qualité car 50 notes
-Possibilitée de jouer en tâche de fond
-Incorporation des niveaux de gris
-Int5 à 8Khz
-Envoye des informations en permanence sur la musiques...

Mode 2:
-Son haute qualité car plus de 4000 fréquences
-Impossible de jouer du son en tâche de fond
-Peut être utilisable avec des niveaux de gris
-Peut être besin d'utiliser l'int5
-Impossible de récuper des informations

Mais j'hésitez vraiment à ajouter les 2 modes.
C'est d'ailleurs à ce moement que j'ai commencer à comprendre que je devais coder polySnd v2.0 en ASM.


21-04-2003:

  La librairie pour moi me sembait presque terminé or j'étais loin de pouvoir faire mieux. Je me suis donc lancé dans la création d'un jeu utilisant cette librairie. J'ai donc commencé par afficher une ballequi rebondie sur l'écran en souvenir de fxlib et une raquette en bas. Le projet arkanoid est née ici.

  Auparavant j'ai fait des recherches sur les anciennes librairies audio donc sndlib2 et fxlib, le plus important pour moi était d'obtenir la source, j'ai donc insisté pour avoir les sources, or lorsque je l'ai est eu, j'ai été deçus car elle ne mon pas servit du tout.

J'ai un peu mis en pause PolySnd v2.0 pour me lancer dans mon futur jeu de casse briques.


07-05-2003:

  J'ai pensé à différencier les voies et ainsi permettre de jouer une musique sur une voie et des effets snonores sur l'autre. A ce moment là le nombre de fonctions a considérablement augmenté dont certaines inutile et la librairie a presque était revue entièrement.

J'ai aussi pensais à faire une librairie orientée audio pour les programmeur en Basic, pour l'instant cette idée n'est pas allée loin vu les limitations du basic.


09-05-2003:

  J'ai réfléchie à un nouveau algorithme de gestion de l'interruption, au lieu de diviser les temps d'interruptions, je faisais des approximations pour avoir des fréquences plus précise, et avec cette méthode j'arrivais à 4000 fréquences mais le problème majeur était qu'il y avait vraiment peu de fréquences aigus.. J'ai aussi penser à ce moment de libérer l'auto-int n°5 et de laisser des ressources pour les programmeurs. Là j'ai encore revue beaucoup de parties de la librairie à cause de ses changements.


11-05-2003:

  Diffusion du premier programme utilisant PolySnd v2.0, le programme était très simple, il jouait juste une fréquence en boucle. J'ai déjà aussi pensé à l'adaptation sur HW1, avec un simple programme Kevin Kofler m'a donné une fréquence de 11 569,56 Hz pour l'interruption n°5 sur HW1.


15-05-2003:

A ce moment je semblais bien avancé dans les projets de PolySnd v2.0:
-Librairie 1.0, 1.2, 1.3 100%
-Librairie 2.0 70%
-Players on-calc 50% capable de reconnaître le format de polysnd, recherche dans la VAT les fichiers, affiche commentaires et mode Pause,Stop,LEcture,Suivant,Précédent,Rembobine...
-Convertisseur MIDI 10% la version serat totalement différente et surtout plus accessible
-Editeur de partition sur PC 100% jamais diffusé mais si ça interesse alors pourquoi pas
-Arkanoid 10% premier jeux avec du son (je ne compare pas à Duke68K car ça n'en était pas)
-Librairie Basic 0%
-Documentation 10%

Le sujet du son sur VTI a été abordé et je ne sais pas comment mis prendre.
Beaucoup veulent l'éditeur de partions, je pense y retravailler lorsque j'aurais vraiment terminé la librairie...


01-06-2003:

  En ayant effectué plusieurs tests sur le nouvel algo, je me rencontre qu'il n'est possible que de jouer 63 notes différente, ce qui est encore vraiment trop faible pour moi.


02-06-2003:

  J'ai donc ajouté un facteur de distorsion ainsi me permettant de régler comme je voulais les ondes, mais enfin de compte ça n'as pas changé grand chose.


04-06-2003:

  Ne pensant pas jouer plus de fréquences, j'ai donc commencé à réaliser une table de notes avec un total de 53 notes.


07-06-2003:

  Je me suis repenché sur la question du temps d'execution de l'interruption avec le compteur pour jouer les fréquences, c'est grace à Kevin Kofler qui m'a donné la solution pourtant évidente que j'ai plus enfin avoir énormément de fréquences différentes et surtout dépasser les anciennes versions de PolySnd.

  Quand j'y repense mon algorithme était très très proche de celui de Kevin Kofler.


08-06-2003:

  J'ai commencé à créer la table des notes et la je compte enfin 120 notes avec 10 octaves différente, surtout que la librairie est capable de jouer 32 768 fréquences différentes. Je ne pensais pas arriver jusqu'à là surtout sans aide.


10-06-2003:

  Mais reste toujours le problème des niveaux de gris, persuadé que ma librairie ralentie fortement l'interruption utilisée pour les niveaux de gris. Et c'est encore Kevin Kofler qui me donne la solution, un hack pour pas que l'auto-int n°1 coupe l'auto_int n°5 lors de son passage.

Au final: asm("move.w #0x2400,__gray_plane_index+6");

Cette méthode n'est pas fiable à 100% et il n'est pas assuré que dans les futur version de TIGCC cette méthode fonctionne.

Cette librairie est presque terminé mais tout les problèmes sont résolus et je suis à un résultat que je n'esperais pas, cette version est vraiment plus puissante que les anciennes.
-Plus de problèmes avec les niveaux de gris, ça marche vraiment bien avec, pas de clignotement et le son est de meilleurs qualitée, ça valait vraiment le coups d'essayer jackiechan.
-Le son est vraiment bien, j'ai même 10 octaves.
-Plein de fonctions importante
-Tailles des fichiers vraiment faibles...
-Et on ne perd pas d'interruption puisque la 5 est toujours utilisable.

Il me reste encore 3 choses à faire:
-Ajouter d'autres fonctions moins importante mais utile.
-Compatibilitée avec les HW1, donc faudrait que quelqu'un essaye ma librairie sérieusement avec une HW1. Puis compatibilitée avec TI-89, c'est le cas mais sur vrai TI.
-Etalonnage avec précision de l'interruption au alentours de 7500 hz.

J'ai déjà fait le plus difficile mais je suis content, vraiment merci Kevin.

A ce moment là j'avais fait le plus difficile.

Détails sur le hack dans gray.s:
__gray_plane_index:
.word 0x0000
|==============================================================================
[commentaires]
|==============================================================================
__gray_int1_handler_hw2:
move.w %sr,-(%a7) | save content of status register on stack
move.w #0x2700,%sr | disable ALL interrupts (no one should
| interrupt us ...)

14-06-2003:

  J'ai commencé à redevelopper entièrement le convertisseur MIDI.

16-06-2003:

  Début de la version statique, mainteannt PolySnd v2.0 peut être utilisé en _nostub ou kernel.

19-06-2003:

  Rédaction de la notice.
Possibilitée d'améliorer le son avec un filtre passe-bas. Merci à squalyl.

21-06-2003:

  Correction de 2 bugs majeure, compatibilitée avec HW1 et libération de l'auto-int n°5.

24-06-2003:

  Correction d'un bug mineure avec StateVoice.

26-06-2003:

USE_GRAY_WIDTH_POLYSND -> USE_GRAY_WITH_POLYSND
DesinstallSound -> UninstallSound
ALLVOICE -> ALLVOICES
GetLenght_voice[1|2] -> GetLength_voice[1|2]
StateVoice -> VoiceState
SetStateVoice -> SetVoiceState

Ces fonctions on était renommé pour avoir un anglais plus correct. Merci encore à Kevin Kofler.


01-07-2003:

  Correction d'un bug de synchronisation des voies.


04-07-2003:

  J'ai commencé à réflechir pour inclure la gestion de WAV à PolySnd v2.0.


08-07-2003:

  Correction de 2 ou 3 bugs et ajout de la fonction AddNotes. J'ai inclus la méthode gestion de wave2asm à PolySnd v2.0, le résultat était fantastique, or ça prennait trop de place et surtout une fréquence de 6 KHz s'ajoute au WAV.
J'ai donc commencer à abandonner le WAV 7 bits.


20-07-2003:

  J'ai intégre le son qualité 1 bit. Correction d'un bug mineure de time_counter. La documentation est terminé et la librairie me semblait terminée.


27-07-2003:

  Brunni a déjà commencais sur son convertisseur WAV avec la version 1.3.


03-08-2003:

  Passage de la noire de 30 cycles tempo à 34 à cause d'erreurs d'approximation de temps.


04-08-2003:

  Organisation de l'interface du convertisseur MIDI.


05-08-2003:

  J'ai trouvé une approximation parfaite de la noire à 32 pour une marge d'erreur assez faible.


09-08-2003:

  Correction d'un gros bug dans Interrupt5. Réalisation des testes CPU. Réécriture de la documentation au format HTML et ajout de quelques
fonctions.

19-08-2003:

  Optimisation de la librairie en mémoire et en vitesse, la librairie perd 1 Ko et gagne 27% en plus de ressources. les arguments passe mainteanant par registres et non par la pile. 2 fonctions ajouté (SetLength_voice[1|2]).


21-08-2003:

  Mise à jour de la documention et création de nouveaux exemples. Correction d'un bug mineure.

26-08-2003:

  Nouveau convertisseur MIDI bien plus performant, capable de reconnaître les PolyNotes...

28-08-2003:

  Toutes les fonctions commence par pSnd, seulement en C. Grosse optimisation du code de l'interruption.

06-09-2003:

  Grande optimisation, PolySnd ne consomme plus grand chose en ressources CPU. Ses optimisations m'on pris un temps considérable, merci à Lionel Debroux pour m'avoir aidé..

08-09-2003:

  Correction d'un gros bug sur HW1. J'ai commencé à commenter les parties délicates du code.

13-09-2003:

  Améliorations des routines InstallSound et UninstallSound.

14-09-2003:

  Optimisation de PolySnd Converti et amélioration de la qualité des WAV en 1 bit.

13-10-2003:

  Gain de 2 octets et de 2 clocks.

18-10-2003:

  Correction d'un bug bête dans PlayFX_voice1 et gain de quelques octets.

19-10-2003:

  Gain de 122 octets et correction d'un bug de passage de sons en stéréo en mono. De plus j'ai remarqué que certain écouteurs necessitent le filtre passe-bas pour fonctionner correctement avec PolySnd.

29-10-2003:

  Version 2.47.2, ajout de la documentation en anglais. (traduction automatique avec Symtray).

28-11-2003:

  PolySnd v2.0 et les divers outils (PolySnd Player, PolySnd MIDI Converter et PolySnd Converti) sont sous le label d'Orage Studio.