void fx_init(struct razer_daemon *daemon) { srand(time(NULL)); effect_fft_in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*effect_fft_samples); effect_fft_out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*effect_fft_samples); effect_fft_hamming_buffer = create_hamming_window_buffer(effect_fft_samples); struct razer_parameter *parameter = NULL; effect = daemon_create_effect(); effect->update = effect_update; effect->reset = effect_reset; effect->name = "Simple Spectrum display #1"; effect->description = "Spectrum analyzer for sound input devices"; effect->fps = 15; effect->effect_class = 1; effect->input_usage_mask = RAZER_EFFECT_FIRST_INPUT_USED; parameter = daemon_create_parameter_string("Effect Input Device","Filepath pointing to the sound input device/file(wav format) (STRING)","/dev/dsp"); daemon_effect_add_parameter(effect,parameter); parameter = daemon_create_parameter_float("Effect Magnitude","actual spectrum energy display(FLOAT)",0.0f); daemon_effect_add_parameter(effect,parameter); int effect_uid = daemon_register_effect(daemon,effect); #ifdef USE_DEBUGGING printf("registered effect: %s (uid:%d)\n",effect->name,effect->id); #endif }
void fx_init(struct razer_daemon *daemon) { srand(time(NULL)); struct razer_parameter *parameter = NULL; effect = daemon_create_effect(); effect->update = effect_update; effect->name = "Progress Bar #1"; effect->description = "Progress bar to display a percentage"; effect->fps = 15; effect->effect_class = 1; effect->input_usage_mask = RAZER_EFFECT_FIRST_INPUT_USED; parameter = daemon_create_parameter_float("Effect Percentage","Percentage to display(FLOAT)",0.0f); daemon_effect_add_parameter(effect,parameter); int effect_uid = daemon_register_effect(daemon,effect); #ifdef USE_DEBUGGING printf("registered effect: %s (uid:%d)\n",effect->name,effect->id); #endif }
void fx_init(struct razer_daemon *daemon) { srand(time(NULL)); struct razer_parameter *parameter = NULL; effect_transition = daemon_create_effect(); effect_transition->update = effect_transition_update; effect_transition->name = "Slow Opacity Transition"; effect_transition->description = "First compute only effect"; effect_transition->fps = 20; effect_transition->effect_class = 2; effect_transition->input_usage_mask = RAZER_EFFECT_NO_INPUT_USED; //parameter = daemon_create_parameter_int("End Counter","End of animation (Integer)",44);//TODO refactor to daemon_add_effect_parameter_int(effect,key,desc,value) //daemon_add_parameter(effect_transition->parameters,parameter); parameter = daemon_create_parameter_int("Effect Length","Time effect lasts in ms(INT)",2000); daemon_effect_add_parameter(effect_transition,parameter); parameter = daemon_create_parameter_int("Effect Direction","Effect direction value(INT)",1); daemon_effect_add_parameter(effect_transition,parameter); int effect_transition_uid = daemon_register_effect(daemon,effect_transition); #ifdef USE_DEBUGGING printf("registered compute effect: %s (uid:%d)\n",effect_transition->name,effect_transition->id); #endif effect_mix = daemon_create_effect(); effect_mix->update = effect_mix_update; effect_mix->name = "Default Mixer"; effect_mix->description = "Standard effect mixer"; effect_mix->fps = 20; effect_mix->effect_class = 1; effect_mix->input_usage_mask = RAZER_EFFECT_FIRST_INPUT_USED | RAZER_EFFECT_SECOND_INPUT_USED; int effect_mix_uid = daemon_register_effect(daemon,effect_mix); #ifdef USE_DEBUGGING printf("registered mix effect: %s (uid:%d)\n",effect_mix->name,effect_mix->id); #endif effect_null = daemon_create_effect(); effect_null->update = effect_null_update; effect_null->name = "Empty Compute Node"; effect_null->description = "Does nothing"; effect_null->fps = 1; effect_null->effect_class = 1; effect_null->input_usage_mask = RAZER_EFFECT_NO_INPUT_USED; int effect_null_uid = daemon_register_effect(daemon,effect_null); #ifdef USE_DEBUGGING printf("registered compute effect: %s (uid:%d)\n",effect_null->name,effect_null->id); #endif effect_wait_mouse = daemon_create_effect(); //effect_wait->update = effect_wait_update; effect_wait_mouse->handle_event = effect_wait_mouse_event_handler; effect_wait_mouse->name = "Wait For Mouse Button Up Compute Node"; effect_wait_mouse->description = "Waits for a mouse button and returns 0 ,it does nothing else"; effect_wait_mouse->fps = 1; effect_wait_mouse->effect_class = 1; effect_wait_mouse->input_usage_mask = RAZER_EFFECT_NO_INPUT_USED; int effect_wait_mouse_uid = daemon_register_effect(daemon,effect_wait_mouse); #ifdef USE_DEBUGGING printf("registered compute effect: %s (uid:%d)\n",effect_wait_mouse->name,effect_wait_mouse->id); #endif effect_wait_key = daemon_create_effect(); effect_wait_key->handle_event = effect_wait_key_event_handler; effect_wait_key->name = "Wait For Key Compute Node"; effect_wait_key->description = "Waits for a key and returns 0 ,it does nothing else"; effect_wait_key->fps = 1; effect_wait_key->effect_class = 1; effect_wait_key->input_usage_mask = RAZER_EFFECT_NO_INPUT_USED; int effect_wait_key_uid = daemon_register_effect(daemon,effect_wait_key); #ifdef USE_DEBUGGING printf("registered compute effect: %s (uid:%d)\n",effect_wait_key->name,effect_wait_key->id); #endif effect_random_col = daemon_create_effect(); effect_random_col->update = effect_random_col_update; effect_random_col->name = "Randomize Color Parameter Compute Node"; effect_random_col->description = "Randomizes a color parameter of his parent (able to transition slowly)"; effect_random_col->fps = 1; effect_random_col->effect_class = 1; effect_random_col->input_usage_mask = RAZER_EFFECT_NO_INPUT_USED; parameter = daemon_create_parameter_int("Effect Length","Time transition lasts in ms(INT)",2000); daemon_effect_add_parameter(effect_random_col,parameter); parameter = daemon_create_parameter_int("Parameter Index","Parent color parameter index to randomize(INT)",-1); daemon_effect_add_parameter(effect_random_col,parameter); parameter = daemon_create_parameter_int("Randomize Now","Set to 1 to randomize the color(INT)",1); daemon_effect_add_parameter(effect_random_col,parameter); parameter = daemon_create_parameter_rgb("Transition Destination Color","Randomized color store(RGB)",&effect_random_col_dst_rgb); daemon_effect_add_parameter(effect_random_col,parameter); parameter = daemon_create_parameter_rgb("Transition Start Color","Internal color store(RGB)",&effect_random_col_src_rgb); daemon_effect_add_parameter(effect_random_col,parameter); int effect_random_col_uid = daemon_register_effect(daemon,effect_random_col); #ifdef USE_DEBUGGING printf("registered compute effect: %s (uid:%d)\n",effect_random_col->name,effect_random_col->id); #endif effect_glimmer = daemon_create_effect(); effect_glimmer->update = effect_glimmer_update; effect_glimmer->name = "Glimming Mixer"; effect_glimmer->description = "Glimming colors switching between input effects"; effect_glimmer->fps = 20; effect_glimmer->effect_class = 1; effect_glimmer->input_usage_mask = RAZER_EFFECT_FIRST_INPUT_USED | RAZER_EFFECT_SECOND_INPUT_USED; int effect_glimmer_uid = daemon_register_effect(daemon,effect_glimmer); #ifdef USE_DEBUGGING printf("registered mix effect: %s (uid:%d)\n",effect_glimmer->name,effect_glimmer->id); #endif effect_transition_mouse = daemon_create_effect(); //effect_transition_mouse->update = effect_transition_mouse_update; effect_transition_mouse->handle_event = effect_transition_mouse_event_handler; effect_transition_mouse->name = "Mouse Position dependant Opacity Transition"; effect_transition_mouse->description = "Mouse based compute only effect"; effect_transition_mouse->fps = 20; effect_transition_mouse->effect_class = 2; effect_transition_mouse->input_usage_mask = RAZER_EFFECT_NO_INPUT_USED; effect_transition_mouse_base_range.min = &effect_transition_mouse_base_range_min; effect_transition_mouse_base_range.max = &effect_transition_mouse_base_range_max; parameter = daemon_create_parameter_pos_range("Effect Range","Min/Max Coords of mouse is able to travel (POS_RANGE)",&effect_transition_mouse_base_range); daemon_effect_add_parameter(effect_transition_mouse,parameter); parameter = daemon_create_parameter_int("Effect Direction","Effect direction value 0 for vertical / 1 for horizontal(INT)",1); daemon_effect_add_parameter(effect_transition_mouse,parameter); parameter = daemon_create_parameter_pos("Effect Position","Effect actual coordinate(POS)",&effect_transition_mouse_base_pos); daemon_effect_add_parameter(effect_transition_mouse,parameter); int effect_transition_mouse_uid = daemon_register_effect(daemon,effect_transition_mouse); #ifdef USE_DEBUGGING printf("registered compute effect: %s (uid:%d)\n",effect_transition_mouse->name,effect_transition_mouse->id); #endif }
int effect7_update(struct razer_fx_render_node *render) { int count = daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,0)); int dir = daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,1)); struct razer_rgb color1={.r=50,.g=0,.b=0}; struct razer_rgb color2={.r=120,.g=0,.b=0}; struct razer_rgb color3={.r=255,.g=0,.b=0}; struct razer_rgb color4={.r=120,.g=0,.b=0}; struct razer_rgb color5={.r=50,.g=0,.b=0}; struct razer_rgb color_black={.r=0,.g=0,.b=0}; razer_set_frame_column(render->output_frame,count,&color1); razer_set_frame_column(render->output_frame,count-(dir*2),&color2); razer_set_frame_column(render->output_frame,count-(dir*3),&color3); razer_set_frame_column(render->output_frame,count-(dir*4),&color4); razer_set_frame_column(render->output_frame,count-(dir*5),&color5); razer_set_frame_column(render->output_frame,count-(dir*6),&color_black); razer_mix_frames(render->output_frame,render->input_frame,render->opacity); count=count+dir; if(count>27 || count<-7) dir=-dir; daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,0),count); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,1),dir); return(1); } struct razer_effect *effect8 = NULL; int effect8_update(struct razer_fx_render_node *render) { int v[3]={daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,0)),daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,3)),daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,6))}; int vdir[3] = {daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,1)),daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,4)),daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,7))}; struct razer_rgb *vcols[3] = {daemon_get_parameter_rgb(daemon_get_parameter_by_index(render->effect->parameters,2)),daemon_get_parameter_rgb(daemon_get_parameter_by_index(render->effect->parameters,5)),daemon_get_parameter_rgb(daemon_get_parameter_by_index(render->effect->parameters,8))}; //int v[3]={1,12,22}; //int vdir[3] = {1,1,1}; //int vcols[3][3] = {{1,0,0},{0,1,0},{0,0,1}}; int i; for(i=0;i<3;i++) { struct razer_rgb color1={.r=50*vcols[i]->r,.g=50*vcols[i]->g,.b=50*vcols[i]->b}; struct razer_rgb color2={.r=120*vcols[i]->r,.g=120*vcols[i]->g,.b=120*vcols[i]->b}; struct razer_rgb color3={.r=255*vcols[i]->r,.g=255*vcols[i]->g,.b=255*vcols[i]->b}; struct razer_rgb color4={.r=120*vcols[i]->r,.g=120*vcols[i]->g,.b=120*vcols[i]->b}; struct razer_rgb color5={.r=50*vcols[i]->r,.g=50*vcols[i]->g,.b=50*vcols[i]->b}; struct razer_rgb color_black={.r=0,.g=0,.b=0}; razer_set_frame_column(render->output_frame,v[i],&color1); razer_set_frame_column(render->output_frame,v[i]-(vdir[i]*2),&color2); razer_set_frame_column(render->output_frame,v[i]-(vdir[i]*3),&color3); razer_set_frame_column(render->output_frame,v[i]-(vdir[i]*4),&color4); razer_set_frame_column(render->output_frame,v[i]-(vdir[i]*5),&color5); v[i]=v[i]+vdir[i]; if(v[i]>27 || v[i]<-7) vdir[i]=-vdir[i]; } razer_mix_frames(render->output_frame,render->input_frame,render->opacity); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,0),v[0]); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,1),vdir[0]); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,3),v[1]); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,4),vdir[1]); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,5),v[2]); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,6),vdir[2]); //daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,1),&col); return(1); } struct razer_effect *effect9 = NULL; int effect9_update(struct razer_fx_render_node *render) { int v[3]={daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,0)),daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,3)),daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,6))}; int vdir[3] = {daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,1)),daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,4)),daemon_get_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,7))}; struct razer_rgb *vcols[3] = {daemon_get_parameter_rgb(daemon_get_parameter_by_index(render->effect->parameters,2)),daemon_get_parameter_rgb(daemon_get_parameter_by_index(render->effect->parameters,5)),daemon_get_parameter_rgb(daemon_get_parameter_by_index(render->effect->parameters,8))}; //int v[3]={1,12,16}; //int vdir[3] = {1,1,-1}; //int vcols[3][3] = {{1,0,0},{0,1,0},{0,0,1}}; int i,r; for(i=0;i<3;i++) { for(r=1;r<2;r++) { struct razer_rgb color_black={.r=0,.g=0,.b=0}; struct razer_rgb color={.r=50*vcols[i]->r,.g=50*vcols[i]->g,.b=50*vcols[i]->b}; struct razer_rgb color2={.r=25*vcols[i]->r,.g=25*vcols[i]->g,.b=25*vcols[i]->b}; add_keys_column(render->output_frame,v[i],&color); add_keys_column(render->output_frame,v[i]-1,&color2); sub_keys_column(render->output_frame,v[i]-(vdir[i]*17),&color); sub_keys_column(render->output_frame,v[i]-(vdir[i]*18),&color); sub_keys_column(render->output_frame,v[i]-(vdir[i]*19),&color2); sub_keys_column(render->output_frame,v[i]-(vdir[i]*20),&color2); } v[i]=v[i]+vdir[i]; if(v[i]>27 || v[i]<-7) vdir[i]=-vdir[i]; } razer_mix_frames(render->output_frame,render->input_frame,render->opacity); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,0),v[0]); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,1),vdir[0]); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,3),v[1]); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,4),vdir[1]); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,5),v[2]); daemon_set_parameter_int(daemon_get_parameter_by_index(render->effect->parameters,6),vdir[2]); return(1); } /* void test_effect6(struct razer_keys *keys) { int count = 50; float s = 0.1f; int mx=5*2; int vmax=15; int x[mx],y[mx],dir[mx],vr[mx],vg[mx],vb[mx]; int i; for(i=0;i<mx/2;i++) { x[i]=(random()%21)+1; y[i]=(random()%5)+1; dir[i]=1; vr[i]=random()%vmax; vg[i]=random()%vmax; vb[i]=random()%vmax; } for(i=mx/2;i<mx;i++) { x[i]=(random()%21)+1; y[i]=(random()%5)+1; dir[i]=0; vr[i]=random()%vmax; vg[i]=random()%vmax; vb[i]=random()%vmax; vr[i]=10; vg[i]=10; vb[i]=10; } for(i=0;i<mx;i++) { if(random()%4) { int d=random()%4; switch(d) { case 0: if(x[i]<21) x[i]++; break; case 1: if(x[i]>0) x[i]--; break; case 2: if(y[i]<5) y[i]++; break; case 3: if(y[i]>0) y[i]--; break; } } r = keys->rows[y[i]].column[x[i]].r; g = keys->rows[y[i]].column[x[i]].g; b = keys->rows[y[i]].column[x[i]].r; if(dir[i]) { if(r<255-vr[i]) r+=vr[i]; else r=255; if(g<255-vg[i]) g+=vg[i]; else g=255; if(b<255-vb[i]) b+=vb[i]; else b=255; } else { if(r>0+vr[i]) r-=vr[i]; else r=0; if(g>0+vg[i]) g-=vg[i]; else g=0; if(b>0+vb[i]) b-=vb[i]; else b=0; } keys->rows[y[i]].column[x[i]].r = (unsigned char)r; keys->rows[y[i]].column[x[i]].g = (unsigned char)g; keys->rows[y[i]].column[x[i]].b = (unsigned char)b; keys->update_mask |= 1<<y[i]; } count--; if(count<0) { count=50; for(i=0;i<mx/2;i++) { x[i]=(random()%21)+1; y[i]=(random()%5)+1; dir[i]=1; vr[i]=random()%vmax; vg[i]=random()%vmax; vb[i]=random()%vmax; } for(i=mx/2;i<mx;i++) { x[i]=(random()%21)+1; y[i]=(random()%5)+1; dir[i]=0; vr[i]=random()%vmax; vg[i]=random()%vmax; vb[i]=random()%vmax; } } } void test_effect3_frame(struct razer_keys *keys) { int x,y; clear_all(keys); for(x=0;x<22;x++) { r = (e3_count+x)*(255/22); g = (e3_count-x)*(255/22); b = (e3_count+x)*(255/22); y = (int)((sin(((x*30)+e3_count)*0.2f)*3.0f)+3.0f); if(y>5) y=5; if(y<0) y=0; keys->rows[y].column[x].r = (unsigned char)r; keys->rows[y].column[x].g = (unsigned char)g; keys->rows[y].column[x].b = (unsigned char)b; keys->update_mask |= 1<<y; } e3_count+=e3_count_dir; if(e3_count<=0 || e3_count>=440) { e3_count_dir=-e3_count_dir; e3_rnd = random(); e3_rnd2 = random(); e3_rnd3 = random(); } } void test_effect_heatmap_frame(struct razer_keys *keys) { int x,y; struct razer_rgb color; long i,max_clicks; max_clicks = 1; for(x=0;x<22;x++) { for(y=0;y<6;y++) { if(keys->heatmap[y][x]>max_clicks) max_clicks = keys->heatmap[y][x]; } } for(x=0;x<22;x++) { for(y=0;y<6;y++) { rgb_from_hue((float)keys->heatmap[y][x]/(float)max_clicks,0.3f,0.0f,&color); rgb_mix(&keys->rows[y].column[x],&color,0.7f); } } keys->update_mask = 63;//update all rows } */ /* float scroll_x,scroll_y; int scroll_width,scroll_height; double scroll_dir_x,scroll_dir_y; unsigned char *scroll_buf=NULL; void test_effect_scroll_frame(struct razer_keys *keys) { int x,y; struct razer_rgb color; for(x=0;x<22;x++) { for(y=0;y<6;y++) { color.r = scroll_buf[((int)scroll_x+x+((int)scroll_y+y)*scroll_width)*3+0]; color.g = scroll_buf[((int)scroll_x+x+((int)scroll_y+y)*scroll_width)*3+1]; color.b = scroll_buf[((int)scroll_x+x+((int)scroll_y+y)*scroll_width)*3+2]; rgb_mix(&keys->rows[y].column[x],&color,0.9f); //keys->rows[y].column[x].g = color.g; //keys->update_mask |= 1<<y; } } //usleep(50000); keys->update_mask = 63;//update all rows scroll_x += scroll_dir_x; scroll_y += scroll_dir_y; if(scroll_x<0) { scroll_x = 0; scroll_dir_x = -scroll_dir_x; } if(scroll_y<0) { scroll_y = 0; scroll_dir_y = -scroll_dir_y; } if(scroll_x>scroll_width-22) { scroll_x = scroll_width-22; scroll_dir_x = -scroll_dir_x; } if(scroll_y>scroll_height-6) { scroll_y = scroll_height-6; scroll_dir_y = -scroll_dir_y; } } */ #pragma GCC diagnostic pop #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-variable" void fx_init(struct razer_daemon *daemon) { struct razer_parameter *parameter = NULL; effect1 = daemon_create_effect(); effect1->update = effect1_update; effect1->name = "First One"; effect1->description = "First effect converted to the new render architecture"; effect1->fps = daemon->fps; parameter = daemon_create_parameter_int("End Counter","End of animation (Integer)",44);//TODO refactor to daemon_add_effect_parameter_int(effect,key,desc,value) daemon_add_parameter(effect1->parameters,parameter); parameter = daemon_create_parameter_int("Effect Counter","Counter value(INT)",0); daemon_add_parameter(effect1->parameters,parameter); parameter = daemon_create_parameter_int("Effect Direction","Effect direction value(INT)",1); daemon_add_parameter(effect1->parameters,parameter); int effect1_uid = daemon_register_effect(daemon,effect1); #ifdef USE_DEBUGGING printf("registered effect: %s (uid:%d)\n",effect1->name,effect1->id); #endif effect2 = daemon_create_effect(); effect2->update = effect2_update; effect2->name = "Breathing Color"; effect2->description = "Color sweep from totally dimmed to full brightness"; effect2->fps = daemon->fps; parameter = daemon_create_parameter_rgb("Base Color","Flashing Color (RGB)",&effect2_base_rgb); daemon_add_parameter(effect2->parameters,parameter); parameter = daemon_create_parameter_int("Effect Counter","Counter value(INT)",0); daemon_add_parameter(effect2->parameters,parameter); parameter = daemon_create_parameter_int("Effect Direction","Effect direction value(INT)",1); daemon_add_parameter(effect2->parameters,parameter); int effect2_uid = daemon_register_effect(daemon,effect2); #ifdef USE_DEBUGGING printf("registered effect: %s (uid:%d)\n",effect2->name,effect2->id); #endif effect3 = daemon_create_effect(); effect3->update = effect3_update; effect3->name = "Random Color Waves"; effect3->description = "Floating color waves"; effect3->fps = daemon->fps; parameter = daemon_create_parameter_int("Effect Counter","Counter value(INT)",0); daemon_add_parameter(effect3->parameters,parameter); parameter = daemon_create_parameter_int("Effect Direction","Effect direction value(INT)",1); daemon_add_parameter(effect3->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization R","Red randomized parameter value(INT)",random()); daemon_add_parameter(effect3->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization G","Green randomized parameter value(INT)",random()); daemon_add_parameter(effect3->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization B","Blue randomized parameter value(INT)",random()); daemon_add_parameter(effect3->parameters,parameter); int effect3_uid = daemon_register_effect(daemon,effect3); #ifdef USE_DEBUGGING printf("registered effect: %s (uid:%d)\n",effect3->name,effect3->id); #endif effect4 = daemon_create_effect(); effect4->update = effect4_update; effect4->name = "Random Color Waves #2"; effect4->description = "Floating color waves"; effect4->fps = daemon->fps; parameter = daemon_create_parameter_int("Effect Counter R","Red counter value(INT)",1); daemon_add_parameter(effect4->parameters,parameter); parameter = daemon_create_parameter_int("Effect Direction R","Red effect direction value(INT)",1); daemon_add_parameter(effect4->parameters,parameter); parameter = daemon_create_parameter_int("Effect Counter G","Green counter value(INT)",254); daemon_add_parameter(effect4->parameters,parameter); parameter = daemon_create_parameter_int("Effect Direction G","Green effect direction value(INT)",-1); daemon_add_parameter(effect4->parameters,parameter); parameter = daemon_create_parameter_int("Effect Counter B","Blue counter value(INT)",127); daemon_add_parameter(effect4->parameters,parameter); parameter = daemon_create_parameter_int("Effect Direction B","Blue effect direction value(INT)",-1); daemon_add_parameter(effect4->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization R","Red randomized parameter value(INT)",(random()%3)+1); daemon_add_parameter(effect4->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization G","Green randomized parameter value(INT)",(random()%3)+1); daemon_add_parameter(effect4->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization B","Blue randomized parameter value(INT)",(random()%3)+1); daemon_add_parameter(effect4->parameters,parameter); int effect4_uid = daemon_register_effect(daemon,effect4); #ifdef USE_DEBUGGING printf("registered effect: %s (uid:%d)\n",effect4->name,effect4->id); #endif effect5 = daemon_create_effect(); effect5->update = effect5_update; effect5->name = "Random Color Waves #3"; effect5->description = "Floating color waves"; effect5->fps = daemon->fps; parameter = daemon_create_parameter_int("Effect Counter","Counter value(INT)",0); daemon_add_parameter(effect5->parameters,parameter); parameter = daemon_create_parameter_int("Effect Direction ","Effect direction value(INT)",1); daemon_add_parameter(effect5->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization R","Red randomized parameter value(INT)",random()); daemon_add_parameter(effect5->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization G","Green randomized parameter value(INT)",random()); daemon_add_parameter(effect5->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization B","Blue randomized parameter value(INT)",random()); daemon_add_parameter(effect5->parameters,parameter); int effect5_uid = daemon_register_effect(daemon,effect5); #ifdef USE_DEBUGGING printf("registered effect: %s (uid:%d)\n",effect5->name,effect5->id); #endif effect6 = daemon_create_effect(); effect6->update = effect6_update; effect6->name = "Random Color Waves #4"; effect6->description = "Floating color waves"; effect6->fps = daemon->fps; parameter = daemon_create_parameter_int("Effect Counter","Counter value(INT)",0); daemon_add_parameter(effect6->parameters,parameter); parameter = daemon_create_parameter_int("Effect Direction ","Effect direction value(INT)",1); daemon_add_parameter(effect6->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization R","Red randomized parameter value(INT)",random()); daemon_add_parameter(effect6->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization G","Green randomized parameter value(INT)",random()); daemon_add_parameter(effect6->parameters,parameter); parameter = daemon_create_parameter_int("Effect Randomization B","Blue randomized parameter value(INT)",random()); daemon_add_parameter(effect6->parameters,parameter); int effect6_uid = daemon_register_effect(daemon,effect6); #ifdef USE_DEBUGGING printf("registered effect: %s (uid:%d)\n",effect6->name,effect6->id); #endif effect7 = daemon_create_effect(); effect7->update = effect7_update; effect7->name = "Copper Bars #4"; effect7->description = "Moving copper bars"; effect7->fps = daemon->fps; parameter = daemon_create_parameter_int("Effect Counter","Counter value(INT)",1); daemon_add_parameter(effect7->parameters,parameter); parameter = daemon_create_parameter_int("Effect Direction ","Effect direction value(INT)",1); daemon_add_parameter(effect7->parameters,parameter); int effect7_uid = daemon_register_effect(daemon,effect7); #ifdef USE_DEBUGGING printf("registered effect: %s (uid:%d)\n",effect7->name,effect7->id); #endif effect8 = daemon_create_effect(); effect8->update = effect8_update; effect8->name = "Arrayi Bars"; effect8->description = "Test Array like usage"; effect8->fps = daemon->fps; //int v[3]={1,12,22}; //int vdir[3] = {1,1,1}; //int vcols[3][3] = {{1,0,0},{0,1,0},{0,0,1}}; parameter = daemon_create_parameter_int("Effect Counter","Counter value(INT)",1); daemon_add_parameter(effect8->parameters,parameter); parameter = daemon_create_parameter_int("Effect Direction ","Effect direction value(INT)",1); daemon_add_parameter(effect8->parameters,parameter); //parameter = daemon_create_parameter_rgb("Effect Color ","Effect base color value(RGB)",&); //daemon_add_parameter(effect8->parameters,parameter); int effect8_uid = daemon_register_effect(daemon,effect8); #ifdef USE_DEBUGGING printf("registered effect: %s (uid:%d)\n",effect8->name,effect8->id); #endif effect_mix1 = daemon_create_effect(); effect_mix1->update = effect1_update; effect_mix1->name = "Default Mixer"; effect_mix1->description = "Standard effect mixer"; effect_mix1->fps = daemon->fps; int effect_mix1_uid = daemon_register_effect(daemon,effect_mix1); #ifdef USE_DEBUGGING printf("registered mix effect: %s (uid:%d)\n",effect_mix1->name,effect_mix1->id); #endif } #pragma GCC diagnostic pop void fx_shutdown(struct razer_daemon *daemon) { daemon_unregister_effect(daemon,effect1); daemon_free_parameters(&effect1->parameters); daemon_free_effect(&effect1); daemon_unregister_effect(daemon,effect2); daemon_free_parameters(&effect2->parameters); daemon_free_effect(&effect2); daemon_unregister_effect(daemon,effect3); daemon_free_parameters(&effect3->parameters); daemon_free_effect(&effect3); daemon_unregister_effect(daemon,effect4); daemon_free_parameters(&effect4->parameters); daemon_free_effect(&effect4); daemon_unregister_effect(daemon,effect5); daemon_free_parameters(&effect5->parameters); daemon_free_effect(&effect5); daemon_unregister_effect(daemon,effect6); daemon_free_parameters(&effect6->parameters); daemon_free_effect(&effect6); daemon_unregister_effect(daemon,effect7); daemon_free_parameters(&effect7->parameters); daemon_free_effect(&effect7); daemon_unregister_effect(daemon,effect_mix1); daemon_free_parameters(&effect_mix1->parameters); daemon_free_effect(&effect_mix1); }