AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Wav bei Wiedergabe manipulieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wav bei Wiedergabe manipulieren

Ein Thema von horst · begonnen am 2. Dez 2003 · letzter Beitrag vom 5. Dez 2003
Antwort Antwort
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#1

Wav bei Wiedergabe manipulieren

  Alt 2. Dez 2003, 20:37
wer weis rat
ich habe eine wav datei die besteht nur aus einen gleichbleibenden ton z.b. Trompete ist ca. 3 sek lang
jetzt möchte ich die wav mit hilfe von parametern gesteuert abspielen über die parameter möchte ich die Tonhöhe (Frequenz) die Tonlänge (Wiedergabelänge) und die Tonlautstärke mitgeben z.b. so

playwav(hoch,lang,laut,tromp.wav);
hat jemand eine idee?
  Mit Zitat antworten Zitat
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Wav bei Wiedergabe manipulieren

  Alt 5. Dez 2003, 19:20
das mit der tonhöhe und der lautstärke habe ich mittlerweile hinbekommen, jetzt beliebt nur noch ein problem.
die wav-datei die ich habe hat einen ton von exact 3 sekunden länge ich möchte den ton aber 6 sekunden hören.
ich arbiete mit waveout usw. gibt es da soetwas wie ein loop der den ton zweimal ohne pause zwischendrin abspielt.
hier kurz mein bisheriger code, damit ihr besser wisst was ich meine
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 with lpFormat^ do
  begin
   wFormatTag:=WAVE_FORMAT_PCM;
   nChannels:=1;
   ////////////////////////////////////////////////////////////////////////////////
   /// Tonhöhe
   nSamplesPerSec:= Scrollbar1.Position; // Hier die Tonhöhe anpassen
   ////////////////////////////////////////////////////////////////////////////////
   wBitsPerSample:= 16;
   nBlockAlign:= (nChannels*wBitsPerSample)div 8;
   cbSize:=0;
  end;
 ////////////////////////////////////////////////////////////////////////////////
 /// Lautstärke
 LVol := Scrollbar2.position; // max. is 65535
 RVol := Scrollbar2.Position; // max. is 65535
 SetWaveVolume(MakeLong(LVol, RVol));
 ////////////////////////////////////////////////////////////////////////////////
 // tonlänge
 // hier will ich noch die länge des tones verdoppeln
 ////////////////////////////////////////////////////////////////////////////////
 waveOutOpen(wavehandle,WAVE_MAPPER,lpFormat,0,0,CALLBACK_NULL);
 with lpwheader^ do
  begin
   lpData:=puffer;
   dwBufferLength:=44132;
  end;
 waveOutPrepareHeader(wavehandle^,lpwheader,sizeof(lpwheader^));
 waveOutWrite(wavehandle^,lpwheader,sizeof(lpwheader^));
 repeat until (lpwheader^.dwFlags and WHDR_DONE = WHDR_DONE);
 waveOutUnPrepareHeader(wavehandle^,lpwheader,sizeof(lpwheader^));
end;

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
 label4.caption := inttostr(Scrollbar1.position);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//nun etwas aufräumen
 waveOutClose(wavehandle^);
 dispose(wavehandle);
 dispose(lpFormat);
 dispose(lpwheader);
 close;
end;

function TForm1.SetWaveVolume(const AVolume: DWORD): Boolean;
var
  WaveOutCaps: TWAVEOUTCAPS;
begin
  Result := False;
  if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf(WaveOutCaps)) = MMSYSERR_NOERROR then
    if WaveOutCaps.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
      Result := WaveOutSetVolume(WAVE_MAPPER, AVolume) = MMSYSERR_NOERROR;
end;

procedure TForm1.ScrollBar2Change(Sender: TObject);
begin
 label3.Caption := inttostr(scrollbar2.position);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 new(wavehandle);
 new(lpFormat);
 new(lpwheader);
 //Datei öffnen und einlesen
 hmio:= mmioopen('1.wav',nil, MMIO_READ or MMIO_ALLOCBUF);
 MMioSeek(hmio,0,SEEK_SET);
 getmem(puffer,44132);
 mmioRead(hmio,puffer,44132);
end;

procedure TForm1.ScrollBar3Change(Sender: TObject);
begin
 label6.Caption := inttostr(scrollbar3.position);
end;

end.
  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 21:55 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