Perl -> Java konvertieren? (Alternativ Perl -> Pseudocode)

cocoon

Erfahrenes Mitglied
Ich habe die letzten Jahre in Asien gelebt und mir von dort einige Karaoke CDs mitgebracht. Offenbar sind die Karaoke-Lieder dort in einem recht seltenen Format namens NCN gespeichert, das jeweils aus drei Dateien besteht:
- MIDI (*.mid) Datei für die Musik
- Lyrics (*.lyr) Datei für den Text
- Cursor (*.cur) Datei für Zeitmarken/Synchronisation von Musik und Text

Gängiger ist das KAR Format, das alle Teile in eine Datei (*.kar) vereint.

Um die Karaoke CDs mit meinem MediaPlayer nutzen zu können, brauche ich KAR-Dateien. Ich habe auf dieser Seite ein Perl-Skript gefunden, das drei mid/lyr/cur Dateien in eine kar-Datei konvertiert. Dummerweise habe ich von Perl keine Ahnung. Java oder Pascal/Delphi würden mir besser liegen.

Ist es möglich, das Perl-Skript in Java-, Pascal/Delphi- oder auch einfach nur Pseudo-Code zu konvertieren? Das Skript scheint relativ klein und nicht sehr komplex zu sein. Wenn eine Konvertierung nicht möglich ist, würde es schon reichen, wenn ich einfach nur die Logik verstehen würde, um daraus ein z.B. Java-Programm zu basteln. Leider verstehe ich als Perl-**** aber viele der Befehle gar nicht.
 
Hi

ohne von Perl selbst groß Ahnung zu haben:
Muss man es denn verstehen?
Einfach nur ausführen würde für die Dateien auch reichen.
(Schaut jedenfalls nicht nach Malware aus (aber keine Garantie, nur schnell drübergeschaut))

SOnst wäre auf der sleben Seite auch C-Code, der zwar anscheinend
(einen?) Fehler hat und doppelt so lang ist (aber nur weil sehr ineffizient programmiert),
aber mit etwas Glück hat der Fehler nichts mit dem Inhalt der Datei zu tun
und ist ohne Dateiformatkenntnis ausbesserbar.

Werde da vllt. in der Nacht mal drüberschauen.
 
C beherrsche ich leider auch nicht ;-)

Ich möchte den Code vor allem deshalb portieren, da ich ca. 12 DVDs mit tausenden von diesen Karaoke-Dateien in einer bestimmten Ordnerstruktur habe. Indem ich den Code selbst schreibe, kann ich beliebig individuell durch meine Ordnerstruktur laufen.

Wenn Du es Dir mal anschauen könntest, wäre das wirklich klasse :)
 
Wenn du ein funktionierendes C-Programm hast
kannst du es ja noch immer aus Java heraus für Datei xy aufrufen :)

Solche Bitschiebereien in Java...:( C ist für sowas einfach besser zu gebrauchen...
Für welches Betriebssystem soll die Binary dann denn sein?
 
Sorry, habe meine PN-Box geleert..

Das ganze soll für Windows sein. Die Dateien sind jeweils in Ordnern names LYR, CUR, und MID gespeichert und werden über gleiche Dateinamen (Nummern) zugeordnet, d.h. bspw. würden die drei Dateien:
CD1\MID\000001.mid
CD1\CUR\000001.cur
CD1\LYR\000001.lyr
zu einer neuen Datei 000001.kar führen.
 
Hi.

Dazu brauchst du das Perl Programm aber nicht übersetzen. Da reicht auch ein bißchen Batch aus:
Code:
@echo off
setlocal enabledelayedexpansion

set path=%~f1
if "!path!"=="" set path=%cd%

for %%f in (!path!\MID\*.mid) do (
  if /i "%%~xf"==".mid" (
    set filename=%%~nf
    set mid=!path!\MID\!filename!.mid
    set lyr=!path!\LYR\!filename!.lyr
    set cur=!path!\CUR\!filename!.cur
    set kar=!path!\!filename!.kar
    perl ncn-to-kar.pl "!mid!" "!lyr!" "!cur!" "!kar!"
  )
)

endlocal
pause
Speichere das Skript in einer .cmd Datei. Stelle sicher das du Perl installiert hast und das ncn-to-kar.pl Skript verfügbar ist.

Dann ziehst du per Drag'n'Drop die CD Ordner einzeln auf das .cmd Skript.
 
Zurück