Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
82b4f4b
Rework sample recorder trim and controls
DavidMenting Jul 7, 2026
37402d2
Dim tracks that do not hold the selected note
DavidMenting Jul 7, 2026
5b7f94f
feat(midi): implement SDS download protocol and transfer locking
DavidMenting Jul 8, 2026
b67ba30
refactor(ui): clean up redundant controls and mount SettingsModal
DavidMenting Jul 8, 2026
54ae00c
i18n: add translations for settings modal and SDS downloads
DavidMenting Jul 8, 2026
d0815fa
feat(recorder): auto-download device sample on pad selection
DavidMenting Jul 8, 2026
b2542b3
ci: configure GitHub Actions deployment to GitHub Pages
DavidMenting Jul 8, 2026
4f7a79e
ci: upgrade Node to 24 and use npm install
DavidMenting Jul 8, 2026
fd9fa25
feat: add missing components, stores, and SVGs for sample-editor
DavidMenting Jul 8, 2026
c967bd2
velocity-gate Voice selection: only select sample on incoming notes w…
DavidMenting Jul 9, 2026
a8666cd
feat(recorder): cache samples in memory and preload factory kit
DavidMenting Jul 9, 2026
41a9376
feat(recorder): wait 1s before requesting a sample dump
DavidMenting Jul 9, 2026
7bffdc7
fix(voice): use correct setTimeout return type for flashTimeout
DavidMenting Jul 9, 2026
ce598b4
fix(track): silence state_referenced_locally warning for prev-value s…
DavidMenting Jul 9, 2026
d1989ab
refactor(audio): extract shared decodeToMono helper
DavidMenting Jul 9, 2026
a8fefa0
refactor(capture): SampleCapture.load owns sample-rate conversion
DavidMenting Jul 9, 2026
8bd6ea0
refactor(recorder): unify loadIntoBuffer/loadIntoEditor
DavidMenting Jul 9, 2026
5c4b4f2
refactor(download): single source of truth for downloaded samples
DavidMenting Jul 9, 2026
c85cc3c
refactor(recorder): extract slot-load orchestration into slotSampleLo…
DavidMenting Jul 9, 2026
dce07a4
fix(sds): queue incoming download messages and reject out-of-order pa…
DavidMenting Jul 9, 2026
9501641
fix(download): wait for aborted download to release the transfer lock
DavidMenting Jul 9, 2026
105ac4e
fix(recorder): don't mark slot loaded when load is skipped
DavidMenting Jul 9, 2026
112a631
chore: cleanup pass from branch review
DavidMenting Jul 9, 2026
74d0673
refactor(recorder): use empty red circle for record button and green …
DavidMenting Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Deploy to GitHub Pages

on:
push:
branches:
- feat/sample-editor

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow one active deployment
concurrency:
group: 'pages'
cancel-in-progress: true

jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 24

- name: Install dependencies
run: npm install

- name: Build
# For a custom domain (e.g., drum.dato.mu), keep BASE_PATH empty.
# For a default github.io subpath (e.g., username.github.io/drum-webapp),
# set BASE_PATH to /<repository-name> (e.g., /drum-webapp).
env:
BASE_PATH: ''
run: npm run build

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'build'

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
20 changes: 1 addition & 19 deletions src/lib/components/Footer.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script lang="ts">
import { _, locale } from "svelte-i18n";
import { midiState, disconnectDevice } from "$lib/stores/midi.svelte";
import { midiState } from "$lib/stores/midi.svelte";
import { audioInputState, selectDevice } from "$lib/stores/audioInput.svelte";

const showLanguageAndAudioInput = false;
Expand Down Expand Up @@ -100,24 +100,6 @@
{/if}
</div>
{/if}
{#if midiState.isConnected}
<button
class="flex items-center gap-2 text-sm hover:text-gray-800 transition-colors"
onclick={disconnectDevice}
title={$_("device_connected_status", {
values: {
deviceName: midiState.selectedOutput?.name || "Dato DRUM",
},
}) +
" - " +
$_("device_disconnect_button")}
>
<span class="hidden sm:inline">
{$_("connected")}{#if midiState.firmwareVersion}
({midiState.firmwareVersion}){/if}
</span>
</button>
{/if}
</div>
</div>
</footer>
Expand Down
Loading
Loading