Table des matières du kit Midi     Index du kit Midi

BSamples

Hérité de: (aucun)

Déclaré dans: be/midi/Samples.h

Bibliothèque: libmidi.so

Résumé

La classe BSamples permet de présenter des échantillons sonores (samples) en entrée du mixeur General MIDI. Dans cette classe, le rôle principal (désignation et fréquence de restitution de l'échantillon à jouer, en bouclage ou non...) est dévolu à la fonction Start(); les autres fonctions contrôlent et affinent le son lorsqu'il est joué. Pour apprendre à vous servir d'un objet BSamples, allez consulter la fonction Start().

En théorie, vous pouvez créer et jouer (au même moment) autant d'instances de BSamples que vous le désirez; en pratique, vous serez limité par le nombre de voix échantillonnées (quatre par défaut) défini par la fonction SetVoiceLimits() de la classe BSynth.


Constructeur et Destructeur


BSamples()

                                                         
  

BSamples(void)

Crée un nouvel objet BSamples vide, ainsi qu'une instance de BSynth désignée par la variable globale be_synth (si cet objet n'existe pas déjà). Pour initialiser et utiliser l'objet BSamples, appliquez sa fonction Start().

 
Actuellement, le mode "échantillons seuls" (B_SAMPLES_ONLY) du synthétiseur est hors service, et c'est, par malchance, l'option retenue par le constructeur de BSamples pour générer un objet be_synth. La manière la plus simple de contourner ce problème est de construire une instance de BMidiSynth ou de BMidiSynthFile que vous pourrez détruire aussitôt après, si vous n'en avez pas l'utilité (le problème est résolu par la création de l'objet).



~BSamples()

                                                         
  

virtual ~BSamples()

Arrête l'objet dans sa restitution sonore, appelle la fonction "exitHook" définie dans Start(), puis détruit l'objet.


Fonctions membres


EnableReverb()

                                                         
  

void EnableReverb(bool reverb)

Si reverb contient la valeur true, les données sonores de l'objet passent par la réverbération du synthétiseur. Utilisez BSynth::SetReverb() pour déterminer la profondeur de la réverbération (ce qui agira sur tous les sons réverbérés).


IsPlaying() voir Stop()


Pause() voir Stop()


Placement() voir SetSamplingRate()


Resume() voir Stop()


SamplingRate() voir SetSamplingRate()


SetPlacement() voir SetSamplingRate()


SetSamplingRate() , SamplingRate() , SetPlacement() , Placement() , SetVolume() , Volume()

                                                         
  

void SetSamplingRate(double samplingRate)

double SamplingRate(void) const

void SetPlacement(double stereoPan)

double Placement(void) const

void SetVolume(double volume)

double Volume(void) const

Ces fonctions ajustent les paramètres du son, et peuvent être appelées durant sa restitution. Pour les détails sur la signification de ces paramètres et les valeurs qu'ils acceptent, reportez-vous aux descriptions des arguments samplingRate, stereoPan, et volume de la fonction Start().


SetVolume() voir SetSamplingRate()


Start() , sample_loop_hook , sample_exit_hook

                                                         
  

void Start(void *samples, int32 frameCount, int16 sampleSize, int16 channelCount, double samplingRate, int32 loopStart, int32 loopEnd, double volume, double stereoPan, int32 hookArg, sample_loop_hook loopHook, sample_exit_hook exitHook)

typedef bool (*sample_loop_hook)(int32 arg)

typedef void (*sample_exit_hook)(int32 arg)

Start() présente à un buffer audio des échantillons qui seront immédiatement restitués. La lecture est effectuée par le thread BSubscriber du synthétiseur. La fonction Start(), quant à elle, revient aussitôt.

Les données audio sont attendues sous forme little-endian linéaire. Les autres paramètres des données (taille de l'échantillon, nombre de canaux, etc...) sont des variables déclarées dans les arguments de la fonction. Voici ces arguments:

 
Actuellement, la période d'extinction du son est automatiquement atténuée sur un bref laps de temps. Si le relâchement de votre son est conçu pour produire une atténuation plus lente, vous ne l'entendrez probablement pas.



Stop() , Pause() , Resume() , IsPaused() , IsPlaying()

                                                         
  

virtual void Stop(void)

void Pause(void)

void Resume(void)

bool IsPlaying(void) const

bool IsPaused(void) const

Stop() interrompt le travail de restitution sonore de l'objet, et appelle la fonction "exitHook", définie dans Start().

Pause() suspend la lecture tandis que...

Resume() la reprend à partir du point d'interruption.

 
Les fonctions Pause() et Resume() sont interverties. Pour suspendre un son, appelez Resume(), et Pause() pour le reprendre. Nous en sommes désolés.


IsPlaying() renvoie la valeur true si l'objet est actuellement en cours de restitution (suspendue ou non).

IsPaused() renvoie la valeur true si la restitution sonore est actuellement suspendue.

 
La fonction IsPaused() devrait renvoyer true si vous avez appelé Pause()... Or, étant donné que Pause() et Resume() sont interverties, la logique de IsPaused() est inversée.



Volume() voir SetSamplingRate()


Table des matières du kit Midi     Index du kit Midi


The Be Book,
...in lovely HTML...
for BeOS Release 5.

Copyright © 2000 Be, Inc. All rights reserved..