--- freebirth.c
+++ freebirth.c
@@ -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);
--- fuse_loops.c
+++ fuse_loops.c
@@ -122,7 +122,18 @@
   fprintf(file, "/* generated file -- don't edit */\n");
   fprintf(file, "#include <unistd.h>\n");
   fprintf(file, "#include <math.h>\n");
+  fprintf(file, "#include <endian.h>\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");
 
--- gtkdial.c
+++ gtkdial.c
@@ -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);
--- Makefile
+++ Makefile
@@ -1,10 +1,9 @@
 # Makefile for Freebirth 
 #
 
-CC=gcc
-LOADLIBES=-lm $(shell gtk-config --libs)
-CFLAGS=-g  -O6  -Wall $(shell gtk-config --cflags)
-LDFLAGS= 
+CC?=gcc
+CFLAGS+=-Wall $(shell pkg-config --cflags gtk+-2.0)
+LIBS=-lm $(shell pkg-config --libs gtk+-2.0)
 
 OFILES=\
 oscillator.o sequencer.o envelope.o filter.o gtkdial.o mixer.o \
@@ -22,16 +21,18 @@
 	-rm -f *.o freebirth fusebirth fused_loop.c Makefile.deps *~ 
 
 freebirth: $(OFILES) fused_loop.o freebirth.o
+	$(CC) $(LDFLAGS) $(CFLAGS) -o freebirth $(OFILES) fused_loop.o freebirth.o $(LIBS)
 
 fused_loop.c: fusebirth
 	./fusebirth > fused_loop.c 2>/dev/null
 
 fusebirth: $(OFILES) fuse_loops.o fusebirth.o
+	$(CC) $(LDFLAGS) $(CFLAGS) -o fusebirth $(OFILES) fuse_loops.o fusebirth.o $(LIBS)
 
 fusebirth.o: freebirth.c
 	$(CC) -c $(CFLAGS) -DFUSE_LOOPS -o fusebirth.o freebirth.c
 
 Makefile.deps:
-	gcc -MM $(CFLAGS) $(CFILES) > Makefile.deps
+	$(CC) -MM $(CFLAGS) $(CFILES) > Makefile.deps
 
 include Makefile.deps
--- raw_wave.c
+++ raw_wave.c
@@ -21,18 +21,36 @@
 #include "raw_wave.h"
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <math.h>
+#include <endian.h>
+
+/* 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);
--- raw_wave.h
+++ raw_wave.h
@@ -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:
