Forum Index

Rules  | Points  | Add...  | Recent posts  | Search  | Register  | Log in

This site uses cookies. Learn more about cookies and changing the settings in your browser.

Tuner gitarowy


Post new topic  This topic is locked      Main Page -> Forum Index -> Microcontrollers Generally -> Tuner gitarowy
Author
Message
Intel
Poziom 13
Poziom 13


Joined: 01 Apr 2003
Posts: 111
Location: Bydgoszcz

Post#1 Post from the author of the topic 22 Nov 2004 21:44   

Tuner gitarowy


Mam ogromny problem ze skompilowaniem pewnego pliku w C próbowałem już długo ale nadal nic czy ktoś może mi powiedzieć czy ten kod jest w porządku ??

Code:

/*

   Simple Digital Guitar Tuner
   ---------------------------
   version 1.0      2001-02-12   jesper
   


   PIN assignements on the 2323
   
   PB0      High LED
   
   PB1      Input pin
   
   PB2      Low Led

*/


#include <io.h>
#include <signal.h>




#define F_CPU            11059200         // CPU clock frequency
#define PRESCALER         64               // CPU prescaler value



#define BASE_FREQUENCY      (F_CPU/PRESCALER)   // counter frequency   

#define TUNING_FORK_A      440.0            // "base" A
#define NOTE_DIFF         1.05946309436      // the 12'th root of 2


#define E_STRING   164.81                  // top string (1)
#define A_STRING   220.00
#define D_STRING   293.66
#define G_STRING   391.99
#define B_STRING   493.88            
#define EH_STRING   659.26                  // bottom string (6)


// The guitar note span
//  # # #  # #  # # #  # #
//EF G A BC D EF G A BC D E
//1    2    3    4 * 5    6
//

unsigned int Center_Count[] =
{
   BASE_FREQUENCY/EH_STRING,         // High E
   BASE_FREQUENCY/B_STRING,         // B
   BASE_FREQUENCY/G_STRING,         // G
   BASE_FREQUENCY/D_STRING,         // D
   BASE_FREQUENCY/A_STRING,         // A
   BASE_FREQUENCY/E_STRING,         // Low E
};

unsigned int Transition_Count[] =
{
   BASE_FREQUENCY/(B_STRING+(EH_STRING-B_STRING)/2),   // E to B
   BASE_FREQUENCY/(G_STRING+(B_STRING-G_STRING)/2),      // B to G
   BASE_FREQUENCY/(D_STRING+(G_STRING-D_STRING)/2),      // G to D
   BASE_FREQUENCY/(A_STRING+(D_STRING-A_STRING)/2),      // D to A
   BASE_FREQUENCY/(E_STRING+(A_STRING-E_STRING)/2),      // A to E
};




volatile unsigned char count_hi;   // overflow accumulator

//
//timer 0 overflow interrupt
//
SIGNAL(SIG_OVERFLOW0)   
{
   count_hi++;                  // increment overflow count
}


//----------------------------------------------------------------------------
// Main Lupe
//----------------------------------------------------------------------------


int main(void)
{
   unsigned int i;
   unsigned int count;
   

 //------------------------------
 // Initialize
 //------------------------------

   cbi(DDRB, 1);         // PB1 is input
   cbi(PORTB, 1);         // no pullups active

   
   sbi(DDRB, 0);         // PB0 is ouput, High LED
   sbi(DDRB, 2);         // PB2 is ouput, Low LED


   outp(0x03,TCCR0);      // set prescaler to f/64 (172.8 kHz @ 11.0592 MHz)

   sbi(TIMSK,TOIE0);      // enable interrupt on timer overflow
   asm volatile ("sei");   // global interrupt enable

 

 //----------------------------------------------------------------------------
 // Let things loose
 //----------------------------------------------------------------------------                       


   while (1)                        // loop forever
   {
      count = 0;                     // clear sample count
      loop_until_bit_is_set(PINB,1);      // wait for something to happen

      // got a high edge
      // start sampling
      
      outp(0,TCNT0);                  // clear counter      
      count_hi = 0;                  // clear hi count

      
      // sample loop
      
      for (i=0;i<32;i++)
      {
         while (bit_is_set(PINB,1))      // ignore hi->lo edge transitions
            if (count_hi > 80)         // skip if no edge is seen within
               break;               // a reasonable time

         while (bit_is_clear(PINB,1))   // wait for lo->hi edge
            if (count_hi > 80)         // skip if no edge is seen within
               break;               // a reasonable time

         count += (count_hi << 8) + inp(TCNT0); // get counter value
         outp(0,TCNT0);               // clear counter      

         if (count_hi > 80)            // skip if counter has accumulated a
            break;                  // too high value

         count_hi = 0;               // clear hi count
      }




      // initially turn off both leds
      sbi(PORTB,0);
      sbi(PORTB,2);

      if (count_hi <= 80)               // if count is reasonable
      {

         count = count >> 5;            // average accumulated count by dividing with 32
   
         // now we have to find the correct string
                  
         // go through transition frequencies
         
         for (i=0;i<sizeof(Transition_Count)/sizeof(Transition_Count[0]);i++)
         {
            if (count < Transition_Count[i])   // stop if lower than this transition count
               break;
         }            
         
         // i now holds the string index
         
         // check the count for a match, allowing
         // 1 extra count "hysteresis" to avoid too
         // much LED flickering
         
         if (count-1 <= Center_Count[i])         // if count <= this string count
            cbi(PORTB,0);                  // light "Too High" LED
   
         if (count+1 >= Center_Count[i])         // if count >= this string count
            cbi(PORTB,2);                  // light "Too Low" LED
      }
   }


}


Aha i jeszcze jedno czy da rade to wcisnąć na 2313 ?? (program rzekomo pisany na 2323) i czy bedzie to działac na tym klocku ??
Prosze o szybką odpowiedz a najlepiej skompilowany plik rzeby to mógł wrzycić przez programator.

P.S u mnie podczas kompilacji cvavr-em wyskakują jakieś błędy dot. #include <io.h>
#include <signal.h> Sad

Helpful message? + -

Back to top
   
Google


Google Adsense


Post# 22 Nov 2004 21:44   





Back to top
   
LordBlick
Zasłużony dla elektroda
Zasłużony dla elektroda


Joined: 31 Aug 2004
Posts: 5410
Location: Słupsk

Post#2 22 Nov 2004 21:48   

Tuner gitarowy


Code:
#include <2313io.h>
Może tak ?
Pozdrawiam, LightI

Helpful message? + -

Back to top
   
Intel
Poziom 13
Poziom 13


Joined: 01 Apr 2003
Posts: 111
Location: Bydgoszcz

Post#3 Post from the author of the topic 22 Nov 2004 23:34   

Tuner gitarowy


No dobra powiedzmy że tak Smile ale teraz jest zasadnicze moje pytanie ! czy to pójdzie na 2313 skoro było pisane na 2323 ?? (duża jest różnica w tych klockach ??). Zakładając że działa to nasuwa mi sie drugie pytanie co z biblioteką singal.h ?? nie mam jej w CVAVR !!! Sad

Helpful message? + -

Back to top
   
LordBlick
Zasłużony dla elektroda
Zasłużony dla elektroda


Joined: 31 Aug 2004
Posts: 5410
Location: Słupsk

Post#4 23 Nov 2004 03:34   

Re: Tuner gitarowy


AT90S2313 to procesorek o większych możliwościach, posiada wszystko to samo co AT90S2323, więc nie powinno byc problemów, ma nawet więcej pin - mozna się pokusić o dorobienie obsługi linijki świetlnej pokazującej dostrojenie, a może nawet jakiś LCD...
Ta biblioteka <signal.h>, to może część programu również napisana przez autora ? Co się dzieje, jak "#include <signal.h>" zakomentujesz ? Gdzie można coś takiego dostać, łączne ze schematem ? (też mam gitarę... Smile).
Pozdrawiam, LightI

Helpful message? + -

Back to top
   
zumek
Poziom 23
Poziom 23


Joined: 08 Oct 2003
Posts: 3339

Post#5 23 Nov 2004 19:21   

Re: Tuner gitarowy


Intel wrote:
Mam ogromny problem ze skompilowaniem pewnego pliku w C próbowałem już długo ale nadal nic czy ktoś może mi powiedzieć czy ten kod jest w porządku ??


Jest w porzadku , ale dla kompilatora avrgcc Sad

Dołączam przeróbkę dla CV. Teoretycznie działa Wink

Pzdr.
Piotrek Sz. i tez mam gitare Wink

PS.
Tu jest strona projektu

Attachments:

Helpful message? + -

Back to top
   
LordBlick
Zasłużony dla elektroda
Zasłużony dla elektroda


Joined: 31 Aug 2004
Posts: 5410
Location: Słupsk

Post#6 23 Nov 2004 20:47   

Tuner gitarowy


No tak, signal.h, pozostałość od nagłówka od kernela linuksa... Do czego to tu może właściwie być potrzebne ? Dzięki zumek za linka i plika.
Arrow Intel wyciąłeś licencję GPL Wink
Pozdrawiam, LightHouser

Helpful message? + -

Back to top
   
Intel
Poziom 13
Poziom 13


Joined: 01 Apr 2003
Posts: 111
Location: Bydgoszcz

Post#7 Post from the author of the topic 23 Nov 2004 22:27   

Re: Tuner gitarowy


eh tam odrazu Smile myślałem że nikt nie zauważy Razz

Właśnie robie do tego projektu płytke w EAGLE jak zrobie to udostępnie Smile

Pozdrawiam

Helpful message? + -

Back to top
   
r1pl3j
Poziom 12
Poziom 12


Joined: 21 May 2003
Posts: 103

Post#8 05 Dec 2004 17:02   

Re: Tuner gitarowy


LightHouser wrote:
No tak, signal.h, pozostałość od nagłówka od kernela linuksa... Do czego to tu może właściwie być potrzebne ?


hmm nie bardzo rozumiem..myslalem ze chodzi o signal.h z bibliotek crossavr-libc( bo przynajmniej do tego pakietu ten plik nalezy...)

Wlasnie mecze sie nad programatorem ponyproga, zaczynam watpic w sprawnosc mego LPT bo stale krzaki dostaje nawet bez zasilania programatora..Sad .Jakie macie doświadczenia z tym programatorem ( wersja na LPT) pod linuxem?
pozdrawiam

Helpful message? + -

Back to top
   
Google


Google Adsense


Post# 05 Dec 2004 17:02   





Back to top
   
Intel
Poziom 13
Poziom 13


Joined: 01 Apr 2003
Posts: 111
Location: Bydgoszcz

Post#9 Post from the author of the topic 12 Dec 2004 15:34   

Re: Tuner gitarowy


zrobiłem taki drobny "tuning" - dodałem złącze do programatora pod LPTa i teraz pytanie czy to bedzie sprawnie działało przy takim kwarcu ?? (11.0592). Wszędzie w projektach pisze że 4 albo 6 wiec nie wiem czy tego nie usunąć - chciałem z tego zrobić 2 w 1 Smile. Zadziała ??

Attachments:

Helpful message? + -

Back to top
   
LordBlick
Zasłużony dla elektroda
Zasłużony dla elektroda


Joined: 31 Aug 2004
Posts: 5410
Location: Słupsk

Post#10 12 Dec 2004 22:48   

Re: Tuner gitarowy


Możesz dać dowolny kwarc (oczywiście w zakresie zalecanym nocie katalogowej), zmieniasz tylko tą linijkę (48 linia w gtuner.c) :
Code:
#define F_CPU            11059200         // CPU clock frequency

Pozdrawiam, LightHouser

Helpful message? + -

Back to top
   
Google


Google Adsense


Post# 12 Dec 2004 22:48   





Back to top
   
Intel
Poziom 13
Poziom 13


Joined: 01 Apr 2003
Posts: 111
Location: Bydgoszcz

Post#11 Post from the author of the topic 24 Dec 2004 22:12   

Re: Tuner gitarowy


Wiem że moge dać dowolny kwarc - tyle że ja raczej pozostane przy tym jaki bede używał podczas korzystania z tunera (tak aby działał) .

Chodzi mi tylko o to czy bede mógł przy tym kwarcu programować inne klocki ?? metodą ISP przez LPTa.

Sądze żę to bedzie działać (bo w ISPprog jest miejsce gdzie wybieramy przy jakim kwarcu programujemy - przynajmniej tak mi sie wydaje ) ale chciałem sie upewnić.

P.S
Płytka doznała kilku małych kosmetycznych przeróbek i lada dzień zostanie złożona - jak wszystko bedzie OK to wrzuce cały projekt - pliki z opisem, schematem, płytką, skompilowanym programem itp, itd

No i złożyłem to ustrojstwo Smile niby działą aje jakoś nie tak jak ma Sad. Procesor poprawnie reaguje na sygnał z gitarki poprzez zapalanie diód, tyle że nie za bardzo daje cokolwiek nastroić (pisałęm do autora, tyle ze napiał mi że program był pisany tylko na 2323 Sad(() więc może to kwestia poprawek w programie. Był bym wdzięczny za wszelką pomoc (niech ktoś spróbuje coś zmienić i mi podesłąć to sprawdze czy działa trochę lepiej) pociesza mnie to rze chociaż programator działa jak należy Smile zawsze coś hehe. Tymczasem załączam pliki z eagla.

Mam szczerą nadzieję na pomoc gduż oddaje moją pracę do oceny a aktualnie jestem w kropce Sad

Pozdrawiam i wesołych..

Post był raportowany.
Pisanie postu pod postem.
Należy używać przycisku ZMIEŃ.
Scaliłem dwa posty. [hefid]


Attachments:

Helpful message? + -

Back to top
   
Paweł Es.
Pomocny dla użytkowników
Pomocny dla użytkowników


Joined: 14 Sep 2004
Posts: 7050
Location: Warszawa

Post#12 27 Dec 2004 15:29   

Re: Tuner gitarowy


A co te diody pokazują ? Migają bezładnie, migają wszystkie ?

Helpful message? + -

Back to top
   
Intel
Poziom 13
Poziom 13


Joined: 01 Apr 2003
Posts: 111
Location: Bydgoszcz

Post#13 Post from the author of the topic 29 Dec 2004 00:54   

Re: Tuner gitarowy


wygląda to tak - jak nie uderze w strunę to nic sie nie dzieje Smile (czyli OK) jak uderzam to zaczynają zapalać sie diody (głównie czerwona - czyli że za wysoko). Gdy zaczynam zbliżać sie do poprawnego stroju danej struny nie za bardzo chcą sie zapalić obie naraz Sad czasem zapalają sie obie diody ale nie wtedy kiedy trzeba. Ogólnie to działa ale baaaardzo niedokładnie Sad.

Tak sobie myślałem że może to wina przetaktowania procesora !! wkońcu 2313 idzie max na 10 MHz a w tym programie na 11,0592 MHz - ja sie nie znam ale może ktoś spróbuje przerobić np. na 4 MHz (z tego co wiem to trzeba nie tylko zmienić #define F_CPU - no chyba ze sie mylę to proszę sprostować).

Aha...niech ktoś mi wytłumaczy dlaczego w tym programie mamy tak zdefiniowane częstotliwości strun:
Code:

#define E_STRING   164.81                  // top string (1)
#define A_STRING   220.00
#define D_STRING   293.66
#define G_STRING   391.99
#define B_STRING   493.88             
#define EH_STRING  659.26                  // bottom string (6)


z tego co sie orientuję to powinny być dwa razy mniejsze te wartości !!

Z góry dziękuję za wszelką pomoc.

Pozdrawiam

Helpful message? + -

Back to top
   
ko_rex
Poziom 15
Poziom 15


Joined: 29 Dec 2004
Posts: 253
Location: Dąbrowa Górnicza

Post#14 29 Dec 2004 12:08   

Re: Tuner gitarowy


W sygnale pochodzącym od struny gitarowej jest duża zawartość drugiej harmonicznej (czyli sygnału o dwa razy większej częstotliwości od podstawowej: 110 podstawowa - 220 druga harmoniczna), więc bezpieczniej jest mietzyć właśnie na harmonicznej.

Helpful message? + -

Back to top
   
Intel
Poziom 13
Poziom 13


Joined: 01 Apr 2003
Posts: 111
Location: Bydgoszcz

Post#15 Post from the author of the topic 29 Dec 2004 21:40   

Re: Tuner gitarowy


ok. dziękuję za wytłumaczenie. Niestety program jak nie działał tak nie działa Sad, co sądzicie o tych 11,0592 MHz ?? może to przez to przetaktowanie CPU ??

Helpful message? + -

Back to top
   
Paweł Es.
Pomocny dla użytkowników
Pomocny dla użytkowników


Joined: 14 Sep 2004
Posts: 7050
Location: Warszawa

Post#16 30 Dec 2004 20:05helpful post - solution   

Re: Tuner gitarowy


Problemów to tu jest kilka wynikających z przyjętych niepotrzebnie uproszczeń (Jesper się nie popisał):

Teoria

Pomiaru częstotliwości struny dokonuje się przez pomiar okresu drgań. Dla uzyskania odpowiedniej rozdzielczości przy rozsądnej częstotliwości generatora wzorcowego mierzymy N okresów co daje nam daje nam taki efekt jak byśmy bramkowali okresem drgań struny przebieg N*fclock.

Druga sprawa to dokładność dostrojenia. W muzyce dokładność strojenia mierzy się w centach, przyjmując odległość między półtonami jako 100 centów. Z poprzedniego wynika, że tony różniące się o oktawę (czyli f2=2*f1) są rozstrojone o 1200 centów.

Matematycznie wyraża się to wzorem


3$Odstrojenie=1200*ln_2(\frac{f}{fwz}) [cent]

lub dla ominięcia logarytmu przy podstawie 2:

3$Odstrojenie=1731.23405*ln(\frac{f}{fwz}) [cent]

gdzie

f - częstotliwość mierzona
fwz - częstotliwość wzorcowa

Znaczy to, że dla dobrego dostrojenia wynoszącego &plusmn; 5 centów

częstotliwość mierzonego źródła musi się mieścić w zakresie

0.997116*fwz < f mierzone < 1.0028923*fwz

a dla okresu

1.0028923*twz > tmierzone > 0.997116*twz

Przy strojeniu instrumentu w skali równomiernie temperowanej naszym
fwz są częstotliwości odpowiednich tonów wynikające ich n*100 centów odstrojenia od tonu strojeniowego A=440 Hz.

Dla gitary mamy kolejno < okres >:

E = 82.407 Hz < 12.1349 ms >
A = 110.000 Hz < 9.091 ms>
D = 146.832 Hz < 6.8105 ms>
G = 184.997 Hz < 5.4055 ms>
H = 246.942 Hz < 4.0495 ms>
E1= 329.628 Hz < 3.0337 ms>

Licząc w jednostkach zegara wynikających z częstotliwości kwarcu fkw=1105920 i podzielnika N=64 uwzględniając 32 okresy mierzone otrzymujemy:

Code:


fwz        twz  twz(-5c)    twz(+5c)               
_82,407   67101   67295   66908
110,000   50269   50414   50124
146,832   37659   37768   37551
184,997   29890   29977   29804
246,942   22392   22457   22328
329,628   16775   16824   16727



Nawet po podzieleniu przez 32 zakresy 5 centowe wynoszą od 2103 do 2091 dla struny najgrubszej do 526 do 522 dla struny najcieńszej.

Z powyższego wynika, że przyjęcie zakresu +/-1 dla włączania diod jest bez sensu ponieważ prawdopodobieństwo precyzyjnego trafienia w tak wąski przedział jest nikłe.

Praktyka

1. Przebieg drgań struny charakteryzuje się tym, że posiada w okresie podstawowym kilka przejść przez zero z powodu dominacji wyższych harmonicznych (patrz załączone przebiegi dla struny najcieńszej E i grubszej G.

2. Przebieg drgań struny może zawierać składowe szumowe przesuwające miejsca przejść przez zero przebiegu podstawowego co skutkuje błędami w pomiarze okresu.

3. Przebieg drgań struny posiada różne stany przejściowe na początku przebiegu wynikające z różnych sposobów jej pobudzenia (kostka, palec, siła naciągu).

Z powyższych wynika, że układ zastosowany przez jespera chyba nigdy nie mierzył poprawnie ponieważ wzmacniacz na jednym tranzystorze nie ukształtuje odpowiednio sygnału szczególnie dla prawidłowego pomiaru okresu (gdzie zbocza przebiegu powinny być ostre).

Dla poprawnego ukształtowania sygnału wejściowego są wymagane (w najprostszym przypadku)

1. Wstępne liniowe wzmocnienie sygnału
2. Filtracja pasmowa 70 Hz- 400 Hz co najmniej 2 rzędu (12 dB/oct)
3. Zastosowanie komparatora z histerezą i tylko dla składowej zmiennej

W bardziej rozbudowanych konstrukcjach można zastosować wzmacniacz AGC dla wyrównania amplitud przebiegu i dodatkowy układ monostabilny za komparatorem o czasie trwania impulsu większym niż połowa najkrótszego mierzonego okresu a za nim przerzutnik dzielący przebieg przez 2 co da procesorowi dopiero odpowiedni przebieg do pomiaru.

Z początkowego punktu 3 wynika, że trzeba dać opóźnienie kilku okresów przed rozpoczęciem właściwego pomiaru okresu dla ominięcia raf związanych ze stanami przejściowymi przebiegu drgań struny a także stanów przejściowych ewentualnego filtru.

Zastosowany przez jespera pomiar drugiej harmonicznej jest bez sensu przy braku filtru przycinającego pasmo.

Co do programu to operacja uśredniania 32 przebiegów:

count = count >>5

miałaby sens jeżeli count byłoby zmienną rzeczywistą, przy zmiennej całkowitej taka operacja powoduje utratę rozdzielczości pomiaru.

Z obliczeń okresu drgań poszczególnych strun wynika, że zastosowana histereza dla diod nie może być stała i zmienia się:

od +/- 194 dla najniżej brzmiącej struny do +/- 49 dla najwyżej brzmiącej struny (uwzględniając dopuszczalny zakres odstrojenia +/- 5 centów i brak dzielenia liczby impulsów przez 32).

Lepszym więc rozwiązaniem będzie rozszerzenie zawartości tablic nie tylko o wartości graniczne między nutami (nota bene +/- 50 centów nie oznacza połowy drogi między częstotliwościami użytymi przez jespera, bo skala jest logarytmiczna a nie liniowa.) ale i o wartości graniczne +/- 5 centów.

Zalecam też używanie do porównań pełnej wartości 32 okresów (lub mniej by nie stosować zmiennej 32 bitowej count. To zwiększy dokładność strojenia.

No to tyle teoretyzowania, mam nadzieję, że nie wpędziłem Kolegi w czarną rozpacz Smile

Strojenie gitary tylko na ucho wydaje się proste, niestety ! (niezły "mikrokontroler" mamy w głowach)

Attachments:

Helpful message? + -

Back to top
   
Paweł Es.
Pomocny dla użytkowników
Pomocny dla użytkowników


Joined: 14 Sep 2004
Posts: 7050
Location: Warszawa

Post#17 04 Jan 2005 23:36   

Re: Tuner gitarowy


Kurdesz, nad kurdeszami i odpowiadaj tu człowieku na pytania !
Po co te ludzie pytają jak nie czytają odpowiedzi ?
Zawracanie gitary i to rozstrojonej !

Helpful message? + -

Back to top
   
Bielsky
Poziom 16
Poziom 16


Joined: 03 Sep 2003
Posts: 314
Location: Bielsko-Biała / Warszawa / Wrocław

Post#18 05 Jan 2005 12:00   

Tuner gitarowy


Cóż, kolego Pawle.... trzeba się do tego przyzwyczaić albo dać sobie spokój....

Tak sobie myślę......
*W sygnale dominuje druga harmoniczna
*Druga harmonioczna to - powiedzmy taki sam dźwięk, jak pierwsza...

Proponuję zrobić tablicę dopasującą dźwięki parami różniące się o oktawę. Przekręcenie struny o oktawę jest trudne Smile

Potencjalny problem, gdy pojawi się dużo trzeciej harmonicznej: 82*3=246 (trzecia harmoniczna niskiego E daje H, podobnie z A zrobi się E),
Można spróbować dać filtr korygujący o opadającej charakterystyce o np 3dB/oktawę. Takie rozwiązanie przydałoby się uzupełnić automatyczną regulacją wzmocnienia.

Gdzieś widziałem algorytm obliczający częstotliwość przebiegu odkształconego na podstawie odnajdywania powtarzających się czasów podokresów w przesterowanym przebiegu, niestety nie pamiętam gdzie.

Helpful message? + -

Back to top
   
Paweł Es.
Pomocny dla użytkowników
Pomocny dla użytkowników


Joined: 14 Sep 2004
Posts: 7050
Location: Warszawa

Post#19 05 Jan 2005 12:31helpful post - solution   

Re: Tuner gitarowy


Bielsky wrote:
Cóż, kolego Pawle.... trzeba się do tego przyzwyczaić albo dać sobie spokój....

Tak sobie myślę......
*W sygnale dominuje druga harmoniczna
*Druga harmonioczna to - powiedzmy taki sam dźwięk, jak pierwsza...


To nie jest takie proste, proporcje harmonicznych zależą od sposobu pobudzenia struny poza tym to się zmienia w miarę wybrzmiewania struny.

Quote:

Można spróbować dać filtr korygujący o opadającej charakterystyce o np 3dB/oktawę. Takie rozwiązanie przydałoby się uzupełnić automatyczną regulacją wzmocnienia.


Prosty filtr mało da. W znalezionym opisie patentowym tunera wynalazca stosował 2 filtru pasmowe - pierwszy obejmował 3 najniższe struny a drugi pozostałe i były analizowane dwa kanały równolegle. Chodziło o eliminację problemu harmonicznych najniższych strun.

Helpful message? + -

Back to top
   
Intel
Poziom 13
Poziom 13


Joined: 01 Apr 2003
Posts: 111
Location: Bydgoszcz

Post#20 Post from the author of the topic 05 Jan 2005 14:21   

Re: Tuner gitarowy


Przepraszam najmocniej - jak bym mógł to bym odpowiedział wcześniej.
Bardzo dziękuję panu Pawłu za tak obszerne opisanie tematu - niestety wcale mnie to nie cieszy Sad ( to że nie działa układ SadSadSadSad ).

Tak sobie pomyślałem że czy nie powino to działać lepiej gdybym to podłączył pod generator ?? np. sinus. Co też uczyniłem przez komputer (poziom sygnału ustawiłem minimalny, czyli tak żeby ATMEL zaczął reagować) no i niestety nadal jest lipa. Jest taki sam problem z dostrojeniem.
Hmm.... nie wiem ale wydale mi sie że chyba powinno teoretycznie zadziałać lepiej przy generatorze ??. Czy może ktoś ma jakiś inny pomysł ?? może coś z tym generatorem bo wydaje mi się że chyba dobrze kompinuje (chodzi mi chociaż żeby zaprezentować że układ działa, bo nie będę taszczył gitary do szkoły).

Jeszcze raz przepraszam za moją szybką odpowiedz Wink

Helpful message? + -

Back to top
   
Paweł Es.
Pomocny dla użytkowników
Pomocny dla użytkowników


Joined: 14 Sep 2004
Posts: 7050
Location: Warszawa

Post#21 05 Jan 2005 15:12   

Re: Tuner gitarowy


Quote:

Tak sobie pomyślałem że czy nie powino to działać lepiej gdybym to podłączył pod generator ?? np. sinus. Co też uczyniłem przez komputer (poziom sygnału ustawiłem minimalny, czyli tak żeby ATMEL zaczął reagować) no i niestety nadal jest lipa.


Tam poziom powinien być spory by na kolektorze tranzystora były w miarę ostre zbocza - ten tranzystor jest normalnie nasycony czyli ma stan niski na wyjściu i dopiero przy ujemnych półfalach sygnały wejsciowgo jest zatykany.

Quote:


Jest taki sam problem z dostrojeniem.

Hmm.... nie wiem ale wydale mi się że chyba powinno teoretycznie zadziałać lepiej przy generatorze ??. Czy może ktoś ma jakiś inny pomysł ?? może coś z tym generatorem bo wydaje mi się że chyba dobrze kompinuje (chodzi mi chociaż żeby zaprezentować że układ działa, bo nie będę taszczył gitary do szkoły).


Rozszerz ten zakres histerezy bo +/1 jeden to strasznie ostro.

Sprawdź czy jeżeli ustawisz fwe niższe od najniższej częstotliwości struny E i wyższe od najwyższej częstotliwości struny E1 to palą się na stałe odpowiednio dioda za małe lub za duże. Tylko ustawiaj w rozsądnym zakresie.

Jeżeli nie palą się tak to znaczy, że nie działa ten fragment pomiaru okresu.

A i coś mi dziwnie wygląda ten warunek zakończenia w tej pętli for, która służy do szukania konkretnej częstotliwości.

Nie mozna tego sizeof(TransitionCount)/sizeof(TransitionCount[0]) zastapić po prostu liczbą 5 ?

W razie czego można spróbować z kwarcem o mniejszej częstotliwości.

Helpful message? + -

Back to top
   
gonia
Poziom 9
Poziom 9


Joined: 20 Dec 2003
Posts: 41

Post#22 05 Jan 2005 23:08   

Re: Tuner gitarowy


być może rozwiązanie problemu jest tutaj:

http://rab.ict.pwr.wroc.pl/dydaktyka/supwa/projects/icek/html/idea.html

hociaż opis projektu jest rzeczowy i przekonujący, to pojawiające się w nim uwagi typu:
"Ponieważ projekt nie został uruchomiony nie wiadomo... , ...ale niestety nie zostało to sprawdzone"
sugerują wątpliwy finał realizacji praktycznej stroika.

wykonałem takie urządzenie bez użycia procesora (opis w EP z przed kilku lat - dodałem mikrofon pojemnościowy, a pierścień z 10 LED)
spisuje się doskonale!!
lecz wykonanie z procesorkiem jest kuszące Cool

pzdr gonia

Helpful message? + -

Back to top
   
Google


Google Adsense


Post# 05 Jan 2005 23:08   





Back to top
   
buc
Poziom 14
Poziom 14


Joined: 21 Jun 2003
Posts: 165
Location: ruda slaska

Post#23 26 Jan 2005 16:07   

Re: Tuner gitarowy


o co tyle hałasu,,przerabiałem projekt na 2313 i ten sam problem ,,diody migają nie wiadomo co,,najprościej nagrać program fxguitar poszukać w googlach i sprawa załatwiona stroi jak lala,,jeszcze na dodatek można definiować w jakiej tonacji ma być strojona gitara.
narazie pozdro

Helpful message? + -

Back to top
   
Intel
Poziom 13
Poziom 13


Joined: 01 Apr 2003
Posts: 111
Location: Bydgoszcz

Post#24 Post from the author of the topic 26 Jan 2005 20:57   

Re: Tuner gitarowy


wiem że najprościej to pod kompa podłączyć i jest git. Tylko że ja bede miał te pracę ocenią pod zwględen funkcjonalności Sad. Moja prośba o pomoc jest nadal aktualna (choć wątpie że ktoś mi zdołą w tym wypadku pomóc Sad).
buc-jeśli możesz to wyśli mi skompilowany program przez ciebie (może olśli choć troszkę mój stroik Wink) intelx(malpa)o2.pl

Dziękuję z góry i pozdrawiam

Helpful message? + -

Back to top
   
gilong
Poziom 16
Poziom 16


Joined: 26 Oct 2004
Posts: 349

Post#25 03 Oct 2006 22:19   

Re: Tuner gitarowy


a robil ktos cos podobnego na atmega8 ? bo probowalem przerobic ale nie udalo mi sie

Helpful message? + -

Back to top
   
Post new topic  This topic is locked      Main Page -> Forum Index -> Microcontrollers Generally -> Tuner gitarowy
Page 1 of 1



Administrator || Moderators || Forum Rules || General Rules || Cookies information || Contact

Page generation time: 0.109 seconds

elektroda.pl topic RSS feed