Skip to content

metrasynth/reloaper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reloaper: The Reloading Looper for SunVox

Reloaper gives you an alternative way to play SunVox songs while you're composing them. Instead of real-time rendering inside SunVox, it pre-renders the song. You can then select a loop region in the song to repeat.

This can be especially useful when you are composing SunVox projects programmatically. Instead of loading a project in SunVox and manually triggering playback, you can keep hacking on your composition while you're continuously listening to portions of it.

The magic happens when you change your song project file and save it. Reloaper will detect changes to the file and re-render the song. Playback continues seamlessly without interruption when the new audio is swapped in.

Installation

  1. Clone this repository: git clone https://github.com/metrasynth/reloaper
  2. Make sure you have installed uv.

Usage

Run Reloaper by passing the path to your SunVox song project file:

uv run python -m reloaper path/to/song.sunvox

More help:

uv run python -m reloaper --help

Keybindings

Key Action
Up Increase length of loop region
Down Decrease length of loop region
Left Decrease start of loop region
Right Increase start of loop region
Space Play/Pause
Q Quit

Features / TODO list

  • Watches a SunVox song file for changes.
  • When a change is detected (not currently rendering):
    • Renders the audio for the song to a WAV in memory.
    • Renders the time map for the song to memory.
  • Option to watch a directory for changes to any .sunvox file and use it for the latest render.
  • When a change is detected (currently rendering):
    • Schedules a re-render to start after the current one finishes.
  • When a song and time map are both rendered:
    • Replaces the current playback audio with the new render.
    • If the frames for the current loop region in the time map have changed:
      • Moves the playhead to the start frame of the current loop.
  • When starting playback:
    • If the loop region is unset, starts playing at line 0.
    • If the loop region is set, starts playing at the first frame of the loop beginning.
  • During playback:
    • If the loop region is set, audio loops when the last frame of the last line is reached.
  • Display:
    • Playback state.
    • Rendering state.
    • Current line is shown.
    • Current time position in song is shown.
  • Initial state:
    • Playing the song.
    • No loop region.
  • User can perform these actions:
    • Adjust start + length of loop region, specified by line number.
    • Play audio
    • Pause audio
    • Quit

About

Reloading looper for SunVox projects

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages