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.
|