summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Jung <florian.a.jung@web.de>2012-04-04 20:17:50 +0200
committerFlorian Jung <florian.a.jung@web.de>2012-04-04 20:17:50 +0200
commit829c7f8da9aa285029b9d636edda191b5c2b507b (patch)
treef82649301e827278a1e8c1a49022b86b82b03641
parent531a6e90cbf1cc2afd8eae7683bda48c5cf4506a (diff)
reset filter-envelopes instead of reattacking
-rw-r--r--TODO27
-rw-r--r--synth/Makefile3
-rw-r--r--synth/defines.h2
-rw-r--r--synth/envelope.cpp8
-rw-r--r--synth/envelope.h1
-rw-r--r--synth/note.cpp2
-rw-r--r--synth/readwave.cpp1
7 files changed, 34 insertions, 10 deletions
diff --git a/TODO b/TODO
index 829f05c..e9c8510 100644
--- a/TODO
+++ b/TODO
@@ -1,10 +1,22 @@
!!! interface der compilten note und korrespondierende funktion
- im synth stimmen nicht mehr überein! ÄNDERN!
+ im synth stimmen nicht mehr überein! ÄNDERN! [obsolet]
!!! SEGFAULT beim laden einer nicht-existenten datei per in-synth-cli
wenn man danach die noten spielen will. nicht reproduzierbar
+
+!!! SEGFAULT wegen nicht synchronisierter kommunikation bei panic()!
TODO für den synth
+ o notes kriegen verkettete liste für FM-affect: "kein einfluss"
+ steht dann garnicht in der liste (macht aus O(n²) ein O(n))
+ (macht notencompiler hoffentlich obsolet)
+ o evtl wieder AM implementieren: hätte hoffentlich dann keinen
+ negativen einfluss wenn unbenutzt
+ o kommunikation sauber synchronisieren: außerhalb von process()
+ wird nurnoch ne struct mit funktionspointer und argument-union
+ in einen ringbuffer geschrieben. der eigentliche call erfolgt
+ dann in process()
+
o defines säubern, schöner anordnen
o frameskipping vlt immer einbauen?
o testen, ob #define FRAMESKIP bei frameskip=0 nen speednachteil
@@ -43,7 +55,13 @@ TODO für den synth
(o)fehlerklassen für fatale fehler (von string abgeleitet)
-TODO für den compiler
+
+TODO fürs CLI
+ x ...
+
+
+
+obsolet: TODO für den compiler
o freq-envelopes und pfactor dafür auch für compiled_notes implementieren!
o envelopes nur alle N frames updaten auch bei compiled notes implementieren!
o zu testen: funktionieren no-release-envs auch in compilierten noten?
@@ -51,8 +69,3 @@ TODO für den compiler
o envelope, filter, ggf. auch alles aus program.o im hauptprogramm
lassen? d.h. via init funktionspointer übergeben oder virtuelle
interfaceklassen benutzen (für envelope/filter z.B.)
-
-
-
-TODO fürs CLI
- x ...
diff --git a/synth/Makefile b/synth/Makefile
index 80cf705..01e27ee 100644
--- a/synth/Makefile
+++ b/synth/Makefile
@@ -1,5 +1,6 @@
CXX=g++
-CFLAGS=-Wall -O2
+#CFLAGS=-Wall -O2
+CFLAGS=-Wall -O -g
CXXFLAGS=$(CFLAGS)
LDFLAGS=-lm `pkg-config --cflags --libs jack`
diff --git a/synth/defines.h b/synth/defines.h
index 354e683..56d2ec5 100644
--- a/synth/defines.h
+++ b/synth/defines.h
@@ -80,7 +80,7 @@ extern float LFO_FREQ_HZ[];
#if ( (WAVE_SAW_START < N_NORMAL_WAVEFORMS) || \
(WAVE_PULSE_START < WAVE_SAW_START+WAVE_SAW_N) )
- #error NORMAL WAVEFORMS, SAW- AND PULSE-WAVES MAY NOT OVERLAP!
+ #error NORMAL WAVEFORMS, SAW- AND PULSE-WAVES MAY NOT OVERLAP!
#endif
#define N_WAVEFORMS (WAVE_PULSE_START+WAVE_PULSE_N)
diff --git a/synth/envelope.cpp b/synth/envelope.cpp
index 13b1044..837b4a7 100644
--- a/synth/envelope.cpp
+++ b/synth/envelope.cpp
@@ -85,6 +85,14 @@ void Envelope::reattack()
sustain=sustain_orig;
}
+void Envelope::reset()
+{
+ state=ATTACK;
+ sustain=sustain_orig;
+ level=0;
+ t=0;
+}
+
void Envelope::release_key()
{
if (has_release_phase)
diff --git a/synth/envelope.h b/synth/envelope.h
index a9bb15b..3c93a03 100644
--- a/synth/envelope.h
+++ b/synth/envelope.h
@@ -17,6 +17,7 @@ class Envelope
Envelope(env_settings_t s, int frames=1);
void release_key();
void reattack();
+ void reset();
fixed_t get_level();
bool still_active();
void set_hold(bool h);
diff --git a/synth/note.cpp b/synth/note.cpp
index d208ae8..54267a8 100644
--- a/synth/note.cpp
+++ b/synth/note.cpp
@@ -289,7 +289,7 @@ void Note::reattack()
for (int i=0;i<n_oscillators;++i)
{
envelope[i]->reattack();
- factor_env[i]->reattack();
+ factor_env[i]->reset();
}
if (filter_params.enabled)
diff --git a/synth/readwave.cpp b/synth/readwave.cpp
index 0b2c0a0..aa4ef92 100644
--- a/synth/readwave.cpp
+++ b/synth/readwave.cpp
@@ -1,5 +1,6 @@
#include <string>
#include <cstring>
+#include <cstdio>
#include "readwave.h"
#include "util.h"