Changeset 278


Ignore:
Timestamp:
Oct 4, 2011, 4:12:38 PM (13 years ago)
Author:
george
Message:
  • Added: Base classes for Windows audio using mmsystem unit.
  • Added: Audio system manger class for supported systems management.
Location:
CoolAudio
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • CoolAudio/CoolAudio.lpk

    r276 r278  
    1818      </Other>
    1919    </CompilerOptions>
    20     <Files Count="10">
     20    <Files Count="11">
    2121      <Item1>
    2222        <Filename Value="fmodintf/fmod.pas"/>
     
    4444      </Item6>
    4545      <Item7>
     46        <Filename Value="UPlaylist.pas"/>
     47        <UnitName Value="UPlaylist"/>
     48      </Item7>
     49      <Item8>
    4650        <Filename Value="Systems/UAudioSystemFMOD.pas"/>
    4751        <UnitName Value="UAudioSystemFMOD"/>
    48       </Item7>
    49       <Item8>
    50         <Filename Value="UPlaylist.pas"/>
    51         <UnitName Value="UPlaylist"/>
    5252      </Item8>
    5353      <Item9>
     
    5959        <UnitName Value="UAudioSystem"/>
    6060      </Item10>
     61      <Item11>
     62        <Filename Value="Systems/UAudioSystemWindows.pas"/>
     63        <UnitName Value="UAudioSystemWindows"/>
     64      </Item11>
    6165    </Files>
    6266    <Type Value="RunAndDesignTime"/>
  • CoolAudio/CoolAudio.pas

    r275 r278  
    88
    99uses
    10   fmod, fmoddyn, fmoderrors, fmodpresets, fmodtypes, UCoolAudio,
    11   UAudioSystemFMOD, UPlaylist, UAudioSystemMPlayer, UAudioSystem,
     10  fmod, fmoddyn, fmoderrors, fmodpresets, fmodtypes, UCoolAudio, UPlaylist,
     11  UAudioSystemFMOD, UAudioSystemMPlayer, UAudioSystem, UAudioSystemWindows,
    1212  LazarusPackageIntf;
    1313
  • CoolAudio/Demo/Demo.lpi

    r277 r278  
    3838      </Item2>
    3939    </RequiredPackages>
    40     <Units Count="20">
     40    <Units Count="22">
    4141      <Unit0>
    4242        <Filename Value="Demo.lpr"/>
    4343        <IsPartOfProject Value="True"/>
    4444        <UnitName Value="Demo"/>
    45         <UsageCount Value="29"/>
     45        <UsageCount Value="33"/>
    4646      </Unit0>
    4747      <Unit1>
     
    5151        <ResourceBaseClass Value="Form"/>
    5252        <UnitName Value="UMainForm"/>
    53         <IsVisibleTab Value="True"/>
    5453        <EditorIndex Value="0"/>
    5554        <WindowIndex Value="0"/>
    56         <TopLine Value="1"/>
    57         <CursorPos X="14" Y="3"/>
    58         <UsageCount Value="29"/>
     55        <TopLine Value="86"/>
     56        <CursorPos X="1" Y="98"/>
     57        <UsageCount Value="33"/>
    5958        <Loaded Value="True"/>
    6059        <LoadedDesigner Value="True"/>
     
    6362        <Filename Value="../UCoolAudio.pas"/>
    6463        <UnitName Value="UCoolAudio"/>
    65         <WindowIndex Value="0"/>
    66         <TopLine Value="1"/>
    67         <CursorPos X="34" Y="6"/>
    68         <UsageCount Value="10"/>
     64        <EditorIndex Value="6"/>
     65        <WindowIndex Value="0"/>
     66        <TopLine Value="24"/>
     67        <CursorPos X="30" Y="39"/>
     68        <UsageCount Value="11"/>
     69        <Loaded Value="True"/>
    6970      </Unit2>
    7071      <Unit3>
    7172        <Filename Value="../Systems/UAudioSystemFMOD.pas"/>
    7273        <UnitName Value="UAudioSystemFMOD"/>
    73         <EditorIndex Value="6"/>
    74         <WindowIndex Value="0"/>
    75         <TopLine Value="1"/>
    76         <CursorPos X="20" Y="111"/>
    77         <UsageCount Value="14"/>
     74        <EditorIndex Value="10"/>
     75        <WindowIndex Value="0"/>
     76        <TopLine Value="47"/>
     77        <CursorPos X="1" Y="61"/>
     78        <UsageCount Value="16"/>
    7879        <Loaded Value="True"/>
    7980      </Unit3>
     
    8485        <TopLine Value="1"/>
    8586        <CursorPos X="29" Y="8"/>
    86         <UsageCount Value="22"/>
     87        <UsageCount Value="21"/>
    8788      </Unit4>
    8889      <Unit5>
    8990        <Filename Value="../fmodintf/fmoddyn.pas"/>
    9091        <UnitName Value="fmoddyn"/>
    91         <WindowIndex Value="0"/>
    92         <TopLine Value="46"/>
    93         <CursorPos X="10" Y="63"/>
    94         <UsageCount Value="12"/>
     92        <IsVisibleTab Value="True"/>
     93        <EditorIndex Value="11"/>
     94        <WindowIndex Value="0"/>
     95        <TopLine Value="577"/>
     96        <CursorPos X="40" Y="592"/>
     97        <UsageCount Value="11"/>
     98        <Loaded Value="True"/>
    9599      </Unit5>
    96100      <Unit6>
     
    100104        <TopLine Value="158"/>
    101105        <CursorPos X="43" Y="178"/>
    102         <UsageCount Value="12"/>
     106        <UsageCount Value="11"/>
    103107      </Unit6>
    104108      <Unit7>
    105109        <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    106110        <UnitName Value="UAudioSystemMPlayer"/>
    107         <EditorIndex Value="3"/>
    108         <WindowIndex Value="0"/>
    109         <TopLine Value="231"/>
    110         <CursorPos X="1" Y="243"/>
    111         <UsageCount Value="14"/>
     111        <EditorIndex Value="7"/>
     112        <WindowIndex Value="0"/>
     113        <TopLine Value="19"/>
     114        <CursorPos X="3" Y="36"/>
     115        <UsageCount Value="16"/>
    112116        <Loaded Value="True"/>
    113117      </Unit7>
     
    118122        <TopLine Value="1"/>
    119123        <CursorPos X="1" Y="1"/>
    120         <UsageCount Value="10"/>
     124        <UsageCount Value="9"/>
    121125      </Unit8>
    122126      <Unit9>
    123127        <Filename Value="../Systems/UAudioSystem.pas"/>
    124128        <UnitName Value="UAudioSystem"/>
    125         <EditorIndex Value="2"/>
    126         <WindowIndex Value="0"/>
    127         <TopLine Value="17"/>
    128         <CursorPos X="56" Y="29"/>
    129         <UsageCount Value="24"/>
     129        <EditorIndex Value="5"/>
     130        <WindowIndex Value="0"/>
     131        <TopLine Value="54"/>
     132        <CursorPos X="5" Y="66"/>
     133        <UsageCount Value="26"/>
    130134        <Loaded Value="True"/>
    131135      </Unit9>
     
    133137        <Filename Value="../../../../Lazarus/0.9.31_2.5.1/lcl/stdctrls.pp"/>
    134138        <UnitName Value="StdCtrls"/>
    135         <WindowIndex Value="0"/>
    136         <TopLine Value="1046"/>
    137         <CursorPos X="17" Y="1067"/>
    138         <UsageCount Value="10"/>
     139        <EditorIndex Value="1"/>
     140        <WindowIndex Value="0"/>
     141        <TopLine Value="418"/>
     142        <CursorPos X="18" Y="430"/>
     143        <UsageCount Value="11"/>
     144        <Loaded Value="True"/>
    139145      </Unit10>
    140146      <Unit11>
    141147        <Filename Value="../../../../Lazarus/0.9.31_2.5.1/lcl/controls.pp"/>
    142148        <UnitName Value="Controls"/>
    143         <EditorIndex Value="1"/>
     149        <EditorIndex Value="4"/>
    144150        <WindowIndex Value="0"/>
    145151        <TopLine Value="2427"/>
    146152        <CursorPos X="24" Y="2429"/>
    147         <UsageCount Value="11"/>
     153        <UsageCount Value="13"/>
    148154        <Loaded Value="True"/>
    149155      </Unit11>
     
    154160        <TopLine Value="38"/>
    155161        <CursorPos X="32" Y="50"/>
    156         <UsageCount Value="10"/>
     162        <UsageCount Value="9"/>
    157163      </Unit12>
    158164      <Unit13>
     
    162168        <TopLine Value="120"/>
    163169        <CursorPos X="16" Y="131"/>
    164         <UsageCount Value="10"/>
     170        <UsageCount Value="9"/>
    165171      </Unit13>
    166172      <Unit14>
     
    169175        <TopLine Value="26"/>
    170176        <CursorPos X="18" Y="28"/>
    171         <UsageCount Value="10"/>
     177        <UsageCount Value="9"/>
    172178      </Unit14>
    173179      <Unit15>
     
    176182        <TopLine Value="65"/>
    177183        <CursorPos X="17" Y="67"/>
    178         <UsageCount Value="10"/>
     184        <UsageCount Value="9"/>
    179185      </Unit15>
    180186      <Unit16>
     
    183189        <TopLine Value="4280"/>
    184190        <CursorPos X="19" Y="4283"/>
    185         <UsageCount Value="10"/>
     191        <UsageCount Value="9"/>
    186192      </Unit16>
    187193      <Unit17>
     
    190196        <TopLine Value="6307"/>
    191197        <CursorPos X="17" Y="6320"/>
    192         <UsageCount Value="10"/>
     198        <UsageCount Value="9"/>
    193199      </Unit17>
    194200      <Unit18>
    195201        <Filename Value="../../../../Lazarus/0.9.31_2.5.1/fpc/2.5.1/source/packages/fcl-process/src/process.pp"/>
    196202        <UnitName Value="process"/>
    197         <EditorIndex Value="4"/>
     203        <EditorIndex Value="8"/>
    198204        <WindowIndex Value="0"/>
    199205        <TopLine Value="13"/>
    200206        <CursorPos X="21" Y="26"/>
    201         <UsageCount Value="11"/>
     207        <UsageCount Value="13"/>
    202208        <Loaded Value="True"/>
    203209      </Unit18>
     
    205211        <Filename Value="../../../../Lazarus/0.9.31_2.5.1/fpc/2.5.1/source/packages/libogcfpc/src/debug.pp"/>
    206212        <UnitName Value="debug"/>
    207         <EditorIndex Value="5"/>
     213        <EditorIndex Value="9"/>
    208214        <WindowIndex Value="0"/>
    209215        <TopLine Value="1"/>
    210216        <CursorPos X="1" Y="1"/>
    211         <UsageCount Value="11"/>
     217        <UsageCount Value="13"/>
    212218        <Loaded Value="True"/>
    213219      </Unit19>
     220      <Unit20>
     221        <Filename Value="../../../../Lazarus/0.9.31_2.5.1/fpc/2.5.1/source/packages/winunits-base/src/mmsystem.pp"/>
     222        <UnitName Value="mmsystem"/>
     223        <EditorIndex Value="2"/>
     224        <WindowIndex Value="0"/>
     225        <TopLine Value="165"/>
     226        <CursorPos X="10" Y="177"/>
     227        <UsageCount Value="12"/>
     228        <Loaded Value="True"/>
     229      </Unit20>
     230      <Unit21>
     231        <Filename Value="../Systems/UAudioSystemWindows.pas"/>
     232        <UnitName Value="UAudioSystemWindows"/>
     233        <EditorIndex Value="3"/>
     234        <WindowIndex Value="0"/>
     235        <TopLine Value="1"/>
     236        <CursorPos X="17" Y="17"/>
     237        <UsageCount Value="22"/>
     238        <Loaded Value="True"/>
     239      </Unit21>
    214240    </Units>
    215241    <JumpHistory Count="30" HistoryIndex="29">
    216242      <Position1>
    217         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    218         <Caret Line="129" Column="1" TopLine="113"/>
     243        <Filename Value="../Systems/UAudioSystemWindows.pas"/>
     244        <Caret Line="32" Column="1" TopLine="17"/>
    219245      </Position1>
    220246      <Position2>
    221         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    222         <Caret Line="130" Column="1" TopLine="113"/>
     247        <Filename Value="../Systems/UAudioSystemWindows.pas"/>
     248        <Caret Line="27" Column="11" TopLine="15"/>
    223249      </Position2>
    224250      <Position3>
    225         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    226         <Caret Line="131" Column="1" TopLine="113"/>
     251        <Filename Value="UMainForm.pas"/>
     252        <Caret Line="5" Column="11" TopLine="1"/>
    227253      </Position3>
    228254      <Position4>
    229         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    230         <Caret Line="128" Column="1" TopLine="113"/>
     255        <Filename Value="../Systems/UAudioSystem.pas"/>
     256        <Caret Line="69" Column="68" TopLine="55"/>
    231257      </Position4>
    232258      <Position5>
    233         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    234         <Caret Line="129" Column="1" TopLine="113"/>
     259        <Filename Value="../Systems/UAudioSystem.pas"/>
     260        <Caret Line="71" Column="34" TopLine="56"/>
    235261      </Position5>
    236262      <Position6>
    237         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    238         <Caret Line="130" Column="1" TopLine="113"/>
     263        <Filename Value="../Systems/UAudioSystem.pas"/>
     264        <Caret Line="93" Column="24" TopLine="85"/>
    239265      </Position6>
    240266      <Position7>
    241         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    242         <Caret Line="131" Column="1" TopLine="113"/>
     267        <Filename Value="../UCoolAudio.pas"/>
     268        <Caret Line="16" Column="23" TopLine="1"/>
    243269      </Position7>
    244270      <Position8>
    245         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    246         <Caret Line="132" Column="1" TopLine="113"/>
     271        <Filename Value="../UCoolAudio.pas"/>
     272        <Caret Line="12" Column="19" TopLine="10"/>
    247273      </Position8>
    248274      <Position9>
    249         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    250         <Caret Line="133" Column="1" TopLine="113"/>
     275        <Filename Value="../UCoolAudio.pas"/>
     276        <Caret Line="25" Column="26" TopLine="10"/>
    251277      </Position9>
    252278      <Position10>
    253         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    254         <Caret Line="134" Column="1" TopLine="114"/>
     279        <Filename Value="../Systems/UAudioSystem.pas"/>
     280        <Caret Line="69" Column="59" TopLine="57"/>
    255281      </Position10>
    256282      <Position11>
    257         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    258         <Caret Line="135" Column="1" TopLine="115"/>
     283        <Filename Value="../Systems/UAudioSystem.pas"/>
     284        <Caret Line="60" Column="34" TopLine="51"/>
    259285      </Position11>
    260286      <Position12>
    261         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    262         <Caret Line="136" Column="1" TopLine="116"/>
     287        <Filename Value="../Systems/UAudioSystem.pas"/>
     288        <Caret Line="72" Column="25" TopLine="59"/>
    263289      </Position12>
    264290      <Position13>
    265         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    266         <Caret Line="139" Column="1" TopLine="119"/>
     291        <Filename Value="../Systems/UAudioSystem.pas"/>
     292        <Caret Line="86" Column="3" TopLine="85"/>
    267293      </Position13>
    268294      <Position14>
    269         <Filename Value="UMainForm.pas"/>
    270         <Caret Line="63" Column="1" TopLine="59"/>
     295        <Filename Value="../Systems/UAudioSystem.pas"/>
     296        <Caret Line="73" Column="32" TopLine="72"/>
    271297      </Position14>
    272298      <Position15>
    273         <Filename Value="UMainForm.pas"/>
    274         <Caret Line="70" Column="1" TopLine="61"/>
     299        <Filename Value="../Systems/UAudioSystem.pas"/>
     300        <Caret Line="68" Column="55" TopLine="49"/>
    275301      </Position15>
    276302      <Position16>
    277         <Filename Value="UMainForm.pas"/>
    278         <Caret Line="64" Column="10" TopLine="62"/>
     303        <Filename Value="../Systems/UAudioSystem.pas"/>
     304        <Caret Line="91" Column="25" TopLine="89"/>
    279305      </Position16>
    280306      <Position17>
    281         <Filename Value="UMainForm.pas"/>
    282         <Caret Line="35" Column="19" TopLine="23"/>
     307        <Filename Value="../Systems/UAudioSystem.pas"/>
     308        <Caret Line="93" Column="25" TopLine="79"/>
    283309      </Position17>
    284310      <Position18>
    285311        <Filename Value="../Systems/UAudioSystem.pas"/>
    286         <Caret Line="54" Column="62" TopLine="33"/>
     312        <Caret Line="76" Column="1" TopLine="56"/>
    287313      </Position18>
    288314      <Position19>
    289315        <Filename Value="UMainForm.pas"/>
    290         <Caret Line="35" Column="19" TopLine="23"/>
     316        <Caret Line="53" Column="33" TopLine="41"/>
    291317      </Position19>
    292318      <Position20>
    293         <Filename Value="UMainForm.pas"/>
    294         <Caret Line="64" Column="20" TopLine="52"/>
     319        <Filename Value="../Systems/UAudioSystem.pas"/>
     320        <Caret Line="76" Column="50" TopLine="64"/>
    295321      </Position20>
    296322      <Position21>
    297         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    298         <Caret Line="246" Column="16" TopLine="225"/>
     323        <Filename Value="UMainForm.pas"/>
     324        <Caret Line="55" Column="24" TopLine="42"/>
    299325      </Position21>
    300326      <Position22>
    301         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    302         <Caret Line="245" Column="1" TopLine="225"/>
     327        <Filename Value="UMainForm.pas"/>
     328        <Caret Line="99" Column="28" TopLine="85"/>
    303329      </Position22>
    304330      <Position23>
    305         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    306         <Caret Line="246" Column="1" TopLine="226"/>
     331        <Filename Value="UMainForm.pas"/>
     332        <Caret Line="100" Column="10" TopLine="85"/>
    307333      </Position23>
    308334      <Position24>
    309         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    310         <Caret Line="248" Column="1" TopLine="228"/>
     335        <Filename Value="UMainForm.pas"/>
     336        <Caret Line="70" Column="7" TopLine="86"/>
    311337      </Position24>
    312338      <Position25>
    313339        <Filename Value="UMainForm.pas"/>
    314         <Caret Line="64" Column="19" TopLine="50"/>
     340        <Caret Line="97" Column="1" TopLine="86"/>
    315341      </Position25>
    316342      <Position26>
    317         <Filename Value="../Systems/UAudioSystem.pas"/>
    318         <Caret Line="54" Column="41" TopLine="42"/>
     343        <Filename Value="UMainForm.pas"/>
     344        <Caret Line="98" Column="1" TopLine="86"/>
    319345      </Position26>
    320346      <Position27>
    321         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    322         <Caret Line="36" Column="26" TopLine="29"/>
     347        <Filename Value="../Systems/UAudioSystemFMOD.pas"/>
     348        <Caret Line="59" Column="1" TopLine="47"/>
    323349      </Position27>
    324350      <Position28>
    325         <Filename Value="../Systems/UAudioSystem.pas"/>
    326         <Caret Line="29" Column="56" TopLine="17"/>
     351        <Filename Value="../Systems/UAudioSystemFMOD.pas"/>
     352        <Caret Line="64" Column="1" TopLine="47"/>
    327353      </Position28>
    328354      <Position29>
    329         <Filename Value="../Systems/UAudioSystemMPlayer.pas"/>
    330         <Caret Line="243" Column="1" TopLine="231"/>
     355        <Filename Value="../Systems/UAudioSystemFMOD.pas"/>
     356        <Caret Line="60" Column="1" TopLine="47"/>
    331357      </Position29>
    332358      <Position30>
    333         <Filename Value="UMainForm.pas"/>
    334         <Caret Line="67" Column="35" TopLine="55"/>
     359        <Filename Value="../Systems/UAudioSystemFMOD.pas"/>
     360        <Caret Line="61" Column="1" TopLine="47"/>
    335361      </Position30>
    336362    </JumpHistory>
     
    360386  </CompilerOptions>
    361387  <Debugging>
     388    <BreakPoints Count="1">
     389      <Item1>
     390        <Kind Value="bpkSource"/>
     391        <Source Value="UMainForm.pas"/>
     392        <Line Value="97"/>
     393      </Item1>
     394    </BreakPoints>
    362395    <Watches Count="1">
    363396      <Item1>
  • CoolAudio/Demo/UMainForm.lfm

    r277 r278  
    3232    Left = 11
    3333    Height = 25
    34     Top = 63
     34    Top = 87
    3535    Width = 75
    3636    Caption = 'Play'
     
    4141    Left = 96
    4242    Height = 25
    43     Top = 64
     43    Top = 88
    4444    Width = 75
    4545    Caption = 'Pause'
     
    5050    Left = 182
    5151    Height = 25
    52     Top = 64
     52    Top = 88
    5353    Width = 75
    5454    Caption = 'Stop'
     
    5959    Left = 11
    6060    Height = 33
    61     Top = 90
     61    Top = 114
    6262    Width = 417
    6363    Max = 100
     
    6767    TabOrder = 5
    6868  end
     69  object ComboBox1: TComboBox
     70    Left = 80
     71    Height = 21
     72    Top = 46
     73    Width = 128
     74    ItemHeight = 13
     75    OnChange = ComboBox1Change
     76    Style = csDropDownList
     77    TabOrder = 6
     78  end
     79  object Label1: TLabel
     80    Left = 9
     81    Height = 14
     82    Top = 46
     83    Width = 45
     84    Caption = 'Backend:'
     85    ParentColor = False
     86  end
    6987  object OpenDialog1: TOpenDialog
    7088    Filter = 'Any file (*.*)|*.*|MP3 (*.mp3)|*.mp3|WAV (*.wav)|*.wav'
    7189    left = 296
    72     top = 48
     90    top = 72
    7391  end
    7492  object TimerPlayback: TTimer
  • CoolAudio/Demo/UMainForm.pas

    r277 r278  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
    9   ComCtrls, ExtCtrls, UAudioSystem, UAudioSystemFMOD, UAudioSystemMPlayer;
     9  ComCtrls, ExtCtrls, UAudioSystem, UAudioSystemFMOD, UAudioSystemMPlayer,
     10  UCoolAudio;
    1011
    1112type
     
    1819    ButtonPlay: TButton;
    1920    ButtonPause: TButton;
     21    ComboBox1: TComboBox;
    2022    Edit1: TEdit;
     23    Label1: TLabel;
    2124    OpenDialog1: TOpenDialog;
    2225    TimerPlayback: TTimer;
     
    2629    procedure ButtonPlayClick(Sender: TObject);
    2730    procedure ButtonStopClick(Sender: TObject);
     31    procedure ComboBox1Change(Sender: TObject);
    2832    procedure FormCreate(Sender: TObject);
    2933    procedure FormDestroy(Sender: TObject);
     
    4852procedure TMainForm.FormCreate(Sender: TObject);
    4953begin
     54  AudioSystemManager.FillStringList(ComboBox1.Items);
    5055  AudioSystem := TAudioSystemMPlayer.Create;
    5156  TAudioSystemMPlayer(AudioSystem).Path := 'c:\Program Files\SMPlayer\mplayer\mplayer.exe';
     
    8590end;
    8691
     92procedure TMainForm.ComboBox1Change(Sender: TObject);
     93begin
     94  Player.Free;
     95  AudioSystem.Free;
     96  if ComboBox1.ItemIndex <> - 1 then begin
     97    with TAudioSystemManagerItem(ComboBox1.Items.Objects[ComboBox1.ItemIndex]) do begin
     98      AudioSystem := SystemClass.Create;
     99      Player := PlayerClass.Create;
     100      Player.AudioSystem := AudioSystem;
     101    end;
     102  end;
     103end;
     104
    87105procedure TMainForm.ButtonPauseClick(Sender: TObject);
    88106begin
  • CoolAudio/Systems/UAudioSystem.pas

    r277 r278  
    66
    77uses
    8   Classes, SysUtils;
     8  Classes, SysUtils, Contnrs;
    99
    1010type
     
    2424    property OutputMode: TOutputDriver read FOutputDriver write SetOutputMode;
    2525  end;
     26
     27  TAudioSystemClass = class of TAudioSystem;
    2628
    2729  { TPlayer }
     
    5658  end;
    5759
     60  TPlayerClass = class of TPlayer;
     61
     62  { TAudioSystemManagerItem }
     63
     64  TAudioSystemManagerItem = class
     65    Name: string;
     66    SystemClass: TAudioSystemClass;
     67    PlayerClass: TPlayerClass;
     68  end;
     69
     70  { TAudioSystemManager }
     71
     72  TAudioSystemManager = class
     73    Systems: TObjectList; // TListObject<TAudioSystem>
     74    procedure Register(Name: string; SystemClass: TAudioSystemClass;
     75      PlayerClass: TPlayerClass);
     76    procedure FillStringList(StringList: TStrings);
     77    constructor Create;
     78    destructor Destroy; override;
     79  end;
     80
    5881resourcestring
    5982  SOpenOutputFailed = 'Failed opening audio output';
     
    6184
    6285implementation
     86
     87{ TAudioSystemManagerItem }
     88
     89
     90{ TAudioSystemManager }
     91
     92procedure TAudioSystemManager.FillStringList(StringList: TStrings);
     93var
     94  I: Integer;
     95begin
     96  StringList.Clear;
     97  for I := 0 to Systems.Count - 1 do
     98  with TAudioSystemManagerItem(Systems[I]) do
     99    StringList.AddObject(Name, Systems[I]);
     100end;
     101
     102procedure TAudioSystemManager.Register(Name: string;
     103  SystemClass: TAudioSystemClass; PlayerClass: TPlayerClass);
     104var
     105  NewItem: TAudioSystemManagerItem;
     106begin
     107  NewItem := TAudioSystemManagerItem.Create;
     108  NewItem.Name := Name;
     109  NewItem.SystemClass := SystemClass;
     110  NewItem.PlayerClass := PlayerClass;
     111  Systems.Add(NewItem);
     112end;
     113
     114constructor TAudioSystemManager.Create;
     115begin
     116  Systems := TObjectList.Create;
     117end;
     118
     119destructor TAudioSystemManager.Destroy;
     120begin
     121  Systems.Free;
     122  inherited Destroy;
     123end;
    63124
    64125{ TPlayer }
  • CoolAudio/UCoolAudio.pas

    r275 r278  
    33{$mode Delphi}{$H+}
    44
     5{$DEFINE AudioSystemWindows}
     6{$DEFINE AudioSystemMPlayer}
     7{$DEFINE AudioSystemFMOD}
     8
    59interface
    610
    711uses
    8   Classes, SysUtils;
     12  Classes, SysUtils,
     13  {$IFDEF AudioSystemWindows}
     14  UAudioSystemWindows,
     15  {$ENDIF}
     16  {$IFDEF AudioSystemMPlayer}
     17  UAudioSystemMPlayer,
     18  {$ENDIF}
     19  {$IFDEF AudioSystemFMOD}
     20  UAudioSystemFMOD,
     21  {$ENDIF}
     22  UAudioSystem;
     23
     24var
     25  AudioSystemManager: TAudioSystemManager;
    926
    1027implementation
    1128
     29initialization
     30
     31AudioSystemManager := TAudioSystemManager.Create;
     32{$IFDEF AudioSystemWindows}
     33AudioSystemManager.Register('Windows', TAudioSystemWindows, TPlayerWindows);
     34{$ENDIF}
     35{$IFDEF AudioSystemMPlayer}
     36AudioSystemManager.Register('MPlayer', TAudioSystemMPlayer, TPlayerMPlayer);
     37{$ENDIF}
     38{$IFDEF AudioSystemFMOD}
     39AudioSystemManager.Register('FMOD', TAudioSystemFMOD, TPlayerFMOD);
     40{$ENDIF}
     41
     42finalization
     43
     44AudioSystemManager.Free;
     45
    1246end.
    1347
Note: See TracChangeset for help on using the changeset viewer.