längenzusammenstellung per programm - Druckversion +- Tonbandforum (https://tonbandforum.de) +-- Forum: Digitale Audiotechnik (https://tonbandforum.de/forumdisplay.php?fid=36) +--- Forum: Audio per Computer (https://tonbandforum.de/forumdisplay.php?fid=39) +--- Thema: längenzusammenstellung per programm (/showthread.php?tid=24180) |
längenzusammenstellung per programm - reginald bull - 23.10.2021 moin moin, eine andere betreffbezeichnung ist mir leider nicht eingefallen was will ich ? ich hätte gerne ein programm welches mir eine liste ausgibt in welcher songs aufgeführt sind, die zu einer vorgegebenen spielzeitlänge passen. also z.b., ich habe einen ordner der eine anzahl x titel enthält und ich habe eine mc mit einer spielzeit von 45' , nun soll das programm raussuchen welchen titel ich überspieln kann um möglichst genau an die spielzeit ranzukommen. das ganze soll unabhängig vom fileformat ( mp3, wav, flac etc. ) sein und unter linux mint laufen. reginald RE: längenzusammenstellung per programm - timo - 23.10.2021 Ich kann mir schwer vorstellen, daß es sowas schon gibt. Aber es klingt wie eine Idee für ein eigenes Projekt. Librosa für Python könnte beim Ermitteln der Spielzeiten behilflich sein. RE: längenzusammenstellung per programm - andreas42 - 23.10.2021 Hallo Reginald, ich kenne kein fertiges Programm für genau diesen Zweck. Informationen über einzelne Files gibt Dir aber z.B. soxi aus, mit soxi -D * bekommst Du alle Längen aller Files im Verzeichnis ausgegeben, aber leider ohne Dateiname. Da hilft eine kleine Schleife: Code: for i in *; do echo -ne $i\\t; soxi -D $i; done (soxi sollte im Paket sox enthalten sein... wenn es noch nicht installiert ist, hilft "sudo apt install sox" weiter). Die Ausgabe davon kannst Du leicht in eine Tabelle (Libreoffice, Excel, ...) einfügen, und dann die Auswahl unter Anzeige der Summe der Spielzeit von Hand vornehmen... Mit etwas Skript-Arbeit drumherum müsste es auch möglich sein, die gewünschte Liste mit Begrenzung auf eine Spielzeit zu erzeugen. Dabei wäre wichtig, ob Du eine bestimmte Sortierstrategie hast - mir fiele spontan ein, immer den längsten Titel hinzuzufügen, der noch in den verbleibenden Platz passt. Aber damit übersieht man Kombinationen, wo weniger Restzeit übrig bleibt. Mit etwas mehr Aufwand ginge das bestimmt auch... Also - was ist Dein Optimierungsziel? Möglichst wenig leeres Band am Ende? Viele Grüße Andreas RE: längenzusammenstellung per programm - reginald bull - 23.10.2021 möglichst wenig leeres band und möglichst wenig handarbeit. reginald RE: längenzusammenstellung per programm - timo - 23.10.2021 (23.10.2021, 16:12)andreas42 schrieb: mir fiele spontan ein, immer den längsten Titel hinzuzufügen, der noch in den verbleibenden Platz passt. Aber damit übersieht man Kombinationen, wo weniger Restzeit übrig bleibt. Ich hatte eben exakt den gleichen Gedankengang. Wenn man mal (einfach konstruierter Fall) von 10 MB freiem Platz ausgeht, und man hat folgende Dateien: 5 MB 4 MB 2 MB 2 MB 2 MB ... und dann würde man nach dem "Immer die größte Datei, die noch passt"-Prinzip vorgehen, dann würde man die Dateien von 5 und 4 MB nehmen, und am Ende wäre noch 1 MB freier Platz übrig. Mit 4 MB und drei mal 2 MB würde man den Platz dagegen optimal nutzen. Aber wie kann man das herausfinden, ohne alle Kombinationen rechenzeitintensiv durchzuprobieren? Gibt's dafür einen Algorithmus? Das müsste man mal tiefgehend drüber nachdenken. Edit: Zweiter Anlauf. Das Ziel war ja nicht, einen einzelnen Datenträger mit den vorhandenen Daten optimal auszufüllen (was ich oben getan habe), sondern die Gesamtmenge der Daten auf möglichst wenige Datenträger (mit möglichst wenig freiem Platz) zu verteilen. Und dann könnte es doch sein, daß die Methode "Immer die größte Datei, die noch passt" zum optimalen Ergebnis führt. Ein möglicherweise störender Effekt wäre allerdings, daß die großen Dateien tendenziell auf den ersten CDs landen würden, während der letzte viele kleine Dateien enthielt. Bei Musikstücken könnte dann zum Schluss ein reiner Punk-Sampler herauskommen. RE: längenzusammenstellung per programm - eudatux23 - 24.10.2021 Es ist nachts und ich habe wohl einfach zu viel Langeweile. Hier meine erste Variante wie man sowas programmieren kann: Code: #!/bin/bash Zu beachten: - Es werden nur .opus-Dateien berücksichtigt, das kann man in der Schleife anpassen - Es wird nicht gerundet oder exakt gerechnet, sondern die Millisekunden von den Sekunden abgeschnitten. Sollte aber zu verschmerzen sein - Bisher arbeitet das Script noch nicht rekursiv, das kann man zum Beispiel mittels find-Befehl nachrüsten - Über den Parameter -s kann man die Lieder so sortieren, dass die ersten Lieder zuerst aufs Band kommen - Das von Andreas erwähnte Paket sox wird benötigt Das Script erwartet als ersten Parameter die Länge des Bands in Minuten. Mein Vorschlag ist, das Script nach /usr/local/bin oder einen anderen Pfad innerhalb des PATH zu packen, da man es dann von jedem Ordner aus aufrufen kann. Ein Beispielaufruf wäre dieser hier. Angenommen, man möchte das Klaus Lage-Album "Heiße Spuren" mobil auf seinem Uher Report in 19 cm/s auf Langspielband hören. Dann wären Aufruf und Ausgabe: Code: $ musicselector.sh 30 Fügt man den Parameter -s hinzu, kommen dabei die längsten Titel des Albums zuerst. Das Script entscheidet sich nun auch für andere Titel, da es nicht mehr chronologisch, sondern rein nach Länge vorgeht: Code: $ musicselector.sh 24 -s Ich hoffe das genügt als Basis. Geht sicher deutlich besser, aber angesichts der Uhrzeit bin ich froh, überhaupt etwas lauffähiges zusammengebastelt zu haben. Können wir hier im Forum sicher noch gemeinsam an einigen Stellen verbessern oder eventuell sogar komplett anders aufbauen, ist erstmal nur eine Grundidee. Gute Nacht euch allen, ich bin mal gespannt, was aus diesem Script wird, irgendwer hat sicher Ideen wie man es verbessern kann. RE: längenzusammenstellung per programm - reginald bull - 24.10.2021 moin moin, es ist immer noch nacht. danke für eure mühe. an timo, das mit der dateigrösse funktioniert so nicht, weil z.b. 1' mp3 datei und 1' wav schon unterschiedliche grössen haben und das ganze ja auf analoges band soll, da kommt man nur mit min und sec weiter. reginald p.s. ich muss mich nochmal aufs ohr hauen RE: längenzusammenstellung per programm - q-tip - 24.10.2021 Geht es denn darum, ein langes Album aufzunehmen und die Bandlänge bzw. erste Seite optimal auszunutzen? Dann würde ich die Lieder nach Albumreihenfolge hinzufügen, bist die Bandlänge überschritten ist. Dann den letzten Track aus der Liste entfernen und von den übrigen die raussuchen, die kürzer sind als die verbleibende Bandlänge und von denen dann das längste auswählen. So machen das auch CD-Player mit so einer Funktion. Wenn es sich um einen Ordner mit vielen Liedern von verschiedenen Alben handelt (Mixtape), dann würde ich erst die Reihenfolge zufällig mischen und mit dem Ergebnis genauso verfahren wie bei einem Album. Ich persönlich würde in diesem Fall aber die Reihenfolge selbst festlegen, damit es eine schöne Mischung wird und die Lieder sich gut aneinanderreihen. Gruß Robert RE: längenzusammenstellung per programm - kaimex - 24.10.2021 Das ist ein Problem der "Linearen Optimierung" im Sinne des Operations Research. Im Grunde das Gleiche wie die Verteilung von Gütern unterschiedlicher Größe auf möglichst wenige Standard-Container (oder früher Güter-Waggons). In den für solche Planungen zuständigen Bereichen von DHL, DB Cargo, etc. gibt es dafür Computer-Programme, wie zB das klassischen Simplex-Verfahren. Bekanntestes Problem aus diesem Gebiet ist der "Travelling Salesman". MfG Kai RE: längenzusammenstellung per programm - kaimex - 24.10.2021 Guck mal hier: https://www.geeksforgeeks.org/bin-packing-problem-minimize-number-of-used-bins/ MfG Kai RE: längenzusammenstellung per programm - Sonicman - 24.10.2021 Da es ja in der Regel eine überschaubare Zahl von Files sind kann man das „brute force“ lösen, also alle Kombinationen rechnen. Die o.g. Lösungen sind m.E. zu komplex, da dabei von unendlichen Datenmengen ausgegangen wird. Gerhard RE: längenzusammenstellung per programm - kaimex - 24.10.2021 Was ist mit "o.g. Lösungen" gemeint ? Bei den Beispielen des Links in #10 mußte ich nur bis 7 zählen. MfG Kai Nachtrag: Noch ein Anwendungsbeispiel (für 3-dimensionale Objekte und Container): https://www.gigacalculator.com/calculators/container-loading-calculator.php Noch'n Nachtrag: Diese spezielle Thematik läuft in der Fachliteratur unter "1D bin packing problem", siehe zB https://en.wikipedia.org/wiki/Bin_packing_problem noch ein Forschungsbeispiel: https://link.springer.com/chapter/10.1007/978-3-319-47217-1_6 Dazu gibt es allerlei Software, auch bei github RE: längenzusammenstellung per programm - kaimex - 24.10.2021 Und noch ein Tip separat speziell für "old socks", die nicht von Pascal / Delphi lassen können: http://www.delphiforfun.org/Programs/Cutting%20Stock.htm behandelt das fast gleiche "Cutting stock" Problem. Aus Lagerware 1-dimensionaler Teile (zB 2m-Kupfer-Rohre) sollen n Teile vorbestimmter Länge geschnitten werden, so daß möglichst wenig Rohre benötigt werden. Die Rohrlänge entspricht der Spielzeit des Speichermediums, die n Teile vorbestimmter Länge den vorliegenden Audio-Files mit ihrer eigenen jeweiligen Dauer. MfG Kai Noch ein Link zu einem 1D-Stock-Cutter: http://astrokettle.com/pr1dsc.html Da gibt es eine "free version" und eine "30-day trial version" Die Free Version läuft jetzt bei mir. Hasse ma n' Beispiel ? RE: längenzusammenstellung per programm - Kirunavaara - 26.10.2021 Unabhängig von der Berechnungsmethode gibt es noch einen Pferdefuß bei dem Vorhaben, Cassettenseiten exakt auszunutzen. Besser gesagt derer zwei: - Nicht alle Cassettendecks laufen mit Sollgeschwindigkeit. Innerhalb der zulässigen Toleranzen kann der Unterschied bei einer C-90-Seite schon +/- 1 min betragen. - Nicht alle Cassetten sind gleich lang. Bei den Japanern und auch ab 1990 bei BASF waren 135 m üblich für eine C-90. Damit erreicht man auf einem mit absolut korrekter Geschwindigkeit laufenden Gerät 47 Minuten und 15 Sekunden pro Seite. Ältere europäische Cassetten hatten 132 m Band, was für 46:30 Aufnahmezeit reicht. Unter den aktuell hergestellten Cassetten gibt es einige, die keinen Meter zu viel eingespult haben: Da bekommt man tatsächlich 45 Minuten plus maximal ein paar Sekunden auf eine Seite. Auch "Befüller"-Cassetten, die man z.B. bei Tapemuzik in indiviuellen Längen bestellen kann, haben meist die exakte Laufzeit. Viele Grüße, Martin RE: längenzusammenstellung per programm - Dilbert - 27.10.2021 hallo liegt wahrscheinlich daran, das bei der Tonband/Cassetten-Technik ja Zoll und Fuß die Bezugsgrößen sind. Da rundet man dann erst mal auf "glatte" Fuß und dann nochmal auf "glatte" Meter, und dabei variiert auch noch das "glatt". BTW: ich gehe davon aus, das die Bandgeschwindigkeiten in cm/s nur Näherungen sind, also tatsächlich die Reihe (30" -> 15" -> 7,5" -> 3 3/4" -> 1 7/8" -> 15/16") pro sec. die richtigen Werte sind, oder? Grüße Frank RE: längenzusammenstellung per programm - reginald bull - 28.10.2021 moin moin, ich habe mich für ein mittelding entschieden. jetzt verwende ich dafür DEADBEEF, der player spielt die audioformate ab welche bei vorkommen. er zeigt die gesamtzeit und die einzelzeit der tracks an, so kann ich genau genug sehen was weg muss oder wieviel evtl. noch fehlt. ich habe im übrigen für jede kassettensorte schon immer getestet wie lang die sind. vielen dank für die anregungen und hilfe reginald p.s. auch wenn ich keinen schiffscontainer beladen will :o) RE: längenzusammenstellung per programm - kaimex - 28.10.2021 Vor der "reinen" Mathematik sind alle Container gleich. MfG Kai RE: längenzusammenstellung per programm - Dilbert - 28.10.2021 die Aufgabe mit den Cassetten wäre aber viel einfacher, weil nur eindimensional, die mit einem realen Container ist ja mind. 3 wenn nicht 4-6 dimensional. Frank RE: längenzusammenstellung per programm - reginald bull - 28.10.2021 moin moin dilbert, also die 4. dimension ist die zeit, aber was wäre dann 5. und 6. dimension ? überraum, hyperraum, verlassen des ereignishorizonts ? ich denke wir sollten das thema hier abschließen. reginald RE: längenzusammenstellung per programm - kaimex - 28.10.2021 Dilbert hat völlig recht, zB bei der Anwendung bei Schiffs-Containern ist die 4.te Dimension meist das Gewicht des Einzelstücks... damit nicht alle Blei-Pakete in den gleichen Container kommen. 5te und 6te könnten zB magnetisches Feld und Magnetisierbarkeit sein, damit nicht Supermagnete und Magnetbänder in den gleichen Container gepackt werden. MfG Kai RE: längenzusammenstellung per programm - Kuni - 29.10.2021 Ich habe mich mal durch die Stichworte von Kai gewühlt und dann u.A. das hier gefunden: https://www.herber.de/forum/archiv/1028to1032/1031475_Welche_Kombinationen_ergeben_Summe.html Das habe ich als Basis genommen und mal in Excel was zusammengebastelt: [attachment=45874] Spalten: A) Titel-Nummer: Fortlaufende Nummer für Ausgabe in Spalte G B) Titel-Länge: Länge in dezimalen Minuten C) Ziel-Spielzeit: Länge die gefüllt werden soll D) Titel-Treffer: Binäres Feld mit den Titeln die gefunden wurden (Bsp "01011" bei insgesamt 5 Titeln dann die Titelnummern #2 #4 #5) E) Spielzeit-Summanden: Die einzelnen Titelspielzeiten aus Spalte B F) Spielzeit-Summe: Summe der Spielzeiten aus Spalte E G) Titel-Abfolge: Wie Spalte D, aber als Klartextnummern Spalten B und C müssen eingegeben werden, in Spalten D, E, F wird ausgegeben Beispiel: [attachment=45873] Es sind 5 Titel vorhanden, mit den Spielzeiten in Spalte B. Ziel ist es, 10min voll zu bekommen (Vorgabe in Spalte C). Spalte G zeigt mögliche Titelabfolgen die passen. Die letzte ist immer die, die am nächsten am Ziel ist. Hier also 9,5min mit den Titeln #1, #4, #5. Hab das mit einigen Beispielen durchgetestet, scheint zu funktionieren. Wer Fehler findet, darf diese gerne hier rein schreiben. Interesse an der Fortführung ? PS: Das ganze ist eine Excel .xlsm Datei, also mit Makros. Nach dem Öffnen in Excel muß ggf. noch die Makroausführung erlaubt werden. RE: längenzusammenstellung per programm - reginald bull - 30.10.2021 Kai, ich will immer noch keinen container beladen. reginald RE: längenzusammenstellung per programm - kaimex - 30.10.2021 Das glaube ich gerne, es sind ja nur Beispiele für die Anwendung eines abstrakter formulierbaren Problems, das schon vielfach bearbeitet wurde, weil es eine intellektuelle/mathematische Herausforderung darstellt. Vielleicht möchtest du aber in jeder Cassetten-Zuammenstellung einen Track von den Beatles, zwei von den Stones, 3 von Steve Vai, eines von Zappa , 5mal Blues-Rock, ein türkisches Volkslied auf der Baglama, 2 Tracks von Lance Lopez und mindestens 1 von Wes Jeans unterbringen. Die musikalischen Unter-Genres bzw Künstler wären dann auch je eine Dimension... Nix für ungut mfG Kai |