diff --git a/components/acs/Demos/Mixer/mixer.lpi b/components/acs/Demos/Mixer/mixer.lpi
new file mode 100644
index 000000000..a76b91dd1
--- /dev/null
+++ b/components/acs/Demos/Mixer/mixer.lpi
@@ -0,0 +1,361 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/acs/Demos/Mixer/umixer.lfm b/components/acs/Demos/Mixer/umixer.lfm
new file mode 100644
index 000000000..7a3f6d85a
--- /dev/null
+++ b/components/acs/Demos/Mixer/umixer.lfm
@@ -0,0 +1,68 @@
+object fMixer: TfMixer
+ ActiveControl = cbDevice
+ Caption = 'Mixer'
+ ClientHeight = 212
+ ClientWidth = 400
+ OnCreate = FormCreate
+ OnHide = FormHide
+ OnShow = FormShow
+ PixelsPerInch = 75
+ HorzScrollBar.Page = 399
+ VertScrollBar.Page = 211
+ Left = 379
+ Height = 212
+ Top = 347
+ Width = 400
+ object TopPanel: TPanel
+ Align = alTop
+ BevelOuter = bvNone
+ ClientHeight = 32
+ ClientWidth = 400
+ FullRepaint = False
+ TabOrder = 0
+ Height = 32
+ Width = 400
+ object lDevice: TLabel
+ Alignment = taCenter
+ Caption = 'Gerät'
+ Color = clNone
+ ParentColor = False
+ Height = 13
+ Top = 8
+ Width = 21
+ end
+ object Label3: TLabel
+ Align = alRight
+ Alignment = taCenter
+ Caption = 'Mixer'
+ Color = clBtnFace
+ Font.Color = clInactiveCaption
+ Font.Height = -25
+ Font.Style = [fsBold]
+ ParentColor = False
+ Left = 331
+ Height = 32
+ Width = 69
+ end
+ object cbDevice: TComboBox
+ MaxLength = 0
+ OnChange = cbDeviceChange
+ Style = csDropDownList
+ TabOrder = 0
+ Left = 48
+ Height = 21
+ Top = 4
+ Width = 136
+ end
+ end
+ object Mixer: TACSMixer
+ MixerName = 'ESS Technology ESS1988'
+ top = 368
+ end
+ object Timer: TTimer
+ Enabled = False
+ Interval = 200
+ OnTimer = TimerTimer
+ top = 336
+ end
+end
diff --git a/components/acs/Demos/Mixer/umixer.lrs b/components/acs/Demos/Mixer/umixer.lrs
new file mode 100644
index 000000000..326dc7521
--- /dev/null
+++ b/components/acs/Demos/Mixer/umixer.lrs
@@ -0,0 +1,22 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfMixer','FORMDATA',[
+ 'TPF0'#7'TfMixer'#6'fMixer'#13'ActiveControl'#7#8'cbDevice'#7'Caption'#6#5'Mi'
+ +'xer'#12'ClientHeight'#3#212#0#11'ClientWidth'#3#144#1#8'OnCreate'#7#10'Form'
+ +'Create'#6'OnHide'#7#8'FormHide'#6'OnShow'#7#8'FormShow'#13'PixelsPerInch'#2
+ +'K'#18'HorzScrollBar.Page'#3#143#1#18'VertScrollBar.Page'#3#211#0#4'Left'#3
+ +'{'#1#6'Height'#3#212#0#3'Top'#3'['#1#5'Width'#3#144#1#0#6'TPanel'#8'TopPane'
+ +'l'#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2' '#11
+ +'ClientWidth'#3#144#1#11'FullRepaint'#8#8'TabOrder'#2#0#6'Height'#2' '#5'Wid'
+ +'th'#3#144#1#0#6'TLabel'#7'lDevice'#9'Alignment'#7#8'taCenter'#7'Caption'#6#5
+ +'Ger'#228't'#5'Color'#7#6'clNone'#11'ParentColor'#8#6'Height'#2#13#3'Top'#2#8
+ +#5'Width'#2#21#0#0#6'TLabel'#6'Label3'#5'Align'#7#7'alRight'#9'Alignment'#7#8
+ +'taCenter'#7'Caption'#6#5'Mixer'#5'Color'#7#9'clBtnFace'#10'Font.Color'#7#17
+ +'clInactiveCaption'#11'Font.Height'#2#231#10'Font.Style'#11#6'fsBold'#0#11'P'
+ +'arentColor'#8#4'Left'#3'K'#1#6'Height'#2' '#5'Width'#2'E'#0#0#9'TComboBox'#8
+ +'cbDevice'#9'MaxLength'#2#0#8'OnChange'#7#14'cbDeviceChange'#5'Style'#7#14'c'
+ +'sDropDownList'#8'TabOrder'#2#0#4'Left'#2'0'#6'Height'#2#21#3'Top'#2#4#5'Wid'
+ +'th'#3#136#0#0#0#0#9'TACSMixer'#5'Mixer'#9'MixerName'#6#22'ESS Technology ES'
+ +'S1988'#3'top'#3'p'#1#0#0#6'TTimer'#5'Timer'#7'Enabled'#8#8'Interval'#3#200#0
+ +#7'OnTimer'#7#10'TimerTimer'#3'top'#3'P'#1#0#0#0
+]);
diff --git a/components/acs/Demos/Mixer/umixer.pas b/components/acs/Demos/Mixer/umixer.pas
new file mode 100644
index 000000000..bf702b98d
--- /dev/null
+++ b/components/acs/Demos/Mixer/umixer.pas
@@ -0,0 +1,216 @@
+unit uMixer;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls,
+ ExtCtrls, StdCtrls,GraphType, ACS_Mixer, ACS_Converters;
+
+type
+
+ { TfMixer }
+
+ TfMixer = class(TForm)
+ cbDevice: TComboBox;
+ lDevice: TLabel;
+ Label3: TLabel;
+ Mixer: TACSMixer;
+ Timer: TTimer;
+ TopPanel: TPanel;
+ procedure MuteChange(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure FormHide(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure TimerTimer(Sender: TObject);
+ procedure ChannelChange(Sender: TObject);
+ procedure BalanceChange(Sender: TObject);
+ procedure cbDeviceChange(Sender: TObject);
+ private
+ { private declarations }
+ public
+ { public declarations }
+ Channels : array of TTrackBar;
+ Balance : array of TTrackBar;
+ Muting : array of TCheckBox;
+ end;
+
+var
+ fMixer: TfMixer;
+
+implementation
+
+{ TfMixer }
+
+procedure TfMixer.FormCreate(Sender: TObject);
+var
+ i : Integer;
+begin
+ cbDevice.Items.Clear;
+ for i := 0 to Mixer.DevCount-1 do
+ begin
+ Mixer.DevNum := i;
+ cbDevice.Items.Add(Mixer.MixerName);
+ end;
+ cbDevice.ItemIndex := 0;
+end;
+
+procedure TfMixer.MuteChange(Sender: TObject);
+var
+ i : Integer;
+begin
+ for i := 0 to length(Muting)-1 do
+ if Sender = Muting[i] then
+ begin
+ Mixer.Mute[i] := TCheckBox(Sender).Checked;
+ end;
+end;
+
+procedure TfMixer.FormHide(Sender: TObject);
+begin
+ Timer.Enabled := False;
+end;
+
+procedure TfMixer.FormShow(Sender: TObject);
+begin
+ cbDeviceChange(nil);
+end;
+
+procedure TfMixer.TimerTimer(Sender: TObject);
+var
+ i : Integer;
+begin
+{ for i := 0 to length(Channels)-1 do
+ begin
+ if Mixer.IsStereo(i) then
+ Channels[i].Position := 255-Mixer.Level[i].Left
+ else
+ Channels[i].Position := 255-Mixer.Level[i].Main;
+ end;}
+end;
+
+procedure TfMixer.ChannelChange(Sender: TObject);
+var
+ i,tmp : Integer;
+ outp : TACSMixerLevel;
+begin
+ for i := 0 to length(Channels)-1 do
+ if Sender = Channels[i] then
+ begin
+ if Mixer.IsStereo(i) then
+ begin
+ tmp := -Balance[i].Position;
+ if tmp < 0 then tmp := 0;
+ tmp := round(((tmp*255)/255)+(255-Channels[i].Position));
+ if tmp > 255 then
+ tmp := 255;
+ Outp.Left := tmp;
+ tmp := Balance[i].Position;
+ if tmp < 0 then tmp := 0;
+ tmp := round(((tmp*255)/255)+(255-Channels[i].Position));
+ if tmp > 255 then
+ tmp := 255;
+ Outp.Right := tmp;
+ end
+ else
+ Outp.Main := Channels[i].Position-255;
+ Mixer.Level[i] := Outp;
+ end;
+end;
+
+procedure TfMixer.BalanceChange(Sender: TObject);
+var
+ i : Integer;
+begin
+ for i := 0 to length(Channels)-1 do
+ begin
+ if Mixer.IsStereo(i) then
+ Channels[i].Position := 255-Mixer.Level[i].Left
+ else
+ Channels[i].Position := 255-Mixer.Level[i].Main;
+ end;
+end;
+
+procedure TfMixer.cbDeviceChange(Sender: TObject);
+var
+ i : Integer;
+ aComp : TControl;
+ newPanel : TPanel;
+ newTrackbar : TTrackbar;
+ newBevel : TBevel;
+ newCheckbox : TCheckbox;
+ newLabel : TLabel;
+begin
+ setlength(Channels,0);
+ setlength(Balance,0);
+ setlength(Muting,0);
+ while fMixer.ControlCount > 1 do
+ begin
+ aComp := fMixer.Controls[1];
+ fMixer.RemoveControl(aComp);
+ aComp.Free;
+ end;
+ for i := 0 to Mixer.ChannelCount-1 do
+ begin
+ newPanel := TPanel.Create(nil);
+ newPanel.Parent := fMixer;
+ newPanel.Align := alLeft;
+ newPanel.Width := 80;
+ newPanel.BevelOuter := bvNone;
+ newLabel := TLabel.Create(nil);
+ newLabel.Parent := newPanel;
+ newLabel.Align := alTop;
+ newLabel.Alignment := taCenter;
+ newLabel.Caption := Mixer.ChannelName[i];
+ newLabel.Height := 30;
+ newBevel := TBevel.Create(nil);
+ newBevel.Parent := newPanel;
+ newBevel.Shape := bsLeftLine;
+ newBevel.Width := 1;
+ newBevel.Align := alRight;
+ newTrackbar := TTrackbar.Create(nil);
+ newTrackbar.Parent := NewPanel;
+ newTrackbar.Align := alClient;
+ newTrackBar.Orientation := trVertical;
+ newTrackbar.Max := 255;
+ newTrackbar.Min := 0;
+ setlength(Channels,i+1);
+ Channels[i] := newTrackBar;
+ newTrackBar.OnChange := @ChannelChange;
+ setlength(Balance,i+1);
+ Balance[i] := nil;
+ if Mixer.IsStereo(i) then
+ begin
+ newTrackbar := TTrackbar.Create(nil);
+ newTrackbar.Parent := NewPanel;
+ newTrackbar.Align := alTop;
+ newTrackBar.Orientation := trHorizontal;
+ newTrackBar.Height := 15;
+ newTrackbar.Max := 100;
+ newTrackbar.Min := -100;
+ newTrackBar.Position := 0;
+ Balance[i] := newTrackBar;
+ Balance[i].Max := 40;
+ Channels[i].Position := 255-Mixer.Level[i].Left;
+ end
+ else
+ Channels[i].Position := 255-Mixer.Level[i].Main;
+ newCheckBox := TCheckBox.Create(nil);
+ newCheckBox.Parent := newPanel;
+ newCheckBox.Caption := 'Mute';
+ newCheckBox.Align := alBottom;
+ newCheckBox.Checked := Mixer.Mute[i];
+ newCheckBox.OnChange := @MuteChange;
+ setlength(Muting,i+1);
+ Muting[i] := newCheckBox;
+ end;
+ Timer.Enabled := True;
+ Width := Mixer.ChannelCount*80;
+end;
+
+initialization
+ {$I umixer.lrs}
+
+end.
+
diff --git a/components/acs/Demos/Ripper/cdripper.lpi b/components/acs/Demos/Ripper/cdripper.lpi
new file mode 100644
index 000000000..ca892443d
--- /dev/null
+++ b/components/acs/Demos/Ripper/cdripper.lpi
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/acs/Demos/Ripper/umain.lfm b/components/acs/Demos/Ripper/umain.lfm
new file mode 100644
index 000000000..c14bd69c3
--- /dev/null
+++ b/components/acs/Demos/Ripper/umain.lfm
@@ -0,0 +1,119 @@
+object fMain: TfMain
+ ActiveControl = lvTracks
+ Caption = 'CD Ripper'
+ ClientHeight = 300
+ ClientWidth = 400
+ OnCreate = FormCreate
+ PixelsPerInch = 75
+ HorzScrollBar.Page = 399
+ VertScrollBar.Page = 299
+ Left = 271
+ Height = 300
+ Top = 150
+ Width = 400
+ object Label1: TLabel
+ Caption = 'Drive'
+ Color = clNone
+ ParentColor = False
+ Left = 8
+ Height = 13
+ Top = 7
+ Width = 31
+ end
+ object Label2: TLabel
+ Caption = 'Output Format'
+ Color = clNone
+ ParentColor = False
+ Left = 265
+ Height = 13
+ Top = 7
+ Width = 80
+ end
+ object lvTracks: TListView
+ Anchors = [akTop, akLeft, akRight, akBottom]
+ Columns = <
+ item
+ Caption = 'Track'
+ Width = 10
+ end
+ item
+ Caption = 'Tracktitle'
+ Width = 10
+ end
+ item
+ Caption = 'Length'
+ Width = 10
+ end>
+ MultiSelect = True
+ RowSelect = True
+ ViewStyle = vsReport
+ Height = 250
+ Top = 34
+ Width = 400
+ end
+ object cbDrives: TComboBox
+ MaxLength = 0
+ OnChange = cbDrivesChange
+ Style = csDropDownList
+ TabOrder = 1
+ Left = 40
+ Height = 21
+ Top = 4
+ Width = 132
+ end
+ object bRip: TButton
+ BorderSpacing.InnerBorder = 2
+ Caption = 'Rip selected'
+ OnClick = Button1Click
+ TabOrder = 2
+ Left = 184
+ Height = 21
+ Top = 4
+ Width = 75
+ end
+ object cbFormat: TComboBox
+ ItemIndex = 2
+ Items.Strings = (
+ 'ogg'
+ 'mp3'
+ 'wav'
+ )
+ MaxLength = 0
+ Style = csDropDownList
+ TabOrder = 3
+ Text = 'wav'
+ Left = 340
+ Height = 21
+ Top = 4
+ Width = 61
+ end
+ object ProgressBar: TProgressBar
+ Align = alBottom
+ Max = 100
+ Height = 12
+ Top = 288
+ Width = 400
+ end
+ object Timer: TTimer
+ OnTimer = TimerTimer
+ left = 76
+ top = 4
+ end
+ object SelectDirectoryDialog: TSelectDirectoryDialog
+ Title = 'Select Directory'
+ FilterIndex = 0
+ Title = 'Select Directory'
+ left = 144
+ top = 4
+ end
+ object FileOut: TACSFileOut
+ Input = CDIn
+ OnDone = FileOutDone
+ left = 112
+ top = 4
+ end
+ object CDIn: TACSCDIn
+ left = 44
+ top = 4
+ end
+end
diff --git a/components/acs/Demos/Ripper/umain.lrs b/components/acs/Demos/Ripper/umain.lrs
new file mode 100644
index 000000000..cae54d43a
--- /dev/null
+++ b/components/acs/Demos/Ripper/umain.lrs
@@ -0,0 +1,32 @@
+{ This is an automatically generated lazarus resource file }
+
+LazarusResources.Add('TfMain','FORMDATA',[
+ 'TPF0'#6'TfMain'#5'fMain'#13'ActiveControl'#7#8'lvTracks'#7'Caption'#6#9'CD R'
+ +'ipper'#12'ClientHeight'#3','#1#11'ClientWidth'#3#144#1#8'OnCreate'#7#10'For'
+ +'mCreate'#13'PixelsPerInch'#2'K'#18'HorzScrollBar.Page'#3#143#1#18'VertScrol'
+ +'lBar.Page'#3'+'#1#4'Left'#3#15#1#6'Height'#3','#1#3'Top'#3#150#0#5'Width'#3
+ +#144#1#0#6'TLabel'#6'Label1'#7'Caption'#6#5'Drive'#5'Color'#7#6'clNone'#11'P'
+ +'arentColor'#8#4'Left'#2#8#6'Height'#2#13#3'Top'#2#7#5'Width'#2#31#0#0#6'TLa'
+ +'bel'#6'Label2'#7'Caption'#6#13'Output Format'#5'Color'#7#6'clNone'#11'Paren'
+ +'tColor'#8#4'Left'#3#9#1#6'Height'#2#13#3'Top'#2#7#5'Width'#2'P'#0#0#9'TList'
+ +'View'#8'lvTracks'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0
+ +#7'Columns'#14#1#7'Caption'#6#5'Track'#5'Width'#2#10#0#1#7'Caption'#6#10'Tra'
+ +'cktitle'#5'Width'#2#10#0#1#7'Caption'#6#6'Length'#5'Width'#2#10#0#0#11'Mult'
+ +'iSelect'#9#9'RowSelect'#9#9'ViewStyle'#7#8'vsReport'#6'Height'#3#250#0#3'To'
+ +'p'#2'"'#5'Width'#3#144#1#0#0#9'TComboBox'#8'cbDrives'#9'MaxLength'#2#0#8'On'
+ +'Change'#7#14'cbDrivesChange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#1#4
+ +'Left'#2'('#6'Height'#2#21#3'Top'#2#4#5'Width'#3#132#0#0#0#7'TButton'#4'bRip'
+ +#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#12'Rip selected'#7'OnClick'#7
+ +#12'Button1Click'#8'TabOrder'#2#2#4'Left'#3#184#0#6'Height'#2#21#3'Top'#2#4#5
+ +'Width'#2'K'#0#0#9'TComboBox'#8'cbFormat'#9'ItemIndex'#2#2#13'Items.Strings'
+ +#1#6#3'ogg'#6#3'mp3'#6#3'wav'#0#9'MaxLength'#2#0#5'Style'#7#14'csDropDownLis'
+ +'t'#8'TabOrder'#2#3#4'Text'#6#3'wav'#4'Left'#3'T'#1#6'Height'#2#21#3'Top'#2#4
+ +#5'Width'#2'='#0#0#12'TProgressBar'#11'ProgressBar'#5'Align'#7#8'alBottom'#3
+ +'Max'#2'd'#6'Height'#2#12#3'Top'#3' '#1#5'Width'#3#144#1#0#0#6'TTimer'#5'Tim'
+ +'er'#7'OnTimer'#7#10'TimerTimer'#4'left'#2'L'#3'top'#2#4#0#0#22'TSelectDirec'
+ +'toryDialog'#21'SelectDirectoryDialog'#5'Title'#6#16'Select Directory'#11'Fi'
+ +'lterIndex'#2#0#5'Title'#6#16'Select Directory'#4'left'#3#144#0#3'top'#2#4#0
+ +#0#11'TACSFileOut'#7'FileOut'#5'Input'#7#4'CDIn'#6'OnDone'#7#11'FileOutDone'
+ +#4'left'#2'p'#3'top'#2#4#0#0#8'TACSCDIn'#4'CDIn'#4'left'#2','#3'top'#2#4#0#0
+ +#0
+]);
diff --git a/components/acs/Demos/Ripper/umain.pas b/components/acs/Demos/Ripper/umain.pas
new file mode 100644
index 000000000..3d528012f
--- /dev/null
+++ b/components/acs/Demos/Ripper/umain.pas
@@ -0,0 +1,126 @@
+unit uMain;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, ACS_CDROM, ExtCtrls, Buttons,
+ ACS_File;
+
+type
+
+ { TfMain }
+
+ TfMain = class(TForm)
+ bRip: TButton;
+ cbDrives: TComboBox;
+ cbFormat: TComboBox;
+ CDIn: TACSCDIn;
+ FileOut: TACSFileOut;
+ Label1: TLabel;
+ Label2: TLabel;
+ lvTracks: TListView;
+ ProgressBar: TProgressBar;
+ SelectDirectoryDialog: TSelectDirectoryDialog;
+ Timer: TTimer;
+ procedure Button1Click(Sender: TObject);
+ procedure FileOutDone(Sender: TComponent);
+ procedure FormCreate(Sender: TObject);
+ procedure TimerTimer(Sender: TObject);
+ procedure cbDrivesChange(Sender: TObject);
+ procedure RipNextTrack;
+ private
+ { private declarations }
+ FDirectory : string;
+ FTracksCount : Integer;
+ public
+ { public declarations }
+ end;
+
+var
+ fMain: TfMain;
+
+implementation
+
+{ TfMain }
+
+procedure TfMain.FormCreate(Sender: TObject);
+var
+ i : Integer;
+begin
+ lvTracks.Column[0].Width := 60;
+ lvTracks.Column[1].Width := 260;
+ lvTracks.Column[2].Width := 120;
+ for i := 0 to CDIn.DrivesCount-1 do
+ begin
+ CDIn.CurrentDrive := i;
+ cbDrives.Items.Add(CDIn.DriveName);
+ end;
+ cbDrives.ItemIndex := 0;
+end;
+
+procedure TfMain.Button1Click(Sender: TObject);
+begin
+ if SelectDirectoryDialog.Execute then
+ begin
+ FDirectory := SelectDirectoryDialog.FileName;
+ RipNextTrack;
+ end;
+end;
+
+procedure TfMain.FileOutDone(Sender: TComponent);
+begin
+ RipNextTrack;
+end;
+
+procedure TfMain.TimerTimer(Sender: TObject);
+var
+ new : TListItem;
+ i : Integer;
+begin
+ if not ((CDIn.Status = cdsReady) and (CDIn.TracksCount <> FTracksCount)) then
+ exit;
+ lvTracks.Items.Clear;
+ for i := 0 to CDIn.Trackscount-1 do
+ begin
+ new := lvTracks.Items.Add;
+ new.Caption := IntToStr(i);
+ if CDIn.Tracks[i].TrackType = ttAudio then
+ new.SubItems.Add(Format('Track %d',[i+1]))
+ else
+ new.SubItems.Add(Format('Datatrack %d',[i+1]));
+ new.SubItems.Add(Format('%.2d:%.2d',[CDIn.Tracks[i].TrackLength.Minute,CDIn.Tracks[i].TrackLength.Second]));
+ end;
+ FTracksCount := CDIn.TracksCount;
+end;
+
+procedure TfMain.cbDrivesChange(Sender: TObject);
+begin
+ CDIn.CurrentDrive := cbDrives.ItemIndex;
+end;
+
+procedure TfMain.RipNextTrack;
+var
+ i : Integer;
+begin
+ ProgressBar.Position := 0;
+ bRip.Enabled := True;
+ for i := 0 to lvTracks.Items.Count-1 do
+ if lvTracks.Items[i].Focused and (CDIn.Tracks[i].TrackType = ttAudio) then
+ begin
+ bRip.Enabled := False;
+ CDIn.StartTrack := i;
+ CDIn.EndTrack := i+1;
+ FileOut.FileName := FDirectory+DirectorySeparator+lvTracks.Items[i].SubItems[0]+'.'+cbFormat.Text;
+ FileOut.Run;
+ lvTracks.Items[i].Focused := False;
+ exit;
+ end;
+end;
+
+initialization
+ {$I umain.lrs}
+
+end.
+
diff --git a/components/acs/Demos/cdplayer/cdplayer.lpi b/components/acs/Demos/cdplayer/cdplayer.lpi
new file mode 100644
index 000000000..32bf2a4b4
--- /dev/null
+++ b/components/acs/Demos/cdplayer/cdplayer.lpi
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/acs/Demos/cdplayer/umain.lfm b/components/acs/Demos/cdplayer/umain.lfm
new file mode 100644
index 000000000..026c176f3
--- /dev/null
+++ b/components/acs/Demos/cdplayer/umain.lfm
@@ -0,0 +1,466 @@
+object Form1: TForm1
+ ActiveControl = btOpen
+ Caption = 'CD Player'
+ ClientHeight = 99
+ ClientWidth = 189
+ OnCreate = FormCreate
+ PixelsPerInch = 96
+ HorzScrollBar.Page = 188
+ VertScrollBar.Page = 98
+ Left = 298
+ Height = 99
+ Top = 268
+ Width = 189
+ object Panel1: TPanel
+ BevelOuter = bvLowered
+ ClientHeight = 64
+ ClientWidth = 182
+ FullRepaint = False
+ TabOrder = 0
+ Left = 4
+ Height = 64
+ Width = 182
+ object lTime: TLabel
+ AutoSize = False
+ Caption = '00:00:00'
+ Color = clNone
+ Font.Height = -25
+ ParentColor = False
+ Left = 68
+ Height = 29
+ Top = 24
+ Width = 108
+ end
+ object lTrack: TLabel
+ Caption = '01'
+ Color = clNone
+ Font.Height = -37
+ ParentColor = False
+ Left = 16
+ Height = 46
+ Top = 17
+ Width = 41
+ end
+ object Label1: TLabel
+ Caption = 'Track'
+ Color = clNone
+ Font.Height = -9
+ ParentColor = False
+ Left = 4
+ Height = 12
+ Top = 14
+ Width = 24
+ end
+ object Label2: TLabel
+ Caption = 'remain'
+ Color = clNone
+ Font.Height = -9
+ ParentColor = False
+ Left = 92
+ Height = 12
+ Top = 14
+ Width = 29
+ end
+ object Label3: TLabel
+ Caption = 'Tracks'
+ Color = clNone
+ Font.Height = -9
+ ParentColor = False
+ Left = 4
+ Height = 12
+ Top = 2
+ Width = 28
+ end
+ object lTracksCount: TLabel
+ Caption = '09'
+ Color = clNone
+ ParentColor = False
+ Left = 44
+ Height = 14
+ Top = 1
+ Width = 13
+ end
+ object Label5: TLabel
+ Caption = 'Time left'
+ Color = clNone
+ Font.Height = -9
+ ParentColor = False
+ Left = 60
+ Height = 12
+ Width = 38
+ end
+ object lLeft: TLabel
+ Alignment = taRightJustify
+ Caption = '00:00:00'
+ Color = clNone
+ Font.Height = -12
+ ParentColor = False
+ Left = 124
+ Height = 15
+ Top = 1
+ Width = 51
+ end
+ object Progress: TProgressBar
+ Align = alBottom
+ Max = 1000
+ Smooth = True
+ Left = 1
+ Height = 8
+ Top = 55
+ Width = 180
+ end
+ end
+ object btOpen: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 970300002F2A2058504D202A2F0D0A7374617469632063686172202A5069786D
+ 61705B5D203D207B0D0A2231362031362031362032222C0D0A22303020632023
+ 303830383130222C0D0A22303120632023313831383231222C0D0A2230322063
+ 20677261793136222C0D0A22303320632023443644364345222C0D0A22303420
+ 632067726179313030222C0D0A22303520632067726179313030222C0D0A2230
+ 3620632067726179313030222C0D0A22303720632067726179313030222C0D0A
+ 22303820632067726179313030222C0D0A22303920632067726179313030222C
+ 0D0A22313020632067726179313030222C0D0A22313120632067726179313030
+ 222C0D0A22313220632067726179313030222C0D0A2231332063206772617931
+ 3030222C0D0A22313420632067726179313030222C0D0A223135206320677261
+ 79313030222C0D0A223033303330333033303330333033303330333033303330
+ 333033303330333033222C0D0A22303330333033303330333033303330333033
+ 3033303330333033303330333033222C0D0A2230333033303330333033303330
+ 33303330333033303330333033303330333033222C0D0A223033303330333033
+ 303330333033303030333033303330333033303330333033222C0D0A22303330
+ 3330333033303330333030303130303033303330333033303330333033222C0D
+ 0A22303330333033303330333030303130313031303030333033303330333033
+ 3033222C0D0A2230333033303330333030303130313031303130313030303330
+ 33303330333033222C0D0A223033303330333030303130313031303130313031
+ 303130303033303330333033222C0D0A22303330333032303230323032303230
+ 3230323032303230323032303330333033222C0D0A2230333033303330333033
+ 30333033303330333033303330333033303330333033222C0D0A223033303330
+ 303030303030303030303030303030303030303030303330333033222C0D0A22
+ 3033303330303031303130313031303130313031303130313032303330333033
+ 222C0D0A22303330333032303230323032303230323032303230323032303230
+ 3330333033222C0D0A2230333033303330333033303330333033303330333033
+ 30333033303330333033222C0D0A223033303330333033303330333033303330
+ 333033303330333033303330333033222C0D0A22303330333033303330333033
+ 3033303330333033303330333033303330333033220D0A7D3B0D0A
+ }
+ Layout = blGlyphTop
+ NumGlyphs = 0
+ OnClick = OpenClick
+ TabOrder = 1
+ Left = 4
+ Height = 26
+ Top = 67
+ Width = 28
+ end
+ object btRew: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 970300002F2A2058504D202A2F0D0A7374617469632063686172202A5069786D
+ 61705B5D203D207B0D0A2231362031362031362032222C0D0A22303020632023
+ 303830383130222C0D0A22303120632023313831383231222C0D0A2230322063
+ 20677261793136222C0D0A22303320632023443644364345222C0D0A22303420
+ 632067726179313030222C0D0A22303520632067726179313030222C0D0A2230
+ 3620632067726179313030222C0D0A22303720632067726179313030222C0D0A
+ 22303820632067726179313030222C0D0A22303920632067726179313030222C
+ 0D0A22313020632067726179313030222C0D0A22313120632067726179313030
+ 222C0D0A22313220632067726179313030222C0D0A2231332063206772617931
+ 3030222C0D0A22313420632067726179313030222C0D0A223135206320677261
+ 79313030222C0D0A223033303330333033303330333033303330333033303330
+ 333033303330333033222C0D0A22303330333033303330333033303330333033
+ 3033303330333033303330333033222C0D0A2230333033303330333033303330
+ 33303330333033303330333033303330333033222C0D0A223033303330333030
+ 303030303033303330333033303330303030303330333033222C0D0A22303330
+ 3330333030303130323033303330333033303030313032303330333033222C0D
+ 0A22303330333033303030313032303330333033303030313031303230333033
+ 3033222C0D0A2230333033303330303031303230333033303030313031303130
+ 32303330333033222C0D0A223033303330333030303130323033303030313031
+ 303130313032303330333033222C0D0A22303330333033303030313032303330
+ 3230313031303130313032303330333033222C0D0A2230333033303330303031
+ 30323033303330323031303130313032303330333033222C0D0A223033303330
+ 333030303130323033303330333032303130313032303330333033222C0D0A22
+ 3033303330333030303130323033303330333033303230313032303330333033
+ 222C0D0A22303330333033303230323032303330333033303330333032303230
+ 3330333033222C0D0A2230333033303330333033303330333033303330333033
+ 30333033303330333033222C0D0A223033303330333033303330333033303330
+ 333033303330333033303330333033222C0D0A22303330333033303330333033
+ 3033303330333033303330333033303330333033220D0A7D3B0D0A
+ }
+ NumGlyphs = 0
+ OnClick = btRewClick
+ TabOrder = 2
+ Left = 32
+ Height = 26
+ Top = 67
+ Width = 28
+ end
+ object btFfw: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 970300002F2A2058504D202A2F0D0A7374617469632063686172202A5069786D
+ 61705B5D203D207B0D0A2231362031362031362032222C0D0A22303020632023
+ 303830383130222C0D0A22303120632023313831383231222C0D0A2230322063
+ 20677261793136222C0D0A22303320632023443644364345222C0D0A22303420
+ 632067726179313030222C0D0A22303520632067726179313030222C0D0A2230
+ 3620632067726179313030222C0D0A22303720632067726179313030222C0D0A
+ 22303820632067726179313030222C0D0A22303920632067726179313030222C
+ 0D0A22313020632067726179313030222C0D0A22313120632067726179313030
+ 222C0D0A22313220632067726179313030222C0D0A2231332063206772617931
+ 3030222C0D0A22313420632067726179313030222C0D0A223135206320677261
+ 79313030222C0D0A223033303330333033303330333033303330333033303330
+ 333033303330333033222C0D0A22303330333033303330333033303330333033
+ 3033303330333033303330333033222C0D0A2230333033303330333033303330
+ 33303330333033303330333033303330333033222C0D0A223033303330333030
+ 303030333033303330333033303030303030303330333033222C0D0A22303330
+ 3330333032303130303033303330333033303230313030303330333033222C0D
+ 0A22303330333033303230313031303030333033303330323031303030333033
+ 3033222C0D0A2230333033303330323031303130313030303330333032303130
+ 30303330333033222C0D0A223033303330333032303130313031303130303033
+ 303230313030303330333033222C0D0A22303330333033303230313031303130
+ 3130323033303230313030303330333033222C0D0A2230333033303330323031
+ 30313031303230333033303230313030303330333033222C0D0A223033303330
+ 333032303130313032303330333033303230313030303330333033222C0D0A22
+ 3033303330333032303130323033303330333033303230313030303330333033
+ 222C0D0A22303330333033303230323033303330333033303330323032303230
+ 3330333033222C0D0A2230333033303330333033303330333033303330333033
+ 30333033303330333033222C0D0A223033303330333033303330333033303330
+ 333033303330333033303330333033222C0D0A22303330333033303330333033
+ 3033303330333033303330333033303330333033220D0A7D3B0D0A
+ }
+ Layout = blGlyphRight
+ NumGlyphs = 0
+ OnClick = btFfwClick
+ TabOrder = 3
+ Left = 60
+ Height = 26
+ Top = 67
+ Width = 28
+ end
+ object btPlay: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 911300002F2A2058504D202A2F0D0A7374617469632063686172202A5069786D
+ 61705B5D203D207B0D0A223136203136203235362033222C0D0A223030302063
+ 2023304330463132222C0D0A2230303120632023314231443230222C0D0A2230
+ 303220632023324132443244222C0D0A2230303320632023443444304338222C
+ 0D0A22303034206320626C61636B222C0D0A22303035206320626C61636B222C
+ 0D0A22303036206320626C61636B222C0D0A22303037206320626C61636B222C
+ 0D0A22303038206320626C61636B222C0D0A22303039206320626C61636B222C
+ 0D0A22303130206320626C61636B222C0D0A22303131206320626C61636B222C
+ 0D0A22303132206320626C61636B222C0D0A22303133206320626C61636B222C
+ 0D0A22303134206320626C61636B222C0D0A22303135206320626C61636B222C
+ 0D0A22303136206320626C61636B222C0D0A22303137206320626C61636B222C
+ 0D0A22303138206320626C61636B222C0D0A22303139206320626C61636B222C
+ 0D0A22303230206320626C61636B222C0D0A22303231206320626C61636B222C
+ 0D0A22303232206320626C61636B222C0D0A22303233206320626C61636B222C
+ 0D0A22303234206320626C61636B222C0D0A22303235206320626C61636B222C
+ 0D0A22303236206320626C61636B222C0D0A22303237206320626C61636B222C
+ 0D0A22303238206320626C61636B222C0D0A22303239206320626C61636B222C
+ 0D0A22303330206320626C61636B222C0D0A22303331206320626C61636B222C
+ 0D0A22303332206320626C61636B222C0D0A22303333206320626C61636B222C
+ 0D0A22303334206320626C61636B222C0D0A22303335206320626C61636B222C
+ 0D0A22303336206320626C61636B222C0D0A22303337206320626C61636B222C
+ 0D0A22303338206320626C61636B222C0D0A22303339206320626C61636B222C
+ 0D0A22303430206320626C61636B222C0D0A22303431206320626C61636B222C
+ 0D0A22303432206320626C61636B222C0D0A22303433206320626C61636B222C
+ 0D0A22303434206320626C61636B222C0D0A22303435206320626C61636B222C
+ 0D0A22303436206320626C61636B222C0D0A22303437206320626C61636B222C
+ 0D0A22303438206320626C61636B222C0D0A22303439206320626C61636B222C
+ 0D0A22303530206320626C61636B222C0D0A22303531206320626C61636B222C
+ 0D0A22303532206320626C61636B222C0D0A22303533206320626C61636B222C
+ 0D0A22303534206320626C61636B222C0D0A22303535206320626C61636B222C
+ 0D0A22303536206320626C61636B222C0D0A22303537206320626C61636B222C
+ 0D0A22303538206320626C61636B222C0D0A22303539206320626C61636B222C
+ 0D0A22303630206320626C61636B222C0D0A22303631206320626C61636B222C
+ 0D0A22303632206320626C61636B222C0D0A22303633206320626C61636B222C
+ 0D0A22303634206320626C61636B222C0D0A22303635206320626C61636B222C
+ 0D0A22303636206320626C61636B222C0D0A22303637206320626C61636B222C
+ 0D0A22303638206320626C61636B222C0D0A22303639206320626C61636B222C
+ 0D0A22303730206320626C61636B222C0D0A22303731206320626C61636B222C
+ 0D0A22303732206320626C61636B222C0D0A22303733206320626C61636B222C
+ 0D0A22303734206320626C61636B222C0D0A22303735206320626C61636B222C
+ 0D0A22303736206320626C61636B222C0D0A22303737206320626C61636B222C
+ 0D0A22303738206320626C61636B222C0D0A22303739206320626C61636B222C
+ 0D0A22303830206320626C61636B222C0D0A22303831206320626C61636B222C
+ 0D0A22303832206320626C61636B222C0D0A22303833206320626C61636B222C
+ 0D0A22303834206320626C61636B222C0D0A22303835206320626C61636B222C
+ 0D0A22303836206320626C61636B222C0D0A22303837206320626C61636B222C
+ 0D0A22303838206320626C61636B222C0D0A22303839206320626C61636B222C
+ 0D0A22303930206320626C61636B222C0D0A22303931206320626C61636B222C
+ 0D0A22303932206320626C61636B222C0D0A22303933206320626C61636B222C
+ 0D0A22303934206320626C61636B222C0D0A22303935206320626C61636B222C
+ 0D0A22303936206320626C61636B222C0D0A22303937206320626C61636B222C
+ 0D0A22303938206320626C61636B222C0D0A22303939206320626C61636B222C
+ 0D0A22313030206320626C61636B222C0D0A22313031206320626C61636B222C
+ 0D0A22313032206320626C61636B222C0D0A22313033206320626C61636B222C
+ 0D0A22313034206320626C61636B222C0D0A22313035206320626C61636B222C
+ 0D0A22313036206320626C61636B222C0D0A22313037206320626C61636B222C
+ 0D0A22313038206320626C61636B222C0D0A22313039206320626C61636B222C
+ 0D0A22313130206320626C61636B222C0D0A22313131206320626C61636B222C
+ 0D0A22313132206320626C61636B222C0D0A22313133206320626C61636B222C
+ 0D0A22313134206320626C61636B222C0D0A22313135206320626C61636B222C
+ 0D0A22313136206320626C61636B222C0D0A22313137206320626C61636B222C
+ 0D0A22313138206320626C61636B222C0D0A22313139206320626C61636B222C
+ 0D0A22313230206320626C61636B222C0D0A22313231206320626C61636B222C
+ 0D0A22313232206320626C61636B222C0D0A22313233206320626C61636B222C
+ 0D0A22313234206320626C61636B222C0D0A22313235206320626C61636B222C
+ 0D0A22313236206320626C61636B222C0D0A22313237206320626C61636B222C
+ 0D0A22313238206320626C61636B222C0D0A22313239206320626C61636B222C
+ 0D0A22313330206320626C61636B222C0D0A22313331206320626C61636B222C
+ 0D0A22313332206320626C61636B222C0D0A22313333206320626C61636B222C
+ 0D0A22313334206320626C61636B222C0D0A22313335206320626C61636B222C
+ 0D0A22313336206320626C61636B222C0D0A22313337206320626C61636B222C
+ 0D0A22313338206320626C61636B222C0D0A22313339206320626C61636B222C
+ 0D0A22313430206320626C61636B222C0D0A22313431206320626C61636B222C
+ 0D0A22313432206320626C61636B222C0D0A22313433206320626C61636B222C
+ 0D0A22313434206320626C61636B222C0D0A22313435206320626C61636B222C
+ 0D0A22313436206320626C61636B222C0D0A22313437206320626C61636B222C
+ 0D0A22313438206320626C61636B222C0D0A22313439206320626C61636B222C
+ 0D0A22313530206320626C61636B222C0D0A22313531206320626C61636B222C
+ 0D0A22313532206320626C61636B222C0D0A22313533206320626C61636B222C
+ 0D0A22313534206320626C61636B222C0D0A22313535206320626C61636B222C
+ 0D0A22313536206320626C61636B222C0D0A22313537206320626C61636B222C
+ 0D0A22313538206320626C61636B222C0D0A22313539206320626C61636B222C
+ 0D0A22313630206320626C61636B222C0D0A22313631206320626C61636B222C
+ 0D0A22313632206320626C61636B222C0D0A22313633206320626C61636B222C
+ 0D0A22313634206320626C61636B222C0D0A22313635206320626C61636B222C
+ 0D0A22313636206320626C61636B222C0D0A22313637206320626C61636B222C
+ 0D0A22313638206320626C61636B222C0D0A22313639206320626C61636B222C
+ 0D0A22313730206320626C61636B222C0D0A22313731206320626C61636B222C
+ 0D0A22313732206320626C61636B222C0D0A22313733206320626C61636B222C
+ 0D0A22313734206320626C61636B222C0D0A22313735206320626C61636B222C
+ 0D0A22313736206320626C61636B222C0D0A22313737206320626C61636B222C
+ 0D0A22313738206320626C61636B222C0D0A22313739206320626C61636B222C
+ 0D0A22313830206320626C61636B222C0D0A22313831206320626C61636B222C
+ 0D0A22313832206320626C61636B222C0D0A22313833206320626C61636B222C
+ 0D0A22313834206320626C61636B222C0D0A22313835206320626C61636B222C
+ 0D0A22313836206320626C61636B222C0D0A22313837206320626C61636B222C
+ 0D0A22313838206320626C61636B222C0D0A22313839206320626C61636B222C
+ 0D0A22313930206320626C61636B222C0D0A22313931206320626C61636B222C
+ 0D0A22313932206320626C61636B222C0D0A22313933206320626C61636B222C
+ 0D0A22313934206320626C61636B222C0D0A22313935206320626C61636B222C
+ 0D0A22313936206320626C61636B222C0D0A22313937206320626C61636B222C
+ 0D0A22313938206320626C61636B222C0D0A22313939206320626C61636B222C
+ 0D0A22323030206320626C61636B222C0D0A22323031206320626C61636B222C
+ 0D0A22323032206320626C61636B222C0D0A22323033206320626C61636B222C
+ 0D0A22323034206320626C61636B222C0D0A22323035206320626C61636B222C
+ 0D0A22323036206320626C61636B222C0D0A22323037206320626C61636B222C
+ 0D0A22323038206320626C61636B222C0D0A22323039206320626C61636B222C
+ 0D0A22323130206320626C61636B222C0D0A22323131206320626C61636B222C
+ 0D0A22323132206320626C61636B222C0D0A22323133206320626C61636B222C
+ 0D0A22323134206320626C61636B222C0D0A22323135206320626C61636B222C
+ 0D0A22323136206320626C61636B222C0D0A22323137206320626C61636B222C
+ 0D0A22323138206320626C61636B222C0D0A22323139206320626C61636B222C
+ 0D0A22323230206320626C61636B222C0D0A22323231206320626C61636B222C
+ 0D0A22323232206320626C61636B222C0D0A22323233206320626C61636B222C
+ 0D0A22323234206320626C61636B222C0D0A22323235206320626C61636B222C
+ 0D0A22323236206320626C61636B222C0D0A22323237206320626C61636B222C
+ 0D0A22323238206320626C61636B222C0D0A22323239206320626C61636B222C
+ 0D0A22323330206320626C61636B222C0D0A22323331206320626C61636B222C
+ 0D0A22323332206320626C61636B222C0D0A22323333206320626C61636B222C
+ 0D0A22323334206320626C61636B222C0D0A22323335206320626C61636B222C
+ 0D0A22323336206320626C61636B222C0D0A22323337206320626C61636B222C
+ 0D0A22323338206320626C61636B222C0D0A22323339206320626C61636B222C
+ 0D0A22323430206320626C61636B222C0D0A22323431206320626C61636B222C
+ 0D0A22323432206320626C61636B222C0D0A22323433206320626C61636B222C
+ 0D0A22323434206320626C61636B222C0D0A22323435206320626C61636B222C
+ 0D0A22323436206320626C61636B222C0D0A22323437206320626C61636B222C
+ 0D0A22323438206320626C61636B222C0D0A22323439206320626C61636B222C
+ 0D0A22323530206320626C61636B222C0D0A22323531206320626C61636B222C
+ 0D0A22323532206320626C61636B222C0D0A22323533206320626C61636B222C
+ 0D0A22323534206320626C61636B222C0D0A22323535206320626C61636B222C
+ 0D0A223030333030333030333030333030333030333030333030333030333030
+ 33303033303033303033303033303033303033222C0D0A223030333030333030
+ 3330303330303330303330303330303330303330303330303330303330303330
+ 3033303033303033222C0D0A2230303330303330303330303330303330303330
+ 3033303033303033303033303033303033303033303033303033303033222C0D
+ 0A22303033303033303033303030303030303033303033303033303033303033
+ 303033303033303033303033303033303033222C0D0A22303033303033303033
+ 3030303030313030303030303030333030333030333030333030333030333030
+ 33303033303033222C0D0A223030333030333030333030303030313030313030
+ 31303030303030303033303033303033303033303033303033303033222C0D0A
+ 2230303330303330303330303030303130303130303130303130303130303030
+ 3030303033303033303033303033303033222C0D0A2230303330303330303330
+ 3030303031303031303031303031303031303031303031303030303030303033
+ 303033303033222C0D0A22303033303033303033303030303031303031303031
+ 303031303031303031303031303032303032303033303033303033222C0D0A22
+ 3030333030333030333030303030313030313030313030313030313030323030
+ 32303033303033303033303033303033222C0D0A223030333030333030333030
+ 3030303130303130303130303230303230303330303330303330303330303330
+ 3033303033222C0D0A2230303330303330303330303030303130303230303230
+ 3033303033303033303033303033303033303033303033303033222C0D0A2230
+ 3033303033303033303032303032303033303033303033303033303033303033
+ 303033303033303033303033303033222C0D0A22303033303033303033303033
+ 3030333030333030333030333030333030333030333030333030333030333030
+ 33303033222C0D0A223030333030333030333030333030333030333030333030
+ 33303033303033303033303033303033303033303033303033222C0D0A223030
+ 3330303330303330303330303330303330303330303330303330303330303330
+ 3033303033303033303033303033220D0A7D3B0D0A
+ }
+ NumGlyphs = 0
+ OnClick = PlayClick
+ TabOrder = 4
+ Left = 88
+ Height = 26
+ Top = 67
+ Width = 28
+ end
+ object btStop: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 970300002F2A2058504D202A2F0D0A7374617469632063686172202A5069786D
+ 61705B5D203D207B0D0A2231362031362031362032222C0D0A22303020632023
+ 303830383130222C0D0A22303120632023313831383231222C0D0A2230322063
+ 20677261793136222C0D0A22303320632023443644364345222C0D0A22303420
+ 632067726179313030222C0D0A22303520632067726179313030222C0D0A2230
+ 3620632067726179313030222C0D0A22303720632067726179313030222C0D0A
+ 22303820632067726179313030222C0D0A22303920632067726179313030222C
+ 0D0A22313020632067726179313030222C0D0A22313120632067726179313030
+ 222C0D0A22313220632067726179313030222C0D0A2231332063206772617931
+ 3030222C0D0A22313420632067726179313030222C0D0A223135206320677261
+ 79313030222C0D0A223033303330333033303330333033303330333033303330
+ 333033303330333033222C0D0A22303330333033303330333033303330333033
+ 3033303330333033303330333033222C0D0A2230333033303330333033303330
+ 33303330333033303330333033303330333033222C0D0A223033303330333030
+ 303030303030303030303030303030303030303330333033222C0D0A22303330
+ 3330333030303130313031303130313031303130313032303330333033222C0D
+ 0A22303330333033303030313031303130313031303130313031303230333033
+ 3033222C0D0A2230333033303330303031303130313031303130313031303130
+ 32303330333033222C0D0A223033303330333030303130313031303130313031
+ 303130313032303330333033222C0D0A22303330333033303030313031303130
+ 3130313031303130313032303330333033222C0D0A2230333033303330303031
+ 30313031303130313031303130313032303330333033222C0D0A223033303330
+ 333030303130313031303130313031303130313032303330333033222C0D0A22
+ 3033303330333030303130313031303130313031303130313032303330333033
+ 222C0D0A22303330333033303230323032303230323032303230323032303230
+ 3330333033222C0D0A2230333033303330333033303330333033303330333033
+ 30333033303330333033222C0D0A223033303330333033303330333033303330
+ 333033303330333033303330333033222C0D0A22303330333033303330333033
+ 3033303330333033303330333033303330333033220D0A7D3B0D0A
+ }
+ NumGlyphs = 0
+ OnClick = StopClick
+ TabOrder = 5
+ Left = 116
+ Height = 26
+ Top = 67
+ Width = 28
+ end
+ object PlayTimer: TTimer
+ Enabled = False
+ Interval = 150
+ OnTimer = Timer1Timer
+ top = 152
+ end
+ object CDIn1: TACSCDIn
+ top = 8
+ end
+ object AudioOut1: TACSAudioOut
+ Driver = 'Wavemapper'
+ Input = CDIn1
+ Delay = 6
+ SuspendWhenIdle = True
+ OnDone = AudioOut1Done
+ OnProgress = AudioOut1Progress
+ top = 40
+ end
+end
diff --git a/components/acs/Demos/cdplayer/umain.lrs b/components/acs/Demos/cdplayer/umain.lrs
new file mode 100644
index 000000000..6de175732
--- /dev/null
+++ b/components/acs/Demos/cdplayer/umain.lrs
@@ -0,0 +1,198 @@
+{ Dies ist eine automatisch erzeugte Lazarus-Ressourcendatei }
+
+LazarusResources.Add('TForm1','FORMDATA',[
+ 'TPF0'#6'TForm1'#5'Form1'#13'ActiveControl'#7#6'btOpen'#7'Caption'#6#9'CD Pla'
+ +'yer'#12'ClientHeight'#2'c'#11'ClientWidth'#3#189#0#8'OnCreate'#7#10'FormCre'
+ +'ate'#13'PixelsPerInch'#2'`'#18'HorzScrollBar.Page'#3#188#0#18'VertScrollBar'
+ +'.Page'#2'b'#4'Left'#3'*'#1#6'Height'#2'c'#3'Top'#3#12#1#5'Width'#3#189#0#0#6
+ +'TPanel'#6'Panel1'#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'#2'@'#11'Cl'
+ +'ientWidth'#3#182#0#11'FullRepaint'#8#8'TabOrder'#2#0#4'Left'#2#4#6'Height'#2
+ +'@'#5'Width'#3#182#0#0#6'TLabel'#5'lTime'#8'AutoSize'#8#7'Caption'#6#8'00:00'
+ +':00'#5'Color'#7#6'clNone'#11'Font.Height'#2#231#11'ParentColor'#8#4'Left'#2
+ +'D'#6'Height'#2#29#3'Top'#2#24#5'Width'#2'l'#0#0#6'TLabel'#6'lTrack'#7'Capti'
+ +'on'#6#2'01'#5'Color'#7#6'clNone'#11'Font.Height'#2#219#11'ParentColor'#8#4
+ +'Left'#2#16#6'Height'#2'.'#3'Top'#2#17#5'Width'#2')'#0#0#6'TLabel'#6'Label1'
+ +#7'Caption'#6#5'Track'#5'Color'#7#6'clNone'#11'Font.Height'#2#247#11'ParentC'
+ +'olor'#8#4'Left'#2#4#6'Height'#2#12#3'Top'#2#14#5'Width'#2#24#0#0#6'TLabel'#6
+ +'Label2'#7'Caption'#6#6'remain'#5'Color'#7#6'clNone'#11'Font.Height'#2#247#11
+ +'ParentColor'#8#4'Left'#2'\'#6'Height'#2#12#3'Top'#2#14#5'Width'#2#29#0#0#6
+ +'TLabel'#6'Label3'#7'Caption'#6#6'Tracks'#5'Color'#7#6'clNone'#11'Font.Heigh'
+ +'t'#2#247#11'ParentColor'#8#4'Left'#2#4#6'Height'#2#12#3'Top'#2#2#5'Width'#2
+ +#28#0#0#6'TLabel'#12'lTracksCount'#7'Caption'#6#2'09'#5'Color'#7#6'clNone'#11
+ +'ParentColor'#8#4'Left'#2','#6'Height'#2#14#3'Top'#2#1#5'Width'#2#13#0#0#6'T'
+ +'Label'#6'Label5'#7'Caption'#6#9'Time left'#5'Color'#7#6'clNone'#11'Font.Hei'
+ +'ght'#2#247#11'ParentColor'#8#4'Left'#2'<'#6'Height'#2#12#5'Width'#2'&'#0#0#6
+ +'TLabel'#5'lLeft'#9'Alignment'#7#14'taRightJustify'#7'Caption'#6#8'00:00:00'
+ +#5'Color'#7#6'clNone'#11'Font.Height'#2#244#11'ParentColor'#8#4'Left'#2'|'#6
+ +'Height'#2#15#3'Top'#2#1#5'Width'#2'3'#0#0#12'TProgressBar'#8'Progress'#5'Al'
+ +'ign'#7#8'alBottom'#3'Max'#3#232#3#6'Smooth'#9#4'Left'#2#1#6'Height'#2#8#3'T'
+ +'op'#2'7'#5'Width'#3#180#0#0#0#0#7'TBitBtn'#6'btOpen'#25'BorderSpacing.Inner'
+ +'Border'#2#2#10'Glyph.Data'#10#155#3#0#0#151#3#0#0'/* XPM */'#13#10'static c'
+ +'har *Pixmap[] = {'#13#10'"16 16 16 2",'#13#10'"00 c #080810",'#13#10'"01 c '
+ +'#181821",'#13#10'"02 c gray16",'#13#10'"03 c #D6D6CE",'#13#10'"04 c gray100'
+ +'",'#13#10'"05 c gray100",'#13#10'"06 c gray100",'#13#10'"07 c gray100",'#13
+ +#10'"08 c gray100",'#13#10'"09 c gray100",'#13#10'"10 c gray100",'#13#10'"11'
+ +' c gray100",'#13#10'"12 c gray100",'#13#10'"13 c gray100",'#13#10'"14 c gra'
+ +'y100",'#13#10'"15 c gray100",'#13#10'"03030303030303030303030303030303",'#13
+ +#10'"03030303030303030303030303030303",'#13#10'"0303030303030303030303030303'
+ +'0303",'#13#10'"03030303030303000303030303030303",'#13#10'"03030303030300010'
+ +'003030303030303",'#13#10'"03030303030001010100030303030303",'#13#10'"030303'
+ +'03000101010101000303030303",'#13#10'"03030300010101010101010003030303",'#13
+ +#10'"03030202020202020202020202030303",'#13#10'"0303030303030303030303030303'
+ +'0303",'#13#10'"03030000000000000000000000030303",'#13#10'"03030001010101010'
+ +'101010102030303",'#13#10'"03030202020202020202020202030303",'#13#10'"030303'
+ +'03030303030303030303030303",'#13#10'"03030303030303030303030303030303",'#13
+ +#10'"03030303030303030303030303030303"'#13#10'};'#13#10#6'Layout'#7#10'blGly'
+ +'phTop'#9'NumGlyphs'#2#0#7'OnClick'#7#9'OpenClick'#8'TabOrder'#2#1#4'Left'#2
+ +#4#6'Height'#2#26#3'Top'#2'C'#5'Width'#2#28#0#0#7'TBitBtn'#5'btRew'#25'Borde'
+ +'rSpacing.InnerBorder'#2#2#10'Glyph.Data'#10#155#3#0#0#151#3#0#0'/* XPM */'
+ +#13#10'static char *Pixmap[] = {'#13#10'"16 16 16 2",'#13#10'"00 c #080810",'
+ +#13#10'"01 c #181821",'#13#10'"02 c gray16",'#13#10'"03 c #D6D6CE",'#13#10'"'
+ +'04 c gray100",'#13#10'"05 c gray100",'#13#10'"06 c gray100",'#13#10'"07 c g'
+ +'ray100",'#13#10'"08 c gray100",'#13#10'"09 c gray100",'#13#10'"10 c gray100'
+ +'",'#13#10'"11 c gray100",'#13#10'"12 c gray100",'#13#10'"13 c gray100",'#13
+ +#10'"14 c gray100",'#13#10'"15 c gray100",'#13#10'"0303030303030303030303030'
+ +'3030303",'#13#10'"03030303030303030303030303030303",'#13#10'"03030303030303'
+ +'030303030303030303",'#13#10'"03030300000003030303030000030303",'#13#10'"030'
+ +'30300010203030303000102030303",'#13#10'"03030300010203030300010102030303",'
+ +#13#10'"03030300010203030001010102030303",'#13#10'"0303030001020300010101010'
+ +'2030303",'#13#10'"03030300010203020101010102030303",'#13#10'"03030300010203'
+ +'030201010102030303",'#13#10'"03030300010203030302010102030303",'#13#10'"030'
+ +'30300010203030303020102030303",'#13#10'"03030302020203030303030202030303",'
+ +#13#10'"03030303030303030303030303030303",'#13#10'"0303030303030303030303030'
+ +'3030303",'#13#10'"03030303030303030303030303030303"'#13#10'};'#13#10#9'NumG'
+ +'lyphs'#2#0#7'OnClick'#7#10'btRewClick'#8'TabOrder'#2#2#4'Left'#2' '#6'Heigh'
+ +'t'#2#26#3'Top'#2'C'#5'Width'#2#28#0#0#7'TBitBtn'#5'btFfw'#25'BorderSpacing.'
+ +'InnerBorder'#2#2#10'Glyph.Data'#10#155#3#0#0#151#3#0#0'/* XPM */'#13#10'sta'
+ +'tic char *Pixmap[] = {'#13#10'"16 16 16 2",'#13#10'"00 c #080810",'#13#10'"'
+ ,'01 c #181821",'#13#10'"02 c gray16",'#13#10'"03 c #D6D6CE",'#13#10'"04 c gr'
+ +'ay100",'#13#10'"05 c gray100",'#13#10'"06 c gray100",'#13#10'"07 c gray100"'
+ +','#13#10'"08 c gray100",'#13#10'"09 c gray100",'#13#10'"10 c gray100",'#13
+ +#10'"11 c gray100",'#13#10'"12 c gray100",'#13#10'"13 c gray100",'#13#10'"14'
+ +' c gray100",'#13#10'"15 c gray100",'#13#10'"0303030303030303030303030303030'
+ +'3",'#13#10'"03030303030303030303030303030303",'#13#10'"03030303030303030303'
+ +'030303030303",'#13#10'"03030300000303030303000000030303",'#13#10'"030303020'
+ +'10003030303020100030303",'#13#10'"03030302010100030303020100030303",'#13#10
+ +'"03030302010101000303020100030303",'#13#10'"0303030201010101000302010003030'
+ +'3",'#13#10'"03030302010101010203020100030303",'#13#10'"03030302010101020303'
+ +'020100030303",'#13#10'"03030302010102030303020100030303",'#13#10'"030303020'
+ +'10203030303020100030303",'#13#10'"03030302020303030303020202030303",'#13#10
+ +'"03030303030303030303030303030303",'#13#10'"0303030303030303030303030303030'
+ +'3",'#13#10'"03030303030303030303030303030303"'#13#10'};'#13#10#6'Layout'#7
+ +#12'blGlyphRight'#9'NumGlyphs'#2#0#7'OnClick'#7#10'btFfwClick'#8'TabOrder'#2
+ +#3#4'Left'#2'<'#6'Height'#2#26#3'Top'#2'C'#5'Width'#2#28#0#0#7'TBitBtn'#6'bt'
+ +'Play'#25'BorderSpacing.InnerBorder'#2#2#10'Glyph.Data'#10#149#19#0#0#145#19
+ +#0#0'/* XPM */'#13#10'static char *Pixmap[] = {'#13#10'"16 16 256 3",'#13#10
+ +'"000 c #0C0F12",'#13#10'"001 c #1B1D20",'#13#10'"002 c #2A2D2D",'#13#10'"00'
+ +'3 c #D4D0C8",'#13#10'"004 c black",'#13#10'"005 c black",'#13#10'"006 c bla'
+ +'ck",'#13#10'"007 c black",'#13#10'"008 c black",'#13#10'"009 c black",'#13
+ +#10'"010 c black",'#13#10'"011 c black",'#13#10'"012 c black",'#13#10'"013 c'
+ +' black",'#13#10'"014 c black",'#13#10'"015 c black",'#13#10'"016 c black",'
+ +#13#10'"017 c black",'#13#10'"018 c black",'#13#10'"019 c black",'#13#10'"02'
+ +'0 c black",'#13#10'"021 c black",'#13#10'"022 c black",'#13#10'"023 c black'
+ +'",'#13#10'"024 c black",'#13#10'"025 c black",'#13#10'"026 c black",'#13#10
+ +'"027 c black",'#13#10'"028 c black",'#13#10'"029 c black",'#13#10'"030 c bl'
+ +'ack",'#13#10'"031 c black",'#13#10'"032 c black",'#13#10'"033 c black",'#13
+ +#10'"034 c black",'#13#10'"035 c black",'#13#10'"036 c black",'#13#10'"037 c'
+ +' black",'#13#10'"038 c black",'#13#10'"039 c black",'#13#10'"040 c black",'
+ +#13#10'"041 c black",'#13#10'"042 c black",'#13#10'"043 c black",'#13#10'"04'
+ +'4 c black",'#13#10'"045 c black",'#13#10'"046 c black",'#13#10'"047 c black'
+ +'",'#13#10'"048 c black",'#13#10'"049 c black",'#13#10'"050 c black",'#13#10
+ +'"051 c black",'#13#10'"052 c black",'#13#10'"053 c black",'#13#10'"054 c bl'
+ +'ack",'#13#10'"055 c black",'#13#10'"056 c black",'#13#10'"057 c black",'#13
+ +#10'"058 c black",'#13#10'"059 c black",'#13#10'"060 c black",'#13#10'"061 c'
+ +' black",'#13#10'"062 c black",'#13#10'"063 c black",'#13#10'"064 c black",'
+ +#13#10'"065 c black",'#13#10'"066 c black",'#13#10'"067 c black",'#13#10'"06'
+ +'8 c black",'#13#10'"069 c black",'#13#10'"070 c black",'#13#10'"071 c black'
+ +'",'#13#10'"072 c black",'#13#10'"073 c black",'#13#10'"074 c black",'#13#10
+ +'"075 c black",'#13#10'"076 c black",'#13#10'"077 c black",'#13#10'"078 c bl'
+ +'ack",'#13#10'"079 c black",'#13#10'"080 c black",'#13#10'"081 c black",'#13
+ +#10'"082 c black",'#13#10'"083 c black",'#13#10'"084 c black",'#13#10'"085 c'
+ +' black",'#13#10'"086 c black",'#13#10'"087 c black",'#13#10'"088 c black",'
+ +#13#10'"089 c black",'#13#10'"090 c black",'#13#10'"091 c black",'#13#10'"09'
+ +'2 c black",'#13#10'"093 c black",'#13#10'"094 c black",'#13#10'"095 c black'
+ +'",'#13#10'"096 c black",'#13#10'"097 c black",'#13#10'"098 c black",'#13#10
+ +'"099 c black",'#13#10'"100 c black",'#13#10'"101 c black",'#13#10'"102 c bl'
+ +'ack",'#13#10'"103 c black",'#13#10'"104 c black",'#13#10'"105 c black",'#13
+ +#10'"106 c black",'#13#10'"107 c black",'#13#10'"108 c black",'#13#10'"109 c'
+ +' black",'#13#10'"110 c black",'#13#10'"111 c black",'#13#10'"112 c black",'
+ +#13#10'"113 c black",'#13#10'"114 c black",'#13#10'"115 c black",'#13#10'"11'
+ +'6 c black",'#13#10'"117 c black",'#13#10'"118 c black",'#13#10'"119 c black'
+ +'",'#13#10'"120 c black",'#13#10'"121 c black",'#13#10'"122 c black",'#13#10
+ +'"123 c black",'#13#10'"124 c black",'#13#10'"125 c black",'#13#10'"126 c bl'
+ +'ack",'#13#10'"127 c black",'#13#10'"128 c black",'#13#10'"129 c black",'#13
+ +#10'"130 c black",'#13#10'"131 c black",'#13#10'"132 c black",'#13#10'"133 c'
+ +' black",'#13#10'"134 c black",'#13#10'"135 c black",'#13#10'"136 c black",'
+ +#13#10'"137 c black",'#13#10'"138 c black",'#13#10'"139 c black",'#13#10'"14'
+ +'0 c black",'#13#10'"141 c black",'#13#10'"142 c black",'#13#10'"143 c black'
+ +'",'#13#10'"144 c black",'#13#10'"145 c black",'#13#10'"146 c black",'#13#10
+ +'"147 c black",'#13#10'"148 c black",'#13#10'"149 c black",'#13#10'"150 c bl'
+ +'ack",'#13#10'"151 c black",'#13#10'"152 c black",'#13#10'"153 c black",'#13
+ +#10'"154 c black",'#13#10'"155 c black",'#13#10'"156 c black",'#13#10'"157 c'
+ ,' black",'#13#10'"158 c black",'#13#10'"159 c black",'#13#10'"160 c black",'
+ +#13#10'"161 c black",'#13#10'"162 c black",'#13#10'"163 c black",'#13#10'"16'
+ +'4 c black",'#13#10'"165 c black",'#13#10'"166 c black",'#13#10'"167 c black'
+ +'",'#13#10'"168 c black",'#13#10'"169 c black",'#13#10'"170 c black",'#13#10
+ +'"171 c black",'#13#10'"172 c black",'#13#10'"173 c black",'#13#10'"174 c bl'
+ +'ack",'#13#10'"175 c black",'#13#10'"176 c black",'#13#10'"177 c black",'#13
+ +#10'"178 c black",'#13#10'"179 c black",'#13#10'"180 c black",'#13#10'"181 c'
+ +' black",'#13#10'"182 c black",'#13#10'"183 c black",'#13#10'"184 c black",'
+ +#13#10'"185 c black",'#13#10'"186 c black",'#13#10'"187 c black",'#13#10'"18'
+ +'8 c black",'#13#10'"189 c black",'#13#10'"190 c black",'#13#10'"191 c black'
+ +'",'#13#10'"192 c black",'#13#10'"193 c black",'#13#10'"194 c black",'#13#10
+ +'"195 c black",'#13#10'"196 c black",'#13#10'"197 c black",'#13#10'"198 c bl'
+ +'ack",'#13#10'"199 c black",'#13#10'"200 c black",'#13#10'"201 c black",'#13
+ +#10'"202 c black",'#13#10'"203 c black",'#13#10'"204 c black",'#13#10'"205 c'
+ +' black",'#13#10'"206 c black",'#13#10'"207 c black",'#13#10'"208 c black",'
+ +#13#10'"209 c black",'#13#10'"210 c black",'#13#10'"211 c black",'#13#10'"21'
+ +'2 c black",'#13#10'"213 c black",'#13#10'"214 c black",'#13#10'"215 c black'
+ +'",'#13#10'"216 c black",'#13#10'"217 c black",'#13#10'"218 c black",'#13#10
+ +'"219 c black",'#13#10'"220 c black",'#13#10'"221 c black",'#13#10'"222 c bl'
+ +'ack",'#13#10'"223 c black",'#13#10'"224 c black",'#13#10'"225 c black",'#13
+ +#10'"226 c black",'#13#10'"227 c black",'#13#10'"228 c black",'#13#10'"229 c'
+ +' black",'#13#10'"230 c black",'#13#10'"231 c black",'#13#10'"232 c black",'
+ +#13#10'"233 c black",'#13#10'"234 c black",'#13#10'"235 c black",'#13#10'"23'
+ +'6 c black",'#13#10'"237 c black",'#13#10'"238 c black",'#13#10'"239 c black'
+ +'",'#13#10'"240 c black",'#13#10'"241 c black",'#13#10'"242 c black",'#13#10
+ +'"243 c black",'#13#10'"244 c black",'#13#10'"245 c black",'#13#10'"246 c bl'
+ +'ack",'#13#10'"247 c black",'#13#10'"248 c black",'#13#10'"249 c black",'#13
+ +#10'"250 c black",'#13#10'"251 c black",'#13#10'"252 c black",'#13#10'"253 c'
+ +' black",'#13#10'"254 c black",'#13#10'"255 c black",'#13#10'"00300300300300'
+ +'3003003003003003003003003003003003",'#13#10'"003003003003003003003003003003'
+ +'003003003003003003",'#13#10'"0030030030030030030030030030030030030030030030'
+ +'03",'#13#10'"003003003000000003003003003003003003003003003003",'#13#10'"003'
+ +'003003000001000000003003003003003003003003003",'#13#10'"0030030030000010010'
+ +'01000000003003003003003003003",'#13#10'"00300300300000100100100100100000000'
+ +'3003003003003",'#13#10'"003003003000001001001001001001001000000003003003",'
+ +#13#10'"003003003000001001001001001001001002002003003003",'#13#10'"003003003'
+ +'000001001001001001002002003003003003003",'#13#10'"0030030030000010010010020'
+ +'02003003003003003003003",'#13#10'"00300300300000100200200300300300300300300'
+ +'3003003",'#13#10'"003003003002002003003003003003003003003003003003",'#13#10
+ +'"003003003003003003003003003003003003003003003003",'#13#10'"003003003003003'
+ +'003003003003003003003003003003003",'#13#10'"0030030030030030030030030030030'
+ +'03003003003003003"'#13#10'};'#13#10#9'NumGlyphs'#2#0#7'OnClick'#7#9'PlayCli'
+ +'ck'#8'TabOrder'#2#4#4'Left'#2'X'#6'Height'#2#26#3'Top'#2'C'#5'Width'#2#28#0
+ +#0#7'TBitBtn'#6'btStop'#25'BorderSpacing.InnerBorder'#2#2#10'Glyph.Data'#10
+ +#155#3#0#0#151#3#0#0'/* XPM */'#13#10'static char *Pixmap[] = {'#13#10'"16 1'
+ +'6 16 2",'#13#10'"00 c #080810",'#13#10'"01 c #181821",'#13#10'"02 c gray16"'
+ +','#13#10'"03 c #D6D6CE",'#13#10'"04 c gray100",'#13#10'"05 c gray100",'#13
+ +#10'"06 c gray100",'#13#10'"07 c gray100",'#13#10'"08 c gray100",'#13#10'"09'
+ +' c gray100",'#13#10'"10 c gray100",'#13#10'"11 c gray100",'#13#10'"12 c gra'
+ +'y100",'#13#10'"13 c gray100",'#13#10'"14 c gray100",'#13#10'"15 c gray100",'
+ +#13#10'"03030303030303030303030303030303",'#13#10'"0303030303030303030303030'
+ +'3030303",'#13#10'"03030303030303030303030303030303",'#13#10'"03030300000000'
+ +'000000000000030303",'#13#10'"03030300010101010101010102030303",'#13#10'"030'
+ +'30300010101010101010102030303",'#13#10'"03030300010101010101010102030303",'
+ +#13#10'"03030300010101010101010102030303",'#13#10'"0303030001010101010101010'
+ +'2030303",'#13#10'"03030300010101010101010102030303",'#13#10'"03030300010101'
+ +'010101010102030303",'#13#10'"03030300010101010101010102030303",'#13#10'"030'
+ +'30302020202020202020202030303",'#13#10'"03030303030303030303030303030303",'
+ +#13#10'"03030303030303030303030303030303",'#13#10'"0303030303030303030303030'
+ +'3030303"'#13#10'};'#13#10#9'NumGlyphs'#2#0#7'OnClick'#7#9'StopClick'#8'TabO'
+ +'rder'#2#5#4'Left'#2't'#6'Height'#2#26#3'Top'#2'C'#5'Width'#2#28#0#0#6'TTime'
+ +'r'#9'PlayTimer'#7'Enabled'#8#8'Interval'#3#150#0#7'OnTimer'#7#11'Timer1Time'
+ +'r'#3'top'#3#152#0#0#0#8'TACSCDIn'#5'CDIn1'#3'top'#2#8#0#0#12'TACSAudioOut'#9
+ +'AudioOut1'#6'Driver'#6#10'Wavemapper'#5'Input'#7#5'CDIn1'#5'Delay'#2#6#15'S'
+ ,'uspendWhenIdle'#9#6'OnDone'#7#13'AudioOut1Done'#10'OnProgress'#7#17'AudioOu'
+ +'t1Progress'#3'top'#2'('#0#0#0
+]);
diff --git a/components/acs/Demos/cdplayer/umain.pas b/components/acs/Demos/cdplayer/umain.pas
new file mode 100644
index 000000000..55599ca96
--- /dev/null
+++ b/components/acs/Demos/cdplayer/umain.pas
@@ -0,0 +1,143 @@
+unit uMain;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
+ ACS_Audio,ACS_File,ACS_Classes,ACS_Allformats, ExtCtrls, StdCtrls, ComCtrls, ACS_CDROM;
+
+type
+
+ { TForm1 }
+
+ TForm1 = class(TForm)
+ AudioOut1: TACSAudioOut;
+ CDIn1: TACSCDIn;
+ btRew: TBitBtn;
+ btFfw: TBitBtn;
+ btPlay: TBitBtn;
+ btStop: TBitBtn;
+ btOpen: TBitBtn;
+ lTrack: TLabel;
+ lTime: TLabel;
+ Panel1: TPanel;
+ Progress: TProgressBar;
+ PlayTimer: TTimer;
+ Label1: TLabel;
+ Label2: TLabel;
+ Label3: TLabel;
+ lTracksCount: TLabel;
+ Label5: TLabel;
+ lLeft: TLabel;
+ procedure AudioOut1Done(Sender: TComponent);
+ procedure AudioOut1Progress(Sender: TComponent);
+ procedure AudioOut1ThreadException(Sender: TComponent; E: Exception);
+ procedure PlayClick(Sender: TObject);
+ procedure StopClick(Sender: TObject);
+ procedure OpenClick(Sender: TObject);
+ procedure Timer1Timer(Sender: TObject);
+ procedure btFfwClick(Sender: TObject);
+ procedure btRewClick(Sender: TObject);
+ procedure FormCreate(Sender : TObject);
+ private
+ { private declarations }
+ public
+ { public declarations }
+ end;
+
+var
+ Form1: TForm1;
+
+implementation
+
+{ TForm1 }
+
+procedure TForm1.PlayClick(Sender: TObject);
+begin
+ AudioOut1.Run;
+ btPlay.Enabled := False;
+ btStop.Enabled := True;
+ btOpen.Enabled := False;
+ btRew.Enabled := False;
+ btFfw.Enabled := False;
+end;
+
+procedure TForm1.AudioOut1Done(Sender: TComponent);
+begin
+ btPlay.Enabled := True;
+ btStop.Enabled := False;
+ btOpen.Enabled := True;
+ btRew.Enabled := True;
+ btFfw.Enabled := True;
+ PlayTimer.Enabled := false;
+end;
+
+procedure TForm1.AudioOut1Progress(Sender: TComponent);
+begin
+ PlayTimer.Enabled := True;
+end;
+
+procedure TForm1.AudioOut1ThreadException(Sender: TComponent; E: Exception);
+begin
+ ShowMessage(E.Message);
+end;
+
+procedure TForm1.StopClick(Sender: TObject);
+begin
+ AudioOut1.Stop;
+end;
+
+procedure TForm1.OpenClick(Sender: TObject);
+begin
+ lTracksCount.Caption := Format('%.2d',[CDIn1.Trackscount]);
+end;
+
+procedure TForm1.Timer1Timer(Sender: TObject);
+var
+ tmp : real;
+begin
+ tmp := ((CDIn1.Position * CDIn1.TotalTime) / CDIn1.Size);
+ lTime.Caption := Format('%.2d:%.2d:%.2d',[round((tmp-30) / 60) mod 120,round(tmp) mod 60,round(tmp*100) mod 100]);
+ tmp := CDIn1.TotalTime-((CDIn1.Position * CDIn1.TotalTime) / CDIn1.Size);
+ lLeft.Caption := Format('%.2d:%.2d:%.2d',[round((tmp-30) / 60) mod 120,round(tmp) mod 60,round(tmp*100) mod 100]);
+ Progress.Position := round((CDIn1.Position * 100) / CDIn1.Size);
+end;
+
+procedure TForm1.btFfwClick(Sender: TObject);
+begin
+ CDIn1.StartTrack := CDIn1.StartTrack+1;
+ CDIn1.EndTrack := CDIn1.StartTrack+1;
+ if CDIn1.StartTrack = CDIn1.TracksCount-1 then
+ btFfw.Enabled := False;
+ if CDIn1.StartTrack > 0 then
+ btRew.Enabled := True;
+ lTrack.Caption := Format('%.2d',[CDIn1.EndTrack]);
+ lLeft.Caption := '';
+ lTime.Caption := '00:00:00';
+end;
+
+procedure TForm1.btRewClick(Sender: TObject);
+begin
+ CDIn1.StartTrack := CDIn1.StartTrack-1;
+ CDIn1.EndTrack := CDIn1.StartTrack+1;
+ if CDIn1.StartTrack < CDIn1.TracksCount-1 then
+ btFfw.Enabled := True;
+ if CDIn1.StartTrack <= 0 then
+ btRew.Enabled := False;
+ lTrack.Caption := Format('%.2d',[CDIn1.EndTrack]);
+ lLeft.Caption := '';
+ lTime.Caption := '00:00:00';
+end;
+
+procedure TForm1.FormCreate(Sender: TObject);
+begin
+ lTracksCount.Caption := Format('%.2d',[CDIn1.Trackscount]);
+end;
+
+initialization
+ {$I umain.lrs}
+
+end.
+
diff --git a/components/acs/Demos/fileconverter/fileconverter.lpi b/components/acs/Demos/fileconverter/fileconverter.lpi
new file mode 100644
index 000000000..91a989ec9
--- /dev/null
+++ b/components/acs/Demos/fileconverter/fileconverter.lpi
@@ -0,0 +1,302 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/acs/Demos/fileconverter/umain.lfm b/components/acs/Demos/fileconverter/umain.lfm
new file mode 100644
index 000000000..2ba9ca62f
--- /dev/null
+++ b/components/acs/Demos/fileconverter/umain.lfm
@@ -0,0 +1,165 @@
+object Form1: TForm1
+ ActiveControl = BitBtn1
+ BorderStyle = bsToolWindow
+ Caption = 'Fileconverter'
+ ClientHeight = 62
+ ClientWidth = 401
+ OnCreate = FormCreate
+ PixelsPerInch = 96
+ HorzScrollBar.Page = 400
+ VertScrollBar.Page = 61
+ Left = 440
+ Height = 62
+ Top = 309
+ Width = 401
+ object Label1: TLabel
+ Caption = 'Output Dir'
+ Color = clNone
+ ParentColor = False
+ Left = 96
+ Height = 14
+ Top = 16
+ Width = 51
+ end
+ object pbProgress: TProgressBar
+ Max = 100
+ Left = 8
+ Height = 16
+ Top = 40
+ Width = 384
+ end
+ object BitBtn1: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Caption = 'Open'
+ Glyph.Data = {
+ 910900002F2A2058504D202A2F0D0A7374617469632063686172202A2062746E
+ 5F6F70656E66696C655F78706D5B5D203D207B0D0A2231382031382039372032
+ 222C0D0A2220200963204E6F6E65222C0D0A222E200963202330303030303022
+ 2C0D0A222B2009632023344533333142222C0D0A224020096320234535413536
+ 36222C0D0A22232009632023464544333941222C0D0A22242009632023464543
+ 353835222C0D0A22252009632023464443353837222C0D0A2226200963202346
+ 4543323832222C0D0A222A2009632023463841433632222C0D0A223D20096320
+ 23464543383841222C0D0A222D2009632023353335303444222C0D0A223B2009
+ 632023353535323446222C0D0A223E2009632023354335413537222C0D0A222C
+ 2009632023353435313445222C0D0A22272009632023353635333530222C0D0A
+ 22292009632023433438363445222C0D0A22212009632023353234463443222C
+ 0D0A227E2009632023463546354635222C0D0A227B2009632023454345434543
+ 222C0D0A225D2009632023453445344534222C0D0A225E200963202344434443
+ 4443222C0D0A222F2009632023443444344434222C0D0A222820096320234342
+ 43424342222C0D0A225F2009632023433443344334222C0D0A223A2009632023
+ 424342434243222C0D0A223C2009632023423542354235222C0D0A225B200963
+ 2023423342334233222C0D0A227D2009632023333033303330222C0D0A227C20
+ 09632023344133313139222C0D0A22312009632023444244424442222C0D0A22
+ 322009632023444644464445222C0D0A22332009632023453845384537222C0D
+ 0A22342009632023453645364534222C0D0A2235200963202344324432443122
+ 2C0D0A22362009632023433743374336222C0D0A223720096320234241424142
+ 39222C0D0A22382009632023414441444143222C0D0A22392009632023413041
+ 303946222C0D0A22302009632023393439343933222C0D0A2261200963202334
+ 3934393438222C0D0A22622009632023423737443434222C0D0A226320096320
+ 23353335313445222C0D0A22642009632023444144414441222C0D0A22652009
+ 632023444244424441222C0D0A22662009632023453145314530222C0D0A2267
+ 2009632023444444444443222C0D0A22682009632023443644364435222C0D0A
+ 22692009632023434243424341222C0D0A226A2009632023433143314330222C
+ 0D0A226B2009632023423642364235222C0D0A226C2009632023413941394138
+ 222C0D0A226D2009632023363836383637222C0D0A226E200963202332323232
+ 3231222C0D0A226F2009632023343933303138222C0D0A227020096320234344
+ 43444344222C0D0A22712009632023434143414339222C0D0A22722009632023
+ 443544354434222C0D0A22732009632023443244324430222C0D0A2274200963
+ 2023434343434342222C0D0A22752009632023433243324331222C0D0A227620
+ 09632023423942394238222C0D0A22772009632023414641464145222C0D0A22
+ 782009632023413241324131222C0D0A22792009632023393539353934222C0D
+ 0A227A2009632023434543454345222C0D0A2241200963202342454245424322
+ 2C0D0A22422009632023433443344332222C0D0A224320096320234336433643
+ 35222C0D0A22442009632023433343334332222C0D0A22452009632023424642
+ 464245222C0D0A22462009632023414541454144222C0D0A2247200963202341
+ 3541354134222C0D0A22482009632023394539453944222C0D0A224920096320
+ 23364636463645222C0D0A224A2009632023313231323132222C0D0A224B2009
+ 632023424442444244222C0D0A224C2009632023413641364135222C0D0A224D
+ 2009632023414141414138222C0D0A224E2009632023414441444142222C0D0A
+ 224F2009632023414541454143222C0D0A22502009632023414241424141222C
+ 0D0A22512009632023413741374136222C0D0A22522009632023413141314130
+ 222C0D0A22532009632023394139413939222C0D0A2254200963202339343934
+ 3932222C0D0A22552009632023384438443842222C0D0A225620096320233233
+ 32333233222C0D0A22572009632023344134413441222C0D0A22582009632023
+ 344134413439222C0D0A22592009632023344334433442222C0D0A225A200963
+ 2023344334433443222C0D0A22602009632023344234423441222C0D0A22202E
+ 09632023343634363436222C0D0A222E2E09632023343334333433222C0D0A22
+ 2B2E09632023343134313430222C0D0A22402E09632023333433343333222C0D
+ 0A22232E09632023314631463145222C0D0A222020202020202020202020202E
+ 202E202E202E2020202020202020202020202020202020222C0D0A2220202020
+ 2020202020202E202E2020202E202E202E202E2020202E202020202020202020
+ 222C0D0A2220202020202020202E20202020202020202020202E202E202E202E
+ 202020202020202020222C0D0A22202020202020202020202020202020202020
+ 202020202E202E202E202020202020202020222C0D0A22202020202020202020
+ 20202020202020202020202E202E202E202E202020202020202020222C0D0A22
+ 20202B202B202B202B2020202020202020202020202020202020202020202020
+ 20202020222C0D0A222B2040202320242040202B202B202B202B202B202B202B
+ 20202020202020202020202020222C0D0A222B202320252026202A202A202A20
+ 2A202A202A202A202A202E2020202020202020202020222C0D0A222B203D2026
+ 202B202D202D203B203E202C202C20272027202C202E202E202E202020202022
+ 2C0D0A222B202620292021207E207E207B205D205E202F2028205F203A203C20
+ 5B207D2020202020222C0D0A222B2026207C2031203220332034203220352036
+ 2037203820392030206120202020202020222C0D0A222B206220632064206520
+ 66206720682069206A206B206C2039206D206E20202020202020222C0D0A222B
+ 206F207020712072207220732074207520762077207820792061202020202020
+ 202020222C0D0A222B2027207A20412042204320442045206B20462047204820
+ 49204A202020202020202020222C0D0A222B204B204C204D204E204F20502051
+ 205220532054205520612020202020202020202020222C0D0A22562057205820
+ 59205A20592060206120202E2E2E2B2E402E232E20202020202020202020222C
+ 0D0A222020202020202020202020202020202020202020202020202020202020
+ 20202020202020222C0D0A222020202020202020202020202020202020202020
+ 20202020202020202020202020202020227D3B0D0A
+ }
+ NumGlyphs = 0
+ OnClick = BitBtn1Click
+ TabOrder = 0
+ Left = 8
+ Height = 24
+ Top = 11
+ Width = 72
+ end
+ object DirectoryEdit: TDirectoryEdit
+ ButtonWidth = 23
+ NumGlyphs = 1
+ ParentColor = False
+ TabOrder = 1
+ TabOrder = 1
+ Left = 152
+ Height = 23
+ Top = 11
+ Width = 112
+ end
+ object btStart: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Caption = 'Start'
+ NumGlyphs = 0
+ OnClick = BitBtn2Click
+ TabOrder = 2
+ Left = 352
+ Height = 22
+ Top = 11
+ Width = 43
+ end
+ object cbOutput: TComboBox
+ MaxLength = 0
+ Style = csDropDownList
+ TabOrder = 3
+ Left = 295
+ Height = 21
+ Top = 11
+ Width = 49
+ end
+ object FileIn: TACSFileIn
+ EndSample = -1
+ EndSample = -1
+ left = 32
+ top = 8
+ end
+ object FileOut: TACSFileOut
+ Input = FileIn
+ OnDone = FileOutDone
+ OnProgress = FileOutProgress
+ left = 32
+ top = 368
+ end
+end
diff --git a/components/acs/Demos/fileconverter/umain.lrs b/components/acs/Demos/fileconverter/umain.lrs
new file mode 100644
index 000000000..eef72c85c
--- /dev/null
+++ b/components/acs/Demos/fileconverter/umain.lrs
@@ -0,0 +1,71 @@
+{ Dies ist eine automatisch erzeugte Lazarus-Ressourcendatei }
+
+LazarusResources.Add('TForm1','FORMDATA',[
+ 'TPF0'#6'TForm1'#5'Form1'#13'ActiveControl'#7#7'BitBtn1'#11'BorderStyle'#7#12
+ +'bsToolWindow'#7'Caption'#6#13'Fileconverter'#12'ClientHeight'#2'>'#11'Clien'
+ +'tWidth'#3#145#1#8'OnCreate'#7#10'FormCreate'#13'PixelsPerInch'#2'`'#18'Horz'
+ +'ScrollBar.Page'#3#144#1#18'VertScrollBar.Page'#2'='#4'Left'#3#184#1#6'Heigh'
+ +'t'#2'>'#3'Top'#3'5'#1#5'Width'#3#145#1#0#6'TLabel'#6'Label1'#7'Caption'#6#10
+ +'Output Dir'#5'Color'#7#6'clNone'#11'ParentColor'#8#4'Left'#2'`'#6'Height'#2
+ +#14#3'Top'#2#16#5'Width'#2'3'#0#0#12'TProgressBar'#10'pbProgress'#3'Max'#2'd'
+ +#4'Left'#2#8#6'Height'#2#16#3'Top'#2'('#5'Width'#3#128#1#0#0#7'TBitBtn'#7'Bi'
+ +'tBtn1'#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#4'Open'#10'Glyph.Data'
+ +#10#149#9#0#0#145#9#0#0'/* XPM */'#13#10'static char * btn_openfile_xpm[] = '
+ +'{'#13#10'"18 18 97 2",'#13#10'" '#9'c None",'#13#10'". '#9'c #000000",'#13
+ +#10'"+ '#9'c #4E331B",'#13#10'"@ '#9'c #E5A566",'#13#10'"# '#9'c #FED39A",'
+ +#13#10'"$ '#9'c #FEC585",'#13#10'"% '#9'c #FDC587",'#13#10'"& '#9'c #FEC282"'
+ +','#13#10'"* '#9'c #F8AC62",'#13#10'"= '#9'c #FEC88A",'#13#10'"- '#9'c #5350'
+ +'4D",'#13#10'"; '#9'c #55524F",'#13#10'"> '#9'c #5C5A57",'#13#10'", '#9'c #5'
+ +'4514E",'#13#10'"'' '#9'c #565350",'#13#10'") '#9'c #C4864E",'#13#10'"! '#9
+ +'c #524F4C",'#13#10'"~ '#9'c #F5F5F5",'#13#10'"{ '#9'c #ECECEC",'#13#10'"] '
+ +#9'c #E4E4E4",'#13#10'"^ '#9'c #DCDCDC",'#13#10'"/ '#9'c #D4D4D4",'#13#10'"('
+ +' '#9'c #CBCBCB",'#13#10'"_ '#9'c #C4C4C4",'#13#10'": '#9'c #BCBCBC",'#13#10
+ +'"< '#9'c #B5B5B5",'#13#10'"[ '#9'c #B3B3B3",'#13#10'"} '#9'c #303030",'#13
+ +#10'"| '#9'c #4A3119",'#13#10'"1 '#9'c #DBDBDB",'#13#10'"2 '#9'c #DFDFDE",'
+ +#13#10'"3 '#9'c #E8E8E7",'#13#10'"4 '#9'c #E6E6E4",'#13#10'"5 '#9'c #D2D2D1"'
+ +','#13#10'"6 '#9'c #C7C7C6",'#13#10'"7 '#9'c #BABAB9",'#13#10'"8 '#9'c #ADAD'
+ +'AC",'#13#10'"9 '#9'c #A0A09F",'#13#10'"0 '#9'c #949493",'#13#10'"a '#9'c #4'
+ +'94948",'#13#10'"b '#9'c #B77D44",'#13#10'"c '#9'c #53514E",'#13#10'"d '#9'c'
+ +' #DADADA",'#13#10'"e '#9'c #DBDBDA",'#13#10'"f '#9'c #E1E1E0",'#13#10'"g '#9
+ +'c #DDDDDC",'#13#10'"h '#9'c #D6D6D5",'#13#10'"i '#9'c #CBCBCA",'#13#10'"j '
+ +#9'c #C1C1C0",'#13#10'"k '#9'c #B6B6B5",'#13#10'"l '#9'c #A9A9A8",'#13#10'"m'
+ +' '#9'c #686867",'#13#10'"n '#9'c #222221",'#13#10'"o '#9'c #493018",'#13#10
+ +'"p '#9'c #CDCDCD",'#13#10'"q '#9'c #CACAC9",'#13#10'"r '#9'c #D5D5D4",'#13
+ +#10'"s '#9'c #D2D2D0",'#13#10'"t '#9'c #CCCCCB",'#13#10'"u '#9'c #C2C2C1",'
+ +#13#10'"v '#9'c #B9B9B8",'#13#10'"w '#9'c #AFAFAE",'#13#10'"x '#9'c #A2A2A1"'
+ +','#13#10'"y '#9'c #959594",'#13#10'"z '#9'c #CECECE",'#13#10'"A '#9'c #BEBE'
+ +'BC",'#13#10'"B '#9'c #C4C4C2",'#13#10'"C '#9'c #C6C6C5",'#13#10'"D '#9'c #C'
+ +'3C3C2",'#13#10'"E '#9'c #BFBFBE",'#13#10'"F '#9'c #AEAEAD",'#13#10'"G '#9'c'
+ +' #A5A5A4",'#13#10'"H '#9'c #9E9E9D",'#13#10'"I '#9'c #6F6F6E",'#13#10'"J '#9
+ +'c #121212",'#13#10'"K '#9'c #BDBDBD",'#13#10'"L '#9'c #A6A6A5",'#13#10'"M '
+ +#9'c #AAAAA8",'#13#10'"N '#9'c #ADADAB",'#13#10'"O '#9'c #AEAEAC",'#13#10'"P'
+ +' '#9'c #ABABAA",'#13#10'"Q '#9'c #A7A7A6",'#13#10'"R '#9'c #A1A1A0",'#13#10
+ +'"S '#9'c #9A9A99",'#13#10'"T '#9'c #949492",'#13#10'"U '#9'c #8D8D8B",'#13
+ +#10'"V '#9'c #232323",'#13#10'"W '#9'c #4A4A4A",'#13#10'"X '#9'c #4A4A49",'
+ +#13#10'"Y '#9'c #4C4C4B",'#13#10'"Z '#9'c #4C4C4C",'#13#10'"` '#9'c #4B4B4A"'
+ +','#13#10'" .'#9'c #464646",'#13#10'"..'#9'c #434343",'#13#10'"+.'#9'c #4141'
+ +'40",'#13#10'"@.'#9'c #343433",'#13#10'"#.'#9'c #1F1F1E",'#13#10'" '
+ +' . . . . ",'#13#10'" . . . . . . . ",'
+ +#13#10'" . . . . . ",'#13#10'" '
+ +' . . . ",'#13#10'" . . . . ",'#13#10'" '
+ +'+ + + + ",'#13#10'"+ @ # $ @ + + + + + + + '
+ +' ",'#13#10'"+ # % & * * * * * * * * . ",'#13#10'"+ = & + - -'
+ +' ; > , , '' '' , . . . ",'#13#10'"+ & ) ! ~ ~ { ] ^ / ( _ : < [ } "'
+ +','#13#10'"+ & | 1 2 3 4 2 5 6 7 8 9 0 a ",'#13#10'"+ b c d e f g h i '
+ +'j k l 9 m n ",'#13#10'"+ o p q r r s t u v w x y a ",'#13#10
+ +'"+ '' z A B C D E k F G H I J ",'#13#10'"+ K L M N O P Q R S T U a '
+ +' ",'#13#10'"V W X Y Z Y ` a ...+.@.#. ",'#13#10'" '
+ +' ",'#13#10'" '
+ +' "};'#13#10#9'NumGlyphs'#2#0#7'OnClick'#7#12'BitBtn1Click'#8'TabOrder'#2#0#4
+ +'Left'#2#8#6'Height'#2#24#3'Top'#2#11#5'Width'#2'H'#0#0#14'TDirectoryEdit'#13
+ +'DirectoryEdit'#11'ButtonWidth'#2#23#9'NumGlyphs'#2#1#11'ParentColor'#8#8'Ta'
+ +'bOrder'#2#1#8'TabOrder'#2#1#4'Left'#3#152#0#6'Height'#2#23#3'Top'#2#11#5'Wi'
+ +'dth'#2'p'#0#0#7'TBitBtn'#7'btStart'#25'BorderSpacing.InnerBorder'#2#2#7'Cap'
+ +'tion'#6#5'Start'#9'NumGlyphs'#2#0#7'OnClick'#7#12'BitBtn2Click'#8'TabOrder'
+ +#2#2#4'Left'#3'`'#1#6'Height'#2#22#3'Top'#2#11#5'Width'#2'+'#0#0#9'TComboBox'
+ +#8'cbOutput'#9'MaxLength'#2#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#3#4
+ +'Left'#3''''#1#6'Height'#2#21#3'Top'#2#11#5'Width'#2'1'#0#0#10'TACSFileIn'#6
+ ,'FileIn'#9'EndSample'#2#255#9'EndSample'#2#255#4'left'#2' '#3'top'#2#8#0#0#11
+ +'TACSFileOut'#7'FileOut'#5'Input'#7#6'FileIn'#6'OnDone'#7#11'FileOutDone'#10
+ +'OnProgress'#7#15'FileOutProgress'#4'left'#2' '#3'top'#3'p'#1#0#0#0
+]);
diff --git a/components/acs/Demos/fileconverter/umain.pas b/components/acs/Demos/fileconverter/umain.pas
new file mode 100644
index 000000000..3038cbb54
--- /dev/null
+++ b/components/acs/Demos/fileconverter/umain.pas
@@ -0,0 +1,95 @@
+unit uMain;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls, Buttons, EditBtn, ACS_File, StdCtrls
+ ,ACS_AllFormats,ACS_Classes;
+
+type
+
+ { TForm1 }
+
+ TForm1 = class(TForm)
+ BitBtn1: TBitBtn;
+ btStart: TBitBtn;
+ cbOutput: TComboBox;
+ DirectoryEdit: TDirectoryEdit;
+ FileIn: TACSFileIn;
+ FileOut: TACSFileOut;
+ Label1: TLabel;
+ pbProgress: TProgressBar;
+ procedure BitBtn1Click(Sender: TObject);
+ procedure BitBtn2Click(Sender: TObject);
+ procedure FileOutDone(Sender: TComponent);
+ procedure FileOutProgress(Sender: TComponent);
+ procedure FormCreate(Sender: TObject);
+ private
+ { private declarations }
+ public
+ { public declarations }
+ end;
+
+var
+ Form1: TForm1;
+
+implementation
+
+{ TForm1 }
+
+procedure TForm1.BitBtn1Click(Sender: TObject);
+begin
+ FileIn.Open;
+ DirectoryEdit.Text := ExtractFileDir(FileIn.FileName);
+end;
+
+procedure TForm1.BitBtn2Click(Sender: TObject);
+var
+ newfilename : string;
+begin
+ newfilename := ExtractFileName(FileIn.FileName);
+ if newfilename = '' then
+ begin
+ ShowMessage('You must open an file first !');
+ exit;
+ end;
+ newfilename := copy(newfilename,0,length(newfilename)-length(ExtractFileExt(newfilename)));
+ if DirectoryEdit.Directory = '' then
+ begin
+ ShowMessage('You must select an directory first !');
+ exit;
+ end;
+ FileOut.FileName := DirectoryEdit.Directory+DirectorySeparator+newfilename+'.'+cbOutput.Text;
+ btStart.Enabled := False;
+ FileOut.Run;
+end;
+
+procedure TForm1.FileOutDone(Sender: TComponent);
+begin
+ btStart.Enabled := True;
+ pbProgress.Position := 0;
+end;
+
+procedure TForm1.FileOutProgress(Sender: TComponent);
+begin
+ pbProgress.Position := round(FileOut.Progress);
+ Update;
+ Application.Processmessages;
+end;
+
+procedure TForm1.FormCreate(Sender: TObject);
+var
+ i : Integer;
+begin
+ for i := 0 to Fileformats.Count-1 do
+ if TACSFileFormat(Fileformats[i]).FileClass.InheritsFrom(TACSCustomFileOut) then
+ cbOutput.Items.Add(TACSFileFormat(Fileformats[i]).Extension);
+end;
+
+initialization
+ {$I umain.lrs}
+
+end.
+
diff --git a/components/acs/Demos/images/btn_play.xpm b/components/acs/Demos/images/btn_play.xpm
new file mode 100644
index 000000000..37ce794b8
--- /dev/null
+++ b/components/acs/Demos/images/btn_play.xpm
@@ -0,0 +1,278 @@
+/* XPM */
+static char *Pixmap[] = {
+"18 18 256 3",
+"000 c black",
+"001 c #010101",
+"002 c #020202",
+"003 c #040404",
+"004 c #070707",
+"005 c #090909",
+"006 c #0C0C0C",
+"007 c #0E0E0E",
+"008 c #111111",
+"009 c #131312",
+"010 c gray8",
+"011 c #161616",
+"012 c #191919",
+"013 c #1B1B1B",
+"014 c gray11",
+"015 c gray13",
+"016 c gray15",
+"017 c #282827",
+"018 c gray16",
+"019 c gray18",
+"020 c #323231",
+"021 c #353534",
+"022 c gray22",
+"023 c #393939",
+"024 c #40403F",
+"025 c gray25",
+"026 c gray26",
+"027 c #484847",
+"028 c #515150",
+"029 c dimgray",
+"030 c #5B5B5B",
+"031 c #5C5C5B",
+"032 c #5E5E5D",
+"033 c #60605F",
+"034 c #636362",
+"035 c #646463",
+"036 c #656564",
+"037 c #666665",
+"038 c #676766",
+"039 c #686867",
+"040 c #6C6C6B",
+"041 c #70706F",
+"042 c #757574",
+"043 c #7E7E7D",
+"044 c #DFDFDE",
+"045 c black",
+"046 c black",
+"047 c black",
+"048 c black",
+"049 c black",
+"050 c black",
+"051 c black",
+"052 c black",
+"053 c black",
+"054 c black",
+"055 c black",
+"056 c black",
+"057 c black",
+"058 c black",
+"059 c black",
+"060 c black",
+"061 c black",
+"062 c black",
+"063 c black",
+"064 c black",
+"065 c black",
+"066 c black",
+"067 c black",
+"068 c black",
+"069 c black",
+"070 c black",
+"071 c black",
+"072 c black",
+"073 c black",
+"074 c black",
+"075 c black",
+"076 c black",
+"077 c black",
+"078 c black",
+"079 c black",
+"080 c black",
+"081 c black",
+"082 c black",
+"083 c black",
+"084 c black",
+"085 c black",
+"086 c black",
+"087 c black",
+"088 c black",
+"089 c black",
+"090 c black",
+"091 c black",
+"092 c black",
+"093 c black",
+"094 c black",
+"095 c black",
+"096 c black",
+"097 c black",
+"098 c black",
+"099 c black",
+"100 c black",
+"101 c black",
+"102 c black",
+"103 c black",
+"104 c black",
+"105 c black",
+"106 c black",
+"107 c black",
+"108 c black",
+"109 c black",
+"110 c black",
+"111 c black",
+"112 c black",
+"113 c black",
+"114 c black",
+"115 c black",
+"116 c black",
+"117 c black",
+"118 c black",
+"119 c black",
+"120 c black",
+"121 c black",
+"122 c black",
+"123 c black",
+"124 c black",
+"125 c black",
+"126 c black",
+"127 c black",
+"128 c black",
+"129 c black",
+"130 c black",
+"131 c black",
+"132 c black",
+"133 c black",
+"134 c black",
+"135 c black",
+"136 c black",
+"137 c black",
+"138 c black",
+"139 c black",
+"140 c black",
+"141 c black",
+"142 c black",
+"143 c black",
+"144 c black",
+"145 c black",
+"146 c black",
+"147 c black",
+"148 c black",
+"149 c black",
+"150 c black",
+"151 c black",
+"152 c black",
+"153 c black",
+"154 c black",
+"155 c black",
+"156 c black",
+"157 c black",
+"158 c black",
+"159 c black",
+"160 c black",
+"161 c black",
+"162 c black",
+"163 c black",
+"164 c black",
+"165 c black",
+"166 c black",
+"167 c black",
+"168 c black",
+"169 c black",
+"170 c black",
+"171 c black",
+"172 c black",
+"173 c black",
+"174 c black",
+"175 c black",
+"176 c black",
+"177 c black",
+"178 c black",
+"179 c black",
+"180 c black",
+"181 c black",
+"182 c black",
+"183 c black",
+"184 c black",
+"185 c black",
+"186 c black",
+"187 c black",
+"188 c black",
+"189 c black",
+"190 c black",
+"191 c black",
+"192 c black",
+"193 c black",
+"194 c black",
+"195 c black",
+"196 c black",
+"197 c black",
+"198 c black",
+"199 c black",
+"200 c black",
+"201 c black",
+"202 c black",
+"203 c black",
+"204 c black",
+"205 c black",
+"206 c black",
+"207 c black",
+"208 c black",
+"209 c black",
+"210 c black",
+"211 c black",
+"212 c black",
+"213 c black",
+"214 c black",
+"215 c black",
+"216 c black",
+"217 c black",
+"218 c black",
+"219 c black",
+"220 c black",
+"221 c black",
+"222 c black",
+"223 c black",
+"224 c black",
+"225 c black",
+"226 c black",
+"227 c black",
+"228 c black",
+"229 c black",
+"230 c black",
+"231 c black",
+"232 c black",
+"233 c black",
+"234 c black",
+"235 c black",
+"236 c black",
+"237 c black",
+"238 c black",
+"239 c black",
+"240 c black",
+"241 c black",
+"242 c black",
+"243 c black",
+"244 c black",
+"245 c black",
+"246 c black",
+"247 c black",
+"248 c black",
+"249 c black",
+"250 c black",
+"251 c black",
+"252 c black",
+"253 c black",
+"254 c black",
+"255 c black",
+"000000000000000000000000000000000000000000000000000000",
+"000000016039039039039032006000000000000000000000000000",
+"000000016043044044041039037013000000000000000000000000",
+"000000016043044044041024039039019000000000000000000000",
+"000000016043044044041012011036039027002000000000000000",
+"000000016043044044043012000005031039030005000000000000",
+"000000016043044044043016000000002027039036011000000000",
+"000000016043044044043016000000000000020039039018000000",
+"000000016043044044043016000000000000000014038039026001",
+"000000016043044044043016000000000000000009034039028003",
+"000000016043044044043016000000000000015039039023000000",
+"000000016043044044043016000000000022039039015000000000",
+"000000016042044044040012000003028039034008000000000000",
+"000000016043044044041012007033039029004000000000000000",
+"000000016043044044041021038039025001000000000000000000",
+"000000016043044044041039039017000000000000000000000000",
+"000000016039039039039035010000000000000000000000000000",
+"000000000000000000000000000000000000000000000000000000"
+};
diff --git a/components/acs/Demos/images/eject.xpm b/components/acs/Demos/images/eject.xpm
new file mode 100644
index 000000000..69d5d35da
--- /dev/null
+++ b/components/acs/Demos/images/eject.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *Pixmap[] = {
+"16 16 16 2",
+"00 c #080810",
+"01 c #181821",
+"02 c gray16",
+"03 c #D6D6CE",
+"04 c gray100",
+"05 c gray100",
+"06 c gray100",
+"07 c gray100",
+"08 c gray100",
+"09 c gray100",
+"10 c gray100",
+"11 c gray100",
+"12 c gray100",
+"13 c gray100",
+"14 c gray100",
+"15 c gray100",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030303030303000303030303030303",
+"03030303030300010003030303030303",
+"03030303030001010100030303030303",
+"03030303000101010101000303030303",
+"03030300010101010101010003030303",
+"03030202020202020202020202030303",
+"03030303030303030303030303030303",
+"03030000000000000000000000030303",
+"03030001010101010101010102030303",
+"03030202020202020202020202030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303"
+};
diff --git a/components/acs/Demos/images/pause.xpm b/components/acs/Demos/images/pause.xpm
new file mode 100644
index 000000000..eeeac649a
--- /dev/null
+++ b/components/acs/Demos/images/pause.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *Pixmap[] = {
+"16 16 16 2",
+"00 c #080810",
+"01 c #181821",
+"02 c gray16",
+"03 c #D6D6CE",
+"04 c gray100",
+"05 c gray100",
+"06 c gray100",
+"07 c gray100",
+"08 c gray100",
+"09 c gray100",
+"10 c gray100",
+"11 c gray100",
+"12 c gray100",
+"13 c gray100",
+"14 c gray100",
+"15 c gray100",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030000000003030300000000030303",
+"03030001010203030300010102030303",
+"03030001010203030300010102030303",
+"03030001010203030300010102030303",
+"03030001010203030300010102030303",
+"03030001010203030300010102030303",
+"03030001010203030300010102030303",
+"03030001010203030300010102030303",
+"03030001010203030300010102030303",
+"03030202020203030302020202030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303"
+};
diff --git a/components/acs/Demos/images/play.xpm b/components/acs/Demos/images/play.xpm
new file mode 100644
index 000000000..04ccc2ec4
--- /dev/null
+++ b/components/acs/Demos/images/play.xpm
@@ -0,0 +1,276 @@
+/* XPM */
+static char *Pixmap[] = {
+"16 16 256 3",
+"000 c #0C0F12",
+"001 c #1B1D20",
+"002 c #2A2D2D",
+"003 c #D4D0C8",
+"004 c black",
+"005 c black",
+"006 c black",
+"007 c black",
+"008 c black",
+"009 c black",
+"010 c black",
+"011 c black",
+"012 c black",
+"013 c black",
+"014 c black",
+"015 c black",
+"016 c black",
+"017 c black",
+"018 c black",
+"019 c black",
+"020 c black",
+"021 c black",
+"022 c black",
+"023 c black",
+"024 c black",
+"025 c black",
+"026 c black",
+"027 c black",
+"028 c black",
+"029 c black",
+"030 c black",
+"031 c black",
+"032 c black",
+"033 c black",
+"034 c black",
+"035 c black",
+"036 c black",
+"037 c black",
+"038 c black",
+"039 c black",
+"040 c black",
+"041 c black",
+"042 c black",
+"043 c black",
+"044 c black",
+"045 c black",
+"046 c black",
+"047 c black",
+"048 c black",
+"049 c black",
+"050 c black",
+"051 c black",
+"052 c black",
+"053 c black",
+"054 c black",
+"055 c black",
+"056 c black",
+"057 c black",
+"058 c black",
+"059 c black",
+"060 c black",
+"061 c black",
+"062 c black",
+"063 c black",
+"064 c black",
+"065 c black",
+"066 c black",
+"067 c black",
+"068 c black",
+"069 c black",
+"070 c black",
+"071 c black",
+"072 c black",
+"073 c black",
+"074 c black",
+"075 c black",
+"076 c black",
+"077 c black",
+"078 c black",
+"079 c black",
+"080 c black",
+"081 c black",
+"082 c black",
+"083 c black",
+"084 c black",
+"085 c black",
+"086 c black",
+"087 c black",
+"088 c black",
+"089 c black",
+"090 c black",
+"091 c black",
+"092 c black",
+"093 c black",
+"094 c black",
+"095 c black",
+"096 c black",
+"097 c black",
+"098 c black",
+"099 c black",
+"100 c black",
+"101 c black",
+"102 c black",
+"103 c black",
+"104 c black",
+"105 c black",
+"106 c black",
+"107 c black",
+"108 c black",
+"109 c black",
+"110 c black",
+"111 c black",
+"112 c black",
+"113 c black",
+"114 c black",
+"115 c black",
+"116 c black",
+"117 c black",
+"118 c black",
+"119 c black",
+"120 c black",
+"121 c black",
+"122 c black",
+"123 c black",
+"124 c black",
+"125 c black",
+"126 c black",
+"127 c black",
+"128 c black",
+"129 c black",
+"130 c black",
+"131 c black",
+"132 c black",
+"133 c black",
+"134 c black",
+"135 c black",
+"136 c black",
+"137 c black",
+"138 c black",
+"139 c black",
+"140 c black",
+"141 c black",
+"142 c black",
+"143 c black",
+"144 c black",
+"145 c black",
+"146 c black",
+"147 c black",
+"148 c black",
+"149 c black",
+"150 c black",
+"151 c black",
+"152 c black",
+"153 c black",
+"154 c black",
+"155 c black",
+"156 c black",
+"157 c black",
+"158 c black",
+"159 c black",
+"160 c black",
+"161 c black",
+"162 c black",
+"163 c black",
+"164 c black",
+"165 c black",
+"166 c black",
+"167 c black",
+"168 c black",
+"169 c black",
+"170 c black",
+"171 c black",
+"172 c black",
+"173 c black",
+"174 c black",
+"175 c black",
+"176 c black",
+"177 c black",
+"178 c black",
+"179 c black",
+"180 c black",
+"181 c black",
+"182 c black",
+"183 c black",
+"184 c black",
+"185 c black",
+"186 c black",
+"187 c black",
+"188 c black",
+"189 c black",
+"190 c black",
+"191 c black",
+"192 c black",
+"193 c black",
+"194 c black",
+"195 c black",
+"196 c black",
+"197 c black",
+"198 c black",
+"199 c black",
+"200 c black",
+"201 c black",
+"202 c black",
+"203 c black",
+"204 c black",
+"205 c black",
+"206 c black",
+"207 c black",
+"208 c black",
+"209 c black",
+"210 c black",
+"211 c black",
+"212 c black",
+"213 c black",
+"214 c black",
+"215 c black",
+"216 c black",
+"217 c black",
+"218 c black",
+"219 c black",
+"220 c black",
+"221 c black",
+"222 c black",
+"223 c black",
+"224 c black",
+"225 c black",
+"226 c black",
+"227 c black",
+"228 c black",
+"229 c black",
+"230 c black",
+"231 c black",
+"232 c black",
+"233 c black",
+"234 c black",
+"235 c black",
+"236 c black",
+"237 c black",
+"238 c black",
+"239 c black",
+"240 c black",
+"241 c black",
+"242 c black",
+"243 c black",
+"244 c black",
+"245 c black",
+"246 c black",
+"247 c black",
+"248 c black",
+"249 c black",
+"250 c black",
+"251 c black",
+"252 c black",
+"253 c black",
+"254 c black",
+"255 c black",
+"003003003003003003003003003003003003003003003003",
+"003003003003003003003003003003003003003003003003",
+"003003003003003003003003003003003003003003003003",
+"003003003000000003003003003003003003003003003003",
+"003003003000001000000003003003003003003003003003",
+"003003003000001001001000000003003003003003003003",
+"003003003000001001001001001000000003003003003003",
+"003003003000001001001001001001001000000003003003",
+"003003003000001001001001001001001002002003003003",
+"003003003000001001001001001002002003003003003003",
+"003003003000001001001002002003003003003003003003",
+"003003003000001002002003003003003003003003003003",
+"003003003002002003003003003003003003003003003003",
+"003003003003003003003003003003003003003003003003",
+"003003003003003003003003003003003003003003003003",
+"003003003003003003003003003003003003003003003003"
+};
diff --git a/components/acs/Demos/images/stop.xpm b/components/acs/Demos/images/stop.xpm
new file mode 100644
index 000000000..b208e5adf
--- /dev/null
+++ b/components/acs/Demos/images/stop.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *Pixmap[] = {
+"16 16 16 2",
+"00 c #080810",
+"01 c #181821",
+"02 c gray16",
+"03 c #D6D6CE",
+"04 c gray100",
+"05 c gray100",
+"06 c gray100",
+"07 c gray100",
+"08 c gray100",
+"09 c gray100",
+"10 c gray100",
+"11 c gray100",
+"12 c gray100",
+"13 c gray100",
+"14 c gray100",
+"15 c gray100",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030300000000000000000000030303",
+"03030300010101010101010102030303",
+"03030300010101010101010102030303",
+"03030300010101010101010102030303",
+"03030300010101010101010102030303",
+"03030300010101010101010102030303",
+"03030300010101010101010102030303",
+"03030300010101010101010102030303",
+"03030300010101010101010102030303",
+"03030302020202020202020202030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303"
+};
diff --git a/components/acs/Demos/images/track_back.xpm b/components/acs/Demos/images/track_back.xpm
new file mode 100644
index 000000000..afee3e1b5
--- /dev/null
+++ b/components/acs/Demos/images/track_back.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *Pixmap[] = {
+"16 16 16 2",
+"00 c #080810",
+"01 c #181821",
+"02 c gray16",
+"03 c #D6D6CE",
+"04 c gray100",
+"05 c gray100",
+"06 c gray100",
+"07 c gray100",
+"08 c gray100",
+"09 c gray100",
+"10 c gray100",
+"11 c gray100",
+"12 c gray100",
+"13 c gray100",
+"14 c gray100",
+"15 c gray100",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030300000003030303030000030303",
+"03030300010203030303000102030303",
+"03030300010203030300010102030303",
+"03030300010203030001010102030303",
+"03030300010203000101010102030303",
+"03030300010203020101010102030303",
+"03030300010203030201010102030303",
+"03030300010203030302010102030303",
+"03030300010203030303020102030303",
+"03030302020203030303030202030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303"
+};
diff --git a/components/acs/Demos/images/track_forwrd.xpm b/components/acs/Demos/images/track_forwrd.xpm
new file mode 100644
index 000000000..088b39789
--- /dev/null
+++ b/components/acs/Demos/images/track_forwrd.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char *Pixmap[] = {
+"16 16 16 2",
+"00 c #080810",
+"01 c #181821",
+"02 c gray16",
+"03 c #D6D6CE",
+"04 c gray100",
+"05 c gray100",
+"06 c gray100",
+"07 c gray100",
+"08 c gray100",
+"09 c gray100",
+"10 c gray100",
+"11 c gray100",
+"12 c gray100",
+"13 c gray100",
+"14 c gray100",
+"15 c gray100",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030300000303030303000000030303",
+"03030302010003030303020100030303",
+"03030302010100030303020100030303",
+"03030302010101000303020100030303",
+"03030302010101010003020100030303",
+"03030302010101010203020100030303",
+"03030302010101020303020100030303",
+"03030302010102030303020100030303",
+"03030302010203030303020100030303",
+"03030302020303030303020202030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303",
+"03030303030303030303030303030303"
+};
diff --git a/components/acs/Demos/linerecord/linerecord.lpi b/components/acs/Demos/linerecord/linerecord.lpi
new file mode 100644
index 000000000..2b4c04572
--- /dev/null
+++ b/components/acs/Demos/linerecord/linerecord.lpi
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/acs/Demos/linerecord/umain.lfm b/components/acs/Demos/linerecord/umain.lfm
new file mode 100644
index 000000000..a18ebd47b
--- /dev/null
+++ b/components/acs/Demos/linerecord/umain.lfm
@@ -0,0 +1,83 @@
+object Form1: TForm1
+ ActiveControl = bRecord
+ BorderStyle = bsToolWindow
+ Caption = 'Audio Record'
+ ClientHeight = 43
+ ClientWidth = 308
+ OnCreate = FormCreate
+ PixelsPerInch = 90
+ HorzScrollBar.Page = 307
+ VertScrollBar.Page = 42
+ Left = 347
+ Height = 43
+ Top = 208
+ Width = 308
+ object Label1: TLabel
+ Caption = 'Source'
+ Color = clNone
+ ParentColor = False
+ Left = 60
+ Height = 13
+ Width = 41
+ end
+ object bRecord: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Caption = 'Record'
+ NumGlyphs = 0
+ OnClick = bRecordClick
+ TabOrder = 0
+ Left = 184
+ Height = 26
+ Top = 12
+ Width = 60
+ end
+ object cbRecordSource: TComboBox
+ MaxLength = 0
+ OnChange = cbRecordSourceChange
+ TabOrder = 1
+ Left = 60
+ Height = 21
+ Top = 16
+ Width = 116
+ end
+ object bStop: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Caption = 'Stop'
+ NumGlyphs = 0
+ OnClick = bStopClick
+ TabOrder = 2
+ Left = 248
+ Height = 26
+ Top = 12
+ Width = 56
+ end
+ object bOpen: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Caption = 'Open'
+ NumGlyphs = 0
+ OnClick = bOpenClick
+ TabOrder = 3
+ Left = 4
+ Height = 26
+ Top = 12
+ Width = 51
+ end
+ object FileOut1: TACSFileOut
+ Input = AudioIn1
+ left = 4
+ top = 268
+ end
+ object AudioIn1: TACSAudioIn
+ Driver = 'Wavemapper'
+ InBitsPerSample = 8
+ InChannels = 1
+ InSampleRate = 8000
+ left = 4
+ top = 236
+ end
+ object Mixer1: TACSMixer
+ MixerName = 'Realtek ALC655 rev 0'
+ left = 4
+ top = 204
+ end
+end
diff --git a/components/acs/Demos/linerecord/umain.lrs b/components/acs/Demos/linerecord/umain.lrs
new file mode 100644
index 000000000..689678211
--- /dev/null
+++ b/components/acs/Demos/linerecord/umain.lrs
@@ -0,0 +1,25 @@
+{ Dies ist eine automatisch erzeugte Lazarus-Ressourcendatei }
+
+LazarusResources.Add('TForm1','FORMDATA',[
+ 'TPF0'#6'TForm1'#5'Form1'#13'ActiveControl'#7#7'bRecord'#11'BorderStyle'#7#12
+ +'bsToolWindow'#7'Caption'#6#12'Audio Record'#12'ClientHeight'#2'+'#11'Client'
+ +'Width'#3'4'#1#8'OnCreate'#7#10'FormCreate'#13'PixelsPerInch'#2'Z'#18'HorzSc'
+ +'rollBar.Page'#3'3'#1#18'VertScrollBar.Page'#2'*'#4'Left'#3'['#1#6'Height'#2
+ +'+'#3'Top'#3#208#0#5'Width'#3'4'#1#0#6'TLabel'#6'Label1'#7'Caption'#6#6'Sour'
+ +'ce'#5'Color'#7#6'clNone'#11'ParentColor'#8#4'Left'#2'<'#6'Height'#2#13#5'Wi'
+ +'dth'#2')'#0#0#7'TBitBtn'#7'bRecord'#25'BorderSpacing.InnerBorder'#2#2#7'Cap'
+ +'tion'#6#6'Record'#9'NumGlyphs'#2#0#7'OnClick'#7#12'bRecordClick'#8'TabOrder'
+ +#2#0#4'Left'#3#184#0#6'Height'#2#26#3'Top'#2#12#5'Width'#2'<'#0#0#9'TComboBo'
+ +'x'#14'cbRecordSource'#9'MaxLength'#2#0#8'OnChange'#7#20'cbRecordSourceChang'
+ +'e'#8'TabOrder'#2#1#4'Left'#2'<'#6'Height'#2#21#3'Top'#2#16#5'Width'#2't'#0#0
+ +#7'TBitBtn'#5'bStop'#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#4'Stop'#9
+ +'NumGlyphs'#2#0#7'OnClick'#7#10'bStopClick'#8'TabOrder'#2#2#4'Left'#3#248#0#6
+ +'Height'#2#26#3'Top'#2#12#5'Width'#2'8'#0#0#7'TBitBtn'#5'bOpen'#25'BorderSpa'
+ +'cing.InnerBorder'#2#2#7'Caption'#6#4'Open'#9'NumGlyphs'#2#0#7'OnClick'#7#10
+ +'bOpenClick'#8'TabOrder'#2#3#4'Left'#2#4#6'Height'#2#26#3'Top'#2#12#5'Width'
+ +#2'3'#0#0#11'TACSFileOut'#8'FileOut1'#5'Input'#7#8'AudioIn1'#4'left'#2#4#3't'
+ +'op'#3#12#1#0#0#11'TACSAudioIn'#8'AudioIn1'#6'Driver'#6#10'Wavemapper'#15'In'
+ +'BitsPerSample'#2#8#10'InChannels'#2#1#12'InSampleRate'#3'@'#31#4'left'#2#4#3
+ +'top'#3#236#0#0#0#9'TACSMixer'#6'Mixer1'#9'MixerName'#6#20'Realtek ALC655 re'
+ +'v 0'#4'left'#2#4#3'top'#3#204#0#0#0#0
+]);
diff --git a/components/acs/Demos/linerecord/umain.pas b/components/acs/Demos/linerecord/umain.pas
new file mode 100644
index 000000000..0ae1160fa
--- /dev/null
+++ b/components/acs/Demos/linerecord/umain.pas
@@ -0,0 +1,82 @@
+unit umain;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
+ StdCtrls, acs_file, acs_audio, EditBtn,acs_classes,acs_mixer;
+
+type
+
+ { TForm1 }
+
+ TForm1 = class(TForm)
+ bOpen: TBitBtn;
+ Mixer1: TACSMixer;
+ AudioIn1: TACSAudioIn;
+ FileOut1: TACSFileOut;
+ bRecord: TBitBtn;
+ bStop: TBitBtn;
+ cbRecordSource: TComboBox;
+ Label1: TLabel;
+ procedure FormCreate(Sender: TObject);
+ procedure bOpenClick(Sender: TObject);
+ procedure bRecordClick(Sender: TObject);
+ procedure bStopClick(Sender: TObject);
+ procedure cbRecordSourceChange(Sender: TObject);
+ private
+ { private declarations }
+ public
+ { public declarations }
+ end;
+
+var
+ Form1: TForm1;
+
+implementation
+
+{ TForm1 }
+
+procedure TForm1.FormCreate(Sender: TObject);
+var
+ i : Integer;
+begin
+ for i := 0 to Mixer1.Channelcount-1 do
+ if Mixer1.IsRecordable(i) then
+ cbRecordSource.Items.Add(Mixer1.ChannelName[i]);
+ cbRecordSource.Text := Mixer1.ChannelName[Mixer1.RecordSource];
+end;
+
+procedure TForm1.bOpenClick(Sender: TObject);
+begin
+ FileOut1.Open;
+ if FileExists(FileOut1.FileName) then
+ FileOut1.FileMode := foAppend;
+end;
+
+procedure TForm1.bRecordClick(Sender: TObject);
+begin
+ FileOut1.Run;
+end;
+
+procedure TForm1.bStopClick(Sender: TObject);
+begin
+ FileOut1.Stop;
+end;
+
+procedure TForm1.cbRecordSourceChange(Sender: TObject);
+var
+ i : Integer;
+begin
+ for i := 0 to Mixer1.Channelcount-1 do
+ if Mixer1.ChannelName[i] = cbRecordSource.Text then
+ Mixer1.RecordSource := i;
+end;
+
+initialization
+ {$I umain.lrs}
+
+end.
+
diff --git a/components/acs/Demos/player/player.cfg b/components/acs/Demos/player/player.cfg
new file mode 100644
index 000000000..7af3a5678
--- /dev/null
+++ b/components/acs/Demos/player/player.cfg
@@ -0,0 +1,35 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-LE"c:\programme\borland\delphi6\Projects\Bpl"
+-LN"c:\programme\borland\delphi6\Projects\Bpl"
diff --git a/components/acs/Demos/player/player.dof b/components/acs/Demos/player/player.dof
new file mode 100644
index 000000000..61e3c5d8b
--- /dev/null
+++ b/components/acs/Demos/player/player.dof
@@ -0,0 +1,87 @@
+[FileVersion]
+Version=6.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;qrpt;teeui;teedb;tee;dss;teeqr;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;dbexpress;dbxcds;indy;dclaxserver;visualclx;visualdbclx;ACS
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1031
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
diff --git a/components/acs/Demos/player/player.dpr b/components/acs/Demos/player/player.dpr
new file mode 100644
index 000000000..ffc52339f
--- /dev/null
+++ b/components/acs/Demos/player/player.dpr
@@ -0,0 +1,17 @@
+program player;
+
+uses
+ Forms,
+ uMain in 'umain.pas' {fMain},
+ uPlaylist in 'uplaylist.pas' {fPlaylist},
+ uvis in 'uvis.pas' {fVizu};
+
+{$R *.res}
+
+begin
+ Application.Initialize;
+ Application.CreateForm(TfMain, fMain);
+ Application.CreateForm(TfPlaylist, fPlaylist);
+ Application.CreateForm(TfVizu, fVizu);
+ Application.Run;
+end.
diff --git a/components/acs/Demos/player/player.dsk b/components/acs/Demos/player/player.dsk
new file mode 100644
index 000000000..7836001eb
--- /dev/null
+++ b/components/acs/Demos/player/player.dsk
@@ -0,0 +1,259 @@
+[Closed Files]
+File_0=SourceModule,'d:\lkomponenten\acs\src\fileformats\ACS_DSFiles.pas',0,1,1,1,1,0,0
+File_1=SourceModule,'D:\LKomponenten\acs\Src\classes\acs_classes.pas',0,1,1,1,1,0,0
+File_2=SourceModule,'d:\lkomponenten\acs\src\fileformats\ACS_Vorbis.pas',0,1,1,1,1,0,0
+File_3=SourceModule,'D:\LKomponenten\acs\Demos\player\uplaylist.pas',0,1,46,1,65,0,0
+File_4=SourceModule,'d:\lkomponenten\acs\src\classes\ACS_Audio.pas',0,1,1,1,1,0,0
+File_5=SourceModule,'C:\Programme\Borland\Delphi6\Projects\Unit1.pas',0,1,26,1,28,0,0
+File_6=SourceModule,'D:\LKomponenten\acs\Demos\player\uvis.lrs',0,1,1,17,3,0,0
+File_7=SourceModule,'D:\lkomponenten\acs\src\classes\ACS_Types.pas',0,1,20,1,33,0,0
+
+[Modules]
+Module0=D:\LKomponenten\acs\Demos\player\uvis.pas
+Module1=D:\LKomponenten\acs\Demos\player\umain.pas
+Module2=D:\LKomponenten\acs\Demos\player\player.dpr
+Module3=d:\lkomponenten\acs\src\drivers\windows\acs_audio.inc
+Count=4
+EditWindowCount=1
+
+[D:\LKomponenten\acs\Demos\player\uvis.pas]
+ModuleType=SourceModule
+FormState=1
+FormOnTop=0
+
+[D:\LKomponenten\acs\Demos\player\umain.pas]
+ModuleType=SourceModule
+FormState=1
+FormOnTop=0
+
+[D:\LKomponenten\acs\Demos\player\player.dpr]
+ModuleType=SourceModule
+FormState=0
+FormOnTop=0
+
+[d:\lkomponenten\acs\src\drivers\windows\acs_audio.inc]
+ModuleType=SourceModule
+FormState=0
+FormOnTop=0
+
+[C:\Programme\Borland\Delphi6\Projects\ProjectGroup1.bpg]
+FormState=0
+FormOnTop=0
+
+[EditWindow0]
+ViewCount=4
+CurrentView=0
+View0=0
+View1=1
+View2=2
+View3=3
+CodeExplorer=CodeExplorer@EditWindow0
+MessageView=MessageView@EditWindow0
+Create=1
+Visible=1
+State=0
+Left=203
+Top=102
+Width=821
+Height=632
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=813
+ClientHeight=605
+LeftPanelSize=140
+LeftPanelClients=CodeExplorer@EditWindow0
+LeftPanelData=000004000000000000000000000000000000000000000000000100000000000000000C000000436F64654578706C6F726572FFFFFFFF
+RightPanelSize=0
+BottomPanelSize=0
+BottomPanelClients=MessageView@EditWindow0
+BottomPanelData=00000400010000000B0000004D65737361676556696577000000000000000000000000000000000001000000000000000000000000FFFFFFFF
+
+[View0]
+Module=D:\LKomponenten\acs\Demos\player\uvis.pas
+CursorX=1
+CursorY=27
+TopLine=1
+LeftCol=1
+
+[View1]
+Module=D:\LKomponenten\acs\Demos\player\umain.pas
+CursorX=1
+CursorY=174
+TopLine=174
+LeftCol=1
+
+[View2]
+Module=d:\lkomponenten\acs\src\drivers\windows\acs_audio.inc
+CursorX=1
+CursorY=146
+TopLine=131
+LeftCol=1
+
+[View3]
+Module=D:\LKomponenten\acs\Demos\player\player.dpr
+CursorX=1
+CursorY=11
+TopLine=1
+LeftCol=1
+
+[Watches]
+Count=0
+
+[Breakpoints]
+Count=0
+
+[AddressBreakpoints]
+Count=0
+
+[Main Window]
+Create=1
+Visible=1
+State=2
+Left=0
+Top=0
+Width=1024
+Height=105
+MaxLeft=-1
+MaxTop=-1
+MaxWidth=1024
+MaxHeight=105
+ClientWidth=1016
+ClientHeight=78
+
+[ProjectManager]
+Create=1
+Visible=1
+State=0
+Left=0
+Top=372
+Width=353
+Height=170
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=353
+ClientHeight=170
+TBDockHeight=303
+LRDockWidth=353
+Dockable=1
+
+[CPUWindow]
+Create=1
+Visible=0
+State=0
+Left=245
+Top=207
+Width=533
+Height=353
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=525
+ClientHeight=326
+DumpPane=79
+DisassemblyPane=187
+RegisterPane=231
+FlagPane=64
+
+[AlignmentPalette]
+Create=1
+Visible=0
+State=0
+Left=200
+Top=107
+Width=156
+Height=82
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=150
+ClientHeight=60
+
+[PropertyInspector]
+Create=1
+Visible=1
+State=0
+Left=0
+Top=359
+Width=190
+Height=381
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=182
+ClientHeight=357
+TBDockHeight=381
+LRDockWidth=190
+Dockable=1
+SplitPos=85
+ArrangeBy=Name
+SelectedItem=Caption
+ExpandedItems=
+HiddenCategories=
+
+[ObjectTree]
+Create=1
+Visible=1
+State=0
+Left=0
+Top=12
+Width=353
+Height=344
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=353
+ClientHeight=344
+TBDockHeight=252
+LRDockWidth=353
+Dockable=1
+
+[CodeExplorer@EditWindow0]
+Create=1
+Visible=1
+State=0
+Left=0
+Top=12
+Width=140
+Height=593
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=140
+ClientHeight=593
+TBDockHeight=305
+LRDockWidth=140
+Dockable=1
+
+[MessageView@EditWindow0]
+Create=1
+Visible=0
+State=0
+Left=12
+Top=0
+Width=801
+Height=52
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=801
+ClientHeight=52
+TBDockHeight=52
+LRDockWidth=443
+Dockable=1
+
+[DockHosts]
+DockHostCount=1
+
+[DockSite0]
+DockSiteType=0
+Create=1
+Visible=1
+State=0
+Left=0
+Top=106
+Width=361
+Height=566
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=353
+ClientHeight=542
+TBDockHeight=430
+LRDockWidth=336
+Dockable=1
+DockClients=ObjectTree,ProjectManager
+DockSiteData=00000400000000001E020000000000000161010000000000000100000000680100000E0000004F626A656374547265655669657701000000001E0200001200000050726F6A6563744D616E61676572466F726DFFFFFFFF
+
diff --git a/components/acs/Demos/player/player.lpi b/components/acs/Demos/player/player.lpi
new file mode 100644
index 000000000..55151c631
--- /dev/null
+++ b/components/acs/Demos/player/player.lpi
@@ -0,0 +1,781 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/acs/Demos/player/umain.dfm b/components/acs/Demos/player/umain.dfm
new file mode 100644
index 000000000..2598e2bc2
--- /dev/null
+++ b/components/acs/Demos/player/umain.dfm
@@ -0,0 +1,217 @@
+object fMain: TfMain
+ Left = 271
+ Top = 150
+ BorderStyle = bsToolWindow
+ Caption = 'Audioplayer'
+ ClientHeight = 99
+ ClientWidth = 204
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ OldCreateOrder = True
+ OnClose = FormClose
+ PixelsPerInch = 96
+ TextHeight = 13
+ object Panel1: TPanel
+ Left = 4
+ Top = 0
+ Width = 192
+ Height = 64
+ BevelOuter = bvLowered
+ FullRepaint = False
+ TabOrder = 0
+ object lTime: TLabel
+ Left = 1
+ Top = 24
+ Width = 108
+ Height = 29
+ AutoSize = False
+ Caption = '00:00:00'
+ Color = clNone
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -25
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ ParentColor = False
+ ParentFont = False
+ Transparent = True
+ end
+ object lFilename: TLabel
+ Left = 1
+ Top = 1
+ Width = 190
+ Height = 13
+ Align = alTop
+ Caption = 'File:'
+ Color = clNone
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -9
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ ParentColor = False
+ ParentFont = False
+ Transparent = True
+ WordWrap = True
+ end
+ object lTime1: TLabel
+ Left = 1
+ Top = 21
+ Width = 57
+ Height = 13
+ Caption = 'Time remain'
+ Color = clNone
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -9
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ ParentColor = False
+ ParentFont = False
+ Transparent = True
+ end
+ object lTime2: TLabel
+ Left = 116
+ Top = 21
+ Width = 14
+ Height = 13
+ Caption = 'left'
+ Color = clNone
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -9
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ ParentColor = False
+ ParentFont = False
+ Transparent = True
+ end
+ object lLeft: TLabel
+ Left = 116
+ Top = 32
+ Width = 42
+ Height = 13
+ Caption = '00:00:00'
+ Color = clNone
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -12
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ ParentColor = False
+ ParentFont = False
+ Transparent = True
+ end
+ object Progress: TProgressBar
+ Left = 1
+ Top = 55
+ Width = 190
+ Height = 8
+ Align = alBottom
+ Min = 0
+ Max = 1000
+ Smooth = True
+ TabOrder = 0
+ end
+ end
+ object btOpen: TBitBtn
+ Left = 4
+ Top = 67
+ Width = 28
+ Height = 26
+ TabOrder = 1
+ OnClick = OpenClick
+ Layout = blGlyphTop
+ end
+ object btRew: TBitBtn
+ Left = 32
+ Top = 67
+ Width = 28
+ Height = 26
+ TabOrder = 2
+ OnClick = btRewClick
+ end
+ object btFfw: TBitBtn
+ Left = 60
+ Top = 67
+ Width = 28
+ Height = 26
+ TabOrder = 3
+ OnClick = btFfwClick
+ Layout = blGlyphRight
+ end
+ object btPlay: TBitBtn
+ Left = 88
+ Top = 67
+ Width = 28
+ Height = 30
+ TabOrder = 4
+ OnClick = PlayClick
+ end
+ object btStop: TBitBtn
+ Left = 144
+ Top = 67
+ Width = 28
+ Height = 30
+ TabOrder = 5
+ OnClick = StopClick
+ end
+ object btPause: TBitBtn
+ Left = 116
+ Top = 67
+ Width = 28
+ Height = 30
+ TabOrder = 6
+ OnClick = Pauseclick
+ end
+ object btPlaylist: TBitBtn
+ Left = 174
+ Top = 67
+ Width = 22
+ Height = 17
+ TabOrder = 7
+ OnClick = btPlaylistClick
+ end
+ object btVizu: TBitBtn
+ Left = 174
+ Top = 84
+ Width = 22
+ Height = 13
+ Caption = 'Vis'
+ TabOrder = 8
+ OnClick = btVizuClick
+ end
+ object FileIn1: TACSFileIn
+ EndSample = -1
+ Loop = False
+ StartSample = 0
+ Left = 72
+ end
+ object PlayTimer: TTimer
+ Enabled = False
+ Interval = 100
+ OnTimer = Timer1Timer
+ Left = 72
+ Top = 32
+ end
+ object AudioOut1: TACSAudioOut
+ Driver = 'Wavemapper'
+ Device = 0
+ Volume = 0
+ Input = SoundIndicator
+ Delay = 6
+ SuspendWhenIdle = True
+ OnDone = AudioOut1Done
+ OnThreadException = AudioOut1ThreadException
+ Left = 40
+ Top = 32
+ end
+ object SoundIndicator: TACSSoundIndicator
+ Input = FileIn1
+ Left = 40
+ end
+end
diff --git a/components/acs/Demos/player/umain.lfm b/components/acs/Demos/player/umain.lfm
new file mode 100644
index 000000000..23ceebb84
--- /dev/null
+++ b/components/acs/Demos/player/umain.lfm
@@ -0,0 +1,576 @@
+object fMain: TfMain
+ ActiveControl = btOpen
+ BorderStyle = bsToolWindow
+ Caption = 'Audioplayer'
+ ClientHeight = 99
+ ClientWidth = 204
+ OnClose = FormClose
+ OnCreate = FormCreate
+ PixelsPerInch = 96
+ HorzScrollBar.Page = 203
+ VertScrollBar.Page = 98
+ Left = 271
+ Height = 99
+ Top = 150
+ Width = 204
+ object Panel1: TPanel
+ BevelOuter = bvLowered
+ ClientHeight = 64
+ ClientWidth = 192
+ FullRepaint = False
+ TabOrder = 0
+ Left = 4
+ Height = 64
+ Width = 192
+ object lTime: TLabel
+ AutoSize = False
+ Caption = '00:00:00'
+ Color = clNone
+ Font.Height = -25
+ ParentColor = False
+ Left = 1
+ Height = 29
+ Top = 24
+ Width = 108
+ end
+ object lFilename: TLabel
+ Align = alTop
+ Caption = 'File:'
+ Color = clNone
+ Font.Height = -9
+ ParentColor = False
+ WordWrap = True
+ Left = 1
+ Height = 12
+ Top = 1
+ Width = 190
+ end
+ object lTime1: TLabel
+ Caption = 'Time remain'
+ Color = clNone
+ Font.Height = -9
+ ParentColor = False
+ OnClick = lTime1Click
+ Left = 1
+ Height = 12
+ Top = 20
+ Width = 53
+ end
+ object lTime2: TLabel
+ Caption = 'left'
+ Color = clNone
+ Font.Height = -9
+ ParentColor = False
+ Left = 116
+ Height = 12
+ Top = 20
+ Width = 14
+ end
+ object lLeft: TLabel
+ Caption = '00:00:00'
+ Color = clNone
+ Font.Height = -12
+ ParentColor = False
+ Left = 116
+ Height = 15
+ Top = 28
+ Width = 51
+ end
+ object Progress: TProgressBar
+ Align = alBottom
+ Max = 1000
+ Smooth = True
+ Left = 1
+ Height = 8
+ Top = 55
+ Width = 190
+ end
+ end
+ object btOpen: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 910900002F2A2058504D202A2F0D0A7374617469632063686172202A2062746E
+ 5F6F70656E66696C655F78706D5B5D203D207B0D0A2231382031382039372032
+ 222C0D0A2220200963204E6F6E65222C0D0A222E200963202330303030303022
+ 2C0D0A222B2009632023344533333142222C0D0A224020096320234535413536
+ 36222C0D0A22232009632023464544333941222C0D0A22242009632023464543
+ 353835222C0D0A22252009632023464443353837222C0D0A2226200963202346
+ 4543323832222C0D0A222A2009632023463841433632222C0D0A223D20096320
+ 23464543383841222C0D0A222D2009632023353335303444222C0D0A223B2009
+ 632023353535323446222C0D0A223E2009632023354335413537222C0D0A222C
+ 2009632023353435313445222C0D0A22272009632023353635333530222C0D0A
+ 22292009632023433438363445222C0D0A22212009632023353234463443222C
+ 0D0A227E2009632023463546354635222C0D0A227B2009632023454345434543
+ 222C0D0A225D2009632023453445344534222C0D0A225E200963202344434443
+ 4443222C0D0A222F2009632023443444344434222C0D0A222820096320234342
+ 43424342222C0D0A225F2009632023433443344334222C0D0A223A2009632023
+ 424342434243222C0D0A223C2009632023423542354235222C0D0A225B200963
+ 2023423342334233222C0D0A227D2009632023333033303330222C0D0A227C20
+ 09632023344133313139222C0D0A22312009632023444244424442222C0D0A22
+ 322009632023444644464445222C0D0A22332009632023453845384537222C0D
+ 0A22342009632023453645364534222C0D0A2235200963202344324432443122
+ 2C0D0A22362009632023433743374336222C0D0A223720096320234241424142
+ 39222C0D0A22382009632023414441444143222C0D0A22392009632023413041
+ 303946222C0D0A22302009632023393439343933222C0D0A2261200963202334
+ 3934393438222C0D0A22622009632023423737443434222C0D0A226320096320
+ 23353335313445222C0D0A22642009632023444144414441222C0D0A22652009
+ 632023444244424441222C0D0A22662009632023453145314530222C0D0A2267
+ 2009632023444444444443222C0D0A22682009632023443644364435222C0D0A
+ 22692009632023434243424341222C0D0A226A2009632023433143314330222C
+ 0D0A226B2009632023423642364235222C0D0A226C2009632023413941394138
+ 222C0D0A226D2009632023363836383637222C0D0A226E200963202332323232
+ 3231222C0D0A226F2009632023343933303138222C0D0A227020096320234344
+ 43444344222C0D0A22712009632023434143414339222C0D0A22722009632023
+ 443544354434222C0D0A22732009632023443244324430222C0D0A2274200963
+ 2023434343434342222C0D0A22752009632023433243324331222C0D0A227620
+ 09632023423942394238222C0D0A22772009632023414641464145222C0D0A22
+ 782009632023413241324131222C0D0A22792009632023393539353934222C0D
+ 0A227A2009632023434543454345222C0D0A2241200963202342454245424322
+ 2C0D0A22422009632023433443344332222C0D0A224320096320234336433643
+ 35222C0D0A22442009632023433343334332222C0D0A22452009632023424642
+ 464245222C0D0A22462009632023414541454144222C0D0A2247200963202341
+ 3541354134222C0D0A22482009632023394539453944222C0D0A224920096320
+ 23364636463645222C0D0A224A2009632023313231323132222C0D0A224B2009
+ 632023424442444244222C0D0A224C2009632023413641364135222C0D0A224D
+ 2009632023414141414138222C0D0A224E2009632023414441444142222C0D0A
+ 224F2009632023414541454143222C0D0A22502009632023414241424141222C
+ 0D0A22512009632023413741374136222C0D0A22522009632023413141314130
+ 222C0D0A22532009632023394139413939222C0D0A2254200963202339343934
+ 3932222C0D0A22552009632023384438443842222C0D0A225620096320233233
+ 32333233222C0D0A22572009632023344134413441222C0D0A22582009632023
+ 344134413439222C0D0A22592009632023344334433442222C0D0A225A200963
+ 2023344334433443222C0D0A22602009632023344234423441222C0D0A22202E
+ 09632023343634363436222C0D0A222E2E09632023343334333433222C0D0A22
+ 2B2E09632023343134313430222C0D0A22402E09632023333433343333222C0D
+ 0A22232E09632023314631463145222C0D0A222020202020202020202020202E
+ 202E202E202E2020202020202020202020202020202020222C0D0A2220202020
+ 2020202020202E202E2020202E202E202E202E2020202E202020202020202020
+ 222C0D0A2220202020202020202E20202020202020202020202E202E202E202E
+ 202020202020202020222C0D0A22202020202020202020202020202020202020
+ 202020202E202E202E202020202020202020222C0D0A22202020202020202020
+ 20202020202020202020202E202E202E202E202020202020202020222C0D0A22
+ 20202B202B202B202B2020202020202020202020202020202020202020202020
+ 20202020222C0D0A222B2040202320242040202B202B202B202B202B202B202B
+ 20202020202020202020202020222C0D0A222B202320252026202A202A202A20
+ 2A202A202A202A202A202E2020202020202020202020222C0D0A222B203D2026
+ 202B202D202D203B203E202C202C20272027202C202E202E202E202020202022
+ 2C0D0A222B202620292021207E207E207B205D205E202F2028205F203A203C20
+ 5B207D2020202020222C0D0A222B2026207C2031203220332034203220352036
+ 2037203820392030206120202020202020222C0D0A222B206220632064206520
+ 66206720682069206A206B206C2039206D206E20202020202020222C0D0A222B
+ 206F207020712072207220732074207520762077207820792061202020202020
+ 202020222C0D0A222B2027207A20412042204320442045206B20462047204820
+ 49204A202020202020202020222C0D0A222B204B204C204D204E204F20502051
+ 205220532054205520612020202020202020202020222C0D0A22562057205820
+ 59205A20592060206120202E2E2E2B2E402E232E20202020202020202020222C
+ 0D0A222020202020202020202020202020202020202020202020202020202020
+ 20202020202020222C0D0A222020202020202020202020202020202020202020
+ 20202020202020202020202020202020227D3B0D0A
+ }
+ Layout = blGlyphTop
+ NumGlyphs = 0
+ OnClick = OpenClick
+ TabOrder = 1
+ Left = 4
+ Height = 26
+ Top = 67
+ Width = 28
+ end
+ object btRew: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 970300002F2A2058504D202A2F0D0A7374617469632063686172202A5069786D
+ 61705B5D203D207B0D0A2231362031362031362032222C0D0A22303020632023
+ 303830383130222C0D0A22303120632023313831383231222C0D0A2230322063
+ 20677261793136222C0D0A22303320632023443644364345222C0D0A22303420
+ 632067726179313030222C0D0A22303520632067726179313030222C0D0A2230
+ 3620632067726179313030222C0D0A22303720632067726179313030222C0D0A
+ 22303820632067726179313030222C0D0A22303920632067726179313030222C
+ 0D0A22313020632067726179313030222C0D0A22313120632067726179313030
+ 222C0D0A22313220632067726179313030222C0D0A2231332063206772617931
+ 3030222C0D0A22313420632067726179313030222C0D0A223135206320677261
+ 79313030222C0D0A223033303330333033303330333033303330333033303330
+ 333033303330333033222C0D0A22303330333033303330333033303330333033
+ 3033303330333033303330333033222C0D0A2230333033303330333033303330
+ 33303330333033303330333033303330333033222C0D0A223033303330333030
+ 303030303033303330333033303330303030303330333033222C0D0A22303330
+ 3330333030303130323033303330333033303030313032303330333033222C0D
+ 0A22303330333033303030313032303330333033303030313031303230333033
+ 3033222C0D0A2230333033303330303031303230333033303030313031303130
+ 32303330333033222C0D0A223033303330333030303130323033303030313031
+ 303130313032303330333033222C0D0A22303330333033303030313032303330
+ 3230313031303130313032303330333033222C0D0A2230333033303330303031
+ 30323033303330323031303130313032303330333033222C0D0A223033303330
+ 333030303130323033303330333032303130313032303330333033222C0D0A22
+ 3033303330333030303130323033303330333033303230313032303330333033
+ 222C0D0A22303330333033303230323032303330333033303330333032303230
+ 3330333033222C0D0A2230333033303330333033303330333033303330333033
+ 30333033303330333033222C0D0A223033303330333033303330333033303330
+ 333033303330333033303330333033222C0D0A22303330333033303330333033
+ 3033303330333033303330333033303330333033220D0A7D3B0D0A
+ }
+ NumGlyphs = 0
+ OnClick = btRewClick
+ TabOrder = 2
+ Left = 32
+ Height = 26
+ Top = 67
+ Width = 28
+ end
+ object btFfw: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 970300002F2A2058504D202A2F0D0A7374617469632063686172202A5069786D
+ 61705B5D203D207B0D0A2231362031362031362032222C0D0A22303020632023
+ 303830383130222C0D0A22303120632023313831383231222C0D0A2230322063
+ 20677261793136222C0D0A22303320632023443644364345222C0D0A22303420
+ 632067726179313030222C0D0A22303520632067726179313030222C0D0A2230
+ 3620632067726179313030222C0D0A22303720632067726179313030222C0D0A
+ 22303820632067726179313030222C0D0A22303920632067726179313030222C
+ 0D0A22313020632067726179313030222C0D0A22313120632067726179313030
+ 222C0D0A22313220632067726179313030222C0D0A2231332063206772617931
+ 3030222C0D0A22313420632067726179313030222C0D0A223135206320677261
+ 79313030222C0D0A223033303330333033303330333033303330333033303330
+ 333033303330333033222C0D0A22303330333033303330333033303330333033
+ 3033303330333033303330333033222C0D0A2230333033303330333033303330
+ 33303330333033303330333033303330333033222C0D0A223033303330333030
+ 303030333033303330333033303030303030303330333033222C0D0A22303330
+ 3330333032303130303033303330333033303230313030303330333033222C0D
+ 0A22303330333033303230313031303030333033303330323031303030333033
+ 3033222C0D0A2230333033303330323031303130313030303330333032303130
+ 30303330333033222C0D0A223033303330333032303130313031303130303033
+ 303230313030303330333033222C0D0A22303330333033303230313031303130
+ 3130323033303230313030303330333033222C0D0A2230333033303330323031
+ 30313031303230333033303230313030303330333033222C0D0A223033303330
+ 333032303130313032303330333033303230313030303330333033222C0D0A22
+ 3033303330333032303130323033303330333033303230313030303330333033
+ 222C0D0A22303330333033303230323033303330333033303330323032303230
+ 3330333033222C0D0A2230333033303330333033303330333033303330333033
+ 30333033303330333033222C0D0A223033303330333033303330333033303330
+ 333033303330333033303330333033222C0D0A22303330333033303330333033
+ 3033303330333033303330333033303330333033220D0A7D3B0D0A
+ }
+ Layout = blGlyphRight
+ NumGlyphs = 0
+ OnClick = btFfwClick
+ TabOrder = 3
+ Left = 60
+ Height = 26
+ Top = 67
+ Width = 28
+ end
+ object btPlay: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 911300002F2A2058504D202A2F0D0A7374617469632063686172202A5069786D
+ 61705B5D203D207B0D0A223136203136203235362033222C0D0A223030302063
+ 2023304330463132222C0D0A2230303120632023314231443230222C0D0A2230
+ 303220632023324132443244222C0D0A2230303320632023443444304338222C
+ 0D0A22303034206320626C61636B222C0D0A22303035206320626C61636B222C
+ 0D0A22303036206320626C61636B222C0D0A22303037206320626C61636B222C
+ 0D0A22303038206320626C61636B222C0D0A22303039206320626C61636B222C
+ 0D0A22303130206320626C61636B222C0D0A22303131206320626C61636B222C
+ 0D0A22303132206320626C61636B222C0D0A22303133206320626C61636B222C
+ 0D0A22303134206320626C61636B222C0D0A22303135206320626C61636B222C
+ 0D0A22303136206320626C61636B222C0D0A22303137206320626C61636B222C
+ 0D0A22303138206320626C61636B222C0D0A22303139206320626C61636B222C
+ 0D0A22303230206320626C61636B222C0D0A22303231206320626C61636B222C
+ 0D0A22303232206320626C61636B222C0D0A22303233206320626C61636B222C
+ 0D0A22303234206320626C61636B222C0D0A22303235206320626C61636B222C
+ 0D0A22303236206320626C61636B222C0D0A22303237206320626C61636B222C
+ 0D0A22303238206320626C61636B222C0D0A22303239206320626C61636B222C
+ 0D0A22303330206320626C61636B222C0D0A22303331206320626C61636B222C
+ 0D0A22303332206320626C61636B222C0D0A22303333206320626C61636B222C
+ 0D0A22303334206320626C61636B222C0D0A22303335206320626C61636B222C
+ 0D0A22303336206320626C61636B222C0D0A22303337206320626C61636B222C
+ 0D0A22303338206320626C61636B222C0D0A22303339206320626C61636B222C
+ 0D0A22303430206320626C61636B222C0D0A22303431206320626C61636B222C
+ 0D0A22303432206320626C61636B222C0D0A22303433206320626C61636B222C
+ 0D0A22303434206320626C61636B222C0D0A22303435206320626C61636B222C
+ 0D0A22303436206320626C61636B222C0D0A22303437206320626C61636B222C
+ 0D0A22303438206320626C61636B222C0D0A22303439206320626C61636B222C
+ 0D0A22303530206320626C61636B222C0D0A22303531206320626C61636B222C
+ 0D0A22303532206320626C61636B222C0D0A22303533206320626C61636B222C
+ 0D0A22303534206320626C61636B222C0D0A22303535206320626C61636B222C
+ 0D0A22303536206320626C61636B222C0D0A22303537206320626C61636B222C
+ 0D0A22303538206320626C61636B222C0D0A22303539206320626C61636B222C
+ 0D0A22303630206320626C61636B222C0D0A22303631206320626C61636B222C
+ 0D0A22303632206320626C61636B222C0D0A22303633206320626C61636B222C
+ 0D0A22303634206320626C61636B222C0D0A22303635206320626C61636B222C
+ 0D0A22303636206320626C61636B222C0D0A22303637206320626C61636B222C
+ 0D0A22303638206320626C61636B222C0D0A22303639206320626C61636B222C
+ 0D0A22303730206320626C61636B222C0D0A22303731206320626C61636B222C
+ 0D0A22303732206320626C61636B222C0D0A22303733206320626C61636B222C
+ 0D0A22303734206320626C61636B222C0D0A22303735206320626C61636B222C
+ 0D0A22303736206320626C61636B222C0D0A22303737206320626C61636B222C
+ 0D0A22303738206320626C61636B222C0D0A22303739206320626C61636B222C
+ 0D0A22303830206320626C61636B222C0D0A22303831206320626C61636B222C
+ 0D0A22303832206320626C61636B222C0D0A22303833206320626C61636B222C
+ 0D0A22303834206320626C61636B222C0D0A22303835206320626C61636B222C
+ 0D0A22303836206320626C61636B222C0D0A22303837206320626C61636B222C
+ 0D0A22303838206320626C61636B222C0D0A22303839206320626C61636B222C
+ 0D0A22303930206320626C61636B222C0D0A22303931206320626C61636B222C
+ 0D0A22303932206320626C61636B222C0D0A22303933206320626C61636B222C
+ 0D0A22303934206320626C61636B222C0D0A22303935206320626C61636B222C
+ 0D0A22303936206320626C61636B222C0D0A22303937206320626C61636B222C
+ 0D0A22303938206320626C61636B222C0D0A22303939206320626C61636B222C
+ 0D0A22313030206320626C61636B222C0D0A22313031206320626C61636B222C
+ 0D0A22313032206320626C61636B222C0D0A22313033206320626C61636B222C
+ 0D0A22313034206320626C61636B222C0D0A22313035206320626C61636B222C
+ 0D0A22313036206320626C61636B222C0D0A22313037206320626C61636B222C
+ 0D0A22313038206320626C61636B222C0D0A22313039206320626C61636B222C
+ 0D0A22313130206320626C61636B222C0D0A22313131206320626C61636B222C
+ 0D0A22313132206320626C61636B222C0D0A22313133206320626C61636B222C
+ 0D0A22313134206320626C61636B222C0D0A22313135206320626C61636B222C
+ 0D0A22313136206320626C61636B222C0D0A22313137206320626C61636B222C
+ 0D0A22313138206320626C61636B222C0D0A22313139206320626C61636B222C
+ 0D0A22313230206320626C61636B222C0D0A22313231206320626C61636B222C
+ 0D0A22313232206320626C61636B222C0D0A22313233206320626C61636B222C
+ 0D0A22313234206320626C61636B222C0D0A22313235206320626C61636B222C
+ 0D0A22313236206320626C61636B222C0D0A22313237206320626C61636B222C
+ 0D0A22313238206320626C61636B222C0D0A22313239206320626C61636B222C
+ 0D0A22313330206320626C61636B222C0D0A22313331206320626C61636B222C
+ 0D0A22313332206320626C61636B222C0D0A22313333206320626C61636B222C
+ 0D0A22313334206320626C61636B222C0D0A22313335206320626C61636B222C
+ 0D0A22313336206320626C61636B222C0D0A22313337206320626C61636B222C
+ 0D0A22313338206320626C61636B222C0D0A22313339206320626C61636B222C
+ 0D0A22313430206320626C61636B222C0D0A22313431206320626C61636B222C
+ 0D0A22313432206320626C61636B222C0D0A22313433206320626C61636B222C
+ 0D0A22313434206320626C61636B222C0D0A22313435206320626C61636B222C
+ 0D0A22313436206320626C61636B222C0D0A22313437206320626C61636B222C
+ 0D0A22313438206320626C61636B222C0D0A22313439206320626C61636B222C
+ 0D0A22313530206320626C61636B222C0D0A22313531206320626C61636B222C
+ 0D0A22313532206320626C61636B222C0D0A22313533206320626C61636B222C
+ 0D0A22313534206320626C61636B222C0D0A22313535206320626C61636B222C
+ 0D0A22313536206320626C61636B222C0D0A22313537206320626C61636B222C
+ 0D0A22313538206320626C61636B222C0D0A22313539206320626C61636B222C
+ 0D0A22313630206320626C61636B222C0D0A22313631206320626C61636B222C
+ 0D0A22313632206320626C61636B222C0D0A22313633206320626C61636B222C
+ 0D0A22313634206320626C61636B222C0D0A22313635206320626C61636B222C
+ 0D0A22313636206320626C61636B222C0D0A22313637206320626C61636B222C
+ 0D0A22313638206320626C61636B222C0D0A22313639206320626C61636B222C
+ 0D0A22313730206320626C61636B222C0D0A22313731206320626C61636B222C
+ 0D0A22313732206320626C61636B222C0D0A22313733206320626C61636B222C
+ 0D0A22313734206320626C61636B222C0D0A22313735206320626C61636B222C
+ 0D0A22313736206320626C61636B222C0D0A22313737206320626C61636B222C
+ 0D0A22313738206320626C61636B222C0D0A22313739206320626C61636B222C
+ 0D0A22313830206320626C61636B222C0D0A22313831206320626C61636B222C
+ 0D0A22313832206320626C61636B222C0D0A22313833206320626C61636B222C
+ 0D0A22313834206320626C61636B222C0D0A22313835206320626C61636B222C
+ 0D0A22313836206320626C61636B222C0D0A22313837206320626C61636B222C
+ 0D0A22313838206320626C61636B222C0D0A22313839206320626C61636B222C
+ 0D0A22313930206320626C61636B222C0D0A22313931206320626C61636B222C
+ 0D0A22313932206320626C61636B222C0D0A22313933206320626C61636B222C
+ 0D0A22313934206320626C61636B222C0D0A22313935206320626C61636B222C
+ 0D0A22313936206320626C61636B222C0D0A22313937206320626C61636B222C
+ 0D0A22313938206320626C61636B222C0D0A22313939206320626C61636B222C
+ 0D0A22323030206320626C61636B222C0D0A22323031206320626C61636B222C
+ 0D0A22323032206320626C61636B222C0D0A22323033206320626C61636B222C
+ 0D0A22323034206320626C61636B222C0D0A22323035206320626C61636B222C
+ 0D0A22323036206320626C61636B222C0D0A22323037206320626C61636B222C
+ 0D0A22323038206320626C61636B222C0D0A22323039206320626C61636B222C
+ 0D0A22323130206320626C61636B222C0D0A22323131206320626C61636B222C
+ 0D0A22323132206320626C61636B222C0D0A22323133206320626C61636B222C
+ 0D0A22323134206320626C61636B222C0D0A22323135206320626C61636B222C
+ 0D0A22323136206320626C61636B222C0D0A22323137206320626C61636B222C
+ 0D0A22323138206320626C61636B222C0D0A22323139206320626C61636B222C
+ 0D0A22323230206320626C61636B222C0D0A22323231206320626C61636B222C
+ 0D0A22323232206320626C61636B222C0D0A22323233206320626C61636B222C
+ 0D0A22323234206320626C61636B222C0D0A22323235206320626C61636B222C
+ 0D0A22323236206320626C61636B222C0D0A22323237206320626C61636B222C
+ 0D0A22323238206320626C61636B222C0D0A22323239206320626C61636B222C
+ 0D0A22323330206320626C61636B222C0D0A22323331206320626C61636B222C
+ 0D0A22323332206320626C61636B222C0D0A22323333206320626C61636B222C
+ 0D0A22323334206320626C61636B222C0D0A22323335206320626C61636B222C
+ 0D0A22323336206320626C61636B222C0D0A22323337206320626C61636B222C
+ 0D0A22323338206320626C61636B222C0D0A22323339206320626C61636B222C
+ 0D0A22323430206320626C61636B222C0D0A22323431206320626C61636B222C
+ 0D0A22323432206320626C61636B222C0D0A22323433206320626C61636B222C
+ 0D0A22323434206320626C61636B222C0D0A22323435206320626C61636B222C
+ 0D0A22323436206320626C61636B222C0D0A22323437206320626C61636B222C
+ 0D0A22323438206320626C61636B222C0D0A22323439206320626C61636B222C
+ 0D0A22323530206320626C61636B222C0D0A22323531206320626C61636B222C
+ 0D0A22323532206320626C61636B222C0D0A22323533206320626C61636B222C
+ 0D0A22323534206320626C61636B222C0D0A22323535206320626C61636B222C
+ 0D0A223030333030333030333030333030333030333030333030333030333030
+ 33303033303033303033303033303033303033222C0D0A223030333030333030
+ 3330303330303330303330303330303330303330303330303330303330303330
+ 3033303033303033222C0D0A2230303330303330303330303330303330303330
+ 3033303033303033303033303033303033303033303033303033303033222C0D
+ 0A22303033303033303033303030303030303033303033303033303033303033
+ 303033303033303033303033303033303033222C0D0A22303033303033303033
+ 3030303030313030303030303030333030333030333030333030333030333030
+ 33303033303033222C0D0A223030333030333030333030303030313030313030
+ 31303030303030303033303033303033303033303033303033303033222C0D0A
+ 2230303330303330303330303030303130303130303130303130303130303030
+ 3030303033303033303033303033303033222C0D0A2230303330303330303330
+ 3030303031303031303031303031303031303031303031303030303030303033
+ 303033303033222C0D0A22303033303033303033303030303031303031303031
+ 303031303031303031303031303032303032303033303033303033222C0D0A22
+ 3030333030333030333030303030313030313030313030313030313030323030
+ 32303033303033303033303033303033222C0D0A223030333030333030333030
+ 3030303130303130303130303230303230303330303330303330303330303330
+ 3033303033222C0D0A2230303330303330303330303030303130303230303230
+ 3033303033303033303033303033303033303033303033303033222C0D0A2230
+ 3033303033303033303032303032303033303033303033303033303033303033
+ 303033303033303033303033303033222C0D0A22303033303033303033303033
+ 3030333030333030333030333030333030333030333030333030333030333030
+ 33303033222C0D0A223030333030333030333030333030333030333030333030
+ 33303033303033303033303033303033303033303033303033222C0D0A223030
+ 3330303330303330303330303330303330303330303330303330303330303330
+ 3033303033303033303033303033220D0A7D3B0D0A
+ }
+ NumGlyphs = 0
+ OnClick = PlayClick
+ TabOrder = 4
+ Left = 88
+ Height = 30
+ Top = 67
+ Width = 28
+ end
+ object btStop: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 970300002F2A2058504D202A2F0D0A7374617469632063686172202A5069786D
+ 61705B5D203D207B0D0A2231362031362031362032222C0D0A22303020632023
+ 303830383130222C0D0A22303120632023313831383231222C0D0A2230322063
+ 20677261793136222C0D0A22303320632023443644364345222C0D0A22303420
+ 632067726179313030222C0D0A22303520632067726179313030222C0D0A2230
+ 3620632067726179313030222C0D0A22303720632067726179313030222C0D0A
+ 22303820632067726179313030222C0D0A22303920632067726179313030222C
+ 0D0A22313020632067726179313030222C0D0A22313120632067726179313030
+ 222C0D0A22313220632067726179313030222C0D0A2231332063206772617931
+ 3030222C0D0A22313420632067726179313030222C0D0A223135206320677261
+ 79313030222C0D0A223033303330333033303330333033303330333033303330
+ 333033303330333033222C0D0A22303330333033303330333033303330333033
+ 3033303330333033303330333033222C0D0A2230333033303330333033303330
+ 33303330333033303330333033303330333033222C0D0A223033303330333030
+ 303030303030303030303030303030303030303330333033222C0D0A22303330
+ 3330333030303130313031303130313031303130313032303330333033222C0D
+ 0A22303330333033303030313031303130313031303130313031303230333033
+ 3033222C0D0A2230333033303330303031303130313031303130313031303130
+ 32303330333033222C0D0A223033303330333030303130313031303130313031
+ 303130313032303330333033222C0D0A22303330333033303030313031303130
+ 3130313031303130313032303330333033222C0D0A2230333033303330303031
+ 30313031303130313031303130313032303330333033222C0D0A223033303330
+ 333030303130313031303130313031303130313032303330333033222C0D0A22
+ 3033303330333030303130313031303130313031303130313032303330333033
+ 222C0D0A22303330333033303230323032303230323032303230323032303230
+ 3330333033222C0D0A2230333033303330333033303330333033303330333033
+ 30333033303330333033222C0D0A223033303330333033303330333033303330
+ 333033303330333033303330333033222C0D0A22303330333033303330333033
+ 3033303330333033303330333033303330333033220D0A7D3B0D0A
+ }
+ NumGlyphs = 0
+ OnClick = StopClick
+ TabOrder = 5
+ Left = 144
+ Height = 30
+ Top = 67
+ Width = 28
+ end
+ object btPause: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 970300002F2A2058504D202A2F0D0A7374617469632063686172202A5069786D
+ 61705B5D203D207B0D0A2231362031362031362032222C0D0A22303020632023
+ 303830383130222C0D0A22303120632023313831383231222C0D0A2230322063
+ 20677261793136222C0D0A22303320632023443644364345222C0D0A22303420
+ 632067726179313030222C0D0A22303520632067726179313030222C0D0A2230
+ 3620632067726179313030222C0D0A22303720632067726179313030222C0D0A
+ 22303820632067726179313030222C0D0A22303920632067726179313030222C
+ 0D0A22313020632067726179313030222C0D0A22313120632067726179313030
+ 222C0D0A22313220632067726179313030222C0D0A2231332063206772617931
+ 3030222C0D0A22313420632067726179313030222C0D0A223135206320677261
+ 79313030222C0D0A223033303330333033303330333033303330333033303330
+ 333033303330333033222C0D0A22303330333033303330333033303330333033
+ 3033303330333033303330333033222C0D0A2230333033303330333033303330
+ 33303330333033303330333033303330333033222C0D0A223033303330303030
+ 303030303033303330333030303030303030303330333033222C0D0A22303330
+ 3330303031303130323033303330333030303130313032303330333033222C0D
+ 0A22303330333030303130313032303330333033303030313031303230333033
+ 3033222C0D0A2230333033303030313031303230333033303330303031303130
+ 32303330333033222C0D0A223033303330303031303130323033303330333030
+ 303130313032303330333033222C0D0A22303330333030303130313032303330
+ 3330333030303130313032303330333033222C0D0A2230333033303030313031
+ 30323033303330333030303130313032303330333033222C0D0A223033303330
+ 303031303130323033303330333030303130313032303330333033222C0D0A22
+ 3033303330303031303130323033303330333030303130313032303330333033
+ 222C0D0A22303330333032303230323032303330333033303230323032303230
+ 3330333033222C0D0A2230333033303330333033303330333033303330333033
+ 30333033303330333033222C0D0A223033303330333033303330333033303330
+ 333033303330333033303330333033222C0D0A22303330333033303330333033
+ 3033303330333033303330333033303330333033220D0A7D3B0D0A
+ }
+ NumGlyphs = 0
+ OnClick = Pauseclick
+ TabOrder = 6
+ Left = 116
+ Height = 30
+ Top = 67
+ Width = 28
+ end
+ object btPlaylist: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Glyph.Data = {
+ 4E0100002F2A2058504D202A2F0D0A7374617469632063686172202A2062746E
+ 5F76696577756E6974735F78706D5B5D203D207B0D0A22313120313420332031
+ 222C0D0A22200963204E6F6E65222C0D0A222E09632023303030303030222C0D
+ 0A222B09632023464646464646222C0D0A2220202020202E2E2E2E2020222C0D
+ 0A22202020202E2B2B2B2B2E2E222C0D0A22202020202E2B2B2B2B2B2E222C0D
+ 0A222020202E2E2E2E2B2B2B2E222C0D0A2220202E2B2B2B2B2E2E2B2E222C0D
+ 0A2220202E2B2B2B2B2B2E2B2E222C0D0A22202E2E2E2E2B2B2B2E2B2E222C0D
+ 0A222E2B2B2B2B2E2E2B2E2E2E222C0D0A222E2B2B2B2B2B2E2B2E2020222C0D
+ 0A222E2B2B2B2B2B2E2B2E2020222C0D0A222E2B2B2B2B2B2E2E2E2020222C0D
+ 0A222E2B2B2B2B2B2E20202020222C0D0A222E2B2B2B2B2B2E20202020222C0D
+ 0A222E2E2E2E2E2E2E20202020227D3B0D0A
+ }
+ NumGlyphs = 0
+ OnClick = btPlaylistClick
+ TabOrder = 7
+ Left = 174
+ Height = 17
+ Top = 67
+ Width = 22
+ end
+ object btVizu: TBitBtn
+ BorderSpacing.InnerBorder = 2
+ Caption = 'Vis'
+ NumGlyphs = 0
+ OnClick = btVizuClick
+ TabOrder = 8
+ Left = 174
+ Height = 13
+ Top = 84
+ Width = 22
+ end
+ object FileIn1: TACSFileIn
+ EndSample = -1
+ EndSample = -1
+ left = 12
+ top = 100
+ end
+ object PlayTimer: TTimer
+ Enabled = False
+ Interval = 50
+ OnTimer = Timer1Timer
+ left = 44
+ top = 68
+ end
+ object AudioOut1: TACSAudioOut
+ Buffersize = 100000
+ Driver = 'Wavemapper'
+ Input = SoundIndicator
+ Delay = 6
+ SuspendWhenIdle = True
+ OnDone = AudioOut1Done
+ OnThreadException = AudioOut1ThreadException
+ left = 44
+ top = 100
+ end
+ object SoundIndicator: TACSSoundIndicator
+ Input = FileIn1
+ left = 12
+ top = 69
+ end
+end
diff --git a/components/acs/Demos/player/umain.lrs b/components/acs/Demos/player/umain.lrs
new file mode 100644
index 000000000..a457a997e
--- /dev/null
+++ b/components/acs/Demos/player/umain.lrs
@@ -0,0 +1,256 @@
+{ Dies ist eine automatisch erzeugte Lazarus-Ressourcendatei }
+
+LazarusResources.Add('TfMain','FORMDATA',[
+ 'TPF0'#6'TfMain'#5'fMain'#13'ActiveControl'#7#6'btOpen'#11'BorderStyle'#7#12
+ +'bsToolWindow'#7'Caption'#6#11'Audioplayer'#12'ClientHeight'#2'c'#11'ClientW'
+ +'idth'#3#204#0#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#13'Pix'
+ +'elsPerInch'#2'`'#18'HorzScrollBar.Page'#3#203#0#18'VertScrollBar.Page'#2'b'
+ +#4'Left'#3#15#1#6'Height'#2'c'#3'Top'#3#150#0#5'Width'#3#204#0#0#6'TPanel'#6
+ +'Panel1'#10'BevelOuter'#7#9'bvLowered'#12'ClientHeight'#2'@'#11'ClientWidth'
+ +#3#192#0#11'FullRepaint'#8#8'TabOrder'#2#0#4'Left'#2#4#6'Height'#2'@'#5'Widt'
+ +'h'#3#192#0#0#6'TLabel'#5'lTime'#8'AutoSize'#8#7'Caption'#6#8'00:00:00'#5'Co'
+ +'lor'#7#6'clNone'#11'Font.Height'#2#231#11'ParentColor'#8#4'Left'#2#1#6'Heig'
+ +'ht'#2#29#3'Top'#2#24#5'Width'#2'l'#0#0#6'TLabel'#9'lFilename'#5'Align'#7#5
+ +'alTop'#7'Caption'#6#5'File:'#5'Color'#7#6'clNone'#11'Font.Height'#2#247#11
+ +'ParentColor'#8#8'WordWrap'#9#4'Left'#2#1#6'Height'#2#12#3'Top'#2#1#5'Width'
+ +#3#190#0#0#0#6'TLabel'#6'lTime1'#7'Caption'#6#11'Time remain'#5'Color'#7#6'c'
+ +'lNone'#11'Font.Height'#2#247#11'ParentColor'#8#7'OnClick'#7#11'lTime1Click'
+ +#4'Left'#2#1#6'Height'#2#12#3'Top'#2#20#5'Width'#2'5'#0#0#6'TLabel'#6'lTime2'
+ +#7'Caption'#6#4'left'#5'Color'#7#6'clNone'#11'Font.Height'#2#247#11'ParentCo'
+ +'lor'#8#4'Left'#2't'#6'Height'#2#12#3'Top'#2#20#5'Width'#2#14#0#0#6'TLabel'#5
+ +'lLeft'#7'Caption'#6#8'00:00:00'#5'Color'#7#6'clNone'#11'Font.Height'#2#244
+ +#11'ParentColor'#8#4'Left'#2't'#6'Height'#2#15#3'Top'#2#28#5'Width'#2'3'#0#0
+ +#12'TProgressBar'#8'Progress'#5'Align'#7#8'alBottom'#3'Max'#3#232#3#6'Smooth'
+ +#9#4'Left'#2#1#6'Height'#2#8#3'Top'#2'7'#5'Width'#3#190#0#0#0#0#7'TBitBtn'#6
+ +'btOpen'#25'BorderSpacing.InnerBorder'#2#2#10'Glyph.Data'#10#149#9#0#0#145#9
+ +#0#0'/* XPM */'#13#10'static char * btn_openfile_xpm[] = {'#13#10'"18 18 97 '
+ +'2",'#13#10'" '#9'c None",'#13#10'". '#9'c #000000",'#13#10'"+ '#9'c #4E331'
+ +'B",'#13#10'"@ '#9'c #E5A566",'#13#10'"# '#9'c #FED39A",'#13#10'"$ '#9'c #FE'
+ +'C585",'#13#10'"% '#9'c #FDC587",'#13#10'"& '#9'c #FEC282",'#13#10'"* '#9'c '
+ +'#F8AC62",'#13#10'"= '#9'c #FEC88A",'#13#10'"- '#9'c #53504D",'#13#10'"; '#9
+ +'c #55524F",'#13#10'"> '#9'c #5C5A57",'#13#10'", '#9'c #54514E",'#13#10'"'' '
+ +#9'c #565350",'#13#10'") '#9'c #C4864E",'#13#10'"! '#9'c #524F4C",'#13#10'"~'
+ +' '#9'c #F5F5F5",'#13#10'"{ '#9'c #ECECEC",'#13#10'"] '#9'c #E4E4E4",'#13#10
+ +'"^ '#9'c #DCDCDC",'#13#10'"/ '#9'c #D4D4D4",'#13#10'"( '#9'c #CBCBCB",'#13
+ +#10'"_ '#9'c #C4C4C4",'#13#10'": '#9'c #BCBCBC",'#13#10'"< '#9'c #B5B5B5",'
+ +#13#10'"[ '#9'c #B3B3B3",'#13#10'"} '#9'c #303030",'#13#10'"| '#9'c #4A3119"'
+ +','#13#10'"1 '#9'c #DBDBDB",'#13#10'"2 '#9'c #DFDFDE",'#13#10'"3 '#9'c #E8E8'
+ +'E7",'#13#10'"4 '#9'c #E6E6E4",'#13#10'"5 '#9'c #D2D2D1",'#13#10'"6 '#9'c #C'
+ +'7C7C6",'#13#10'"7 '#9'c #BABAB9",'#13#10'"8 '#9'c #ADADAC",'#13#10'"9 '#9'c'
+ +' #A0A09F",'#13#10'"0 '#9'c #949493",'#13#10'"a '#9'c #494948",'#13#10'"b '#9
+ +'c #B77D44",'#13#10'"c '#9'c #53514E",'#13#10'"d '#9'c #DADADA",'#13#10'"e '
+ +#9'c #DBDBDA",'#13#10'"f '#9'c #E1E1E0",'#13#10'"g '#9'c #DDDDDC",'#13#10'"h'
+ +' '#9'c #D6D6D5",'#13#10'"i '#9'c #CBCBCA",'#13#10'"j '#9'c #C1C1C0",'#13#10
+ +'"k '#9'c #B6B6B5",'#13#10'"l '#9'c #A9A9A8",'#13#10'"m '#9'c #686867",'#13
+ +#10'"n '#9'c #222221",'#13#10'"o '#9'c #493018",'#13#10'"p '#9'c #CDCDCD",'
+ +#13#10'"q '#9'c #CACAC9",'#13#10'"r '#9'c #D5D5D4",'#13#10'"s '#9'c #D2D2D0"'
+ +','#13#10'"t '#9'c #CCCCCB",'#13#10'"u '#9'c #C2C2C1",'#13#10'"v '#9'c #B9B9'
+ +'B8",'#13#10'"w '#9'c #AFAFAE",'#13#10'"x '#9'c #A2A2A1",'#13#10'"y '#9'c #9'
+ +'59594",'#13#10'"z '#9'c #CECECE",'#13#10'"A '#9'c #BEBEBC",'#13#10'"B '#9'c'
+ +' #C4C4C2",'#13#10'"C '#9'c #C6C6C5",'#13#10'"D '#9'c #C3C3C2",'#13#10'"E '#9
+ +'c #BFBFBE",'#13#10'"F '#9'c #AEAEAD",'#13#10'"G '#9'c #A5A5A4",'#13#10'"H '
+ +#9'c #9E9E9D",'#13#10'"I '#9'c #6F6F6E",'#13#10'"J '#9'c #121212",'#13#10'"K'
+ +' '#9'c #BDBDBD",'#13#10'"L '#9'c #A6A6A5",'#13#10'"M '#9'c #AAAAA8",'#13#10
+ +'"N '#9'c #ADADAB",'#13#10'"O '#9'c #AEAEAC",'#13#10'"P '#9'c #ABABAA",'#13
+ +#10'"Q '#9'c #A7A7A6",'#13#10'"R '#9'c #A1A1A0",'#13#10'"S '#9'c #9A9A99",'
+ +#13#10'"T '#9'c #949492",'#13#10'"U '#9'c #8D8D8B",'#13#10'"V '#9'c #232323"'
+ +','#13#10'"W '#9'c #4A4A4A",'#13#10'"X '#9'c #4A4A49",'#13#10'"Y '#9'c #4C4C'
+ +'4B",'#13#10'"Z '#9'c #4C4C4C",'#13#10'"` '#9'c #4B4B4A",'#13#10'" .'#9'c #4'
+ +'64646",'#13#10'"..'#9'c #434343",'#13#10'"+.'#9'c #414140",'#13#10'"@.'#9'c'
+ +' #343433",'#13#10'"#.'#9'c #1F1F1E",'#13#10'" . . . . '
+ +' ",'#13#10'" . . . . . . . ",'#13#10'" . '
+ +' . . . . ",'#13#10'" . . . ",'
+ +#13#10'" . . . . ",'#13#10'" + + + + '
+ +' ",'#13#10'"+ @ # $ @ + + + + + + + ",'#13#10'"+ '
+ +'# % & * * * * * * * * . ",'#13#10'"+ = & + - - ; > , , '' '' , . '
+ +'. . ",'#13#10'"+ & ) ! ~ ~ { ] ^ / ( _ : < [ } ",'#13#10'"+ & | 1 2'
+ +' 3 4 2 5 6 7 8 9 0 a ",'#13#10'"+ b c d e f g h i j k l 9 m n "'
+ ,','#13#10'"+ o p q r r s t u v w x y a ",'#13#10'"+ '' z A B C D E k'
+ +' F G H I J ",'#13#10'"+ K L M N O P Q R S T U a ",'#13#10
+ +'"V W X Y Z Y ` a ...+.@.#. ",'#13#10'" '
+ +' ",'#13#10'" "};'#13#10#6'Layout'
+ +#7#10'blGlyphTop'#9'NumGlyphs'#2#0#7'OnClick'#7#9'OpenClick'#8'TabOrder'#2#1
+ +#4'Left'#2#4#6'Height'#2#26#3'Top'#2'C'#5'Width'#2#28#0#0#7'TBitBtn'#5'btRew'
+ +#25'BorderSpacing.InnerBorder'#2#2#10'Glyph.Data'#10#155#3#0#0#151#3#0#0'/* '
+ +'XPM */'#13#10'static char *Pixmap[] = {'#13#10'"16 16 16 2",'#13#10'"00 c #'
+ +'080810",'#13#10'"01 c #181821",'#13#10'"02 c gray16",'#13#10'"03 c #D6D6CE"'
+ +','#13#10'"04 c gray100",'#13#10'"05 c gray100",'#13#10'"06 c gray100",'#13
+ +#10'"07 c gray100",'#13#10'"08 c gray100",'#13#10'"09 c gray100",'#13#10'"10'
+ +' c gray100",'#13#10'"11 c gray100",'#13#10'"12 c gray100",'#13#10'"13 c gra'
+ +'y100",'#13#10'"14 c gray100",'#13#10'"15 c gray100",'#13#10'"03030303030303'
+ +'030303030303030303",'#13#10'"03030303030303030303030303030303",'#13#10'"030'
+ +'30303030303030303030303030303",'#13#10'"03030300000003030303030000030303",'
+ +#13#10'"03030300010203030303000102030303",'#13#10'"0303030001020303030001010'
+ +'2030303",'#13#10'"03030300010203030001010102030303",'#13#10'"03030300010203'
+ +'000101010102030303",'#13#10'"03030300010203020101010102030303",'#13#10'"030'
+ +'30300010203030201010102030303",'#13#10'"03030300010203030302010102030303",'
+ +#13#10'"03030300010203030303020102030303",'#13#10'"0303030202020303030303020'
+ +'2030303",'#13#10'"03030303030303030303030303030303",'#13#10'"03030303030303'
+ +'030303030303030303",'#13#10'"03030303030303030303030303030303"'#13#10'};'#13
+ +#10#9'NumGlyphs'#2#0#7'OnClick'#7#10'btRewClick'#8'TabOrder'#2#2#4'Left'#2' '
+ +#6'Height'#2#26#3'Top'#2'C'#5'Width'#2#28#0#0#7'TBitBtn'#5'btFfw'#25'BorderS'
+ +'pacing.InnerBorder'#2#2#10'Glyph.Data'#10#155#3#0#0#151#3#0#0'/* XPM */'#13
+ +#10'static char *Pixmap[] = {'#13#10'"16 16 16 2",'#13#10'"00 c #080810",'#13
+ +#10'"01 c #181821",'#13#10'"02 c gray16",'#13#10'"03 c #D6D6CE",'#13#10'"04 '
+ +'c gray100",'#13#10'"05 c gray100",'#13#10'"06 c gray100",'#13#10'"07 c gray'
+ +'100",'#13#10'"08 c gray100",'#13#10'"09 c gray100",'#13#10'"10 c gray100",'
+ +#13#10'"11 c gray100",'#13#10'"12 c gray100",'#13#10'"13 c gray100",'#13#10
+ +'"14 c gray100",'#13#10'"15 c gray100",'#13#10'"0303030303030303030303030303'
+ +'0303",'#13#10'"03030303030303030303030303030303",'#13#10'"03030303030303030'
+ +'303030303030303",'#13#10'"03030300000303030303000000030303",'#13#10'"030303'
+ +'02010003030303020100030303",'#13#10'"03030302010100030303020100030303",'#13
+ +#10'"03030302010101000303020100030303",'#13#10'"0303030201010101000302010003'
+ +'0303",'#13#10'"03030302010101010203020100030303",'#13#10'"03030302010101020'
+ +'303020100030303",'#13#10'"03030302010102030303020100030303",'#13#10'"030303'
+ +'02010203030303020100030303",'#13#10'"03030302020303030303020202030303",'#13
+ +#10'"03030303030303030303030303030303",'#13#10'"0303030303030303030303030303'
+ +'0303",'#13#10'"03030303030303030303030303030303"'#13#10'};'#13#10#6'Layout'
+ +#7#12'blGlyphRight'#9'NumGlyphs'#2#0#7'OnClick'#7#10'btFfwClick'#8'TabOrder'
+ +#2#3#4'Left'#2'<'#6'Height'#2#26#3'Top'#2'C'#5'Width'#2#28#0#0#7'TBitBtn'#6
+ +'btPlay'#25'BorderSpacing.InnerBorder'#2#2#10'Glyph.Data'#10#149#19#0#0#145
+ +#19#0#0'/* XPM */'#13#10'static char *Pixmap[] = {'#13#10'"16 16 256 3",'#13
+ +#10'"000 c #0C0F12",'#13#10'"001 c #1B1D20",'#13#10'"002 c #2A2D2D",'#13#10
+ +'"003 c #D4D0C8",'#13#10'"004 c black",'#13#10'"005 c black",'#13#10'"006 c '
+ +'black",'#13#10'"007 c black",'#13#10'"008 c black",'#13#10'"009 c black",'
+ +#13#10'"010 c black",'#13#10'"011 c black",'#13#10'"012 c black",'#13#10'"01'
+ +'3 c black",'#13#10'"014 c black",'#13#10'"015 c black",'#13#10'"016 c black'
+ +'",'#13#10'"017 c black",'#13#10'"018 c black",'#13#10'"019 c black",'#13#10
+ +'"020 c black",'#13#10'"021 c black",'#13#10'"022 c black",'#13#10'"023 c bl'
+ +'ack",'#13#10'"024 c black",'#13#10'"025 c black",'#13#10'"026 c black",'#13
+ +#10'"027 c black",'#13#10'"028 c black",'#13#10'"029 c black",'#13#10'"030 c'
+ +' black",'#13#10'"031 c black",'#13#10'"032 c black",'#13#10'"033 c black",'
+ +#13#10'"034 c black",'#13#10'"035 c black",'#13#10'"036 c black",'#13#10'"03'
+ +'7 c black",'#13#10'"038 c black",'#13#10'"039 c black",'#13#10'"040 c black'
+ +'",'#13#10'"041 c black",'#13#10'"042 c black",'#13#10'"043 c black",'#13#10
+ +'"044 c black",'#13#10'"045 c black",'#13#10'"046 c black",'#13#10'"047 c bl'
+ +'ack",'#13#10'"048 c black",'#13#10'"049 c black",'#13#10'"050 c black",'#13
+ +#10'"051 c black",'#13#10'"052 c black",'#13#10'"053 c black",'#13#10'"054 c'
+ +' black",'#13#10'"055 c black",'#13#10'"056 c black",'#13#10'"057 c black",'
+ +#13#10'"058 c black",'#13#10'"059 c black",'#13#10'"060 c black",'#13#10'"06'
+ +'1 c black",'#13#10'"062 c black",'#13#10'"063 c black",'#13#10'"064 c black'
+ +'",'#13#10'"065 c black",'#13#10'"066 c black",'#13#10'"067 c black",'#13#10
+ ,'"068 c black",'#13#10'"069 c black",'#13#10'"070 c black",'#13#10'"071 c bl'
+ +'ack",'#13#10'"072 c black",'#13#10'"073 c black",'#13#10'"074 c black",'#13
+ +#10'"075 c black",'#13#10'"076 c black",'#13#10'"077 c black",'#13#10'"078 c'
+ +' black",'#13#10'"079 c black",'#13#10'"080 c black",'#13#10'"081 c black",'
+ +#13#10'"082 c black",'#13#10'"083 c black",'#13#10'"084 c black",'#13#10'"08'
+ +'5 c black",'#13#10'"086 c black",'#13#10'"087 c black",'#13#10'"088 c black'
+ +'",'#13#10'"089 c black",'#13#10'"090 c black",'#13#10'"091 c black",'#13#10
+ +'"092 c black",'#13#10'"093 c black",'#13#10'"094 c black",'#13#10'"095 c bl'
+ +'ack",'#13#10'"096 c black",'#13#10'"097 c black",'#13#10'"098 c black",'#13
+ +#10'"099 c black",'#13#10'"100 c black",'#13#10'"101 c black",'#13#10'"102 c'
+ +' black",'#13#10'"103 c black",'#13#10'"104 c black",'#13#10'"105 c black",'
+ +#13#10'"106 c black",'#13#10'"107 c black",'#13#10'"108 c black",'#13#10'"10'
+ +'9 c black",'#13#10'"110 c black",'#13#10'"111 c black",'#13#10'"112 c black'
+ +'",'#13#10'"113 c black",'#13#10'"114 c black",'#13#10'"115 c black",'#13#10
+ +'"116 c black",'#13#10'"117 c black",'#13#10'"118 c black",'#13#10'"119 c bl'
+ +'ack",'#13#10'"120 c black",'#13#10'"121 c black",'#13#10'"122 c black",'#13
+ +#10'"123 c black",'#13#10'"124 c black",'#13#10'"125 c black",'#13#10'"126 c'
+ +' black",'#13#10'"127 c black",'#13#10'"128 c black",'#13#10'"129 c black",'
+ +#13#10'"130 c black",'#13#10'"131 c black",'#13#10'"132 c black",'#13#10'"13'
+ +'3 c black",'#13#10'"134 c black",'#13#10'"135 c black",'#13#10'"136 c black'
+ +'",'#13#10'"137 c black",'#13#10'"138 c black",'#13#10'"139 c black",'#13#10
+ +'"140 c black",'#13#10'"141 c black",'#13#10'"142 c black",'#13#10'"143 c bl'
+ +'ack",'#13#10'"144 c black",'#13#10'"145 c black",'#13#10'"146 c black",'#13
+ +#10'"147 c black",'#13#10'"148 c black",'#13#10'"149 c black",'#13#10'"150 c'
+ +' black",'#13#10'"151 c black",'#13#10'"152 c black",'#13#10'"153 c black",'
+ +#13#10'"154 c black",'#13#10'"155 c black",'#13#10'"156 c black",'#13#10'"15'
+ +'7 c black",'#13#10'"158 c black",'#13#10'"159 c black",'#13#10'"160 c black'
+ +'",'#13#10'"161 c black",'#13#10'"162 c black",'#13#10'"163 c black",'#13#10
+ +'"164 c black",'#13#10'"165 c black",'#13#10'"166 c black",'#13#10'"167 c bl'
+ +'ack",'#13#10'"168 c black",'#13#10'"169 c black",'#13#10'"170 c black",'#13
+ +#10'"171 c black",'#13#10'"172 c black",'#13#10'"173 c black",'#13#10'"174 c'
+ +' black",'#13#10'"175 c black",'#13#10'"176 c black",'#13#10'"177 c black",'
+ +#13#10'"178 c black",'#13#10'"179 c black",'#13#10'"180 c black",'#13#10'"18'
+ +'1 c black",'#13#10'"182 c black",'#13#10'"183 c black",'#13#10'"184 c black'
+ +'",'#13#10'"185 c black",'#13#10'"186 c black",'#13#10'"187 c black",'#13#10
+ +'"188 c black",'#13#10'"189 c black",'#13#10'"190 c black",'#13#10'"191 c bl'
+ +'ack",'#13#10'"192 c black",'#13#10'"193 c black",'#13#10'"194 c black",'#13
+ +#10'"195 c black",'#13#10'"196 c black",'#13#10'"197 c black",'#13#10'"198 c'
+ +' black",'#13#10'"199 c black",'#13#10'"200 c black",'#13#10'"201 c black",'
+ +#13#10'"202 c black",'#13#10'"203 c black",'#13#10'"204 c black",'#13#10'"20'
+ +'5 c black",'#13#10'"206 c black",'#13#10'"207 c black",'#13#10'"208 c black'
+ +'",'#13#10'"209 c black",'#13#10'"210 c black",'#13#10'"211 c black",'#13#10
+ +'"212 c black",'#13#10'"213 c black",'#13#10'"214 c black",'#13#10'"215 c bl'
+ +'ack",'#13#10'"216 c black",'#13#10'"217 c black",'#13#10'"218 c black",'#13
+ +#10'"219 c black",'#13#10'"220 c black",'#13#10'"221 c black",'#13#10'"222 c'
+ +' black",'#13#10'"223 c black",'#13#10'"224 c black",'#13#10'"225 c black",'
+ +#13#10'"226 c black",'#13#10'"227 c black",'#13#10'"228 c black",'#13#10'"22'
+ +'9 c black",'#13#10'"230 c black",'#13#10'"231 c black",'#13#10'"232 c black'
+ +'",'#13#10'"233 c black",'#13#10'"234 c black",'#13#10'"235 c black",'#13#10
+ +'"236 c black",'#13#10'"237 c black",'#13#10'"238 c black",'#13#10'"239 c bl'
+ +'ack",'#13#10'"240 c black",'#13#10'"241 c black",'#13#10'"242 c black",'#13
+ +#10'"243 c black",'#13#10'"244 c black",'#13#10'"245 c black",'#13#10'"246 c'
+ +' black",'#13#10'"247 c black",'#13#10'"248 c black",'#13#10'"249 c black",'
+ +#13#10'"250 c black",'#13#10'"251 c black",'#13#10'"252 c black",'#13#10'"25'
+ +'3 c black",'#13#10'"254 c black",'#13#10'"255 c black",'#13#10'"00300300300'
+ +'3003003003003003003003003003003003003",'#13#10'"003003003003003003003003003'
+ +'003003003003003003003",'#13#10'"0030030030030030030030030030030030030030030'
+ +'03003",'#13#10'"003003003000000003003003003003003003003003003003",'#13#10'"'
+ +'003003003000001000000003003003003003003003003003",'#13#10'"0030030030000010'
+ +'01001000000003003003003003003003",'#13#10'"00300300300000100100100100100000'
+ +'0003003003003003",'#13#10'"003003003000001001001001001001001000000003003003'
+ +'",'#13#10'"003003003000001001001001001001001002002003003003",'#13#10'"00300'
+ +'3003000001001001001001002002003003003003003",'#13#10'"003003003000001001001'
+ +'002002003003003003003003003",'#13#10'"0030030030000010020020030030030030030'
+ ,'03003003003",'#13#10'"003003003002002003003003003003003003003003003003",'#13
+ +#10'"003003003003003003003003003003003003003003003003",'#13#10'"003003003003'
+ +'003003003003003003003003003003003003",'#13#10'"0030030030030030030030030030'
+ +'03003003003003003003"'#13#10'};'#13#10#9'NumGlyphs'#2#0#7'OnClick'#7#9'Play'
+ +'Click'#8'TabOrder'#2#4#4'Left'#2'X'#6'Height'#2#30#3'Top'#2'C'#5'Width'#2#28
+ +#0#0#7'TBitBtn'#6'btStop'#25'BorderSpacing.InnerBorder'#2#2#10'Glyph.Data'#10
+ +#155#3#0#0#151#3#0#0'/* XPM */'#13#10'static char *Pixmap[] = {'#13#10'"16 1'
+ +'6 16 2",'#13#10'"00 c #080810",'#13#10'"01 c #181821",'#13#10'"02 c gray16"'
+ +','#13#10'"03 c #D6D6CE",'#13#10'"04 c gray100",'#13#10'"05 c gray100",'#13
+ +#10'"06 c gray100",'#13#10'"07 c gray100",'#13#10'"08 c gray100",'#13#10'"09'
+ +' c gray100",'#13#10'"10 c gray100",'#13#10'"11 c gray100",'#13#10'"12 c gra'
+ +'y100",'#13#10'"13 c gray100",'#13#10'"14 c gray100",'#13#10'"15 c gray100",'
+ +#13#10'"03030303030303030303030303030303",'#13#10'"0303030303030303030303030'
+ +'3030303",'#13#10'"03030303030303030303030303030303",'#13#10'"03030300000000'
+ +'000000000000030303",'#13#10'"03030300010101010101010102030303",'#13#10'"030'
+ +'30300010101010101010102030303",'#13#10'"03030300010101010101010102030303",'
+ +#13#10'"03030300010101010101010102030303",'#13#10'"0303030001010101010101010'
+ +'2030303",'#13#10'"03030300010101010101010102030303",'#13#10'"03030300010101'
+ +'010101010102030303",'#13#10'"03030300010101010101010102030303",'#13#10'"030'
+ +'30302020202020202020202030303",'#13#10'"03030303030303030303030303030303",'
+ +#13#10'"03030303030303030303030303030303",'#13#10'"0303030303030303030303030'
+ +'3030303"'#13#10'};'#13#10#9'NumGlyphs'#2#0#7'OnClick'#7#9'StopClick'#8'TabO'
+ +'rder'#2#5#4'Left'#3#144#0#6'Height'#2#30#3'Top'#2'C'#5'Width'#2#28#0#0#7'TB'
+ +'itBtn'#7'btPause'#25'BorderSpacing.InnerBorder'#2#2#10'Glyph.Data'#10#155#3
+ +#0#0#151#3#0#0'/* XPM */'#13#10'static char *Pixmap[] = {'#13#10'"16 16 16 2'
+ +'",'#13#10'"00 c #080810",'#13#10'"01 c #181821",'#13#10'"02 c gray16",'#13
+ +#10'"03 c #D6D6CE",'#13#10'"04 c gray100",'#13#10'"05 c gray100",'#13#10'"06'
+ +' c gray100",'#13#10'"07 c gray100",'#13#10'"08 c gray100",'#13#10'"09 c gra'
+ +'y100",'#13#10'"10 c gray100",'#13#10'"11 c gray100",'#13#10'"12 c gray100",'
+ +#13#10'"13 c gray100",'#13#10'"14 c gray100",'#13#10'"15 c gray100",'#13#10
+ +'"03030303030303030303030303030303",'#13#10'"0303030303030303030303030303030'
+ +'3",'#13#10'"03030303030303030303030303030303",'#13#10'"03030000000003030300'
+ +'000000030303",'#13#10'"03030001010203030300010102030303",'#13#10'"030300010'
+ +'10203030300010102030303",'#13#10'"03030001010203030300010102030303",'#13#10
+ +'"03030001010203030300010102030303",'#13#10'"0303000101020303030001010203030'
+ +'3",'#13#10'"03030001010203030300010102030303",'#13#10'"03030001010203030300'
+ +'010102030303",'#13#10'"03030001010203030300010102030303",'#13#10'"030302020'
+ +'20203030302020202030303",'#13#10'"03030303030303030303030303030303",'#13#10
+ +'"03030303030303030303030303030303",'#13#10'"0303030303030303030303030303030'
+ +'3"'#13#10'};'#13#10#9'NumGlyphs'#2#0#7'OnClick'#7#10'Pauseclick'#8'TabOrder'
+ +#2#6#4'Left'#2't'#6'Height'#2#30#3'Top'#2'C'#5'Width'#2#28#0#0#7'TBitBtn'#10
+ +'btPlaylist'#25'BorderSpacing.InnerBorder'#2#2#10'Glyph.Data'#10'R'#1#0#0'N'
+ +#1#0#0'/* XPM */'#13#10'static char * btn_viewunits_xpm[] = {'#13#10'"11 14 '
+ +'3 1",'#13#10'" '#9'c None",'#13#10'".'#9'c #000000",'#13#10'"+'#9'c #FFFFFF'
+ +'",'#13#10'" .... ",'#13#10'" .++++..",'#13#10'" .+++++.",'#13#10
+ +'" ....+++.",'#13#10'" .++++..+.",'#13#10'" .+++++.+.",'#13#10'" ....+++'
+ +'.+.",'#13#10'".++++..+...",'#13#10'".+++++.+. ",'#13#10'".+++++.+. ",'#13
+ +#10'".+++++... ",'#13#10'".+++++. ",'#13#10'".+++++. ",'#13#10'".....'
+ +'.. "};'#13#10#9'NumGlyphs'#2#0#7'OnClick'#7#15'btPlaylistClick'#8'TabOrd'
+ +'er'#2#7#4'Left'#3#174#0#6'Height'#2#17#3'Top'#2'C'#5'Width'#2#22#0#0#7'TBit'
+ +'Btn'#6'btVizu'#25'BorderSpacing.InnerBorder'#2#2#7'Caption'#6#3'Vis'#9'NumG'
+ +'lyphs'#2#0#7'OnClick'#7#11'btVizuClick'#8'TabOrder'#2#8#4'Left'#3#174#0#6'H'
+ +'eight'#2#13#3'Top'#2'T'#5'Width'#2#22#0#0#10'TACSFileIn'#7'FileIn1'#9'EndSa'
+ +'mple'#2#255#9'EndSample'#2#255#4'left'#2#12#3'top'#2'd'#0#0#6'TTimer'#9'Pla'
+ +'yTimer'#7'Enabled'#8#8'Interval'#2'2'#7'OnTimer'#7#11'Timer1Timer'#4'left'#2
+ +','#3'top'#2'D'#0#0#12'TACSAudioOut'#9'AudioOut1'#10'Buffersize'#4#160#134#1
+ +#0#6'Driver'#6#10'Wavemapper'#5'Input'#7#14'SoundIndicator'#5'Delay'#2#6#15
+ +'SuspendWhenIdle'#9#6'OnDone'#7#13'AudioOut1Done'#17'OnThreadException'#7#24
+ +'AudioOut1ThreadException'#4'left'#2','#3'top'#2'd'#0#0#18'TACSSoundIndicato'
+ +'r'#14'SoundIndicator'#5'Input'#7#7'FileIn1'#4'left'#2#12#3'top'#2'E'#0#0#0
+]);
diff --git a/components/acs/Demos/player/umain.pas b/components/acs/Demos/player/umain.pas
new file mode 100644
index 000000000..a5788b0f0
--- /dev/null
+++ b/components/acs/Demos/player/umain.pas
@@ -0,0 +1,276 @@
+unit uMain;
+
+{$IFDEF FPC}
+{$mode objfpc}{$H+}
+{$ENDIF}
+
+interface
+
+uses
+ {$IFDEF FPC}
+ LResources,
+ {$ENDIF}
+ Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Buttons,
+ ACS_Audio,ACS_File,ACS_Classes,ACS_Allformats, ExtCtrls, StdCtrls,
+ ComCtrls,uPlaylist, ACS_Indicator,uvis
+ //You must include Output drivers to not get an "No drier selected" exception
+ {$IFDEF MSWINDOWS}
+ ,ACS_DXAudio //DirectSound Driver
+ {$ELSE}
+ ,ACS_AlsaAudio //Alsa Driver
+// ,ACS_AOLive //AO Live Driver
+ {$ENDIF}
+ ,ACS_StdAudio //Wavemapper Driver
+ ;
+
+type
+ TTimeFormat = (tfElapsed,tfRemain);
+
+ { TfMain }
+
+ TfMain = class(TForm)
+ AudioOut1: TACSAudioOut;
+ btVizu: TBitBtn;
+ btPlaylist: TBitBtn;
+ btPause: TBitBtn;
+ btRew: TBitBtn;
+ btFfw: TBitBtn;
+ btPlay: TBitBtn;
+ btStop: TBitBtn;
+ btOpen: TBitBtn;
+ FileIn1: TACSFileIn;
+ lLeft: TLabel;
+ lFilename: TLabel;
+ lTime: TLabel;
+ Panel1: TPanel;
+ Progress: TProgressBar;
+ PlayTimer: TTimer;
+ lTime1: TLabel;
+ lTime2: TLabel;
+ SoundIndicator: TACSSoundIndicator;
+ procedure AudioOut1Done(Sender: TComponent);
+ procedure AudioOut1ThreadException(Sender: TComponent; E: Exception);
+ procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
+ procedure FormCreate(Sender: TObject);
+ procedure Pauseclick(Sender: TObject);
+ procedure PlayClick(Sender: TObject);
+ procedure StopClick(Sender: TObject);
+ procedure OpenClick(Sender: TObject);
+ procedure Timer1Timer(Sender: TObject);
+ procedure btFfwClick(Sender: TObject);
+ procedure btPlaylistClick(Sender: TObject);
+ procedure btRewClick(Sender: TObject);
+ procedure btVizuClick(Sender: TObject);
+ procedure lTime1Click(Sender: TObject);
+ procedure resetDisplay;
+ private
+ { private declarations }
+ FPaused : Boolean;
+ FStopped : Boolean;
+ TimeFormat : TTimeFormat;
+ public
+ { public declarations }
+ end;
+
+var
+ fMain: TfMain;
+
+implementation
+
+{ TfMain }
+
+procedure TfMain.PlayClick(Sender: TObject);
+begin
+ if FPaused then
+ begin
+ AudioOut1.Resume;
+ FPaused := False;
+ end
+ else
+ begin
+ if FileIn1.FileName = '' then
+ begin
+ if fPlaylist.lbPlaylist.Items.Count = 0 then exit;
+ if fPlaylist.lbPlaylist.ItemIndex = -1 then
+ fPlayList.lbPlaylist.ItemIndex := 0;
+ FileIn1.FileName := fPlayList.lbPlaylist.Items[fPlayList.lbPlaylist.ItemIndex];
+ lFilename.Caption := Format('File:%s',[ExtractFileName(FileIn1.FileName)]);
+ end;
+ AudioOut1.Run;
+ end;
+ FStopped := False;
+ btPlay.Enabled := False;
+ btStop.Enabled := True;
+ btOpen.Enabled := False;
+ btRew.Enabled := False;
+ btFfw.Enabled := False;
+ btPause.Enabled := True;
+ PlayTimer.Enabled := True;
+end;
+
+procedure TfMain.AudioOut1Done(Sender: TComponent);
+begin
+ btPlay.Enabled := True;
+ btStop.Enabled := False;
+ btOpen.Enabled := True;
+ btRew.Enabled := True;
+ btFfw.Enabled := True;
+ PlayTimer.Enabled := false;
+ ResetDisplay;
+ if FStopped then
+ exit;
+ if fPlaylist.lbPlaylist.Items.Count = 0 then exit;
+ if fPlaylist.lbPlaylist.ItemIndex = -1 then
+ fPlayList.lbPlaylist.ItemIndex := 0;
+ FileIn1.FileName := fPlayList.lbPlaylist.Items[fPlayList.lbPlaylist.ItemIndex];
+ if fPlayList.lbPlaylist.Items.Count-1 > fPlayList.lbPlaylist.ItemIndex then
+ begin
+ fPlayList.lbPlaylist.ItemIndex := fPlayList.lbPlaylist.ItemIndex+1;
+ FileIn1.FileName := fPlayList.lbPlaylist.Items[fPlayList.lbPlaylist.ItemIndex];
+ lFilename.Caption := Format('File:%s',[ExtractFileName(FileIn1.FileName)]);
+ PlayClick(nil);
+ end;
+end;
+
+procedure TfMain.AudioOut1ThreadException(Sender: TComponent; E: Exception);
+begin
+ ShowMessage(E.Message);
+end;
+
+procedure TfMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
+begin
+ FStopped := True;
+ if (AudioOut1.Status <> tosIdle) then
+ AudioOut1.Stop;
+ while (AudioOut1.Status <> tosIdle) do
+ Application.Processmessages;
+end;
+
+procedure TfMain.FormCreate(Sender: TObject);
+begin
+// AudioOut1.Driver := 'Alsa';
+end;
+
+procedure TfMain.Pauseclick(Sender: TObject);
+begin
+ if FPaused then
+ exit;
+ AudioOut1.Pause;
+ FPaused := True;
+ btPause.Enabled := False;
+ btPlay.Enabled := True;
+ PlayTimer.Enabled := False;
+end;
+
+procedure TfMain.StopClick(Sender: TObject);
+begin
+ FStopped := True;
+ AudioOut1.Stop;
+end;
+
+procedure TfMain.OpenClick(Sender: TObject);
+begin
+ FileIn1.Open;
+ btPlay.Enabled := True;
+ ResetDisplay;
+end;
+
+procedure TfMain.Timer1Timer(Sender: TObject);
+var
+ tmp : real;
+begin
+ case TimeFormat of
+ tfElapsed:
+ begin
+ tmp := ((FileIn1.Position * FileIn1.TotalTime) / FileIn1.Size);
+ lTime.Caption := Format('%.2d:%.2d:%.2d',[round((tmp-30) / 60) mod 120,round(tmp) mod 60,round(tmp*100) mod 100]);
+ tmp := FileIn1.TotalTime-((FileIn1.Position * FileIn1.TotalTime) / FileIn1.Size);
+ lLeft.Caption := Format('%.2d:%.2d:%.2d',[round((tmp-30) / 60) mod 120,round(tmp) mod 60,round(tmp*100) mod 100]);
+ lTime1.Caption := 'Time elapsed';
+ lTime2.Caption := 'left';
+ end;
+ tfRemain:
+ begin
+ tmp := ((FileIn1.Position * FileIn1.TotalTime) / FileIn1.Size);
+ lLeft.Caption := Format('%.2d:%.2d:%.2d',[round((tmp-30) / 60) mod 120,round(tmp) mod 60,round(tmp*100) mod 100]);
+ tmp := FileIn1.TotalTime-((FileIn1.Position * FileIn1.TotalTime) / FileIn1.Size);
+ lTime.Caption := Format('%.2d:%.2d:%.2d',[round((tmp-30) / 60) mod 120,round(tmp) mod 60,round(tmp*100) mod 100]);
+ lTime1.Caption := 'Time remain';
+ lTime2.Caption := 'elapsed';
+ end;
+ end;
+ Progress.Position := round((FileIn1.Position * 100) / FileIn1.Size);
+end;
+
+procedure TfMain.btFfwClick(Sender: TObject);
+begin
+ if fPlayList.lbPlaylist.Items.Count-1 > fPlayList.lbPlaylist.ItemIndex then
+ fPlayList.lbPlaylist.ItemIndex := fPlayList.lbPlaylist.ItemIndex+1;
+ FileIn1.FileName := fPlayList.lbPlaylist.Items[fPlayList.lbPlaylist.ItemIndex];
+ ResetDisplay;
+end;
+
+procedure TfMain.btPlaylistClick(Sender: TObject);
+begin
+ fPlaylist.Visible := True;
+end;
+
+procedure TfMain.btRewClick(Sender: TObject);
+begin
+ if fPlayList.lbPlaylist.ItemIndex >= 1 then
+ fPlayList.lbPlaylist.ItemIndex := fPlayList.lbPlaylist.ItemIndex-1;
+ FileIn1.FileName := fPlayList.lbPlaylist.Items[fPlayList.lbPlaylist.ItemIndex];
+ ResetDisplay;
+end;
+
+procedure TfMain.btVizuClick(Sender: TObject);
+begin
+ fVizu.Show;
+end;
+
+procedure TfMain.lTime1Click(Sender: TObject);
+begin
+ case TimeFormat of
+ tfElapsed:TimeFormat := tfRemain;
+ tfRemain:TimeFormat := tfElapsed;
+ end;
+ ResetDisplay;
+end;
+
+procedure TfMain.resetDisplay;
+var
+ tmp : real;
+begin
+ lFilename.Caption := Format('File:%s',[ExtractFileName(FileIn1.FileName)]);
+ case TimeFormat of
+ tfElapsed:
+ begin
+ tmp := ((FileIn1.Position * FileIn1.TotalTime) / FileIn1.Size);
+ lTime.Caption := Format('%.2d:%.2d:%.2d',[round((tmp-30) / 60) mod 120,round(tmp) mod 60,round(tmp*100) mod 100]);
+ tmp := FileIn1.TotalTime-((FileIn1.Position * FileIn1.TotalTime) / FileIn1.Size);
+ lLeft.Caption := Format('%.2d:%.2d:%.2d',[round((tmp-30) / 60) mod 120,round(tmp) mod 60,round(tmp*100) mod 100]);
+ lTime1.Caption := 'Time elapsed';
+ lTime2.Caption := 'left';
+ end;
+ tfRemain:
+ begin
+ tmp := ((FileIn1.Position * FileIn1.TotalTime) / FileIn1.Size);
+ lLeft.Caption := Format('%.2d:%.2d:%.2d',[round((tmp-30) / 60) mod 120,round(tmp) mod 60,round(tmp*100) mod 100]);
+ tmp := FileIn1.TotalTime-((FileIn1.Position * FileIn1.TotalTime) / FileIn1.Size);
+ lTime.Caption := Format('%.2d:%.2d:%.2d',[round((tmp-30) / 60) mod 120,round(tmp) mod 60,round(tmp*100) mod 100]);
+ lTime1.Caption := 'Time remain';
+ lTime2.Caption := 'elapsed';
+ end;
+ end;
+ Progress.Position := round((FileIn1.Position * 100) / FileIn1.Size);
+end;
+
+initialization
+{$IFDEF FPC}
+ {$I umain.lrs}
+{$ELSE}
+ {$R *.dfm}
+{$ENDIF}
+
+end.
+
diff --git a/components/acs/Demos/player/uplaylist.dfm b/components/acs/Demos/player/uplaylist.dfm
new file mode 100644
index 000000000..2492757d7
--- /dev/null
+++ b/components/acs/Demos/player/uplaylist.dfm
@@ -0,0 +1,55 @@
+object fPlaylist: TfPlaylist
+ Left = 278
+ Top = 276
+ Width = 208
+ Height = 242
+ BorderStyle = bsSizeToolWin
+ Caption = 'Playlist'
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ OldCreateOrder = True
+ DesignSize = (
+ 200
+ 215)
+ PixelsPerInch = 96
+ TextHeight = 13
+ object lbPlaylist: TListBox
+ Left = 0
+ Top = 0
+ Width = 200
+ Height = 215
+ Align = alClient
+ BorderStyle = bsNone
+ ItemHeight = 13
+ TabOrder = 0
+ end
+ object btAdd: TBitBtn
+ Left = 0
+ Top = 193
+ Width = 27
+ Height = 22
+ Anchors = [akLeft, akBottom]
+ Caption = '+'
+ TabOrder = 1
+ OnClick = btAddClick
+ end
+ object Button1: TButton
+ Left = 32
+ Top = 193
+ Width = 27
+ Height = 22
+ Anchors = [akLeft, akBottom]
+ Caption = '-'
+ TabOrder = 2
+ OnClick = Button1Click
+ end
+ object OpenDialog: TOpenDialog
+ FilterIndex = 0
+ Options = [ofAllowMultiSelect, ofPathMustExist, ofFileMustExist, ofEnableSizing]
+ Title = 'Vorhandene Datei '#246'ffnen'
+ end
+end
diff --git a/components/acs/Demos/player/uplaylist.lfm b/components/acs/Demos/player/uplaylist.lfm
new file mode 100644
index 000000000..1d943491b
--- /dev/null
+++ b/components/acs/Demos/player/uplaylist.lfm
@@ -0,0 +1,48 @@
+object fPlaylist: TfPlaylist
+ BorderStyle = bsSizeToolWin
+ Caption = 'Playlist'
+ ClientHeight = 215
+ ClientWidth = 200
+ PixelsPerInch = 96
+ HorzScrollBar.Page = 199
+ VertScrollBar.Page = 214
+ Left = 278
+ Height = 215
+ Top = 276
+ Width = 200
+ object lbPlaylist: TListBox
+ Align = alClient
+ BorderSpacing.OnChange = nil
+ BorderSpacing.Bottom = 25
+ BorderStyle = bsNone
+ TabOrder = 0
+ Height = 190
+ Width = 200
+ end
+ object btAdd: TBitBtn
+ Anchors = [akLeft, akBottom]
+ Caption = '+'
+ OnClick = btAddClick
+ TabOrder = 1
+ Height = 22
+ Top = 193
+ Width = 27
+ end
+ object Button1: TButton
+ Anchors = [akLeft, akBottom]
+ BorderSpacing.OnChange = nil
+ Caption = '-'
+ OnClick = Button1Click
+ TabOrder = 2
+ Left = 32
+ Height = 22
+ Top = 193
+ Width = 27
+ end
+ object OpenDialog: TOpenDialog
+ Options = [ofAllowMultiSelect, ofPathMustExist, ofFileMustExist, ofEnableSizing, ofViewDetail]
+ Title = 'Vorhandene Datei öffnen'
+ FilterIndex = 0
+ Title = 'Vorhandene Datei öffnen'
+ end
+end
diff --git a/components/acs/Demos/player/uplaylist.lrs b/components/acs/Demos/player/uplaylist.lrs
new file mode 100644
index 000000000..e8dcb2de0
--- /dev/null
+++ b/components/acs/Demos/player/uplaylist.lrs
@@ -0,0 +1,19 @@
+{ Dies ist eine automatisch erzeugte Lazarus-Ressourcendatei }
+
+LazarusResources.Add('TfPlaylist','FORMDATA',[
+ 'TPF0'#10'TfPlaylist'#9'fPlaylist'#11'BorderStyle'#7#13'bsSizeToolWin'#7'Capt'
+ +'ion'#6#8'Playlist'#12'ClientHeight'#3#215#0#11'ClientWidth'#3#200#0#13'Pixe'
+ +'lsPerInch'#2'`'#18'HorzScrollBar.Page'#3#199#0#18'VertScrollBar.Page'#3#214
+ +#0#4'Left'#3#22#1#6'Height'#3#215#0#3'Top'#3#20#1#5'Width'#3#200#0#0#8'TList'
+ +'Box'#10'lbPlaylist'#5'Align'#7#8'alClient'#22'BorderSpacing.OnChange'#13#20
+ +'BorderSpacing.Bottom'#2#25#11'BorderStyle'#7#6'bsNone'#8'TabOrder'#2#0#6'He'
+ +'ight'#3#190#0#5'Width'#3#200#0#0#0#7'TBitBtn'#5'btAdd'#7'Anchors'#11#6'akLe'
+ +'ft'#8'akBottom'#0#7'Caption'#6#1'+'#7'OnClick'#7#10'btAddClick'#8'TabOrder'
+ +#2#1#6'Height'#2#22#3'Top'#3#193#0#5'Width'#2#27#0#0#7'TButton'#7'Button1'#7
+ +'Anchors'#11#6'akLeft'#8'akBottom'#0#22'BorderSpacing.OnChange'#13#7'Caption'
+ +#6#1'-'#7'OnClick'#7#12'Button1Click'#8'TabOrder'#2#2#4'Left'#2' '#6'Height'
+ +#2#22#3'Top'#3#193#0#5'Width'#2#27#0#0#11'TOpenDialog'#10'OpenDialog'#7'Opti'
+ +'ons'#11#18'ofAllowMultiSelect'#15'ofPathMustExist'#15'ofFileMustExist'#14'o'
+ +'fEnableSizing'#12'ofViewDetail'#0#5'Title'#6#23'Vorhandene Datei '#246'ffne'
+ +'n'#11'FilterIndex'#2#0#5'Title'#6#23'Vorhandene Datei '#246'ffnen'#0#0#0
+]);
diff --git a/components/acs/Demos/player/uplaylist.pas b/components/acs/Demos/player/uplaylist.pas
new file mode 100644
index 000000000..1141a44a7
--- /dev/null
+++ b/components/acs/Demos/player/uplaylist.pas
@@ -0,0 +1,67 @@
+unit uPlaylist;
+
+{$IFDEF FPC}
+{$mode objfpc}{$H+}
+{$ENDIF}
+
+interface
+
+uses
+ {$IFDEF FPC}
+ LResources,
+ {$ENDIF}
+ Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons;
+
+type
+
+ { TfPlaylist }
+
+ TfPlaylist = class(TForm)
+ btAdd: TBitBtn;
+ Button1: TButton;
+ lbPlaylist: TListBox;
+ OpenDialog: TOpenDialog;
+ procedure Button1Click(Sender: TObject);
+ procedure btAddClick(Sender: TObject);
+ private
+ { private declarations }
+ public
+ { public declarations }
+ end;
+
+var
+ fPlaylist: TfPlaylist;
+
+implementation
+
+uses ACS_File;
+
+{ TfPlaylist }
+
+procedure TfPlaylist.btAddClick(Sender: TObject);
+var
+ desc : string;
+begin
+ FileFormats.BuildFilterStrings(desc,[fcLoad]);
+ OpenDialog.Filter := desc;
+ if OpenDialog.Execute then
+ begin
+ lbPlayList.Items.AddStrings(OpenDialog.Files);
+ end;
+end;
+
+procedure TfPlaylist.Button1Click(Sender: TObject);
+begin
+ if lbPlayList.ItemIndex > -1 then
+ lbPlayList.Items.Delete(lbPlayList.ItemIndex);
+end;
+
+initialization
+{$IFDEF FPC}
+ {$I uplaylist.lrs}
+{$else}
+ {$R *.dfm}
+{$ENDIF}
+
+end.
+
diff --git a/components/acs/Demos/player/uvis.dfm b/components/acs/Demos/player/uvis.dfm
new file mode 100644
index 000000000..6682482eb
--- /dev/null
+++ b/components/acs/Demos/player/uvis.dfm
@@ -0,0 +1,53 @@
+object fVizu: TfVizu
+ Left = 483
+ Top = 150
+ Width = 202
+ Height = 126
+ BorderStyle = bsSizeToolWin
+ Caption = 'Visualization'
+ Color = clBtnFace
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -11
+ Font.Name = 'MS Sans Serif'
+ Font.Style = []
+ Menu = MainMenu1
+ OldCreateOrder = True
+ OnPaint = FormPaint
+ PixelsPerInch = 96
+ TextHeight = 13
+ object Image: TImage
+ Left = 0
+ Top = 0
+ Width = 194
+ Height = 80
+ Align = alClient
+ Transparent = True
+ end
+ object MainMenu1: TMainMenu
+ Left = 17
+ Top = 10
+ object miType: TMenuItem
+ Caption = 'Type'
+ object rFFT: TMenuItem
+ AutoCheck = True
+ Caption = 'FFT'
+ Checked = True
+ GroupIndex = 1
+ RadioItem = True
+ end
+ object MenuItem2: TMenuItem
+ AutoCheck = True
+ Caption = 'Wave'
+ GroupIndex = 1
+ RadioItem = True
+ end
+ end
+ end
+ object Timer1: TTimer
+ Interval = 100
+ OnTimer = Timer1Timer
+ Left = 48
+ Top = 8
+ end
+end
diff --git a/components/acs/Demos/player/uvis.lfm b/components/acs/Demos/player/uvis.lfm
new file mode 100644
index 000000000..c26792efb
--- /dev/null
+++ b/components/acs/Demos/player/uvis.lfm
@@ -0,0 +1,49 @@
+object fVizu: TfVizu
+ BorderStyle = bsSizeToolWin
+ Caption = 'Visualization'
+ ClientHeight = 79
+ ClientWidth = 194
+ Menu = MainMenu1
+ OnPaint = FormPaint
+ PixelsPerInch = 96
+ HorzScrollBar.Page = 193
+ VertScrollBar.Page = 78
+ Left = 483
+ Height = 99
+ Top = 150
+ Width = 194
+ object Image: TImage
+ Align = alClient
+ Transparent = True
+ Height = 79
+ Width = 194
+ end
+ object MainMenu1: TMainMenu
+ left = 17
+ top = 10
+ object miType: TMenuItem
+ Caption = 'Type'
+ object rFFT: TMenuItem
+ AutoCheck = True
+ Caption = 'FFT'
+ Checked = True
+ GroupIndex = 1
+ RadioItem = True
+ ShowAlwaysCheckable = True
+ end
+ object MenuItem2: TMenuItem
+ AutoCheck = True
+ Caption = 'Wave'
+ GroupIndex = 1
+ RadioItem = True
+ ShowAlwaysCheckable = True
+ end
+ end
+ end
+ object Timer1: TTimer
+ Interval = 150
+ OnTimer = Timer1Timer
+ left = 17
+ top = 44
+ end
+end
diff --git a/components/acs/Demos/player/uvis.lrs b/components/acs/Demos/player/uvis.lrs
new file mode 100644
index 000000000..098ae564e
--- /dev/null
+++ b/components/acs/Demos/player/uvis.lrs
@@ -0,0 +1,16 @@
+{ Dies ist eine automatisch erzeugte Lazarus-Ressourcendatei }
+
+LazarusResources.Add('TfVizu','FORMDATA',[
+ 'TPF0'#6'TfVizu'#5'fVizu'#11'BorderStyle'#7#13'bsSizeToolWin'#7'Caption'#6#13
+ +'Visualization'#12'ClientHeight'#2'O'#11'ClientWidth'#3#194#0#4'Menu'#7#9'Ma'
+ +'inMenu1'#7'OnPaint'#7#9'FormPaint'#13'PixelsPerInch'#2'`'#18'HorzScrollBar.'
+ +'Page'#3#193#0#18'VertScrollBar.Page'#2'N'#4'Left'#3#227#1#6'Height'#2'c'#3
+ +'Top'#3#150#0#5'Width'#3#194#0#0#6'TImage'#5'Image'#5'Align'#7#8'alClient'#11
+ +'Transparent'#9#6'Height'#2'O'#5'Width'#3#194#0#0#0#9'TMainMenu'#9'MainMenu1'
+ +#4'left'#2#17#3'top'#2#10#0#9'TMenuItem'#6'miType'#7'Caption'#6#4'Type'#0#9
+ +'TMenuItem'#4'rFFT'#9'AutoCheck'#9#7'Caption'#6#3'FFT'#7'Checked'#9#10'Group'
+ +'Index'#2#1#9'RadioItem'#9#19'ShowAlwaysCheckable'#9#0#0#9'TMenuItem'#9'Menu'
+ +'Item2'#9'AutoCheck'#9#7'Caption'#6#4'Wave'#10'GroupIndex'#2#1#9'RadioItem'#9
+ +#19'ShowAlwaysCheckable'#9#0#0#0#0#6'TTimer'#6'Timer1'#8'Interval'#3#150#0#7
+ +'OnTimer'#7#11'Timer1Timer'#4'left'#2#17#3'top'#2','#0#0#0
+]);
diff --git a/components/acs/Demos/player/uvis.pas b/components/acs/Demos/player/uvis.pas
new file mode 100644
index 000000000..8aa10f29d
--- /dev/null
+++ b/components/acs/Demos/player/uvis.pas
@@ -0,0 +1,104 @@
+unit uvis;
+
+{$IFDEF FPC}
+{$mode objfpc}{$H+}
+{$ENDIF}
+
+interface
+
+uses
+ {$IFDEF FPC}
+ LResources,FPImage,
+ {$ENDIF}
+ Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Menus, ExtCtrls;
+
+type
+ TVals = array[0..31] of Double;
+
+ { TfVizu }
+
+ TfVizu = class(TForm)
+ Image: TImage;
+ MainMenu1: TMainMenu;
+ rFFT: TMenuItem;
+ MenuItem2: TMenuItem;
+ miType: TMenuItem;
+ Timer1: TTimer;
+ procedure FormPaint(Sender: TObject);
+ procedure Timer1Timer(Sender: TObject);
+ private
+ { private declarations }
+ public
+ { public declarations }
+ lVals : array of TVals;
+ Vals : TVals;
+ end;
+
+var
+ fVizu: TfVizu;
+
+implementation
+
+uses uMain;
+
+{ TfVizu }
+
+procedure TfVizu.FormPaint(Sender: TObject);
+var
+ i,x,y : Integer;
+ {$IFDEF FPC}
+ newcolor : TFPColor;
+ {$ENDIF}
+begin
+ Canvas.Lock;
+ Canvas.Brush.Color := clBlack;
+ Canvas.Pen.Color := clBlack;
+ Canvas.Rectangle(0,0,Width,Height);
+ if rFFT.Checked then
+ begin
+ fMain.SoundIndicator.GetValues(Vals);
+ Setlength(lVals,0);
+ Canvas.Pen.Color := clAqua;
+ Canvas.Brush.Color := clAqua;
+ for i := 0 to 31 do
+ Canvas.Rectangle(((Width div 31)*i)+1,Height-Round(Vals[i]*Height),((Width div 31)*(i+1))-1,Height);
+ end
+ else
+ begin
+ {$IFDEF FPC}
+ Setlength(lVals,Height div 4);
+ for i := 0 to length(lVals)-2 do
+ lVals[i] := lVals[i+1];
+ fMain.SoundIndicator.GetValues(lVals[length(lVals)-1]);
+ for y := 0 to (Height div 4)-1 do
+ for x := 0 to 31 do
+ begin
+ newcolor := TColorToFPColor(clBlack);
+ newcolor.blue := round(65535*lVals[y][x]);
+ newcolor.green := round(65535*lVals[y][x]);
+ Canvas.Brush.Color := FPColorToTColor(newcolor);
+ newcolor.blue := round(32000*lVals[y][x]);
+ newcolor.green := round(32000*lVals[y][x]);
+ Canvas.Pen.Color := FPColorToTColor(newcolor);
+ Canvas.Rectangle(((Width div 31)*x),y*4,((Width div 31)*(x+1)),((y+1)*4));
+ end;
+ {$ENDIF}
+ end;
+ Canvas.Unlock;
+end;
+
+procedure TfVizu.Timer1Timer(Sender: TObject);
+begin
+ if fVizu.Visible then
+ fVizu.Invalidate;
+end;
+
+initialization
+{$IFDEF FPC}
+ {$I uvis.lrs}
+{$else}
+ {$R *.dfm}
+{$ENDIF}
+
+end.
+
diff --git a/components/acs/Demos/recording/recorder.lpi b/components/acs/Demos/recording/recorder.lpi
new file mode 100644
index 000000000..1bcbcfe2e
--- /dev/null
+++ b/components/acs/Demos/recording/recorder.lpi
@@ -0,0 +1,259 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/acs/Demos/recording/umain.lfm b/components/acs/Demos/recording/umain.lfm
new file mode 100644
index 000000000..49f8e238b
--- /dev/null
+++ b/components/acs/Demos/recording/umain.lfm
@@ -0,0 +1,74 @@
+object fMain: TfMain
+ BorderStyle = bsToolWindow
+ Caption = 'Sound Indicator'
+ ClientHeight = 53
+ ClientWidth = 400
+ OnShow = FormShow
+ PixelsPerInch = 96
+ HorzScrollBar.Page = 399
+ VertScrollBar.Page = 52
+ Left = 276
+ Height = 53
+ Top = 155
+ Width = 400
+ object Label1: TLabel
+ Caption = 'Input Level'
+ Color = clNone
+ ParentColor = False
+ Left = 8
+ Height = 14
+ Top = 2
+ Width = 55
+ end
+ object Label2: TLabel
+ Caption = '-3 db'
+ Color = clNone
+ ParentColor = False
+ Left = 192
+ Height = 14
+ Top = 36
+ Width = 26
+ end
+ object Label3: TLabel
+ Caption = '-96 db'
+ Color = clNone
+ ParentColor = False
+ Left = 8
+ Height = 14
+ Top = 36
+ Width = 32
+ end
+ object ProgressBar: TProgressBar
+ Max = 200
+ Left = 8
+ Height = 16
+ Top = 16
+ Width = 376
+ end
+ object AudioIn1: TACSAudioIn
+ Driver = 'Wavemapper'
+ InBitsPerSample = 8
+ InChannels = 1
+ InSampleRate = 8000
+ RecTime = -1
+ left = 9
+ top = 296
+ end
+ object NULLOut1: TACSNULLOut
+ Input = VolumeQuery
+ SuspendWhenIdle = True
+ left = 9
+ top = 368
+ end
+ object VolumeQuery: TACSVolumeQuery
+ Input = AudioIn1
+ left = 9
+ top = 332
+ end
+ object Timer1: TTimer
+ Interval = 100
+ OnTimer = Timer1Timer
+ left = 9
+ top = 264
+ end
+end
diff --git a/components/acs/Demos/recording/umain.lrs b/components/acs/Demos/recording/umain.lrs
new file mode 100644
index 000000000..d611496b9
--- /dev/null
+++ b/components/acs/Demos/recording/umain.lrs
@@ -0,0 +1,22 @@
+{ Dies ist eine automatisch erzeugte Lazarus-Ressourcendatei }
+
+LazarusResources.Add('TfMain','FORMDATA',[
+ 'TPF0'#6'TfMain'#5'fMain'#11'BorderStyle'#7#12'bsToolWindow'#7'Caption'#6#15
+ +'Sound Indicator'#12'ClientHeight'#2'5'#11'ClientWidth'#3#144#1#6'OnShow'#7#8
+ +'FormShow'#13'PixelsPerInch'#2'`'#18'HorzScrollBar.Page'#3#143#1#18'VertScro'
+ +'llBar.Page'#2'4'#4'Left'#3#20#1#6'Height'#2'5'#3'Top'#3#155#0#5'Width'#3#144
+ +#1#0#6'TLabel'#6'Label1'#7'Caption'#6#11'Input Level'#5'Color'#7#6'clNone'#11
+ +'ParentColor'#8#4'Left'#2#8#6'Height'#2#14#3'Top'#2#2#5'Width'#2'7'#0#0#6'TL'
+ +'abel'#6'Label2'#7'Caption'#6#5'-3 db'#5'Color'#7#6'clNone'#11'ParentColor'#8
+ +#4'Left'#3#192#0#6'Height'#2#14#3'Top'#2'$'#5'Width'#2#26#0#0#6'TLabel'#6'La'
+ +'bel3'#7'Caption'#6#6'-96 db'#5'Color'#7#6'clNone'#11'ParentColor'#8#4'Left'
+ +#2#8#6'Height'#2#14#3'Top'#2'$'#5'Width'#2' '#0#0#12'TProgressBar'#11'Progre'
+ +'ssBar'#3'Max'#3#200#0#4'Left'#2#8#6'Height'#2#16#3'Top'#2#16#5'Width'#3'x'#1
+ +#0#0#11'TACSAudioIn'#8'AudioIn1'#6'Driver'#6#10'Wavemapper'#15'InBitsPerSamp'
+ +'le'#2#8#10'InChannels'#2#1#12'InSampleRate'#3'@'#31#7'RecTime'#2#255#4'left'
+ +#2#9#3'top'#3'('#1#0#0#11'TACSNULLOut'#8'NULLOut1'#5'Input'#7#11'VolumeQuery'
+ +#15'SuspendWhenIdle'#9#4'left'#2#9#3'top'#3'p'#1#0#0#15'TACSVolumeQuery'#11
+ +'VolumeQuery'#5'Input'#7#8'AudioIn1'#4'left'#2#9#3'top'#3'L'#1#0#0#6'TTimer'
+ +#6'Timer1'#8'Interval'#2'd'#7'OnTimer'#7#11'Timer1Timer'#4'left'#2#9#3'top'#3
+ +#8#1#0#0#0
+]);
diff --git a/components/acs/Demos/recording/umain.pas b/components/acs/Demos/recording/umain.pas
new file mode 100644
index 000000000..2ee2e327a
--- /dev/null
+++ b/components/acs/Demos/recording/umain.pas
@@ -0,0 +1,53 @@
+unit uMain;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ACS_Audio, ComCtrls, StdCtrls, ACS_Misc,
+ ACS_VolumeQuery, ExtCtrls;
+
+type
+
+ { TfMain }
+
+ TfMain = class(TForm)
+ AudioIn1: TACSAudioIn;
+ Label1: TLabel;
+ Label2: TLabel;
+ Label3: TLabel;
+ NULLOut1: TACSNULLOut;
+ ProgressBar: TProgressBar;
+ Timer1: TTimer;
+ VolumeQuery: TACSVolumeQuery;
+ procedure FormShow(Sender: TObject);
+ procedure Timer1Timer(Sender: TObject);
+ private
+ { private declarations }
+ public
+ { public declarations }
+ end;
+
+var
+ fMain: TfMain;
+
+implementation
+
+{ TfMain }
+
+procedure TfMain.FormShow(Sender: TObject);
+begin
+ NULLOut1.Run;
+end;
+
+procedure TfMain.Timer1Timer(Sender: TObject);
+begin
+ ProgressBar.Position := (round((VolumeQuery.dbLeft+VolumeQuery.dbRight)/2)+96);
+end;
+
+initialization
+ {$I umain.lrs}
+
+end.
+