Cuepoint Charlie...

Status
Für weitere Antworten geschlossen.
AW: Cuepoint Charlie...

Naja, ich würde immer sowas wie "marked" als Unterverzeichnis des Verzeichnisses der Orginale verwenden...
Da sollte bei ordentlichem arbeiten nix fehlerhaft überschrieben werden.

Mmm. Bei dir habe ich in dieser Beziehung absolut keine Bedenken. Nur was mache ich mit anderen Usern?

Ich will sie ja nicht als "DAUs" bezeichnen, aber gerade die Dateinamen "*001.wav" (und folgende Tracks) werden nach einer PK mit einer frischformatierten CF-Karte sicherlich oft vorkommen und sind daher besonders "gefährdet". Weiterhin komme ich bei der Auswahl irgendwelcher Verzeichnisse durch den User mit den Benutzerrechten in Berührung. Der Benutzer kann sie zwar möglicherweise lesen und auch auswählen, aber mein Progi kann später nichts reinschreiben, da die Rechte des Users fehlen.

Dieses ganze Theater wollte ich eigentlich komplett vermeiden, indem ich nur unterhalb des Programmverzeichnisses schreibe.

Wenn das Programm irgendwo unter "C:\\Dokumente und Einstellungen\All Users\" liegt, gibt es dabei sicher auch kein Problem. Ob mein leichtfertig vorgeschlagenes Verzeichnis "c:\\zwerg\" mit eingeschränkten Benutzerrechten funktioniert, muß ich direkt mal ausprobieren - habe ich noch nicht getan. Beim Programmieren als "Admin" vergisst man diese "Kleinigkeiten" schnell. Und ja, der Admin muß das Verzeichnis freigeben...

So richtig "passt" mir dein "sexy" Vorschlag also nicht. Im Moment sehe ich damit "nur Ärger" und zusätzlichen Programmieraufwand (für die Fehlerbehandlung) auf mich zukommen.

Grüßle Zwerg#8
 
AW: Cuepoint Charlie...

Mmm. Bei dir habe ich in dieser Beziehung absolut keine Bedenken. Nur was mache ich mit anderen Usern?
Bist Du Kindermädchen?

Solange keiner die Option /out=foobar angibt funktioniert das Program genauso wie bisher. Wer dem Programm sagt es soll explizit wohin schreiben sollte wissen was er tut...


Weiterhin komme ich bei der Auswahl irgendwelcher Verzeichnisse durch den User mit den Benutzerrechten in Berührung. Der Benutzer kann sie zwar möglicherweise lesen und auch auswählen, aber mein Progi kann später nichts reinschreiben, da die Rechte des Users fehlen.
Popup kann nicht schreiben und gut is.

Dieses ganze Theater wollte ich eigentlich komplett vermeiden, indem ich nur unterhalb des Programmverzeichnisses schreibe.
Programmverzeichnis? Meinst Du nicht das wo die WAVs liegen?
Ich will ja nur 'nen interessanten Namen dafür vergeben als 'nen Zufälligen.

