Changeset 666 for trunk/Music.pas
- Timestamp:
- Jul 9, 2025, 10:36:23 PM (14 hours ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Music.pas
r665 r666 12 12 TMusicPlayer = class 13 13 private 14 FVolume: Single; 14 15 PlayerIndex1: Integer; 15 16 InputIndex1: Integer; … … 18 19 InputLength: Integer; 19 20 AutoPlayNext: Boolean; 21 function GetPlaying: Boolean; 20 22 procedure Initialize; 21 23 procedure EndPlay(PlayerIndex: cint32); 22 24 function GetNextPlaylistItem: string; 23 25 procedure PlayNext(Data: PtrInt); 26 procedure SetVolume(AValue: Single); 24 27 public 25 28 Playlist: TStringList; … … 30 33 procedure Play; 31 34 procedure Stop; 35 property Playing: Boolean read GetPlaying; 36 property Volume: Single read FVolume write SetVolume; 32 37 end; 33 38 … … 78 83 end; 79 84 85 function TMusicPlayer.GetPlaying: Boolean; 86 begin 87 Result := PlayerIndex1 >= 0; 88 end; 89 80 90 procedure TMusicPlayer.EndPlay(PlayerIndex: cint32); 81 91 begin 82 if AutoPlayNext and (PlayerIndex = PlayerIndex1) then Application.QueueAsyncCall(PlayNext, 0); 92 if AutoPlayNext then begin 93 if PlayerIndex = PlayerIndex1 then Application.QueueAsyncCall(PlayNext, 0); 94 end else PlayerIndex1 := -1; 83 95 end; 84 96 … … 95 107 end; 96 108 109 procedure TMusicPlayer.SetVolume(AValue: Single); 110 begin 111 if FVolume = AValue then Exit; 112 FVolume := AValue; 113 if FVolume > 1 then FVolume := 1; 114 if FVolume < 0 then FVolume := 0; 115 if Playing then 116 uos_InputSetDSPVolume(PlayerIndex1, InputIndex1, Volume, Volume, True); 117 end; 118 97 119 constructor TMusicPlayer.Create; 98 120 begin 99 121 Playlist := TStringList.Create; 122 PlayerIndex1 := -1; 123 FVolume := 1; 100 124 end; 101 125 … … 154 178 155 179 AutoPlayNext := False; 156 uos_Stop(PlayerIndex1);180 if PlayerIndex1 >= 0 then uos_Stop(PlayerIndex1); 157 181 158 182 Inc(PlayerIndex1); … … 171 195 uos_InputSetPositionEnable(PlayerIndex1, InputIndex1, 1); 172 196 InputLength := uos_InputLength(PlayerIndex1, InputIndex1); 173 uos_InputAddDSPVolume(PlayerIndex1, InputIndex1, 0.5, 0.5);197 uos_InputAddDSPVolume(PlayerIndex1, InputIndex1, Volume, Volume); 174 198 175 199 OutputIndex1 := uos_AddIntoDevOut(PlayerIndex1, -1, -1, -1, -1, -1, -1, -1); … … 185 209 procedure TMusicPlayer.Stop; 186 210 begin 187 Initialize;188 211 AutoPlayNext := False; 189 uos_Stop(PlayerIndex1); 212 if PlayerIndex1 >= 0 then begin 213 Initialize; 214 uos_Stop(PlayerIndex1); 215 end; 216 PlayerIndex1 := -1; 190 217 end; 191 218
Note:
See TracChangeset
for help on using the changeset viewer.