Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek
Uaktualniono: 31.07.2022

©2023 mgr Jerzy Wałaszek
I LO w Tarnowie

Interfejs SDL2:

SDL_MixAudioFormat

SPIS TREŚCI

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.

SDL_MixAudioFormat

Użyj tej funkcji, aby miksować dane dźwiękowe w określonym formacie.

Składnia

void SDL_MixAudioFormat(Uint8*          dst,
                        const Uint8*    src,
                        SDL_AudioFormat format,
                        Uint32          len,
                        int             volume)

Parametry funkcji

dst miejsce docelowe zmiksowanego dźwięku.
src źródłowy bufor dźwiękowy do zmiksowania.
format struktura SDL_AudioFormat reprezentująca pożądany format dźwięku.
len długość bufora dźwiękowego w bajtach.
volume głośność w zakresie 0 - 128, aby otrzymać pełną głośność dźwięku należy przyjąć wartość SDL_MIX_MAXVOLUME dla parametru volume.

Przykładowy kod

void MyAudioCallback(void *udata, Uint8 *stream, int len)
{
    extern SDL_AudioFormat deviceFormat;
    extern const Uint8 *mixData;
    SDL_memset(stream, 0, len);  // upewnij się, że to jest ciszą.
    // miksuj nasz dźwięk z ciszą przy głośności 50%.
    SDL_MixAudioFormat(stream, mixData, deviceFormat, len, SDL_MIX_MAXVOLUME / 2);
}

Uwagi

Funkcja przyjmuje bufor dźwiękowy src o długości len bajtów o formacie zdefiniowanym w parametrze format data i miksuje go do bufora dst, wykonując dodawanie, ustawianie głośności i przycinanie nadmiaru. Bufor wskazywany przez dst musi mieć również długość len bajtów danych o formacie format.

Funkcję udostępniono dla wygody – możesz miksować swoje własne dane dźwiękowe.

Nie używaj tej funkcji do miksowania ze sobą więcej niż dwóch strumieni próbek. Wynik wielokrotnego stosowania tej funkcji może być zniekształcony przez przycinanie, ponieważ nie ma w nie akumulatora o większym zakresie niż dane wejściowe (nie wspominając już o tym, iż jest to nieefektywny sposób wykonania tego zadania). Używaj funkcji miksujących z SDL_mixer, OpenAL lub zamiast tego napisz swój własny mikser.

Częstym nieporozumieniem jest to, iż uważa się tę funkcję za niezbędną do zapisu danych dźwiękowych do strumienia wyjściowego w dźwiękowej funkcji wywoływanej zwrotnie. Chociaż możesz to zrobić, to faktycznie potrzebna jest jedynie funkcja  SDL_MixAudioFormat() przy miksowaniu pojedynczego strumienia dźwiękowego z regulacją głośności.

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2023 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.