Opcje linii poleceń :: Definiowanie sygnału - plik konfiguracyjny :: Źródła :: Generowanie sygnału PCM :: Konwersja do postaci analogowej

Generator sygnałów

Opcje linii poleceń

Program obsługuje typowe opcje w stylu unixowym:

Wszystkie opcje poza -d i -h są obowiązkowe. Po opcjach należy wskazać używany plik konfiguracyjny opisujący sygnał. Przykład wywołania:

./generator -d /tmp/log -o dsp -r 48000 -O /dev/dsp0 config.txt

Definiowanie sygnału - plik konfiguracyjny

Tryb wyjścia oraz częstotliwość próbkowania podawane są jako parametry linii poleceń, natomiast sygnał opisywany jest w pliku tekstowym o następującym formacie:

Źródła

Program napisany został w C i dystrybuowany jest w postaci źródłowej. Celem zbudowania programu należy wydać komendę make w katalogu z źródłami. W przypadku modyfikowania plików nagłówkowych konieczne jest wydanie polecenia make clean && make.

Program został podzielony na moduły:

Pobierz

Generowanie sygnału PCM

Tworzony sygnał PCM przechowywany jest jako tablica 16 bitowych liczb całkowitych ze znakiem. Tablica jest alokowana dynamicznie w oparciu o informacje o częstotliwości próbkowania i długości okresu sygnału. Proste funkcje (kwadrat, sinus, piły i trójkąt) generowane są bezpośrednio w kodzie programu w oparciu o przebieg pętli po kolejnych próbkach należących do okresu sygnału. Bardziej złożone funkcje (tryb FUNCTION) generowane są z wykorzystaniem programu calc, który w sposób strumieniowy wykorzystywany jest w pętli przebiegającej po kolejnych próbkach sygnału.

Konwersja do postaci analogowej

Konwersja do postaci analogowej z wykorzystaniem karty dźwiękowej wykorzystuje (do wyboru) mechanizm pliku urządzenia /dev/dsp lub bibliotekę ALSA. Realizacja przetwarzania polega na przekazaniu przygotowanej wcześniej tablicy próbek do podsystemu dźwiękowego celem odtworzenia na wyjściu karty dźwiękowej. Metoda ta wiąże się z ograniczeniem możliwych do zastosowania wartości częstotliwości próbkowania do wartości wspieranych przez karty dźwiękowe.

Konwersja do postaci analogowej z wykorzystaniem przystawki mikrokontrolerowej odbywasię się poprzez przekazanie tablicy próbek do mikrokontrolera który odpowiedzialny jest za przekształcenie ich na postać analogową. Próbki przekazywane są z wykorzystaniem portu szeregowego. Ze względu na to iż okres rozsądnego sygnału składa się na ogół z niewięcej niż stu próbek (jest to wynik testów niniejszego programu na karcie dźwiękowej, przy złożonych lub mniej okresowych sygnałach liczba ta może być większe) wszystkie dane przekazywane są za jednym razem. W obecnej wersji przystawka mikrokontrolerowa nie została zrealizowana ze względu na brak w posiadanych zasobach mikrokontrolera z wbudowanym przetwornikiem cyfrowo-analogowym (ku mojemu zaskoczeniu taka funkcjonalność jest żadkością w serii AVR).



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/inne/other_projects/generator) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2015-09-22 20:05:04 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).