From 90999d8f8ca9bc0554dcb353a4ee143299bf8bc3 Mon Sep 17 00:00:00 2001 From: Sven Hesse Date: Fri, 15 Jun 2012 03:03:36 +0200 Subject: AUDIO: Implement a missing Protracker feature When a row has a new period, but no new sample, restart the track's last sample (except when we're doing portamento). --- audio/mods/protracker.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'audio') diff --git a/audio/mods/protracker.cpp b/audio/mods/protracker.cpp index 084b0edf9a..1e18d5adf8 100644 --- a/audio/mods/protracker.cpp +++ b/audio/mods/protracker.cpp @@ -61,6 +61,7 @@ private: struct { byte sample; + byte lastSample; uint16 period; Offset offset; @@ -184,6 +185,7 @@ void ProtrackerStream::updateRow() { _track[track].vibratoPos = 0; } _track[track].sample = note.sample; + _track[track].lastSample = note.sample; _track[track].finetune = _module.sample[note.sample - 1].finetune; _track[track].vol = _module.sample[note.sample - 1].vol; } @@ -194,7 +196,9 @@ void ProtrackerStream::updateRow() { _track[track].period = _module.noteToPeriod(note.note, _track[track].finetune); else _track[track].period = note.period; + _track[track].offset = Offset(0); + _track[track].sample = _track[track].lastSample; } } -- cgit v1.2.3