CODINGAMSLIVE ★ AMSLIVE n°14 - SOUND PLAYER 2 ★

AMSLIVE n°14 - Sound Player 2Coding Amslive

Hello, coders sans peur et sans reproches ! Après la petite introduction aux samples parue dans Amstrad Live n°12 , nous allons pouvoir entrer dans le vif du sujet...

JOUONS UN SAMPLE
(ET TORDONS LE COU AUX RUMEURS)

Tout d'abord, mettons une petite estocade au sieur Shap, à qui il arrive parfois de faire quelques petites erreurs. Bon, ok, je l'ai faite aussi cette erreur, mais il est si bon parfois de voir que même des dieux (oh ! Padon : Dieux) vivants comme notre cher Shapounet national peuvent faire des erreurs, provenant d'une lecture trop rapide de certains articles d'Amstrad Live. Si si ! Je résume l'histoire :
Shap et moi venions de recevoir un 3etit cadeau de Papa Ram7 (qui, à défaut d'une longue barbe blanche et de rennes dispose plus avantageusement de polos avec de jolis motifs de HBL (Private joke)), à savoir : Deux MemCards toutes neuves. Aussitôt Shap et moi entreprîmes de jouer des samples d'une taille monstrueuse. Le Drincipe était simple : Ecumer le Web à la recherche de MP3 corrects, les convertir en Wav, le bidouiller pour leur donner une forme plus acceptable (8 bits 15625 Hz mono), et enfin les transférer sur le CPC pour les jouer via la SoundPlayer. Nous avons vite fait de créer des fichiers RAW non signés. Eh bien NON ! La Soundplayer, peu satisfaite des données envoyées, n'a accepté de ne nous donner qu'un affreux mélange de gargouillis et crachotis en tous genres. Pourquoi ? Lisez Amstrad Live n°7, page &10 à &12. (NDSNN : La caisse est ouverte, Messieurs Dames, envoyez la thune ! Non, je plaisante !)
Pour ceux qui n'ont pas la chance de posséder ce numéro désormais mythique de votre fanzine préféré, je cite quelques lignes de l'article de Siou sur le port imprimante (que peu de gens ont dû lire : Il semblerait que les articles de Siou, comme ceux de MadRam, sont jugés trop complexes par certains lecteurs chagrins. Et bien moi je dis : Ces articles sont peut-être un peu compliqués à comprendre, mais ils en valent la peine. Tous ceux qui se plaignent de ne pas comprendre leurs articles peuvent m'écrire directement, je me ferais un plaisir de les envoyer se faire voir) :

"Par souci d'économie, D7 a été remplacé par /STROBE car le composant qui gère la sortie du port ne comporte que huit fils.

[...] La seule chose a savoir c'est que /STROBE c'est D7 inversé". Ceci implique que pour mettre le bit 7 du port imprimante à 1, il faut faire un out &EF00,0. Pour le remettre à 0, il faut faire un OUT &EF00,128.

En conclusion, la SoundPlayer joue des samples SIGNES, contrairement à ce qu'on pourrait croire !

Pour vous en convaincre, vous trouverez dans le coin un petit programme BASIC qui affiche un sample. Essayez-le sur un fichier "SAV?.smp" livré avec le CocOOn Player v1.4!

10 MODE 1
20 MEMORY &3FFF
30 CAT:INPUT"Nom du sample :",a$
40 LOAD a$,&4000
50 MODE 2:MOVE 0,128
60 FOR x=0 TO 639
70 add = &4000 + INT((x*16383)/640)
80 DRAW x,(PEEK(add)) XOR 128
90 NEXT

En conclusion : Si vous avez un problème pour restituer un sample, assurez-vous avant tout chose que votre sample est bien signé. D'autre part vous verrez plus loin que gérer des tables d'ondes dans le format signé est bien plus pratique dans certains cas (le but de cette phrase est juste de vous tenir en haleine). Mais commençons par le commencement :

FREQUENCE D'UN SAMPLE

La fréquence d'un sample, c'est le nombre de "photographies" qui ont été effectuées durant une seconde pour capturer la forme du son. Ainsi, un sample à 44100 Hz est un sample qui possède 44100 "photographies" par seconde.
Il va donc de soi que pour restituer un sample à 44100 Hz, il va falloir envoyer des données 44100 fois par seconde.

Heureusement, nos valeureux combattants du CocOOn SySteM arrivent une fois encore à notre secours : Il existe une formule magique permettant de donner le nombre de NOP nécessaires entre chaque OUT pour restituer une fréquence donnée :

Nb de NOPs=(10A6)/fréquencePrécision : Le nombre de NOPs est une période.

Par exemple, pour une fréquence de 15625 Hz, le nombre de NOPs nécessaires est de 64 ! Quelle surprise ! Ah, vous n'êtes pas surpris ? Alors allez jeter un coup d'oeil sur les articles d'Offset sur le DMA son, parus dans Quasar... (NDSNN (avec casquette "Quasar" sur la tête : Par ici, Messieurs Dames, la caisse est ouverte !).
Cette formule révèle un problème assez ennuyeux pour nous. En effet les formats de sample "standard" (des lecteurs CD, du PC, etc) sont de 11025 Hz, 22050 Hz et 44100 Hz, et la formule nous donne pour ces fréquences 90.7029, 45.3514, et 22.6757. Comme nous ne pouvons pas couper les NOPS, cela implique qu'il est pratiquement impossible de jouer un sample standard à sa fréquence d'origine, il sera toujours joué un peu plus rapidement ou un peu plus lentement par rapport à sa vitesse d'enregistrement. Il faudra donc passer par un programme de conversion pour pouvoir restituer un sample à la vitesse exacte.

Pour info, le CocOOn Player v1.4e (la version qui peut jouer un sample de 2 Mo) est capable de restituer un sample à une fréquence un peu supérieure à 37000 Hz, tout en affichant les petites ondulations auquelles vous étiez habitués avec la version 1.4. Jouer un sample à 44000 Hz devrait donc être tout à fait envisageable !

Comment jouer des notes particulières à partir d'un seul sample ?
En d'autres termes : J'ai un joli sample de guitare jouant un LA, et je voudrais en faire un SI. Comment faire ?

Eh bien, ce n'est pas très compliqué. Tout à l'heure nous avons vu que si on ne jouait pas un sample à la fréquence exacte à laquelle il a été enregistré, le son obtenu était plus grave ou plus aigu. On voit donc que pour transformer notre LA en SI, il conviendrait de jouer le sample de guitare un peu plus vite de façon à ce que le son soit plus aigu et donne un SI. Attention cependant, il ne faut pas y aller au petit bonheur la chance, ce genre de choses se calcule.

Pour obtenir la différence de fréquence entre le LA et le SI (toujours identique quel que soit l'octave), je vous renvoie à votre manuel de l'Amstrad, Partie 5. Vous y trouverez les périodes de chaque note. Dans ce manuel on trouve que le LA de l'octave -4 a une période de 2273, et celui du SI a une période de 2025. l'opération 2273/2025 nous donne 0.8909. Si notre sample de guitare est à 15625 Hz, il suffira de calculer sa période de restitution normale (Nb de NOPS) multipliée par le nombre que nous venons de trouver. C'est à dire : Période pour un Sl=64*0.8909=57. Il suffira donc de jouer le sample avec une période de 57 NOPs au lieu de 64 pour jouer un SI au lieu d'un LA. La vie est belle.

ZE END (ILL BE BACK !)

C'est tout pour aujourd'hui ! j'attends de voir sortir un peu plus de choses pour la SoundPlayer, vu que maintenant vous ne pouvez plus prétendre que vous ne savez pas trop comment marche la petite carte son des Futurs, bande de petits fainéants que vous êtes ! Dans le pi hain article, nous verrons comment calculer nos propres samples, et pourquoi pas, comment faire un petit tracker.

Codez bien d'ici là !

AMSLIVE n°14

★ ANNÉE: ???
★ AUTEUR: ONE

Page précédente : AMSLIVE n°14 - Multiplication Saignee a Mort

CPCrulez[Content Management System] v8.75-desktop
Page créée en 582 millisecondes et consultée 1480 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.