1

Suite à une discussion avec Anata hier sur #Jagfr, j'ai écrit ce tuto pour garder une trace de ses explications.
Et qui sait, ça servira peut-être à quelqu'un.

Donc merci à Anata, car sans lui, je n'aurais jamais trouvé le truc et j'aurais abandonné (faut dire que je n'étais pas encore sous pression grin)

Sujet : utiliser des .wav dans ses développement Lynx

Outils nécessaire :
- wav2lsf
- bin2c
- compilo Lynx...

Première chose, procurez un fichier .wav (pas trop gros quand même)
L'idéal semblant être 8 bits mono, 8khz (de toutes manières, la Lynx ne peut pas faire beaucoup mieux, je rappelle que la stéréo de la Lynx 2 n'est pas une vraie stéréo, on peut juste affecter chacun des 4 canaux sonores à l'haut-parleur de droite ou gauche).

1/ convertir le fichier .wav
wav2lsf test.wav -o test.lsf

2/ convertir le fichier .lsf (Lynx Sound Format) en fichier .h
bin2c -i test.lsf -o test.h -l test -c
explication des options :
- i test.lsf : nom du fichier en entrée
- o test.h : fichier en sortie
- l test : nom du tableau contenant le sample
- c : on génère au format c

3/ voilà, vous avez maintenant un fichier .h à inclure dans votre source c
Seule contrainte : éditez le fichier .h, la première ligne est sous la forme :
unsigned char test[16256] =
ou le nombre (16256) correspond à la longeur du tableau, enlevez cette information, i lvous reste donc :
unsigned char test[] =


4/ votre source c ressemble à ça :
#include <lynx.h>
#include <lynxlib.h>

#include "test.h"

#define BUTTON_OUTER   0x01
#define	BUFFER1	0x9000

// assembler vertical retrace syncronisation routine
void Vsync() 
{
#asm
vretrace:
	lda $fd0a
	bne vretrace
#endasm
}

main() {
	InitIRQ();
	CLI;

	SetBuffers(BUFFER1,0,0);
	SmpInit(0,1);
	EnableIRQ(1);

	for( ; ; )
	{
	    Vsync();
	    if(joystick & BUTTON_OUTER)   SmpStart(test, 0);
	}
}


Le sample est joué à l'appui sur le bouton.
Je vous laisse consulter les docs BLL pour en savoir plus sur les fonctions Smp*

5/ remarques diverses
- à priori, évitez les samples trop long, la restitution étant plutôt aléatoire

- je me suis fait un fichier wav2h.bat pour réaliser plus facilement les opérations 1 et 2 :

@echo off
cls
wav2lsf "%1.wav" -o "%1.lsf"
bin2c -i "%1.lsf" -o "%1.h" -l %1 -c

qui s'utilise comme ça : wav2h test

- si vous voulez wav2lsf ou bin2c :
http://fadest.free.fr/DevLynx/tutowav.zip
Il y a les outils, le sample (quelques secondes converties en 8bits mono depuis un mp3 rippé d'un de mes CD), les sources et le .o pour Handy.
J'ai remarqué que le sample restitue mal certaines fois, réessayez dans ce cas

- à vous de jouer, mais n'oubliez pas que si vous sonorisez votre jeu, vous empécherez les braves gens (ceux là même qui ralent contre les jeux silencieux sur ce forum) de dormir à la prochaine JC gni

- Vince, tu peux mettre se message en annonce si tu le juges utile...

- Vince, tu peux effacer ce message si tu préfères, mais laisses le au moins le temps que le message privé qui suit soit lu par la personne concernée grin

[Message privé]
Cool, maintenant que je sais jouer des .wav, j'aurais de beaux graphs
[/Message privé]

[Edit] : ajout du lien vers les binaires et les sources
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

2

Merci à Anata oui, et mettre ce topic en annonce serait une bonne idée smile

3

Merci Anata, maintenant on attend la suite c'est à dire Zic + WAV smile

4

Vince, tu peux deleter le topic, la personne concernée l'a lu grin

Pour les autres qui se réjouissent, vous vous souviendrez de ma signature lors de la prochaine JC quand Xerus se balladera parmi vous en testant Zic+WAV gni
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

5

J'ai mis en annonce mais pourquoi ne pas mettre à dispo les binaires de conversion ? problème de droits encore ?
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

6

et aussi : y'a les articles qui sont bien, le texte reste en haut de chaque page du topic lié et surtout plusieurs topics peuvent pointer sur le même article...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

7

Fadest : c'est tout simplement excellent, merci smile
Dès que j'ai du temps libre (euh... prochainement?), je teste ça!
Previously known as Damdam

8

vince :
et aussi : y'a les articles qui sont bien, le texte reste en haut de chaque page du topic lié et surtout plusieurs topics peuvent pointer sur le même article...

confus je te ferais la même réponse que Damdam, dès que j'ai du temps je regarde ça...

Sinon, pour le binaires, c'est de la flemme et je les ai pas trop ici, j'édites le message dès que je suis chez moi avec un chti exemple
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

9

ah ben bonne initiative, j'avoue que j'aurai pas fait mieux comme petit tuto, et surtout que je n'y aurai jamais pensé smile

bravo Fadest grin
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

10

Oui, enfin, c'est toi qui a tout fait, j'ai juste joué au secrétaire à partir de la log d'hier soir.
Et je me suis dit que si je t'ai cherché 2 ou 3 fois sur #Jagfr pour ça, ce serait peut-être utile à quelqu'un d'autre
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

11

eeek Fadest qui poste un tuto pour exploiter le son d’une machine atari ! On aura tout vu !
Altruiste ou intéressé ? Les deux vraisemblablement… C’est bien tu sembles motivé, ça promet une œuvre mythique pour l’année 2005 !

12

Le prochain tuto : comment faire bosser un graphiste / développeur (rayez la mention intuile dans votre cas)
Ce qu'il y a de bien, c'est que si Cyril me demande 1 page pour remplir Revival, hop, je n'ai qu'à ressortir ce tuto grin

J'ai une réputation à défendre, si je veux que le bilan de la JC 2k5 soit conforme à celui de la JC 2k4, il faut bien sonoriser un peu tout ça. Vous regretterez, moi je vous dis gni
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

13

j'amènerais un CD et un ampli 100Watts avec 80dB pour le niveau de son minimum #sourd# cheeky
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

14

non pas de techno !!!!
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

15

#sisi#
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

16

J'ai eu le temps de tester mais... le zip dispo au téléchargement est corrompu confus
Quelqu'un d'autre a téléchargé le pack proposé par Fadest?
Previously known as Damdam

17

Ah ?
Il faudra que je vérifies. Visiblement, ça n'intéresse pas grand monde ce genre de gadget sonore grin
Sinon, je t'envoies le pack par mail ce soir.
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

18

c'est dommage...

Sinon autre chose, as-tu pu jouer un peu avec ABC Music? Y'aura moyen de faire sons+musique?
Previously known as Damdam

19

sans avoir joué avec : oui mais rien d'autre... (y'a eu des discussions à ce sujet entre karri et chais plus qui sur la liste)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

20

ça sert à rien alors sad
Je pensais justement que le moteur ABC devait être plus léger que le lecteur de MODs...
Previously known as Damdam

21

oui mais à deux ils monopoliseraient le moteur d'it, les chainages de timers devant intégrer du code pour la double gestion... à moins d'attribuer deux cannaux à l'un et deux à l'autre mais là encore, j'ai de sérieux doutes... bien optimisé à fond, je dis pas que ça permettrait des prouesses mais par défaut l'architecture s'autobride par les contraites temporelles des ITs et de la vitesse d'exécution des commandes du proc sur le bus.
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

22

Ji remis l'archive, normalement ça marche.
Oui, j'ai réussi avec ABCMusic mais en utilisant le pack newcc65 que Karri a mis en ligne récemment je sais plus ou (cf topic sur Atari Age)
Seul(s) problème(s) de ce pack, il faut obligatoirement l'installer dans c:\lynx, les chemins sont en dur et le linker ne marche plus avec link65 *
Bon, je tatonne un peu mais j'ai pu compiler quelques trucs avec ABCMusic + sons digits.
en fait, 3 voies pour ABCMusic et 1 voie pour les digits sur TeenDance (un digit très court lors d'un appui correct sur la touche)
Maintenant, s'il y a plus de trucs à gérer, je sais pas si ça passe.
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

23

ouais, mais bon entre un digit court, qui monopolise pas longtemps le proc et un mod...

ajoute à ça le fait que les retards d'IT sont critiques. (en cascades en fait... celui qui gagne c'est le plus prioritaire, et quand y'a embouteillage, on ne traite que le plus prioritaire : le reset)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

24

Vi, mais pour ce que je voulais en faire (musique + bruitages sans énormément d'anims), ça passe.
Maintenant, le player de mod de Duranik, je connais pas, juste qu'il restitue à 6khz je crois et que c'est hyper dur de trouver un mod qui rende bien (cf auteur de la Lynx Reloaded).
De toutes manières, je suis persuadé que ceux qui réclament à cors et à cris de la zik dans les jeux Lynx se sont déjà précipités sur l'article de Karri sur ABCMusic et vont nous livrer de magnifiques mélodies.
Parce qu'il ne faut pas compter sur moi.
char tune[]="O1 X7 I0 V66 T33 R60 H2 K3 |:CDEEDEFFEFGEFDGG:"
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

25

La démo de conquistador a du son et de la musique et de ce qu'il avait dit il utilise ABC... Faudrait voir ce que fait le gars pour arriver à ce résultat. À première écoute il y a 2 canaux pour la musique et un pour le son.

Fadest, j'ai essayé ton wav.o mais pas de son. Ça marche pas sous Handy?
Previously known as Damdam

26

Tu as mis Sound Enable dans Handy ? (menu Options)
sinon, si, ça marche sous Handy, à l'appui sur le bouton
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

27

Ouaip j'ai bien Sound Enabled, dans le dout j'ai essayé d'autres roms et le son fonctionne bien, mais pas avec ton fichier. Je l'ai même recompilé mais ça fait la même chose, rien en fait sad Tu as quelle version de Handy?
Previously known as Damdam

28

La recompile du fichier .c , c'est normal, j'ai fait l'archive plus tard et il y a :
for(j=0 ; j < 10 ; j++)
au lieu de
for( ; ; )

en effet, j'avais pas mal modifié mon exemple pour en faire un vrai prog pour moi et j'ai reconstitué l'exemple a posteriori.

donc le programme termine avant que tu n'appuies sur le bouton.

Recompiles en modifiant cette ligne. La qualité sonore est plutôt mauvaise, voire ça s'initialise pas toujours super, mais ça marche ici.
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com

29

Je suis au boulot là mais de mémoire le programme fourni contient déja le for( ; ; )
J'avais quand même regardé dans le programme au cas où wink
Si j'ai le temps ce soir je vérifierai quand même, je peux me tromper.

Une dernière question, le niveau sonore est-il le même que celui du .wav?
Previously known as Damdam

30

Je pense que tu peux monter le son aussi, moi je poussais un peu le portable de mémoire
avatar
Futur ex éditeur de jeux Atari Lynx et Nintendo Game Boy
https://yastuna-games.com