Hello community, here is the log from the commit of package buzztrax for openSUSE:Factory checked in at 2019-12-21 12:30:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/buzztrax (Old) and /work/SRC/openSUSE:Factory/.buzztrax.new.6675 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "buzztrax" Sat Dec 21 12:30:31 2019 rev:17 rq:758178 version:0.10.2+git20191209 Changes: -------- --- /work/SRC/openSUSE:Factory/buzztrax/buzztrax.changes 2019-11-27 13:54:35.588318539 +0100 +++ /work/SRC/openSUSE:Factory/.buzztrax.new.6675/buzztrax.changes 2019-12-21 12:30:57.723351272 +0100 @@ -1,0 +2,8 @@ +Thu Dec 19 12:06:53 UTC 2019 - Dave Plater <[email protected]> + +- Update to git snapshot 0.10.2+git20191209 +- Add patch from debian 0001-Fix-build-with-fluidsynth-2.x.patch +- Upstream changes: + *More synth pannning. Add more module ideas. + +------------------------------------------------------------------- Old: ---- buzztrax-0.10.2+git20191028.tar.gz New: ---- 0001-Fix-build-with-fluidsynth-2.x.patch buzztrax-0.10.2+git20191209.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ buzztrax.spec ++++++ --- /var/tmp/diff_new_pack.vU10Gd/_old 2019-12-21 12:30:58.823351795 +0100 +++ /var/tmp/diff_new_pack.vU10Gd/_new 2019-12-21 12:30:58.843351805 +0100 @@ -16,7 +16,7 @@ # -%define rev e08d73311d45b8bd73cbbd1fe95bc95b5ad52d2f +%define rev 1f57d1b6ff55dd3d574f92039bb06a768d613d67 %define relver 0.11.0 %define gir gobject-introspection-1.0 @@ -31,7 +31,7 @@ %define glib_version 2.32.0 %define gst_version 1.2.0 Name: buzztrax -Version: 0.10.2+git20191028 +Version: 0.10.2+git20191209 Release: 0 Summary: A music studio inspired by Buzz License: GPL-2.0-or-later @@ -41,6 +41,7 @@ #http://files.buzztrax.org/releases/%%{name}-%%{version}.tar.gz Source1: autogen.sh Source2: COPYING-DOCS +Patch0: 0001-Fix-build-with-fluidsynth-2.x.patch BuildRequires: automake >= 1.13 BuildRequires: desktop-file-utils BuildRequires: fdupes @@ -57,10 +58,7 @@ BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(clutter-gtk-1.0) -#Doesn't build with fluidsynth 2 yet -%if 0%{?suse_version} <= 1500 BuildRequires: pkgconfig(fluidsynth) -%endif BuildRequires: pkgconfig(gdk-x11-3.0) BuildRequires: pkgconfig(gio-2.0) >= %{glib_version} BuildRequires: pkgconfig(glib-2.0) >= %{glib_version} @@ -207,7 +205,10 @@ %prep %setup -q -n %{name}-%{rev} -%autopatch -p1 +# Patch causes fluidsynth1 build failure. +%if 0%{?suse_version} > 1500 +%patch0 -p1 +%endif # Rpmlint complains that COPYING-DOCS is outdated cp -v %{SOURCE2} . cp -v %{SOURCE1} . ++++++ 0001-Fix-build-with-fluidsynth-2.x.patch ++++++ >From 3ac7cbf1a712c3f4db7a34a6d3b46dc9a43172d3 Mon Sep 17 00:00:00 2001 From: Peter Michael Green <[email protected]> Date: Thu, 19 Dec 2019 01:38:18 +0000 Subject: [PATCH] Fix build with fluidsynth 2.x --- src/gst/fluidsynth/fluidsynth.c | 44 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/gst/fluidsynth/fluidsynth.c b/src/gst/fluidsynth/fluidsynth.c index 0d954f8e..ec598dc4 100644 --- a/src/gst/fluidsynth/fluidsynth.c +++ b/src/gst/fluidsynth/fluidsynth.c @@ -132,25 +132,41 @@ G_DEFINE_TYPE (GstBtFluidSynth, gstbt_fluid_synth, GSTBT_TYPE_AUDIO_SYNTH); //-- fluid_synth log handler static void +#if FLUIDSYNTH_VERSION_MAJOR < 2 gstbt_fluid_synth_error_log_function (int level, char *message, void *data) +#else +gstbt_fluid_synth_error_log_function (int level, const char *message, void *data) +#endif { GST_ERROR ("%s", message); } static void +#if FLUIDSYNTH_VERSION_MAJOR < 2 gstbt_fluid_synth_warning_log_function (int level, char *message, void *data) +#else +gstbt_fluid_synth_warning_log_function (int level, const char *message, void *data) +#endif { GST_WARNING ("%s", message); } static void +#if FLUIDSYNTH_VERSION_MAJOR < 2 gstbt_fluid_synth_info_log_function (int level, char *message, void *data) +#else +gstbt_fluid_synth_info_log_function (int level, const char *message, void *data) +#endif { GST_INFO ("%s", message); } static void +#if FLUIDSYNTH_VERSION_MAJOR < 2 gstbt_fluid_synth_debug_log_function (int level, char *message, void *data) +#else +gstbt_fluid_synth_debug_log_function (int level, const char *message, void *data) +#endif { GST_DEBUG ("%s", message); } @@ -212,7 +228,11 @@ typedef struct /* for counting the number of FluidSynth settings properties */ static void +#if FLUIDSYNTH_VERSION_MAJOR < 2 settings_foreach_count (void *data, char *name, int type) +#else +settings_foreach_count (void *data, const char *name, int type) +#endif { int *count = (int *) data; *count = *count + 1; @@ -220,7 +240,11 @@ settings_foreach_count (void *data, char *name, int type) /* add each FluidSynth setting as a GObject property */ static void +#if FLUIDSYNTH_VERSION_MAJOR < 2 settings_foreach_func (void *data, char *name, int type) +#else +settings_foreach_func (void *data, const char *name, int type) +#endif { ForeachBag *bag = (ForeachBag *) data; GParamSpec *spec; @@ -231,18 +255,30 @@ settings_foreach_func (void *data, char *name, int type) switch (type) { case FLUID_NUM_TYPE: fluid_settings_getnum_range (bag->settings, name, &dmin, &dmax); +#if FLUIDSYNTH_VERSION_MAJOR < 2 ddef = fluid_settings_getnum_default (bag->settings, name); +#else + if (fluid_settings_getnum_default (bag->settings, name, &ddef) != FLUID_OK) ddef = 0; +#endif spec = g_param_spec_double (name, name, name, dmin, dmax, ddef, G_PARAM_READWRITE); break; case FLUID_INT_TYPE: fluid_settings_getint_range (bag->settings, name, &imin, &imax); +#if FLUIDSYNTH_VERSION_MAJOR < 2 idef = fluid_settings_getint_default (bag->settings, name); +#else + if (fluid_settings_getint_default (bag->settings, name, &idef) != FLUID_OK) idef = 0; +#endif spec = g_param_spec_int (name, name, name, imin, imax, idef, G_PARAM_READWRITE); break; case FLUID_STR_TYPE: - defstr = fluid_settings_getstr_default (bag->settings, name); +#if FLUIDSYNTH_VERSION_MAJOR < 2 + fluid_settings_getstr_default (bag->settings, name); +#else + if (fluid_settings_getstr_default (bag->settings, name,&defstr) != FLUID_OK) defstr = 0; +#endif spec = g_param_spec_string (name, name, name, defstr, G_PARAM_READWRITE); break; case FLUID_SET_TYPE: @@ -724,7 +760,11 @@ gstbt_fluid_synth_init (GstBtFluidSynth * src) new_fluid_midi_router (src->settings, fluid_synth_handle_midi_event, src->fluid); if (src->midi_router) { +#if FLUIDSYNTH_VERSION_MAJOR < 2 src->cmd_handler = new_fluid_cmd_handler (src->fluid); +#else + src->cmd_handler = new_fluid_cmd_handler (src->fluid,NULL); +#endif if (src->cmd_handler) { src->midi = new_fluid_midi_driver (src->settings, fluid_midi_router_handle_midi_event, (void *) (src->midi_router)); @@ -886,7 +926,7 @@ gstbt_fluid_synth_class_init (GstBtFluidSynthClass * klass) g_param_spec_enum ("chorus-waveform", "Chorus waveform", "Chorus waveform type", CHORUS_WAVEFORM_TYPE, - FLUID_CHORUS_DEFAULT_TYPE, + FLUID_CHORUS_MOD_SINE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_set_static_metadata (element_class, -- 2.16.4 ++++++ buzztrax-0.10.2+git20191028.tar.gz -> buzztrax-0.10.2+git20191209.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buzztrax-e08d73311d45b8bd73cbbd1fe95bc95b5ad52d2f/src/gst/audio/TODO.md new/buzztrax-1f57d1b6ff55dd3d574f92039bb06a768d613d67/src/gst/audio/TODO.md --- old/buzztrax-e08d73311d45b8bd73cbbd1fe95bc95b5ad52d2f/src/gst/audio/TODO.md 2019-10-28 05:47:40.000000000 +0100 +++ new/buzztrax-1f57d1b6ff55dd3d574f92039bb06a768d613d67/src/gst/audio/TODO.md 2019-12-09 20:01:21.000000000 +0100 @@ -1,6 +1,6 @@ -# SimSyn alike +# More synthesizers -More synthesizers +## SimSyn alike - we'd like to have one with - dual-osc - with detune for the 2nd osc: coarse in semitones @@ -23,11 +23,11 @@ a) map for tone above and below base b) map for tone related to base and clamp against 1.0 -# WaveTabSynth +## WaveTabSynth - slightly modulating the wave-offset could be interesting - we could e.g. let it progress during the tone or have an envelope for it -# BLoop (beat looper) +## BLoop (beat looper) - parameters: - wavetable-ix - subdivide / slices (e.g. 4 for quarter) @@ -49,7 +49,7 @@ subdivide=4, pattern={0,1,2,3} plays the loop as is subdivide=4, pattern={0,3,0,1} plays segments in different order -# GrainSynth +## GrainSynth - a grain synth takes snippets from the one wave-table slot, applies a fft-window function and mixes it into the output - using a triangle-window and a grain-ratio=1.0 would replicate the waveform @@ -89,6 +89,35 @@ overlap_ms = 2 voices = 1 + (12 / 2) = 7 +## Drones +Simple Osc with multiple slightly detuned voices that are spread in the panorama +and where the detuning is set so that it matches the song tempo. + +Need tables for each tone to calculate the detune factors so that the phases are +in sync after n-ticks. If this is hard, we can mybe cross-fade a reverse copy +using sin()² curves and reset the phase after n-ticks. + +From ticks and samplerate we calculate the number of samples for desired resync. + +TODO: +- can we disable resetting the phase on the osc component when triggering a note + - gstbt_osc_synth_trigger(): self->accumulator = 0.0 + - we only call this when we change waves + +Parameters: +- note: tone to play +- wave: classic tonal osc (sin, tri, saw, sqr) +- ticks: when the phases should be in sync again +- sync: when plaing a note - should we sync the phases or not? +- voices: 3,5,7 +- stereo spread: 0 ... 100% + - example: 5 voice, spread=100% + - voice 1 -> middle + - voice 2 -> 50% right + - voice 3 -> 50% left + - voice 4 -> 100% right + - voice 5 -> 100% left + # sfxr https://github.com/grimfang4/sfxr/blob/master/sfxr/source/main.cpp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/buzztrax-e08d73311d45b8bd73cbbd1fe95bc95b5ad52d2f/src/gst/audio/ebeats.c new/buzztrax-1f57d1b6ff55dd3d574f92039bb06a768d613d67/src/gst/audio/ebeats.c --- old/buzztrax-e08d73311d45b8bd73cbbd1fe95bc95b5ad52d2f/src/gst/audio/ebeats.c 2019-10-28 05:47:40.000000000 +0100 +++ new/buzztrax-1f57d1b6ff55dd3d574f92039bb06a768d613d67/src/gst/audio/ebeats.c 2019-12-09 20:01:21.000000000 +0100 @@ -24,7 +24,8 @@ * A drum synthesizer with two tonal and one noise oscillator (#GstBtOscSynth), * plus decay envelopes (#GstBtEnvelopeD) for tonal transitions and volumes. * The tonal oscillators can be mixed through various #GstBtCombine:combine - * modes. The noise part is then mixed with the tonal parts. + * modes. The noise part is then mixed with the tonal parts. The volume enve- + * lopes are applied before combining and mixing. * * Finally one can apply a filter (#GstBtFilterSVF) to either the tonal mix, the * noise or both. The #GstBtFilterSVF:cut-off is also controlled by a decay @@ -41,12 +42,20 @@ * ]| Render a drum tone. * </refsect2> */ -/* TODO: add a delay line for metalic effects */ +/* TODO: add a short delay line for metalic effects */ /* TODO: add a boolean 'reverse 'parameter * - can be a pattern only trigger param to set time to max and time-inc * -1 * - for that the envelopes need a 'reverse' param too, or we need to check if * we can count 'ct' backwards */ + /* TODO: more volume env routing: + * - some combine modes can create loud signals, it would be nice to rapply + * a volum env + * - modes: before, after, before+after + * - if after or before+after, we need a volume param that can be applied + * during or after the combine operation + */ + /* TODO: have presets for: * kick * snare
