AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Audio CD, Geschwindigkeit verändern
Thema durchsuchen
Ansicht
Themen-Optionen

Audio CD, Geschwindigkeit verändern

Ein Thema von mlspider · begonnen am 14. Aug 2007 · letzter Beitrag vom 14. Aug 2007
Antwort Antwort
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#1

Audio CD, Geschwindigkeit verändern

  Alt 14. Aug 2007, 10:59
Ich bekomme es einfach nicht gebacken das Wiedergabetempo (nicht Pitch!!!) zu verändern.

Hier die relevanten Codestellen:

Delphi-Quellcode:
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;
chan2 ist vom Typ HSTREAM
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#2

Re: Audio CD, Geschwindigkeit verändern

  Alt 14. Aug 2007, 20:37
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
  Mit Zitat antworten Zitat
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Audio CD, Geschwindigkeit verändern

  Alt 14. Aug 2007, 20:45
Bass / Bass_fx / Basscd Version 2.2
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz