Wav bei Wiedergabe manipulieren
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? |
Re: Wav bei Wiedergabe manipulieren
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 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