Obsługa programu ST-AudioWeaver (DSP na STM32) z STM32F769IG-DISCO
Gdy cały system jest połączony i skonfigurowany, można przejść do sprawdzenia możliwości środowiska. Przygotowałem prosty kod, który zawiera efekt delay, equalizer oraz blok odpowiedzialny za zmianę głośności sygnału (tłumik). Pełny kod znajduje się w sekcji „do pobrania”.
Kod, który pokazuje się na początku zawiera 8 wejść audio płytki (USB stereo, Jack 3,5 mm stereo i 4 mikrofony MEMS) oraz 4 wyjścia audio systemu (Jack 3,5 mm stereo i USB stereo). W systemie podłączę wejście analogowe płytki z wyjściem USB. Pozwala to przekazać sygnał z wejścia (do którego można podłączyć np. mikrofon) bezpośrednio do komputera. Wejścia mikrofonów MEMS połączę ze sobą za pomocą bloku Interleave z folderu Signal Management, aby potem skierować je do miernika Meter (folder Sinks). Aby zmienić liczbę sygnałów, które można dołączyć do bloku Interleave, należy wybrać z menu kontekstowego opcję View Properties, a następnie na panelu dolnym zmienić wartość w kolumnie Value (w tym przypadku potrzeba 4 wejść).
Rys. 7. AudioWeaver – blok Meter
Główna część przykładu ma miejsce jednak w torze między wejściem z USB a wyjściem stereo Jack. Aby ułatwić sobie pracę, można połączyć oba kanały tak, aby pracować na jednym sygnale w programie. W tym celu użyję bloków Interleave oraz Deinterleave. Oba znajdują się w folderze Signal Management.
Rys.8. AudioWeaver – bloki Interleave i Deinterleave
Pierwszym elementem w torze audio jest Volume Control. Ten blok ma za zadanie umożliwić użytkownikowi sterowanie głośnością w czasie rzeczywistym. Można go znaleźć w folderze Gains.
Rys. 9. AudioWeaver – blok Volume Control
Kolejnym blokiem audio jest Graphic EQ. Jest to 10-punktowy korektor graficzny – zestaw filtrów który pozwala na podbijanie bądź tłumienie określonych pasm częstotliwości. Blok ten można znaleźć w folderze Filters.
Rys. 10. AudioWeaver – blok Graphic EQ
Ostatnim elementem toru audio jest prosty efekt opóźnienia. Do zaprojektowania użyłem bloków Miliseconds Delay z folderu Delays. Niestety darmowa wersja pozwala na opóźnienie tylko do 10 ms. Aby efekt był słyszalny użyłem sześciu bloków połączonych szeregowo, co pozwala na uzyskanie opóźnienia do 60 ms. Takie też zostało ustawione – wszystkie bloki mają maksymalne opóźnienie. Do zmiksowania sygnału czystego i opóźnionego wykorzystałem blok Wet Dry z folderu Mixers (jest on wygodny do efektów dźwiękowych).
Rys. 11. AudioWeaver – efekt delay
Aby skompilować i wgrać kod na płytkę należy nacisnąć granatowy przycisk Play na górnym panelu. Poniżej znajduje się pełny kod przykładu.
Rys. 12. AudioWeaver – przykładowy kod
Działanie kodu przedstawiono na ponizszym materiale wideo: