Tondetektering via t.ex. ljudkortet

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Tondetektering via t.ex. ljudkortet

Inlägg av speakman »

Någon som har pejl på hur man skriver program för att detektera toner via en dataström, t.ex. från ljudkortet?
Finns en del GNU-program för att detektera POCSAG och FFSK etc, men det är inte så väl dokumenterat som jag velat.
Kanske finns någon sida på nätet som behandlar just detta?

Mvh
speakman
babbage
Inlägg: 637
Blev medlem: 10 november 2004, 11:33:17
Ort: Sthlm

Inlägg av babbage »

FFT, Goertzel, filtrering och periodtider, neurala nät. Någon annan kan säkert fylla på med flera metoder.

Allmänt lönar det sig att läsa på om DSP (Digital Signal Processing).
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Tack tack!

Ingen som har lust att gå mer in på vad varje metod kortfattat innebär? Ska givetvis googla på termerna lite senare. Har inte tid just nu.
Och var finns bra material om DSP tro?

Mvh
speakman
babbage
Inlägg: 637
Blev medlem: 10 november 2004, 11:33:17
Ort: Sthlm

Inlägg av babbage »

En liten analogi: DSP är verktygslådan. FFT, Goertzel mm är verktyg. Att kunna DSP är som att kunna konstruera t.ex. en bil (det mekaniska), det kräver ingående kunskap om vissa speciella ämnesområden som matematik, materiallära, mekanik osv. fast ämnena skiljer sig lite åt. För DSP krävs det matematik och baskunskaper är signaler och vissa algoritmer. Dessa kunskaper kan vara rätt tunga att ta till sig om man inte är hyffsad på matematik. Många klarar av att förstå hur en bil fungerar och kan modifiera eller reparera den utan att ha en högskolexamen i matematik eller hållfasthetslära. Detsamma gäller för DSP.

Till exempel FFT är ett mångsidigt verktyg medans Goertzel är lite mera specialanpassat ungefär som en skiftnyckel (FFT) kontra en ringnyckel (Goertzel).

Men om man inte är intresserad av att konstruera eller modifiera DSP verktygen själv utan kan tänka sig att använda verktyg andra har gjort kan man klara sig bra med enklare grundkunskaper. Det finns mängder av beskrivningar på nätet. Jag tror att det är bäst att du googlar själv efter information men en startpunkt kan kanske vara den här sidan.

Buzzword du kan kombinera på olik sätt i dina sökningar:
FAQ (frequently asked questions)
tutorial
DSP
"digital signal processing" ("digital signalbehandling")
"discrete signals" (diskreta signaler")
"fourier transforms" (fouriertransformer)
FFT (Fast fourier transforms)

Om du söker litegran kommer din egen kunskap och vokabulär av buzzword och sökord växa explosionsartat.
Användarvisningsbild
AndLi
Inlägg: 17098
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Inlägg av AndLi »

Det finns en helt underbar bok i ämnet!

The Scientist and Engineer's
Guide to Digital Signal Processing


Enkla förklaringar, massor av bilder och inte insurrat med massa mystisk matte!! HElt enkelt briliant

Nämde jag att den är gratis med?
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Hade väl tänkt i ett första steg att dekoda t.ex. CCIR. Torde ju inte vara ett särskillt svårt mål?
Nästa steg blir nog FFSK, men det skiljer nog inte speciellt mycket egentligen.
Men jag tycker att det borde gå att göra sånt utan att vara matteprofessor? Går det inte att detektera halvperioderna för att sedan räkna ut frekvensen?
FFSK använder ju t.ex. 1 period 1200Hz (0:a) 1,5 period 1800Hz (1:a).
Tänker mig att man kan läsa avståndet mellan perioderna för att räkna ut bitarna?
Får googla vidare lite först kanske... :)

Mvh
speakman
babbage
Inlägg: 637
Blev medlem: 10 november 2004, 11:33:17
Ort: Sthlm

Inlägg av babbage »

Jag kanske har skjutit lite över målet tidigare och varit lite vag.

