#include <stdio.h>
#include <stdlib.h>
#include <remix/remix.h>
#define remix_add_sound_B(a,s,l,t1,t2) \
remix_sound_new ((a), (s), (l), REMIX_BEAT24S(t1), REMIX_BEAT24S(t2))
#define BEAT 24
#define HALF_BEAT 12
#define QUARTER_BEAT 6
#define EIGHTH_BEAT 3
int
main (int argc, char ** argv)
{
RemixEnv * env;
RemixDeck * deck, * deck2;
RemixTrack * track, * track2, * track3, * track4;
RemixLayer * l1, * l2, * l3, * l4, * l5;
RemixSound * s;
RemixSquareTone * square1, * square2, * square3, * square4, * square5;
RemixPlugin * noise_plugin;
RemixBase * noise;
RemixEnvelope * env1, * env2, * env3;
RemixEnvelope * be1, * be2, * be3;
RemixCount length;
RemixMonitor * monitor;
int b = 0, b2 = 0, mb;
env = remix_init ();
remix_set_tempo (env, 160);
remix_set_channels (env, REMIX_STEREO);
square1 = remix_squaretone_new (env, 220.0);
square2 = remix_squaretone_new (env, 440.0);
square3 = remix_squaretone_new (env, 385.0);
square4 = remix_squaretone_new (env, 231.0);
square5 = remix_squaretone_new (env, 165.0);
noise_plugin = remix_find_plugin (env, "builtin::noise");
noise = remix_new (env, noise_plugin, NULL);
monitor = remix_monitor_new (env);
deck = remix_deck_new (env);
#if 1
track = remix_track_new (env, deck);
l1 = remix_layer_new_ontop (env, track, REMIX_TIME_BEAT24S);
remix_add_sound_B (env, square1, l1, b, BEAT); b += BEAT;
#if 1
remix_add_sound_B (env, square2, l1, b, QUARTER_BEAT); b += HALF_BEAT;
remix_add_sound_B (env, square2, l1, b, HALF_BEAT); b += HALF_BEAT;
remix_add_sound_B (env, square1, l1, b, HALF_BEAT); b += HALF_BEAT;
remix_add_sound_B (env, square2, l1, b, QUARTER_BEAT); b += HALF_BEAT;
remix_add_sound_B (env, square3, l1, b, HALF_BEAT); b += HALF_BEAT;
remix_add_sound_B (env, square2, l1, b, HALF_BEAT); b += HALF_BEAT;
#endif
#endif
#if 1
#if 1
track2 = remix_track_new (env, deck);
remix_track_set_gain (env, track2, 0.6);
#else
track2 = track;
#endif
l2 = remix_layer_new_ontop (env, track2, REMIX_TIME_BEAT24S);
s = remix_add_sound_B (env, square4, l2, b2, HALF_BEAT); b2 += BEAT;
be1 = remix_envelope_new (env, REMIX_ENVELOPE_LINEAR);
remix_envelope_set_timetype (env, be1, REMIX_TIME_BEAT24S);
remix_envelope_add_point (env, be1, REMIX_BEAT24S(0), 0.9);
remix_sound_set_blend_envelope (env, s, be1);
#if 1
s = remix_add_sound_B (env, square5, l2, b2, HALF_BEAT); b2 += BEAT;
be2 = remix_envelope_new (env, REMIX_ENVELOPE_LINEAR);
remix_envelope_set_timetype (env, be2, REMIX_TIME_BEAT24S);
remix_envelope_add_point (env, be2, REMIX_BEAT24S(0), 0.6);
remix_sound_set_blend_envelope (env, s, be2);
s = remix_add_sound_B (env, square4, l2, b2, BEAT); b2 += 48;
be3 = remix_envelope_new (env, REMIX_ENVELOPE_LINEAR);
remix_envelope_set_timetype (env, be3, REMIX_TIME_BEAT24S);
remix_envelope_add_point (env, be3, REMIX_BEAT24S(0), 0.8);
remix_sound_set_blend_envelope (env, s, be3);
#endif
#endif
#if 1
track4 = remix_track_new (env, deck);
remix_track_set_gain (env, track4, 0.1);
l5 = remix_layer_new_ontop (env, track4, REMIX_TIME_BEAT24S);
remix_add_sound_B (env, noise, l5, 0, b);
#endif
mb = MAX (b, b2);
length = remix_length (env, deck);
printf ("deck has length %ld\n", length);
deck2 = remix_deck_new (env);
track3 = remix_track_new (env, deck2);
l3 = remix_layer_new_ontop (env, track3, REMIX_TIME_BEAT24S);
s = remix_add_sound_B (env, deck, l3, 0, mb);
#if 1
env1 = remix_envelope_new (env, REMIX_ENVELOPE_LINEAR);
remix_envelope_set_timetype (env, env1, REMIX_TIME_BEAT24S);
remix_envelope_add_point (env, env1, REMIX_BEAT24S(0), 0.0);
remix_envelope_add_point (env, env1, REMIX_BEAT24S(mb), 0.9);
remix_sound_set_gain_envelope (env, s, env1);
#endif
s = remix_add_sound_B (env, deck, l3, mb, mb);
#if 1
env2 = remix_envelope_new (env, REMIX_ENVELOPE_LINEAR);
remix_envelope_set_timetype (env, env2, REMIX_TIME_BEAT24S);
remix_envelope_add_point (env, env2, REMIX_BEAT24S(0), 0.9);
remix_sound_set_gain_envelope (env, s, env2);
#endif
s = remix_add_sound_B (env, deck, l3, 2*mb, mb);
#if 1
env3 = remix_envelope_new (env, REMIX_ENVELOPE_LINEAR);
remix_envelope_set_timetype (env, env3, REMIX_TIME_BEAT24S);
remix_envelope_add_point (env, env3, REMIX_BEAT24S(0), 0.9);
remix_envelope_add_point (env, env3, REMIX_BEAT24S(mb), 0.0);
remix_sound_set_gain_envelope (env, s, env3);
#endif
length = remix_length (env, deck2);
l4 = remix_layer_new_ontop (env, track3, REMIX_TIME_SAMPLES);
remix_sound_new (env, monitor, l4, REMIX_SAMPLES(0), REMIX_SAMPLES(length));
printf ("deck: %p\ttrack: %p\tl1: %p\ttrack2: %p\tl2: %p\n",
deck, track, l1, track2, l2);
printf ("deck2: %p\ttrack3: %p\tl3: %p\tl4: %p\n", deck2, track3, l3, l4);
printf ("square1: %p\tsquare2: %p\tsquare3: %p\nsquare4: %p\tsquare5: %p\n",
square1, square2, square3, square4, square5);
printf ("monitor: %p\n", monitor);
remix_process (env, deck2, length, RemixNone, RemixNone);
remix_purge (env);
exit (0);
}
squaredemo.c