about summary refs log tree commit diff
path: root/users/Profpatsch/lyric/src/index.ts
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2024-09-27T23·30+0200
committerProfpatsch <mail@profpatsch.de>2024-10-05T13·49+0000
commit9bec21ea1cb9137d8c5dae6ee2cb78aac1b5601a (patch)
treeec649db1716bc7b0a7a5d42b8adb4f0c81410659 /users/Profpatsch/lyric/src/index.ts
parent970dcaa04f3c4bda473674f7e7bb2d2d87ab13e8 (diff)
feat(users/Profpatsch/lyric): add vscode extension & helpers r/8759
* tap-bpm: simple CLI program that accepts key inputs and averages a
BPM value

* lyric-timing-mpv-script: If you press Ctrl+l, mpv attaches the
  current timestamp to a .lrc file named after the song.
  This is for manually timing missing songs for uploading them to
  https://lrclib.net/

* extension: vscode extension for `.lrc` files, currently with the
  following features:

    1. A “jump to LRC position” command which reads an .lrc timestamp
    from the current line and expects mpv to listen on
    `~/tmp/mpv-socket` (via `--input-ipc-server`), and will seek to
    the exact timestamp (down to the ms) in the currently playing
    song.

    2. Some initial linting warnings

      - A lint that warns if the difference to the next timestamp is
      more than 10s (which usually means there’s an instrumental and
      the previous line is stuck)

      - A lint that checks that timestamps are monotonically
      increasing

Change-Id: I32a4ac0e2c5bbe3d94e45ffcf647f81bc7c08aa0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12537
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
Diffstat (limited to 'users/Profpatsch/lyric/src/index.ts')
-rw-r--r--users/Profpatsch/lyric/src/index.ts16
1 files changed, 16 insertions, 0 deletions
diff --git a/users/Profpatsch/lyric/src/index.ts b/users/Profpatsch/lyric/src/index.ts
new file mode 100644
index 000000000000..6bab1c4590cd
--- /dev/null
+++ b/users/Profpatsch/lyric/src/index.ts
@@ -0,0 +1,16 @@
+import { tapBpm } from "./tap-bpm.js";
+
+async function main() {
+  // subcommand for tap-bpm
+  if (process.argv[2] === "tap-bpm") {
+    await tapBpm();
+  }
+}
+
+await main();
+
+// sleep in a loop to block nodejs
+console.log("Blocking event loop...");
+while (true) {
+  await new Promise((resolve) => setTimeout(resolve, 1000));
+}