![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.01.2008
Сообщений: 85
|
![]()
Доброго времени суток!
Начал я писать программу для прослушивания интернет радио на основе библиотеки BASS. Поставил перед собой цель научить программу использовать визуализацию, запись потока, возможность смены станций, получать информацию о радио станции. Получилось реализовать немного. Но появилась проблема. Искал в Гугле смотрел на разных форумах. Не смог найти хотя бы примерного кода для визуализации. Если сможите, подкиньте идею как это сделать! |
![]() |
![]() |
![]() |
#2 |
Наркоман самоучка
Форумчанин
Регистрация: 22.07.2007
Сообщений: 276
|
![]()
void draw()
{ float H=Form1->PaintBox1->Height,W=Form1->PaintBox1->Width; int Ypos,i,PeakFallOff=2,Res=2,LineFall Off=4,Width=3,Height; short X,Y; float Yval; bool DrawPeak=true,FrameClear=true; TColor Pen=clGreen,Peak=clRed,BackColor=cl Black; float fft[512]; // fft data buffer Height=H-1; X=0; Y=0; if(FrameClear) { Form1->PaintBox1->Canvas->Pen->Color=BackColor; Form1->PaintBox1->Canvas->Brush->Color=BackColor; Form1->PaintBox1->Canvas->Rectangle(0,0,W,H); } if(BASS_ChannelIsActive(stream)!=BA SS_ACTIVE_PLAYING) return; BASS_ChannelGetData(stream,fft,BASS _DATA_FFT1024); Form1->PaintBox1->Canvas->Pen->Color=Pen; for(i=0;i<=128;i++) { Yval=fft[i*Res+5]; if(Yval<0.0) Yval=-Yval; Ypos=floor(Yval*500); if(Ypos>Height) Ypos=Height; if(Ypos>=FFTPeacks[i]) FFTPeacks[i]=Ypos; else FFTPeacks[i]-=PeakFallOff; if(Ypos>=FFTFallOff[i]) FFTFallOff[i]=Ypos; else FFTFallOff[i]-=LineFallOff; //if(H-FFTPeacks[i]>H) //FFTPeacks[i]=0; //if(H-FFTFallOff[i]>H) //FFTFallOff[i]=0; //if(DrawPeak) { Form1->PaintBox1->Canvas->Pen->Color=Peak; Form1->PaintBox1->Canvas->MoveTo(X+i*(Width+1),Y+H-1-FFTPeacks[i]); Form1->PaintBox1->Canvas->LineTo(X+i*(Width+1)+Width,Y+H-1-FFTPeacks[i]); } Form1->PaintBox1->Canvas->Pen->Color=Pen; Form1->PaintBox1->Canvas->Brush->Color=Pen; Form1->PaintBox1->Canvas->Rectangle(X+i*(Width+1),Y+H-FFTFallOff[i],X+i*(Width+1)+Width,Y+H); } } Это примерный код написанный для C++ Builder, но его нетрудно перенести и в Делпхи...И вместе с басс.длл идёт хелп и примеры, в том числе и для делпхи, так, что посматри, думаю там должен быть пример визуализации... можеш обратиться потом ко мне на асю 465200328 я сейчас делаю .дл для проги своей там она основана на басс.длл и там буду реализованы все функции для плейров и также чтоб сделать визуализацию непридеться писать код а надо будет лиш вызвать функцию определёную или же чтоб построить плей лист также достаточно вызвать функцию и ненадо ломать голову над алгоритмом данным...
#include <мозг.h>
Последний раз редактировалось Руслантус; 13.08.2008 в 23:41. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 05.01.2008
Сообщений: 85
|
![]()
Спасибо большое! Думаю справлюсь. В основном код понял!
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите с параметрическим эквалайзером в BASS.DLL! | N-DOGG | Компоненты Delphi | 2 | 04.01.2009 16:05 |
Всем кто использует BASS (мультимедиа) | MusicMan | Помощь студентам | 1 | 27.04.2008 10:56 |
Компонент для Winampa (Bass Player) | DeDoK | Компоненты Delphi | 1 | 25.11.2007 09:46 |
bass.dll - ошибка - Use the step or run to continue. | vitalik007 | Общие вопросы Delphi | 1 | 20.08.2007 19:59 |
визуализация алгоритма | Alar | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 30.10.2006 14:10 |