Arduino programma.... waar is Dabit als je hem nodog heb :-)

Gewoon even offtopic praten over van alles en nog wat.

Moderator: Moderators

Gebruikersavatar
DaBit
Donateur
Berichten: 11033
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Arduino programma.... waar is Dabit als je hem nodog heb

Bericht door DaBit »

Mjah, mjah. Ik ben niet zo heel bekend met die max-ii CPLD's, maar als er een stuk of 2000 flipfloppen in zitten heb je het een aardig eind gehad schat ik zo, en een paar blokrammen zijn ook wel fijn. Ik zal niet zeggen dat het niet kan, maar dan moet je het wel slim aanpakken.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Arduino programma.... waar is Dabit als je hem nodog heb

Bericht door Swets »

DaBit schreef:Mjah, mjah. Ik ben niet zo heel bekend met die max-ii CPLD's, maar als er een stuk of 2000 flipfloppen in zitten heb je het een aardig eind gehad schat ik zo, en een paar blokrammen zijn ook wel fijn. Ik zal niet zeggen dat het niet kan, maar dan moet je het wel slim aanpakken.

tja.... ik weet er geen reet van.... ja ik snap wel dat die DE1 sterker is als die nano....

dit zijn de gegevens van die nano : https://xdevs.com/review/terasic_mmk/

hier een pdf met wat informatie:
https://dl.dropboxusercontent.com/u/805 ... _v1.32.pdf

ik dacht eigenlijk dat ze allemaal super sterk waren....?!?
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
DaBit
Donateur
Berichten: 11033
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Arduino programma.... waar is Dabit als je hem nodog heb

Bericht door DaBit »

Mjah, wat is supersterk? Microcontrollers, DSP's, applicatieprocessoren en programmeerbare logica hebben allemaal zo hun eigen toepassingsgebieden.

Aan een zware hamer heb je ook niet veel als je een schroef ergens in moet draaien..

Bekijk programmeerbare logica maar als zak vol 7400 ICtjes in een doosje. AND-poortjes, OR-poortjes, flip-flops, etc.
Als je dan 100 vermenigvuldigingen moet doen kun je ervoor kiezen om ze allemaal tegelijk te doen. Dan kan het serieus hard opschieten.
Zo kun je er ook digitale filters en FFT's mee bouwen, maar het werkt wel anders dan in een processor.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
Breaker
Donateur
Berichten: 1961
Lid geworden op: 26 mei 2015 22:43
Locatie: Nabij Antwerpen
Contacteer:

Re: Arduino programma.... waar is Dabit als je hem nodog heb

Bericht door Breaker »

Voor audio is Fast Hartley Transform (FHT) misschien een optie, blijf je toch trouw aan een Fourier variant, samen met prescaler aanpassing om het bereik te vergroten:
http://apcmag.com/arduino-project-audio ... lyser.htm/

Worden die Quadrature Mirror Filters ook gebruikt om rotary encoders uit te lezen?
Geduld is een schone zaak, frezen niet...
Gebruikersavatar
DaBit
Donateur
Berichten: 11033
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Arduino programma.... waar is Dabit als je hem nodog heb

Bericht door DaBit »

FHT en andere DFT-broertjes zoals DCT, DST, etc. heeft nog steeds als nadeel dat de bins lineair verdeeld zijn terwijl audio per definitie logarithmisch werkt. Wil je dan ook de 63Hz en 125Hz band nog kunnen onderscheiden, dan heb je met 38,4kHz samplerate toch al gauw een 512-punts FFT/FHT/DCT transformatie nodig. Liever nog 1024-2048 punten.

Nu is dat het punt opzich niet. Neem 512 samples, window ze met een raised cosine venster, doe een in-place transformatie, pak de bins samen voor elke 'analyser-staaf' waar je in geinteresseerd bent, stuur het naar de LED's, scherm, whatever, neem weer 512 samples, enzovoorts.

