From 0fd2761cae035e7db43577894964aef8ded733ba Mon Sep 17 00:00:00 2001 From: HyungKyu Song Date: Sat, 16 Feb 2013 00:07:45 +0900 Subject: [PATCH] Tizen 2.0 Release --- README | 7 ++--- configure.ac | 33 +++++++++++++++++--- debian/changelog | 28 ++++++++++++++++- debian/control | 12 ++++---- doc/Makefile.am | 30 +++++++++--------- include/remix/remix.h | 7 +++++ include/remix/remix_plugin.h | 2 -- include/remix/remix_types.h | 9 +----- libremix.manifest | 5 +++ packaging/libremix.spec | 67 +++++++++++++++++++++++++++++++++++++++++ src/ctxdata/cd_list.c | 2 +- src/examples/Makefile.am | 11 ++----- src/libremix/remix_base.c | 3 -- src/libremix/remix_context.c | 2 +- src/libremix/remix_debug.c | 2 +- src/libremix/remix_envelope.c | 1 - src/libremix/remix_private.h | 1 - src/libremix/remix_sndfile.c | 12 -------- src/libremix/remix_squaretone.c | 56 +++++++++------------------------- 19 files changed, 179 insertions(+), 111 deletions(-) create mode 100644 libremix.manifest create mode 100644 packaging/libremix.spec diff --git a/README b/README index 212f3f2..66a3364 100644 --- a/README +++ b/README @@ -15,10 +15,9 @@ Developers Please join the remix-devel mailing list, linked from the homepage. -libremix is maintained in Subversion with anonymous read access. You can -check out the most current version of libremix from: +libremix is maintained in Git at Github: -svn co http://svn.metadecks.org/libremix/trunk libremix +https://github.com/kfish/remix A list of outstanding tasks is maintained in the TODO file of this source distribution. When implementing anything listed in this file, please update @@ -28,7 +27,7 @@ that implements the fix. Copyrights ---------- -Copyright (C) 2000-2010 Conrad Parker +Copyright (C) 2000-2011 Conrad Parker Copyright (C) 2001, 2002 Commonwealth Scientific and Industrial Research Organisation (CSIRO), Australia. diff --git a/configure.ac b/configure.ac index 797957f..be0edf7 100644 --- a/configure.ac +++ b/configure.ac @@ -1,9 +1,31 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(src/libremix/remix_base.c) -AM_INIT_AUTOMAKE(remix, 0.2.3) +AM_INIT_AUTOMAKE(remix, 0.2.4) AM_CONFIG_HEADER(config.h) +example_programs="noisedemo squaredemo" + +################################################################################ +# Set the shared versioning info, according to section 6.3 of the libtool info # +# pages. CURRENT:REVISION:AGE must be updated immediately before each release: # +# # +# * If the library source code has changed at all since the last # +# update, then increment REVISION (`C:R:A' becomes `C:r+1:A'). # +# # +# * If any interfaces have been added, removed, or changed since the # +# last update, increment CURRENT, and set REVISION to 0. # +# # +# * If any interfaces have been added since the last public release, # +# then increment AGE. # +# # +# * If any interfaces have been removed since the last public release, # +# then set AGE to 0. # +# # +################################################################################ +SHARED_VERSION_INFO="1:0:1" +SHLIB_VERSION_ARG="" + dnl Checks for programs. AM_PROG_LIBTOOL AC_PROG_INSTALL @@ -60,16 +82,15 @@ dnl dnl Detect libsndfile 1.0 dnl + PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.0, HAVE_LIBSNDFILE1="yes", HAVE_LIBSNDFILE1="no") -AC_SUBST(SNDFILE_LIBS) -AC_SUBST(SNDFILE_CFLAGS) - if test "$HAVE_LIBSNDFILE1" = "yes" ; then AC_DEFINE([HAVE_LIBSNDFILE1], [], [Define if libsndfile version 1 found]) AC_SUBST(SNDFILE_LIBS) AC_SUBST(SNDFILE_CFLAGS) + example_programs="${example_programs} sndfiledemo" else AC_CHECK_LIB(sndfile, sf_open, HAVE_LIBSNDFILE1="maybe") if test "$HAVE_LIBSNDFILE1" = "maybe" ; then @@ -135,7 +156,6 @@ AC_ARG_ENABLE(gcc-werror, AC_HELP_STRING([--enable-gcc-werror], [enable -Werror in all Makefiles])) dnl Use -Wall if we have gcc. - if test "x$ac_cv_prog_gcc" = xyes ; then CFLAGS="$CFLAGS -Wall" @@ -145,6 +165,9 @@ if test "x$ac_cv_prog_gcc" = xyes ; then fi +AC_SUBST(SHLIB_VERSION_ARG) +AC_SUBST(SHARED_VERSION_INFO) + AC_OUTPUT([ Makefile doc/Makefile diff --git a/debian/changelog b/debian/changelog index 43ec6ac..a5dfdef 100755 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,31 @@ +libremix (0.2.4+slp2+build02) unstable; urgency=low + + * Upload Package. + * Git: slp/pkgs/l/libremix + * Tag: libremix_0.2.4+slp2+build02 + + -- Hyoyoung Chang Thu, 07 Jun 2012 15:08:59 +0900 + +libremix (0.2.4-1slp2) unstable; urgency=low + + * Upload Package. + * Git: slp/pkgs/l/libremix + * Tag: libremix_0.2.4-1slp2 + + -- Daniel Juyung Seo Wed, 09 May 2012 19:58:35 +0900 + +libremix (0.2.4) unstable; urgency=low + + * Merge with svn version 0.2.4 and whitespace removed. + * Git: slp/pkgs/l/libremix + * Tag: 0.2.4 + + -- Prince Kumar Dubey Thu, 19 Jan 2012 18:38:00 +0530 + libremix (0.2.3) unstable; urgency=low * Initial Version. + * Git: slp/pkgs/l/libremix + * Tag: 0.2.3 - -- Prince Kumar Dubey Govindaraju S M Tue, 20 Sep 2011 15:00:00 +0900 \ No newline at end of file + -- Prince Kumar Dubey Govindaraju S M Tue, 20 Sep 2011 15:00:00 +0900 diff --git a/debian/control b/debian/control index f6374d1..fc014be 100755 --- a/debian/control +++ b/debian/control @@ -1,15 +1,15 @@ Source: libremix Section: libs Priority: optional -Uploaders: Prince Kumar Dubey Govindaraju S M -Maintainer: Conrad Parker -Build-Depends: cdbs, libsndfile1-dev, pkg-config, libtool -Standards-Version: 0.2.3 +Uploaders: Prince Kumar Dubey , Govindaraju S M , Daniel Juyung Seo , Hyoyoung Chang +Maintainer: Prince Kumar Dubey +Build-Depends: cdbs, libsndfile1-dev, libsndfile1, pkg-config, libtool +Standards-Version: 0.2.4 Homepage: http://www.metadecks.org/software/remix/ Package: libremix Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, libsndfile1-dev +Depends: ${shlibs:Depends}, ${misc:Depends}, libsndfile1 Suggests: libremix (= ${binary:Version}) Description: Various binaries for use with libremix. Remix is an audio sequencing and mixing library that provides a multichannel, @@ -26,4 +26,4 @@ Description: libremix headers and static libraries Remix is an audio sequencing and mixing library that provides a multichannel, sparse audio data container (streams), a structured mixing abstraction (decks), and widely useful means of generating control data (via envelopes) and of - caching audio data. \ No newline at end of file + caching audio data. diff --git a/doc/Makefile.am b/doc/Makefile.am index fc9e479..6855753 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -2,7 +2,7 @@ docdir=$(prefix)/share/doc/@PACKAGE@ EXTRA_DIST = Doxyfile.in -doc_DATA = doxygen-build.stamp +noinst_DATA = doxygen-build.stamp if HAVE_DOXYGEN doxygen-build.stamp: Doxyfile $(top_srcdir)/include/remix/*.h @@ -20,33 +20,35 @@ dist-hook: if test -d libremix; then \ mkdir $(dist_docdir); \ for dir in libremix/*; do \ - if test -d $$dir; then \ - b=`basename $$dir`; \ - mkdir $(dist_docdir)/$$b; \ - for f in $$dir/*; do \ - cp -p $$f $(dist_docdir)/$$b; \ - done \ - fi \ - done \ + b=`basename $$dir`; \ + if test $$b != "CVS"; then \ + if test -d $$dir; then \ + mkdir $(dist_docdir)/$$b; \ + for f in $$dir/*; do \ + cp -p $$f $(dist_docdir)/$$b; \ + done \ + fi \ + fi \ + done \ fi install-data-local: doxygen-build.stamp - $(mkinstalldirs) $(docdir) + $(mkinstalldirs) $(DESTDIR)$(docdir) if test -d libremix; then \ for dir in libremix/*; do \ if test -d $$dir; then \ b=`basename $$dir`; \ - $(mkinstalldirs) $(docdir)/$$b; \ + $(mkinstalldirs) $(DESTDIR)$(docdir)/$$b; \ for f in $$dir/*; do \ - $(INSTALL_DATA) $$f $(docdir)/$$b; \ - done \ + $(INSTALL_DATA) $$f $(DESTDIR)$(docdir)/$$b; \ + done \ fi \ done \ fi uninstall-local: - rm -rf $(docdir) + rm -rf $(DESTDIR)$(docdir) clean-local: if test -d libremix; then rm -rf libremix; fi diff --git a/include/remix/remix.h b/include/remix/remix.h index 8a4583e..4ec3427 100644 --- a/include/remix/remix.h +++ b/include/remix/remix.h @@ -182,6 +182,13 @@ RemixTempo remix_get_tempo (RemixEnv * env); CDSet * remix_set_channels (RemixEnv * env, CDSet * channelset); CDSet * remix_get_channels (RemixEnv * env); +#if 0 + /* XXX */ +/* Sources: Plugins, Samples etc. */ +CDList * remix_open (SOUNDRENDER env, char * filename); +void remix_close (SOUNDRENDER env, RemixPlugin plugin); +#endif + /* Base objects */ RemixPlugin * remix_find_plugin (RemixEnv * env, char * identifier); diff --git a/include/remix/remix_plugin.h b/include/remix/remix_plugin.h index 51c7e33..73fd5e3 100644 --- a/include/remix/remix_plugin.h +++ b/include/remix/remix_plugin.h @@ -64,8 +64,6 @@ typedef struct _RemixPlugin RemixPlugin; typedef struct _RemixChunk RemixChunk; -typedef struct _Remix_Sound_Data Remix_Sound_Data; - #if defined (__REMIX__) #include "remix_private.h" #else diff --git a/include/remix/remix_types.h b/include/remix/remix_types.h index 52e733a..4f379a8 100644 --- a/include/remix/remix_types.h +++ b/include/remix/remix_types.h @@ -48,8 +48,7 @@ typedef long RemixCount; #define REMIX_COUNT_MIN LONG_MIN #define REMIX_COUNT_INFINITE REMIX_COUNT_MAX -//TODO xxx : Change this -typedef struct _RemixOpaque RemixOpaque; +typedef void RemixOpaque; #if defined (__REMIX__) typedef struct _RemixBase RemixBase; @@ -57,11 +56,6 @@ typedef struct _RemixBase RemixBase; typedef RemixOpaque RemixBase; #endif -//TODO xxx : Change this -struct _RemixOpaque { - void * instance_data; -}; - typedef CDScalar RemixParameter; typedef int RemixFlags; @@ -136,7 +130,6 @@ typedef enum { #define REMIX_HINT_LOG (1<<0) #define REMIX_HINT_TIME (1<<1) #define REMIX_HINT_FILENAME (1<<2) -#define REMIX_HINT_CHANNEL (1<<3) #define REMIX_CONSTRAINT_EMPTY ((RemixConstraint){NULL}) diff --git a/libremix.manifest b/libremix.manifest new file mode 100644 index 0000000..97e8c31 --- /dev/null +++ b/libremix.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/packaging/libremix.spec b/packaging/libremix.spec new file mode 100644 index 0000000..2808cdc --- /dev/null +++ b/packaging/libremix.spec @@ -0,0 +1,67 @@ +%define prefix /usr + +Name: libremix +Summary: An audio sequencing and mixing library. +Version: 0.2.4+slp2+build02 +Release: 1 +Group: Libraries/Sound +License: LGPLv2.1 +URL: http://www.metadecks.org/software/remix/ +Source0: %{name}-%{version}.tar.gz +Requires(post): /sbin/ldconfig +Requires(postun): /sbin/ldconfig +BuildRequires: libsndfile-devel + +%description +Remix is a library for rendering audio data. + +%package devel +Summary: Libraries, includes, etc to develop remix applications +Group: Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +Libraries, include files, etc you can use to develop remix applications. + +%prep +%setup -q + +%build +./autogen.sh +./configure --prefix=%{prefix} +make %{?jobs:-j%jobs} + +%install +if [ -d %{buildroot} ]; then rm -rf %{buildroot}; fi +make install DESTDIR=%{buildroot} +mkdir -p %{buildroot}/usr/share/license +cp %{_builddir}/%{buildsubdir}/COPYING %{buildroot}/usr/share/license/%{name} + +%clean +if [ -d %{buildroot} ]; then rm -rf %{buildroot}; fi + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%doc AUTHORS COPYING ChangeLog INSTALL NEWS README TODO doc +%{_libdir}/libremix.so.* +%{_libdir}/libctxdata.so* +/usr/share/license/%{name} +%manifest %{name}.manifest + +%files devel +%defattr(-,root,root,-) +%{_libdir}/libremix.a +%{_libdir}/libremix.la +%{_libdir}/libremix.so +%{_libdir}/libctxdata.a +%{_libdir}/libctxdata.la +%{_libdir}/libctxdata.so* +%{_libdir}/pkgconfig/*.pc +%{_libdir}/remix/libremix_ladspa* +%{_libdir}/remix/libremix_noise* +%{_includedir}/ctxdata.h +%{_includedir}/remix/*.h diff --git a/src/ctxdata/cd_list.c b/src/ctxdata/cd_list.c index 1de9c5c..2bd38aa 100644 --- a/src/ctxdata/cd_list.c +++ b/src/ctxdata/cd_list.c @@ -435,7 +435,7 @@ cd_list_destroy_with (void * ctx, CDList * list, CDDestroyFunc destroy) for (l = list; l; l = ln) { ln = l->next; -// destroy (ctx, l->data.s_pointer); + destroy (ctx, l->data.s_pointer); cd_free (l); } diff --git a/src/examples/Makefile.am b/src/examples/Makefile.am index d9f29fd..77c7b1e 100644 --- a/src/examples/Makefile.am +++ b/src/examples/Makefile.am @@ -2,9 +2,9 @@ INCLUDES = -I$(top_srcdir)/src/ctxdata -I$(top_srcdir)/include -I../ctxdata if BUILD_MONITOR -monitor_programs = noisedemo squaredemo mysquaredemo +monitor_programs = noisedemo squaredemo if HAVE_LIBSNDFILE1 -sndfile_programs = sndfiledemo simple_sndfiledemo +sndfile_programs = sndfiledemo endif endif @@ -24,13 +24,6 @@ noisedemo_LDADD = $(REMIX_LIBS) squaredemo_SOURCES = squaredemo.c squaredemo_LDADD = $(REMIX_LIBS) -mysquaredemo_SOURCES = simple_squaredemo.c -mysquaredemo_LDADD = $(REMIX_LIBS) - sndfiledemo_CFLAGS = -DSAMPLEDIR=\"$(srcdir)\" sndfiledemo_SOURCES = sndfiledemo.c sndfiledemo_LDADD = $(REMIX_LIBS) @SNDFILE_LIBS@ - -simple_sndfiledemo_CFLAGS = -DSAMPLEDIR=\"$(srcdir)\" -simple_sndfiledemo_SOURCES = simple_sndfiledemo.c -simple_sndfiledemo_LDADD = $(REMIX_LIBS) @SNDFILE_LIBS@ diff --git a/src/libremix/remix_base.c b/src/libremix/remix_base.c index 1b27484..bb51fee 100644 --- a/src/libremix/remix_base.c +++ b/src/libremix/remix_base.c @@ -431,9 +431,6 @@ remix_process_fast (RemixEnv * env, RemixBase * base, RemixCount count, remix_set_error (env, REMIX_ERROR_INVALID); return -1; } - - remix_get_meta_text (env, base); - n = _remix_process (env, base, count, input, output); if (n > 0) base->offset += n; return n; diff --git a/src/libremix/remix_context.c b/src/libremix/remix_context.c index a5398c1..02cb97e 100644 --- a/src/libremix/remix_context.c +++ b/src/libremix/remix_context.c @@ -49,7 +49,7 @@ remix_context_destroy (RemixEnv * env) world->plugins = cd_list_destroy_with (env, world->plugins, remix_plugin_destroy); remix_plugin_defaults_unload (env); -//need to analyse why its commented in svn version ??? + //world->bases = cd_list_destroy_with (env, world->bases, remix_destroy); remix_channelset_defaults_destroy (env); diff --git a/src/libremix/remix_debug.c b/src/libremix/remix_debug.c index c782b7d..7b79856 100644 --- a/src/libremix/remix_debug.c +++ b/src/libremix/remix_debug.c @@ -66,7 +66,7 @@ remix_debug_up (void) void remix_dprintf (const char * fmt, ...) { -#if 0 +#ifdef DEBUG va_list ap; char buf[4096]; int i, n; diff --git a/src/libremix/remix_envelope.c b/src/libremix/remix_envelope.c index f039bc0..b30c125 100644 --- a/src/libremix/remix_envelope.c +++ b/src/libremix/remix_envelope.c @@ -116,7 +116,6 @@ remix_envelope_new (RemixEnv * env, RemixEnvelopeType type) remix_envelope_init (env, (RemixBase *)envelope); envelope->type = type; remix_envelope_debug (env, envelope); - return envelope; } diff --git a/src/libremix/remix_private.h b/src/libremix/remix_private.h index b72cc4d..f10c3f9 100644 --- a/src/libremix/remix_private.h +++ b/src/libremix/remix_private.h @@ -426,7 +426,6 @@ RemixCount _remix_chunk_blend_inplace (RemixEnv * env, /* XXX: remove these when dynamic! */ CDList * __gain_init (RemixEnv * env); CDList * __sndfile_init (RemixEnv * env); -CDList * __ogg_init (RemixEnv * env); #endif /* defined(__REMIX__) */ diff --git a/src/libremix/remix_sndfile.c b/src/libremix/remix_sndfile.c index 664ba83..912f197 100644 --- a/src/libremix/remix_sndfile.c +++ b/src/libremix/remix_sndfile.c @@ -45,7 +45,6 @@ struct _RemixSndfileInstance { SF_INFO info; float * pcm; sf_count_t pcm_n; - CDSet * channels; }; @@ -319,17 +318,6 @@ static struct _RemixParameterScheme path_scheme = { REMIX_HINT_FILENAME, }; - -static struct _RemixParameterScheme channels_scheme = { - "channels", - "Channel List to play file", - REMIX_TYPE_BOOL, - REMIX_CONSTRAINT_TYPE_NONE, - REMIX_CONSTRAINT_EMPTY, - REMIX_HINT_CHANNEL, -}; - - #if 0 static RemixNamedParameter types[] = { REMIX_NAMED_PARAMETER ("WAV", CD_INT(SF_FORMAT_WAV)), diff --git a/src/libremix/remix_squaretone.c b/src/libremix/remix_squaretone.c index 9d25a77..5a79cf1 100644 --- a/src/libremix/remix_squaretone.c +++ b/src/libremix/remix_squaretone.c @@ -29,17 +29,16 @@ #define __REMIX__ #include "remix.h" -typedef struct _RemixSquareToneChannelData RemixSquareToneChannelData; +typedef struct _RemixSquareToneChannel RemixSquareToneChannel; typedef struct _RemixSquareTone RemixSquareTone; -struct _RemixSquareToneChannelData { +struct _RemixSquareToneChannel { RemixCount _cycle_offset; }; struct _RemixSquareTone { RemixBase base; float frequency; - CDSet * channel_data; CDSet * channels; }; @@ -50,20 +49,20 @@ static RemixSquareTone * remix_squaretone_optimise (RemixEnv * env, static RemixSquareTone * remix_squaretone_replace_channels (RemixEnv * env, RemixSquareTone * squaretone) { - RemixSquareToneChannelData * sqch; + RemixSquareToneChannel * sqch; CDSet * s, * channels = remix_get_channels (env); RemixCount offset = remix_tell (env, (RemixBase *)squaretone); - cd_set_free_all (env, squaretone->channel_data); + cd_set_free_all (env, squaretone->channels); for (s = channels; s; s = s->next) { remix_dprintf ("[remix_squaretone_replace_channels] %p replacing channel %d\n", squaretone, s->key); - sqch = (RemixSquareToneChannelData *) - remix_malloc (sizeof (struct _RemixSquareToneChannelData)); + sqch = (RemixSquareToneChannel *) + remix_malloc (sizeof (struct _RemixSquareToneChannel)); sqch->_cycle_offset = 0; - squaretone->channel_data = - cd_set_insert (env, squaretone->channel_data, s->key, CD_POINTER(sqch)); + squaretone->channels = + cd_set_insert (env, squaretone->channels, s->key, CD_POINTER(sqch)); } if (offset > 0) remix_seek (env, (RemixBase *)squaretone, offset, SEEK_SET); @@ -75,7 +74,7 @@ static RemixBase * remix_squaretone_init (RemixEnv * env, RemixBase * base) { RemixSquareTone * squaretone = (RemixSquareTone *)base; - squaretone->channel_data = NULL; + squaretone->channels = NULL; remix_squaretone_replace_channels (env, squaretone); remix_squaretone_optimise (env, squaretone); return base; @@ -142,28 +141,6 @@ remix_squaretone_get_frequency (RemixEnv * env, RemixBase * base) return squaretone->frequency; } -void -remix_squaretone_add_channel (RemixEnv * env, RemixBase * base, RemixChannelName channel ) -{ - RemixSquareTone * squaretone = (RemixSquareTone *)base; - squaretone->channels = cd_set_replace (env, squaretone->channels, channel, CD_POINTER(NULL));; -} - -void -remix_squaretone_remove_channel (RemixEnv * env, RemixBase * base, RemixChannelName channel ) -{ - RemixSquareTone * squaretone = (RemixSquareTone *)base; - squaretone->channels = cd_set_remove(env, squaretone->channels, channel ); -} - -CDSet * -remix_squaretone_get_channels (RemixEnv * env, RemixBase * base ) -{ - RemixSquareTone * squaretone = (RemixSquareTone *)base; - return squaretone->channels; -} - - /* An RemixChunkFunc for creating squaretone data */ static RemixCount remix_squaretone_write_chunk (RemixEnv * env, RemixChunk * chunk, @@ -171,21 +148,18 @@ remix_squaretone_write_chunk (RemixEnv * env, RemixChunk * chunk, int channelname, void * data) { RemixSquareTone * squaretone = (RemixSquareTone *)data; - RemixSquareToneChannelData * sqch; + RemixSquareToneChannel * sqch; RemixCount remaining = count, written = 0, n; RemixCount wavelength; RemixPCM * d, value; CDScalar k; - int channel_enabled = 0; remix_dprintf ("[remix_squaretone_write_chunk] (+%ld) @ %ld\n", count, offset); - k = cd_set_find (env, squaretone->channel_data, channelname); + k = cd_set_find (env, squaretone->channels, channelname); sqch = k.s_pointer; - channel_enabled = cd_set_contains (env, squaretone->channels, channelname); - if (sqch == RemixNone) { remix_dprintf ("[remix_squaretone_write_chunk] channel %d not found\n", channelname); @@ -206,8 +180,6 @@ remix_squaretone_write_chunk (RemixEnv * env, RemixChunk * chunk, value = -1.0; } - if(!channel_enabled ) value = 0; - d = &chunk->data[offset]; _remix_pcm_set (d, value, n); remaining -= n; written += n; offset += n; @@ -250,13 +222,13 @@ remix_squaretone_seek (RemixEnv * env, RemixBase * base, RemixCount offset) RemixCount wavelength; CDSet * s; RemixCount cycle_offset; - RemixSquareToneChannelData * sqch; + RemixSquareToneChannel * sqch; wavelength = (RemixCount)(remix_get_samplerate (env) / squaretone->frequency); cycle_offset = offset % wavelength; - for (s = squaretone->channel_data; s; s = s->next) { - sqch = (RemixSquareToneChannelData *)s->data.s_pointer; + for (s = squaretone->channels; s; s = s->next) { + sqch = (RemixSquareToneChannel *)s->data.s_pointer; sqch->_cycle_offset = cycle_offset; } -- 2.7.4