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
 
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
 


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 09:04 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