![]() |
Audio CD, Geschwindigkeit verändern
Ich bekomme es einfach nicht gebacken das Wiedergabetempo (nicht Pitch!!!) zu verändern.
Hier die relevanten Codestellen:
Delphi-Quellcode:
chan2 ist vom Typ HSTREAM
procedure TForm1.PlayTrack(drive, track: DWORD);
begin if (stream[drive]) then BASS_CD_StreamSetTrack(stream[drive],track) // already have a stream, so just set the track else begin stream[drive] := BASS_CD_StreamCreate(drive, track, BASS_CD_FREEOLD); // create stream BASS_ChannelSetSync(stream[drive], BASS_SYNC_END, 0, @EndSync, 0); // set end syc end; if (drive = DWORD(curdrive)) then trkPos.Max := BASS_ChannelGetLength(stream[drive]) div 176400; // set pos scroller range BASS_ChannelPlay(stream[drive], False); // start playing end; procedure TForm1.UpdateTrackList; var vol, spd: DWORD; cdtext, t: PChar; a, tc, l: Integer; text, tag: String; begin tc := BASS_CD_GetTracks(curdrive); lstTracks.Items.Clear; if (tc = -1) then // no CD Exit; cdtext := BASS_CD_GetID(curdrive, BASS_CDID_TEXT); // get CD-TEXT for a := 0 to tc - 1 do begin l := BASS_CD_GetTrackLength(curdrive, a); text := Format('Track %.2d', [a + 1]); if (cdtext <> nil) then begin t := cdtext; tag := Format('TITLE%d=', [a + 1]); // the CD-TEXT tag to look for while (t <> nil) do begin if (Copy(t, 1, Length(tag)) = tag) then // found the track title... begin text := Copy(t, Length(tag)+1, Length(t) - Length(tag)); // replace "track x" with title Break; end; t := t + Length(t) + 1; end; end; if (l = -1) then text := text + ' (data)' else begin l := l div 176400; text := text + Format(' (%d:%.2d)', [l div 60, l mod 60]); end; lstTracks.Items.Add(text) end; a := BASS_CD_StreamGetTrack(stream[curdrive]); if (a <> -1) then // this drive has a stream begin lstTracks.ItemIndex := LOWORD(a); // select current track trkPos.Max := BASS_ChannelGetLength(stream[curdrive]) div 176400; // set pos scroller range end vol := 100; spd := 44100; BASS_ChannelGetAttributes(stream[curdrive], spd, vol, l); // get speed & volume trkVol.Position := 100 - vol; // set volume slider pos trkSpeed.Position := spd div 441; // set speed slider pos GroupBox2.Caption := Format('Speed - %d%%', [trkVol.Position]); end; //ab hier scheitert es procedure TCDPlayer.Button2Click(Sender: TObject); begin chan2:=stream[curdrive]; BASS_FX_TempoCreate(chan2, BASS_STREAM_DECODE); BASS_FX_TempoGetSource(chan2); BASS_FX_TempoSet(chan2, LMDTrackBar10.Position, 44100, +100); Label50.Caption := Format('%d %%', [LMDTrackBar10.Position]); end; |
Re: Audio CD, Geschwindigkeit verändern
Hi
welche version benutzt du? BASS_CD_FREEOLD wird in BASS_CD_StreamCreate nicht mehr benutzt. versuche es mal mit mit.
Delphi-Quellcode:
chan := BASS_CD_StreamCreate(drive, track, BASS_STREAM_DECODE or BASS_STREAM_AUTOFREE); If (chan = 0) then begin Error() end; chan := BASS_FX_TempoCreate(chan, BASS_FX_FREESOURCE or BASS_STREAM_AUTOFREE); If (chan = 0) then begin Error() end // play new created stream BASS_ChannelPlay(chan, FALSE);
Delphi-Quellcode:
BASS_SetConfig(
BASS_CONFIG_CD_FREEOLD, BOOL freeold ); History ======= 2.3.0.3 - 9/7/2007 ------------------ * Vista compatibility fix 2.3.0.2 - 25/11/2006 -------------------- * Drive letter support when using ASPI on NT-based Windows BASS_CD_GetDriveLetter 2.3.0.1 - 27/6/2006 ------------------- * Pregap length retrieval BASS_CD_GetTrackPregap * MusicBrainz ID generation BASS_CDID_MUSICBRAINZ (BASS_CD_GetID type) 2.3 - 21/5/2006 --------------- * Adjustable read speed BASS_CD_SetSpeed BASS_CD_GetSpeed * Automatic speed reduction upon read errors BASS_CONFIG_CD_AUTOSPEED (BASS_SetConfig option) BASS_SYNC_CD_SPEED (BASS_ChannelSetSync type) * Configurable read error retries BASS_CONFIG_CD_RETRY (BASS_SetConfig option) * Skip past read errors BASS_CONFIG_CD_SKIPERROR (BASS_SetConfig option) * Error sync now triggered by every read error (not just ending playback) BASS_SYNC_CD_ERROR (BASS_ChannelSetSync type) 2.2 - 2/10/2005 --------------- * Support for new plugin system (BASS_PluginLoad) * Track changing BASS_CD_StreamSetTrack CDTEST example updated * FREEOLD flag replaced by a config option BASS_CONFIG_CD_FREEOLD (BASS_SetConfig option) BASS_CD_FREEOLD *removed* * Info structure "size" member removed BASS_CD_INFO structure |
Re: Audio CD, Geschwindigkeit verändern
Bass / Bass_fx / Basscd Version 2.2
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz