![]() |
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: 7721 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: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: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? -- ![]() ![]() 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: 7721 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: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: 7721 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: 7721 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: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: 7721 User |
Zitat: 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: 7721 User |
Zitat: Du meinst -32768 bis +32767. Zitat: Was ist daran nachteilig ? Mit 16 Bits kann man genau 65536 Zustände darstellen. Ich finde das optimal ausgenutzt. Zitat: 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: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: 7721 User |
Zitat: 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: 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: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-2025 by amiga-news.de - all rights reserved. |
![]() |