Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Licznik tempa - jak zrobić?

28 Lis 2009 00:47 2455 13
  • Poziom 15  
    Mam taki problem, chciałbym zbudować licznik tempa, lecz nigdzie nie mogę znaleźć nic na temat budowy takiego licznika.
    Czy ktoś ma jakieś pomysły przyjmę i wersje, analogowe i cyfrowe takich urządzeń, ale najbardziej zależy mi na dokładności i współpracy z 2 lub 3 segmentowym wyświetlaczem LED
  • Użytkownik usunął konto  
  • Poziom 15  
    muzyczny (choć ten życia też ny się przydał)
  • Poziom 19  
    Opisz najpierw dokładnie jakie funkcje ma spełniać taki licznik. W jakim zakresie częstotliwości ma pracować, czym ma sterować, jakie ma posiadać zasilanie itp. Czy układ ma generować sygnał o zadanej - programowanej przez użytkownika częstotliwości czy raczej sygnał o jednakowym tempie.
  • Poziom 15  
    Chodzi mi o coś takiego jak można spotkać przy mikserach, tylko nie wiem jak to zrealizować.
  • Poziom 19  
    Przykro mi bardzo ale nie wiem co można spotkać przy mikserach. Dlatego właśnie prosiłem o opis funkcji jakie ma spełniać układ. Jeśli to będzie wiadome to być może wtedy możesz liczyć na pomoc.
  • Poziom 15  
    Więc zabawa polega na tym że to nie ma być jak licznik częstotliwości tylko szybkości granego utworu, tak to rozumiem.
    Nie wiem tylko jak to tak na prawdę rozumieć bo nie do końca łapie jednostki w jakiej to mierzy to tempo, coś pogrzebie i może coś znajdę, ale jak szukałem to lipa


    Może to coś da
    http://pl.wikipedia.org/wiki/Uderzenia_na_minutę
  • Admin grupy audio
    W prosty sposób się nie da, już kiedyś podobny temat był poruszany na forum.
    Zresztą jedyne liczniki BPM do własnoręcznej budowy to liczniki "ręczne" - naciskasz przycisk w rytm muzyki i układ oblicza tempo.

    Teoretycznie wystarczyłoby zrobić filtr niskich tonów, układ różniczkujący, następnie coś, co dopasuje poziomy sygnału np. do standardu TTL oraz zliczy ilość impulsów w czasie. Problem polega na tym, że czas pomiaru wynosiłby dokładnie 60s, natomiast 60s to dość długi przedział czasu jak na utwór muzyczny i na 90% w tym czasie trafi nam się w nim tzw "przejście" - czyli fragment gdzie nie ma beatu. Taki pomiar będzie obarczony dużym błędem i do niczego nie jest przydatny.

    Nie wiem dokładnie na jakiej zasadzie działają liczniki BPM w sprzęcie fabrycznym (np. w mikserach), ale na pewno jest tam kawałek procesora - w DJM300 marki Pioneer jest to PD4755A.
  • Poziom 15  
    Jeśli dobrze rozumiem to jest to licznik częstotliwości, tylko dość dziwny bo:
    60 BPM = 1Hz
    120 BPM = 2Hz
    125 BPM(uniwersalne tempo) = 2,08(3)Hz

    więc czy nie wartało by zrobić systemy zamieniającego dźwięk na fale trójkątną o odpowiednim kształcie, a nastęmpnie system mikroprocesorowy z pomiarem napięcia z ogromną dokładnością i napędzany zegarem o częstotliwości 10-20Hz i liczącym w przybliżeniu BPM i to z dużą szybkością
  • Admin grupy audio
    Nie dałoby się tak zrobić, poza tym nie bierzesz pod uwagę tempa np. 121, 125.5 - czyli takich, które są na skraju dokładności pomiaru. Skąd masz informację, że 125 jest najbardziej uniwersalnym tempem? Tempo, to tempo, jakie sobie wymyśli twórca, takie jest.

    Licznik BPM może i przypomina miernik częstotliwości, ale niestety nim tak do końca nie jest. Poza tym po co Ci tutaj przebieg trójkątny? Również nie bardzo wyobrażam sobie bardzo dokładny pomiar napięcia przy pomocy uC.

    Wymyśliłem taką metodę pomiaru tempa:

    Zakładamy, że czas pomiaru ma wynosić np. 2s. W momencie otrzymania pierwszego impulsu beatu, mikroprocesor uruchamia odliczanie czasu 2s i w jakimś tam swoim wewnętrznym liczniku zapisuje 0, w momencie pojawienia się drugiego impulsu zapisuje do pamięci czas jaki upłynął pomiędzy impulsami, jednocześnie zwiększa stan wewnętrznego licznika o 1 i oczekuje na kolejny impuls. W momencie nadejścia kolejnego impulsu ponownie zapisuje czas jaki upłynął pomiędzy nimi - teraz musi sprawdzić, czy czasy te są równe (czy tempo jest równomierne, czy może trafiliśmy na tzw. przejście). Jeśli czasy są równe to zwiększa stan licznika o 1 i dalej czeka na impuls mierząc czas.
    Jeśli czasy będą się znacząco różniły, będzie to oznaczało, że beat nie jest równomierny i należy rozpocząć pomiar od nowa - wyczyścić pamięć i wyzerować licznik.
    Jeśli minie 2s i w tym czasie procesor otrzyma same prawidłowe impulsy beatu, to mierzy czas jaki upłynął pomiędzy ostatnim impulsem, a zatrzymaniem odliczania czasu pomiarowego - pozwoli to określić ile czasu impulsu zostało "obcięte" przez zatrzymanie pomiaru. Następnie dokonuje przeliczeń i wynik pokazuje na wyświetlaczu Przykładowo - jeśli w ciągu 2s procesor otrzyma 2 i 25 setnych impulsu, to obliczy:
    60 (tyle sekund jest w minucie) podzieli przez 2 (dwie sekundy trwa pomiar), a następnie pomnoży przez 2.25 (tyle impulsów otrzymał) i wyświetli tempo 67.5 BPM.

    Tyle moich teoretycznych rozważań - czy to zadziała w praktyce, nie mam pojęcia. Niestety nie mam też pojęcia o programowaniu uC, więc nie napiszę programu by to sprawdzić. Zapewne na wstępie trzeba wziąć poprawkę na czas w jakim procesor wykonuje operacje nie związane ściśle z pomiarem (zapis do pamięci, porównanie odstępów czasowych pomiędzy impulsami itp).
  • Poziom 15  
    no właśnie wszystko w porządku ale 2s to i tak długo, bardzo długo,bo system miał by odświeżanie co 2s.

    z trójkątem chodziło mi o mierzenie szybkości przyrostu napięcia, lub jego spadku, ale żeby coś z tego wyliczyć trzeba by było znać max. wartość amplitudy, a to też może okazać się nie praktyczne.

    na to musi być jakiś sposób pozwalający na bardzo szybki pomiar tej wartości, w tym przypadku szybki można mieć na myśli wartość 5 odświeżeń na s.
    jak ktoś ma na to jeszcze jakiś pomysł to niech wkleja każda wskazówka morze być pomocna

    Moderowany przez Mirek Z.:

    Na forum obowiązują zasady pisowni, należy też starać się pisać bez błędów.
    Regulamin - p.10.9 i p.15.

  • Admin grupy audio
    Kolega najwyraźniej nie ma zielonego pojęcia o tym co chce zrobić, a może stopień skomplikowania wydał się przerażający i na siłę szuka Kolega innych rozwiązań?
    Nie ma sposobu na szybszy pomiar, fabryczne urządzenia mierzą jeszcze wolniej - czasami nawet 10s. To nie program komputerowy, który najpierw dokonuje analizy obwiedni sygnału i na tej podstawie wylicza tempo utworu (obwiednię i tempo zapisuje następnie w pliku - by mieć "na później") - dlatego właśnie wynik mamy od razu po wczytaniu utworu.
    Jak sobie Kolega wyobraża pomiar tempa w trybie Real Time w czasie krótszym niż 1s, to chyba ten utwór musiałby mieć ze 300BPM, żeby pomiar był należycie dokładny.

    Proponuję zatem zakupić przystawkę - licznik BPM, np. marki Gemini, model BPM-1, w promocji za jedyne 80$ + przesyłka:
    http://www.hollywooddj.com/geminibpm1.html
    W Polsce też widziałem, ale trzeba ściągać na zamówienie, albo szukać na aukcjach.
  • Poziom 15  
    Mam prośbę do kolegi Artur k. , jak by kolega mógł to proszę o jakieś takie bardziej łopatologiczne wytłumaczenie działania tego układu który kolega zaproponował.
  • Admin grupy audio
    Bardziej łopatologicznie nie umiem, niestety. Poza tym ja nawet nie mam pewności, że to będzie poprawnie działało - to wytwór moich przemyśleń nad tym "jak mogłoby to działać".

    Jest jeszcze jedna możliwość (być może jedyna) - procesor DSP i transformata Fouriera, ale to już wyższa szkoła jazdy.