Spektrum analysator

Programmet implementerar en simpel spectrum analysator.

Programmet läser in en snutt ljuddata, gör numerisk Fourier-transform på denna, och sedan plotta amplituden. Vinkelinformationen kastas bort. Före FFT-analysen appliceras ett Hamming-window för att undertrycka artefakter i FFT-datat.

Användargränssnitt

Frekvensskalan plottas logaritmiskt från 20Hz till 20kHz. Dessutom plottas 1/3 oktav band också, som frekvensreferens.

Amplitudskalan plottas i dB där överkanten på skärmen motsvarar maximal insignal. Underkanten motsvarar -70dB, men detta kan ändras genom att man ändrar variablerna ref_level och min_level i main.cc. Hade jag haft mer tid hade jag gjort så att det gick att ändra dessa utan att kompilera om programmet. Var tioende dB plottas i vänsterkanten.

0dB-referensnivån går också att ändra i main.cc om man skulle vilja, men jag kan inte se någon anledning till att sätta den till något annat än 1.0, eftersom detta motsvarar den maximala insignalnivån från ljudingången.

Det går att växla mellan fullskärmsläge och fönsterläge genom att trycka 'F' respektive 'W'. Det går att avsluta programmet genom att trycka på escape-tangenten.

Ljudingång

Programmet använder operativsystemets förvalda ljudingång, och detta går inte att ändra. Mikrofon rekommenderas.

Begränsningar

Samplingshastigheten och längden på FFT-datat kan ändras genom editera filen common.hh. Tyvärr är maximala FFT-längden begränsad pga att programmet är lite naivt skrivet och använder väldigt mycket stack. Men det är ju ett StackHack... :-)

Andra genvägar jag tagit är att fönstret är hårdkodat till 400x200 detta kan lätt ändras genom att mecka med variablerna width och height i main.cc.

Bygginstruktioner

Jag har testat programmet på MacOSX 10.4.3 med Xtool 2.1 och Window XP med MinGW, men det bör vara väldigt lätt att få programmet att fungera även under Linux och alla andra system som stöds av GLFW och PortAudio.

Programmet antar att GLFW finns installerat på systemet. Sökväg till GLFW går att sätta i config.mk vid behov.

Byggsystemet kräver GNU Make, och kommer inte fungera med någon annan makevariant.

För att kompilera programmet skriver du:

# make
    

En stund senare skapas en binärfil i underkatalogen spec/, under förutsättning att allt fungerat som det ska.

Källkod

Källkoden till programmet går att ladda ner från http://www.stacken.kth.se/~hin/spec/spec.tar.gz.

Förkompilerade binärer

Förkompilerade binärer finns för följande system:
MacOSX 10.4 http://www.stacken.kth.se/~hin/spec/spec.dmg
Windows 2000/XP http://www.stacken.kth.se/~hin/spec/spec.exe


Övriga frågor och oklarheter besvaras gärna av mej.

Hans Insulander <hin@kth.se>