home *** CD-ROM | disk | FTP | other *** search
/ Groovy Bytes: Behind the Moon / groovybytes.iso / GROOVY / SND_TOOL / CRYS250.ZIP / CRYSFR.DOC < prev    next >
Encoding:
Text File  |  1995-01-11  |  25.2 KB  |  693 lines

  1.  
  2.               ──────────────────────────────────
  3.  
  4.               CRYSTAL PLAYER Version 2.50
  5.  
  6.            ────────────────────────────────────────
  7.  
  8.              (C)opyright 1994 Sébastien GRANJOUX
  9.  
  10.                 ────────────
  11.  
  12.  
  13.  
  14.  
  15.  
  16. ATTENTION: Vous ne pouvez utiliser ce programme qu'à vos risques et
  17. périls. Je ne saurais être tenu pour responsable de toutes pertes ou
  18. dommages conséquents à son utilisation. Je ne donne aucune garantie
  19. quant à son fonctionnement à part le fait qu'il occupera de la place
  20. sur votre disque dur.
  21.  
  22.  
  23.  
  24.  Table des matières │
  25. ────────────────────┘
  26.  
  27.   I ........................................... Licence
  28.   II ............................. Contenu de l'archive
  29.  
  30.   III ................................. Fonctionnalités
  31.   IV .................................... Le MOD player
  32.   V ....................................... Utilisation
  33.  
  34.   VI ......................... Questions souvent Posées
  35.   VII ...................................... Historique
  36.   VIII .................................. Remerciements
  37.   IX .......................................... Contact
  38.   X ..................... ... Où trouver Crystal Player
  39.  
  40.  
  41.  
  42.  I - Licence │
  43. ─────────────┘
  44.  
  45.    Ce programme permet de jouer des fichiers musicaux au format MOD et
  46.    peut être inclus dans vos programmes sous les conditions suivantes:
  47.  
  48.    Vous pouvez l'inclure librement dans n'importe quel programme
  49.    du domaine publique (freeware) en mentionnant simplement mon nom
  50.    dans votre programme. Pour une utilisation commerciale (shareware
  51.    compris) de mon programme, vous devez d'abord prendre contact avec
  52.    moi pour décider des conditions supplémentaires et obtenir mon
  53.    accord.
  54.  
  55.    Ce programme est fourni avec toutes ses sources pour vous
  56.    permettre de les modifier et de les adapter au mieux à vos
  57.    productions. Ces modifications doivent rester strictement
  58.    personnelles à moins que là encore, je donne mon accord. A
  59.    priori, je serais très content que d'autres personne s'interessent à
  60.    mon programme mais je voudrais garder cela sous contrôle.
  61.  
  62.    Vous pouvez par contre distribuer librement ce programme, avec tous
  63.    ses fichiers, et je vous encourage vivement à le faire, à la
  64.    condition que vous ne preniez pas plus de 5 USD de frais pour sa
  65.    diffusion.
  66.  
  67.    Allez voir les informations à la fin de ce fichier pour savoir
  68.    comment me contacter.
  69.  
  70.  
  71.  
  72.  III - Contenu de l'archive │
  73. ────────────────────────────┘
  74.  
  75.   L'archive doit avoir le nom suivant CRYSxxxl où xxx est le numéro de
  76.   version sur trois chiffres (exemple 240 veut dire version 2.4).
  77.   La lettre l est un espace pour les versions publiques. Mais par
  78.   exemple,si c'est un B c'est une version de test.Ce qui veut dire
  79.   qu'elle n'est probablement pas complète et qu'il y a encore plus de
  80.   chance d'avoir des bugs.
  81.  
  82.   L'archive normale comprend les 15 fichiers suivants :
  83.  
  84.      C0MULTI.ASM contient le code de démarrage du player en assembleur.
  85.  
  86.      CRYS.EXE    est une version éxecutable du player de MOD que
  87.            j'ai fait à partir de mes routines.
  88.  
  89.      CRYS26.ASM  contient toutes les routines permettant de jouer un
  90.            fichier MOD.
  91.  
  92.      CRYS26.OBJ  est l'objet généré par Turbo Assembleur du fichier
  93.            précédent, c'est ce fichier qu'il faut inclure dans
  94.            un programme C ou ASM pour utiliser mes routines.
  95.  
  96.      CRYSEXP.CPP est un exemple d'utilisation en Turbo C++ des mes
  97.            routines dans un exemple le plus simple possible.
  98.  
  99.      CRYSEXP.PAS est la même chose que le fichier précédent mais en
  100.            Turbo Pascal cette fois ci.
  101.  
  102.      CRYSTAL.ASM est le code du programme principale du player de MOD,
  103.            on peut prendre cela comme un exemple d'utilisation
  104.            des routines en assembleur.
  105.  
  106.      CRYSFR.DOC  est le fichier qui contient la documentation en francais
  107.            et que vous êtes en train de lire.
  108.  
  109.      CRYSENG.DOC la même chose en anglais.
  110.  
  111.      CRYSTAL.INC contient la définition de quelques constantes pour un
  112.            programme en assembleur comme le numéro des codes
  113.            d'erreur renvoyé par mes routines ou le numéro des
  114.            cartes sonores.
  115.  
  116.      CRYSTAL.PAS contient la source de l'unité pascal nécessaire à
  117.            l'utilisation des routines.
  118.  
  119.      CRYSTAL.TPU contient l'unité à appeler dans un programme en Turbo
  120.            Pascal.
  121.  
  122.      FILE_ID.DIZ contient une petite description du player pour les
  123.            listes de fichiers des BBS.
  124.  
  125.      STINTER.ASM contient des routines qui vont chercher dans le module
  126.            CRYS23, des variables utiles pour faire un player
  127.            comme par exemple le numéro de la piste actuelle ou
  128.            l'octet envoyé.
  129.  
  130.      STMODE3.ASM contient des routines pour afficher en mode texte 3
  131.            (80*25 en 16 couleurs).
  132.  
  133.  
  134.  
  135.  
  136.  II - Fonctionnalités │
  137. ──────────────────────┘
  138.  
  139.    Ce programme est entièrement programmé en assembleur et contient des
  140.    instructions spécifiques au 386.  Il reconnait quatre appareils
  141.    pour restituer la musique: le haut parleur interne, un
  142.    convertisseur digital -> analogique (ex: Covox) sur un port
  143.    parallèle ,une soundblaster et enfin une GUS.  Attention, la
  144.    soundblaster doit utiliser le canal DMA 1 et une IRQ inférieure
  145.    ou égale à 7.
  146.  
  147.    Il accepte que les fichiers .MOD avec 15 ou 31 instruments et avec 4,
  148.    6 ou 8 voies. De plus il n'accepte que 64 patterns et chaque sample
  149.    doit avoir une longueur inférieure à 63Ko. Les effets suivants ne
  150.    sont pas reconnus: E3,E4,E5,E7,EF. Par contre il utilise les 8
  151.    octaves de scream tracker 3.
  152.  
  153.    Comme vous le verrez en lisant la partie historique, ce programme a
  154.    beaucoup évolué ce qui fait qu'il n'est pas des plus facile à
  155.    comprendre. Il contient donc au moins quelques bugs et si
  156.    quelque chose ne marche pas, vous en avez peut être trouvé un.
  157.    Dans ce cas, contactez-moi, généralement, j'arrive à le faire
  158.    assez vite.  Si c'est un MOD particulier qui marche mal,
  159.    j'aimerais aussi que vous me le transmettiez ou au moins son nom
  160.    et l'endroit ou le trouver.
  161.  
  162.  
  163.  
  164.  IV - Le MOD player │
  165. ────────────────────┘
  166.  
  167.   Le MOD player contenu dans l'archive n'essaye pas de concurrencer les
  168.   autres mod player et il possède peu d'option. Il est fourni pour vous
  169.   permettre de juger facilement de la qualité (et des défauts) des
  170.   routines sonores et vous donne un exemple d'utilisation de ces
  171.   routines en assembleur. Il utilise des informations internes des
  172.   routines de restitution de la musique et vous montre comment les
  173.   utiliser si vous en avez vraiment besoin. Vous pouvez refaire un
  174.   nouveau mod player avec mes routines mais elles ne sont pas faites
  175.   pour cela car elles gèrent assez peu d'options.
  176.  
  177.   Il s'utilise de manière assez simple et si vous l'appelez sans
  178.   paramètre, il affiche une page d'aide. Vous devez lui passer comme
  179.   paramètre au moins le nom d'un fichier MOD. Il choisira par défaut
  180.   la meilleure carte sonore qu'il trouvera dans vos variables
  181.   d'environnement. Vous pouvez forcer une carte spéciale, même si elle
  182.   n'existe pas dans les variables d'environnement, ou changer la
  183.   fréquence de mixage par défaut (18.6kHz) en utilisant les options
  184.   suivantes:
  185.  
  186.      /FRxxx  Fixe la fréquence de mixage en centaine de Hz
  187.  
  188.      /SK     Force l'utilisation du haut parleur interne
  189.  
  190.      /DCp    Force l'utilisation du DAC sur le port p (1 à 4)
  191.  
  192.      /SBp,i  Force l'utilisation de la SB sur le port d'adresse p (en
  193.          hexadécimal) avec l'irq i
  194.  
  195.      /GSp    Force l'utilisation de la GUS à l'adresse de port p
  196.          (toujours en héxadécimal)
  197.  
  198.   Les paramètres p ou i peuvent être omis, mais pas les virgules, ce qui
  199.   oblige le player à chercher ces valeurs dans les variables
  200.   d'environnement. Si elles n'existent pas il prend des valeurs par
  201.   défaut.
  202.  
  203.  
  204.  
  205.  V - Utilisation │
  206. ─────────────────┘
  207.  
  208.   La source a été compilée avec Turbo Assembleur en mode idéal et
  209.   nécessite un 386 minimum. Les routines s'occupant de la restitution
  210.   sonore sont toutes regroupées dans le même fichier nommé CRYS26.ASM.
  211.   Pour utiliser ces routines, il suffit d'inclure dans votre programme
  212.   le fichier objet correspondant ou l'unité pascal.
  213.  
  214.   Toutes les fonctions utilisent la convention du pascal pour prendre
  215.   leurs arguments. Elles renvoyent éventuellement un code d'erreur sur
  216.   16 bits mais sauvegardent toutes ES,DS,DI et SI, les autres registres
  217.   pouvant être modifiés.
  218.  
  219.   Pour pouvoir faire de la musique, il faut appeler dans l'ordre
  220.   FLOADMOD ou MLOADMOD pour charger le module en mémoire. Puis SETMOD
  221.   pour indiquer la carte sonore à utiliser et la fréquence et STARTMOD
  222.   pour commencer effectivement la musique. Enfin régulièrement dans
  223.   votre programme il faudra appeler MAKEMOD pour calculer la musique
  224.   pour les 1/50 prochaine seconde. Pour arrêter la musique il suffit
  225.   d'appeler STOPMOD et vous pouvez alors reprendre normalement avec
  226.   STARTMOD. Par contre, si vous voulez changer de module ou de carte
  227.   sonore il faudra réutiliser SETMOD et éventuellement FLOADMOD ou
  228.   MLOADMOD. Quand vous avez fini ou si vous changer de module il faut
  229.   appeler UNLOADMOD pour rendre au DOS la place réservée lors du
  230.   chargement du fichier MOD. Il existe en plus une fonction DETECTSND
  231.   qui va chercher dans les variables d'environnement les cartes sonores
  232.   installées et leurs configurations.
  233.  
  234.  
  235.   Voici maintenant la description détaillée de ces fonctions.
  236.  
  237.  
  238.   FLOADMOD
  239.  
  240.      Fonction: Charge un mod en mémoire à partir d'un fichier sur disque
  241.  
  242.      Entrée:   Un pointeur long sur le nom du fichier terminé par un
  243.            caractère nul.
  244.  
  245.      Sortie:   Un code d'erreur non nul si il y a eu un problème.
  246.  
  247.      Note:     Cette fonction alloue elle même la mémoire nécessaire aux
  248.            instruments, chaque instrument utilisant 764 octets de
  249.            plus que dans le module. Chaque instrument doit pouvoir
  250.            rentrer dans un segment (64Ko) et il ne faut pas plus de
  251.            64 patterns.
  252.  
  253.  
  254.   MLOADMOD
  255.  
  256.      Fonction: Prépare un mod déjà en mémoire
  257.  
  258.      Entrée:   Un pointeur long sur le début du mod en mémoire.
  259.  
  260.      Sortie:   Un code d'erreur non nul si il y a eu un problème.
  261.  
  262.      Note:     Cette fonction fait exactement la même chose que la
  263.            précédente sauf qu'elle ne charge pas le MOD à partir
  264.            d'un disque. Il faut noter qu'elle alloue à nouveau de la
  265.            place mémoire pour tous les instruments ce qui fait que
  266.            le mod se trouve en fait deux fois en mémoire.  Mais
  267.            vous pouvez réutiliser cette place.
  268.  
  269.  
  270.   OLOADMOD
  271.  
  272.      Fonction: Charge un mod ajouter à la fin du programme executable
  273.  
  274.      Entrée:   Un entier long (32 bits) donnant la position du début du
  275.            mod.
  276.  
  277.      Sortie:   Un code d'erreur non nul si il y a eu un problème.
  278.  
  279.      Note:     Cette fonction est équivalente à FLOADMOD et comporte donc
  280.            les mêmes restrictions. Elle se contente de la position
  281.            du mod dans l'executable et se charge de retrouver son nom.
  282.  
  283.  
  284.   UNLOADMOD
  285.  
  286.      Fonction: Libère la place utilisée par MLOADMOD et FLOADMOD
  287.  
  288.      Entrée:   Rien
  289.  
  290.      Sortie:   Rien
  291.  
  292.      Note:     Cette fonction doit être appelé à la fin du programme ou
  293.            avant de recharger un nouveau MOD pour rendre au DOS la
  294.            place mémoire prise par les instruments.
  295.  
  296.  
  297.   SETMOD
  298.  
  299.      Fonction: Définit la carte sonore et la fréquence utilisée
  300.  
  301.      Entrée:   Dans l'ordre du pascal il faut donner la fréquence de
  302.            mixage en centaines de hertz sur 16 bits, le numero de la
  303.            carte sonore sur 8 bits, le port utilisé par la carte sur
  304.            16 bits puis l'irq utilisée sur 8 bits.
  305.  
  306.      Sortie:   Un code d'erreur non nul s'il y a un problème.
  307.  
  308.      Note:     Les numéros de cartes sonores reconnus pour le moment
  309.            sont les suivants:
  310.          0=aucun son
  311.          1=haut parleur interne
  312.          2=DAC sur un port parallèle
  313.          3=soundblaster
  314.          4=GUS
  315.            Pour le DAC le port ne correspond pas à une adresse
  316.            mais au numéro du port parallèle sur lequel il
  317.            est connecté (1 à 4).
  318.            Si on passe 0 comme paramètre en fréquence, la
  319.            routine choisit une fréquence par défaut de
  320.            18.6kHz.
  321.            Toutes les cartes n'utilisent pas forcément tous les
  322.            paramètres.  La GUS n'utilise pas la fréquence et
  323.            joue toujours le mod à 44kHz. Seule la soundblaster utilise
  324.            l'irq donnée qui doit être inférieure ou égale à 7 de
  325.            plus, elle utilise toujours le canal DMA 1. Pour la GUS
  326.            il faut noter que c'est dans cette fonction que les
  327.            instruments sont chargés dans sa mémoire mais il reste en
  328.            mémoire centrale.
  329.  
  330.  
  331.   STARTMOD
  332.  
  333.      Fonction: Commence la musique
  334.  
  335.      Entrée:   Rien
  336.  
  337.      Sortie:   Rien
  338.  
  339.      Note:     Cette fonction masque toutes les interruptions sauf celle
  340.            du clavier et de l'horloge mais comme celle de l'horloge
  341.            est prise en charge par toutes les cartes sonores
  342.            execepté la soundblaster, il est préférable de ne plus
  343.            l'utiliser. A partir de ce moment il faut éviter toutes
  344.            les fonctions qui masquent les interruptions sous peine
  345.            de dégrader considérablement la musique.
  346.  
  347.  
  348.   MAKEMOD
  349.  
  350.      Fonction: Calcule 1/50s de musique
  351.  
  352.      Entrée:   Rien
  353.  
  354.      Sortie:   Rien
  355.  
  356.      Note:     Il faut appeler OBLIGATOIREMENT cette fonction dans la
  357.            boucle principale de votre programme. Avant de remplir le
  358.            buffer cette fonction teste si il n'est pas déjà plein
  359.            donc vous pouvez et c'est même recommandé, appeler cette
  360.            fonction plusieurs fois dans votre boucle principale. De
  361.            plus, si pendant un tour de boucle vous avez peu de temps
  362.            libre vous pouvez vous permettre de ne pas appeler cette
  363.            fonction. Le buffer utilisé a une longeur de 2Ko.
  364.  
  365.  
  366.   STOPMOD
  367.  
  368.      Fonction: Arrête la musique
  369.  
  370.      Entrée:   Rien
  371.  
  372.      Sortie:   Rien
  373.  
  374.      Note:     Cette fonction vous permet d'arrêter définitivement la
  375.            musique ou de pouvoir faire une pause si vous rappeler
  376.            STARTMOD par la suite. Elle remet les interruptions dans
  377.            leur état intial. Il peut y avoir quelques problèmes, en
  378.            particulier avec la soundblaster, si vous faites des
  379.            pauses.
  380.  
  381.  
  382.   DETECTSND
  383.  
  384.      Fonction: Détecte les cartes sonores installées en recherchant dans
  385.            les variables d'environnement.
  386.  
  387.      Entrée:   Dans l'ordre et toujours sous forme de pointeur long,
  388.            l'adresse d'un octet pour la carte sonore,d'un mot pour
  389.            le port,d'un octet pour l'irq et d'un octet pour le DMA.
  390.  
  391.      Sortie:   Rien
  392.  
  393.      Note:     Si vous placez des valeurs non nulles dans ces variables,
  394.            cette routine ne les changera pas, vous pouvez ainsi
  395.            forcer la routine à détecter la configuration d'une carte
  396.            précise. Si vous mettez 5 comme numéro de carte sonore,
  397.            le programme cherchera la carte avec le numéro le plus
  398.            élevé. Si le programme ne trouve aucune carte il mettra
  399.            1 (Haut parleur interne).  Pour le DAC le programme
  400.            rechercher la variable d'environnement DAC=numero du
  401.            port (1 à 4).
  402.  
  403.  
  404.   CHANGEVOL
  405.  
  406.      Fonction: Fixe le volume global.
  407.  
  408.      Entrée:   Un octet pour le volume (0 à 255).
  409.  
  410.      Sortie:   Rien
  411.  
  412.      Note:     Change simplement le volume global de la musique. Mais ce
  413.            changement n'est pas instantané, il y a un delai variable
  414.            suivant la fréquence de mixage autour de 250ms.
  415.  
  416.  
  417.  
  418.  VI - Questions souvent posées │
  419. ───────────────────────────────┘
  420.  
  421.   Comment accéder aux variables des routines jouant les MOD pour par
  422.     exemple afficher le numéro du pattern en cours ?
  423.  
  424.   > Pour rester le plus simple possible je n'ai documenté que les
  425.     fonctions indispensables du module jouant les MOD et l'unité pascal
  426.     ne contient que ces fonctions. Mais il y a d'autres symboles
  427.     publics dans ce module et je les utilise dans mon player. Vous
  428.     pouvez donc regarder dans CRYS26.ASM les différents symboles
  429.     accesibles et voir comment les utiliser dans STINTER.ASM.
  430.  
  431.  
  432.   Pourquoi le son est-il moins bon qu'avec les autres players de MOD ?
  433.  
  434.   > Il y peut y avoir jusqu'à trois raisons à ceci. La première est
  435.     que dans un souci de rapidité, je mélange les samples des
  436.     différentes voies sur 8 bits alors que la majorité des players le
  437.     fait sur 16 bits. La deuxième est que je n'utilise pas forcément
  438.     une carte sonore à fond, par exemple si vous avez une soundblaster
  439.     pro je l'utiliserai comme une soundblaster simple sans utiliser
  440.     la stereo. Enfin la dernière est que par défaut la fréquence de
  441.     mixage est commune à toutes les cartes sonores. Elle est au maximum
  442.     pour garder un son de bonne qualité avec le haut parleur interne:
  443.     18,6Khz. Or, pour une soundblaster vous pouvez monter jusqu'a 22Khz
  444.     en utilisant /FR avec le player ou en passant une fréquence non
  445.     nulle à SETMOD.
  446.  
  447.  
  448.   Pourquoi ne puis-je pas tester mon programme dans l'environnement
  449.   intégré du pascal ?
  450.  
  451.   > Il faut bien voir que pour arriver à jouer de la musique sur un PC
  452.   je suis obligé de faire des trucs particuliers comme détourner des
  453.   interruptions matérielles. Et cela n'est pas facilement accepté par
  454.   les autres programmes.
  455.  
  456.  
  457.   Pourquoi le player marche beaucoup plus lentenment avec EMM386 ?
  458.  
  459.   > C'est tout à fait normal, c'est dû au fait que quand EMM386 ou tout
  460.   autre gestionnaire de mémoire étendue est en marche, la machine n'est
  461.   plus en mode réel mais en mode virtuel 86 et dans ce mode, les
  462.   interruptions prennent beaucoup plus de temps. Comme le player les
  463.   utilise beaucoup, cela le ralenti enormément.
  464.  
  465.  
  466.   J'ai essayé de rajouter un peu de code dans l'unité pascal mais plus
  467.     rien ne marche, pourquoi ?
  468.  
  469.   > C'est normal, les routines du module jouant les MOD sont toutes dans
  470.   un même segment qui doit avoir une organisation spéciale. En
  471.   particulier, mon code doit commencer à l'adresse 0 du segment. Si vous
  472.   rajoutez du code dans l'unité, pascal va le mettre au tout début du
  473.   segment et cela va bugger. Vous pouvez par contre, rajouter des
  474.   déclarations.
  475.  
  476.  
  477.   Comment savoir si une routine s'est bien déroulée ?
  478.  
  479.   > Normalement, mes routines renvoient 0 et la retenue est effacée si
  480.   touts c'est bien passé. Dans le cas contraire, la retenue est mise et
  481.   je renvoie un code d'erreur indiqué dans CRYSTAL.INC.
  482.  
  483.  
  484.   Pourquoi je n'arrive pas à charger le module alors que j'ai le bon nom
  485.   de fichier ?
  486.  
  487.   > Il est possible que la routine n'arrive pas à réserver de la mémoire
  488.   pour charger les instruments. La routine demande cette mémoire au DOS
  489.   et il faut donc que votre programme ne ce l'ai pas entièrement
  490.   approprié. Dans un programme C,il faut utiliser par exemple le modèle
  491.   SMALL qui prend que 128Ko de mémoire au maximum. Pour un programme
  492.   pascal, il faut mettre l'option $M pour limiter la taille du tas.
  493.   Enfin si vous programmez en assembleur il faut rendre la mémoire
  494.   inutilisée par votre programme au démarrage avec la fonction 4Ah du
  495.   DOS que ce soit un programme COM ou EXE.
  496.  
  497.  
  498.   Comment mettre un module en overlay ?
  499.  
  500.   > Il faut commencer par compiler votre programme exécutable en appelant
  501.   la fonction OLOADMOD avec une valeur bidon. Puis vous regardez la taille
  502.   de votre exécutable après l'avoir éventuellement compacté et vous
  503.   recompilez votre programme en passant à OLOADMOD cette valeur. Vous pouvez
  504.   alors recompacter le résultat avant d'ajouter le module mais il faut que
  505.   la taille du programme reste la même. Enfin pour ajouter votre module il
  506.   suffit de faire, par exemple, sous DOS "copy /B programme+module".
  507.  
  508.  
  509.  VII - Historique │
  510. ──────────────────┘
  511.  
  512.   Comme je l'ai déjà dit en introduction, j'ai fait ce programme petit
  513.   bout par petit bout. Au départ, il y 3 ans, j'ai commencé à écrire
  514.   quelque chose qui marchait uniquement sur le haut parleur interne du
  515.   PC puis j'ai amélioré au fur et à mesure des demandes. Voici donc la
  516.   liste des améliorations sucessives depuis la version 1.3 qui a été la
  517.   première à avoir une documentation.
  518.  
  519.   Version 1.3
  520.  
  521.      Programme modulaire
  522.      Réglage de la vitesse de restitution
  523.      Accélération de la routine pour le PC speaker (+20%)
  524.      Correction de certains effets (portamento tone)
  525.      Amélioration de la fidélitée des notes
  526.      Tempo de la musique respecté
  527.      Correction d'un bug dans le vibrato
  528.      Meilleure documentation
  529.  
  530.   Version 1.5
  531.  
  532.      Son sound blaster
  533.      Utilise les 31 instruments
  534.  
  535.   Version 1.6
  536.  
  537.      Correction des bugs de la 1.5 !!!
  538.      Correction de l'arpeggio
  539.  
  540.   Version 1.7
  541.  
  542.      Recorrection de l'arpeggio
  543.      Correction générale des effets existants
  544.      Ajout de nouveaux effets(portamento+volume slide,vibrato+volume slide,
  545.        tempo étendus,tremolo,play end part of a sample,fine portamento up,
  546.        fine portamento down,fine volume slide up,fine volume slide down,
  547.        loop)
  548.  
  549.   Version 1.8
  550.  
  551.      Ajout d'une présentation pendant la musique(petite perte de vitesse)
  552.      Changement mineur pour le PC speaker pour améliorer la qualité de la
  553.        musique quand le PC est lent
  554.  
  555.   Version 1.9
  556.  
  557.      Amélioration de petit détail
  558.      Programmation d'une unité pascal et d'un exemple pour utiliser mes
  559.        routines
  560.      Programme d'exemple en C++ montrant l'utilisation des routines
  561.      Ajout de quelques options utiles dans la page de présentation
  562.      Légère accélération des routines(+4%)
  563.  
  564.   Version 2.0
  565.  
  566.      Accéleration générale des routines(+20%)
  567.      Ajout d'une routine pour utiliser un MOD déjà en mémoire
  568.      Correction de l'effet E6
  569.      Ajout des effets suivants:pattern delay,cut note,note delay,rettrig
  570.        sample
  571.  
  572.   Version 2.1
  573.  
  574.      Recorrection du portamento tone
  575.      Ajout d'une option sans son
  576.      Correction d'un bug lors d'un saut manuel
  577.      Amélioration du bug de la sound blaster avec la pause
  578.      Correction de l'effet 9
  579.  
  580.   Version 2.2
  581.  
  582.      Ajout du support de la GUS
  583.      Correction du bug lors d'un saut manuel avec la sound blaster
  584.      Ajout d'une fonction détectant les cartes sonores installées
  585.  
  586.   Version 2.3
  587.  
  588.      Support des MOD 8 voix
  589.      Reconnait les 8 octaves de scream tracker
  590.  
  591.   Version 2.4
  592.  
  593.      Utilisation de l'octet de fine tune
  594.      Correction d'un bug quand on change de note sans changer d'instrument
  595.      Correction d'un bug apparu avec la version 2.3 pour des fréquences
  596.        de mixage faible
  597.      Correction des exemples pascal et C qui étaient devenus faux
  598.      Reécriture de la documentation
  599.  
  600.   Version 2.5
  601.  
  602.      Amélioration de la qualitée sonore pour la GUS
  603.      Support des MOD 6 voix
  604.      Ajout d'un volume global
  605.      Chargement d'un MOD en overlay
  606.  
  607.   Future
  608.  
  609.      Support de nouvelle carte son (il me faudrait des informations
  610.        dessus et que je puisse faire des tests)
  611.      Reécriture du code (c'est par terrible pour l'instant)
  612.      Support de nouveau format (est-ce vraimment utile ?)
  613.      Support des derniers effets non utilisés ( ils ne servent quasiment
  614.        jamais)
  615.      Mixage du son sur 16 bits (cela améliorerait la qualité mais
  616.        pénaliserait la vitesse d'execution)
  617.  
  618.  
  619.  VIII - Remerciements │
  620. ──────────────────────┘
  621.  
  622.   Je tiens à remercier les personnes suivantes qui ont joué et continue
  623.   de jouer un rôle dans le développement de ce programme:
  624.  
  625.      William Petiot pour les test et les réglages pour la GUS
  626.      Stéphane Gigandet pour les nombreux tests SB et le support moral
  627.      Tchi Southivong pour les très nombreux tests avec la GUS
  628.      Stéphane Scherrer pour quelques documents sur la sound blaster
  629.      Vincent Negrier pour les tests avec la SoundBlaster
  630.      Francis Gastellu pour le nom du player
  631.      Mark Cox pour m'avoir montré que l'on pouvait jouer un MOD sur PC
  632.      Bisounours / Nuage pour la traduction anglaise de la documentation
  633.      VLA pour les informations sur le transfert DMA/DSP
  634.      CASCADA pour leur player de mod avec la GUS
  635.  
  636.  
  637.  
  638.  
  639.  IX - Contacts  │
  640. ────────────────┘
  641.  
  642.   Si vous voulez utiliser mes routines dans un programme commercial, si
  643.   vous trouvez un ou des bug(s), si vous voulez une amélioration
  644.   précise, si vous voulez des renseignements supplémentaires ou si vous
  645.   avez juste quelques remarques à me faire vous pouvez me contacter à
  646.   l'adresse suivante:
  647.  
  648.      M Sébastien Granjoux
  649.        17,rue de Paris
  650.          92190 Meudon
  651.         France
  652.  
  653.   Vous pouvez aussi me laisser un message sur un des BBS suivants qui
  654.   sont tous situés dans la région parisienne:
  655.  
  656.      Dune BBS             +33-1-47-02-25-97  24.0 Bps
  657.      Deadline BBS         +33-1-46-48-67-63  14.4 Bps
  658.               +33-1-46-44-57-96  28.8 Bps
  659.      Eden BBS             +33-1-34-15-39-67  28.8 Bps
  660.               +33-1-34-13-95-28  14.4 Bps
  661.  
  662.   J'ai aussi une adresse email mais sa validité est plus aléatoire:
  663.  
  664.      sebastien.granjoux_barnabo@sparkhq.fdn.org
  665.  
  666.  
  667.   N'hésitez pas à me contacter, je serai toujours heureux de vous
  668.   répondre et cela me donnera l'impression que je n'ai pas écrit tout
  669.   ce code pour rien.
  670.  
  671.  
  672.  X - Où trouver Crystal Player ? │
  673. ─────────────────────────────────┘
  674.  
  675.   La dernière version de Crystal Player seras normalement disponibles sur
  676.   les BBS suivants:
  677.  
  678.   - France:
  679.  
  680.      Dune BBS             +33-1-47-02-25-97  24.0 Bps
  681.      Deadline BBS         +33-1-46-48-67-63  14.4 Bps
  682.               +33-1-46-44-57-96  28.8 Bps
  683.      Eden BBS             +33-1-34-15-39-67  28.8 Bps
  684.               +33-1-34-13-95-28  14.4 Bps
  685.  
  686.   Si vous voulez aussi distribuer Crystal Player, appelez un de ces
  687.   BBS.
  688.  
  689.  
  690.                      Sébastien Granjoux le 11/01/95
  691.  
  692.  
  693.