Hallo,
ich hab mich da etwas mit GetChannelsPeakValues verzettelt und finde die Lösung einfach nicht.
Hat da jemand einen Tip ?
Code:
procedure TfrmMain.Timer100msTimer(Sender: TObject);
var
Levels: array[0..1] of Single;
ChannelCount: UInt;
begin
Peak.GetMeteringChannelCount(ChannelCount);
if (ChannelCount = 2) then begin
(* NUR ZUR AUFRUF-INFO:
IAudioMeterInformation = interface(IUnknown)
['{C02216F6-8C67-4B5B-9D00-D008E73E0064}']
function GetPeakValue(out pfPeak: Single): HRESULT; stdcall;
function GetMeteringChannelCount(out pnChannelCount: UINT): HRESULT; stdcall;
function GetChannelsPeakValues(u32ChannelCount: UINT; out afPeakValues: pSingle): HRESULT; stdcall;
function QueryHardwareSupport(out pdwHardwareSupportMask: UINT): HRESULT; stdcall;
end;
*)
Peak.GetChannelsPeakValues(ChannelCount, @Levels[0]); <- Hier hab ich mich festgefummelt mit dem @Levels, das ist falsch! Soll ja pSingle sein (?)
VuMeterL.Position := Round(Levels[0] * 100);
VuMeterR.Position := Round(Levels[1] * 100);
end else begin
Peak.GetPeakValue(Levels[0]);
VuMeterL.Position := Round(Levels[0] * 100);
VuMeterR.Position := VuMeterL.Position;
end;
end;