From 6ea25018546ebc099845158de7fef29c1c4fb28d Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Fri, 4 Feb 2011 16:20:12 +0100 Subject: Tiny bugfix in in-synth-cli, updated TODO and stuff --- synth/Makefile | 2 +- synth/OPTIMIZATIONS | 13 +++++++------ synth/in_synth_cli.cpp | 12 +++++++++--- synth/jack.cpp | 2 +- 4 files changed, 18 insertions(+), 11 deletions(-) (limited to 'synth') diff --git a/synth/Makefile b/synth/Makefile index 6258697..a9ec0a1 100644 --- a/synth/Makefile +++ b/synth/Makefile @@ -1,5 +1,5 @@ CXX=g++ -CFLAGS=-Wall -O2 +CFLAGS=-Wall -O2 -g CXXFLAGS=$(CFLAGS) LDFLAGS=-lm `pkg-config --cflags --libs jack` diff --git a/synth/OPTIMIZATIONS b/synth/OPTIMIZATIONS index 07cbcff..14d5f4f 100644 --- a/synth/OPTIMIZATIONS +++ b/synth/OPTIMIZATIONS @@ -14,6 +14,13 @@ Mögliche Optimierungen note->set_param wird unnötig pfactor-zeuch läuft extra: wird kopiert, und bei jeder pfactor-änderung mit dem pfactor verrechnet + o ??? seltener cleanup rufen, stattdessen als inaktiv markieren + -> effekt: noten können wiederverwendet werden, seltenere ctor-aufrufe + o ??? KSL mit powf und floats statt mit double umschreiben + o ??? statt lfo-nummer direkten zugriff auf curr_lfo angeben? + o ??? bei tremolo (und vibrato?): eventuell nicht prüfen, obs aktiviert + ist, sondern zur not einfach *1 rechnen? + o ??? beim default_program vielleicht auch ein optimiertes objekt benutzen? x 0% beim channel::get_sample: pro note immer mehrere samples auf einmal holen (iterator braucht recht viel leistung) wird von g++ automatisch wegoptimiert -> ok @@ -21,9 +28,3 @@ Mögliche Optimierungen Kein negativer Einfluss auf die Performance: o _virtual_ void Note::get_samples (mit time nicht erkennbar) -Mögliche Bugs und ihre Lösung: - o frequenz wird nicht genau eingehalten: phase um - foo*WAVE_RES erhöhen, entsprechend wave[][bar] ändern. - ABER: im testfall um bis zu 15% langsamer - - diff --git a/synth/in_synth_cli.cpp b/synth/in_synth_cli.cpp index fd1570d..7ca9c7d 100644 --- a/synth/in_synth_cli.cpp +++ b/synth/in_synth_cli.cpp @@ -85,12 +85,12 @@ void do_in_synth_cli() int num; if (signal(2,signal_handler)==SIG_ERR) - output_warning("WARNING: failed to set signal handler in the in-synth-cli. pressing enter will\n" + output_warning("WARNING: failed to set signal handler in the in-synth-cli. pressing ctrl+c will\n" " kill the synth, so be careful. this is not fatal"); fatal_warnings=false; - while (true) + while (cin.good()) { cout << PROMPT << flush; getline(cin,input); @@ -516,7 +516,9 @@ void do_in_synth_cli() if (freq>=0) { snh_freq_hz=freq; - init_snh(); //no uninit neccessary, as this only calculates an integer + init_snh(); //no uninit necessary, as this only calculates an integer + //no lock necessary, as a race-condition would only cause + // the snh be calculated some times more } else cout << "error: sample-and-hold-frequency must be greater than zero"<i;k--) + for (size_t k=i+frameskip-1;k>i;--k) { outbuf[j][k]=outbuf[j][i]; #ifdef STEREO -- cgit v1.2.3