Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: [Résolu] Comment arrêter un son sous Palib?  (Lu 1260 fois)
0 Membres et 1 Invité sur ce fil de discussion.
tahiti_jul Hors ligne
Newbie
*
Messages: 2


Voir le profil
« 11 Octobre 2008, 13:03:21 »

Bonjour à tous,

Voilà je souhaite débuter la programmation nds, et commencer un petit projet pour l'audio (un pad électronique: lancer un sample d'une percussion, il doit exister un paquet d'homebrew faisant ça mais j'aimerais le faire à ma façon Smiley).

Le kit de dev Palib est bien installé, pas de soucis pour compiler les exemples (en suivant les superbes exemples du wiki, j'ai eu des soucis pour lire un son, mais en utilisant les fonctions d'Aslib, ça marche).
 
Le but étant que je souhaite lancer un son à l'appui du stylet sur l'écran, mais pas forcément en entier, si on rappuie sur le stylet et que la lecture du sample n'est pas finie , ça coupe la lecture pour la relancer, j'espère que je suis clair  whistle mais soucis avec le code suivant: le sample est lu en entier, même si je rappuie sur le stylet, ce n'est pas ce que je cherche à faire.

Code:
// Includes
#include <PA9.h>       // Include for PA_Lib
#include "Kick.h"

// Function: main()
int main(int argc, char ** argv)
{

PA_Init(); // Initialisation de PA_Lib
PA_InitVBL(); // Initialisation de la VBL standard

AS_SetDefaultSettings(AS_PCM_8BIT,11025,AS_NO_DELAY);

// Infinite loop to keep the program running
while (1)
{
// Check the stylus presses :
if (Stylus.Newpress)
{
   AS_SoundStop(0);
   AS_SoundQuickPlay(Kick);
}
PA_WaitForVBL();
}

return 0;
} // End of main()

Voilà si quelqu'un pouvait m'aider, ce serait cool, soyez indulgents je débute dans la programmation nds (enfin dans la programmation tout court ..).
merci a+

Julien
 


Journalisée
Kram Hors ligne
Débile en chef
*****
Messages: 420


Voir le profil WWW
Bip Bop.

« Réponse #1 : 11 Octobre 2008, 13:20:23 »

Bienvenue tahiti_jul !!

Alors, pour ton problème, je pense savoir d'où ça vient Smiley

La fonction c'est ça : AS_SoundStop (u8 chan). Donc tu dois arrêter le bon chan pour que le son stop.
Pour savoir dans quel chan tourne le son, tu fais comme ça :

u8 chan = AS_SoundQuickPlay(Kick);

Et donc pour arrêter le son :

AS_SoundStop (chan);

en gros, pour ton code, tu devrais plutôt faire ça :

Code:
// Includes
#include <PA9.h>       // Include for PA_Lib
#include "Kick.h"

u8 chan;

// Function: main()
int main(int argc, char ** argv)
{

PA_Init(); // Initialisation de PA_Lib
PA_InitVBL(); // Initialisation de la VBL standard

AS_SetDefaultSettings(AS_PCM_8BIT,11025,AS_NO_DELAY);

// Infinite loop to keep the program running
while (1)
{
// Check the stylus presses :
if (Stylus.Newpress)
{
   AS_SoundStop(chan);
   chan = AS_SoundQuickPlay(Kick);
}
PA_WaitForVBL();
}

return 0;
} // End of main()

Voilà Cheesy

Je te garantie pas que c'est ça le problème, mais test et on verra bien Smiley
Journalisée

tahiti_jul Hors ligne
Newbie
*
Messages: 2


Voir le profil
« Réponse #2 : 12 Octobre 2008, 20:25:43 »

Merci de ta réponse  Smiley, je n'avais pas pensé à récupérer la valeur de chan.

J'ai testé et cela a résolu le problème, par contre j'ai l'impression que la lecture du fichier met un léger temps à démarrer, mais je vais tout d'abord vérifier que ça ne provient pas de mon sample ...  Lips Sealed

En tout cas merci de ton aide.
Journalisée
Pages: [1]   Haut de page
Imprimer

Aller à: