aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md20
-rw-r--r--macros/songtimer.lua38
2 files changed, 58 insertions, 0 deletions
diff --git a/README.md b/README.md
index 912b5e6..d0b244b 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,26 @@ Does an alright enough job most of the time, but is ignorant of whitespace.
Not that it really matters, you'll be retiming it anyway.
+## Song timer
+
+makes song timing into a rhythm game
+so you can vibe while you time
+
+bind to e.g. space
+
+0. tap to initialise (`READY`)
+1. tap to set start (`START`)
+1. tap to set end (`END`) + move to next line (`READY`)
+1. go to 1.
+
+apparently that's what some vhs era groups did for their entire dialogue timing
+
+probably won't work too well for that, but for songs (where they're reasonably on-beat) it's pretty good (for a rough pass), especially if you know the song well.
+
+won't be faster, but will be much more enjoyable
+
+doesn't have depctrl - needs to be fast
+
## K-Timing -> Alpha Timing
Makes doing alpha timing significantly easier by getting rid of the part where you do alpha timing.
diff --git a/macros/songtimer.lua b/macros/songtimer.lua
new file mode 100644
index 0000000..9ebafce
--- /dev/null
+++ b/macros/songtimer.lua
@@ -0,0 +1,38 @@
+script_name = "song timer"
+script_description = "time songs while vibin"
+script_author = "garret"
+script_version = "1"
+
+local function main(sub, sel, act)
+
+ local READY = "READY"
+ local START = "START"
+ local END = "END"
+
+ local pos = aegisub.project_properties()['video_position']
+ local ms = aegisub.ms_from_frame(pos)
+ local newline = sub[act]
+ newline.effect = READY
+ newline.text = ""
+ local nextline = newline
+
+ local line = sub[act]
+ local endline = #sub
+
+ if line.effect == READY then
+ line.start_time = ms
+ line.effect = START
+ sub[act] = line
+ elseif line.effect == START then
+ line.end_time = ms
+ line.effect = END
+ sub[act] = line
+ sub.append(nextline)
+ return {endline+1},endline+1
+ else
+ sub.append(nextline)
+ return {endline+1},endline+1
+ end
+end
+
+aegisub.register_macro(script_name, script_description, main)