Ich sehe da auch 'nen Riesen Unterschied zwischen Download und Konvertierung von der Karte und Konvertierung im Fielesystem. Für 'nen Download würde ich einen Pfad mit Datum vorgeben (Base Pfad vom User fix vorgegeben (Commandline im Batchfile). Sowas mach ich dauernd für meine Bilder...

Und im Filesystem einfach ein relativer Pfad.

cheers
afx
 
AW: Cuepoint Charlie...

Bist Du Kindermädchen?

Ja, in gewisser Weise schon. Ich muß (genauer: "sollte", weil ich es einfach "besser" weiß) verhindern, daß selbst ein DAU überhaupt "Unfug" anstellen kann! Weiterhin soll das Programm im Normalfall (also mit dem Switch "drive:X") völlig ohne weiteren Input des Users auskommen. In einer Batchverarbeitung kann man nicht "Soll diese Datei überschrieben werden? Ja - Nein" fragen. Wer soll diese MessageBox nachts um Zwei beantworten? Bis jemand auf "Ja" oder "Nein" geklickt hat, steht die ganze Stapelverarbeitung still. Der "Admin" wird sich freuen.. Und darum muß ich alle User etwas "bevormunden" und in einen Topf werfen.

3.0 Grundsätzliches zum Programm
--------------------------------

Das Programm vergreift sich GRUNDSÄTZLICH nur lesend an den Dateien auf
der Speicherkarte des Recorders! Nichts wird auf der Speicherkarte
verändert.

Das Programm schreibt GRUNDSÄTZLICH nur in Verzeichnisse "unterhalb"
des eigenen Programmverzeichnisses!

GRUNDSÄTZLICH wird pro Programmaufruf ein neues Verzeichnis angelegt,
in dem alle (bearbeiteten) Wave-Dateien abgespeichert werden. Diese
Verzeichnisse werden nach Datum/Uhrzeit (in UTC) benannt, womit
sichergestellt ist, daß die darin enthaltenen Wavedateien nicht
versehentlich überschrieben werden. Nicht mehr benötigte Verzeichnisse
müssen später also von Hand gelöscht werden.

Ich habe wirklich nicht vor an diesen Grundsätzen zu rütteln, auch wenn sie reichlich "unsexy" erscheinen! Savety First!

Wer die "markierten" Dateien gern in einem anderen Verzeichnis haben will, soll sie bitte händisch auschneiden & kopieren. ICH mache das jedenfalls nicht!


Popup kann nicht schreiben und gut is.

Popeye kenn' ich. Hey, ich bin kein Linux-Mann... Bitte verschone mich also mit Details. Auf dich kommen noch genug Probleme zu, wenn du den Quältext nach Linux portierst. Mac? Möchte jemand Mac?... ;)

Ich sehe da auch 'nen Riesen Unterschied zwischen Download und Konvertierung von der Karte und Konvertierung im Fielesystem. Für 'nen Download würde ich einen Pfad mit Datum vorgeben (Base Pfad vom User fix vorgegeben (Commandline im Batchfile). Sowas mach ich dauernd für meine Bilder...Und im Filesystem einfach ein relativer Pfad.


Ich bin ganz Ohr. Mach bitte einfache Vorschläge für "vernünftige" Commandline-Switches!

Komm' mir jetzt also bitte nicht mit "/normalize", "/swapchannels", oder "/write-BWF-chunk:c:\testuser\My_BWF_Header.ini" und so weiter. So "schlau" war ich auch schon.. ;)

Bleib also bitte ganz locker. Alles geht - aber es dauert... ;)


vg Zwerg#8



EDIT: Perspektivisch bräuchte dieses Projekt weitere Mitstreiter, die die "Bedienungsanleitung" des Programms in andere Sprachen übersetzen. Das wird aber erst relevant, wenn das Programm einigermaßen "steht". Dann frage ich auch "Wolle", ob man ein "Downloadcenter" unter radioforen.de einrichten kann...
 
AW: Cuepoint Charlie...

Ja, in gewisser Weise schon. Ich muß (genauer: "sollte", weil ich es einfach "besser" weiß) verhindern, daß selbst ein DAU überhaupt "Unfug" anstellen kann! Weiterhin soll das Programm im Normalfall (also mit dem Switch "drive:X") völlig ohne weiteren Input des Users auskommen.
Spricht ja nix dagegen.
Ich will ja auch keinen User Input außer der Commandline, mir is das popup für die /fo Option schon zuviel ;)


In einer Batchverarbeitung kann man nicht "Soll diese Datei überschrieben werden? Ja - Nein" fragen. Wer soll diese MessageBox nachts um Zwei beantworten? Bis jemand auf "Ja" oder "Nein" geklickt hat, steht die ganze Stapelverarbeitung still. Der "Admin" wird sich freuen.. Und darum muß ich alle User etwas "bevormunden" und in einen Topf werfen.
Bist Du da nicht etwas optimistisch was den Einsatz des Tools angeht?
Wenn jemand die /fo option nutzt, dann kommt auf jeden Fall ein popup, da is dann schon nix mehr mit unattended Operation.

Ich habe wirklich nicht vor an diesen Grundsätzen zu rütteln, auch wenn sie reichlich "unsexy" erscheinen! Savety First!
Du verletzt sie doch jetzt schon. Du behauptest es wird um Unterverzeichnis des Programmes geschrieben, statt dessen schreibst Du aber im Unterverzeichnis der Dateien (wie gesagt ich rede von /fo!)...
Das einzige was ich will, ist hier statt 'nem Zufälligen Namen einen den aussagekräftig ist.

Ich bin ganz Ohr. Mach bitte einfache Vorschläge für "vernünftige" Commandline-Switches!

