volume and pan effects are now logarithmic closer to human hearing (#77)
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <QLabel>
|
||||
#include <QtMath>
|
||||
#include <cmath>
|
||||
|
||||
#include "ui/labelslider.h"
|
||||
@@ -52,7 +53,7 @@ void PanEffect::process_audio(quint8 *samples, int nb_bytes) {
|
||||
qint16 left_sample = (qint16) ((samples[i+1] << 8) | samples[i]);
|
||||
qint16 right_sample = (qint16) ((samples[i+3] << 8) | samples[i+2]);
|
||||
|
||||
float val = pan_val->value()*0.01f;
|
||||
float val = qPow(pan_val->value()*0.01f, 3);
|
||||
if (val < 0) {
|
||||
// affect right channel
|
||||
right_sample *= (1-std::abs(val));
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <QLabel>
|
||||
#include <QtMath>
|
||||
#include <QDebug>
|
||||
|
||||
#include "ui/labelslider.h"
|
||||
@@ -47,10 +48,11 @@ void VolumeEffect::save(QXmlStreamWriter* stream) {
|
||||
}
|
||||
|
||||
void VolumeEffect::process_audio(quint8* samples, int nb_bytes) {
|
||||
if (volume_val->value() != 0) {
|
||||
if (volume_val->value() != 100) {
|
||||
for (int i=0;i<nb_bytes;i+=2) {
|
||||
qint16 samp = (qint16) ((samples[i+1] << 8) | samples[i]);
|
||||
samp *= (volume_val->value()*0.01f);
|
||||
float val = qPow(volume_val->value()*0.01f, 3);
|
||||
samp *= val;
|
||||
samples[i+1] = (quint8) (samp >> 8);
|
||||
samples[i] = (quint8) samp;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user