Manuel STarKos 1.2

  • Par Targhan/Arkos
  • Distribué en Mai 2009

Présentation générale

STarKos est un tracker soundchip conventionnel, dans le sens ou l'écriture des musiques est semblable aux soundtrakkers existants sur CPC ou sur d'autres machines. Les nouveautés résident principalement dans l'éditeur de son.

Quelques features pour commencer :

  • Gère 256 positions.
  • Chaque position est composée de 3 pistes, une par voie.
  • Gere 512 pistes, chacune pouvant etre reutilisée plusieurs fois dans différentes positions OU dans une même position, pourquoi pas. Gain de mémoire !
  • Une piste a une hauteur de 0 a 127.
  • Chaque piste peut être transposée indépendemment.
  • La musique peut être transposée intégralement.
  • Chaque position a une hauteur qui lui est propre de 0 a 127, indépendament de la hauteur des pistes.
  • Gère 255 instruments différents.
  • Chaque registre PSG peut être modifié lors de la création d'instruments.
  • Chaque instrument/piste est compacté en mémoire, celle ci est reorganisée apres chaque modification, vous aurez donc normalement plein de mémoire pour vous !
  • Fréquence de replay à 13, 25, 50, 100, 150, ou 300 Hz.
  • Un support digidrum est present : il vous est possible d'entrer des notes marquées 'SPL' avec un numero de sample qui pourra etre récupéré pendant la lecture (avec le player externe). Cependant, on ne peut pas charger/écouter de samples dans l'éditeur pour le moment.

Fonctionnement global

Un STarKos tout frais Aprés avoir fait un RUN”STK”, apparait le menu principal de STarKos. La plupart des pages composant Starkos suivent la même présentation, c'est à dire, composée de 3 parties :

  • Dans la première, en haut à gauche, se trouve un menu proposant diverses options relatives à la page.
  • Au milieu et jusqu'en bas se trouve la fenêtre principale, celle où se trouvent les données de la musique.
  • Et une troisième partie en haut à droite avec encore quelques infos.

Vous pouvez passer d'une partie à une autre avec la touche TAB.
ESC vous fait revenir à la 1ère partie.

Avec les touches du curseur, déplacez celui ci, utilisez ENTER, ESPACE ou COPY pour sélectionner ce qui vous intéresse.

Chaque nombre sur lequel vous vous placez peut être modifié, soit en tapant un nouveau nombre (annulation avec ESC), soit en incrémentant/décrémentant celui-ci avec les flèches gauche/droite, combinées avec SHIFT et/ou CONTROL, afin de faire varier la vitesse de défilement. Chaque nombre possède un intervalle min/max, et chacune de vos entrées est corrigée en fonction de cet intervalle.

Notez que certains nombres sont signés, donc vous devrez utiliser la touche '-' de votre clavier si vous voulez entrer à la main votre nombre. Enfin, précisons que tous les nombres utilisent la notation hexadecimale, je ne commettrais pas l'injure de vous expliquer son fonctionnement.

Vous pouvez accéder à tout moment (ou presque) aux écrans composants STarKos. Pour cela, utilisez les touches suivantes :

  • CTRL+F1 = LINKER de TRACKS
  • CTRL+F2 = PATTERNS EDITOR
  • CTRL+F3 = INSTRUMENTS EDITOR

Voici également quelques touches qui vous seront utiles :

  • F7/F4 = Incrémente/décrémente position
  • F8/F5 = Incrémente/décrémente instrument
  • F9/F6 = Incrémente/décrémente octave

Lexique

Bien que STarKos fonctionne comme beaucoup de trackers, il existe quelques variantes que je vais enoncer ici. Un peu de vocabulaire s'impose :

TRACK

Une TRACK (piste) constitue la base de vos compositions.

Vous allez entrer vos notes dans des TRACKS. Chaque track possede une hauteur qui va de 0 a 127, et il en existe au maximum 512. Une track est identifiee par son numero.

PATTERN

Une PATTERN est composee de 3 TRACKS, chacune jouee sur un canal du PSG.

Il est impossible de jouer une track seule, celle-ci doit etre incluse a une pattern. Il existe 256 patterns disponibles, chacune d'elle ayant une hauteur de 0 a 127. Si les tracks qu'elle possede sont plus grandes que la pattern, alors elles seront tronquees DANS LA PATTERN UNIQUEMENT, ce qui signifie que les donnees 'debordantes' ne sont pas du tout effacees de la memoire, elles ne sont pas utilisees a ce moment, tout simplement. Il est donc possible d'utiliser la moitie d'une track dans une pattern, et d'en utiliser la totalite dans une autre. A l'inverse, une pattern peut etre plus grande que les tracks qu'elle possede. Cela ne pose pas de probleme, il y aura du vide a la fin de votre track.

Notons qu'il est possible d'utiliser la meme track 2 ou 3 fois dans une meme pattern.

Le fait que les TRACKS soient independantes des PATTERNS permet un gain de memoire considerable, il est ainsi possible de reutiliser les memes TRACKS au cours de la musique.

POSITIONS

Les POSITIONS representent la maniere avec laquelle les PATTERNS vont etre jouees.

Considerez les positions comme les maillons d'une chaine. A chaque maillon va correspondre un numero de pattern. Lorsque vous jouez votre musique integralement, c'est la position 0 qui est jouee en 1ere. Lorsque la pattern a laquelle elle est liee est finie, on passe a la position 1, etc… Il existe 256 positions maximum, mais votre musique en fera generalement beaucoup moins que ca. Le systeme de position permet au musicien de jouer plusieurs fois les memes patterns la ou bon lui semble, sans avoir besoin de faire la copie de ces patterns.

INSTRUMENTS

Vous savez ce que representent les INSTRUMENTS, donc je ne m'etendrais pas longtemps. Vous disposez de 255 instruments, numerotes de 1 a 256.

SPECIAL TRACKS

Les SPECIAL TRACKS constituent une nouveaute. Elles permettent de placer des digidrums, ainsi que de modifier la vitesse de la musique. Chaque pattern dispose d'une Special Track, en plus des 3 tracks deja presentes. Vous disposez de 256 speciales tracks.

Les différents écrans

Une fois que STarKos est chargé, apparait le 1er ecran :

Le linker de track

Linker de track (CTRL+F1) Comme le titre l'indique, cet ecran permet de lier les differentes tracks entre elles.

  • Accedez au milieu de l'ecran en pressant TAB.
  • Ici utilisez les fleches pour vous balader et modifier les valeurs.
  • Vous pouvez utiliser SHIFT et/ou CONTROL avec haut/bas pour vous deplacer plus rapidement.

Differentes colonnes titillent votre cortex occulaire :

NOPOS

Position. La position 0 est la 1ere jouee de la zic.

TRACK1/2/3

Indique quelle track est jouee dans cette position, et sur quelle canal sonore.

TRANSP1/2/3

Indique quel degre de transposition est attribue a la track de ce canal, a cette position. Dans la tres grande majorite des cas, il est a 0.

HEIGHT

Hauteur de la position, de 0 a #7f, ce qui permet de definir une hauteur de 1 lignes a 128.

SPECIAL TRACK

Numero de la special track pour cette position.

Comme votre cortex sus-cite l'aura remarque, certains NOPOS sont en blanc, d'autres en bleu. Sachez que seules les positions en blanc seront jouees, car elles seules font parti de l'intervalle de la musique a jouer, de 0 a ENDPOS.
Pour modifier cette valeur, 2 methodes : Vous pouvez appuyer sur TAB pour modifier la valeur dans le menu en haut a droite.

Vous pouvez aussi utiliser les raccourcis claviers dans la partie du milieu :

  • RETURN pour definir ENDPOS.
  • ESPACE pour definir LOOPTO.

Les valeurs sont definies en fonction de la position de votre curseur, cela s'entend. Notez egalement que chaque deplacement entraine le raffraichissement de NOPOS. De meme, sachez que LOOPTO est toujours egal ou inferieur a ENDPOS, ce qui est logique.

Revenons-en au menu en haut a gauche. Nous reviendrons plus tard sur 'DISC' et 'MISC', mais en selectionnant 'SONG INFO' (ou en appuyant 2 fois sur TAB), vous passez sur les infos a droite. Voici a quoi elles correspondent :

SONG POS

La position actuelle. C'est la pattern relative a cette position que vous allez editer (si vous allez dans l'editeur de pattern). C'est aussi d'ici que sera jouee la musique si vous choisissez PLAY SONG.

END POS

Derniere position utilisee par la musique. Defini la fin de la musique, quoi.

LOOP TO

Quand la musique est finie, celle ci boucle sur la position definie par LOOP TO.
En general, LOOPTO=0 pour faire recommencer la musique depuis le debut.

INSTR

Numero de l'instrument actuel. C'est l'instrument avec lequel vous pouvez faire mumusse (voir plus loin), c'est egalement celui qui sera entre dans les tracks. Biensur, vous pouvez le modifier a tout moment.

BEG SPD

Vitesse de la musique lorsqu'on la joue depuis le debut grace a PLAY SONG.

REP FRQ

Replay Frequency. Frequence de la musique. Differentes valeurs, 13,25,50,100,150 et 300Hz. De quoi vous amuser pendant plusieurs decennies.

Attention, les frequences les plus elevees ralentissent considerablement le logiciel.\\50Hz est la frequence la plus utilisee. Attention, modifier cette frequence change egalement la vitesse d'execution de la musique ! Il etait prevu que le player compense lui meme la vitesse, mais certaines personnes n'ont pas voulu, car cela n'aurait pas permis d'obtenir un spectre de vitesse plus large.

OCTAVE

Octave utilisee lorsque vous jouez un son ou entrez vos notes.

FREE MEM

Memoire encore disponible. STarKos gere la memoire de maniere dynamique et optimise au maximum les donnees. Quand cette valeur est a 0, l'ecran devient rouge et la derniere action effectuee n'est pas prise en compte. Il est grandement conseille de ne JAMAIS sauvegarder votre musique si cela devait se produire.

Disc Operation

Opérations disques Ce menu vous permet de charger/sauver vos instruments/musiques.

Tout fichier genere avec Starkos est sauve au format ASCII. Les acces disc seront donc plus lents, mais cela est absolument necessaire, les donnees n'etant pas ranges lineairement en memoire. De plus, la gestion de l'AMSDOS en ce qui concerne ces types de fichier est un peu limitee : elle ne permet pas la detection precise d'erreurs de lecture/ecriture. En cas d'erreur cependant, il vous sera tout de meme possible de faire un RETRY ou un CANCEL.

Les fichiers Starkos ont pour extension :

  • SKS pour les SONGS.
  • SKI pour les INSTRUMENTS.

Voici ce que l'on vous propose :

GETDIR

lis le catalogue, retourne le nombre de kilobytes encore disponibles sur le disc, ainsi que le nombre de SONGS et INSTRS s'y trouvant. Les options de chargement sont desactivees si aucun fichier n'est a lire, ce qui est logique.

DRIVE A/B

Vous permet de passer d'un lecteur a un autre, si vous etes assez chanceux pour en avoir deux biensur.

LOAD SONG

Charge une musique (fichier SKS). Une petite liste vous permet de choisir celle qui vous interesse. Attention ! A partir du moment ou le chargement est entame, l'ancienne musique est totalement effacee de la memoire !

Une musique chargee est entierement optimisee a la base, donc il est inutile de l'optimiser une fois chargee.

SAVE SONG

Sauve votre musique (fichier SKS). Le nom du fichier correspond a celui donne dans le menu LINKER de PATTERN.

LOAD INST

Charge un instrument (fichier SKI). Une fois celui en memoire, vous devrez choisir ou le placer parmi les 256 disponibles. Notez qu'un instrument mal charge est automatiquement efface de la memoire.

SAVE INST

Sauve l'instrument desire (fichier SKI). Le nom du fichier est celui de l'instrument.

ERASE

Efface un fichier, a choisir dans une liste. Les fichiers crees par STarKos sont affiches en blanc, pour vous eviter d'effacer n'importe quoi.

Pressez ESC pour sortir de ce menu.

Miscellaneous

MISCELLANEOUS

Ce menu comporte les options diverses, variees et sympathiques, a propos du logiciel ou de votre musique.

OPTIMIZE

Permet d'optimiser au maximum votre musique. Si vous commencez a vous sentir a l'etroit, essayez donc d'optimiser. Attention, comme tout est ecrase en memoire, ca risque de ralentir un peu plus.

OPT LEV

Optimization Level. Donne le degre d'optimisation.

  • MAX : Des qu'une pattern/instrument est creee ou modifiee, seule la place necessaire est allouee.
    Ce procede fait ralentir un peu le logiciel (et bcp si votre musique est enorme).
  • NORMAL : Quand l'instrument/pattern devient plus petit, la memoire n'est pas reorganisee. Ainsi, l'execution est plus rapide.

CLEAR

permet d'effacer les PATTERNS, les INSTRUMENTS ou les deux. Attention, l'effacement est definitif, alors gare !

TRANSP

Defini le degre de transposition de la musique. TOUT est transpose, sans que vos partitions soient affectees cependant. Meme les notes jouees au clavier sont transposees ! Comme cet 'effet' ne modifie finalement rien dans la musique, n'hesitez pas a en abuser et faire plusieurs essais pour trouver la note d'origine qui vous convient le mieux.

AUTHOR

Vous permet de signer votre musique. Cette donnee est sauvee dans le fichier SKS, mais attention, pas dans le fichier compile !

COMMENTS

Vous permet de glisser un commentaire de 32 caracteres dans votre musique. Meme remarque que precedemment.

ABOUT

