AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mathe Porblem

Ein Thema von Alf · begonnen am 15. Jun 2005 · letzter Beitrag vom 16. Jun 2005
Antwort Antwort
Seite 1 von 3  1 23      
Alf

Registriert seit: 3. Mai 2005
36 Beiträge
 
#1

Mathe Porblem

  Alt 15. Jun 2005, 20:19
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
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#2

Re: Mathe Porblem

  Alt 15. Jun 2005, 20:31
[persönliche meinung]ich versteh nicht was ich machen soll[/persönliche meinung]
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Alf

Registriert seit: 3. Mai 2005
36 Beiträge
 
#3

Re: Mathe Porblem

  Alt 15. Jun 2005, 20:43
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
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Mathe Porblem

  Alt 15. Jun 2005, 21:01
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 ):
Delphi-Quellcode:
if Time < s then
  Volume := e / s * Time
else
  Volume := e;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Alf

Registriert seit: 3. Mai 2005
36 Beiträge
 
#5

Re: Mathe Porblem

  Alt 15. Jun 2005, 21:23
hi

der Anfang ist gut, aber wo bleibt der pegel entwert

der ist auch vorgegeben.

oder hab ich das falsch gelesen?
  Mit Zitat antworten Zitat
Alf

Registriert seit: 3. Mai 2005
36 Beiträge
 
#6

Re: Mathe Porblem

  Alt 15. Jun 2005, 21:31
hi

Sorry hab das gerade ausprobiert funct leider nicht

hoffe auf weitere Hilfe.

Gruss Alf
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#7

Re: Mathe Porblem

  Alt 15. Jun 2005, 21:36
Ich hatte eigentlich gedacht, dass du dir den Endwert selbst herleitest .
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 . Zeig mal deine Code-Umsetzung.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Mathe Porblem

  Alt 15. Jun 2005, 21:51
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 ;
  Mit Zitat antworten Zitat
Alf

Registriert seit: 3. Mai 2005
36 Beiträge
 
#9

Re: Mathe Porblem

  Alt 15. Jun 2005, 21:52
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
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Mathe Porblem

  Alt 15. Jun 2005, 22:00
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!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 10:05 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