diff -ur freebirth-0.3.2.orig/freebirth.c freebirth-0.3.2/freebirth.c --- freebirth-0.3.2.orig/freebirth.c 2000-01-13 20:42:26.000000000 +0200 +++ freebirth-0.3.2/freebirth.c 2007-07-24 17:36:41.000000000 +0300 @@ -248,15 +248,15 @@ //bass_e = env_new(1025,10000,(sample_producer *)osc_blender); sl = g_slist_append(sl, bass_e); - kick = raw_wave_new("raw/kick.raw"); + kick = raw_wave_new("/usr/share/freebirth/raw/kick.raw"); sl = g_slist_append(sl, kick); - snare = raw_wave_new("raw/snare.raw"); + snare = raw_wave_new("/usr/share/freebirth/raw/snare.raw"); sl = g_slist_append(sl, snare); - cl_hat = raw_wave_new("raw/cl_hat.raw"); + cl_hat = raw_wave_new("/usr/share/freebirth/raw/cl_hat.raw"); sl = g_slist_append(sl, cl_hat); - op_hat = raw_wave_new("raw/op_hat.raw"); + op_hat = raw_wave_new("/usr/share/freebirth/raw/op_hat.raw"); sl = g_slist_append(sl, op_hat); - samp_1 = raw_wave_new("raw/samp_1.raw"); + samp_1 = raw_wave_new("/usr/share/freebirth/raw/samp_1.raw"); sl = g_slist_append(sl, samp_1); sources = (sample_producer**) @@ -1087,7 +1087,7 @@ /*effect window */ - effect_window = gtk_window_new (GTK_WINDOW_DIALOG); + effect_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW (effect_window), "Effects"); gtk_widget_set_style(effect_window,window_style); effect_box = gtk_vbox_new(FALSE,10); @@ -1109,7 +1109,7 @@ /* sample freq window */ - sample_freq_window = gtk_window_new (GTK_WINDOW_DIALOG); + sample_freq_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW (sample_freq_window), "Sample Pitch"); sample_freq_box = gtk_vbox_new(TRUE,10); gtk_widget_set_style(sample_freq_window,window_style); diff -ur freebirth-0.3.2.orig/fuse_loops.c freebirth-0.3.2/fuse_loops.c --- freebirth-0.3.2.orig/fuse_loops.c 1999-02-27 04:02:23.000000000 +0200 +++ freebirth-0.3.2/fuse_loops.c 2007-07-24 17:36:41.000000000 +0300 @@ -122,7 +122,18 @@ fprintf(file, "/* generated file -- don't edit */\n"); fprintf(file, "#include \n"); fprintf(file, "#include \n"); + fprintf(file, "#include \n"); fprintf(file, "#include \"freebirth.h\"\n"); + fprintf(file, "/* borrowed from glib2 */\n"); + fprintf(file, "#define SHORT_SWAP_LE_BE(val) ((short) ( \\\n"); + fprintf(file, " (short) ((short) (val) >> 8) | \\\n"); + fprintf(file, " (short) ((short) (val) << 8)))\n"); + fprintf(file, "static void swap_endian(short *data, int length)\n"); + fprintf(file, "{\n"); + fprintf(file, " int i;\n"); + fprintf(file, " for (i = 0; i < length; i += 1, data++)\n"); + fprintf(file, " *data = SHORT_SWAP_LE_BE(*data);\n"); + fprintf(file, "}\n"); fprintf(file, "\n"); fprintf(file, "sample_producer *sp[%d];\n", g_list_length(order)); @@ -172,6 +183,9 @@ fprintf(file, " }\n"); fprintf(file, "\n"); + fprintf(file, "#if __BYTE_ORDER == __BIG_ENDIAN\n"); + fprintf(file, " swap_endian(buffer, 2 * TBASS_BUFF_SIZE);\n"); + fprintf(file, "#endif\n"); fprintf(file, " write(fd, buffer, 2 * TBASS_BUFF_SIZE * sizeof(short));\n"); fprintf(file, "\n"); diff -ur freebirth-0.3.2.orig/gtkdial.c freebirth-0.3.2/gtkdial.c --- freebirth-0.3.2.orig/gtkdial.c 1999-02-16 01:58:31.000000000 +0200 +++ freebirth-0.3.2/gtkdial.c 2007-07-24 17:36:41.000000000 +0300 @@ -75,8 +75,6 @@ sizeof (GtkDialClass), (GtkClassInitFunc) gtk_dial_class_init, (GtkObjectInitFunc) gtk_dial_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, }; dial_type = gtk_type_unique (gtk_widget_get_type (), &dial_info); diff -ur freebirth-0.3.2.orig/Makefile freebirth-0.3.2/Makefile --- freebirth-0.3.2.orig/Makefile 2000-01-13 01:37:14.000000000 +0200 +++ freebirth-0.3.2/Makefile 2007-07-24 17:36:41.000000000 +0300 @@ -2,9 +2,9 @@ # CC=gcc -LOADLIBES=-lm $(shell gtk-config --libs) -CFLAGS=-g -O6 -Wall $(shell gtk-config --cflags) -LDFLAGS= +LOADLIBES=-lm -L/usr/lib -lgtk-x11-2.0 +CFLAGS=-g -Wall $(shell pkg-config --cflags gtk+-2.0) +LDFLAGS=$(shell pkg-config --libs gtk+-2.0) OFILES=\ oscillator.o sequencer.o envelope.o filter.o gtkdial.o mixer.o \ diff -ur freebirth-0.3.2.orig/raw_wave.c freebirth-0.3.2/raw_wave.c --- freebirth-0.3.2.orig/raw_wave.c 2000-01-13 01:40:33.000000000 +0200 +++ freebirth-0.3.2/raw_wave.c 2007-07-24 17:36:41.000000000 +0300 @@ -21,18 +21,36 @@ #include "raw_wave.h" #include #include +#include #include +#include + +/* borrowed from glib2 */ +#define SHORT_SWAP_LE_BE(val) ((short) ( \ + (short) ((short) (val) >> 8) | \ + (short) ((short) (val) << 8))) +static void swap_endian(short *data, int length) +{ + int i; + for (i = 0; i < length; i += 1, data++) + *data = SHORT_SWAP_LE_BE(*data); +} static char *get_full_path(char *fn) { char *full_fn; char *fb_samples; - if (fn == NULL || fn[0] == '/') return fn; fb_samples = getenv("FB_SAMPLES"); if (fb_samples == NULL) fb_samples = FB_SAMPLES; - sprintf(full_fn = (char *)malloc(strlen(fb_samples) + 1 + strlen(fn) + 1), - "%s/%s", fb_samples, fn); + full_fn = (char *)malloc(strlen(fb_samples) + 1 + strlen(fn) + 1); + + if (fn == NULL || fn[0] == '/') { /* path is valid already */ + sprintf(full_fn, "%s", fn); + } else { + sprintf(full_fn, "%s/%s", fb_samples, fn); /* add path */ + } + return full_fn; } @@ -76,10 +94,13 @@ } this->length += count; +#if __BYTE_ORDER == __BIG_ENDIAN + swap_endian(tmp, this->length); +#endif this->table = (sample *)malloc(sizeof(sample) * this->length); - for(i = 0; i < this->length;i++) + for(i = 0; i < this->length;i++) { this->table[i] = (sample)tmp[i]; - + } fclose(in); free(tmp); } @@ -126,6 +147,7 @@ } } + return this->buffer; } @@ -145,7 +167,7 @@ void raw_wave_set_sample_file(raw_wave* this, char *filename) { FILE *in; - if (this->filename != 0) free(this->filename); + if (this->filename != NULL) free(this->filename); this->filename = get_full_path(filename); in = fopen(this->filename,"r"); if( in==NULL ) @@ -243,7 +265,7 @@ /* set table to zero here check if it is zero in */ /* _fill_table */ out->table = 0; - out->filename = 0; + out->filename = NULL; raw_wave_set_sample_file(out, filename); out->buffer = (sample *)malloc(sizeof(sample) * TBASS_BUFF_SIZE); diff -ur freebirth-0.3.2.orig/raw_wave.h freebirth-0.3.2/raw_wave.h --- freebirth-0.3.2.orig/raw_wave.h 2000-01-13 20:44:05.000000000 +0200 +++ freebirth-0.3.2/raw_wave.h 2007-07-24 17:41:14.000000000 +0300 @@ -62,7 +62,7 @@ event *event_pitch_change_new(int seq_handle, double pitch); // #define FB_SAMPLES "/usr/local/lib/freebirth" -#define FB_SAMPLES "." +#define FB_SAMPLES "/usr/share/freebirth" /* Local Variables: