]> lisas.de Git - terminatorX.git/blob - src/turntable.h
Uploaded Version 3.2 into ther repository... Alex
[terminatorX.git] / src / turntable.h
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: turntable.h
20
21     Description: Header to turntable.c
22
23     For a closer desciption of the methods see implementation (tunrtable.cc).
24     
25     Changes:
26     
27     20 Mar 1999: Using int16_t instead of short
28     
29     07 Apr 1999: Moved to gtk's pseudo c++ ;(
30 */
31
32
33 #ifndef _H_TURNTABLE
34 #define _H_TURNTABLE
35
36 #define MODE_SCRATCH                    1
37 #define MODE_RECORD_SCRATCH             2
38 #define MODE_PLAYBACK_RECORDED          3
39
40 #define NEED_FADE_OUT 0
41 #define NEED_FADE_IN 1
42
43 #include "tX_types.h"
44
45 //#define TX_WRITER_THREAD 1
46
47 #ifdef TX_WRITER_THREAD
48 #include <pthread.h>
49 #endif
50
51 typedef struct 
52 {
53         f_prec real_speed;
54         f_prec target_speed;
55         f_prec speed_step;
56                 
57         f_prec pos;
58         f_prec maxpos;
59
60         f_prec vol_loop;
61         f_prec vol_scratch;
62
63         int buff_cfg;   
64
65         int samples_per_block;
66         f_prec f_samples_per_block;
67
68         int block_ctr;
69         int block_max;
70         int last_block_recorded;
71         int verbose;
72
73         int realpos;
74         int mute_scratch;
75
76         /* Rotation-Speed of Turntable */
77         f_prec speed;
78         f_prec last_speed;
79         f_prec default_speed;   
80         
81         int devicefd;
82         int deviceblocksize;
83                 
84         int16_t *store_pos;
85         int16_t *mix_pos;
86         int16_t *mix_max;       
87
88         int dev_open;
89         int mode;       
90                 
91         int16_t *samplebuffer;
92
93         int fade;
94         int old_mute;
95
96 #ifdef TX_WRITER_THREAD
97         pthread_t writer;
98         int16_t *tmp_out;
99         int writer_busy;
100         
101         pthread_mutex_t writer_locked;
102         pthread_mutex_t next_write;
103 #endif
104
105         f_prec lowpass_freq;
106         f_prec lowpass_q;
107         f_prec lowpass_gainadj;
108         
109         f_prec lowpass_buf0;
110         f_prec lowpass_buf1;
111         f_prec lowpass_a;
112         f_prec lowpass_b;
113         f_prec lowpass_lastin;
114
115         
116 } Virtual_TurnTable;
117
118 extern  Virtual_TurnTable *vtt_new();
119                 
120 extern  void vtt_needle_up(Virtual_TurnTable *);
121 extern  int vtt_needle_down(Virtual_TurnTable *);
122         
123 extern  void vtt_play_block(Virtual_TurnTable *, int16_t *);
124 extern  int16_t * vtt_get_next_storage_block(Virtual_TurnTable *);
125                 
126 extern  void vtt_render_block(Virtual_TurnTable *, int16_t *);
127
128 extern  void vtt_toggle_mix(Virtual_TurnTable *);       
129 extern  void vtt_set_mode(Virtual_TurnTable *, int );
130 extern  void vtt_add_mix(Virtual_TurnTable *, int16_t *);
131         
132 extern  void vtt_store_rec_pos(Virtual_TurnTable *);
133 extern  void vtt_reset_rec_pos(Virtual_TurnTable *);
134         
135 extern  int vtt_block_action(Virtual_TurnTable *);
136         
137 extern  void vtt_set_speed(Virtual_TurnTable *, f_prec);
138                 
139 extern  int vtt_open_dev(Virtual_TurnTable *, int);
140 extern  int vtt_close_dev(Virtual_TurnTable *);
141
142 extern int vtt_save(Virtual_TurnTable* , char*, int);
143
144 extern void vtt_lowpass_conf (Virtual_TurnTable *vtt, f_prec freq, f_prec q);
145 extern void vtt_lowpass_block (Virtual_TurnTable *vtt, int16_t *buffer);
146 extern void vtt_lowpass_setfreq (Virtual_TurnTable *vtt, f_prec freq_adj);
147 #endif