Jump to content
F. Wachsmuth

Synkino – endlich einfach vertonen

376 posts in this topic

Am 8.1.2017 um 01:48 schrieb F. Wachsmuth:

.....

@Helge – Du kriegst auf eine obigen Gedanken noch eine Antwort, deine Punkte sind sehr wahr und richtig und helfen auch weiter -- aber ich konzentriere mich gerade noch auf grundlegendere Dinge. Morgen geht leider die Arbeit wieder los...

Hallo Friedemann,

das ist völlig in Ordnung! Das Thema begeistert mich zwar schon sehr, aber die weitere Diskussion hat durchaus ein paar Tage Zeit.

Share this post


Link to post
Share on other sites
vor 23 Stunden schrieb knut:

Genau, der Projektor (bzw. das Steuergerät) erhält die Impulse nicht von einem Tonband sondern von einem Quarzgenerator.

Hallo Knut,

ich kenne ja noch Deinen Artikel aus der Schmalfilm von 2006. Mir ist nie klar gewesen, warum Du zwar das Steuergerät nimmst, sogar einen Startimpuls durch den Tonträger generierst, aber nie die impulsgesteuerte Vertonung verwendet hast?

Ich erzeuge heute bei der Nachvertonung meine Impulse mithilfe einer genauen Funktion im Open Source Tool Audacity auf dem PC. Dann wird der fertig geschnittene Film einmal mit diesen Impulsen abgespielt, ein "Leitband" auf einer der zahlreichen, virtuellen Tonspuren im Tool erstellt.

Danach lege ich all' die kleinen und größeren Audioschnipsel (Kommentare, Geräusche Musik) Szene für Szene bequem grafisch auf andere Tonspuren, kann diese dort separat noch anpassen und am Ende erzeuge ich ein 4-Spur WAV, daß ich dann zur Vorführung verwende.

Share this post


Link to post
Share on other sites

Hallo Helge,

für Deine Version läuft die Wiedergabe über PC mit einer Soundkarte die mehr als die beiden Stereokanäle wiedergeben kann, oder?

Das habe ich nicht und ich wollte die Möglichkeit haben, den Ton mit jeder beliebigen Anlage wiedergeben zu können. Ist ja das gleiche System wie mit dem Audiosync, oder wie das Teil hieß.

Oder wie ist es bei Dir aufgebaut?

Share this post


Link to post
Share on other sites

Ich verwende das Visacustic Steuergerät und eine einfache LogiTech 5-Kanal Soundkarte.

Ich habe eigentlich gar kein Interesse, den Sound woanders z.B. aus der Stereoanlage eines Freundes abzuspielen.

Und wenn es doch mal sein müßte habe ich rasch und einfach eine Monoversion des Tons mit Impulsen auf dem dann freien anderen Stereokanal auf CD erstellt.

Ansonsten bringe ich eh' ein Notebook und die kleine, externe Soundkarte mit, der Verstärker kann dann schon der am Ort vorhandene sein.

Share this post


Link to post
Share on other sites

So, gerstern ging es endlich mal wieder ein bisschen voran. Allerdings eher auf der Grundlagenseite als an sexy Features, aber das musste sein.

Mein bisheriger Ansatz, die UARTs der drei µCs als Bus zu missbrauchen, war keine gute Idee, denn es gab dadurch immer wieder Datenverluste und fehlerhafte Übertragungen – durch Collisions, durch Störsignale (Heftig: Ein Noris Projektormotor) und vermutlich auch, weil der Tx Pin eben kein echte Tristate Pin ist. Auf deutsch: Es mag verzeihlich sein, wenn im Display einmal kurz "18.23r5 fps" steht, eine Regelung macht das aber kaputt. Jeder verlorerene (oder irrtümlich zu viel gezählte) Impuls stört, und, noch viel schlimmer: Ich mussimmer raten, ob es nun an einem Bug lag oder an schlechter Übertragung. Das hat mich jetzt schon viel zu viel Zeit gekostet.

 

Nun habe ich alle drei USARTs auf einen echten Bus (RS-485) gebracht. Das bedeutet, dass die Kabelverbindungen zwischen den Modulen bis zu einem Kilometer sein dürfen und zwei Adern Klingeldraht für eine sichere Verbindung ausreichen. Und da mir ein Bus allein noch nicht viel bringt, habe ich mir auch ein schönes kleines Kommunikationsprotokoll überlegt und implementiert:

 

Jedes Gerät am Bus hat ein eigenes Adressbit, damit kann jeder Node gezielt einen oder mehrere Nodes ansprechen. Damit sind 16 Geräte am Bus möglich, also viel Raum für Synkino-Erweiterungen wie Vorhangsteuerung, Raumlichtsteuerung, synchrone Telecine oder was dem Bastler sonst noch so einfällt :)

Ein Paket darf bis zu 255 Bytes lang sein und besteht aus den Adressbits, einem Kommando-Byte und je einem Parameter als long, float und string, gekapselt in Start- und Endmarker. Jedes Datenbyte wird in Nibbles zerlegt, die einmal normal und einmal bit-invertiert gesendet werden – das erhöht die Störsicherheit. Zum einen gibt es pro Übertragungseinheit so nur 16 statt 256 gültige Werte, womit jegliches Störsignal nur 6,25% Chance hat, als Signal wahrgenommen zu werden. Die Invertierung des unteren Nibbles ins obere stellt sicher, dass es nie lange Salven aus 1 oder 0 gibt, was die Störsicherheit zusätzlich erhöht. Zu guter letzt folgt jedem Paket eine CRC-Prüfsumme, damit beschädigte Pakete verworfen (oder neu angefordert) werden können.

Einen echten Master gibt es nicht, die Masterrolle wechselt je nach State der State-Machine. Meistens darf aber jeder Node die Kontrolle übernehmen und einfach sagen, was er will. Wird ein Kommando geschickt, das eine Antwort erwartet (also z.B. "Wie ist der Audio-Dateiname zu Film 003?"), werden alle anderen Nodes zum Stillschweigen verdonnert, bis der Empfänger eine gültige Antwort bekam und das Weiterplaudern wieder erlaubt hat (oder es einen Timeout gab).

 

Das ganze hört sich kompliziert an, ist aber letzten Endes jetzt doch sehr einfach zu benutzen. Und damit wird die Lösung der eigentlichen Aufgabe, ein einfach zu bedienendes, zuverlässiges Synchrontonsystem zu schaffen, eben auch einfacher. :)
Nur zu sehen gibt es eben noch nichts neues. 

 

Das Bus-Protokoll werde ich, sobald es finalisiert es, natürlich ebenfalls offenlegen. Somit kann man dann auch recht einfach andere Audio-Geräte der Wahl einbinden, wenn einem SD-Karten nicht passen oder man etwas anderes als nur Audio synchron zum Film wiedergeben will... Untertiteldias, Pausendias, 3D-Projektionen mit zwei Filmen in zwei Projektoren, Eine Revox A-77 als Zuspieler, oder auch Werbung vom HD-Beamer bei Filmriss... wer will, kann sich das dann alles selber bauen ;)

 

Edited by F. Wachsmuth (see edit history)

Share this post


Link to post
Share on other sites

Zumindest übertrage ich nirgends Timecode. Ich weiß nicht mal, wer Beauviala ist. Aber ich verfolge ja auch keinerlei kommerziellen Interessen, da bin ich also entspannt...

Share this post


Link to post
Share on other sites

Sehr gut, entspannt ist immer gut. Jean-Pierre Beauviala ist der Elektrotechniker, der das Timecode-System entwickelt hat, das in Filmkameras eingebaut wurde. Panavision hat eine Lizenz genommen.

Share this post


Link to post
Share on other sites

Hallo,

 

ich sehe ein Problem beim synchronen Start von Film und Ton. Bei meinem Projektor startet erst der Film und dann - wenn man den Schalter weiterdreht - geht die Lampe an.

 

Nur so eine Idee:
Vielleicht kann die Fotodiode ja auch dunkle Einzelbilder von hellen unterscheiden. Dann könnte man ein Ereignis bei folgenden Bildfolgen auslösen
1. dunkel-dunkel-hell-hell (z.B. ein Szenenübergang)
2. hell-hell-dunkel-dunkel (dito)
3. dunkel-dunkel-hell-dunkel (z.B. ein absichtlich eingebautes Blank-Bild am Start)

Jedem dieser Ereignisse im Film könnte man einen Zeitpunkt zuordnen und eine Periode, die einen Zeitraum vor und hinter diesem Ereignis umfasst.
Die Regel lautet dann: Wenn das erwartete Ereignis innerhalb der Periode auftritt, spiele den Ton ab dem Zeitpunkt ab.
Wenn das Ereignis nicht eintritt, weil z.B. die Diode es bei dieser Projektion nicht detektiert hat (da lief grad einer durchs Bild), spiele den Ton normal weiter.

Wenn man Film und Ton wie vorgeschlagen startet und relativ nah am Start ein solches Ereignis auswerten kann, sollte man dann spätestens ab diesem Zeitpunkt synchron laufen.
Auch wenn man den Film zwischendrin angehalten und erneut gestartet hat könnte man die Synchronität ab dem nächsten Ereignis wieder herstellen.

Grundsätzlich wäre ich auch an einem Gerät interessiert.

 

Grüße

Stephan

Share this post


Link to post
Share on other sites

Ja, das sind noch Punkte, die der Klärung bedürfen. Da ja auch beim Synkino der Projektor auf eine Startmarke gestellt werden muß, geht das evtl. vernünftig nur mit Projektoren, die eine (wenigstens minimal helle) Stillstandsprojektion erlauben. Und wie ist das mit völlig dunklen Szenen, z.B. bei Ab- und Aufblendungen und Überblendungen?

Share this post


Link to post
Share on other sites

Danke Stephan, das ist ne nette Idee. Ich glaube und hoffe aber, dass das gar nicht nötig ist. Wenn der Startpunkt sauber steht und erkannt wird und die Synchronität beliebig lange erhalten bleibt, ist das Nachregeln an Hand von Szenenübergängen nicht nötig.

Wie genau das mit dem Synchronstart laufen wird, ist noch offen. Im Moment, zum Entwickeln des komplizierteren Restes, habe ich einfach ein Stück weisses Papier an das Handrädchen der Motorachse geklebt, daneben bappt ein kleienr IR-Reflektionsmesser. Der liefert bedingungslos und unmissverständlich jede Flanke. Hier könnte man sogar recht einfach auch Vor- und Rückwärtslauf erkennen. Allerdings hat eben nicht jeder Projektor eine so herausgeführte Motorwelle.

 

Ein bisschen experimenteirt habe ich bisher noch mit

- Mikrofon aussen am Projektor (Motor/Greifergeräusch)

- Hall-Sensor aussen am Projektor

- LWL-Paar an die Filmbahn geführt (erkennt per IR-Reflektion sich bewegende Perfolöcher) 

Die klassischen Methoden (Magnet an der Motorwelle nebst Reedkontakt, Gabellichtschranke) gingen natürlich auch, aber die sind eben recht invasiv.

 

Mir schwebte eher eine technisch eindeutig erkennbare Startmarke vor, die man einfach vor den Filmbeginn einschneidet und mitprojiziert. Soetwas wie 8 abwechselnde Hell/Dunkel-Bilder. Oder auch eine Farbkombination (Je ein Filmbild R-G-B-R-G-B, könnte Augenfreundlicher sein... wie auch immer, da finde ich bestimmt noch eine praktikable Lösung. 

Share this post


Link to post
Share on other sites

Warum nicht einfach ein 'irgendwo' vorgeklebtes Stück Alufolie auf dem Film? So mach(t)en das die 35er in den Kinos auch für Stop- und Lichtautomation.

 

Elegant wäre ein in Filmrichtung laufender aufgeklebter Barcode, der auch gleich die Kopiennummer liefern könnte. Echte Barcodes sind recht aufwendig zu lesen, aber ein etwas einfacherer Code täte es ja auch.

 

Ja, es wäre natürlich schön, wenn der gleiche Sensor die Startmarkierung UND die Transportimpulse liefern könnte. Aber ich fürchte, damit wird man in jedem Fall wieder zu abhängig von konkreten Geräten mit ihren Eigenheiten.

 

 

 

- Carsten

 

Share this post


Link to post
Share on other sites

Irgendwie missfällt mir die Idee von aufgeklebter Metallfolie im Filmkanal. Klebe schmiert doch irgendwann... und Alu ist immerhin Metall, kratzt das nicht? Oder bin ich da zu paranoid?

Aber auf jeden Fall noch eine Idee zum notieren und weiterdenken. :)

Share this post


Link to post
Share on other sites
vor einer Stunde schrieb F. Wachsmuth:

Soetwas wie 8 abwechselnde Hell/Dunkel-Bilder. 

Das gefällt mir am besten. Das lässt sich mt jeder Kamera mit Eizelbildschaltung in wenigen Sekunden erstellen. Zur Entwicklung reicht handelsüblicher SW-Entwickler. Es muss nicht mal umgekehrt zu werden.

  • Like 1

Share this post


Link to post
Share on other sites
vor einer Stunde schrieb F. Wachsmuth:

Irgendwie missfällt mir die Idee von aufgeklebter Metallfolie im Filmkanal. Klebe schmiert doch irgendwann... und Alu ist immerhin Metall, kratzt das nicht? Oder bin ich da zu paranoid?

Aber auf jeden Fall noch eine Idee zum notieren und weiterdenken. :)

 

Wenn auf der Filmoberfläche was kratzt, würde ich den Projektor entsorgen. In Kinos klebt man einen Schnipsel Alufolie mit Filmklebeband mitten aufs Bild. Da schmiert nix. Detektiert wird dort mit kapazitiven Näherungssensoren aus der Industrie. In etwas fortgeschrittenen Multiplexen wurde auch mit aufgeklebten Barcodes gearbeitet, damit ließen sich auch mehrere unterscheidbare Marken in einem Film unterbringen. Die Idee, ID und Startmarke zu integrieren ist eigentlich nicht so schlecht. Und was Aufgeklebtes ist einfacher zu justieren oder zu ersetzen als was Eingeklebtes. Ja, Super8 ist nicht so breit wie 35mm, zugegeben...

 

- Carsten

 

 

Edited by carstenk (see edit history)

Share this post


Link to post
Share on other sites

Hallo Zusammen,

ich hatte beim Lesen gerade die Idee, das als Startmarke zu nehmen, was eh da ist, nämlich eine bereits existierende Folge von Einzelbildern mit bestimmten Charakteristika.

Klar, die müßte vorher vom User mit dem Gerät jeweils Film-spezifisch festgelegt und eingelesen werden.

 

Also Beispiel:

Nullter Schritt (nur einmal pro Filmrolle, dann nicht mehr nötig) - "teach-in" der filmrollenspezifischen Einzelbildkombination = Startmarke

Erster Schritt - Einlesen der Filmrollen-Nummer ("Identifikation" der Filmrolle, die vorgeführt werden soll), damit wird dann auch die spezifische Abfolge von Merkmalen (durchschnittliche Helligkeit oder Farben etc. also wie ein Hash, das wurde im Schritt Null zuerst durch Einlesen ermittelt) aus beispielsweise zehn Einzelbildern aus einer Datenbank oder einem simplen Text-File festgelegt.

Zweiter Schritt - Dann wird rollierend nach diesen zehn Bildern gesucht

Dritter Schritt - Der Fund der gesuchten Kombination ist gleichbedeutend mit dem Finden der Startmarke.

 

Was haltet Ihr davon? Zu kompliziert und/oder an den Anforderungen vorbei oder erwägenswert?

 

Edited by S8_Fan (see edit history)

Share this post


Link to post
Share on other sites

Zu kompliziert und zu unsicher. Meine Filme haben außerdem immer das gleiche Logo am Anfang. 

Aber ein "Vorspann ist vorbei" sollte sich eigentlich gut erkennen lassen. Kommt auch auf die Experimentierliste. 

Share this post


Link to post
Share on other sites
vor 13 Minuten schrieb F. Wachsmuth:

Zu kompliziert und zu unsicher. [...]

 

Hatte ich mir fast schon gedacht ...

Danke für Dein Feedback und noch viel mehr für die Arbeit an diesem Projekt!

Share this post


Link to post
Share on other sites

Hallo

ich hatte mit den Szenenübergängen ursprünglich auch die Idee zu nehmen, was da ist. Ich denke aber, dass das insbesondere am Start nicht immer ausreicht.

Daher das mit dem "Blitzer": Ich positioniere auf ein schwarzes Startband, starte den Film und beim Blitzer (blankes Bild, einfach zu erstellen mit der Einzelbildschaltung) startet dann der Ton.

Markante Stellen im Film (Szenenübergänge oder weitere Blitzer) dienen der Resynchronisation nachden der Film angehalten und wieder gestartet wurde, oder wenn der Film nach einem Riß geflickt wurde und dabei ein paar Bilder verloren gingen.

Das mit den 8 Bildern hat natürlich den Vorteil, dass das ohne zusätzliche zur Tondatei gespeicherte Informationen auskommt. Wenn man sowieso flackert, könnte man durch eine Abfolge von hell und dunkel vielleicht auch einen Code binär codieren, über den die Tondatei ausgewählt wird. Dann entfällt das mit dem RFID.

BTW:
Ursprünglich spunkte bei mir den Gedanke rum, so etwas ähnliches könne man als Smartphone-App implementieren: Man filmt den Film von der Leinwand ab und vertont ihn. Bei der Vorführung richtet man wieder die Smartphone-Kamera auf die Leinwand. Die App erkennt den Film und spielt das Video dazu, permanent synchronisiert durch Vergleich von Videobild und Bild von der Kamera. Den Ton leitet man auf die Lautspecher.
Dauert aber wohl noch, bis Standard-Hardware leistungsfähig genug ist. Und dann braucht es noch jemand, der in Echtzeit-Bildverarbeitung fit ist. Und ne gute Kaffeemaschine und nen zuverlässigen Pizzalieferanten.

Stephan

Edited by Stephan Wessel (see edit history)

Share this post


Link to post
Share on other sites

Achso, und, Friedemann: Vermutlich denkst Du ohnehin schon in die Richtung, aber es wäre natürlich schön, wenn Synkino unmittelbar kompatibel wäre mit den SD-Karten aus der Kodak. In dem Sinne, dass man den entwickelten Film direkt in einen Projektor einlegen kann, die SD-Karte aus der Kamera dazu, und dann gleich mit Ton projizieren. Ich weiss nicht, welche Infos du zu den Audio-Aufnahmen dieser Kamera schon hast, oder ob die Kamera irgendeine Art von Unterstützung für Startmarken bietet. Ein Aufkleber als Startmarke auf dem Film wäre dabei natürlich am einfachsten umzusetzen.

 

- Carsten

Share this post


Link to post
Share on other sites
vor 15 Minuten schrieb carstenk:

Achso, und, Friedemann: Vermutlich denkst Du ohnehin schon in die Richtung, aber es wäre natürlich schön, wenn Synkino unmittelbar kompatibel wäre mit den SD-Karten aus der Kodak.

 

Das wäre natürlich eine feine Sache. Die neue Kodak Kamera (nennen wir sie Genesis) soll bildgenau je Take eine Audiodatei erzeugen. Sofern das stimmt, müssten die einzelnen Dateien nur nahtlos (ohne Verzögerung durch Ladevorgang) wiedergegeben werden. Man könnte sogar eine (ganze) Einstellung aus dem Film heraus schneiden und die zugehörige Audiodatei entfernen und es wäre noch synchron.

 

In Bezug auf das Thema Synchronstart will ich noch nicht locker lassen. ;-) Ich sehe ein, dass eine optische Erkennung (z.B. eines Blitzers, also Schwarzfilm mit Lochung) zu aufwendig ist. Aber wie wäre es mit einem Tropfen Metalllack auf dem Startband oder einer Metallfolie, die von einem induktiven Sensor erfasst wird (wie in Filmtheatern zum Formatwechsel, Vorhangsteuerung usw. verwendet)? Ein solcher Sensor könnte verhältnismäßig einfach am Filmeinlauf montiert werden. Die Anzahl der Bilder bis zum Bildfenster müsste man ermitteln und ein Delay programmieren können (wie bei den Leseköpfen der digitalen Tonverfahren bei 35mm).

 

Gruß, Peter

Share this post


Link to post
Share on other sites

Mach doch eine elektronische (kleine App.) Zählerfunktion hinein. Gabellichtschranke über Filmperforation. Man kann auf beliebiges Bild einspannen und dann den Zähler nullen. So funktioniert z. B. mein Memochrome für Kopierapparate. Eine Lichtschranke am Verschluß. Beim 8-mm-Film-Projektor ist die Perforation richtig, weil es nur ein Loch pro Bild gibt, die Blende hat drei oder zwei Flügel.

Share this post


Link to post
Share on other sites

@Stephan Wessel: Ich mag aber keine Blitzer im Film haben. :) Am Filmstart braucht man den wohl auch nicht, denn gerade der Start ist eigentlich sehr markant: Der Vorspann hört auf. Nach n Impulsen gleicher Helligkeit kommt also plötzlich einer mit anderer Dichte. Das ist schon ein ziemlich guter Indikator eigentlich. Deine Idee mit der App ist gut, "die App erkennt den Film" ist allerdings reichlich optimistisch. So etwas ist ganz extrem aufwendig und absolut keine Aufgabe mehr für einen µC. Und ob das dann zuverlässig genug ist? Computer Vision ist anders kompliziert, als man denkt. Ohne Machine Learning geht da viel weniger als man denkt -- und für Machine Learning braucht es erhebliche Kapazitäten, im Keller oder in der Cloud. Und again: Viel zu kompliziert für diese Anwendung, wo es auch eine Photodiode für wenige Cent tun müsste.

 

@carstenk: Klar, daran denke ich auch. Nahtlose Wiedergabe ist allerdings nicht ganz trivial, wenn man nicht "richtige" Computer einsetzen will. Ich glaube auch nicht, dass "Liveton ohne Bearbeitung" ein besonders häufiges Anwendungsszenario in der Zielgruppe sein wird. Und den bearbeiteten Soundtrack dann noch mal auf die Synkino-SD zu specihern -- daran wird es nicht scheitern. Wäre ja auch doof, wenn man zu jeder Filmrolle, die man ansehen will, erst die passende SD-Karte raussuchen muss... Wenn jemand das haben will, kann er es dem System gern hinzufügen. Die Plattform wird genau dafür offen gemacht. Ich baue das Ding primär für mich, löte für interessierten Freunden ggf. auch ein paar zusammen, weiterentwickeln darf es dann jeder, wie er will, solange es offen bleibt.

 

Zu den Klebe-Startmarken: Damit werde ich nicht warm. Da muss man ja wieder einen Sensor am oder im Projektor befestigen, an dem der Film vorbeiläuft, ohne ihn zu berühren. An Super 8 Projektoren ist aber meist wenig Platz. Und Synkino soll ja eben möglichst ohne Umbauten mit möglichst jedem Projektor funktionieren.

Ausserdem brauche ich ein paar Sekunden Zeit, bis der zugehörige Audiotitel zur Wiedergabe bereit ist. Ich muss da einiges an Puffer füllen, damit auch ein plötzliches hochpitchen gut klappt, und IO von SD-Karten kann überraschend langsam sein, gerade auf schwachbrüstigen µC für wenige Euro.

 

Ich finde aber super, wie hier auf dem Thema Synchronstart mitgedacht wird, unorthodox, kreativ und sehr anregend. Ich habe eine Menge auf meine To-Test-Liste übernommen und werde berichten, wenn es soweit ist. Die letzten zwei Abende habe ich damit verbracht, ein falsch geklammertes file.close() zu finden, das für wildeste Effekte gesorgt hat. Ich hatte schon angefangen, an mir zu zweifeln... aber immer nur abends, wenn der Kopf schon matschig ist, noch ein Stündchen in den Code eintauchen, das ist halt auch nicht ideal für die Produktivität. :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×