home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 November / CDVD1105.ISO / Software / Freeware / programare / bass / Delphi / SampleVis / main.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2005-09-14  |  7.0 KB  |  248 lines

  1. {
  2.  Source code under Bass license
  3.  by Alessandro Cappellozza
  4.  
  5.  http://digilander.libero.it/Kappe
  6.  mail acappellozza@ieee.org
  7.  
  8.  Notice
  9.   The body (this unit) only drive the classes and Bass,
  10.   the rest is wrtitten in OOD for separate the draw code
  11.  }
  12.  
  13. unit main;
  14.  
  15. interface
  16.  
  17. uses
  18.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, osc_vis, spectrum_vis,
  19.   Dialogs, ExtCtrls, StdCtrls, ComCtrls, circle_vis, Bass, CommonTypes, ExtDlgs;
  20.  
  21. type
  22.   TFormPlayer = class(TForm)
  23.     Button1: TButton;
  24.     OpenDialog: TOpenDialog;
  25.     PaintFrame: TPaintBox;
  26.     TimerRender: TTimer;
  27.     BackImageRes: TImage;
  28.     Button2: TButton;
  29.     RadioMode: TRadioGroup;
  30.     RadioDraw: TRadioGroup;
  31.     GroupBox1: TGroupBox;
  32.     TrackOff: TTrackBar;
  33.     TrackRes: TTrackBar;
  34.     TrackY: TTrackBar;
  35.     TrackX: TTrackBar;
  36.     Label1: TLabel;
  37.     Label2: TLabel;
  38.     Label3: TLabel;
  39.     Label4: TLabel;
  40.     PanelBkg: TPanel;
  41.     PanelPen: TPanel;
  42.     Label6: TLabel;
  43.     Label7: TLabel;
  44.     ColorDialog: TColorDialog;
  45.     GroupBox2: TGroupBox;
  46.     TrackRad: TTrackBar;
  47.     Label5: TLabel;
  48.     GroupBox3: TGroupBox;
  49.     SpecTrackWidth: TTrackBar;
  50.     Label8: TLabel;
  51.     PanelPeakColor: TPanel;
  52.     Label9: TLabel;
  53.     Label10: TLabel;
  54.     Label11: TLabel;
  55.     Button3: TButton;
  56.     CheckSpecPeaks: TCheckBox;
  57.     OpenPictureDialog: TOpenPictureDialog;
  58.     SpinLineFall: TUpDown;
  59.     SpinPeakFall: TUpDown;
  60.     EditLineFall: TEdit;
  61.     EditPeakFall: TEdit;
  62.     procedure FormCreate(Sender: TObject);
  63.     procedure Button1Click(Sender: TObject);
  64.     procedure TimerRenderTimer(Sender: TObject);
  65.     procedure Button2Click(Sender: TObject);
  66.     procedure RadioModeClick(Sender: TObject);
  67.     procedure TrackOffChange(Sender: TObject);
  68.     procedure TrackResChange(Sender: TObject);
  69.     procedure TrackRadChange(Sender: TObject);
  70.     procedure PanelBkgClick(Sender: TObject);
  71.     procedure PanelPenClick(Sender: TObject);
  72.     procedure SpecTrackWidthChange(Sender: TObject);
  73.     procedure PanelPeakColorClick(Sender: TObject);
  74.     procedure Button3Click(Sender: TObject);
  75.     procedure CheckSpecPeaksClick(Sender: TObject);
  76.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  77.     procedure SpinLineFallClick(Sender: TObject; Button: TUDBtnType);
  78.     procedure SpinPeakFallClick(Sender: TObject; Button: TUDBtnType);
  79.   private
  80.     { Private declarations }
  81.   public
  82.     { Public declarations }
  83.   end;
  84.  
  85. var
  86.   FormPlayer : TFormPlayer;
  87.   Channel    : DWORD;
  88.  
  89. implementation
  90.  
  91. {$R *.dfm}
  92.  
  93. procedure TFormPlayer.FormCreate(Sender: TObject);
  94. begin
  95.   BASS_Init(-1, 44100, 0, Application.Handle, nil);
  96.  
  97.   CircleScope := TCircleScope.Create(PaintFrame.Width, PaintFrame.Height);
  98.   OcilloScope := TOcilloScope.Create(PaintFrame.Width, PaintFrame.Height);
  99.   Spectrum    := TSpectrum.Create(PaintFrame.Width, PaintFrame.Height);
  100. end;
  101.  
  102.  
  103. procedure TFormPlayer.Button1Click(Sender: TObject);
  104. begin
  105.   OpenDialog.Title  := 'Open Files';
  106.   OpenDialog.Filter := 'mp3|*.mp3';
  107.   if not OpenDialog.Execute then exit;
  108.     Channel := BASS_StreamCreateFile(FALSE, PChar(OpenDialog.FileName), 0, 0, 0);
  109.     BASS_ChannelPlay(Channel, False);
  110. end;
  111.  
  112. procedure TFormPlayer.TimerRenderTimer(Sender: TObject);
  113.  var FFTFata : TFFTData; WaveData  : TWaveData;
  114. begin
  115.  
  116.  if BASS_ChannelIsActive(Channel) <> BASS_ACTIVE_PLAYING then Exit;
  117.  
  118. case RadioDraw.ItemIndex of
  119.   0 :
  120.    begin
  121.     BASS_ChannelGetData(Channel, @WaveData, 2048);
  122.     CircleScope.Draw (PaintFrame.Canvas.Handle, WaveData, TrackX.Position, TrackY.Position);
  123.    end;
  124.  
  125.   1 :
  126.    begin
  127.     BASS_ChannelGetData(Channel, @WaveData, 2048);
  128.     OcilloScope.Draw (PaintFrame.Canvas.Handle, WaveData, TrackX.Position - 50, TrackY.Position);
  129.    end;
  130.  
  131.   2 :
  132.    begin
  133.     BASS_ChannelGetData(Channel, @FFTFata, BASS_DATA_FFT1024);
  134.     Spectrum.Draw (PaintFrame.Canvas.Handle, FFTFata, TrackX.Position - 40, TrackY.Position - 60);
  135.    end;
  136. end;
  137. end;
  138.  
  139. procedure TFormPlayer.Button2Click(Sender: TObject);
  140. begin
  141.  OpenPictureDialog.Title  := 'Open Background Bitmap';
  142.  OpenPictureDialog.Filter := 'BMP|*.bmp';
  143.  if not OpenPictureDialog.Execute then exit;
  144.  BackImageRes.Picture.LoadFromFile(OpenPictureDialog.FileName);
  145.  
  146.  CircleScope.SetBackGround(True, BackImageRes.Picture.Graphic);
  147.  CircleScope.Pen := clBlack;
  148.  
  149.  OcilloScope.SetBackGround(True, BackImageRes.Picture.Graphic);
  150.  OcilloScope.Pen := clBlack;
  151.  
  152.  Spectrum.SetBackGround(True, BackImageRes.Picture.Graphic);
  153.  Spectrum.Pen := clBlack;
  154. end;
  155.  
  156. procedure TFormPlayer.RadioModeClick(Sender: TObject);
  157. begin
  158.   CircleScope.Mode := RadioMode.ItemIndex;
  159.   OcilloScope.Mode := RadioMode.ItemIndex;
  160.   Spectrum.Mode := RadioMode.ItemIndex;
  161. end;
  162.  
  163. procedure TFormPlayer.TrackOffChange(Sender: TObject);
  164. begin
  165.  CircleScope.Offset := TrackOff.Position;
  166.  OcilloScope.Offset := TrackOff.Position;
  167.  Spectrum.Height := TrackOff.Position;
  168. end;
  169.  
  170. procedure TFormPlayer.TrackResChange(Sender: TObject);
  171. begin
  172.  CircleScope.Res := TrackRes.Position;
  173.  OcilloScope.Res := TrackRes.Position;
  174.  Spectrum.Res := TrackRes.Position;
  175. end;
  176.  
  177. procedure TFormPlayer.TrackRadChange(Sender: TObject);
  178. begin
  179.  CircleScope.Radius := TrackRad.Position;
  180. end;
  181.  
  182. procedure TFormPlayer.PanelBkgClick(Sender: TObject);
  183. begin
  184.  ColorDialog.Color := PanelBkg.Color;
  185.   if not ColorDialog.Execute then Exit;
  186.    PanelBkg.Color := ColorDialog.Color;
  187.     CircleScope.BackColor := ColorDialog.Color;
  188.     OcilloScope.BackColor := ColorDialog.Color;
  189.     Spectrum.BackColor := ColorDialog.Color;
  190. end;
  191.  
  192. procedure TFormPlayer.PanelPenClick(Sender: TObject);
  193. begin
  194.  ColorDialog.Color := PanelPen.Color;
  195.   if not ColorDialog.Execute then Exit;
  196.    PanelPen.Color := ColorDialog.Color;
  197.     CircleScope.Pen := ColorDialog.Color;
  198.     OcilloScope.Pen := ColorDialog.Color;
  199.     Spectrum.Pen := ColorDialog.Color;
  200. end;
  201.  
  202. procedure TFormPlayer.SpecTrackWidthChange(Sender: TObject);
  203. begin
  204.   Spectrum.Width := SpecTrackWidth.Position;
  205. end;
  206.  
  207. procedure TFormPlayer.PanelPeakColorClick(Sender: TObject);
  208. begin
  209.  ColorDialog.Color := PanelPeakColor.Color;
  210.   if not ColorDialog.Execute then Exit;
  211.    PanelPeakColor.Color := ColorDialog.Color;
  212.     Spectrum.Peak := ColorDialog.Color;
  213. end;
  214.  
  215. procedure TFormPlayer.Button3Click(Sender: TObject);
  216. begin
  217.  CircleScope.SetBackGround(False, BackImageRes.Picture.Graphic);
  218.  CircleScope.Pen := PanelPen.Color;
  219.  
  220.  OcilloScope.SetBackGround(False, BackImageRes.Picture.Graphic);
  221.  OcilloScope.Pen := PanelPen.Color;
  222.  
  223.  Spectrum.SetBackGround(False, BackImageRes.Picture.Graphic);
  224.  Spectrum.Pen := PanelPen.Color;
  225. end;
  226.  
  227. procedure TFormPlayer.CheckSpecPeaksClick(Sender: TObject);
  228. begin
  229. Spectrum.DrawPeak := CheckSpecPeaks.Checked;
  230. end;
  231.  
  232. procedure TFormPlayer.FormClose(Sender: TObject; var Action: TCloseAction);
  233. begin
  234.   Bass_Free;
  235. end;
  236.  
  237. procedure TFormPlayer.SpinLineFallClick(Sender: TObject; Button: TUDBtnType);
  238. begin
  239.  Spectrum.LineFallOff := SpinLineFall.Position;
  240. end;
  241.  
  242. procedure TFormPlayer.SpinPeakFallClick(Sender: TObject; Button: TUDBtnType);
  243. begin
  244.  Spectrum.PeakFallOff := SpinPeakFall.Position;
  245. end;
  246.  
  247. end.
  248.