Donne quelques infos sur Starkos et sur son createur (en l'occurrence, moi).

SPLS CHAN

Defini sur quel canal doivent etre joues les samples entres dans les Special Tracks. Cette option est purement esthetique sous le logiciel pour le moment, puisque les samples ne sont pas encore joues. Cependant, cette valeur est sauvee et peut etre recuperee si vous utilisez le player externe : il est donc possible de jouer une musique avec sample selon les volontes de son auteur.

HIGHLIGHT

Nouveauté depuis STarKos 1.2, vous permets de mettre en valeur certaines lignes de l'éditeur de pattern. Vous pouvez “illuminer” toutes les X lignes, avec X allant de 3 à 8. En mettant 0, vous annulez le Highlight.

COLORS

Vous permet de changer la palette de couleurs.

Pressez ESC pour sortir de ce menu.

Passons maintenant aux choses serieuses :

L'éditeur d'instruments

Editeur d'instruments (CTRL+F3) Voila la 1ere partie vraiment interessante de cette notice.

C'est ici que vous allez creer vos instruments. Le menu en haut a gauche vous permet de copier vos instruments, ou alors de les detruire.

Un instrument STarKos est bati sur une liste de variables, forte de 256 lignes maximum. Les variables relatives a chaque ligne seront detailles plus bas.

Sachez que vous possedez 2 possibilites pour creer vos sons. La 1ere, la plus complexe mais aussi la plus puissante, est d'utiliser la liste de ligne. La 2e, l'éditeur d'instrument alternatif, est graphique comme celle du Sountrakker de BSC. Vous pouvez y acceder en pressant ENTER.

Mais pour le moment, restons en a la 1ere.

En haut a droite vous trouvez les variables suivantes :

NO INSTR

Numero de l'instrument actuel, c'est a dire celui que vous etes en train d'editer.

INSTR END

Hauteur de l'instrument. Correspond plus precisement au numero de la derniere ligne utilisee.

INSTR LOOP

Numero de la ligne ou bouclera l'instrument quand sa fin aura ete atteinte. Inferieur ou egal a INSTR END, hein.

LOOP?

Booleen definissant si oui ou non, le son doit boucler quand sa fin aura ete atteinte. INSTR LOOP est donc inutile si LOOP? est a 0. Un son qui ne boucle pas n'emet plus de son a la fin.

RETRIG?

Petit booleen pratique permettant de ressetter le registre 13 du PSG au tout debut du son. Cela evite d'avoir a creer une ligne speciale pour ca.

SPEED

Valeur definissant la duree (multiple de la REPLAY FREQ) qui separe le 'jouage' de deux lignes de l'instrument. '0' signifie qu'une nouvelle ligne est jouee tous les 50hz (si votre frequence de 'jouage' est de 50Hz). Pratique pour jouer un son tres lent sans avoir a repeter les lignes, cela economise beaucoup de temps, et de memoire.

OCTAVE

Octave, quoi. (ngGrim: sinon vous avez aussi Mr et Mme Vergébel ont un fils :)

CLIPBOARD

Vous ne pouvez pas y acceder directement. La valeur indique ou se trouve le pointeur sur le clipboard. Celui-ci vous permet de stocker des lignes d'instruments vers la memoire, en vue de les recopier ailleurs ensuite. Details dans la partie PATTERN EDITOR.

En appuyant sur TAB, vous passez dans l'edition de l'instrument proprement dite.

La gestion du curseur est exactement la meme que pour le LINKER de PATTERNS.
ENTER/ESPACE pour definir le END/LOOP.
Control+ESPACE pour faire switcher LOOP?.
Notez que si vous definissez LOOP, LOOP? se met automatiquement a 1.

Voyons les colonnes :

SND

Dit si le PSG doit creer une onde sonore. Si vous mettez 0, vous ne pourrez plus faire de melodie, mais vous pourrez toujours utiliser les sons HARD, ainsi que le NOISE.

VOL

Precise le volume, de 0 a F. Notons que le volume est annule si un son HARD est enclenche. De meme, un son non hard avec un volume a 0 annule toute la ligne, puisque rien ne pourra etre entendu.

NOISE

Valeur de bruit blanc, de 0 a 1F, plutot utilise pour les percussions.
N'est pas lie a SND, mais necessite cependant un volume superieur a 0, ou un son hard enclenche.

ARP

valeur d'arpeggios. Cette valeur (signee, de -#5F a #5F) est ajoutee a votre note de base (donnee par vos tracks, ou votre clavier). Entrez 0,3,7 sur 3 lignes pour obtenir un accord mineur.

PITCH

valeur ajoutee a la frequence finale. Communement utilisee pour faire des pitch bends, ou des vibratos. Valeur comprise entre -#FFF et #FFF.

HARD

Defini si une enveloppe HARD doit etre utilisee. 0 si non, 1,2,3 ou 4 si oui. 1 correspond a une courbe en dent de scie, 3 a sa symetrique. 2 a une courbe en 'montagne', 4 a sa symetrique. N'oublions pas que le PSG ne peut gerer qu'une courbe hard, donc attribuer un son hard a plusieurs canaux entraine generalement un son tres disgracieux (mais y'a toujours des malins pour en tirer quek'chose (ngGrim: suffit d'écouter des musiques tekno de ZX Spectrum où cette astuce est utilisée et souvent abusée)).

SOUND FRQ

Frequence du son. En mode Auto (=0 en fait), la frequence de votre son depend de la note jouee en ce moment dans votre partition (ou la note entree au clavier). En entrant une valeur (de 0 a #FFF), vous forcez vous meme la frequence. Cela peut etre utile pour creer des sons un peu bizarre, ou pour ajouter/faire preceder des effets (ou des percussions) au reste du son.

HARD FRQ

meme chose, mais pour l'enveloppe HARD. Notons que si le mode AUTO (=0) n'est plus utilise, SHIFT ne sert plus a rien et est donc annule. Valeur de 0 a #FFFF.

SHIFT

Interessant, celui la. Donne le rapport entre la FREQ HARD et la FREQ du son (qu'elle soit forcee ou non). Suivez l'equation suivante : HARD FREQ = SND FREQ/(2 puissance SHIFT). Valeur generalement utilisee : 4 ou 5 pour des basses bien sympa. Intervalle : de 0 a 7.

INITWAVE

Permet de forcer la mise a 1 du registre 13. Lorsque cela se produit, l'enveloppe hard est recommencee depuis le debut. Attention, ne pas mettre un INITWAVE en boucle, ca fait pas beau.

HARDSYNC

Une idee venue de trackers ST. Permet de parfaitement synchroniser le son normal avec une basse hard si a 1. Effectivement, lorsque la formule precedement citee est utilisee, il y a une approximation, ce qui peut entrainer une desynchronisation entre les deux courbes (celle du son 'normal', et celle du son 'hard'). Cela se traduit par un son 'mwwwwaaiii' (ngGrim: ôh! il fait bien le mwwaaaiii hein? :) si particulier des basses hard :).

Lorsque HARDSYNC est a 1, on s'arrange pour corriger la frequence du son normal pour se retrouver avec un multiple EXACT de la freq du son hard. Ainsi, plus de desynchro ! Le probleme, c'est que les frequences sont encore plus arrondies, d'ou quelques fausses notes. Cet effet n'est vraiment utile que pour les sons graves, apres, ca devient inutilisable tant les frequences sont approximatives.

FINETUNE

Lorsque HARDSYNC est activee, et bien FINETUNE l'est aussi. Elle permet de generer un decalage entre la freq du son normal et celle du son hard. Ainsi, vous pouvez creer et maitriser vos propres 'mwwwwaiii'. Quelle chance :)
Valeur comprise entre 0 et &FF.

Comme vous pouvez le constater, la colonne 'NO POS' possede des valeurs en blanc (1 seule quand l'instrument est vide), d'autres bleues. Cela signifie simplement que seules celles en blanc sont incluses dans l'intervalle du son qui sera joue. Pour augmenter cet intervalle, il suffit d'augmenter le parametre END.

Il existe des fonctions d'insertion/effacement d'une ligne, grace a F0 et 'F.'. Cela concerne une ligne complete. Mais il vous est aussi possible d'inserer une colonne uniquement, en appuyant sur CONTROL en meme temps. Attention, cette derniere option ne prend en compte que l'intervalle defini entre votre curseur et le END de l'instrument, contrairement a l'insertion 'brute' qui decale tout l'instrument a partir du curseur.

Des que vous quittez un instrument (en changeant d'ecran, ou d'instrument), celui-ci sera automatiquement optimise en memoire ! Cela signifie que certaines valeurs seront modifiees toutes seules, et que les lignes qui ne sont pas incluses a l'intervalle joue seront detruites.

Editeur d'instrument alternatif

Editeur d'instruments alternatif (ENTER)

Comme je vous l'ai dit plus haut, il existe un 2e editeur de son, graphique mais aussi moins complexe. Il vous servira cependant a creer des courbes de volumes et de noise facilement.

Appuyez sur ENTER pour switcher entre les 2 editeurs.

Oh, que c'est joli ! En pressant TAB, vous passez dans la partie principale. Le 1er graphique concerne le volume, le 2e, le noise. Vous passez de l'un a l'autre en pressant TAB.

Le curseur vous permet d'avancer, haut et bas de modifier les valeurs.

Quelques explications :
Les barres peuvent etre bleus clair ou bleus fonce, combinees a un tramage ou non. Voila a quoi cela correspond :

  • Bleu clair : Cette colonne sera jouee, pas de probleme.
  • Bleu fonce : Cette colonne ne sera pas jouee, car elle se situe au dela de END.
  • Trame : Ne sera pas jouee car soit le SND n'est pas a 1 (donc, le volume n'a aucune incidence sur le son), soit un son HARD est enclenche, ce qui annule systematiquement le volume. Pour virer cette trame, modifiez ces flags dans l'editeur normal (2e possibilite, plus simple, voir plus bas)
  • Pas trame : Pas de prb, la barre sera jouee, sauf si elle est bleu foncee.

Par soucis de simplicite, des que vous modifiez une barre, le SND se place automatiquement a 1. Ainsi, vous n'avez pas besoin de l'editeur 'en ligne' pour creer des sons simples. Attention cependant, le SND ne passe pas a 1 si HARD est a 1 aussi.

les volumes qui sont trames ou en bleu fonce seront elimines lors de l'optimisation, car ils n'ont aucune incidence sur le son !

Utilisez les raccourcis clavier pour modifier les END, LOOPTO et LOOP? sans avoir a passer par le menu en haut a droite.

Notons pour finir qu'il est encore possible d'inserer des colonnes avec 'f0' et '.', mais que cela correspond a une insertion d'une colonne dans l'editeur 'en ligne' ! Ainsi, seules vos courbes de volume/noise sont decalees, le reste ne bouge pas. Tout comme precedemment, seul l'intervalle defini par votre curseur et le END est decale.

Maintenant que vous avez un super son, apprenons a en jouer !

Jouer un son

Il est possible de jouer le son actuel dans chaque menu des parties principales (celui en haut a gauche). Pour cela, il suffit d'utiliser le clavier comme pour n'importe quel sountrakker bien foutu (je parle pas de l'AMC, ca c'est clair ;).

 2 3 4 5 6 7 8 ...
A Z E R T Y U I...     --> Octave actuelle +1

 S D F G H J K ...
W X C V B N ...        --> Octave actuelle

Il est egalement possible de jouer le son actuel pendant son edition (dans la fenetre principale de l'edition des instruments), en pressant une des touches comme precedement, tout en pressant la touche CONTROL. Attention, modifier les donnees du son pendant qu'un son est joue ne prend PAS en compte ces changements ! Il faut reenclencher le son pour que ceux ci soient pris en compte.

Maintenant que vous avez les armes pour ridiculiser Madmax et les freres Follins, passons si vous le voulez bien, au gros morceau (mais egalement le plus simple a expliquer) :

L'éditeur de patterns

Editeur de pattern

Le menu en haut a gauche n'a rien d'exceptionnel :

  • PLAYPATT : pour jouer la pattern actuelle.
  • PLAYSONG : pour jouer la musique a partir de la position actuelle. Notez que si vous jouez votre song a partir de la position 0, SPEED prend comme valeur BEG SPD, ce qui est logique.
  • INFO : pour passer dans la partie en haut a droite de l'ecran, ou vous trouverez quelques infos que vous connaissez deja.

En appuyant sur TAB, vous passez a la partie edition de pattern en elle meme.

Vous pouvez y voir les 3 tracks, ainsi que la special track, plus petite. Chacune des 3 tracks est composee de colonnes, dont voici la description :

KEY

Note et octave a jouer. Exemple : C-1, D#4.

INSTR

Instrument a jouer, de 1 a #ff. Accompagne obligatoirement une KEY.

VOL

Volume de la note, de 0 (inaudible) a #F (max).

PITCH

Permet de faire des portamento up/down. Le nombre est signe, de -#7f a #7f.

  • INSTR et KEY sont lies : il ne peut y avoir l'un sans l'autre.
  • Le VOLUME n'est pas associe aux notes, cela vous permet de modifier le volume n'importe ou.
  • PITCH est de meme independant, vous pouvez le placer ou bon vous semble.

Notons que vous pouvez placer un 'RST', soit un reset, en pressant CLR. Ce RST coupe le son du canal. Attention, ce qui se trouve sur le reste de la ligne est ignore, et sera efface lors de la mise en memoire de la track.

Vous pouvez egalement placer vos digidrums dans les tracks 'normales' en pressant '-'. Le numero du sample est defini par l'instrument actuel (maximum = &3F). Attention, le reste de la ligne sera detruit lors du compactage.

Lorsque la musique est jouee, un petit raster bleu en bas de l'ecran vous indiquera qu'un digidrum est joue. Attention, plus la frequence de la musique est elevee, et plus cet indicateur devient approximatif ! En effet, pour une musique a 300hz, rien n'indique s'il y a eut 1 ou 6 digidrums dans la VBL

La special track vous permet de placer des changements de SPEED, ainsi que de placer des digidrums (pour le moment, ceux ci ne sont pas joues). Vous pouvez placer un 'S' (Speed) ou 'D' (Digidrum), suivi de la nouvelle valeur de SPEED ou du numero du Digidrum.

Mais alors, vous direz vous, pourquoi donner deux possibilites pour placer les digidrums, dans les tracks ou les special tracks ? Eh bien le comportement est different. Un digidrum place dans les tracks va couper la track, comme s'il s'agissait d'un son conventionnel. En revanche, les drums places dans la special tracks ne couperont la track (designee par l'option SPC CHAN dans le menu MISC) uniquement pendant la duree exacte du sample. A la fin de celui-ci, la track reprend ses droits.

Autre possibilites, deux petits switchs :

  • CYCLE vous permet de revenir a l'autre extremite de la pattern quand vous franchissez celle opposee. La touche $ vous permet de (re)setter cette option, un petit logo en bas vous indique si elle est activee ou non.
  • BEYOND, que vous switchez en pressant Shift + $, vous permet de voir ce qui se situe 'en dehors' de la limite que vous avez imposee a la pattern. Sachez que si votre pattern fait &7f de haut, et que vous la rameniez a &1f par exemple, et bien ce qui est 'hors limite' n'est pas efface. BEYOND vous permet de vous balader jusqu'a la limite physique de la pattern, soit jusqu'a &7f. Lorsque l'option est activee, les numeros de lignes (NO LINE) deviennent blancs si vous etes dans les limites que vous avez definies, et bleus si vous etes 'au dela', beyond, quoi.

Clipboards

Parlons maintenant des clipboards. Il en existe 2 rien que pour l'edition de pattern. Ils fonctionnent exactement comme ceux du soundtrakker de BSC, avec une option en plus.

Le premier clipboard vous permet de sauver une track entiere. Notez que si vous copiez ('copier' dans le sens copier/coller) une SPECIAL TRACK, il vous est logiquement impossible de la coller sur une TRACK, et inversement.

  • SHIFT+1 : Copie une track en memoire
  • SHIFT+2 : Coupe une track
  • SHIFT+3 : Colle une track

Une nouveaute a ce niveau : Si vous utilisez CONTROL au lieu de SHIFT lors d'un collage, et bien vous ne collerez que les notes, et pas les vides ! Ainsi vous n'ecraserez que les notes necessaires. Pratique pour mixer 2 tracks/patterns en une seule.

Le 2e clipboard vous permet de prendre des notes d'une track une a une, de les empiler en memoire, puis de les recoller une a une ou bon vous semble.

  • SHIFT+7 : Copie une note en memoire
  • SHIFT+8 : Colle une note dans une track
  • SHIFT+0 : Reviens au debut du clipboard

Il est important de noter que si vous empilez un note d'une track, vous ne pouvez plus coller de notes provenant d'une special track. Pour cela, vous devez d'abord revenir au debut du clipboard et y inserer une note de special track. L'inverse est egalement vrai.

De meme, revenir au debut du clipboard place une limite a la derniere position du clipboard precedement atteinte. Cette limite peut etre redefinies en copiant d'autres elements dans le clipboard.

Bon, et bien je crois que nous avons fait le tour de cette partie. C'etait bien, non ?

Racourcis clavier

Général

TAB

Passe d'une partie de l'ecran a une autre

ESC

Reviens au menu de la page

ESPACE/RETURN/COPY

Selectionner

SHIFT et/ou CONTROL + gauche/droite

Incremente/decremente valeur

CONTROL+F1

Aller a LINKER de PISTES

CONTROL+F2

Aller a PATTERNS EDITOR

CONTROL+F3

Aller a INSTRUMENTS EDITOR

F7/F4

Incremente/Decremente la position actuelle

F8/F5

Incremente/Decremente l'instrument actuel

F9/F6

Incremente/Decremente l'octave

1/2/3

Coupe/active le canal 1/2/3 (edition pattern seulement)

SHIFT/CONTROL + Selection sur PLAYSONG

joue la musique depuis le debut.

Linker de tracks

ESPACE

Defini LOOP TO

CONTROL + ESPACE

Switch LOOP?

RETURN

Defini ENDPOS

U

Trouve une track unique et non utilisée

F0/.

Insert (copie ligne actuelle)/Efface une ligne

CLR

Switch entre STEP 0/1

#

Switch STEP 0/1

Q

Inverse signe de la transposition

Editeur d'instruments

ESPACE

Defini LOOP TO

CONTROL + ESPACE

Switch LOOP?

RETURN

Defini ENDPOS

ENTER

Passe sur l'éditeur d'instruments graphique

#

Switch STEP 0/1

Q

Inverse signe de la valeur si celle ci est signee

-

Remplit le reste de la colonne avec le motif qui
apparait au dessus (TRES PRATIQUE !)

DEL

Valeur actuelle mise a 0.

DEL + SHIFT/CONTROL

Efface ligne

COPY

Copie la valeur actuelle sur la ligne suivante (PRATIQUE !)

F0/.

Insert/Efface une ligne, la nouvelle ligne = precedente

SHIFT + F0/.

Insert/Efface une ligne, la nouvelle ligne = 0

CONTROL + F0/.

Insert/Efface une colonne (intervalle = curseur–>ENDLINE)

SHIFT + 7

Copie ligne courante dans clipboard (inc position clipboard)

SHIFT + 8

Copie clipboard vers ligne (et decremente position clipboard)

SHIFT + 0

Va en position 0 du clipboard

ESC

Stop sons

Clavier

Joue un son (Pressez CONTROL si vous etes dans la partie du milieu)

ESC + SHIFT

Stop sons si vous etes dans partie du milieu

Editeur d'instrument graphique

ESPACE

Defini LOOP TO

CONTROL + ESPACE

Switch LOOP?

RETURN

Defini ENDPOS

COPY

Copie la barre actuelle vers la suivante

DEL

Mets la barre actuelle a 0

SHIFT + Haut/Bas

Inc/dec tout l'intervalle

F0/.

Insere/Supprime une barre

Editeur de pattern

$

Switch Cycle flag

$ + SHIFT

Switch Beyond Flag

CLR

Reset

-

Sample

Q

Inverse le signe du pitch

# ( + SHIFT)

Incremente (Decremente) STEP

RETURN

Instrument courant = instrument de la
note pointee par curseur

SHIFT + A/Z/E/R...

Goto line 0,&10,&20,&30…

SHIFT + F7

Incremente TRACK du canal courant

SHIFT + F4

Decremente TRACK du canal courant

DEL

Clear note+instr+vol OR vol alone OR pitch alone

DEL + SHIFT

Clear note+instr+vol+pitch

DEL + CONTROL

Clear WHOLE line.

SHIFT + 1

Copy track

SHIFT + 2

Cut track

SHIFT + 3

Paste track

CONTROL + 3

Paste track in OR mode

SHIFT + 7

Copy current line into clipboard (and inc clipboard position)

SHIFT + 8

Paste clipboard to track (and decrement clipboard position)

SHIFT + 0

Goto clipboard position 0

Copy

Read and play line

SHIFT + ESC

Cut sounds

F0/.

Insert/Delete line

Générer un player

Une fois qu'une musique est terminee, vous avez sans doute envie de la reutiliser dans vos propres productions. Apres l'avoir convertie de SKS vers un fichier BINaire grace au Generateur de Musique (voir GENSONG.FRA), it est maintenant possible de la jouer avec un des 3 players disponibles.

Chargez “GP”, ou si vous avez la ROM correspondante, faites |GP.

Menu principal du générateur de player

Générateur de player Une fois que le programme est charge, apparait un menu :

1) Show all files on disc
2) Generate a BASIC Player
3) Generate an ASM Player
4) Generate an INTERRUPTION Player
5) Drive A

Vous pouvez voir la liste des fichiers présents sur la disquette avec l'option 1.

Les options 2,3 et 4 vont vous permettre de generer les players. Voir plus bas.

Selectionner le lecteur actifn A ou B, avec l'option 5.

Les différents players

STarKos vous donne le choix entre 3 players.
Pourquoi 3 ? Et bien, car chacun d'eux a ses particularites :

Player ASM

Si vous avez l'intention d'utiliser votre musique dans une demo, sans systeme, alors ce player est pour vous, c'est le plus optimise. Les demomakers/fanzmakers choisiront celui la. Attention, ce player corrompt tous les registres, memes auxiliaires, mais pas SP. Son utilisation est donc deconseillee si le systeme est enclenche (risque de crash/bugs etranges).

Player BASIC

Celui la est fait pour les utilisateurs BASIC ou pour les codeurs ASM qui voudraient utiliser un player qui ne soit pas dangereux pour le systeme. Ce player est finalement presque pareil que l'ASM, mais sauvegarde quelques registres pour que le systeme ne fasse pas la gueule.

Player sous INTERRUPTION

Celui la est pour ceux qui veulent lancer la musique et l'oublier ! Les utilisateurs Basic seront les 1ers interesses, mais il fonctionne biensur pour n'importe quel programme Assembleur qui ne tuerait pas le systeme. Un simple CALL et la musique commence !

Notez bien que, pour les players ASM et BASIC, c'est a VOUS d'appeler la musique aux bons moments (une fois par VBL… jusqu'a 6 fois si votre musique tourne a 300hz). Je pense qu'il est possible d'obtenir une musique a 300hz sous Basic en bidouillant un peu, mais c'est quelque peu inutile ; utilisez plutot le player sous INTERRUPTION.

Celui ci detecte automatiquement la frequence de la musique. Dans tous les cas, une interruption a 300hz est lancee (en utilisant les vecteurs system), mais seule une poignee des interruptions sera utilisee pour une musique a moins de 300hz.

Générer un player

Une fois que vous avez choisi le player qui correspondait à vos besoins, vous devrez choisir le nom du player a sauver (STKPLBAS/ASM/INT par exemple), puis l'adresse ou vous desirez qu'il soit loge. Puis le player est sauve.

Utiliser une musique dans vos programmes

C'est vraiment tres simple, et suit plus ou moins la meme approche que celle du Sountrakker de BSC.

D'abord, chargez le player a l'adresse que vous avez entree dans GENPLAY. En Basic, cela donnerait :

Memory &1fff:load"PLAYER",&2000

Puis, chargez la musique la ou vous l'avez compilee sous GENSONG.

Load"SONG",&3000

PRECISEZ TOUJOURS LES ADRESSES QUAND VOUS CHARGEZ UNE MUSIQUE OU UN PLAYER. Cela est necessaire, car les Start et Exec addresses des headers des fichiers ne sont pas bonnes.

Lancer une musique varie un peu selon le player que vous utilisez.

player BASIC

Trois CALLs sont disponibles :

  • CALL PLAYER,ADSONG : Initialise la musique.
  • CALL PLAYER+3 : Joue la musique.
  • CALL PLAYER+6 : Stoppe la musique.

L'initialisation est NECESSAIRE une fois avant de jouer la musique une 1ere fois. N'OULIEZ PAS le parametre ADSONG ! Il s'agit logiquement de l'adresse de votre musique, le player en a besoin pour fonctionner. Dans notre exemple, nous devrions ecrire :

  • CALL &2000,&3000 pour initialiser la musique.
  • CALL &2003 pour la jouer.
  • CALL &2006 pour la stopper.

Vous pouvez egalement reinitialiser la musique si vous voulez la faire recommencer. Notez que le player BASIC peut aussi etre appele par un programme ASM, mais qu'il est un chouillas plus lent. En Assembleur, pour donner ADSONG au player Basic lors de l'initialisation, passez le par DE (comme plus bas).

player ASM

Et bien ca marche presque pareil :

  • CALL PLAYER pour initialise la musique, avec DE pointant sur la musique.
  • CALL PLAYER+3 : Joue la musique.
  • CALL PLAYER+6 : Stoppe la musique.

Dans notre exemple, cela donnerait :

LD DE,&3000
CALL &2000 ; pour initialiser.
CALL &2003 ; pour jouer.
CALL &2006 ; pour stopper.

Soyez sur que le systeme n'est pas utilise, sinon ca va planter. Tous les registres sont modifies.

player sous INTERRUPTIONS

C'est encore plus simple :

  • CALL PLAYER,ADSONG : initialise et commence la musique
  • CALL PLAYER+3 : Stoppe la musique.

De meme, si vous utilisez cette musique dans un programme Assembleur, utilisez DE pour donner ADSONG lors de l'initialisation, exactement comme plus haut.

Compiler une musique

Une fois que vous avez termine une musique sous STarKos, vous voulez sans doute la reutiliser dans vos propres productions. C'est une procedure tres simple.

Lancez GS (GENSONG), ou tapez |GS (si vous avez installe la ROM correspondante) et suivez le guide.

Ce programme va convertir un fichier SKS en un ensemble de un a huit fichiers BINAIRES. Ces fichiers peuvent etre utilises, grace aux players STarKos (Allez voir PLAYERS , et le programme GP) dans tous vos programmes, qu'ils soient codes en Basic ou Assembleur.

Vous devez avoir compris qu'il s'agit plus ou moins de la meme philosophie que celle du Soundtrakker de BSC, sauf que les musiques que vous generez ne SONT PAS dans le meme fichier que le player. Cela n'a que des avantages : vous pouvez utiliser UN SEUL player pour une multitude de musiques ! Et vous pouvez mettre en tout ou vous voulez en memoire (attention cependant aux restrictions du systeme en Basic). N'oublions pas les 2 modules qui vous permettent de reloger les musiques comme le player, et vous obtenez l'editeur le plus flexible disponible.

Pourquoi compiler la musique ?

Parceque !! Je pense que c'est une grossiere erreur que de ne pas permettre la compilation d'une musique, comme pour l'AMC. Pourquoi ? Parceque la plupart du temps, la musique contient des instruments et des tracks inutilises, et que le format utilise par un editeur est souvent regi par des regles beaucoup moins strictes qu'un player externe. Le format utilise par les players de STarKos est plus optimise, toute donnee non utilisee est eliminee, comme les fins de patterns qui ne seraient jamais atteinte, par exemple.

Menu principal du compilateur de musique

Compilateur de musique Une fois que GS est charge, apparait un menu :

1) Show all files on disc
2) Show SKS files on disc

Ces deux options sont plutot simples a comprendre…

3) Load and compile a song

Cette option est la principale. Voir plus bas…

4) Drive A

Sert a passer d'un lecteur a un autre.

Charger et compiler une musique

Tout d'abord, on vous demande le nom du fichier SKS a convertir. Puis l'adresse ou vous desirez loger votre musique, entre 0 et #FFFF. Apres ca, l'ecran devient noir pendant que le CPC travaille sur la convertion. Plus la musique est longue, plus l'attente sera longue. Mais bon, ce n'est pas un probleme…

Pour des raisons techniques, l'ecran est eteind car il est utilise comme un buffer. Si une erreur disc devait se produire, il devriendrait tout rouge, et vous pourrez alors presser 'R' pour Reessayer, ou 'C' pour annuler.

Enfin, un ecran apparait et vous donne la taille finale de la musique, ainsi que le nombre de fichier qu'elle prendra. Qu'est-ce a dire ? L'editeur de STarKos peut creer des musiques allant jusqu'a 54k environ. Pour l'editeur comme pour le compilateur, le fichier SKS est place dans les banks. Cependant, le compilateur doit generer une autre musique (compilee cette fois) qui peut etre aussi grande ! La memoire du CPC n'est pas assez grande pour gerer tout cela. Ainsi, un fichier genere ne pourra pas depasser #8800 (34k), le reste de la memoire etant pris par le compilatur, les buffers et le systeme. Si votre musique est plus grande que ca, alors un second fichier sera cree.

L'ecran vous propose 2 options : Automatic ou Custom Size.

