Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Cross-Fader (https://www.delphipraxis.net/9828-cross-fader.html)

pmc 5. Okt 2003 14:36


Cross-Fader
 
Hallo,

Ich möchte mir einen Crossfader programmieren kann mir da jdm. weiterhelfen....
Wie soll ich das am besten machen???

flomei 5. Okt 2003 14:40

Re: Cross-Fader
 
Ich wuerde dafür ne Trackbar nehmen...
Die hat am meisten Ähnlichkeit mit nem richtigen Crossfader. Naja und dann musst du ins OnChange Ereignis eintragen was du machen willst...

MfG Florian :hi:

pmc 5. Okt 2003 14:46

Re: Cross-Fader
 
Das ist mir schon klar!!!!!

Nur wie programmiere ich das mit der Lautstärke???
Dafür bracuhe ich dann doch auch zwei kanäle oderso???

flomei 5. Okt 2003 14:50

Re: Cross-Fader
 
Schon mal nach Hier im Forum suchenSETVOLUME gesucht? Nein? Würd ich mal machen...

MfG Florian :hi:

pmc 5. Okt 2003 14:56

Re: Cross-Fader
 
JA ich hab schonmal danach gesucht...
aber das sind nur halbe sachen...
Auserdem ist das nur für MasterVolumen und richtig verständlich sind die code-schnipsel auch nicht...besondesr wenn man die units nirgens finden kann!!!!

Also für produktive hilfe wäre ich sehr dankbar.

flomei 5. Okt 2003 15:02

Re: Cross-Fader
 
Welche Lautstärke willst du denn dann ändern? Die der einzelnen Kanäle (also praktisch die Balance) oder was?
Arbeitest du mit dem TMediaPlayer oder willst du die Systemlautstärke ändern oder was?
Nen bisschen mehr Informationen wären nicht schlecht!!!

MfG Florian :hi:

pmc 5. Okt 2003 15:05

Re: Cross-Fader
 
Am besten wäre :

wenn ich zwei mediplayer komponenten nehmen könnte und dann zwischen den beiden hin und her faden könnte!!!

flomei 5. Okt 2003 15:11

Re: Cross-Fader
 
Aha! Jetzt ist verständlich was du machen willst, leider habe keine Idee wie man das machen könnte... :(
Die beiden MediaPlayer spielen die Dateien ja immer in der gleichen Lautstärke ab, nur das Mastervolume könnte man ändern. :roll: Vielleicht fällt ja jemand anders eine Möglichkeit ein.

MfG Florian :hi:

red- 8. Okt 2003 13:46

Re: Cross-Fader
 
Ich glaube das mit Mediakomponenten zu machen ist nur möglich wenn du auch 2 soundkarten besitzt. Wenn du 2 Wave-Dateien abspielen willst, kannst du die beide einlesen und mit WaveOutOpen einen Stream erstellen in dem du die beiden Waves dann zusammenmischst, ungefähr so:

(WaveDaten1 * FadeLevel + WaveDaten2 * (100-FadeLevel))div 100

wenn FadeLevel von 0 bis 100 geht...


Allerdings solltest du mit mmSystem aufpassen ;) Ich habe so einige Probleme dass mit Windows 98 zum Laufen zu kriegen, aber hey... :D kannst ja noch DirectSound benutzen

MfG,
red

pmc 8. Okt 2003 15:04

Re: Cross-Fader
 
Hmm so ähnlich hab ich mir das auch gedacht....
Ich weiss auch wie ein crossfader funktioniert....
Aber wie programmiere ich sowas????

Niko 8. Okt 2003 15:58

Re: Cross-Fader
 
Informationen zu DirectSound findest du im MS Platform-SDK.
Einfacher geht es, wenn du eine Bibliothek wie fmod (für Freeware kostenlos) oder entsprechende Komponenten verwendest. Dort kannst du mehrere Kanäle parallel abspielen lassen und die Lautstärke über Funktionsaufrufe einfach ändern.

keineahnung1 30. Jan 2005 16:30

Re: Cross-Fader
 
hm ich weiß zwar nicht wie alt des hier ist, aber fals mal jemand ne lösung mit 2 mediaplayer kompos sucht, is des eigentlich ganz einfach zu machen:

http://www.swissdelphicenter.ch/de/showcode.php?id=618

da is der code

nun kann man die funktion aufrufen

SetMPVolume(MediaPlayer1, lautstärke);

ich hab diese in einen timer mit intaval 100 ms getan, und lass ich halt so wie ich des haben will die lautstärke von mediaplayer1 hochregeln und von mediaplayer2 runter.

ganz easy, da muss man garnix mit 2 soundkarten machen :-)

