#include <stdlib.h>
#include <stdio.h>
#include <remix/remix.h>
int
main (int argc, char ** argv)
{
RemixEnv * env;
RemixDeck * deck, * deck2;
RemixTrack * track, * track2, * track3;
RemixLayer * l1, * l2, * l3, * l4, * l5;
RemixBase * sf1, * sf2;
RemixSquareTone * square;
RemixCount length;
RemixMonitor * monitor;
RemixSound * sm;
RemixEnvelope * envelope;
RemixPlugin * gain_plugin;
RemixPlugin * sf_plugin;
RemixBase * gain;
CDSet * sf_parms;
int i;
int gain_key;
int sf_path_key;
env = remix_init ();
remix_set_tempo (env, 140);
remix_set_channels (env, REMIX_STEREO);
#if 0
sf1 = remix_sndfile_new (env, "./1052.wav", 0);
sf2 = remix_sndfile_new (env, "./909_cl.wav", 0);
#else
sf_plugin = remix_find_plugin (env, "builtin::sndfile_reader");
sf_parms = cd_set_new (env);
sf_path_key = remix_get_init_parameter_key (env, sf_plugin, "path");
sf_parms = cd_set_insert (env, sf_parms, sf_path_key,
CD_STRING("./1052.wav"));
if (sf_plugin == NULL) {
fprintf (stderr, "sf_plugin == NULL\n");
exit (1);
}
sf1 = remix_new (env, sf_plugin, sf_parms);
sf_parms = cd_set_replace (env, sf_parms, 1, CD_STRING("909_cl.wav"));
sf2 = remix_new (env, sf_plugin, sf_parms);
#endif
square = remix_squaretone_new (env, 220);
monitor = remix_monitor_new (env);
#if 0
gain = remix_gain_new (env);
#else
gain_plugin = remix_find_plugin (env, "builtin::gain");
gain = remix_new (env, gain_plugin, NULL);
#endif
envelope = remix_envelope_new (env, REMIX_ENVELOPE_LINEAR);
remix_envelope_set_timetype (env, envelope, REMIX_TIME_BEAT24S);
remix_envelope_add_point (env, envelope, REMIX_BEAT24S(0), 0.1);
remix_envelope_add_point (env, envelope, REMIX_BEAT24S(48), 1.3);
remix_envelope_add_point (env, envelope, REMIX_BEAT24S(96), 0.1);
#if 0
remix_gain_set_envelope (env, gain, env);
#else
gain_key = remix_get_parameter_key (env, gain, "Gain envelope");
printf ("got gain key: %d\n", gain_key);
remix_set_parameter (env, gain, gain_key, (CDScalar)((void *)envelope));
#endif
deck = remix_deck_new (env);
track = remix_track_new (env, deck);
l1 = remix_layer_new_ontop (env, track, REMIX_TIME_BEAT24S);
for (i=0; i < 4; i++) {
remix_sound_new (env, (RemixBase *)sf1, l1, REMIX_BEAT24S(i*24), REMIX_BEAT24S(18));
}
track2 = remix_track_new (env, deck);
l2 = remix_layer_new_ontop (env, track2, REMIX_TIME_BEAT24S);
for (i=0; i < 16; i++) {
remix_sound_new (env, (RemixBase *)sf2, l2, REMIX_BEAT24S(i*6), REMIX_BEAT24S(4));
}
deck2 = remix_deck_new (env);
track3 = remix_track_new (env, deck2);
l3 = remix_layer_new_ontop (env, track3, REMIX_TIME_BEAT24S);
remix_sound_new (env, (RemixBase *)deck, l3, REMIX_BEAT24S(0), REMIX_BEAT24S(96));
#if 1
l4 = remix_layer_new_ontop (env, track3, REMIX_TIME_BEAT24S);
remix_sound_new (env, (RemixBase *)gain, l4, REMIX_BEAT24S(0), REMIX_BEAT24S(96));
#endif
l5 = remix_layer_new_ontop (env, track3, REMIX_TIME_SAMPLES);
length = remix_length (env, (RemixBase *)deck);
sm = remix_sound_new (env, monitor, l5, REMIX_SAMPLES(0), REMIX_SAMPLES(length));
printf ("deck: %p\ttrack: %p\tl1: %p\nl3: %p\tmonitor: %p\n",
deck, track, l1, l3, monitor);
remix_process (env, deck2, length, RemixNone, RemixNone);
remix_set_tempo (env, 105);
length = remix_length (env, (RemixBase *)deck);
remix_sound_set_duration (env, sm, REMIX_SAMPLES(length));
remix_seek (env, deck2, 0, SEEK_SET);
remix_process (env, deck2, length, RemixNone, RemixNone);
remix_set_tempo (env, 168);
length = remix_length (env, (RemixBase *)deck);
remix_sound_set_duration (env, sm, REMIX_SAMPLES(length));
remix_seek (env, deck2, 0, SEEK_SET);
remix_process (env, deck2, length, RemixNone, RemixNone);
remix_purge (env);
exit (0);
}
sndfiledemo.c