Jag antar att du har en polisradio som du tänker koppla till ljudkortet. Med CCIR sänder man väl bara en (1) frekvens/ton samtidigt vilket underlättar mycket.

En mycket enkel algoritm är som du säger att helt enkelt mäta periodtiden mellan nollgenomgångar.

Vad som kan ställa till det är t.ex brus och andra störningar på radiosändningen. Om man får problem vad kan man göra åt det då?

* Använda hysteres för att störningar inte ska ge korta falska perioder.
* Filtrera bort ointressanta frekvenser.
* Medelvärdesbilda över en längre tid.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

AndLi skrev:Det finns en helt underbar bok i ämnet!

The Scientist and Engineer's
Guide to Digital Signal Processing


Enkla förklaringar, massor av bilder och inte insurrat med massa mystisk matte!! HElt enkelt briliant
Vet du om den går att få tag i i Sverige (ISBN-nummer finns ju)?
AndLi skrev:Nämde jag att den är gratis med?
Verkar inte så. :)

Mvh
speakman
babbage
Inlägg: 637
Blev medlem: 10 november 2004, 11:33:17
Ort: Sthlm

Inlägg av babbage »

hela boken i pdf-format zippad

Du kan inte ha letat så hårt
Användarvisningsbild
AndLi
Inlägg: 17098
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Inlägg av AndLi »

speakman skrev: Vet du om den går att få tag i i Sverige (ISBN-nummer finns ju)?
Prova amazon.co.uk mfl borde väll ha den , de skeppar till sverige.
speakman skrev:Verkar inte så. :)
Informationen är gratis, att du sen väljer att betala för att få informationen inbunden i pappersform är ditt egna val!!
babbage
Inlägg: 637
Blev medlem: 10 november 2004, 11:33:17
Ort: Sthlm

Inlägg av babbage »

Jag kanske missuppfattade det förut. Om det är så att han vill köpa boken är det hedervärt och glädjer sannolikt Steven Smith.
Användarvisningsbild
zus
Inlägg: 198
Blev medlem: 14 december 2003, 11:34:08
Ort: Göteborg

Inlägg av zus »

Har i en projektkurs skapat en ccir-dekoder i en ATMega8. Kan skicka dig "prototypen" i C-kod (för Linux).... Skrev om detta här

Ang. POCSAG är det nästan overkill med en "riktig" tondetektor...bara två frekvenser att hålla reda på väl? Borde fungera bra med nollgenomgångsdetektering.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Har börjat fått koll på Goertzel nu, men den verkar kräva ganska många samples för att detektera. Och den är väl kanske mest lämpad för långsamma toner såsom CCIR etc. Har räknat ut att jag får ca 6 samples per ton @ 8000smp/sec.
Men om man vill detektera FFSK å dyl. Vad skulle ni rekommendera då?
Är det räkna nollgenomgången som är bäst i det läget?
Funderade även på om man kan skapa ett ganska vasst filter med DSP. Så får man nog bort en del störningar och lättare att detektera nollgenomgångar.
Men det är ju ytterligare en djungel att passera. :)
Länkar och tips emottages med glädje!

Mvh
speakman
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Nollgenomgångar och DSP...

Inlägg av bengt-re »

Nja, som sagt läs lite först. Den metoden som troligen passar dig bäst är att sampla och sedan göra en FFT-analys på dina samples. Inte värre än att det kan gå att klämma in det i en enchippare (lite ont om ram dock) och sen kan du mata ut dina data fint till en LCD eller serielänk. Tondetektering går annars att lösa med specialic eller med analoga kopplingar också.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Eftersom det handlar om max 6 samplingar (som jag skrev ovan) på 8bitar så ser jag inte var problemet med RAM-minne finns?
Sedan måste FFSK reagera snabbt. Därför vill man analysera för varje byte = 8 helperioder vid 0x00; 8x6=48 samples. Går det med FFT?
Hur ser en analog detektering ut av så korta "toner"? Kanske skulle vara säkrare med en sådan?

Mvh
speakman
Skriv svar