2
terminatorX - realtime audio scratching software
3
Copyright (C) 1999-2003 Alexander K�nig
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.
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.
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.
19
File: tX_legacy_vtt.cc
24
#ifdef ENABLE_TX_LEGACY
28
#include "tX_global.h"
29
#include "tX_loaddlg.h"
30
#include "tX_mastergui.h"
31
#include "tX_sequencer.h"
34
#define atload(data); if (fread((void *) &data, sizeof(data), 1, input)!=1) res+=1;
36
int vtt_class :: load_10(FILE * input)
43
atload(is_sync_master);
44
atload(is_sync_client);
55
atload(obsolete_int); //x_control
56
atload(obsolete_int); //y_control
62
lp_setup(lp_gain, lp_reso, lp_freq);
66
ec_set_length(ec_length);
68
ec_set_feedback(ec_feedback);
74
int vtt_class :: load_11(FILE * input)
83
atload(is_sync_master);
84
atload(is_sync_client);
95
atload(obsolete_int); //x_control
96
atload(obsolete_int); //y_control
102
lp_setup(lp_gain, lp_reso, lp_freq);
106
ec_set_length(ec_length);
108
ec_set_feedback(ec_feedback);
111
sp_speed.set_persistence_id(pid);
113
sp_volume.set_persistence_id(pid);
115
sp_pitch.set_persistence_id(pid);
117
sp_trigger.set_persistence_id(pid);
119
sp_loop.set_persistence_id(pid);
121
sp_sync_client.set_persistence_id(pid);
123
sp_sync_cycles.set_persistence_id(pid);
125
sp_lp_enable.set_persistence_id(pid);
127
sp_lp_gain.set_persistence_id(pid);
129
sp_lp_reso.set_persistence_id(pid);
131
sp_lp_freq.set_persistence_id(pid);
133
sp_ec_enable.set_persistence_id(pid);
135
sp_ec_length.set_persistence_id(pid);
137
sp_ec_feedback.set_persistence_id(pid);
139
sp_mute.set_persistence_id(pid);
141
sp_spin.set_persistence_id(pid);
148
int vtt_class :: load_12(FILE * input)
157
LADSPA_Plugin *plugin;
159
vtt_fx_ladspa *ladspa_effect;
163
this->set_name(buffer);
165
atload(is_sync_master);
166
atload(is_sync_client);
182
lp_setup(lp_gain, lp_reso, lp_freq);
186
ec_set_length(ec_length);
188
ec_set_feedback(ec_feedback);
191
sp_speed.set_persistence_id(pid);
193
sp_volume.set_persistence_id(pid);
195
sp_pitch.set_persistence_id(pid);
197
sp_trigger.set_persistence_id(pid);
199
sp_loop.set_persistence_id(pid);
201
sp_sync_client.set_persistence_id(pid);
203
sp_sync_cycles.set_persistence_id(pid);
205
sp_lp_enable.set_persistence_id(pid);
207
sp_lp_gain.set_persistence_id(pid);
209
sp_lp_reso.set_persistence_id(pid);
211
sp_lp_freq.set_persistence_id(pid);
213
sp_ec_enable.set_persistence_id(pid);
215
sp_ec_length.set_persistence_id(pid);
217
sp_ec_feedback.set_persistence_id(pid);
219
sp_mute.set_persistence_id(pid);
221
sp_spin.set_persistence_id(pid);
225
for (i=0; i<counter; i++)
230
case TX_FX_BUILTINCUTOFF:
231
for (t=0; t<fx_list.size(); t++) effect_down(lp_fx);
234
case TX_FX_BUILTINECHO:
235
for (t=0; t<fx_list.size(); t++) effect_down(ec_fx);
240
plugin=LADSPA_Plugin::getPluginByUniqueID(id);
243
ladspa_effect=add_effect(plugin);
244
ladspa_effect->load(input);
248
sprintf(buffer,"Couldn't find required plugin with ID [%li].", id);
249
tx_note(buffer, true);
255
tx_note("Fatal error loading set: unknown effect type!", true);
265
set_x_input_parameter(tX_seqpar :: get_sp_by_persistence_id(pid));
267
else set_x_input_parameter(NULL);
274
set_y_input_parameter(tX_seqpar :: get_sp_by_persistence_id(pid));
276
else set_y_input_parameter(NULL);
279
gui.main_panel->hide(hidden);
282
gui.trigger_panel->hide(hidden);
285
gui.lp_panel->hide(hidden);
288
gui.ec_panel->hide(hidden);
293
int vtt_class :: load_13(FILE * input)
302
LADSPA_Plugin *plugin;
304
vtt_fx_ladspa *ladspa_effect;
308
this->set_name(buffer);
310
atload(is_sync_master);
311
atload(is_sync_client);
327
lp_setup(lp_gain, lp_reso, lp_freq);
331
ec_set_length(ec_length);
333
ec_set_feedback(ec_feedback);
337
ec_set_volume(ec_volume);
342
sp_speed.set_persistence_id(pid);
344
sp_volume.set_persistence_id(pid);
346
sp_pitch.set_persistence_id(pid);
348
sp_trigger.set_persistence_id(pid);
350
sp_loop.set_persistence_id(pid);
352
sp_sync_client.set_persistence_id(pid);
354
sp_sync_cycles.set_persistence_id(pid);
356
sp_lp_enable.set_persistence_id(pid);
358
sp_lp_gain.set_persistence_id(pid);
360
sp_lp_reso.set_persistence_id(pid);
362
sp_lp_freq.set_persistence_id(pid);
364
sp_ec_enable.set_persistence_id(pid);
366
sp_ec_length.set_persistence_id(pid);
368
sp_ec_feedback.set_persistence_id(pid);
370
sp_ec_volume.set_persistence_id(pid);
372
sp_ec_pan.set_persistence_id(pid);
374
sp_mute.set_persistence_id(pid);
376
sp_spin.set_persistence_id(pid);
378
sp_pan.set_persistence_id(pid);
382
for (i=0; i<counter; i++)
387
case TX_FX_BUILTINCUTOFF:
388
for (t=0; t<fx_list.size(); t++) effect_down(lp_fx);
391
case TX_FX_BUILTINECHO:
392
for (t=0; t<fx_list.size(); t++) effect_down(ec_fx);
397
plugin=LADSPA_Plugin::getPluginByUniqueID(id);
400
ladspa_effect=add_effect(plugin);
401
ladspa_effect->load(input);
405
sprintf(buffer,"Couldn't find required plugin with ID [%li].", id);
406
tx_note(buffer, true);
412
tx_note("Fatal error loading set: unknown effect type!", true);
422
set_x_input_parameter(tX_seqpar :: get_sp_by_persistence_id(pid));
424
else set_x_input_parameter(NULL);
431
set_y_input_parameter(tX_seqpar :: get_sp_by_persistence_id(pid));
433
else set_y_input_parameter(NULL);
436
gui.main_panel->hide(hidden);
439
gui.trigger_panel->hide(hidden);
442
gui.lp_panel->hide(hidden);
445
gui.ec_panel->hide(hidden);
450
int vtt_class :: load_14(FILE * input)
459
LADSPA_Plugin *plugin;
461
vtt_fx_ladspa *ladspa_effect;
465
this->set_name(buffer);
467
atload(is_sync_master);
468
atload(is_sync_client);
484
lp_setup(lp_gain, lp_reso, lp_freq);
488
ec_set_length(ec_length);
490
ec_set_feedback(ec_feedback);
494
ec_set_volume(ec_volume);
496
atload(audio_hidden);
497
atload(control_hidden);
502
sp_speed.set_persistence_id(pid);
504
sp_volume.set_persistence_id(pid);
506
sp_pitch.set_persistence_id(pid);
508
sp_trigger.set_persistence_id(pid);
510
sp_loop.set_persistence_id(pid);
512
sp_sync_client.set_persistence_id(pid);
514
sp_sync_cycles.set_persistence_id(pid);
516
sp_lp_enable.set_persistence_id(pid);
518
sp_lp_gain.set_persistence_id(pid);
520
sp_lp_reso.set_persistence_id(pid);
522
sp_lp_freq.set_persistence_id(pid);
524
sp_ec_enable.set_persistence_id(pid);
526
sp_ec_length.set_persistence_id(pid);
528
sp_ec_feedback.set_persistence_id(pid);
530
sp_ec_volume.set_persistence_id(pid);
532
sp_ec_pan.set_persistence_id(pid);
534
sp_mute.set_persistence_id(pid);
536
sp_spin.set_persistence_id(pid);
538
sp_pan.set_persistence_id(pid);
542
for (i=0; i<counter; i++)
547
case TX_FX_BUILTINCUTOFF:
548
for (t=0; t<fx_list.size(); t++) effect_down(lp_fx);
551
case TX_FX_BUILTINECHO:
552
for (t=0; t<fx_list.size(); t++) effect_down(ec_fx);
557
plugin=LADSPA_Plugin::getPluginByUniqueID(id);
560
ladspa_effect=add_effect(plugin);
561
ladspa_effect->load(input);
565
sprintf(buffer,"Couldn't find required plugin with ID [%li].", id);
566
tx_note(buffer, true);
572
tx_note("Fatal error loading set: unknown effect type!", true);
582
set_x_input_parameter(tX_seqpar :: get_sp_by_persistence_id(pid));
584
else set_x_input_parameter(NULL);
591
set_y_input_parameter(tX_seqpar :: get_sp_by_persistence_id(pid));
593
else set_y_input_parameter(NULL);
596
gui.main_panel->hide(hidden);
599
gui.trigger_panel->hide(hidden);
602
gui.lp_panel->hide(hidden);
605
gui.ec_panel->hide(hidden);
610
int vtt_class :: load_all_10(FILE* input, char *fname)
617
while (main_list.size())
619
delete((*main_list.begin()));
623
atload(master_volume);
624
set_master_volume(master_volume);
625
globals.volume=master_volume;
626
atload(globals.pitch);
627
set_master_pitch(globals.pitch);
629
ld_create_loaddlg(TX_LOADDLG_MODE_MULTI, max);
630
ld_set_setname(fname);
632
for (i=0; i<max; i++)
634
newvtt=new vtt_class(1);
635
res+=newvtt->load_10(input);
637
if (strlen(newvtt->filename))
639
/* ftmp IS NECESSARY !!! */
640
strcpy(ftmp, newvtt->filename);
641
ld_set_filename(ftmp);
643
//restmp=load_wav(newvtt->filename, &newbuffer, &size);
644
restmp=(int) newvtt->load_file(ftmp);
647
gtk_box_pack_start(GTK_BOX(control_parent), newvtt->gui.control_box, TRUE, TRUE, 0);
648
gtk_box_pack_start(GTK_BOX(audio_parent), newvtt->gui.audio_box, TRUE, TRUE, 0);
651
sequencer.delete_all_events(tX_sequencer::DELETE_ALL);
659
int vtt_class :: load_all_11(FILE* input, char *fname)
667
while (main_list.size())
669
delete((*main_list.begin()));
673
atload(master_volume);
674
set_master_volume(master_volume);
675
globals.volume=master_volume;
676
atload(globals.pitch);
677
set_master_pitch(globals.pitch);
679
sp_master_volume.set_persistence_id(pid);
681
sp_master_pitch.set_persistence_id(pid);
683
ld_create_loaddlg(TX_LOADDLG_MODE_MULTI, max);
684
ld_set_setname(fname);
686
for (i=0; i<max; i++)
688
newvtt=new vtt_class(1);
689
res+=newvtt->load_11(input);
691
if (strlen(newvtt->filename))
693
/* ftmp IS NECESSARY !!! */
694
strcpy(ftmp, newvtt->filename);
695
ld_set_filename(ftmp);
697
//restmp=load_wav(newvtt->filename, &newbuffer, &size);
698
restmp=(int) newvtt->load_file(ftmp);
701
gtk_box_pack_start(GTK_BOX(control_parent), newvtt->gui.control_box, TRUE, TRUE, 0);
702
gtk_box_pack_start(GTK_BOX(audio_parent), newvtt->gui.audio_box, TRUE, TRUE, 0);
706
sequencer.load(input);
714
int vtt_class :: load_all_12(FILE* input, char *fname)
722
while (main_list.size())
724
delete((*main_list.begin()));
728
atload(master_volume);
729
set_master_volume(master_volume);
730
globals.volume=master_volume;
731
atload(globals.pitch);
732
set_master_pitch(globals.pitch);
734
sp_master_volume.set_persistence_id(pid);
736
sp_master_pitch.set_persistence_id(pid);
738
ld_create_loaddlg(TX_LOADDLG_MODE_MULTI, max);
739
ld_set_setname(fname);
741
for (i=0; i<max; i++)
743
newvtt=new vtt_class(1);
744
res+=newvtt->load_12(input);
746
if (strlen(newvtt->filename))
748
/* ftmp IS NECESSARY !!! */
749
strcpy(ftmp, newvtt->filename);
750
ld_set_filename(ftmp);
752
//restmp=load_wav(newvtt->filename, &newbuffer, &size);
753
restmp=(int) newvtt->load_file(ftmp);
756
gtk_box_pack_start(GTK_BOX(control_parent), newvtt->gui.control_box, TRUE, TRUE, 0);
757
gtk_box_pack_start(GTK_BOX(audio_parent), newvtt->gui.audio_box, TRUE, TRUE, 0);
761
sequencer.load(input);
768
int vtt_class :: load_all_13(FILE* input, char *fname)
776
while (main_list.size())
778
delete((*main_list.begin()));
782
atload(master_volume);
783
set_master_volume(master_volume);
784
globals.volume=master_volume;
785
atload(globals.pitch);
786
set_master_pitch(globals.pitch);
788
sp_master_volume.set_persistence_id(pid);
790
sp_master_pitch.set_persistence_id(pid);
792
ld_create_loaddlg(TX_LOADDLG_MODE_MULTI, max);
793
ld_set_setname(fname);
795
for (i=0; i<max; i++)
797
newvtt=new vtt_class(1);
798
res+=newvtt->load_13(input);
800
if (strlen(newvtt->filename))
802
/* ftmp IS NECESSARY !!! */
803
strcpy(ftmp, newvtt->filename);
804
ld_set_filename(ftmp);
806
//restmp=load_wav(newvtt->filename, &newbuffer, &size);
807
restmp=(int) newvtt->load_file(ftmp);
810
gtk_box_pack_start(GTK_BOX(control_parent), newvtt->gui.control_box, TRUE, TRUE, 0);
811
gtk_box_pack_start(GTK_BOX(audio_parent), newvtt->gui.audio_box, TRUE, TRUE, 0);
815
sequencer.load(input);
822
int vtt_class :: load_all_14(FILE* input, char *fname)
830
while (main_list.size())
832
delete((*main_list.begin()));
836
atload(master_volume);
837
set_master_volume(master_volume);
838
globals.volume=master_volume;
839
atload(globals.pitch);
840
set_master_pitch(globals.pitch);
842
sp_master_volume.set_persistence_id(pid);
844
sp_master_pitch.set_persistence_id(pid);
846
ld_create_loaddlg(TX_LOADDLG_MODE_MULTI, max);
847
ld_set_setname(fname);
849
for (i=0; i<max; i++)
851
newvtt=new vtt_class(1);
852
res+=newvtt->load_14(input);
854
if (strlen(newvtt->filename))
856
/* ftmp IS NECESSARY !!! */
857
strcpy(ftmp, newvtt->filename);
858
ld_set_filename(ftmp);
860
//restmp=load_wav(newvtt->filename, &newbuffer, &size);
861
restmp=(int) newvtt->load_file(ftmp);
864
gtk_box_pack_start(GTK_BOX(control_parent), newvtt->gui.control_box, TRUE, TRUE, 0);
865
gtk_box_pack_start(GTK_BOX(audio_parent), newvtt->gui.audio_box, TRUE, TRUE, 0);
866
if (newvtt->audio_hidden) newvtt->hide_audio(newvtt->audio_hidden);
867
if (newvtt->control_hidden) newvtt->hide_control(newvtt->control_hidden);
870
sequencer.load(input);
877
void vtt_fx_ladspa :: load (FILE *input)
881
list <tX_seqpar_vttfx *> :: iterator sp;
886
fread((void *) &count, sizeof(count), 1, input);
888
if (count!=controls.size())
890
fprintf(stderr, "tX: Ouch! Plugin %li has less/more controls than saved!\n", plugin->getUniqueID());
893
for (i=0, sp=controls.begin(); (i<count) && (sp!=controls.end()); i++, sp++) {
894
fread((void *) &pid, sizeof(pid), 1, input);
895
(*sp)->set_persistence_id(pid);
896
fread((void *) &value, sizeof(value), 1, input);
897
(*sp)->do_exec(value);
898
(*sp)->do_update_graphics();
901
fread((void *) &hidden, sizeof(hidden), 1, input);
905
void tX_sequencer :: load(FILE *in)
907
guint32 event_count=0;
909
tX_event *new_event=NULL;
911
delete_all_events(tX_sequencer::DELETE_ALL);
913
fread ((void *) &event_count, sizeof(event_count), 1, in);
917
for (i=0; i<event_count; i++)
919
new_event=new tX_event(in);
920
song_list.push_back(new_event);
926
if (new_event) max_timestamp=new_event->get_timestamp();
929
tX_event :: tX_event (FILE *input)
931
unsigned int sp_persistence_id;
933
fread((void *) &sp_persistence_id, sizeof(sp_persistence_id), 1, input);
934
fread((void *) ×tamp, sizeof(timestamp), 1, input);
935
fread((void *) &value, sizeof(value), 1, input);
937
sp=tX_seqpar::get_sp_by_persistence_id(sp_persistence_id);
940
fprintf(stderr, "oops: couldn't resolve sp by persistence id %i.\n", sp_persistence_id);