Probleem word dan al gauw geheugen en resolutie (de inputdata moet naar slechts 5-6 bits wil het transformatieresultaat nog in 16-bits passen), en de vertraging van het geheel. De 'boenk' van de bas is allang voorbij voor die een keer op je schermpje verschijnt.

Vroeger toen je koe nog met lange oe schreef en de vissen nog over het land liepen maakten we audio-spectrumanalysers met een stelletje bandpassfilters, de uitgangen van die filters gingen via diodes naar een condensator om piek-en-langzaam-weer-naar-beneden te doen, en daarachter hingen we van die LED-bar drivers zoals de good old LM3915. Die dingen deden tenminste wat ze moesten doen.

Die 'oude analoge manier' in een modern digitaal jasje, dus een bandpassfilter per band en de uitgang van dat filter direct naar display sturen, zou mijn aanpak zijn. In deftige termen noemen ze dat een 'analysis filter bank'.
Die bandpassfilters kun je dan mooi maken door recursief de frequentieband op te splitsen in een hoge en lage band met halfbandfilters. Die hebben rekentechnisch wat voordelen.

Voorbeeld:

Code: Selecteer alles

          10-20kHz -> Log(x) -> LED
	  	 /
        /
0-20kHz
		\         5-10kHz -> Log(x) ->LED   
		 \       /               
		  0-10kHz        2.5-5kHz -> Log(x) ->LED
		         \      /
				  0-5kHz          1.25-2.5kHz -> Log(x) -> LED 
				        \        /
						 0-2.5kHz
						         \
								  0-1.25kHz -> enzovoorts
Werkt mooi per octaaf, precies wat je met audio wil. Na elke stap kun je de samplerate halveren (elke 2e sample weggooien) en zo ook telkens hetzelfde halfbandfilter hergebruiken. Die hoeft dan ook maar op halve snelheid het werk te doen, dus het rekenwerk valt nog wel mee.
Breaker schreef:Worden die Quadrature Mirror Filters ook gebruikt om rotary encoders uit te lezen?
Nee, het is een dure naam om te zeggen dat het precies de gespiegelde is van een ander filter. Als ik een laagdoorlaatfilter heb van 0-10kHz dan is z'n mirror de hoogdoorlaat van 10-20kHz op een zodanige manier dat als ik de resultaten van beide filters weer combineer dat ik weer het originele signaal heb.

Dat hele basisprincipe staat aan de bakermat van zo'n beetje elke audiocodec (MP3/MP4/Ogg/etc.), moderne RF baseband zoals WiFi/Bluetooth/Zigbee/LTE/ADSL/DOCSYS, etc.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Arduino programma.... waar is Dabit als je hem nodog heb

Bericht door Swets »

eerst had ik zoiets gemaakt:
Afbeelding

alleen had ik dan die anloog-multiplexer en de hele ledmatrix vervangen door een Picmicro.... voor die multiplexer had ik een CD4067B die schakelde de filters 1 voor 1 door naar een analoge input van de PIC... en omdat ik me display gemaakt had van Dual color leds...(koste aardig wat outputjes) gebruikte ik een 4017 om de kolom van het display aan te-sturen....

ik had trouwens deze filters gemaakt: http://sound.whsites.net/project63.htm

en in het display had een aantal verschillende soorten van laten zien... gewoon in 1 kleur... kolomen in groen, geel of rood maar ook onderaan groen, dan 2 geel, en dan rood .... of alleen 1 led per kolom....

en later had ik ook nog zo piekledje... die iets later naar beneden viel....

maar ik kreeg van heel veel mensen komentaar.... dat moest ik met FTT doen... dat was veel makkelijker... vond dit al zo knap van me eigen... :-)
ik had zo test cd...met allerlei geluiden en ook van die sweeps erop van 0 tot 20K... en dan zag je zo die bult heel mooi over het display gaan...
maar ik snap helemaal niets van die FTT.... en ik heb ook niet de indruk dat het een stuk makkelijker is...
(tja zal wel zijn net als alles.... als je het weet zal het misschien makkelijker zijn....)

ik hoopt eigenlijk het meeste van het net te kunnen halen.... beetje knippen/plakken....
DaBit schreef:Die 'oude analoge manier' in een modern digitaal jasje, dus een bandpassfilter per band en de uitgang van dat filter direct naar display sturen, zou mijn aanpak zijn. In deftige termen noemen ze dat een 'analysis filter bank'.
Die bandpassfilters kun je dan mooi maken door recursief de frequentieband op te splitsen in een hoge en lage band met halfbandfilters. Die hebben rekentechnisch wat voordelen.

Voorbeeld:

Code: Selecteer alles

          10-20kHz -> Log(x) -> LED
	  	 /
        /
0-20kHz
		\         5-10kHz -> Log(x) ->LED   
		 \       /               
		  0-10kHz        2.5-5kHz -> Log(x) ->LED
		         \      /
				  0-5kHz          1.25-2.5kHz -> Log(x) -> LED 
				        \        /
						 0-2.5kHz
						         \
								  0-1.25kHz -> enzovoorts
Werkt mooi per octaaf, precies wat je met audio wil. Na elke stap kun je de samplerate halveren (elke 2e sample weggooien) en zo ook telkens hetzelfde halfbandfilter hergebruiken. Die hoeft dan ook maar op halve snelheid het werk te doen, dus het rekenwerk valt nog wel mee.
tja... nou ja heb geen idee hoe ik dat doe..... je bedoel de filters programmeren toch? toch niet analoge filters maken, zoals ik al eens gedaan heb?
op zich was dat ook niet zo moeilijk.... maar omdat ik van iedereen te horen kreeg dat ik het veel te moeilijk had gedaan?? anders doe ik het weer zo.... alleen maak ik dan een display met van die ws2812 ledjes.... maar verder bijna het zelfde.... (kosten zijn het ook niet die paar weerstandjes en c-tjes...)....?
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
DaBit
Donateur
Berichten: 11033
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Arduino programma.... waar is Dabit als je hem nodog heb

Bericht door DaBit »

Swets schreef:eerst had ik zoiets gemaakt:
Precies, dat bedoel ik.
ik had trouwens deze filters gemaakt: http://sound.whsites.net/project63.htm
Of je nou Sallen-Key of MFB topologie gebruikt in je analoge filters maakt opzich niet zoveel uit voor deze toepassing, maar in dat artikel staat wel een mooie uitleg voor het logarithmisch zijn van de audio.
maar ik kreeg van heel veel mensen komentaar.... dat moest ik met FTT doen... dat was veel makkelijker... vond dit al zo knap van me eigen... :-)
Kan ook met een FFT of een van z'n zusjes. Je moet alleen nog wat extra werk doen zoals je input-data windowen (daar gaat de eerste link van je op mis, die kerel die zegt de eerste band niet te kunnen gebruiken) en een manier verzinnen om de LED's met logarithmisch gekozen frequenties te sturen ipv de lineare output van de FFT. En lukt je dat, dan heb je nog de vertraging waar je wat aan moet doen.
Doe je het rechtstreeks, dan krijg je zo'n standaard 'winamp-spectrum' te zien; het beweegt, maar dat was het dan ook.
maar ik snap helemaal niets van die FTT.... en ik heb ook niet de indruk dat het een stuk makkelijker is...
(tja zal wel zijn net als alles.... als je het weet zal het misschien makkelijker zijn....)
Juist :mrgreen:
Ik heb het sneller voor elkaar met een filterbank of FFT dan met condensatortjes solderen.
ik hoopt eigenlijk het meeste van het net te kunnen halen.... beetje knippen/plakken....
FFT routines zou ik niet zelf maken; die zijn er genoeg te vinden.
Maar dan nog moet je snappen wat je doet, anders word het niks.
tja... nou ja heb geen idee hoe ik dat doe..... je bedoel de filters programmeren toch? toch niet analoge filters maken, zoals ik al eens gedaan heb?
Ik bedoel de filters programmeren inderdaad. Zoals eerder gezegd verwacht ik niet dat je dat zomaar voor elkaar krijgt (ik heb het nog niet eens over de grappen en grollen gehad die je tegen gaat komen..), maar een tipje van de sluier oplichten kan nooit kwaad.
anders doe ik het weer zo.... alleen maak ik dan een display met van die ws2812 ledjes.... maar verder bijna het zelfde.... (kosten zijn het ook niet die paar weerstandjes en c-tjes...)....?
Ik heb niks tegen analoge technieken. Verre van dat zelfs; digitaal is anders maar niet noodzakelijkerwijs beter. Net zoals 3D printen is het extra gereedschap wat je kunt gebruiken om je doel te bereiken, maar geen oplossing voor alles.

Voor de prijs hoef je het inderdaad niet te laten; een LM324 kost 35 cent ofzo, dus 9 cent per opamp. Paar weerstandjes en condensatortjes vreten ook geen brood, en als je er een diode+condensator+weerstand over de condensator achter zet heb je gelijk dat-ie pieken onthoud en langzaam afloopt.
1 opamp = 1 filterbandje, dus voor slechts een paar euro heb je al je analyser-bandjes. Hoef je alleen nog maar met een analoge mux en een Arduino uit te lezen en die neopixels aan te sturen.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Gebruikersavatar
Swets
Berichten: 2662
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: Arduino programma.... waar is Dabit als je hem nodog heb

Bericht door Swets »

ik ga het wel analoog doen.... althans... een mix.... ik bouw die filtertjes wel weer analoog.... en dan lees ik het wel in een of ander controller om een display aan te sturen.....
ik zag ook een printje om zoiets te maken met een Arduino.. maar daar zaten de filters op het printje... en die gebruikte 7 analoge ingangen van de Arduino...

Ik vind die DE1 een beetje zonde om het voor dit te gebruiken.... heb vandaag zitten spelen met die DE1 met een vga signaal... ook wel leuk... maar die houd ik verlopig om mee te spelen... en die nano weet ik eigenlijk nog niet wat ik er mee wil gaan doen... :-)

maar je kan wel weer zien dat ik een beetje opknap.... ben weer met veel te veel tegelijk bezig.... :-)

ik ga eerst ff schema tekenen.... en als ik zover ben vraag ik je commentaar.... want in analoge electronica ben ik ook niet zo heel erg super.... :-) maar een beetje knoeien is wel leuk....

oja... toch ff een vraag over dat schema uit die hele oude electuur...

die Diode , 470R en die elco, achter het filter waarom is dat ? denk dat die elco is om die piek even vast te houden?
diode? om hem gelijk te richten... anders gaat die elco ook niet werken .... en die weerstand? is die om de elco te ontladen?

en nog een vraag ...
op deze link : http://sound.whsites.net/project63.htm
kan je een programmaatje downloaden om de weerstanden en de condensators uit rekenen bij de frequentie die je wil....
maar daar moet je ook een Q waarde in vullen en een gain...

die Q had ik steeds op 4 gehouden? dat vond ik een beetje terug in de tekst :-) maar die gain...
dat is toch iets van de grote van het signaal wat er uit komt?
ingang signaal bij audio is toch 1,5 volt? ..... dus maar dit kan ik ook wel helemaal verkeerd begrepen hebben hoor... tis ook een vraag...
als ik die op 1 hou, komt er ook 1,5 volt uit? als ik die op 2 zet komt er dan 3 volt uit? en als ik hem op 3,3 zet komt er max 5 volt uit.... of denk ik zo te simpel....
want als het zo simpel is...is max 5 volt wel makkelijker voor een analoge input?
http://www.arjan-swets.com (met cnc filmpjes)
Plaats reactie