Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
9b13981
Implemented: palette catalog with light/dark themes
JakimPL Aug 6, 2026
eb4cf17
Added: dynamic palette resolution
JakimPL Aug 6, 2026
450d7ef
Added: dynamic palette colors
JakimPL Aug 7, 2026
1e24aa2
Minor script check improvements
JakimPL Aug 8, 2026
db3cf84
Added: display option to application schemas
JakimPL Aug 8, 2026
0cc8094
Added: display settings dialog box
JakimPL Aug 8, 2026
72dd9b4
General improvements
JakimPL Aug 8, 2026
accd937
Added: display panel tests
JakimPL Aug 8, 2026
f5328e5
General improvements
JakimPL Aug 8, 2026
325a515
Fixed: display settings dialog shrinking
JakimPL Aug 8, 2026
b76e4d5
Minor improvements
JakimPL Aug 8, 2026
8d9be21
Fixed: check scripts
JakimPL Aug 8, 2026
f7b7c43
Added: keyboard combination
JakimPL Aug 8, 2026
05a009f
Renamed: grid to tracker
JakimPL Aug 8, 2026
60ba68a
Reformat
JakimPL Aug 8, 2026
aa53471
Reworked: unit tests
JakimPL Aug 8, 2026
814a239
Added: remaining tests
JakimPL Aug 8, 2026
4fb635f
Added: keybinding scheme loaded from configuration
JakimPL Aug 8, 2026
ca817ed
Refactored: sequencer panels onto the keybinding registry
JakimPL Aug 8, 2026
33fc9ba
Refactored: sequencer panels onto the keybinding registry
JakimPL Aug 9, 2026
ab2d93e
Added: tracker beat and bar row emphasis
JakimPL Aug 9, 2026
bd82a08
Updated: themes
JakimPL Aug 9, 2026
af7c9b1
Fixed: unclosable display settings dialog
JakimPL Aug 9, 2026
a89a728
Added: keybinding preferences and live rebinding
JakimPL Aug 9, 2026
7942cba
Documented: keybinding registry and colour ownership
JakimPL Aug 9, 2026
ed78aa3
Extended: key vocabulary
JakimPL Aug 9, 2026
39b0777
Added: shortcut draft over an edited scheme
JakimPL Aug 9, 2026
1b6634f
Added: keyboard shortcuts dialog box
JakimPL Aug 9, 2026
1f0dfa7
Bound: macOS keys + generator keys
JakimPL Aug 9, 2026
d0746c0
Documented: keyboard shortcuts dialog
JakimPL Aug 9, 2026
9c23cc2
Fixed: sequencer keys reaching from other tabs and stale application …
JakimPL Aug 9, 2026
7559c50
Refactored: user profile
JakimPL Aug 9, 2026
ae303bc
Refactored: dialog windows onto a shared keyboard base
JakimPL Aug 9, 2026
9a1db30
Refactored: shared candidate alignment, metadata contract and instrum…
JakimPL Aug 9, 2026
ff0fac3
Refactored: element enums found by type
JakimPL Aug 9, 2026
02d4d92
Added: tracker scrolling to the playing row
JakimPL Aug 9, 2026
273b5e1
Fixed: playhead mark
JakimPL Aug 10, 2026
f93aa8d
Added: follow mode
JakimPL Aug 10, 2026
47c1fa8
Added: follow-mode menu and keyboard shortcuts
JakimPL Aug 10, 2026
3c0a885
Documented: follow modes
JakimPL Aug 10, 2026
34950d6
Fixed: audio teardown ordering on exit
JakimPL Aug 10, 2026
223ecc3
Fixed: song player stop
JakimPL Aug 10, 2026
c222536
Fixed: audio device manager release
JakimPL Aug 10, 2026
709acbd
Documented: audio backend teardown ordering
JakimPL Aug 10, 2026
68c1f47
Fixed: macOS CI PortAudio dependency for pyaudio
JakimPL Aug 10, 2026
ab8ab03
Fixed: unit tests
JakimPL Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 7 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
os: [ubuntu-latest, windows-latest, macos-latest]
python: ["3.12", "3.13"]
steps:
- uses: actions/checkout@v7
Expand All @@ -62,6 +62,12 @@ jobs:
if: runner.os == 'Linux'
run: bash scripts/linux/build/dependencies.sh

- name: Install system libraries (macOS)
if: runner.os == 'macOS'
run: |
bash scripts/macos/build/dependencies.sh
bash scripts/macos/build/build_env.sh >> "$GITHUB_ENV"

- name: Install the development environment
run: uv sync --group dev

Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ jobs:
os: [ubuntu-latest, windows-latest, macos-latest]
python: ["3.12", "3.13"]
steps:
- uses: actions/checkout@v7
with:
path: repository

- uses: actions/download-artifact@v8
with:
name: dist
Expand All @@ -74,10 +78,8 @@ jobs:
- name: Install PortAudio (macOS)
if: runner.os == 'macOS'
run: |
brew install portaudio
prefix="$(brew --prefix portaudio)"
echo "CFLAGS=-I${prefix}/include" >> "$GITHUB_ENV"
echo "LDFLAGS=-L${prefix}/lib" >> "$GITHUB_ENV"
bash repository/scripts/macos/build/dependencies.sh
bash repository/scripts/macos/build/build_env.sh >> "$GITHUB_ENV"

- name: Install the wheel and check the entry point
shell: bash
Expand Down
12 changes: 10 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,18 @@ repos:

- id: tag-names
name: tag names
entry: uv run scripts/checks/tag_names.py
entry: uv run scripts/checks/tag_names.py --all
language: system
types: [python]
files: ^src/sampletones_application/tags/
pass_filenames: false
verbose: true

- id: palette-colors
name: palette colors
entry: uv run scripts/checks/palette_colors.py
language: system
files: (^src/sampletones_application/.*\.py|^src/sampletones_config/.*\.yaml)$
pass_filenames: false
verbose: true

- id: language-keys
Expand Down
13 changes: 0 additions & 13 deletions .pylintrc

This file was deleted.

4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@

* Added support to [Bitphase](https://github.com/paator/bitphase).
* Fixed arpeggio editing shifting a sample's pitch permanently.
* Enhanced application options:
* Display settings
* Theme selector
* Keybinding settings
* Bumped the reconstruction data-version to `2.1`.

## v0.3.0 [2026-07-31]
Expand Down
21 changes: 13 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.PHONY: help setup install build release system-deps run clean pre-commit test \
ftm-samples check-import-boundary check-tag-names check-unused-tags \
check-language-keys calibration lint pylint mypy format
check-language-keys check-palette-colors calibration lint pylint mypy format

ifeq ($(OS),Windows_NT)
ifeq ($(MSYSTEM),)
Expand Down Expand Up @@ -43,12 +43,14 @@ endif
BUILD_COMMAND := $(RUN_SCRIPT) $(BUILD_SCRIPT)
RELEASE_COMMAND := $(RUN_SCRIPT) $(BUILD_SCRIPT) --release
SYSTEM_DEPS_COMMAND := bash scripts/linux/build/dependencies.sh
SETUP_ENV :=

ifeq ($(UNAME_S),Darwin)
MACOS_SOURCE_ONLY := bash scripts/macos/source_only.sh
BUILD_COMMAND := $(MACOS_SOURCE_ONLY) 'make build'
RELEASE_COMMAND := $(MACOS_SOURCE_ONLY) 'make release'
SYSTEM_DEPS_COMMAND := $(MACOS_SOURCE_ONLY) 'make system-deps'
MACOS_NO_BUNDLE := bash scripts/macos/build/no_bundle.sh
BUILD_COMMAND := $(MACOS_NO_BUNDLE) 'make build'
RELEASE_COMMAND := $(MACOS_NO_BUNDLE) 'make release'
SYSTEM_DEPS_COMMAND := bash scripts/macos/build/dependencies.sh
SETUP_ENV := ARCHFLAGS="-arch $(shell uname -m)"
endif

GPU ?= auto
Expand All @@ -63,7 +65,7 @@ help:
@echo $(Q)Available targets:$(Q)
@echo $(Q) make setup - Set up development environment (uv); GPU auto-detected, GPU=0 forces CPU$(Q)
@echo $(Q) make pre-commit - Install pre-commit hooks$(Q)
@echo $(Q) make system-deps - Install system packages required to build and run (Debian-based)$(Q)
@echo $(Q) make system-deps - Install system packages required to build and run (Debian-based, or Homebrew on macOS)$(Q)
@echo $(Q) make build - Compile standalone executable (respects current deployment config)$(Q)
@echo $(Q) make release - Compile standalone executable with the release deployment config$(Q)
@echo $(Q) make test - Run unit tests with coverage$(Q)
Expand All @@ -74,8 +76,8 @@ help:
@echo $(Q) make run - Run SampleToNES application$(Q)

setup:
uv sync --group dev $(if $(GPU_EXTRA),--extra $(GPU_EXTRA),)
uv tool install --force $(if $(GPU_EXTRA),".[$(GPU_EXTRA)]",.)
$(SETUP_ENV) uv sync --group dev $(if $(GPU_EXTRA),--extra $(GPU_EXTRA),)
$(SETUP_ENV) uv tool install --force $(if $(GPU_EXTRA),".[$(GPU_EXTRA)]",.)

install:
$(MAKE) setup
Expand Down Expand Up @@ -118,6 +120,9 @@ check-unused-tags:
check-language-keys:
uv run scripts/checks/language_keys.py

check-palette-colors:
uv run scripts/checks/palette_colors.py

calibration:
uv run scripts/calibration.py --all

Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,12 @@ To install with GPU support, request the `gpu` extra (see [GPU acceleration](#gp
uv tool install "sampletones[gpu]"
```

On Linux, audio playback and file dialogs rely on system libraries that cannot come from
PyPI. Install them first:
On Linux and macOS, audio playback and file dialogs rely on system libraries that come from
the platform's package manager. Install them first:

```sh
sudo apt-get install libportaudio2 libasound2 python3-tk # Debian/Ubuntu
brew install portaudio # macOS
```
### Building the executable yourself

Expand Down
Loading
Loading