Son/Enregistrement - Routines d'enregistrement




int install_sound_input(int digi_card, int midi_card);
Initialise le module d'enregistrement, retourne zero en cas de succes. Vous devez l'installer apres les driver standard Les deux parametres de carte doivent etre les memes constantes que install_sound(), incluant DIGI_NONE et MIDI_ NONE pour desactiver des parties du module ou DIGI_AUTODETECT et MIDI_AUTODETECT pour la recherche du materiel.

void remove_sound_input();
Retire le driver apres avoir fini avec les routines d'enregistrement. Vous n'avez normalement pas besoin de l'appeler car remove_sound() ou allegro_exit() le font.

int get_sound_input_cap_bits();
Cherche quel est le format de sample compatible avec la carte son. Le retour est un champ de bit avec les valeurs suivantes :

0 = enregistrement non suporte
8 = 8bits supportes
16 = 16bits supportes
24 = 8 et 16 bits supportes

int get_sound_input_cap_stereo();
Cherche si le driver courant suporte la stereo.

int get_sound_input_cap_rate(int bits, int stereo);
Retourne la frequence maximum d'enregistrement dans le format specifie ou zero s'il n'est pas supporte.

int get_sound_input_cap_parm(int rate, int bits, int stereo);
Verifie si le frequence, le nombre de bits et le choix mono stereo sont supportes par la carte, les valeurs suivantes sont retournees :

0 = enregistrement dans ce format impossible
1 = enregistrement possible avec sortie coupee
2 = enregistrement possible avec sortie d'un son
-n = frequence non supportee, essayer n

int set_sound_input_source(int source);
Selectionne la source, renvoie zero en cas de reussite et -1 si le materiel ne peut pas. Les parametres sont :

SOUND_INPUT_MIC - micro
SOUND_INPUT_LINE - entree ligne
SOUND_INPUT_CD - entree CD

int start_sound_input(int rate, int bits, int stereo);
Debute l'enregistrement dans le format indique, arrete la sortie son si necessaire et renvoie la taille du buffer en mots en cas de reussite ou zero sinon.

void stop_sound_input();
Arrete un enregistrement, et remet la carte en mode normal de lecture.

int read_sound_input(void *buffer);
Deplace le plsu recent buffer audio a l'adresse specifiee, retourne une valeur autre que zero si le buffer est copie zero si aucune nouvelles donnees ne sont presentes. La la taille du buffer est obtenue par le retour de la fonction start_sound_input(). Vous devez appeler cette fonction a intervalles reguliers pendant l'enregistrement ( 100 fois par seconde ) ou des donnees seront perdues. Si vous ne pouvez le faire de votre code principal, utilisez la fonction callback de digi_recorder() pour sauver les donnees dans un plus grand buffer. Note : quelques cartes produisent un clic lors du passage du mode enregistrement a lecture c'est donc une bonne idee que de vider le premier buffer apres le demarrage de l'enregistrement. Les donnees sont toujours stockees dans un format non signe avec une valeur gauche precedant une valeur droite.

extern void (*digi_recorder)();
Si cette variable est active, cette fonction est appelee par le driver d'entree des qu'un bouveau buffer sample est pret. A ce moment, vous pouvez utiliser read_sound_input() pour copier les valeurs dans differentes destination permanentes. Cette routine tourne dans un contexte d'interruption, elle doit etre rapide, le code ne doit pas etre protege et vous ne pouvez appeler de fonction systeme ni acceder aux disques.

extern void (*midi_recorder)(unsigned char data);
Cette fonction est appelee par le driver d'entree midi quand un nouveau mot de donnee midi arrive. Cette fonction s'execute dans un contexte d'interrution, les restrictions sont les meme que pour digi_recorder().



Retour au sommaire