From 76e81c1f60466da736c78ce007d3cb744d514617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Ml=C3=A1dek?= Date: Sat, 24 Feb 2024 22:17:57 +0100 Subject: [PATCH] feat: add audio channel test, av sync test --- .gitignore | 3 + Earthfile | 52 ++++++------ assets/generated/.gitkeep | 0 package.json | 1 + src/routes/+layout.svelte | 2 +- src/routes/+page.svelte | 6 +- src/routes/audio/+layout.svelte | 5 ++ src/routes/audio/+layout.ts | 1 + src/routes/audio/+page.svelte | 20 +++++ src/routes/audio/channels/+layout.svelte | 82 +++++++++++++++++++ src/routes/audio/channels/+page.svelte | 8 ++ src/routes/audio/channels/5.1/+page.svelte | 24 ++++++ src/routes/audio/channels/7.1/+page.svelte | 31 +++++++ src/routes/audio/channels/speaker.svelte | 68 +++++++++++++++ src/routes/audio/channels/stereo/+page.svelte | 14 ++++ src/routes/av-sync/+page.svelte | 30 +++++++ vite.config.ts | 13 ++- 17 files changed, 334 insertions(+), 26 deletions(-) create mode 100644 assets/generated/.gitkeep create mode 100644 src/routes/audio/+layout.svelte create mode 100644 src/routes/audio/+layout.ts create mode 100644 src/routes/audio/channels/+layout.svelte create mode 100644 src/routes/audio/channels/+page.svelte create mode 100644 src/routes/audio/channels/5.1/+page.svelte create mode 100644 src/routes/audio/channels/7.1/+page.svelte create mode 100644 src/routes/audio/channels/speaker.svelte create mode 100644 src/routes/audio/channels/stereo/+page.svelte create mode 100644 src/routes/av-sync/+page.svelte diff --git a/.gitignore b/.gitignore index 6635cf5..7884c34 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +assets/generated/* +!assets/generated/.gitkeep + .DS_Store node_modules /build diff --git a/Earthfile b/Earthfile index 9ce5ca3..85a6ccf 100644 --- a/Earthfile +++ b/Earthfile @@ -1,6 +1,30 @@ VERSION 0.7 FROM node:lts +site: + RUN npm install -g pnpm + COPY package.json pnpm-lock.yaml /site + WORKDIR /site + CACHE --id=pnpm $HOME/.local/share/pnpm + RUN pnpm install --frozen-lockfile --prod + COPY . /site + COPY +assets-generated/* /site/assets/generated + RUN pnpm build + SAVE ARTIFACT build AS LOCAL build + +deploy: + FROM alpine + RUN apk add openssh-client rsync + RUN --secret SSH_CONFIG --secret SSH_UPLOAD_KEY --secret SSH_KNOWN_HOSTS \ + mkdir -p $HOME/.ssh && \ + echo "$SSH_CONFIG" > $HOME/.ssh/config && \ + echo "$SSH_UPLOAD_KEY" > $HOME/.ssh/id_rsa && \ + echo "$SSH_KNOWN_HOSTS" > $HOME/.ssh/known_hosts && \ + chmod 600 $HOME/.ssh/* + COPY +site/build /build + RUN --secret SSH_TARGET --push rsync -cvrz --delete /build/ $SSH_TARGET + + avsync-video-components: # https://pptr.dev/troubleshooting RUN apt-get update && apt-get -y install libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 && rm -rf /var/lib/apt/lists/* @@ -16,8 +40,8 @@ avsync-video-components: ARG CYCLES=16 ARG SIZE=1200 RUN pnpm av:render:video --fps $FPS --cycles 1 --size $SIZE --output /var/tmp/frames - RUN pnpm av:render:audio -i beep.wav -o /var/tmp/track.wav --repeats $CYCLES SAVE ARTIFACT /var/tmp/frames + RUN pnpm av:render:audio -i beep.wav -o /var/tmp/track.wav --repeats $CYCLES SAVE ARTIFACT /var/tmp/track.wav avsync-video: @@ -76,25 +100,7 @@ audio-channel-tracks-mp3: for file in /output/wav/7.1/*.wav; do ffmpeg -i $file -c:a libmp3lame /output/mp3/7.1/$(basename $file .wav).mp3 -hide_banner -loglevel error; done SAVE ARTIFACT /output/mp3 -site: - RUN npm install -g pnpm - COPY package.json pnpm-lock.yaml /site - WORKDIR /site - CACHE --id=pnpm $HOME/.local/share/pnpm - RUN pnpm install --frozen-lockfile --prod - COPY . /site - RUN pnpm build - SAVE ARTIFACT build AS LOCAL build - -deploy: - FROM alpine - RUN apk add openssh-client rsync - RUN --secret SSH_CONFIG --secret SSH_UPLOAD_KEY --secret SSH_KNOWN_HOSTS \ - mkdir -p $HOME/.ssh && \ - echo "$SSH_CONFIG" > $HOME/.ssh/config && \ - echo "$SSH_UPLOAD_KEY" > $HOME/.ssh/id_rsa && \ - echo "$SSH_KNOWN_HOSTS" > $HOME/.ssh/known_hosts && \ - chmod 600 $HOME/.ssh/* - COPY +site/build /build - RUN --secret SSH_TARGET --push rsync -cvrz --delete /build/ $SSH_TARGET - +assets-generated: + COPY +avsync-video/avsync.webm /assets/avsync.webm + COPY +audio-channel-tracks-mp3/mp3 /assets/audio/ + SAVE ARTIFACT /assets/* AS LOCAL assets/generated/ diff --git a/assets/generated/.gitkeep b/assets/generated/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json index 8122b9a..4adfd36 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check . && eslint .", "format": "prettier --write .", + "generate-assets": "earthly +assets-generated", "av:dev": "cd av-sync && vite", "av:render:video": "cd av-sync && concurrently -P -k -s command-1 \"vite --port 8626\" \"wait-on http://localhost:8626 && node render-video.js --url http://localhost:8626 {@}\" --", "av:render:audio": "cd av-sync && node render-audio.js" diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 1a0c709..e9a3064 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -25,7 +25,7 @@ goto('/card')} />
- Back + Back
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 858383d..a583d93 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -9,10 +9,14 @@ Screen - + Audio + + + AV Sync + Keyboard diff --git a/src/routes/audio/+layout.svelte b/src/routes/audio/+layout.svelte new file mode 100644 index 0000000..4d17672 --- /dev/null +++ b/src/routes/audio/+layout.svelte @@ -0,0 +1,5 @@ + + +

Audio test

+ diff --git a/src/routes/audio/+layout.ts b/src/routes/audio/+layout.ts new file mode 100644 index 0000000..d3c3250 --- /dev/null +++ b/src/routes/audio/+layout.ts @@ -0,0 +1 @@ +export const trailingSlash = 'always'; diff --git a/src/routes/audio/+page.svelte b/src/routes/audio/+page.svelte index e69de29..a7705b0 100644 --- a/src/routes/audio/+page.svelte +++ b/src/routes/audio/+page.svelte @@ -0,0 +1,20 @@ +

Channel tests

+
+ + diff --git a/src/routes/audio/channels/+layout.svelte b/src/routes/audio/channels/+layout.svelte new file mode 100644 index 0000000..ddb9b9e --- /dev/null +++ b/src/routes/audio/channels/+layout.svelte @@ -0,0 +1,82 @@ + + +
+ +
+
+ +
+ + diff --git a/src/routes/audio/channels/+page.svelte b/src/routes/audio/channels/+page.svelte new file mode 100644 index 0000000..9494494 --- /dev/null +++ b/src/routes/audio/channels/+page.svelte @@ -0,0 +1,8 @@ + diff --git a/src/routes/audio/channels/5.1/+page.svelte b/src/routes/audio/channels/5.1/+page.svelte new file mode 100644 index 0000000..fad8203 --- /dev/null +++ b/src/routes/audio/channels/5.1/+page.svelte @@ -0,0 +1,24 @@ + + +
+ Front Left +
+ Front Center +
+ Front Right +
+
+ Rear Left + Rear Right +
+LFE + +
5.1
diff --git a/src/routes/audio/channels/7.1/+page.svelte b/src/routes/audio/channels/7.1/+page.svelte new file mode 100644 index 0000000..d37afd5 --- /dev/null +++ b/src/routes/audio/channels/7.1/+page.svelte @@ -0,0 +1,31 @@ + + +
+ Front Left +
+ Front Center +
+ Front Right +
+
+ Side Left + Side Right +
+ +
+ Rear Left + Rear Right +
+LFE + +
7.1
diff --git a/src/routes/audio/channels/speaker.svelte b/src/routes/audio/channels/speaker.svelte new file mode 100644 index 0000000..874ae5d --- /dev/null +++ b/src/routes/audio/channels/speaker.svelte @@ -0,0 +1,68 @@ + + + + + diff --git a/src/routes/audio/channels/stereo/+page.svelte b/src/routes/audio/channels/stereo/+page.svelte new file mode 100644 index 0000000..d3e7bc4 --- /dev/null +++ b/src/routes/audio/channels/stereo/+page.svelte @@ -0,0 +1,14 @@ + + +
+ Left +
+ Center +
+ Right +
diff --git a/src/routes/av-sync/+page.svelte b/src/routes/av-sync/+page.svelte new file mode 100644 index 0000000..57610a9 --- /dev/null +++ b/src/routes/av-sync/+page.svelte @@ -0,0 +1,30 @@ + + +

Audio/Video Synchronization

+ + + + diff --git a/vite.config.ts b/vite.config.ts index bbf8c7d..8ba9176 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,17 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; +import * as path from 'path'; export default defineConfig({ - plugins: [sveltekit()] + plugins: [sveltekit()], + resolve: { + alias: { + '@assets': path.join(__dirname, 'assets/generated') + } + }, + server: { + fs: { + allow: [path.join(__dirname, 'assets/generated')] + } + } });