Qu'est-ce que cela signifie ? Eh bien, c'est tres simple.

Automatic

Signifie que les fichiers generes seront aussi grands que possibles. Si votre musique fait #A000, alors un 1er fichier de taille #8800 sera cree, tandis que le second fera #1800 (# 8800+#1800=#A000). La plupart des utilisateurs utiliseront l'Automatic Size.

Custom

Vous permet de definir la taille de chaque fichier. Vous pouvez en sauver jusqu'a 8, d'une taille allant de 1 a #8800 (34k). Quel en est l'utilite ? Eh bien, cela peut servir, si votre musique est tres grande, a la charger en plusieurs fois. Vous aurez une multitude de fichiers que vous chargerez et assemblerez plus tard.

Cela m'amene a un point tres important :

Meme si vous creez plusieurs fichiers, LES FICHIERS DOIVENT ETRE CHARGES LES UNS A LA SUITE DES AUTES EN MEMOIRE ! Ce n'est pas possible pour le moment de couper et placer la musique dans divers endroits de la memoire. Les donnees de la musique doivent etre placee LINEAIREMENT. Cependant, vous pouvez placer toute, ou une partie de la musique en bank. Exemple : une musique pourrait commencer en #6000 vers #7FFF de la bank #C4, puis continuer de #8000 a #A000 dans la RAM centrale. Tout ce dont vous avez a vous rappeler, c'est que le player doit avoir acces a toutes les donnees de la musique avant d'etre appele, alors n'oubliez pas d'ouvrir/fermer vos banks si necessaire.

Une fois le choix effectue, Automatic ou Custom (et les tailles choisies), une SECONDE passe commence. Effectivement, le compilateur fonctionne en 2 passes, comme un assembleur ! Cette passe dure aussi longtemps que la precedente. Cependant, cette fois les fichiers sont sauves sur la disquette. Quand c'est fait, un message vous indiquera si la convertion s'est produite avec succes ou non.

C'est fini !

Les fichiers crees ont tous les memes noms que le fichier SKS, mais l'extension est differente. Pour une musique appelee TRY.SKS, les fichiers crees seront :

  • TRY.BIN
  • TRY.BI1
  • TRY.BI2
  • TRY.BI7

ATTENTION : Les fichiers generes n'ont pas les bonnes adresses de START si vous regardez leurs headers. Ainsi quand vous les chargez, vous DEVEZ preciser l'adresse de chargement :

LOAD”TRY.BIN” ne MARCHERA PAS. Mais LOAD”TRY.BIN”,&4000, oui.

Reloger vos musiques et vos players

STarKos contient deux petits modules qui vont vous permettre de reloger n'importe quelle musique, ainsi que les 3 players.

Le relogeur de player

Ce module vous permettra de reloger vos players. Ainsi, si vous devez placer le player en #1000 au debut de votre demo, puis en #8000 lors de votre 2e effet, pas besoin de l'avoir deux fois en memoire ! Un simple CALL suffit. Par contre, vous devrez le deplacer vous meme !

Vous trouverez les sources de ce relogeur sur le disc, sous le nom de RELPLAY.DAM (DAMS) ou RELPLAY.MXM (Maxam). Le fichier RELPLAY.BIN est le programme compilé en #9000. Vous pouvez le reutiliser, mais ne le modifiez surtout pas !

Le relogeur est a la base concu pour etre appele en BASIC dans le format suivant:

CALL Relogeur,ad1,ad2,type
  • Relogeur est bien entendu l'adresse ou vous avez compile votre relogeur.
  • Ad1 correspond a l'adresse ou vous avez charge votre player.
  • Ad2 correspond a l'adresse ou vous voulez reloger votre player.
  • Type correspond au type de player :
    • 0=Asm
    • 1=Basic
    • 2=Inter.

En general, ad1=ad2, surtout en basic, car vous chargez le fichier la ou vous voulez, PUIS ensuite le relogez.

Une petite modification du source est necessaire si vous voulez l'utiliser en assembleur, mais il s'agit juste d'effacer les 1eres lignes qui lisent les parametres Basic, afin de forcer les votres. Vous pouvez aussi ne rien effacer, et faire pointer IX sur une table de parametre que vous aurez vous meme creee. Rien de mechant, vous pouvez y arriver tout seul :)

Si vous recompilez ce module en vue de l'utiliser dans un programme assembleur, vous pouvez gagner de la place en virant les 2 tables de relocation qui ne vous servent pas, et qui se trouvent a la fin du source (Reloger le player BASIC et INTER n'est pas utile pour les codeurs Assembleur).

Le relogeur de musique

Ce module vous permet de reloger vos musiques (tiens donc). D'ailleurs il est utilise par les modules Basic de ce kit, afin de pouvoir jouer n'importe quel musique sans vous embeter avec leurs adresses d'origine.

Vous trouverez les sources de ce relogeur sur le disc, sous le nom de RELSONG.DAM (DAMS) ou RELSONG.MXM (Maxam). Le fichier RELSONG.BIN est le programme compilé en #9000. Vous pouvez le reutiliser, mais ne le modifiez surtout pas, il est reutilise par les modules de ce kit !

Le relogeur est a la base concu pour etre appele en BASIC dans le format suivant:

CALL Relogeur,ad1,ad2
  • Relogeur : Adresse de ce programme
  • Ad1 : Adresse ou est la musique en ce moment
  • Ad2 : Adresse ou vous voulez reloger la musique.

La encore, c'est a vous meme de la deplacer apres relocation. Si vous regardez un peu comment sont faits les modules de ce kit, vous verrez que je ne deplace rien du tout, puisque je lis une musique en #2000 par exemple, puis je la reloge pour etre sur que ca marchera correctement (call relogeur,#2000,#2000).

Comme plus haut, une petite modification est necessaire pour reutiliser ce code en assembleur, mais c'est encore plus simple que la haut (enlever les 6 1eres lignes, c'est indique dans le source).

Informations techniques sur les players

Les 3 players utilisent le meme code de base. L'ASM est le plus optimise. Les players BASIC et INTERRUPTION sont presque pareils, mais sauvegardent certains registres pour le systeme. Le player sous INTERRUPTIONS utilise les vecteurs systeme pour declencher l'interruption a 300hz. Ce player est un peu plus lent et prend un peu plus de memoire, car il doit interpreter la frequence ecrite dans la musique, et jouer la musique aux interruptions correspondantes.

Consommation de ressources

J'ai code les players aussi bien que je le pouvais. L'ASM prend un maximum de 34 lignes de temps machine, mais ira generalement jusqu'a 30, pour une taille d'un peu plus de 2ko en memoire ; vous pourrez en recuperer une partie, voir plus bas. Les players n'utilisent pas de buffer, a part le player et la musique, aucun autre octet n'est occupe.

Taille des players :

  • ASM : &98D octets
  • BASIC : &9A8 octets
  • INTER : &9FF octets

Gestion mémoire

Si vous utilisez le player ASM, vous pouvez choisir de placer le player et la musique ou bon vous semble. La seule condition est que le player doit pouvoir avoir acces a toutes les donnees de la musique quand il est appele. Si le player et/ou la musique se trouve(nt) en bank (totalement, ou partiellement), la bank doit etre ouverte avant d'appeler le player.

Les players ne modifient pas la pile, le mode/flag d'interruption, ou les registres des composants du CPC, a part ceux du Z80 et du PSG, biensur. Ils n'utilisent pas d'astuces tordues (out (0),a, ou trucs du genre). Tous les registres du Z80 sont corrompus.

Le player INTERRUPTION a plus de contraintes, liees au systeme : vous ne devrez pas fermer une bank si le player/la musique est dedans, ou ouvrir une bank s'ils sont en RAM centrale. De plus, le player doit etre assemble entre #4000 et #A67B, soit HIMEM.

Attention, si vous avez des ROM connectees, HIMEM descend. Ne placez pas votre player trop haut pour rester compatible avec un maximum de configurations. Cependant, le generateur ne vous empechera pas de le faire. Ces limitations concernent aussi bien le player que la musique.

Bidouiller le player ou la musique

Contrairement à l'AMC ou au Soundtrakker de BSC, je vous propose quelques adresses pour que vous puissiez adapter le player a vos besoins, ou choper quelques valeurs interessantes.

TOUTES les adresses donnees sont en fait des OFFSETS par rapport au debut de la musique ou du player. Elles sont toutes en hexadecimal.

Dans le header de la musique, vous trouverez des… valeurs ! Je ne vous les donne pas toutes, elles vous seraient inutiles.

OFFSETSValeurDescription
0-3 DB “SK10”Juste un petit tag ASCII pour que vous puissiez detecter les musiques STK facilement. Une aide aux rippers debutants :)
4-5 DW SongAdrAdresse de base de la musique. #00,#40 Si vous musique est chargee en #4000, par exemple.
6 DB DigiChnlNumero du canal utilise par les Digidrums de la Special Tracks. 1,2 ou 3.
Ne devrait pas etre tres utile, mais le voila quand meme.
7-8 DW RplyFreqFrequence de la musique en Hertz (13 (=#D), 25 (=#19), 50 (=#32), 100 (=#64), 150 (=#96) or 300 (=#12C)). Seul le player sous INTERRUPTION l'utilise.

Voila, c'est tout. Vous n'avez pas le droit d'aller chercher ailleurs :).

Vous pouvez egalement trouver l'adresse de base du player. Pour les players ASM ou BASIC, elle se trouve aux offsets +#9/+#A (poids faible/fort). Pour le player INTERRUPTION, regardez aux offsets +6/+7 (poids faible/fort).

Si vous voulez empecher l'envoi des valeurs au PSG, enlevez le jump qui se trouve ici…

ASM BASIC INTER &3AC &3B5 &408

C'est utile si vous voulez par exemple faire des digidrums (regardez la section DIGIDRUM plus bas). De meme, c'est utile si vous voulez generer une YM-List et ainsi obtenir le player le plus rapide jamais fait (mais pensez a brancher une MEMCARD :). Dans ce cas, 'entendre' la musique est inutile, vous avez juste a lancer le player, recuperer les valeurs PSG et les coder, et recommencer jusqu'a la fin de la musique.

La valeur normale a cette adresse est &C3 (JUMP).

ATTENTION, il y a un cas special avec le Registre 7, sa valeur est donnee par le registre A AVANT le saut ! Donc si vous bypassez le JUMP, mais lancez la routine par la suite, n'oubliez pas de remettre la valeur du registre 7 dans A !

!!! ATTENTION !!! Si vous placez un RET avec le player BASIC ou INTER, ca va planter ! Pourquoi ? Et bien parceque les registres sauves (par PUSH) au debut du player ne sont recuperes (par POP) qu'a la fin de la routine envoyant les valeurs au PSG. Donc un RET fera jumper a une mauvaise adresse. Donc, ce qu'il faut faire, c'est de ne pas ecrire de RET, mais de jumper a la routine qui recupere les registres. Soit poker les valeurs suivantes a ces endroits :

BASIC: pokez #C3 (JUMP) en #3B3 puis (Adresse 16 bits du debut de player + #85F) (poids faible d'abord, fort ensuite). INTER : pokez #C3 (JUMP) en #408 puis (Adresse 16 bits du debut de player + #8B2) (poids faible d'abord, fort ensuite)

MAIS ATTENTION ENCORE ! Car la valeur du registre 7 etant passee par A, vous ne pourrez plus la recuperer (voir plus bas). Donc il convient de la sauver en memoire d'abord si elle vous interesse. Sauvez la ou vous voulez, je vous propose en #1f, puisque le systeme n'a pas besoin de cette adresse. Mais nous ne pouvons le faire a cet adresse, car on risque de deborder sur les routines qui suivent. On va donc poker un jump ailleurs (en #3c, personne n'y fait rien), et d'ici, on sauve A et on fait un le JUMP decrit plus haut (le 1er WARNING) : Pokez en ADPLAYER+#3B3 (basic) ou ADPLAYER+#406 (inter) les octets suivants : #c3 #3c #00 (jump #003c)

Et en #3c, pokez ceci : #32,#1f,#00, les deux derniers octets etant l'adresse ou vous voulez sauver le registre 7. Ensuite poker les 3 octets de plus haut. Voila. Vous pouvez recuperer a tout moment la valeur du registre 7 en #1f.

C'est un peu de la bidouille, j'ameliorerais ca dans un futur player, cela dit je pense pas que ce soit vraiment utile car a part dans le cas du YM, on s'en fout un peu… Et puis les codeurs Basic n'en ont pas specialement besoin.

Si vous utilisez le player ASM : Vous tracassez pas pour ces betises, pokez un RET comme decrit plus haut, pas d'hesitation, et sauvez A !

Maintenant, voici l'adresse du code qui va envoyer les valeurs au PSG…

ASM BASIC INTER &6CD &6D6 &729

ATTENTION : La valeur du registre 7 est donnee au travers de A !

Ensuite, voici les adresses ou vous pourrez recuperer les valeurs envoyees au PSG. Si vous devez coder un equaliser, vous pouvez choper les valeurs PSG ici. Biensur, les adresses varient en fonction du player. Elles sont plutot inutiles si vous utilisez le player INTERRUPTION mais bon, les voila quand meme :

ASM BASIC INTERRUPT R0 &6D8 &6E1 &734 Low Byte Frequency, Channel 1 R1 &6F3 &6FC &74F High Byte Frequency, Channel 1 R2 &729 &732 &785 Low Byte Frequency, Channel 2 R3 &744 &74D &7A0 High Byte Frequency, Channel 2 R4 &77A &783 &7D6 Low Byte Frequency, Channel 3 R5 &795 &79F &7F1 High Byte Frequency, Channel 3

R6 &7CB &7D4 &827 Noise R7 NOT CODED Mixer (R7OLD &7E7 &7F0 &843)

R8 &70F &717 &76A Volume, Channel 1 R9 &75F &768 &7BB Volume, Channel 2 R10 &7B0 &7B9 &80C Volume, Channel 3

R11 &800 &809 &85C Low Byte Hardware Enveloppe Frequency R12 &81B &824 &877 High Byte Hard Enveloppe Frequency R13 &836 &83F &892 Hardware Enveloppe Shape

Le registre 7 n'est PAS automodifie ! Il est donne par A au code charge d'envoyer les valeurs au PSG (voir plus haut).

NOTE : Si vous additionnez 2 aux adresses ci-dessus, vous obtenez la valeur PRECEDENTE envoyee au registre. AVANT d'envoyer une valeur a un registre, la nouvelle valeur est comparee a la precedente. Si elles sont egales, rien ne sert de l'envoyer, d'ou un gain de temps machine. L'exception est le registre 13, qui est tout de meme pris en compte si RETRIG est >0. (Notez que vous disposez quand meme de l'adresse de la valeur precedente du registre 7, la nouvelle etant donnee par A).

RETRIG : ASM BASIC INTER &83D &846 &899

Pour forcer l'envoi d'une valeur, vous pouvez mettre 255 dans la valeur precedente, cette valeur n'est pas utilisee par la plupart des registres (Je n'ai constate aucun bug de la part des registres de frequence).

GAGNER UN PEU DE TEMPS MACHINE ?

Hum, ca c'est pas possible, desole :). J'espere sortir des versions plus optimisees des players, a l'avenir, car je sais ou se situent les pertes de temps machine. Vous trouverez sans doute que la 1ere vbl en prend beaucoup, c'est parceque tous les registres PSG sont mis a 255 dans l'espoir d'etre reactualises. Si vous voulez eviter ceci, le tout sans bug sonore eventuel, vous pouvez, APRES l'initialisation, lire les valeurs des registres du PSG (en passant par le PPI, pas en lisant les valeurs du player !), et les inscrire dans les 'valeurs precedentes' du player. Ainsi, seules les nouvelles valeurs seront jouees lors de la 1ere vbl, d'ou un gain non negligeable de temps machine.

FADE IN/OUT

Il est possible de creer un fade in/out dans une musique Starkos. Cependant, vous devez le faire vous meme… En effet, afin de gagner de la memoire et du temps machine, je n'ai pas ecrit de fonction qui permettait de le faire. Mais avec un peu de bidouillage, c'est possible.

Tout ce que vous avez a faire, c'est de bypasser l'envoi des valeurs au PSG. Jouez la musique une fois, lisez les valeurs des registres 8,9 et 10 (volume des 3 canaux), et decrementez les de 1,2,3… jusqu'a 15 (pour un fade out), selon votre avancement dans le fade, puis jumpez au code qui envoie les valeurs au PSG (n'oubliez pas de sauver/restorer A qui contient la valeur du Registre 7). Attention aux debordements. Si un volume descends en dessous de 0, mettez le a 0. S'il est superieur a 15 (cas d'un fade in), forcez le a 15.

Les basses Hards sont plus problematiques, c'est pourquoi c'est a vous de decider comment les gerer. Leur volume est TOUJOURS a 16 avec Starkos. Vous pouvez les decrementer aussi, mais a ce moment elles perdont leur status 'hard', ce qui va les rendre plates. Vous pouvez aussi les ignorer, seuls les sons 'normaux' faderont. Vous pouvez aussi les couper, tout simplement. A vous de voir.

DETECTER LA FIN DE LA MUSIQUE

Vous voulez detecter la fin de la musique ? Par exemple, pour convertir un fichier SKS vers un fichier YM (par exemple !) ?? Ok, c'est possible. Encore une fois, pas de fonction codee. La methode est vraiment pourrie, je m'excuse d'avance, mais je n'ai pas reussi a trouver autre chose. Ca reste simple a coder tout de meme. Suivez l'algo suivant :

(xxxx)16 signifie 'Nombre 16 bits trouve a l'offset xxxx'. (byte at xxxx=octet de poids faible byte at xxxx+1=poids fort)

(xxxx)8 signifie 'Nombre 8 bits trouve a l'offset xxxx'.

ASM BASIC

STATE=0

LOOP: Jouez votre musique

If STATE=0 : if (009D)16 <> (283)16 then goto LOOP (00A6)16 <> (028C) 16 STATE=1 : goto LOOP

If STATE=1 : if (0270)8 <> 0 then goto LOOP (0279)8 <> 0 if (0015)8 <> (0017)8 then goto LOOP (001E)8 <> (0020)8 STATE=2 : goto LOOP

If STATE=2 : if (0015)8 <> (0017)8 then goto LOOP (001E)8 <> (0020)8 STATE=0 Musique finie !

DETRUIRE LES PARTIES INUTILES DU PLAYER

Vous manquez de memoire et desirez en grapiller un maximum ? Starkos a ete fait pour vous, vraiment :). Avec les players BASIC et ASM, la partie INITIALISATION se trouve a la fin du player. Vous pouvez donc la virer si vous n'en avez plus besoin. Juste avant se trouve le code STOP MUSIC, mais il est vraiment minuscule.

Ces adresses vous montrent ou commencent ces codes : ASM BASIC STOPMUS &856 &868 INITMUS &872 &88D

N'oubliez pas que vous pouvez egalement complement virer le code d'INIT, en chargeant le player ainsi que la musique, appelant le code INIT, puis en sauvant votre player sans le code INIT. Ainsi, le player possede toutes les informations dont il a besoin. Biensur, vous ne pourrez plus reinitialiser votre musique, or utiliser le player pour une autre musique, mais les demomakers trouveront ca surement tres utile.

DIGIDRUMS

ALORS. Les players Starkos gerent les digidrums d'une maniere tres flexible. Ils lisent la musique, et si un digidrum est detecte, renvoient le numero du sample (de 1 a #3f, 0=pas de digidrum), ainsi que le canal ou jouer le sample (1/2/3). Le BASIC est trop lent pour jouer des digidrums, mais vous pouvez quand meme utiliser les digidrums pour declencher des evenements (c'est egalement valable avec le player ASM biensur). La detection d'evenement/digidrum ne devrait pas etre utilisee avec le player INTERRUPTION, car vous risquez d'en manquer a cause de la lenteur du basic. Mais bon, vous faites ce que vous voulez, hein…

Les valeurs doivent etre lues ici :

Sample Number : ASM BASIC INTER &B &B &8

Channel Number: ASM BASIC INTER &C &C &9

Comment lire les digidrums ?

Je ne vous dirais pas comment jouer des samples techniquement, ce n'est pas le but de ce texte (lisez Demoniak 5, ou Quasar). Cependant, j'aimerais vous parler de la maniere de jouer les digidrums le plus proprement possible.

La technique la plus utilisee est biensur la plus facile a mettre en place, mais aussi la plus crade. Elle consiste a lancer le player une fois, detecter le digidrum et le jouer sur le reste de la VBL (en coupant le noise et le sound du canal grace au registre 7). Nous pouvons ameliorer.

Allez jetez un oeil dans les sources DIGIDRUM.DAM / DIGIDRUM.MXM.

La methode que j'utilise est un peu plus complexe, mais donne des sons de meilleure qualite. Biensur, vous restez libre de coder ca comme vous voulez !

La technique consiste a jouer la musique sans envoyer les valeurs aux PSG. Si un digidrum est detecte, nous empechons le player de modifier les registres PSG lie au canal ou nous allons jouer le sample (en fait, seul le VOLUME est concerne). Nous coupons aussi le noise et le sound du digicanal, grace au registre 7. Maintenant, nous sommes pret a envoyer les valeurs modifiees au PSG. Enfin, nous jouons notre sample, et c'est fini pour cette VBL.

Dans le source, les adresses et tailles des samples sont donnees dans une table, et nous testons la fin d'un sample uniquement a la fin d'une VBL. Donc si nous jouons 160 octets dans une VBL (160*50 = 8000Khz, ce qui est bien pour un digidrum), et que votre sample fait 350 octets, le CPC va en fait jouer en 480 (160*3). Cette faible precision n'est pas genante pour des digidrums ; Tester la fin du sample apres avoir joue chaque octet ne donnerait pas de meilleur resultat, mais prendrait bien plus de temps machine.

Ok, arretons ici les bidouilles, ca rend le player malade.

Générer une musique YM/AYC

La plupart d'entre vous doivent savoir ce que sont les YMs ou AYCs. Si ce n'est pas le cas, allez glaner quelques infos sur la page Net de Leonard , le codeur ST qui a cree (certains diront plutot 'standardise' ou 'democratise') ce format. De plus, vous aurez besoin du kit AYC de Madram, disponible sur le site des Overlanders (ngGrim: le site étant mort, vous pouvez récupèrer la dernière version du kit AYC sur CPCScene).

Le kit StarKos contient un petit module qui convertira n'importe quelle musique STarKos en YM. Puis, avec le convertisseur YM2AY de Madram, vous pourrez profiter des avantages de ce formidable format !

Lancez 'STARK2YM'. Entrez le nom de votre musique STarKos, ainsi que celui du YM a creer (sans l'extension). Vous pourrez egalement rentrer quelques infos qui seront codees dans le YM (nom de la musique, de l'auteur, et commentaires).

Comme vous le savez sans doute, le YM est a la base un format DECOMPRESSE qui prend BEAUCOUP de place disc. Sur une face de 128kb, vous pourrez caser une musique de 4'30 environ… Je vous propose donc d'utiliser le format D10 de PARADOS qui vous permettra d'entendre la duree maximale a plus de 20 minutes…

Le convertisseur doit faire 14 passes, plus une pour detecter le nombre d'iteration qui composent votre musique. C'est donc assez lent.

Une fois que le YM est genere, lancez le YM2AY de Madram. Je ne l'ai pas inclus au kit STarKos car, apres tout, je ne l'ai pas programme ! De toute facon, le kit AYC est un 'must', alors ne vous en privez pas.

REMARQUES

Un point important :

- Contrairement a ce que croient la majorite des gens, il n'est pas possible de transferer correctement TOUTES les musiques ST, meme si celles ci utilisent des sons PSG conventionnels. Ecoutez la musique MEGADIST fournie sur le disc pour vous en convaincre. Le PSG du CPC tournant a 1 Mhz, les periodes doivent toutes etre divisee par 2 par rapport a celles du ST, leur PSG tournant a 2 Mhz. Cela peut entrainer une approximation, et une desynchronisation entre sons normaux et basses hard ! Dans ce cas, comme me l'a souffle Madram, il suffirait de doubler la frequence de la musique (50hz –> 100hz) puis d'entrer les frequences a la main, en faisant en sorte que celles ci 'encadrent' la frequence ideale. Bonne chance.

Voici quelques points, concernant le logiciel, dont j'aimerais parler brievement:

- Starkos est plus lent que les autres soundtrakker, sur beaucoup de plans, mais c'est du a l'organisation bcp plus complexe de la chose : je permets 255 instruments, 512 tracks, 256 patterns, 256 special tracks, avec des tailles variables. C'est beaucoup plus que n'importe quel tracker CPC ou ST. Si j'avais gere ca comme l'on fait BSC ou PRODATRON, jamais ca ne serait passe dans 128ko. Ainsi, la memoire est allouee dynamiquement, des qu'un son (par ex) est modifie, je reorganise ma memoire, fait de la place ou au contraire, la comble. C'est relativement complexe a gerer, et ca prend un peu de temps machine. Je n'ai pas fait de compromis, ca c'est clair.

- L'affichage des patterns est lent. Ce n'est pas parceque ce n'est pas optimise, c'est parceque j'utilise les routines que je possede deja. Elles sont assez souples, modestement rapides, mais ca ne suffit pas pour un affichage de ce genre. Il aurait fallu des routines specialisees.

- Mais je ne peux pas me le permettre pour le moment : je n'ai presque plus de memoire ! Starkos, c'est 24000 lignes de code pour 30Ko max de code COMPILE (une petite partie devenue inutile (initialisation) est eliminee) ! Le reste de la memoire centrale est occupe par le buffer de travail, dans lequel l'instrument/la pattern en chantier est decompactee. Et n'oublions pas les clipboards et l'AMSDOS…

documentations/software/starkos/manual.fr.txt · Last modified: 2009/05/20 12:36 by grim