Tondetektering via t.ex. ljudkortet
Tondetektering via t.ex. ljudkortet
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
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
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.
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.
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?
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?
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
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
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.
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.
Vet du om den går att få tag i i Sverige (ISBN-nummer finns ju)?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
Verkar inte så.AndLi skrev:Nämde jag att den är gratis med?
Mvh
speakman
Prova amazon.co.uk mfl borde väll ha den , de skeppar till sverige.speakman skrev: Vet du om den går att få tag i i Sverige (ISBN-nummer finns ju)?
Informationen är gratis, att du sen väljer att betala för att få informationen inbunden i pappersform är ditt egna val!!speakman skrev:Verkar inte så.
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
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
- 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...
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å.
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
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