audio_create_buffer_sound


La description

Avec cette fonction, vous pouvez créer un nouveau son à partir du contenu d'un tampon. Le tampon aura été créé précédemment (voir les fonctions du tampon pour plus de détails sur la façon de procéder) et des données ont été ajoutées ou chargées dans celui-ci. Vous passez ensuite à cette fonction avec le format de données (uniquement buffer_u8 ou buffer_s16 sont actuellement pris en charge), le taux d'échantillonnage (qui peut être compris entre 1000hz et 48000hz), et un décalage dans le tampon pour obtenir les données. Vous devez également fournir le nombre d'échantillons dans le tampon et les canaux requis par le son. Ces canaux sont définis par l'une des constantes suivantes:

Constant La description
audio_mono Mono (canal unique) audio.
audio_stereo Stéréo (double canal) audio.
audio_3D 3D (5.1) audio.


Notez qu'après avoir créé un son, vous devriez libérer l'index de pointeur qui lui est associé lorsqu'il n'est plus nécessaire d'utiliser la fonction audio_free_buffer_sound(). Si vous ne parvenez pas à le faire, puis ré-affecter la variable ou changer de salle, etc... l'ID sonore sera perdue et vous aurez une fuite de mémoire. Notez également que vous ne pouvez pas supprimer le tampon si un son a été créé et que le son n'a pas été libéré en premier. Ainsi vous libéreriez d'abord le son (ou les sons), puis le tampon. Il est également intéressant de noter que tout ajout au buffer, ou modification de la taille du buffer, après qu'un son ait été créé, donnera des résultats inattendus et n'est pas recommandé - une fois que vous avez commencé à créer des sons depuis n'importe quel tampon, vous ne devez pas manipuler d'une autre manière après.

IMPORTANT! Cette fonction n'est pas disponible avec la licence d'évaluation du produit.


Syntaxe:

audio_create_buffer_sound(bufferId, bufferFormat, bufferRate, bufferOffset, bufferLength, bufferChannels);


Argument La description
bufferId L'ID du tampon à utiliser.
bufferFormat Le format des données dans le tampon ( buffer_u8 ou buffer_s16 ).
bufferRate Le taux d'échantillonnage des données dans le tampon.
bufferOffset Le décalage dans le tampon pour lire les données d'échantillon de (en octets).
bufferLength La longueur du tampon (le nombre d'échantillons dans le tampon).
bufferChannels Les canaux à utiliser à partir de l'une des constantes listées ci-dessous.


Résultats:

Index


Exemple:

rate = 44100;
hertz = irandom_range(220, 880);
samples = 44100;
bufferId = buffer_create(rate, buffer_fast, 1);
buffer_seek(bufferId, buffer_seek_start, 0);
num_to_write = rate / hertz;
val_to_write = 1;
for (var i = 0; i < (samples / num_to_write) + 1; i++;)
   {
   for (var j = 0; j < num_to_write; j++;)
      {
      buffer_write(bufferId, buffer_u8, val_to_write * 255);
      }
   val_to_write = (1 - val_to_write);
   }
soundId = audio_create_buffer_sound(bufferId, buffer_u8, rate, 0, 44100, audio_mono);

Ce qui précède crée un tampon, puis le remplit de manière procédurale avec des données. Ces données sont ensuite utilisées pour créer un nouveau son, qui est stocké dans la variable "soundID".