W czym narysować widmo dźwięku?

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

W czym narysować widmo dźwięku?

Nowy postprzez kriss » wtorek, 21 grudnia 2010, 18:59

Witajcie!

Chciałbym przy użyciu poprzednio wspominanej biblioteki dźwiękowej BASS ze strony (http://www.un4seen.com/) narysować widmo dźwięku. Mam tam transformatę fouriera.

Kod: Zaznacz cały
float fft[1024];
      BASS_ChannelGetData(Uchwyt,fft,BASS_DATA_FFT2048); // dane dla fft


Nie wiem tylko w czym mam wyrysować dynamicznie zmieniający się wykres... Myślałem początkowo o TChart ale tam wartości dodawane do serii danych - nie są one aktualizowane...

Jak mam wyrysować przysłowiowe "skaczące paski"?
Avatar użytkownika
kriss
Bladawiec
Bladawiec
 
Posty: 20
Dołączył(a): niedziela, 12 grudnia 2010, 21:28
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Ultimate x64
Kompilator: C++ Builder 6 Enterprise
Gadu Gadu: 0
    Windows 7Firefox

Re: W czym narysować widmo dźwięku?

Nowy postprzez Cyfrowy Baron » wtorek, 21 grudnia 2010, 19:24

Rysuje się na płótnie TCanvas, można to zrobić w TImage, albo w TPaintBox, jak też w każdym innym obiekcie obsługującym TCanvas. Wśród standardowych bibliotek środowiska C++Builder nie ma komponentów, które pozwalałyby zrobić skaczące paski, więc wszystko musisz sam zaprogramować od podstaw.
Wśród komponentów TMS są takie, które udostępniają kilka gotowych rozwiązań w pakiecie TMS Instrumentation Workshop, jednak są to komponenty komercyjne.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
kriss
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: W czym narysować widmo dźwięku?

Nowy postprzez kriss » wtorek, 21 grudnia 2010, 19:55

omg :zawiedziony: w takim razie popróbuje z tymi komercyjnymi komponentami ;) z TCanvas mógłbym to robić wieki ;)
Avatar użytkownika
kriss
Bladawiec
Bladawiec
 
Posty: 20
Dołączył(a): niedziela, 12 grudnia 2010, 21:28
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Ultimate x64
Kompilator: C++ Builder 6 Enterprise
Gadu Gadu: 0
    Windows 7Firefox

Re: W czym narysować widmo dźwięku?

Nowy postprzez kriss » wtorek, 21 grudnia 2010, 23:51

Dzięki za informacje o tym komponencie ;) udało mi się utworzyć ładne widmo dźwięku.
Avatar użytkownika
kriss
Bladawiec
Bladawiec
 
Posty: 20
Dołączył(a): niedziela, 12 grudnia 2010, 21:28
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Ultimate x64
Kompilator: C++ Builder 6 Enterprise
Gadu Gadu: 0
    Windows 7Firefox

Re: W czym narysować widmo dźwięku?

Nowy postprzez kriss » środa, 22 grudnia 2010, 11:30

Zrobiłem to w taki sposób, wzorując się na informacjach z BASS'a:

KOD cpp:     UKRYJ  
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
float fft[1024];
int b0=0;
BASS_ChannelGetData(Uchwyt,fft,BASS_DATA_FFT2048);
for (x=0;x<50;x++)        //50 pasków
{
        float peak=0;
        int b1=pow(2,x*10.0/(50-1));
        if (b1>1023) b1=1023;
        if (b1<=b0) b1=b0+1;
        for (;b0<b1;b0++)
        if (peak<fft[1+b0]) peak=fft[1+b0];
        Form4->VrSpectrum1->Items[x]->Position = sqrt(peak)*3*127-4; //dzieki sqrt lepiej widac niskie czestotliwosci
}
}
Avatar użytkownika
kriss
Bladawiec
Bladawiec
 
Posty: 20
Dołączył(a): niedziela, 12 grudnia 2010, 21:28
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Ultimate x64
Kompilator: C++ Builder 6 Enterprise
Gadu Gadu: 0
    Windows 7Firefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości

cron