]> lisas.de Git - terminatorX.git/blob - src/main.c
Uploaded Version 3.2 into ther repository... Alex
[terminatorX.git] / src / main.c
1 /*
2     terminatorX - realtime audio scratching software
3     Copyright (C) 1999  Alexander K÷nig
4
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18     
19     File: main.c
20     
21     Description: This contains the main() function. All the initializing
22                  happens here.
23     
24     Changes:
25     
26     19 Mar 1999: Applied a patch by Andrew C. Bul+hac?k (eMail: acb@zikzak.net)
27                  that fixes wavfile reading routine for the overreading bug.
28                  
29     20 Mar 1999: Big endian support.
30     
31     23 Mar 1999: display of new keys (<-, ->)
32 */
33
34 #include <stdio.h>
35 #include "turntable.h"
36 #include "tX_gui.h"
37 #include <malloc.h>
38 #include <math.h>
39 #include <stdio.h>
40 #ifndef WIN32
41 #include <unistd.h>
42 #endif
43
44 #include "endian.h"
45 #include "tX_types.h"
46 #include "tX_wavfunc.h"
47 #include "tX_global.h"
48 #include "version.h"
49 #include "tX_dialog.h"
50 #include <gtk/gtk.h>
51 #include <glib.h>
52
53 Virtual_TurnTable *myvtt;
54
55 GTimer *my_time;
56 gint idle_tag;
57 /* main(): */
58
59 void idle()
60 {
61         gdouble time;
62         gulong ms;
63         
64         time=g_timer_elapsed(my_time, &ms);
65         if (time > 1.5)
66         {
67                 gtk_idle_remove(idle_tag);
68                 destroy_about();                
69                 display_gui();          
70         }
71 }
72
73 int main(int argc, char **argv)
74 {
75 #ifndef WIN32
76         fprintf(stderr, "%s, Copyright(C)1999 Alexander König, alkoit00@fht-esslingen.de\n", VERSIONSTRING);
77 #else
78         fprintf(stderr, "%s, Copyright(C)1999 Alexander König, alkoit00@fht-esslingen.de\n", VERSIONSTRING);
79         setenv ("CYGWIN", "binmode");
80 #endif
81         fprintf(stderr, "terminatorX comes with ABSOLUTELY NO WARRANTY - for details read the license.\n");
82
83
84         gtk_init (&argc, &argv);         
85
86         load_globals();         
87
88         if (globals.show_nag)
89         {       
90                 show_about(1);
91
92                 my_time=g_timer_new();
93                 g_timer_start(my_time);         
94         
95                 idle_tag=gtk_idle_add((GtkFunction)idle, NULL);
96         }
97                         
98         if (strlen(globals.scratch_name))
99         {
100                 fprintf (stderr, "Loading: %s\n", globals.scratch_name);
101                 if (load_wav(globals.scratch_name, &globals.scratch_data, &globals.scratch_size))
102                 {
103                         strcpy(globals.scratch_name , "");
104                         globals.scratch_size=0;
105                         globals.scratch_len=0;
106                 }
107                 {
108                         globals.scratch_len=globals.scratch_size/sizeof(int16_t);
109                 }
110         }
111
112         if (strlen(globals.loop_name))
113         {
114                 fprintf (stderr, "Loading: %s\n", globals.loop_name);
115                 if (load_wav(globals.loop_name, &globals.loop_data, &globals.loop_size))
116                 {
117                         strcpy(globals.loop_name , "");
118                         globals.loop_size=0;
119                         globals.loop_len=0;
120                         globals.do_mix=0;
121                 }
122                 {
123                         globals.loop_len=globals.loop_size/sizeof(int16_t);
124                 }
125         }
126         else
127         {
128                 globals.do_mix=0;
129         }
130         
131         globals.rec_buffer=0;
132         
133         if (malloc_recbuffer())
134         {
135                 fprintf(stderr, "Failed to allocate record buffer.");
136                 return(1);
137         }
138
139         vttgl=vtt_new();
140         
141         create_gui(globals.width, globals.height);
142                 
143
144         if (!globals.show_nag)  display_gui();
145                 
146         gtk_main();
147
148         if (globals.scratch_data) free(globals.scratch_data);
149         if (globals.loop_data) free(globals.loop_data);
150         if (globals.rec_buffer) free(globals.rec_buffer);
151         
152         store_globals();
153
154         fprintf(stderr, "Have a nice life.\n");
155         
156         return (0);
157 }