/out=date

Was dann im Unterverzeichnis der WAVs einfach sowas wie 2009-12-14-Converted generiert.
Und wenn Du luxuriös aufgelegt bist, dann vielleicht noch schaut ob das schon existiert und dann halt 2009-12-14-Converted_1 macht (und so weiter)....

Komm' mir jetzt also bitte nicht mit "/normalize", "/swapchannels", oder "/write-BWF-chunk:c:\testuser
Igitt, nicht doch....

cheers
afx
 
AW: Cuepoint Charlie...

Du verletzt sie doch jetzt schon. Du behauptest es wird im Unterverzeichnis des Programmes geschrieben, statt dessen schreibst Du aber im Unterverzeichnis der Dateien (wie gesagt ich rede von /fo!)...

Was? Das gibts doch gar nicht! Daß GetOpenFileName() den Pfad verbiegt, habe ich auch gemerkt. Ich hatte daher Vorsorge getroffen. Bei mir (Win XP) funktioniert dieser Code!

Hier der Originalkommentar aus dem Quelltext, den ich extra für dich schon geschrieben habe:

Code:
/*
   Der Open-Dialog "verbiegt" offenbar das aktuelle Verzeichnis und daher liefert
   GetCurrentDirectory dann das gerade ausgewählte Verzeichnis zurück. Das DARF
	 natürlich nicht passieren und steht auch nicht in der MSDN! Also holen wir das
	 Programmverzeichnis VOR dem Öffnen des Dialogs. Sachen gibt es...
*/

	GetCurrentDirectory(MAX_PATH, szOldDir); // this should be the app's directory




// OPENFILENAME Struktur initialisieren
  ZeroMemory(&ofn, sizeof(ofn));
	ofn.lStructSize = sizeof(ofn);
	ofn.hwndOwner = NULL;
	ofn.lpstrFile = szFile;
	ofn.nMaxFile = sizeof(szFile);
	// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
	// use the contents of szFile to initialize itself.
	ofn.lpstrFile[0] = '\0';

	ofn.lpstrFilter = "Wavefiles (*.wav)\0*.wav\0";
	ofn.nFilterIndex = 0;
	ofn.lpstrFileTitle = NULL;
	ofn.nMaxFileTitle = 0;

	ofn.lpstrTitle = "Select one or more wavefiles...";
	ofn.lpstrInitialDir = NULL;
	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_EXPLORER;

// Display the Open dialog box.

  if (GetOpenFileName(&ofn)) { // User hat mindestens ein File ausgewählt und OK gedrückt

....
 
AW: Cuepoint Charlie...

Was? Das gibts doch gar nicht!
Doch,
man sollte aber auch wissen wie GetCurrentDirectory() funktioniert ;-}

Es ist nicht das Verzeichnis in dem das Programm liegt, sondern das Verzeichnis in dem das Programm aufgerufen wird.

Und da ich mich in dem Verzeichnis aufhalte in dem die WAVs liegen wenn ich PMDFIX aufrufe, wird genau von diesem Verzeichnis als Basis ausgegangen (Hint: Ich arbeite auf der Commandline ;)

Abgesehen davon, auf 'ner anständigen Installation könntest Du als normaler Benutzer gar nicht in das Verzeichnis schreiben in dem das Programm liegt, da sollte normalerweise nur der Superuser Schreibrechte haben. Wird unter XP noch nicht so deutlich durchgesetzt, aber seit Vista schafft es selbst Microsoft hier hart durch zu greifen...

Und da fällt mir noch was auf:

ZeroMemory(&ofn, sizeof(ofn)); /// Hier setzt Du alles auf Null,
Warum dann:
Code:
	ofn.hwndOwner = NULL;
	ofn.lpstrFile[0] = '\0';
	ofn.nFilterIndex = 0;
	ofn.lpstrFileTitle = NULL;
	ofn.nMaxFileTitle = 0;
	ofn.lpstrInitialDir = NULL;
Belts & Suspenders?

cheers
afx
 
AW: Cuepoint Charlie...

Moin

Doch,
man sollte aber auch wissen wie GetCurrentDirectory() funktioniert ;-}

Es ist nicht das Verzeichnis in dem das Programm liegt, sondern das Verzeichnis in dem das Programm aufgerufen wird.

Und da ich mich in dem Verzeichnis aufhalte in dem die WAVs liegen wenn ich PMDFIX aufrufe, wird genau von diesem Verzeichnis als Basis ausgegangen (Hint: Ich arbeite auf der Commandline ;)

Genau das ist der Punkt. Würde man das Programm über die Batchdatei im Programmverzeichnis (meinetwegen auch über eine Verknüpfung auf dem Desktop) aufrufen, würde das nämlich nicht passieren.

Was mach ich denn nun (mit dir)? *kopfkratz*


Abgesehen davon, auf 'ner anständigen Installation könntest Du als normaler Benutzer gar nicht in das Verzeichnis schreiben in dem das Programm liegt, da sollte normalerweise nur der Superuser Schreibrechte haben. Wird unter XP noch nicht so deutlich durchgesetzt, aber seit Vista schafft es selbst Microsoft hier hart durch zu greifen...

Auch wenn das Programm unter C:\Dokumente und Einstellungen\All Users" liegen würde?


Und da fällt mir noch was auf:

ZeroMemory(&ofn, sizeof(ofn)); /// Hier setzt Du alles auf Null,
Warum dann:
Code:
	ofn.hwndOwner = NULL;
	ofn.lpstrFile[0] = '\0';
	ofn.nFilterIndex = 0;
	ofn.lpstrFileTitle = NULL;
	ofn.nMaxFileTitle = 0;
	ofn.lpstrInitialDir = NULL;
Belts & Suspenders?

Alte Gewohnheit bei Variablen auf dem Stack. Erstmal alles Ausnullen. ;) Selbstverständlich kann man dann diese Zeilen weglassen.

Grüßle Zwerg#8
 
AW: Cuepoint Charlie...

Genau das ist der Punkt. Würde man das Programm über die Batchdatei im Programmverzeichnis (meinetwegen auch über eine Verknüpfung auf dem Desktop) aufrufen, würde das nämlich nicht passieren.
Genau, dann würde der Benutzer eine Fehlermeldung bekommen wenn das Programm in 'nem Standard Systemverzeichnis liegt ;)

Aber, man kann wenn man Desktop Icons anlegt für CMD Files das Current Directory in der Verknüpfung festlegen wenn ich mich recht erinnere (hab gerade keine Windows Kiste in Reichweite).

D.H. das sollte in den Installationsanweisungen stehen und dann kann der Benutzer sich sein Basis-Zielverzeichnis da festlegen...

Was mach ich denn nun (mit dir)? *kopfkratz*
Mach einfach statt 'nem zufälligen Namen einen der das ISO-Datum+"falls nötig eine Versionsnummer" enthält. Das sollte das Problem mit dem überschreiben lösen und lesbarer sein als ein zufälliger Name.
Sind ein paar Zeilen Code mehr.....

Auch wenn das Programm unter C:\Dokumente und Einstellungen\All Users" liegen würde
Auf 'ner Anständigen Kiste kann dort nur der Admin (bzw u.U. auch Power User) schreiben.
Erst unter C:\Dokumente und Einstellungen\Hugo kann Benutzer Hugo mit Sicherheit schreiben.

cheers
afx
 
AW: Cuepoint Charlie...

Genau, dann würde der Benutzer eine Fehlermeldung bekommen wenn das Programm in 'nem Standard Systemverzeichnis liegt ;)

Aber, man kann wenn man Desktop Icons anlegt für CMD Files das Current Directory in der Verknüpfung festlegen wenn ich mich recht erinnere (hab gerade keine Windows Kiste in Reichweite).

D.H. das sollte in den Installationsanweisungen stehen und dann kann der Benutzer sich sein Basis-Zielverzeichnis da festlegen...

Korrekt. Andererseits könnte ich den User mit einem weiteren Switch auch "zwingen", ein Zielverzeichnis anzugeben und damit allem Ärger aus dem Weg gehen. Meinetwegen:

/outdir:"C:\Dokumente und Einstellungen\All Users\Gemeinsame Dokumente\Musik\pmdfix\"

vg Zwerg#8
 
AW: Cuepoint Charlie...

Korrekt. Andererseits könnte ich den User mit einem weiteren Switch auch "zwingen", ein Zielverzeichnis anzugeben und damit allem Ärger aus dem Weg gehen. Meinetwegen:

/outdir:"C:\Dokumente und Einstellungen\All Users\Gemeinsame Dokumente\Musik\pmdfix\"
Passt doch....
(bis auf die eklige Pfadlänge ;)
S:\audio\incoming

