Dansande robot

Robot, CNC, Pneumatik, Hydraulik, mm
hebbe
Inlägg: 162
Blev medlem: 29 maj 2003, 00:45:20

Dansande robot

Inlägg av hebbe »

Jag har konstruerat en krets som hittar takten i musik ganska exakt (BPM-räknare), skulle inte det kunna bli en rolig robot-sensor?
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1645
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Det skulle det säkert kunna bli.
Har du lite info om din krets?
Sebastian
Inlägg: 87
Blev medlem: 11 juli 2003, 21:13:36
Ort: Ljusdal, Gävleborgs län.
Kontakt:

Inlägg av Sebastian »

Det var intressant, är den träffsäker?
Annars brukar ju sånna program vara rätt så osäkra, förutom AutoBPM ( http://www.pyramidedata.dk/ ), som är riktigt bra...


Är också intresserad av hur den fungerar...
hebbe
Inlägg: 162
Blev medlem: 29 maj 2003, 00:45:20

Inlägg av hebbe »

Det är en PIC16C63, en 28-pin. Den samplar 6 sekund och analyserar det, funkar nog som den ni länkade till. Fast min har inte 3 frekvenser, den tittar på amplitud-ändringar. Nackdelen med den här mot PC-varianten är den här läser musiken i realtid (tar tid).

Den hittar et rätt stabilt tal för tempo. Det talet läggs i PWM-generatorn och ändrar frekvensen. Ut kommer en klockfrekvens på några KHz som kan delas ned till musikens takt.

Klockfrekvensen skickas även tillbaka in i en räknare i kretsen som lever sitt egen liv på interrupter. Den startar på bas-takt, och stannar efter 1 takts tid och väntar. Resultatet är en puls varje musiktakt som är synkron.

Summasummarum: En klockfrekvens som inte är syncron, och en 'resetpuls' som är syncron.

Räknaren funkar helt fint på all diskomusik, även med udda takt. Den måste få 2 lika värden i följd för at det ska gälla, så den knallar på bra genom det mesta av musiken.

Från början skulle det bli en BPM-räknare, fast det tror jag inte är lika interessant nu som det var på 90-talet ;-) Så jag funderar på att helt enkelt anpassa den som en sån räknare som kan driva ljusorglar och robotar (robolight?).. Har även kodat in en 8ch ljusorgelsequenser som går syncront i den, det är plats med 3K i ROM. Problemet är att skapa några roliga sekvenser.
Användarvisningsbild
chille
Inlägg: 2469
Blev medlem: 25 juni 2003, 20:54:41
Ort: Stockholm
Kontakt:

Inlägg av chille »

låter riktigt nice.. satt faktist och tänkte på det där när jag väntade på bussen till skolan idag :D

hade också (lite tidigare) tänkt göra dimmer/sequencer osv.

har du några kopplingsheman? programvara?
hebbe
Inlägg: 162
Blev medlem: 29 maj 2003, 00:45:20

Inlägg av hebbe »

Joa, har ju det :-) Fast det är ju några timmar arbete som ligger bak så... Får se om jag kommer att lägga koden på nätet någon gång, eller om det kan bli någon produkt av det.
Användarvisningsbild
chille
Inlägg: 2469
Blev medlem: 25 juni 2003, 20:54:41
Ort: Stockholm
Kontakt:

Inlägg av chille »

mjo iofs. så viktigt är det inte. själva kopplingschemat lär inte vara så avancerad. och eftersom jag kör AVR så lär det nästan vara lättare att skriva en egen version... och framförallt roligare :)

hur har du gjort för att få den så bra då? letar den bara efter peakar eller går den efter nått mönster? kör du genom några filter först?


min tanke är iaf att man skulle kunna köra igenom två st butterworth-filter, två st bandbass. ett som ska filtrera ut basen på runt 70-140Hz och en som ska försöka filtrera ut clap-ljudet. sen så skriver man en algoritm som liknar en kompressor fasst tvärtom, den förstärker där det är hög amplitud och sänker där det är låg. då borde man ju få ett ganska fint mönster som man kan söka igenom. och sen så gör man likadant för clap-ljudet och om mönstret är tillräckligt "tydligt" så ska den ta tiden mellan kick-kick, clap-clap, clap-kick och kick-clap och gemföra tiderna.

vet dock inte hur bra den algoritmen skulle funka i värkligheten. tror jag har koden till nått 12db BP-filter nånstans. ska nog testa göra ett datorprogram som räknar BPM. har iofs redan gjort ett i VB som sög. det mätte efter peakar på en ofiltrerad signal.. det gav bättre resultat än förväntat men minsta lilla(typ en synth med för hög amplitur) och det började räkna fel.
hebbe
Inlägg: 162
Blev medlem: 29 maj 2003, 00:45:20

Inlägg av hebbe »

Efter att ha forskat lite på var i frekvensområdet takt-informationen fanns kom jag fram till 250Hz. På lägre frekvenser stör basgångar o.l. Fast det kan ju funka på vissa låtar och så, men generellt var det 250Hz. Vokal/sång stör mycket på högre frekvenser.

Provade också som du säger expander/compressor, fast det gav inga bra resultat. Det förstärker även dom signalerna man inte vill ha.

Amplitud-ändringar med en viss stingning (v/ms) är också ett sätt. Cool edit använder det för att hitta 'beats'. Då får man likrikta och filtrera med frekvenser på takt/beat nivå.

Algoritmen jag anv. jämför mönster över en längre period.

En annan kul grej är att mäta tiden mellan alla beats, skapa en tabell med tider som man div/mul med 2 till önskat område. Sedan letar man efter lika värden. Jag har inte provat det, fast den blir nog snabbare som BPM-räknare.
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

vad använder du för mic till den och hur har du kopplat in den?

går den via nån förstärkare först eller?
hebbe
Inlägg: 162
Blev medlem: 29 maj 2003, 00:45:20

Inlägg av hebbe »

Har mest kopplat den direkt på line-utgången på stereon när jag hållit på med det. Har även testat lite med en mic och egen OP förstärkare för mic'en, det funkar ganska bra också, fast den får problem när man spelar på höga volymer typ fest eller diskotekvolym. Den analoga inngången har en AGC funktion som reglerar inom typ 10db.

Problemet med mic är den stora dynamiken, typ 100db (bakgrundsmusik<->diskovolym). Provade med en enkel compressor, fast den störde på just dom frekvenserna takten finns. Har funderat på att låta microcontrollern styra en grov spänningsdelare på inngången så den kan 'växla' hela 10db områden.
Skriv svar