if(draw)
{
clear_box(0, 0, get_w(), get_h());
-
-
int niquist = plugin->PluginAClient::project_sample_rate / 2;
- int total_frames = plugin->get_gui_update_frames();
- GraphicGUIFrame *frame = (GraphicGUIFrame*)plugin->get_gui_frame();
-
- if(frame)
- {
- delete plugin->last_frame;
- plugin->last_frame = frame;
- }
- else
- {
- frame = plugin->last_frame;
- }
-// Draw most recent frame
- if(frame)
- {
+// delete frames up to current tracking position
+ double tracking_position = plugin->get_tracking_position();
+ GraphicGUIFrame *frame = (GraphicGUIFrame *)
+ plugin->get_gui_frame(tracking_position, 1);
+ if( frame ) {
+ int y1 = 0, y2 = 0;
set_color(MEGREY);
- int y1 = 0;
- int y2 = 0;
-
for(int i = 0; i < get_w(); i++)
{
y1 = y2;
}
}
-//printf( "\n");
-
- total_frames--;
- }
-
-
-
-
-
-
-// Delete remaining frames
- while(total_frames > 0)
- {
- PluginClientFrame *frame = plugin->get_gui_frame();
-
- if(frame) delete frame;
- total_frames--;
+ delete frame;
}
}
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
GraphicEQ::GraphicEQ(PluginServer *server)
: PluginAClient(server)
{
input.set_shared_input(keyframe->xbuf);
config.points.remove_all_objects();
- while(!result)
- {
- result = input.read_tag();
-
- if(!result)
- {
- if(input.tag.title_is("GRAPHICEQ"))
- {
- config.window_size = input.tag.get_property("WINDOW_SIZE", config.window_size);
- if(is_defaults())
- {
- w = input.tag.get_property("W", w);
- h = input.tag.get_property("H", h);
- }
- }
- else
- if(input.tag.title_is("POINT"))
- {
- GraphicPoint *point;
- config.points.append(point = new GraphicPoint);
- point->freq = input.tag.get_property("X", 0);
- point->value = input.tag.get_property("Y", 0.0);
+ while( !(result = input.read_tag()) ) {
+ if(input.tag.title_is("GRAPHICEQ")) {
+ config.window_size = input.tag.get_property("WINDOW_SIZE", config.window_size);
+ if(is_defaults()) {
+ w = input.tag.get_property("W", w);
+ h = input.tag.get_property("H", h);
}
}
+ else if(input.tag.title_is("POINT")) {
+ GraphicPoint *point;
+ config.points.append(point = new GraphicPoint);
+ point->freq = input.tag.get_property("X", 0);
+ point->value = input.tag.get_property("Y", 0.0);
+ }
}
-
// if(!active_point_exists()) active_point = -1;
}
output.append_tag();
output.append_newline();
- for(int i = 0; i < config.points.total; i++)
- {
+ for(int i = 0; i < config.points.total; i++) {
output.tag.set_title("POINT");
output.tag.set_property("X", config.points.values[i]->freq);
output.tag.set_property("Y", config.points.values[i]->value);
{
if( !thread ) return;
GraphicGUI *window = (GraphicGUI *)thread->window;
+ window->lock_window("GraphicEQ::update_gui");
//lock here for points, needed by window cursor_motion callback
// deleted in load_configuration by read_data
- window->lock_window("GraphicEQ::update_gui");
if( load_configuration() &&
window->canvas->state != GraphicCanvas::DRAG_POINT ) {
window->update_canvas();
window->update_textboxes();
}
- else {
- int total_frames = get_gui_update_frames();
-//printf("ParametricEQ::update_gui %d %d\n", __LINE__, total_frames);
- if( total_frames )
- window->update_canvas();
+ else if( pending_gui_frame() ) {
+ window->update_canvas();
}
window->unlock_window();
}
void GraphicEQ::reconfigure()
{
- if(fft && fft->window_size != config.window_size)
- {
+ if(fft && fft->window_size != config.window_size) {
delete fft;
fft = 0;
}
- if(!fft)
- {
+ if(!fft) {
fft = new GraphicFFT(this);
fft->initialize(config.window_size);
}
calculate_envelope(&config.points, envelope);
- for(int i = 0; i < config.window_size / 2; i++)
- {
+ for(int i = 0; i < config.window_size / 2; i++) {
if(envelope[i] < 0) envelope[i] = 0;
}
}
-
-
GraphicGUIFrame::GraphicGUIFrame(int window_size, int sample_rate)
- : PluginClientFrame(window_size / 2, window_size / 2, sample_rate)
+ : PluginClientFrame()
{
- data = new double[window_size / 2];
+ this->window_size = window_size;
+ data_size = window_size / 2;
+ data = new double[data_size];
freq_max = 0;
time_max = 0;
- this->window_size = window_size;
}
GraphicGUIFrame::~GraphicGUIFrame()
}
-
-
-
-
GraphicFFT::GraphicFFT(GraphicEQ *plugin)
: CrossfadeFFT()
{