Bonjour,
quelqu'un aurait il un exemple de code pour jouer un échantillon de musique typiquement sur Falcon (pas avec le Yamaha!)?
Olivier
/* Test and lock sound systeme */
if( Locksnd()==1 )
{
/* Set playback(0) buffer */
Setbuffer ( 0, adr_buffer+128, adr_buffer+taille_fichier );
/* fichier AVR, le sample commence à +128 */
/* sample 8 bit stéréo */
Setmode( 0 );
/* src=DMA, dest=D/A, scrclock=25.175Mhz, prescale=25khz, protocol=1 */
Devconnect( 0, 8, 0, 3, 1);
/* DMA sound playback sans loop */
Buffoper ( 1 );
/* le son démarre */
Sound_play=TRUE;
}
/* le programme continue sa route ... */
evnt_timer(2000);
if( Sound_play==TRUE )
{
Sound_play=FALSE;
/* Stop DMA sound playback */
Buffoper ( 0 );
/* Unlock sound systeme */
Unlocksnd();
}
Nalfus (./2) :
http://toshyp.atari.org/en/004011.html/* Test and lock sound systeme */ if( Locksnd()==1 ) { /* Set playback(0) buffer */ Setbuffer ( 0, adr_buffer+128, adr_buffer+taille_fichier ); /* fichier AVR, le sample commence à +128 */ /* sample 8 bit stéréo */ Setmode( 0 ); /* src=DMA, dest=D/A, scrclock=25.175Mhz, prescale=25khz, protocol=1 */ Devconnect( 0, 8, 0, 3, 1); /* DMA sound playback sans loop */ Buffoper ( 1 ); /* le son démarre */ Sound_play=TRUE; } /* le programme continue sa route ... */ evnt_timer(2000); if( Sound_play==TRUE ) { Sound_play=FALSE; /* Stop DMA sound playback */ Buffoper ( 0 ); /* Unlock sound systeme */ Unlocksnd(); }
Nalfus (./5) :
Il y a la fonction buffptr() qui donne la position des pointeurs DMA en lecture et écriture.
Tu divises ton buffer en 2 (ou le double), et tu mets à jour l'une des parties quand le pointeur DMA passe dans l'autre.
GT Turbo (./9) :C'est ce qui se passait sur les toutes premières cartes son PC, et je crois me souvenir que les gens se plaignaient de craquements périodiques. Peut-être que sur un ST ça passe, mais ce n'est pas un truc que je recommanderais.
Vu la priorité du timer, si tu colle une routine assembleur propre, je pense que cela doit pas s'entendre (A part peut etre Zerosquare, mais encore heureux que la population a pas la même oreille que lui... ) Bon perso j'ai pas essayer.
GT Turbo (./9) :Je pense pas que ce soit une technique de porc, à mon avis ça a justement été prévu pour faire ça : c'est une solution classique à ce problème et ça marche bien
Sinon il y a une technique un peu de 'gorret'. Tu peux jouer le son en replay infini. Tu lance ta reproduction sonore en inifni, puis direct après tu écris l'adresse du nouvel echantillon, qui sera jouer seulement a la fin de celui qui est en cours. Et après a chaque interruption, tu écris l'adresse du prochain, ce qui fait que tu as un échantillon d'avance Et le micro s'occupera tout seul du bouclage
GT En boucle !!!
GT Turbo (./9) :
[...] Tu lance ta reproduction sonore en inifni, puis direct après tu écris l'adresse du nouvel echantillon [...]
Nalfus (./14) :
Juste au cas où, le sample doit être en ST RAM
Nalfus (./16) :
Testé sur MyAES_Aranym_demo
http://dl.free.fr/tvcO1gFC7
GT Turbo (./18) :
Ok donc c'est règler.
J'etais juste en train de me demander si il y avait pas un volume a fixer.
GT Sans son