Admirandis 4. Sep 2005 00:09

Re: Cross-Fader
 
Es geht auch noch viel einfacher!
Such mal nach einer Komponente namens TBassDllPlayerEx! Das ist ein Mediaplayer für bisschen anspruchsvollere sachen! Von denen legst du dann 2 Stück auf deine Form!
Die Komponente hat Volume bequem als Byte zum Einstellen! Sprich du schreibst einfach BassDllPlayerEx1.volume := ...
Diese Lautstärke gilt dann nur für diesen Player! Ich glaub, damit müsstest du weiterkommen!
Thomy

PS: Maximale Lautstärke entspricht 100!
Cya

Nils_13 4. Sep 2005 08:49

Re: Cross-Fader
 
Zitat:

Zitat von Niko
Informationen zu DirectSound findest du im MS Platform-SDK.
Einfacher geht es, wenn du eine Bibliothek wie fmod (für Freeware kostenlos) oder entsprechende Komponenten verwendest. Dort kannst du mehrere Kanäle parallel abspielen lassen und die Lautstärke über Funktionsaufrufe einfach ändern.

Jetzt muss ich mich mal bedanken, die Komponenten sind so krass :shock:

turboPASCAL 4. Sep 2005 09:41

Re: Cross-Fader
 
Nach Hier im Forum suchenCrossfade suchen, das ist eine Hier im Forum suchenBASS.DLL Lösung. Oder wie schon erwähnt Hier im Forum suchenBassDllPlayerEx.

Der Mediaplayer ist immer so 'ne Sache bei verschiedenen PC's zB. bei der wiedergabe von MP3's.


PS.: Ich hasse den Mediaplayer (in Delphi) :stupid:

padavan 18. Nov 2005 11:46

Re: Cross-Fader
 
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
uses
MMSystem;

Delphi-Quellcode:
(* Lautstärke Mediaplayer *)
const
  MCI_SETAUDIO = $0873;
  MCI_DGV_SETAUDIO_VOLUME = $4002;
  MCI_DGV_SETAUDIO_ITEM = $00800000;
  MCI_DGV_SETAUDIO_VALUE = $01000000;
  MCI_DGV_STATUS_VOLUME = $4019;

  type
    MCI_DGV_SETAUDIO_PARMS = record
    dwCallback: DWORD;
    dwItem: DWORD;
    dwValue: DWORD;
    dwOver: DWORD;
    lpstrAlgorithm: PChar;
    lpstrQuality: PChar;
  end;

type
  MCI_STATUS_PARMS = record
    dwCallback: DWORD;
    dwReturn: DWORD;
    dwItem: DWORD;
    dwTrack: DWORD;
  end;
Delphi-Quellcode:
procedure TForm1.SetMPVolume(MP: TMediaPlayer; Volume: Integer);
  { Volume: 0 - 1000 }
var
  p: MCI_DGV_SETAUDIO_PARMS;
begin
  { Volume: 0 - 1000 }
  p.dwCallback := 0;
  p.dwItem := MCI_DGV_SETAUDIO_VOLUME;
  p.dwValue := Volume;
  p.dwOver := 0;
  p.lpstrAlgorithm := nil;
  p.lpstrQuality := nil;
  mciSendCommand(MP.DeviceID, MCI_SETAUDIO,
    MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@p));
end;
Delphi-Quellcode:
SetMPVolume(MediaPlayer1, Trackbar_volume.Position);
Weiß nicht, ob´s noch was nützt, aber hiermit stelle ich in meinem Player die Lautstärke des TMediaplayers ein und nicht die der Soundkarte.
Wenn mal einer versucht das mit 2 Mediaplayerkomponenten umzusetzen....
Ich probiers später mal!

Also hab´s probiert und es funzt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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