Ultraschall / ultraschall-portable

Portable ULTRASCHALL Podcasting Extensions including the REAPER DAW
MIT License
55 stars 7 forks source link

Plugin: Umbau des Metadaten-Exports auf Reapers eigene Features #299

Closed mespotine closed 4 years ago

mespotine commented 4 years ago

Zur 4.1 werden wir das Metadaten-Management auf Reapers eigene Features umstellen, die Reaper 6.10 mitbringt.

Reaper 6.10 hat einene eigenen Storage für Metadaten, die optional direkt nach dem Rendern in die MediaFiles reingespeichert werden können. Das optionale exportieren der Metadaten direkt nach dem Rendern ist etwas konzeptionell knifflig zu bauen und wird daher erst mit dem neuen Export Assistant in Ultraschall 4.2 verwendet. Daher wird der Export (noch) im Plugin passieren.

Für den Zugriff auf den Reapereigenen Metadaten-Storage gibts die Funktion GetSetProjectInfo_String, https://mespotin.uber.space/Ultraschall/Reaper_Api_Documentation.html#GetSetProjectInfo_String deren Parameter desc das man mit RENDERMETADATA ansprechen kann.

Hier sind Beispiele, wie der Parameter bespielt werden muss: https://forum.cockos.com/showpost.php?p=2282752&postcount=16

Das Plugin liest nun die Metadaten für Title, Author, Album, Year, Genre und Comment mit GetSetProjectInfo_String aus, weil wir die Metadaten in Zukunft dorthin speichern werden. Der alte Ansatz diese aus den ProjectNotes zu lesen entfällt komplett. Das Management davon die Metadaten in Reapers eigenen Storage zu packen, machen wir komplett in Lua. Sprich: auch das "Konvertieren" der Metadaten aus Project Notes(alte Projekte bis Ultraschall 4.0) in Reapers neuen Metadatenstorage machen wir in Lua, so dass das Plugin sich nicht um Legacy-Sachen kümmern muss, sondern nur den MetadatenStorage von Reaper nutzt.

Das Management für Kapitelmarken und Kapitelmarkenbilder bleibt wie gehabt.

Zur 4.2 wird das Ganze noch weiter vereinfacht, aber das erfordert konzeptionell einige Änderungen, die wir zur 4.1 noch nicht machen werden.

mespotine commented 4 years ago

Das Lua-Äquivalent zum Auslesen der Metadaten sieht so aus:

retval1, Title    = reaper.GetSetProjectInfo_String(0, "RENDER_METADATA", "ID3:TIT2", false)
retval2, Podcast  = reaper.GetSetProjectInfo_String(0, "RENDER_METADATA", "ID3:TALB", false)
retval3, Author   = reaper.GetSetProjectInfo_String(0, "RENDER_METADATA", "ID3:TPE1", false)
retval4, Year     = reaper.GetSetProjectInfo_String(0, "RENDER_METADATA", "ID3:TYER", false)
retval5, Category = reaper.GetSetProjectInfo_String(0, "RENDER_METADATA", "ID3:TCON", false)
retval6, Description = reaper.GetSetProjectInfo_String(0, "RENDER_METADATA", "ID3:COMM", false)

Sollte sich leicht auf C++ übertragen lassen.

Doku zu GetSetProjectInfo_String(): https://mespotin.uber.space/Ultraschall/Reaper_Api_Documentation.html#GetSetProjectInfo_String

rstockm commented 4 years ago

Eingebaut durch #312