• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Tatsh / smlab / 32613210767
100%

Build:
DEFAULT BRANCH: master
Ran 23 Aug 2026 02:36AM UTC
Jobs 3
Files 46
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

23 Aug 2026 02:34AM UTC coverage: 99.887% (-0.1%) from 100.0%
32613210767

push

github

Tatsh
warp: fit the tempo segments a song needs, and refuse the ones it does not

drift reported only the single worst stretch, which is no answer for a song that
moves more than once. It now prints every segment needed to hold the grid within
the tolerance, as a command line to paste back, and generate accepts --warp with
no value to fit and apply the same set itself. --warp-slip sets how far the grid
may wander first.

The segments are chosen by dynamic programming over the phase track rather than
by extending pieces left to right. Greedy fitting runs a piece past the change
before the tolerance notices, and the next piece then straddles the change and
reports a tempo belonging to neither side; on a click track stepping from 128 to
130 BPM it invents that bridge.

Two rules then throw boundaries away, because a tempo segment can only say the
beat spacing changed and that is the wrong instrument for a step in the measured
phase. Steps are common: where the beat appears to sit depends on what is
playing, so percussion entering moves the measurement without moving the beat. A
click track at a mathematically exact tempo with off-beat hits entering half way
through produced a spurious excursion of 0.8 BPM at exactly that moment. A
boundary now has to move the grid by more than the tolerance across the shorter
stretch it separates, and a tempo that departs from its neighbour and comes
straight back is treated as a step, since real tempo changes do not undo
themselves. Joined segments take the middle tempo of their pieces by duration,
because a line refitted across a step comes out tilted and reintroduces the
error that was just removed.

Feinak fits four segments where the greedy version wanted nine.

Signed-off-by: Andrew Udvare <audvare@gmail.com>

753 of 756 branches covered (99.6%)

Branch coverage included in aggregate %.

103 of 105 new or added lines in 2 files covered. (98.1%)

3656 of 3658 relevant lines covered (99.95%)

3.0 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
97.09
-2.91% smlab/warp.py
Jobs
ID Job ID Ran Files Coverage
1 32613210767.1 23 Aug 2026 02:36AM UTC 46
99.89
GitHub Action Run
2 32613210767.2 23 Aug 2026 02:36AM UTC 46
99.89
GitHub Action Run
3 32613210767.3 23 Aug 2026 02:36AM UTC 46
99.89
GitHub Action Run
Source Files on build 32613210767
  • Tree
  • List 46
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #32613210767
  • 330ae9ce on github
  • Prev Build on master (#32611079857)
  • Next Build on master (#32615134396)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc