View Issue Details

IDProjectCategoryView StatusLast Update
0001808OpenMPTGeneralpublic2024-10-26 18:41
ReporterSaga Musix Assigned ToSaga Musix  
PrioritynormalSeverityfeatureReproducibilityN/A
Status resolvedResolutionfixed 
Target VersionOpenMPT 1.32 / libopenmpt 0.8 (goals)Fixed in VersionOpenMPT 1.32 / libopenmpt 0.8 (goals) 
Summary0001808: Use Signalsmith Stretch for pitch shifting and time stretching
Description

https://signalsmith-audio.co.uk/writing/2023/stretch-design/

We currently use smbPitchShift for pitch shifting and Soundtouch for time stretching; smbPitchShift is old and showing its age, while Soundtouch is purely working in the time domain as far as I know, leading to unpleasant (most of the time, anyway) artifacts when stretching.

Signalsmith Stretch can do both pitch-shifting and time-stretching and seems to be comparable to Rubberband in terms of quality, while being MIT-licensed (Rubberband is GPL + commercial).

Since Soundtouch's time domain based approach can be used to approximate "MPC-style" time stretching effects, a replacement for that should probably be offered if we switch to Signalsmith Stretch. An alternative MPC-style implementation could be much simpler than what Soundtouch offers, though.

TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Activities

Saga Musix

Saga Musix

2024-09-18 21:27

administrator   ~0006052

Implemented in r21608.

Issue History

Date Modified Username Field Change
2024-08-20 13:20 Saga Musix New Issue
2024-09-08 21:32 Saga Musix Assigned To => Saga Musix
2024-09-08 21:32 Saga Musix Status new => assigned
2024-09-08 21:32 Saga Musix Target Version => OpenMPT 1.32 / libopenmpt 0.8 (goals)
2024-09-18 21:27 Saga Musix Note Added: 0006052
2024-09-18 21:28 Saga Musix Status assigned => resolved
2024-09-18 21:28 Saga Musix Resolution open => fixed
2024-09-18 21:28 Saga Musix Fixed in Version => OpenMPT 1.32 / libopenmpt 0.8 (goals)
2024-09-18 21:28 Saga Musix Summary Evaluate Signalsmith Stretch => Use Signalsmith Stretch for pitch shifting and time stretching