home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
No Fragments Archive 4: The Falcon Archive
/
nf_archive_four_v1.0.iso
/
ARCHIVE
/
WORK
/
MSX
/
JINGLE.ZIP
/
FORMATS.DOC
next >
Wrap
Text File
|
2004-09-25
|
17KB
|
388 lines
Salut,
Ce fichier a pour modeste but de vous expliquer la structure des
fichiers de samples qu'utilise Jingle-Mix V.1.00 (c'est α dire les
fichiers _.SMP, _.AVR, _.DVS et surtout _.JGL).
Ainsi, si vous ètes programmeur, bidouilleur ou passionnΘ de sons et
de musique sur Atari (je sais qu'il y en a beaucoup) vous pourrez enfin
utiliser ces fameux fichiers dans vos crΘations personnelles sans vous
planter...
Bon, je vais commencer par expliquer quelques notions de base pour
les dΘbutants. Ceux qui connaissent peuvent directement passer α la
suite...
Dans la rΘalitΘ le son est une ondulation de l'air. Ceux qui se
rappellent de leurs cours de Sciences-physiques savent qu'une onde a
deux caracteristiques principales : la FrΘquence et l'Amplitude.
Amplitude
^ SchΘma d'exemple
| d'une onde sonore.
| ....
| .. ..
| . . .
|. . .
------------------------------> FrΘquence
| . .
| . .
| .. ..
| ....
|
Lorsque l'on Θcoute un son, l'onde sonore entre dans notre oreille
et fait vibrer le tympant. Notre cerveau dΘcode ce signal reτut par
l'oreille et c'est ainsi que l'on entend.
Les magnΘtophones fonctionnent exactement comme notre oreille :
l'onde sonore arrive sur le micro et fait vibrer une membrane de
plastique mou. Cette membrane est reliΘe α un systΦme Θlectrique (un
aimant dans une bobine). Ainsi l'onde sonore se transforme en onde
Θlectrique (que l'on stocke sur une cassette magnΘtique ensuite). Ce
systΦme est dit Analogique, car l'onde Θlectrique est exactement la
mΦme que l'onde sonore...
Sur Falcon (et en gΘnΘral sur tout les ordinateurs) le son est
NumΘrique (par opposition α l'Analogique). C'est α dire que l'onde
sonore va Φtre dΘcodΘe par une puce Θlectronique (dans le Falcon cette
puce s'appelle le Codec car elle code et elle dΘcode). Bon reprenons,
l'onde sonore va Φtre dΘcodΘe par le Codec pour ensuite Φtre stockΘe
sous forme d'octets dans la mΘmoire RAM de l'ordinateur. Pourquoi ?
Tout simplement parce qu'un ordinateur ne peut lire et Θcrire que des
chiffres (des octets), alors qu'il ne peut pas lire et Θcrire des ondes
Θlectriques.
Le chiffre reprΘsentΘ par l'octet correspondra α l'Amplitude
Le nombre d'octets lus ou Θcrit par seconde correspondra α la FrΘquence
Un exemple pour mieux comprendre :
Un sample en 8 Bit α 25 KHz veut dire que, pour dΘcrire ce sample,
l'ordinateur code l'amplitude sur 8 Bit (1 octet, donc les valeurs
d'amplitude iront de 0 α 255) et qu'il y a 25000 amplitudes codΘes en
1 seconde.
Bref, 3 secondes de ce sample prendront 3*1*25000=75000 octets en RAM.
Un autre exemple pour vΘrifier que vous avez bien compris :
Un sample en 16 Bit α 50 Khz veut dire que, pour dΘcrire ce sample,
l'ordinateur code l'amplitude sur 16 Bit (2 octets, donc les valeurs
d'amplitude seront beaucoup plus prΘcises car elles iront de 0 α 65535)
et qu'il y a 50000 amplitudes codΘes en 1 seconde.
Bref, 5 secondes de ce sample prendront 5*2*50000=500000 octets en RAM.
Je pense que vous comprendrez aisement que pour avoir un sample de
meilleur qualitΘ il faut :
Augmenter le nombre d'amplitude possibles (donc 16 Bit plutot que 8).
Augmenter le nombre d'amplitudes α la seconde (50000 plutot que 25000).
Sachez que l'Amiga est en 8 Bit α 28 KHz (pas mal),
que le CD est en 16 Bit α 44 KHz (excellent),
que le DAT est en 16 Bit α 48 KHz (encore mieux),
et que le Falcon peut faire du 16 Bit α 50 KHz (the best).
Voilα, vous savez beaucoup de choses sur la thΘorie du sample,
maintenant passez α la pratique, ce ne sont pas les logiciels qui
manquent sur Falcon...
Bon, maintenant nous allons passer α ce qui nous interresse
vraiment, α savoir la description des principaux fichiers de samples
sur Falcon...
-----------------------------------------------------------------------
LES FICHIERS _.SMP
------------------
Ce sont les fichiers les plus simples car ils ne possΦdent pas
d'entΦte. Mais cette simplicitΘ entraine un gros dΘfaut : on ne connait
rien sur le sample. C'est dommage car on ne pourra pas savoir si le
sample est en 16 Bit ou en 8 Bit, et on ne connaitra pas sa frΘquence
(qui pourra trΘs bien Φtre 17 KHz, ou 23 KHz, ou 2 KHz, ou 80 KHz, etc)
Bref, les fichiers _.SMP ne sont pas trΘs interressants...
En fait, les fichiers _.SMP correspondent aux fichiers _.SPL (bien
connus par ceux qui viennent de l'Atari ST). La seule diffΘrence entre
les _.SMP et les _.SPL est la suivante :
Dans les _.SMP, l'amplitude est signée (-128 à +127 en 8 Bit)
(-32768 à +32767 en 16 Bit)
Dans les _.SPL, l'amplitude est non signée (0 à +255 en 8 Bit)
(0 à +65535 en 16 Bit)
NB : Le Codec du Falcon ne lit que les samples signΘs, donc les _.SMP.
-----------------------------------------------------------------------
-----------------------------------------------------------------------
LES FICHIERS _.AVR
------------------
Personnellement, ce sont les fichiers que je prΘfΦre. C'est la
rΘfΘrence dans le monde Atari et je pense que cela devrait Φtre la
rΘfΘrence sur tous les ordinateurs (mais ce n'est pas le cas, car
l'informatique est dirigΘe par une bande de blaireaux et suivit par une
bande de moutons abrutis). Bref, ne philosophons pas, y'a des
possesseurs de PC qui pourraient se sentir visΘs...
Les _.AVR possΦdent une entΦte qui donne plein d'informations sur le
sample. En fait, un fichier _.AVR a deux parties distinctes :
------------ 0
| |
| ENTETE | SchΘma d'un
| | fichier _.AVR
------------ 128
| |
| |
| |
| SAMPLE |
| |
| |
| |
------------ ???
Lorsque vous chargez un fichier _.AVR vous devez impΘrativement lire
l'entΦte et utiliser les informations contenues dans cette entΦte, afin
de traiter le sample comme il se doit.
Lorsque vous sauvegardez un fichier _.AVR vous devez obligatoirement
respecter la structure de l'entΦte, et valider le maxximum
d'informations sur le sample en question.
Structure de l'entΦte :
-----------------------
OFFSET TAILLE DESCRIPTION
0- 3 4 Ces 4 octets doivent TOUJOURS contenir la chaine ASCII
suivante : "2BIT" (Identificateur)
4-11 8 8 octets ASCII pour le nom (Nom du sample)
12-13 2 $0000=Mono, $FFFF=StΘrΘo (Nombre de voies)
14-15 2 $0008=8 Bit, $0010=16 Bit (Format du sample)
16-17 2 $0000=Non signΘ, $FFFF=SignΘ (Signe)
18-19 2 $0000=Non boucle, $FFFF=Boucle (Loop)
20-21 2 $FFFF=Non midi, $FFXX=Note midi (XX=No de la note)
22 1 $FF (Pas important)
23-25 3 $XXXXXX (3 octets pour la FrΘquence en Hertz)
26-29 4 $XXXXXXXX (Longueur du sample (sans l'entΦte))
30-33 4 $XXXXXXXX (DΘbut de la boucle (si boucle il y a))
(sinon remplir avec $00000000 par dΘfaut)
34-37 4 $XXXXXXXX (Fin de la boucle (si boucle il y a))
(sinon remplir avec $00000000)
38-63 26 Remplir avec des 0 (cette zone est rΘservΘe)
64-127 64 Remplir avec ce que vous voulez (zone libre)
128-XX XX -SAMPLE- (Dans le format indiquΘ dans l'entΦte)
Pour la petite histoire, sachez que les _.AVR viennent de l'Θquipe
de 2BIT System (Tony RACINE, David WOODHOUSE...) lorsque apparut ST-
REPLAY.
-----------------------------------------------------------------------
-----------------------------------------------------------------------
LES FICHIERS _.DVS
------------------
On les appelle les DVSM. Ce sont des fichiers α entΦte (comme les
_.AVR) mais contrairement α ces derniers, ils sont beaucoup moins
interressants car ils ne prennent en compte QUE les caractΘristiques du
Falcon. Certes, le Falcon a beau Φtre une des meilleures machine du
marchΘ, il ne faut pas oublier qu'il en existe d'autres dans le monde
et que la mode est α l'Θchange des fichiers entre machines sans avoir
besoin de passer par des convertisseurs (par exemple les fichiers
de modules _.MOD ou les images _.GIF deviennent universelles, pour le
plus grand bonheur de tous).
Les _.DVS ne seront jamais universelles (mais les _.AVR devraient
l'Φtre depuis longtemps si il n'y avait pas ces merdes de _.WAV).
Ceci dit, les DVSM peuvent parfaitement convenir aux Falconistes
bornΘs. Et puis bon, comme les DVSM existent, il serait stupide de
passer α cotΘ. Voici donc la description de leur entΦte...
Structure de l'entΦte :
-----------------------
OFFSET TAILLE DESCRIPTION
0- 5 6 Ces 6 octets doivent toujours contenir la chaine de
caractΦres ASCII suivante : "DVSM " (Identificateur)
6- 7 2 $0010 par dΘfaut (Longueur de l'entΦte)
8- 9 2 $00XX (FrΘquence du sample)
Les différentes valeurs de XX sont :
00= 8 KHz (8195 Hz)
01=10 KHz (9834 Hz)
02=12 KHz (12292 Hz)
03=16 KHz (16490 Hz)
04=21 KHz (20770 Hz)
05=25 KHz (24858 Hz)
06=34 KHz (33880 Hz)
07=50 KHz (49170 Hz)
10 1 $00=Normal, $02=Compression Deltapack
11 1 $00=8 Bit StΘrΘo, $01=16 Bit StΘrΘo, $02=8 Bit Mono
12-15 4 Longueur d'un block compressΘ (si compression il y a)
16-XX XX -SAMPLE- (dans le format indiquΘ dans l'entète)
Lorsque vous chargez ou sauvegardez un DVSM, vous devez
impΘrativement respecter la structure de l'entΦte. Bref, je vous fais
les mΦmes recommandations qu'avec les _.AVR...
-----------------------------------------------------------------------
-----------------------------------------------------------------------
LES FICHIERS _.JGL
------------------
Contrairement aux trois formats prΘcΘdents (_.SMP, _.AVR et _.DVS),
les fichiers _.JGL ne servent pas α sauvegarder UN seul sample, mais
PLUSIEURS samples...
Ces fichiers peuvent Φtre considΘrΘsé comme des Banques-de-samples.
Pour la petite histoire, sachez que les _.JGL ont ΘtΘ crΘΘ par
moi (Maxx-C Benny of LogiTron). Je ne les ais pas crΘΘ dans le but
stupide et inutile de faire un format en plus parmis tant d'autres
(bien que ce soit la mode depuis quelque temps...). Mais il y avait lα
un vΘritable besoin pour moi et mon logiciel (Jingle-Mix) de constituer
des banques de samples (ou plutot je devrais dire des banques de
jingles). Avec les _.JGL, je n'ais pas l'intention de rΘvolutionner le
monde musical. Mais pour ceux qui voudraient faire des logiciels du
mΦme type que Jingle-Mix ou compatible _.JGL, je vous donne la
structure d'un fichier _.JGL...
Tout d'abord sachez qu'un _.JGL est beaucoup plus compliquΘ qu'un
_.AVR ou qu'un _.DVS. Comprenez qu'il y a une entΦte composΘe de 2
parties bien distinctes, et qu'aprΦs l'entΦte il y a les samples
stockΘs α la queue leu leu...
La premiΦre partie de l'entΦte (48 octets) donne les informations
gΘnΘrales sur le fichier _.JGL en question.
La deuxiΦme partie (2000 octets par dΘfaut) donne les informations
sur les samples.
Bref, cela donne le schΘma suivant :
----------- 0 \
| | <=== PremiΦre partie \
|---------| 48 |
| | | EntΦte
| | <=== DeuxiΦme partie |
| | /
----------- 2048 <
| | <=== Sample #1 \
|- - - - -| |
| | <=== Sample #2 |
| | | Samples
|- - - - -| |
| | <=== Sample #3 |
|- - - - -| |
| | <=== Sample #4 /
----------- XX /
Ca parait monstrueux au dΘbut, mais lisez bien tout et vous
comprendrez...
Structure de l'entΦte :
-----------------------
OFFSET TAILLE DESCRIPTION
0- 7 8 Ces 8 octets doivent toujours contenir la chaine de
caractΦres ASCII suivante : "BENNYJGL" (Identificateur)
8- 9 2 $0800=2048 par dΘfaut (Taille de l'entΦte)
10-13 4 $XXXXXXXX (Taille des samples)
14-15 2 $0032=50 par dΘfaut (Nombre de samples)
16-47 32 Remplir avec ce que vous voulez (Zone libre)
Fin de la premiΦre partie de l'entΦte. Maintenant nous allons attaquer
la deuxiΦme partie (celle qui donne des infos sur les samples). Mais
avant sachez que Jingle-Mix sauve les _.JGL avec 50 samples (c'est pour
τa que j'ai mis "50 par dΘfaut" au nombre de samples dans la premiΦre
partie de l'entΦte).
Il sauve donc 50 samples MEME LORSQU'IL N'Y EN A PAS 50 ?!?!?
Oui, car ainsi l'entΦte totale fait 2048 octets ce qui est trΦΦΦΦs
pratique (ceux qui programment comprendront pourquoi).
Je vais prendre un exemple pour ceux qui n'ont pas tout saisi :
Imaginons que je veuille sauvegarder 14 samples dans un fichier _.JGL.
Je ne vais pas bΦtement mettre 14 dans 'Nombre de sample' (offset 14),
car je vais y mettre 50 (comme c'est indiquΘ par dΘfaut).
Mais j'aurais 50 samples me diront ceux qui ont suivit ?!?
Je leur rΘponds qu'ils ont tout α fait raison, on aura bien 50 samples.
Mais pour arriver α n'avoir que 14 samples on va tout simplement en
annuler 36...
De quelle maniΦre ? Tout simplement en mettant des 0 dans les
informations des 36 samples dont on ne se sert pas...
Les informations sur les samples sont dans la deuxiΦme partie de
l'entΦte. Comme il y a 50 samples, il y a 50 fois les mΦmes
types d'informations qui se rΘpΦtent. Je ne vais dΘcrire que les
informations sur le premier sample. Vous devez rajouter 40 aux offsets
pour le sample suivant, et ainsi de suite jusqu'au 50ieme sample...
OFFSET TAILLE DESCRIPTION
48-59 12 Nom du sample (avec le point et son extension)
60-63 4 Adresse du dΘbut
64-67 4 Adresse de fin
68 1 Format de l'amplitude ($08=8 Bit, $10=16 Bit, etc)
69 1 Nombre de voies ($01=Mono, $02=StΘrΘo, etc)
70-73 4 FrΘquence en Hertz ($XXXXXXXX)
74 1 Signe ($00=Non signΘ, $01=SignΘ)
75 1 Pack/Loop ($00 par dΘfaut)
Sinon $01=Compression
$10=Boucle
76-87 12 Remplir avec des 0 par dΘfaut (Zone rΘservΘe pour les
informations sur la compression ou la boucle)
Fin des informations sur le sample #1 (pour l'annuler mettre des 0)
88-127 40 Informations sur le sample #2
128-167 40 Informations sur le sample #3
168-207 40 Informations sur le sample #4
. . .
. . .
. . .
etc etc etc
. . .
. . .
. . .
2008-2047 40 Informations sur le sample #50
Fin de l'entète (ouf!), on passe aux samples
2048-XX XX Samples stockΘs α la suite (α la queue leu leu)
Et voila, c'est fini, ce fut assez hard mais on y est arrivΘ...
Si vous avez des questions, vous pouvez toujours me contacter :
maxxcbenny@hotmail.com
Tchao...
Maxx-C Benny
Ecrit le 19/04/94 et mis α jour le 25/09/2004 (10 ans + tard, whaouuu)