cheers
afx
 
AW: Cuepoint Charlie...

Normalerweise soll man auch nur noch in %userprofile% und %allusersprofile% schreiben.
So ein Quark. Das passt vielleicht für Konfigurationskrams aber sicher nicht im praktischen Betrieb für Nutzdaten. Speziell nicht bei einem bescheuerten Betriebsystem wo üblicherweise in 70er Jahre Manier zusätzliche Platten per Laufwerksbuchstaben reingehängt werden.

cheers
afx
 
AW: Cuepoint Charlie...

Die Anwendung ist bei Windows 7 immer unter: %programfiles% und die Daten dazu unter %appdata% bzw. %userprofile% oder %allusersprofile% und das ist auch gut so.
 
AW: Cuepoint Charlie...

Die Anwendung ist bei Windows 7 immer unter: %programfiles% und die Daten dazu unter %appdata% bzw. %userprofile% oder %allusersprofile% und das ist auch gut so.

Ach ja? Ein Audioarchvo von 8000 FLACs oder ein Bildarchiv von 50K Bildern unter %userprofile% oder %allusersprofile%?
Schwachfug.

cheers
afx
 
Hallo!

divy hat mich letztens darauf aufmerksam gemacht, daß Marker bei längeren Wavedateien nicht an der richtigen Position im Waveeditor sitzen, konnte die ganze Sache bisher aber nicht rekonstruieren.

Ich hatte heute mal wieder Zeit mich dem Quältext zu widmen und konnte (hoffentlich) den Fehler finden: Bei einer Ganzzahlmultiplikation mit 32 Bit Breite als Zwischenergebnis kommt es wohl zu einem Überlauf. Genaugenommen tritt der Fehler bei einer Wavedatei mit (beispielsweise) 48kHz auf, wenn man Marken nach 89,478s Aufnahmedauer gesetzt hat. Setzt man meinetwegen bei genau 90 Sekunden eine Marke im Rekorder, müßte der Marker im Waveeditor bei etwa 0,52 Sekunden erscheinen...

Ich habe das geändert und führe diese Rechnung jetzt mit MulDiv() durch. Anders gesagt: Erst wenn die interne 64 Bit Integer-Multiplikation

48000 * x

ein Zwischenergebnis größer 2^63 liefert, kommt es zu einem Fehler. x (in Millisekunden) ist dann gleich 192153584101141. Das passiert bei 48kHz also erst nach schlappen 6093 Jahren Aufnahmezeit... :cool:


Zu weiteren Änderungen (siehe weiter oben) bin ich bisher leider nicht gekommen.

Grüßle Zwerg#8
 
Jetzt scheint es korrekt zu funktionieren. Ich habe etwas mehr als 150 tracks auf der Karte, darauf 28 Markierungen verteilt und auch auf den langen tracks sind die Markierungen korrekt. Selbst ich, der die Gesprächspartner gerne erst mal reden lässt, werde sicher nicht die 6093 Jahre Aufnahemzeit überschreiten. Ich halte Euch auf dem Laufenden.
 
Jetzt scheint es korrekt zu funktionieren.

Ja, jetzt funktioniert es. Das war ein dummer Faselfehler von mir, aber niemand hat je längere Waves getestet, obwohl ich in "pmd6fix_DE.txt" schrieb: "So viele Marken wie möglich in einem längeren Track setzen. "Länger" meint erst nach mehreren Minuten Marken setzen, damit dieser Millisekunden-Zähler endlich mal "anständig" lang wird." Keiner hat das gemacht, sonst wäre der Fehler sehr viel früher aufgeflogen.

Ich habe mir gerade eine EDL-Datei mit Marken bei 30, 60, 90, 120 und 150 Sekunden und eine entsprechende Wavedatei mit Sinusbursts an den entsprechenden Stellen "hergerichtet". Die Ergebnisse sieht man unten im Screenshot. "Oben" ist das Ergebnis der "alten Version" zu sehen. Der Marker "3" (bei 90 Sekunden) landet tatsächlich - wie vorausgesagt und in der Transport-Konsole zu sehen - bei etwa 0,52 Sekunden. "Unten" sieht man die Marker nach dem "Update" des Programms, so wie sie eigentlich im Waveeditor erscheinen sollten - und jetzt auch erscheinen...

vg Zwerg#8
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben