amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Mathematiker hier? [ - Search - New posts - Register - Login - ]

-1- 2 [ - Post reply - ]

2005-05-17, 18:59 h

MaikG
Posts: 5172
User
Wie berechnet man aus Blocks(cdda) die Zeit?
Ein Titel ist z.B. 3:46:59 mit 17009 Blocks und 38.15 MB
laut MakeCD. 75 Blöcke sollen 1 Sekunde sein.
1 Sekunde sollen 176400 Byte sein.
Ich habe zwar diverse Gleichungen aufgesellt, bekomme
dann auch das richtige Ergebniss, nur beim nächsten
Track Funktioniert es nicht.
Z.b. 03:26:60, 15510(34,78MB), entweder MakeCD rundet
irgendwo und/oder im Hanbuch stehen falsche werte.
Hat jemand eine Idee dazu?

[ - Answer - Quote - Direct link - ]

2005-05-17, 19:08 h

Supimajo
Posts: 1265
User


[ Dieser Beitrag wurde von Supimajo am 30.07.2005 um 19:42 Uhr editiert. ]

[ - Answer - Quote - Direct link - ]

2005-05-17, 20:01 h

Holger
Posts: 8116
User
@MaikG:
Was genau willst Du denn machen und wie äußert sich die Differenz, von der Du sprichst?

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2005-05-17, 22:16 h

MaikG
Posts: 5172
User
@Supimajo

Ich will doch nur die laufzeit aus den Blöcken ermitteln.


>Was genau willst Du denn machen und wie äußert sich die Differenz,
>von der Du sprichst?

Ich will selbst die Liedlänge ohne MakeCD berechnen.

Ich hatte schon die Rechnung:

Blöcke*2352/176400/60

Als Ergebniss wollte ich die Zeit, Funktionierte aber nicht.
Minuten stimmen, sekunden und ms nicht.

Ich habe dann rückwärts gerechnet, 176400 Byte durch z.B.177500 Byte
ersetzt. Dann stimmts für ein Lied, für den Rest nicht, weicht um
einige Sekunden ab.

Dann hatte ich auch versucht direkt mit Blöcken zu rechnen
Blöcke/75/60. Geht nicht, wieder rückwärts gerechnet mit z.B.
75.6756979 ging es wieder mit einem Lied mit dem Rest nicht.

[ - Answer - Quote - Direct link - ]

2005-05-17, 22:45 h

thomas
Posts: 7717
User

Ein Block ist eine 75stel Sekunde. Also Blöcke / 75 = Sekunden.

Die Blockgröße brauchst du nur, wenn du die Daten als Datei hast.

Dateigröße / 2352 = Anzahl Blöcke und Blöcke / 75 = Sekunden, also Dateigröße / 2352 / 75 = Sekunden oder Dateigröße / 176400 = Sekunden.

Siehe auch http://thomas-rapp.homepage.t-online.de/faq/faqcdbrenner.html#6


Nach meiner Rechnung sind 17009 Blöcke 3 Minuten und 47,2 Sekunden und 15510 Blöcke sind 3 Minuten und 26,8 Sekunden.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-05-17, 23:07 h

MaikG
Posts: 5172
User
>Ein Block ist eine 75stel Sekunde. Also Blöcke / 75 = Sekunden.


17009/75 = 226.786666 / 60 = 3.77977776


>Die Blockgröße brauchst du nur, wenn du die Daten als Datei hast.


>Nach meiner Rechnung sind 17009 Blöcke 3 Minuten und 47,2 Sekunden
>und 15510 Blöcke sind 3 Minuten und 26,8 Sekunden.

Nach meiner Rechnung sinds 3 Minuten 77 sekunden und 98 ms???

[ - Answer - Quote - Direct link - ]

2005-05-17, 23:14 h

Holger
Posts: 8116
User
Zitat:
Original von MaikG:
Nach meiner Rechnung sinds 3 Minuten 77 sekunden und 98 ms???

Lies Dir Dein Posting nochmal in Ruhe durch. Eine Minute sind 60 Sekunden, was sind dann 3,77 Minuten?
Und nebenbei gesagt, die Angaben von MakeCD benutzen offenbar keine Millisekunden. Das sind Minuten + Sekunden + Blöcke. Also 03:26:60 bedeutet dann 3 Minuten, 26 Sekunden, 60 Blöcke => (3*60+26)*75+60=15510

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ Dieser Beitrag wurde von Holger am 17.05.2005 editiert. ]

[ - Answer - Quote - Direct link - ]

2005-05-17, 23:22 h

MaikG
Posts: 5172
User
>Lies Dir Dein Posting nochmal in Ruhe durch. Eine Minute
>sind 60 Sekunden, was sind dann 3,77 Minuten?

Okay 4,17 Minuten, aber das stimmt auch nicht.

>Und nebenbei gesagt, die Angaben von MakeCD benutzen offenbar
>keine Millisekunden. Das sind Minuten + Sekunden + Blöcke.

Min+Sek reicht mir eigentlich auch, aber das klappt ebend nicht.

[ Dieser Beitrag wurde von MaikG am 17.05.2005 editiert. ]

[ - Answer - Quote - Direct link - ]

2005-05-17, 23:45 h

DrNOP
Posts: 4118
User
Falls deine Abweichungen sich im Bereich von 2 Sekunden /150 Blocks bewegen: Das ist die Pause vor dem Track, die vielleicht mitgezählt wird.
Ich hab' allerdings irgendwie verpaßt, ob du die Lieder als Datei auf deiner Festplatte hast oder ob die auf einer CD liegen? Willst du das nur so zum Spaß mal nachrechnen, oder soll das eine Zeitanzeige für 'nen Software-CDPlayer geben?
--
Es gibt keine Notbremse für all den technischen Humbug, mit dem wir unsere Zeit vertrödeln.

[ - Answer - Quote - Direct link - ]

2005-05-18, 00:02 h

Holger
Posts: 8116
User
Zitat:
Original von MaikG:
>Lies Dir Dein Posting nochmal in Ruhe durch. Eine Minute
>sind 60 Sekunden, was sind dann 3,77 Minuten?

Okay 4,17 Minuten, aber das stimmt auch nicht.

3:46:59 sind (3*60+46)*75+59 17009 Blöcke.
Das sind natürlich auch 3*60+46 + 59/75 = 226,786666 Sekunden, dasselbe wie auch 17009 / 75.

Wie rechnest Du? Das ist einfachstes Grundrechnen.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2005-05-18, 10:37 h

MaikG
Posts: 5172
User
>Ich hab' allerdings irgendwie verpaßt, ob du die Lieder als Datei
>auf deiner Festplatte hast oder ob die auf einer CD liegen?
>Willst du das nur so zum Spaß mal nachrechnen, oder soll das
>eine Zeitanzeige für 'nen Software-CDPlayer geben?


Die Dateien sind jetzt noch als .WAV und .cdda auf Festplatte,
später dann auf CD. In den .mcd Dateien steht die Zeit zeit
nicht, sondern nur die Blöcke. Ich brauche ein Programm das
mir daraus die Minuten/Sekunden macht, ich will das nicht
von MakeCD abtippen müssen.

Okay 4,17 Minuten, aber das stimmt auch nicht.

>3:46:59 sind (3*60+46)*75+59 17009 Blöcke.
>Das sind natürlich auch 3*60+46 + 59/75 = 226,786666 Sekunden,
>dasselbe wie auch 17009 / 75.

>Wie rechnest Du? Das ist einfachstes Grundrechnen.

17009/75, dann in Sekunden also dividiert durch 60.
Aber irgendwie ist das falsch. Auf 226,786666 komme ich
schon aber wie rechnet man das in Min:Sek:ms um?

[ - Answer - Quote - Direct link - ]

2005-05-18, 10:44 h

Micha1701
Posts: 938
User
226,786666 Sekunden / 60 Sekunden = 3 Minuten, Rest 46,786666 Sekunden

Das ergibt also 3 minuten, 46 Sekunden und 786 ms

Was ist denn daran so schwer?
--
:boing: Micha :boing:

Look at my HPs:
http://www.lanser-online.de.vu

http://www.RealmsofPower.de.vu



[ - Answer - Quote - Direct link - ]

2005-05-18, 11:17 h

MaikG
Posts: 5172
User
>226,786666 Sekunden / 60 Sekunden = 3 Minuten,

Okay, sprich man benutzt aus dem Ergebniss nur die Zahl vor dem Komma.


>Rest 46,786666 Sekunden

Wo kommt der jetzt her? Bei mir ist der Rest 0.77977776

Ah, den Rest rechnet man dann mal 60 und dann stimmts,
man ist das Kompliziert.

Danke!

[ - Answer - Quote - Direct link - ]

2005-05-18, 11:32 h

thomas
Posts: 7717
User

Meine Güte, warst du nie in der Grundschule ?

226,786666 Sekunden sind erstmal 226 ganze Sekunden und ca. 79 Millisekunden.

226 durch 60 ist 3, Rest 46 (3 mal 60 ist 180 und 226 weniger 180 ist 46). Also 3 Minuten und 46 Sekunden.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-05-18, 14:48 h

Holger
Posts: 8116
User
Zitat:
Original von thomas:
...und ca. 79 Millisekunden.

79 Hundertstel oder 790 Millisekunden.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2005-05-18, 15:25 h

thomas
Posts: 7717
User

Ups. Hab mich schon anstecken lassen. Milli sind natürlich tausendstel. Also ca. 79 Zentisekunden :-)

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-05-18, 19:01 h

MaikG
Posts: 5172
User
>Meine Güte, warst du nie in der Grundschule ?

Kann mich ab die "Reste" rechnung nicht erinnern,
kapier es wahrscheinlich jetzt auch noch nicht.
Hab es aber in einem Programm umsetzten können.

tmp!=(blocks&/75)/60
Min%=fix(tmp!)
sec%=fix(tmp!-min%*60)

[ - Answer - Quote - Direct link - ]

2005-05-18, 19:37 h

thomas
Posts: 7717
User

Das ist nur leider falsch. Es muß so lauten:

tmp! = blocks& / 75
hun% = fix((tmp! - fix(tmp!)) * 100)
tmp! = fix(tmp!)
min% = fix(tmp! / 60)
sec% = tmp! - min% * 60

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-05-19, 10:14 h

MaikG
Posts: 5172
User
>Das ist nur leider falsch. Es muß so lauten:

>tmp! = blocks& / 75
>hun% = fix((tmp! - fix(tmp!)) * 100)
>tmp! = fix(tmp!)
>min% = fix(tmp! / 60)
>sec% = tmp! - min% * 60


Also ganz genau hab ich den Code:


tmp!=(blocks&/75)/60
MINU%=FIX(tmp!)
tmp2%=(tmp!-MINU%)*60
sec%=FIX(tmp2%)


Und den hab ich mittlerweile schon mehrfach getestet und er
Funktioniert!?

[ - Answer - Quote - Direct link - ]

2005-05-19, 10:45 h

Holger
Posts: 8116
User
Zitat:
Original von MaikG:
tmp!=(blocks&/75)/60
MINU%=FIX(tmp!)
tmp2%=(tmp!-MINU%)*60
sec%=FIX(tmp2%)
Und den hab ich mittlerweile schon mehrfach getestet und er
Funktioniert!?

Was macht FIX(...) ?
Die Minuten müssen grundsätzlich abgerundet werden, bei den Sekunden kannst Du auch normales Runden benutzen, sofern Du keine kleinere Einheit verwendest, allerdings ist das unüblich.
Aber Abrunden geschieht bei einer Zuweisung einer Integer-Variablen automatisch, oder? (Und xyz% sind doch ganzzahlig, wenn mich nicht alles täuscht)
In diesem Fall kannst Du das Rumhantieren mit tmp-Variablen auch weglassen.

sec% = blocks&/75
min% = sec%/60
sec% = sec% - min% * 60

Vorausgesetzt, Dein Basic-Dialekt rechnet ganzzahlig, wenn man ganzzahlige Operatoren verwendet. Sollte dann auch deutlich schneller sein.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2005-05-19, 11:14 h

thomas
Posts: 7717
User
Zitat:
Original von MaikG:
Also ganz genau hab ich den Code:

tmp!=(blocks&/75)/60
MINU%=FIX(tmp!)
tmp2%=(tmp!-MINU%)*60
sec%=FIX(tmp2%)

Und den hab ich mittlerweile schon mehrfach getestet und er
Funktioniert!?



Du hast ja recht. Der Code macht das selbe wie meiner. Als Mathematiker hätte ich das sehen sollen. Als Programmierer war ich zu faul dazu :)

Mein Code hat jedoch den Vorteil, daß er logischer ist. Den kann man unendlich so fortführen, auf Stunden, Tage, Wochen, Jahre etc.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-05-19, 14:41 h

MaikG
Posts: 5172
User
>Was macht FIX(...) ?

Nimmt die ganzzahl von einer Fliesskomma zahl.0

Sprich
2.5 = 2
2.2 = 2
2.8 = 2


>Aber Abrunden geschieht bei einer Zuweisung einer
>Integer-Variablen automatisch, oder?

Wenn man x%=x! macht müsste das gehen.


>(Und xyz% sind doch
> ganzzahlig, wenn mich nicht alles täuscht)

x% sind Integer zahlem im Bereich von -31xxx bis +31xxx
Was ein keiner Nachteil von Basic ist.

x& sind Long Integer

x! sind Fliesskomma zahlen
-Davon gibts noch welche mit doppelter genauigkeit.


>In diesem Fall kannst Du das Rumhantieren mit
>tmp-Variablen auch weglassen.

Optimierungen kommen später...



>Vorausgesetzt, Dein Basic-Dialekt rechnet ganzzahlig,
>wenn man ganzzahlige Operatoren verwendet. Sollte dann
>auch deutlich schneller sein.

Ja, dein Code geht auch


>Den kann man unendlich so fortführen, auf Stunden,
>Tage, Wochen, Jahre etc.

Leider kann MakeCD nur 99 Minuten, aber du kannst ja
den Programmierer mal Fragen ob er nicht DVDs unterstützen
möchte ;-)

Also danke nochmal @All

[ - Answer - Quote - Direct link - ]

2005-05-19, 15:16 h

thomas
Posts: 7717
User

Zitat:
x% sind Integer zahlem im Bereich von -31xxx bis +31xxx

Du meinst -32768 bis +32767.

Zitat:
Was ein keiner Nachteil von Basic ist.

Was ist daran nachteilig ? Mit 16 Bits kann man genau 65536 Zustände darstellen. Ich finde das optimal ausgenutzt.

Zitat:
x& sind Long Integer

Dann nimm die doch, wenn dir die Short-Integers zu klein sind.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-05-19, 18:38 h

Holger
Posts: 8116
User
Zitat:
Original von MaikG:
Leider kann MakeCD nur 99 Minuten, aber du kannst ja
den Programmierer mal Fragen ob er nicht DVDs unterstützen
möchte ;-)

99 Minuten ist ja für CDRom ausreichend und DVD Unterstützung wird wohl vorerst nicht kommen, denn die Programmierer haben die Weiterentwicklung eingest...äh auf Eis gelegt.
Allenfalls Unterstützung für neuere Laufwerke und kleinere BugFixes sind da noch drin.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2005-05-19, 19:00 h

MaikG
Posts: 5172
User
>Was ist daran nachteilig ?

das ein Array nicht Negativ Adressiert werden kann.
Sprich nur 32xxx Elemente in einem Array.
Man kann Long Integer nehmen, nur ist das langsamer.

[ - Answer - Quote - Direct link - ]

2005-05-19, 20:45 h

thomas
Posts: 7717
User

Zitat:
nur ist das langsamer

Inwiefern ? Die Adresse eines Array-Elements ist 32bit, also muß der Offset so oder so auf 32 Bits umgerechnet werden.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-05-20, 13:09 h

MaikG
Posts: 5172
User
>Inwiefern ? Die Adresse eines Array-Elements ist 32bit,
>also muß der Offset so oder so auf 32 Bits umgerechnet
>werden.


Ich täte gerne das:

Dim a$(60000)
For i%=0 to 60000
a$(i%)="bla"
Next i%

Das geht aber nicht und das folgende auch nicht:

Dim a$(60000)
For i%=-30000 to 30000
a$(i%)="bla"
Next i%

[ - Answer - Quote - Direct link - ]

2005-05-20, 14:03 h

NoImag
Posts: 1050
User
Zitat:
Original von MaikG:
Ich täte gerne das:

Dim a$(60000)
For i%=0 to 60000
a$(i%)="bla"
Next i%

Das geht aber nicht und das folgende auch nicht:

Dim a$(60000)
For i%=-30000 to 30000
a$(i%)="bla"
Next i%


Funktioniert das Folgende?

Dim a$(60000)
For i&=0 to 60000
a$(i&)="bla"
Next i&

Tschüß,


[ - Answer - Quote - Direct link - ]

2005-05-20, 16:54 h

Holger
Posts: 8116
User
Zitat:
Original von MaikG:
Man kann Long Integer nehmen, nur ist das langsamer.

Jetzt interessiert mich schon, was für ein Basic Du benutzt. Denn man muß sich schon verdammt anstrengen, um 32Bit-Arithmetik ernsthaft langsamer als 16Bit-Arithmetik zu machen.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2005-05-20, 18:53 h

MaikG
Posts: 5172
User
>Dim a$(60000)
>For i&=0 to 60000
>a$(i&)="bla"
>Next i&


Ich sag doch das ist langsamer.
Versuch mal mit der Routine das Telefonbuch
von z.B. Berlin zu Sortieren.




>Jetzt interessiert mich schon, was für ein Basic Du benutzt.
>Denn man muß sich schon verdammt anstrengen,
>um 32Bit-Arithmetik ernsthaft langsamer als 16Bit-Arithmetik
>zu machen.

Wenn Long Integer genauso schnell währe, täte das keiner
Integer benutzten. Maxon Basic, war früher mal Highsoft Basic.

[ - Answer - Quote - Direct link - ]


-1- 2 [ - Post reply - ]


amiga-news.de Forum > Programmierung > Mathematiker hier? [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.