Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mathe Porblem (https://www.delphipraxis.net/47752-mathe-porblem.html)

Alf 15. Jun 2005 19:19


Mathe Porblem
 
Hi Leute

möchte folgende Aufgabe lösen und komm nicht ans Ziel.

ein automatisches Fadin oder Fadout.

in Abhängigkeit von der vorgegeben Zeit ( Tin o. Tout ) und dem gesetzten Pegel ( din o. dout )

meine Versuche scheitern an der Mathelogik komm einfach nicht drauf.

bis zu diesem Versuch bin ich nicht weiter gekommen.

Delphi-Quellcode:

procedure TForm1.Timer1Timer(Sender: TObject);
var
   s: TTime;
   pTime: LongInt;
   c: Real;
   tin:real;
begin


     tin:=10; //  Testwerte
     if CheckBox1.Checked then
        ptime:=MediaPlayer1.Length-MediaPlayer1.Position
     else
         ptime:=MediaPlayer1.Position;
     if fin >=1000 then
      exit
     else
     begin
         fin:=(fin+15.6/tin); //15.6 entspricht etwa 1sec

         c:=sqr(fin)/1000; //dies ergibt etwa ein log wert für Volumen
                            //der untere Bereich bekommt dadurch ein weicheres Fade in
         SetMPVolume(MediaPlayer1,trunc(c));


         trackbar1.selstart:=(100-trunc(c) div 10);  //der Balken wird mit bewegt
         label5.caption:=inttostr(trackbar1.selstart);
         label7.Caption:=inttostr((trunc(c) div 10));
         Label2.Caption:='Time :'+zeit(ptime);
     end;
end;
dieses (Fade in) funct aber nur in dieser Testfase mit Volumen von 0-1000
die Zeiteinstellung ( Tin ) funct auch, wie auch immer?
in mein Orginalproject aber funct nichts mehr.

ich hofe ihr könnt mir da Helfen.

Gruss Alf

nailor 15. Jun 2005 19:31

Re: Mathe Porblem
 
[persönliche meinung]ich versteh nicht was ich machen soll[/persönliche meinung]

Alf 15. Jun 2005 19:43

Re: Mathe Porblem
 
Hi

Zitat:


ich versteh nicht was ich machen soll
sorry, aber vielleicht das Problem lesen?

für diese ganze Umsetzung gibt es sicher die Möglichkeit eine Formel zu erstellen?
nur komm ich nicht darauf.

z.B.

Tin ist die Fadein Zeit (z.B 0.5sec oder 10sec usw.)
Din ist der Volumenentwert (z.B von 0- (800= Entwert)
und nun starte ich den Player und die Musik wird weich eingefadet.

Aber wie das ganze umsetzen?


Gruss Alf

Khabarakh 15. Jun 2005 20:01

Re: Mathe Porblem
 
Ich muss sagen, dass ich es auch nicht ganz verstanden habe.
Also, du willst ein FadeIn/Out beim Mediaplayer haben? Z.B.: Der Startwert der Lautsärke ist 0, diese soll in s Sekunden auf einen Endwert e ansteigen (Linear?)?
Das wäre dann (hoffentlich :wink:):
Delphi-Quellcode:
if Time < s then
  Volume := e / s * Time
else
  Volume := e;

Alf 15. Jun 2005 20:23

Re: Mathe Porblem
 
hi

der Anfang ist gut, aber wo bleibt der pegel entwert

der ist auch vorgegeben.

oder hab ich das falsch gelesen?

Alf 15. Jun 2005 20:31

Re: Mathe Porblem
 
hi

Sorry hab das gerade ausprobiert funct leider nicht

hoffe auf weitere Hilfe.

Gruss Alf

Khabarakh 15. Jun 2005 20:36

Re: Mathe Porblem
 
Ich hatte eigentlich gedacht, dass du dir den Endwert selbst herleitest :wink: .
Delphi-Quellcode:
if Time < sIn then
  Volume := e / sIn * Time
else
  if Time > (Length - sOut) then
    Volume := e - e / sOut * (Time - (Length - sOut))
  else
    Volume := e;
[edit]Tolle Fehlerbeschreibung :zwinker: . Zeig mal deine Code-Umsetzung.

Jelly 15. Jun 2005 20:51

Re: Mathe Porblem
 
Du willst, jetzt rein mathematisch gesehen, zwischen 2 y-Werten (y0=Anfangswert zu y1=Endwert) eine Funktion linear laufen lassen, und zwar über den Bereich x0 bis x1 (x entspricht in deinem Fall der Zeit, also x0=t0=0 bis x1=t1=5 sec.)

Deine Gleichung lautet, da du ja einen linearen Zusammenhang vorgibst,

Code:
y = k*x + y0
Dabei ist k die Steigung, die du noch zu ermitteln hast. Du hast aber noch einen Fixpunkt, den du dir vorgibst, nämlich

Code:
y1 = k*x1 + y0
Daraus läßt sich die Steigung k bestimmen
Code:
=> k = (y1-y0) / x1
Und somit wird deine Funktion:

Code:
y = [(y1-y0)/x1] * x + y0
Um dies jetzt in Delphi umzusetzen, lässt du x über den Bereich x0 bis x1 in beliebig kleinen Schritten variieren. Etwa so:

Delphi-Quellcode:
begin
     x := x0 ;
     k := (y1-y0) / x1 ;
     Schrittweitex := 0.1 ;
     while x <= x1 do begin
          y := k*x + y0 ;
          // SetzeLautstärke
          // eventuell noch eine Pause einbauen, da die Schleife sonst zu schnell durchläuft.
          // Alternativ kannst du das Ganze auch mit einem Timer lösen
          x := x + Schrittweitex
     end ;
end ;

Alf 15. Jun 2005 20:52

Re: Mathe Porblem
 
hi


Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
   s: TTime;
   pTime,e : LongInt;
   c: Real;
   tin:real;
begin

     e:=800; //Volumen endwert
     tin:=10; //  Testwerte tin
     if CheckBox1.Checked then
        ptime:=MediaPlayer1.Length-MediaPlayer1.Position
     else
         ptime:=MediaPlayer1.Position;

     if Time < tin then
        label2.caption:=floattostr(e/tin*Time) //ergebnis 72,xxxxxxxxxxxxx zahlen
                                               //nix von 0-800 
     else
     timer1.Enabled:=false;

.........
irgendwo ist da noch der haken oder?

hi jelly
Zitat:


Alternativ kannst du das Ganze auch mit einem Timer lösen

das ganze muss über einen Timer Laufen!


gruss Alf

Jelly 15. Jun 2005 21:00

Re: Mathe Porblem
 
Zitat:

Zitat von Alf
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
   s: TTime;
   pTime,e : LongInt;
   c: Real;
   tin:real;
begin

     e:=800; //Volumen endwert
     tin:=10; //  Testwerte tin
     if CheckBox1.Checked then
        ptime:=MediaPlayer1.Length-MediaPlayer1.Position
     else
         ptime:=MediaPlayer1.Position;

     if Time < tin then
        label2.caption:=floattostr(e/tin*Time) //ergebnis 72,xxxxxxxxxxxxx zahlen
                                               //nix von 0-800 
     else
     timer1.Enabled:=false;

.........

Was bitte schön ist denn bei dir "Time"? Bei Benutzung gibt Delhi dir die aktuelle Zeit wieder. Ich glaub nicht dass es das ist was du barauchst!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.
Seite 1 von 3  1 23      

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