MCUME/MCUME_pico/picosnd/LibFC14/LamePaulaVoice.cpp

53 wiersze
1.2 KiB
C++

// Simple AMIGA Paula Audio channel mixer -- Copyright (C) Michael Schwendt
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
#include "LamePaula.h"
LamePaulaVoice::LamePaulaVoice() {
looping = true;
off();
}
LamePaulaVoice::~LamePaulaVoice() {
off();
}
void LamePaulaVoice::off() {
isOn = false;
paula.period = 0;
paula.volume = 0;
}
void LamePaulaVoice::on() {
takeNextBuf();
isOn = true;
}
void LamePaulaVoice::takeNextBuf() {
if (!isOn) {
// If channel is off, take sample START parameters.
start = paula.start;
length = paula.length;
length <<= 1;
if (length == 0) { // Paula would play $FFFF words (!)
length = 1;
}
end = start+length;
}
repeatStart = paula.start;
repeatLength = paula.length;
repeatLength <<= 1;
if (repeatLength == 0) { // Paula would play $FFFF words (!)
repeatLength = 1;
}
repeatEnd = repeatStart+repeatLength;
}