29 #define MAXRECSIZE 131072
30 #define MAXFILESIZE INT_MAX-MAXRECSIZE // 2147352576 //2147483648-MAXRECSIZE
57 name =
N_(
"Stereo Recorder");
72 sem_init(&m_trig, 0, 0);
81 inline std::string SCapture::get_ffilename() {
84 std::string pPath = getenv(
"HOME");
85 is_wav = int(
fformat) ? false :
true;
87 if (!(stat(pPath.c_str(), &sb) == 0 && S_ISDIR(sb.st_mode))) {
88 mkdir(pPath.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
90 std::string
name =
"guitarix_session0.wav";
95 name =
"guitarix_session0.ogg";
98 name =
"guitarix_session0.w64";
104 while (stat ((pPath+
name).c_str(), &buffer) == 0) {
111 void SCapture::disc_stream() {
115 recfile = open_stream(get_ffilename());
117 save_to_wave(recfile, tape, savesize);
119 if ((!keep_stream && recfile) || (filesize >
MAXFILESIZE && is_wav)) {
120 close_stream(&recfile);
126 void *SCapture::run_thread(
void *p) {
127 (
reinterpret_cast<SCapture *
>(p))->disc_stream();
131 void SCapture::stop_thread() {
132 pthread_cancel (m_pthr);
133 pthread_join (m_pthr, NULL);
136 void SCapture::start_thread() {
138 struct sched_param spar;
139 int priority, policy;
141 spar.sched_priority = priority;
142 pthread_attr_init(&attr);
143 pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_JOINABLE );
144 pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL);
145 pthread_attr_setschedpolicy(&attr, policy);
146 pthread_attr_setschedparam(&attr, &spar);
147 pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
148 pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
150 if (pthread_create(&m_pthr, &attr, run_thread,
151 reinterpret_cast<void*
>(
this))) {
154 pthread_attr_destroy(&attr);
157 inline void SCapture::clear_state_f()
161 for (
int i=0; i<2; i++) fRecb0[i] = 0;
162 for (
int i=0; i<2; i++) iRecb1[i] = 0;
163 for (
int i=0; i<2; i++) fRecb2[i] = 0;
164 for (
int i=0; i<2; i++) fRecC0[i] = 0;
167 void SCapture::clear_state_f_static(
PluginDef *p)
169 static_cast<SCapture*
>(p)->clear_state_f();
179 void SCapture::init_static(
unsigned int samplingFreq,
PluginDef *p)
184 inline void SCapture::save_to_wave(SNDFILE * sf,
float *tape,
int lSize)
187 sf_write_float(sf,tape, lSize);
192 SNDFILE *SCapture::open_stream(std::string fname)
195 sfinfo.channels = channel;
199 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT;
202 sfinfo.format = SF_FORMAT_OGG | SF_FORMAT_VORBIS;
205 sfinfo.format = SF_FORMAT_W64 | SF_FORMAT_PCM_24;
208 sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT;
212 SNDFILE * sf = sf_open(fname.c_str(), SFM_WRITE, &sfinfo);
217 inline void SCapture::close_stream(SNDFILE **sf)
219 if (*sf) sf_close(*sf);
223 void SCapture::mem_alloc()
227 mem_allocated =
true;
230 void SCapture::mem_free()
232 mem_allocated =
false;
237 int SCapture::activate(
bool start)
240 if (!mem_allocated) {
244 }
else if (mem_allocated) {
257 if (err) fcheckbox0 = 0.0;
258 int iSlow0 = int(fcheckbox0);
259 fcheckbox1 = int(fRecb2[0]);
260 float fSlow0 = (0.0010000000000000009f * powf(10,(0.05f *
fslider0)));
261 for (
int i=0; i<count; i++) {
262 float fTemp0 = (float)input0[i];
263 fRecC0[0] = (fSlow0 + (0.999f * fRecC0[1]));
264 float fTemp1 = fTemp0 * fRecC0[0];
266 float fRec3 = fmax(
fConst0, fabsf(fTemp1));
267 int iTemp1 = int((iRecb1[1] < 4096));
268 fRecb0[0] = ((iTemp1)?fmax(fRecb0[1], fRec3):fRec3);
269 iRecb1[0] = ((iTemp1)?(1 + iRecb1[1]):1);
270 fRecb2[0] = ((iTemp1)?fRecb2[1]:fRecb0[1]);
271 fbargraph0 = fRecb2[0];
275 fRec1[IOTA] = fTemp1;
277 fRec0[IOTA] = fTemp1;
297 fRecb2[1] = fRecb2[0];
298 iRecb1[1] = iRecb1[0];
299 fRecb0[1] = fRecb0[0];
300 fRecC0[1] = fRecC0[0];
304 void __rt_func SCapture::compute_static(
int count,
float *input0,
float *output0,
PluginDef *p)
309 void always_inline SCapture::compute_st(
int count,
float *input0,
float *input1,
float *output0,
float *output1)
311 if (err) fcheckbox0 = 0.0;
312 int iSlow0 = int(fcheckbox0);
313 fcheckbox1 = int(fRecb2[0]);
314 float fSlow0 = (0.0010000000000000009f * powf(10,(0.05f *
fslider0)));
315 for (
int i=0; i<count; i++) {
316 float fTemp0 = (float)input0[i];
317 float fTemp1 = (float)input1[i];
318 fRecC0[0] = (fSlow0 + (0.999f * fRecC0[1]));
319 float fTemp2 = fTemp0 * fRecC0[0];
320 float fTemp3 = fTemp1 * fRecC0[0];
322 float fRec3 = fmax(
fConst0,fmax(fabsf(fTemp2),fabsf(fTemp3)));
323 int iTemp1 = int((iRecb1[1] < 4096));
324 fRecb0[0] = ((iTemp1)?fmax(fRecb0[1], fRec3):fRec3);
325 iRecb1[0] = ((iTemp1)?(1 + iRecb1[1]):1);
326 fRecb2[0] = ((iTemp1)?fRecb2[1]:fRecb0[1]);
327 fbargraph0 = fRecb2[0];
331 fRec1[IOTA] = fTemp2;
332 fRec1[IOTA+1] = fTemp3;
334 fRec0[IOTA] = fTemp2;
335 fRec0[IOTA+1] = fTemp3;
356 fRecb2[1] = fRecb2[0];
357 iRecb1[1] = iRecb1[0];
358 fRecb0[1] = fRecb0[0];
359 fRecC0[1] = fRecC0[0];
363 void SCapture::compute_static_st(
int count,
float *input0,
float *input1,
float *output0,
float *output1,
PluginDef *p)
365 static_cast<SCapture*
>(p)->compute_st(count, input0, input1, output0, output1);
368 int SCapture::register_par(
const ParamReg& reg)
370 static const value_pair fformat_values[] = {{
"wav"},{
"ogg"},{
"w64"},{0}};
373 reg.
registerVar(
"recorder.rec",
"",
"B",
N_(
"Record files to ~/gxrecord/"),&fcheckbox0, 0.0, 0.0, 1.0, 1.0);
374 reg.
registerVar(
"recorder.gain",
"",
"S",
N_(
"Record gain control"),&
fslider0, 0.0f, -7e+01f, 4.0f, 0.1f);
378 reg.
registerEnumVar(
"st_recorder.file",
"",
"S",
N_(
"select file format"),fformat_values,&
fformat, 0.0, 0.0, 2.0, 1.0);
379 reg.
registerVar(
"st_recorder.rec",
"",
"B",
N_(
"Record files to ~/gxrecord/"),&fcheckbox0, 0.0, 0.0, 1.0, 1.0);
380 reg.
registerVar(
"st_recorder.gain",
"",
"S",
N_(
"Record gain control"),&
fslider0, 0.0f, -7e+01f, 4.0f, 0.1f);
388 int SCapture::register_params_static(
const ParamReg& reg)
393 const char *SCapture::glade_def =
"\
394 <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
396 <requires lib=\"gtk+\" version=\"2.20\"/>\n\
397 <!-- interface-requires gxwidgets 0.0 -->\n\
398 <!-- interface-naming-policy project-wide -->\n\
399 <object class=\"GtkWindow\" id=\"window1\">\n\
400 <property name=\"can_focus\">False</property>\n\
402 <object class=\"GtkVBox\" id=\"vbox1\">\n\
403 <property name=\"visible\">True</property>\n\
404 <property name=\"can_focus\">False</property>\n\
406 <object class=\"GtkHBox\" id=\"rackbox\">\n\
407 <property name=\"visible\">True</property>\n\
408 <property name=\"can_focus\">False</property>\n\
409 <property name=\"spacing\">4</property>\n\
411 <object class=\"GtkHBox\" id=\"hbox1\">\n\
412 <property name=\"visible\">True</property>\n\
413 <property name=\"can_focus\">False</property>\n\
414 <property name=\"spacing\">10</property>\n\
416 <object class=\"GtkTable\" id=\"table1\">\n\
417 <property name=\"visible\">True</property>\n\
418 <property name=\"can_focus\">False</property>\n\
419 <property name=\"n_rows\">5</property>\n\
420 <property name=\"n_columns\">5</property>\n\
421 <property name=\"row_spacing\">5</property>\n\
429 <object class=\"GtkVBox\" id=\"vbox2\">\n\
430 <property name=\"visible\">True</property>\n\
431 <property name=\"can_focus\">False</property>\n\
433 <object class=\"GtkLabel\" id=\"label1:rack_label\">\n\
434 <property name=\"visible\">True</property>\n\
435 <property name=\"can_focus\">False</property>\n\
436 <property name=\"label\" translatable=\"yes\">label</property>\n\
439 <property name=\"expand\">False</property>\n\
440 <property name=\"fill\">False</property>\n\
441 <property name=\"position\">0</property>\n\
445 <object class=\"GxMidKnob\" id=\"gxbigknob1\">\n\
446 <property name=\"visible\">True</property>\n\
447 <property name=\"can_focus\">True</property>\n\
448 <property name=\"receives_default\">True</property>\n\
449 <property name=\"var_id\">recorder.gain</property>\n\
450 <property name=\"label_ref\">label1:rack_label</property>\n\
453 <property name=\"expand\">False</property>\n\
454 <property name=\"fill\">False</property>\n\
455 <property name=\"position\">1</property>\n\
460 <property name=\"left_attach\">4</property>\n\
461 <property name=\"right_attach\">5</property>\n\
462 <property name=\"bottom_attach\">5</property>\n\
466 <object class=\"GtkHBox\" id=\"hbox5\">\n\
467 <property name=\"visible\">True</property>\n\
468 <property name=\"can_focus\">False</property>\n\
473 <object class=\"GtkHBox\" id=\"hbox6\">\n\
474 <property name=\"visible\">True</property>\n\
475 <property name=\"can_focus\">False</property>\n\
477 <object class=\"GxSelector\" id=\"gxselector1\">\n\
478 <property name=\"visible\">True</property>\n\
479 <property name=\"can_focus\">True</property>\n\
480 <property name=\"receives_default\">True</property>\n\
481 <property name=\"var_id\">recorder.file</property>\n\
484 <property name=\"expand\">True</property>\n\
485 <property name=\"fill\">True</property>\n\
486 <property name=\"position\">0</property>\n\
491 <property name=\"expand\">True</property>\n\
492 <property name=\"fill\">True</property>\n\
493 <property name=\"position\">1</property>\n\
498 <property name=\"left_attach\">2</property>\n\
499 <property name=\"right_attach\">3</property>\n\
500 <property name=\"top_attach\">3</property>\n\
501 <property name=\"bottom_attach\">4</property>\n\
505 <object class=\"GtkHBox\" id=\"hbox9\">\n\
506 <property name=\"visible\">True</property>\n\
507 <property name=\"can_focus\">False</property>\n\
513 <property name=\"right_attach\">4</property>\n\
514 <property name=\"bottom_attach\">3</property>\n\
515 <property name=\"y_padding\">20</property>\n\
519 <object class=\"GxFastMeter\" id=\"gxfastmeter1\">\n\
520 <property name=\"visible\">True</property>\n\
521 <property name=\"can_focus\">False</property>\n\
522 <property name=\"hold\">120</property>\n\
523 <property name=\"dimen\">3</property>\n\
524 <property name=\"horiz\">True</property>\n\
525 <property name=\"type\">1</property>\n\
526 <property name=\"var_id\">recorder.v1</property>\n\
529 <property name=\"left_attach\">1</property>\n\
530 <property name=\"right_attach\">3</property>\n\
531 <property name=\"top_attach\">4</property>\n\
532 <property name=\"bottom_attach\">5</property>\n\
533 <property name=\"y_options\">GTK_EXPAND</property>\n\
537 <object class=\"GtkHBox\" id=\"hbox7\">\n\
538 <property name=\"visible\">True</property>\n\
539 <property name=\"can_focus\">False</property>\n\
541 <object class=\"GxSwitch\" id=\"gxfswitch3\">\n\
542 <property name=\"visible\">True</property>\n\
543 <property name=\"can_focus\">False</property>\n\
544 <property name=\"receives_default\">False</property>\n\
545 <property name=\"relief\">none</property>\n\
546 <property name=\"var_id\">recorder.clip</property>\n\
547 <property name=\"base_name\">led</property>\n\
550 <property name=\"expand\">False</property>\n\
551 <property name=\"fill\">False</property>\n\
552 <property name=\"position\">0</property>\n\
556 <object class=\"GtkHBox\" id=\"hbox8\">\n\
557 <property name=\"visible\">True</property>\n\
558 <property name=\"can_focus\">False</property>\n\
564 <property name=\"expand\">True</property>\n\
565 <property name=\"fill\">True</property>\n\
566 <property name=\"position\">1</property>\n\
571 <property name=\"left_attach\">3</property>\n\
572 <property name=\"right_attach\">4</property>\n\
573 <property name=\"top_attach\">4</property>\n\
574 <property name=\"bottom_attach\">5</property>\n\
578 <object class=\"GtkHBox\" id=\"hbox10\">\n\
579 <property name=\"visible\">True</property>\n\
580 <property name=\"can_focus\">False</property>\n\
586 <property name=\"top_attach\">4</property>\n\
587 <property name=\"bottom_attach\">5</property>\n\
591 <object class=\"GtkHBox\" id=\"hbox2\">\n\
592 <property name=\"visible\">True</property>\n\
593 <property name=\"can_focus\">False</property>\n\
595 <object class=\"GxSwitch\" id=\"gxfswitch1\">\n\
596 <property name=\"visible\">True</property>\n\
597 <property name=\"can_focus\">True</property>\n\
598 <property name=\"receives_default\">True</property>\n\
599 <property name=\"var_id\">recorder.rec</property>\n\
600 <property name=\"base_name\">rbutton</property>\n\
603 <property name=\"expand\">True</property>\n\
604 <property name=\"fill\">True</property>\n\
605 <property name=\"position\">0</property>\n\
609 <object class=\"GtkHBox\" id=\"hbox4\">\n\
610 <property name=\"visible\">True</property>\n\
611 <property name=\"can_focus\">False</property>\n\
617 <property name=\"expand\">True</property>\n\
618 <property name=\"fill\">True</property>\n\
619 <property name=\"position\">1</property>\n\
624 <property name=\"left_attach\">1</property>\n\
625 <property name=\"right_attach\">2</property>\n\
626 <property name=\"top_attach\">3</property>\n\
627 <property name=\"bottom_attach\">4</property>\n\
628 <property name=\"y_padding\">16</property>\n\
633 <property name=\"expand\">True</property>\n\
634 <property name=\"fill\">True</property>\n\
635 <property name=\"padding\">5</property>\n\
636 <property name=\"position\">0</property>\n\
641 <property name=\"expand\">True</property>\n\
642 <property name=\"fill\">True</property>\n\
643 <property name=\"padding\">5</property>\n\
644 <property name=\"pack_type\">end</property>\n\
645 <property name=\"position\">0</property>\n\
650 <property name=\"expand\">True</property>\n\
651 <property name=\"fill\">False</property>\n\
652 <property name=\"position\">0</property>\n\
656 <object class=\"GtkHBox\" id=\"minibox\">\n\
657 <property name=\"visible\">True</property>\n\
658 <property name=\"can_focus\">False</property>\n\
659 <property name=\"spacing\">10</property>\n\
661 <object class=\"GxSwitch\" id=\"gxfswitch2\">\n\
662 <property name=\"visible\">True</property>\n\
663 <property name=\"can_focus\">True</property>\n\
664 <property name=\"receives_default\">True</property>\n\
665 <property name=\"var_id\">recorder.rec</property>\n\
666 <property name=\"base_name\">rbutton</property>\n\
669 <property name=\"expand\">False</property>\n\
670 <property name=\"fill\">False</property>\n\
671 <property name=\"position\">0</property>\n\
675 <object class=\"GxHSlider\" id=\"gxhslider1\">\n\
676 <property name=\"visible\">True</property>\n\
677 <property name=\"can_focus\">True</property>\n\
678 <property name=\"receives_default\">True</property>\n\
679 <property name=\"round_digits\">0</property>\n\
680 <property name=\"var_id\">recorder.gain</property>\n\
681 <property name=\"show_value\">False</property>\n\
682 <property name=\"value_position\">right</property>\n\
683 <property name=\"value_xalign\">0.52000000000000002</property>\n\
684 <property name=\"label_ref\">label0:rack_label</property>\n\
687 <property name=\"expand\">False</property>\n\
688 <property name=\"fill\">False</property>\n\
689 <property name=\"position\">1</property>\n\
693 <object class=\"GtkLabel\" id=\"label0:rack_label\">\n\
694 <property name=\"visible\">True</property>\n\
695 <property name=\"can_focus\">False</property>\n\
696 <property name=\"xalign\">0</property>\n\
697 <property name=\"label\" translatable=\"yes\">Level</property>\n\
700 <property name=\"expand\">False</property>\n\
701 <property name=\"fill\">False</property>\n\
702 <property name=\"position\">2</property>\n\
706 <object class=\"GxSwitch\" id=\"gxfswitch4\">\n\
707 <property name=\"visible\">True</property>\n\
708 <property name=\"can_focus\">False</property>\n\
709 <property name=\"receives_default\">False</property>\n\
710 <property name=\"relief\">none</property>\n\
711 <property name=\"var_id\">recorder.clip</property>\n\
712 <property name=\"base_name\">led</property>\n\
715 <property name=\"expand\">False</property>\n\
716 <property name=\"fill\">False</property>\n\
717 <property name=\"position\">3</property>\n\
722 <property name=\"expand\">False</property>\n\
723 <property name=\"fill\">False</property>\n\
724 <property name=\"position\">1</property>\n\
733 const char *SCapture::glade_def_st =
"\
734 <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
736 <requires lib=\"gtk+\" version=\"2.20\"/>\n\
737 <!-- interface-requires gxwidgets 0.0 -->\n\
738 <!-- interface-naming-policy project-wide -->\n\
739 <object class=\"GtkWindow\" id=\"window1\">\n\
740 <property name=\"can_focus\">False</property>\n\
742 <object class=\"GtkVBox\" id=\"vbox1\">\n\
743 <property name=\"visible\">True</property>\n\
744 <property name=\"can_focus\">False</property>\n\
746 <object class=\"GtkHBox\" id=\"rackbox\">\n\
747 <property name=\"visible\">True</property>\n\
748 <property name=\"can_focus\">False</property>\n\
749 <property name=\"spacing\">4</property>\n\
751 <object class=\"GtkHBox\" id=\"hbox1\">\n\
752 <property name=\"visible\">True</property>\n\
753 <property name=\"can_focus\">False</property>\n\
754 <property name=\"spacing\">10</property>\n\
756 <object class=\"GtkTable\" id=\"table1\">\n\
757 <property name=\"visible\">True</property>\n\
758 <property name=\"can_focus\">False</property>\n\
759 <property name=\"n_rows\">5</property>\n\
760 <property name=\"n_columns\">5</property>\n\
761 <property name=\"row_spacing\">5</property>\n\
769 <object class=\"GtkVBox\" id=\"vbox2\">\n\
770 <property name=\"visible\">True</property>\n\
771 <property name=\"can_focus\">False</property>\n\
773 <object class=\"GtkLabel\" id=\"label1:rack_label\">\n\
774 <property name=\"visible\">True</property>\n\
775 <property name=\"can_focus\">False</property>\n\
776 <property name=\"label\" translatable=\"yes\">label</property>\n\
779 <property name=\"expand\">False</property>\n\
780 <property name=\"fill\">False</property>\n\
781 <property name=\"position\">0</property>\n\
785 <object class=\"GxMidKnob\" id=\"gxbigknob1\">\n\
786 <property name=\"visible\">True</property>\n\
787 <property name=\"can_focus\">True</property>\n\
788 <property name=\"receives_default\">True</property>\n\
789 <property name=\"var_id\">st_recorder.gain</property>\n\
790 <property name=\"label_ref\">label1:rack_label</property>\n\
793 <property name=\"expand\">False</property>\n\
794 <property name=\"fill\">False</property>\n\
795 <property name=\"position\">1</property>\n\
800 <property name=\"left_attach\">4</property>\n\
801 <property name=\"right_attach\">5</property>\n\
802 <property name=\"bottom_attach\">5</property>\n\
806 <object class=\"GtkHBox\" id=\"hbox5\">\n\
807 <property name=\"visible\">True</property>\n\
808 <property name=\"can_focus\">False</property>\n\
813 <object class=\"GtkHBox\" id=\"hbox6\">\n\
814 <property name=\"visible\">True</property>\n\
815 <property name=\"can_focus\">False</property>\n\
817 <object class=\"GxSelector\" id=\"gxselector1\">\n\
818 <property name=\"visible\">True</property>\n\
819 <property name=\"can_focus\">True</property>\n\
820 <property name=\"receives_default\">True</property>\n\
821 <property name=\"var_id\">st_recorder.file</property>\n\
824 <property name=\"expand\">True</property>\n\
825 <property name=\"fill\">True</property>\n\
826 <property name=\"position\">0</property>\n\
831 <property name=\"expand\">True</property>\n\
832 <property name=\"fill\">True</property>\n\
833 <property name=\"position\">1</property>\n\
838 <property name=\"left_attach\">2</property>\n\
839 <property name=\"right_attach\">3</property>\n\
840 <property name=\"top_attach\">3</property>\n\
841 <property name=\"bottom_attach\">4</property>\n\
845 <object class=\"GtkHBox\" id=\"hbox9\">\n\
846 <property name=\"visible\">True</property>\n\
847 <property name=\"can_focus\">False</property>\n\
853 <property name=\"right_attach\">4</property>\n\
854 <property name=\"bottom_attach\">3</property>\n\
855 <property name=\"y_padding\">20</property>\n\
859 <object class=\"GxFastMeter\" id=\"gxfastmeter1\">\n\
860 <property name=\"visible\">True</property>\n\
861 <property name=\"can_focus\">False</property>\n\
862 <property name=\"hold\">120</property>\n\
863 <property name=\"dimen\">3</property>\n\
864 <property name=\"horiz\">True</property>\n\
865 <property name=\"type\">1</property>\n\
866 <property name=\"var_id\">st_recorder.v1</property>\n\
869 <property name=\"left_attach\">1</property>\n\
870 <property name=\"right_attach\">3</property>\n\
871 <property name=\"top_attach\">4</property>\n\
872 <property name=\"bottom_attach\">5</property>\n\
873 <property name=\"y_options\">GTK_EXPAND</property>\n\
877 <object class=\"GtkHBox\" id=\"hbox7\">\n\
878 <property name=\"visible\">True</property>\n\
879 <property name=\"can_focus\">False</property>\n\
881 <object class=\"GxSwitch\" id=\"gxfswitch3\">\n\
882 <property name=\"visible\">True</property>\n\
883 <property name=\"can_focus\">False</property>\n\
884 <property name=\"receives_default\">False</property>\n\
885 <property name=\"relief\">none</property>\n\
886 <property name=\"var_id\">st_recorder.clip</property>\n\
887 <property name=\"base_name\">led</property>\n\
890 <property name=\"expand\">False</property>\n\
891 <property name=\"fill\">False</property>\n\
892 <property name=\"position\">0</property>\n\
896 <object class=\"GtkHBox\" id=\"hbox8\">\n\
897 <property name=\"visible\">True</property>\n\
898 <property name=\"can_focus\">False</property>\n\
904 <property name=\"expand\">True</property>\n\
905 <property name=\"fill\">True</property>\n\
906 <property name=\"position\">1</property>\n\
911 <property name=\"left_attach\">3</property>\n\
912 <property name=\"right_attach\">4</property>\n\
913 <property name=\"top_attach\">4</property>\n\
914 <property name=\"bottom_attach\">5</property>\n\
918 <object class=\"GtkHBox\" id=\"hbox10\">\n\
919 <property name=\"visible\">True</property>\n\
920 <property name=\"can_focus\">False</property>\n\
926 <property name=\"top_attach\">4</property>\n\
927 <property name=\"bottom_attach\">5</property>\n\
931 <object class=\"GtkHBox\" id=\"hbox2\">\n\
932 <property name=\"visible\">True</property>\n\
933 <property name=\"can_focus\">False</property>\n\
935 <object class=\"GxSwitch\" id=\"gxfswitch1\">\n\
936 <property name=\"visible\">True</property>\n\
937 <property name=\"can_focus\">True</property>\n\
938 <property name=\"receives_default\">True</property>\n\
939 <property name=\"var_id\">st_recorder.rec</property>\n\
940 <property name=\"base_name\">rbutton</property>\n\
943 <property name=\"expand\">True</property>\n\
944 <property name=\"fill\">True</property>\n\
945 <property name=\"position\">0</property>\n\
949 <object class=\"GtkHBox\" id=\"hbox4\">\n\
950 <property name=\"visible\">True</property>\n\
951 <property name=\"can_focus\">False</property>\n\
957 <property name=\"expand\">True</property>\n\
958 <property name=\"fill\">True</property>\n\
959 <property name=\"position\">1</property>\n\
964 <property name=\"left_attach\">1</property>\n\
965 <property name=\"right_attach\">2</property>\n\
966 <property name=\"top_attach\">3</property>\n\
967 <property name=\"bottom_attach\">4</property>\n\
968 <property name=\"y_padding\">16</property>\n\
973 <property name=\"expand\">True</property>\n\
974 <property name=\"fill\">True</property>\n\
975 <property name=\"padding\">5</property>\n\
976 <property name=\"position\">0</property>\n\
981 <property name=\"expand\">True</property>\n\
982 <property name=\"fill\">True</property>\n\
983 <property name=\"padding\">5</property>\n\
984 <property name=\"pack_type\">end</property>\n\
985 <property name=\"position\">0</property>\n\
990 <property name=\"expand\">True</property>\n\
991 <property name=\"fill\">False</property>\n\
992 <property name=\"position\">0</property>\n\
996 <object class=\"GtkHBox\" id=\"minibox\">\n\
997 <property name=\"visible\">True</property>\n\
998 <property name=\"can_focus\">False</property>\n\
999 <property name=\"spacing\">10</property>\n\
1001 <object class=\"GxSwitch\" id=\"gxfswitch2\">\n\
1002 <property name=\"visible\">True</property>\n\
1003 <property name=\"can_focus\">True</property>\n\
1004 <property name=\"receives_default\">True</property>\n\
1005 <property name=\"var_id\">st_recorder.rec</property>\n\
1006 <property name=\"base_name\">rbutton</property>\n\
1009 <property name=\"expand\">False</property>\n\
1010 <property name=\"fill\">False</property>\n\
1011 <property name=\"position\">0</property>\n\
1015 <object class=\"GxHSlider\" id=\"gxhslider1\">\n\
1016 <property name=\"visible\">True</property>\n\
1017 <property name=\"can_focus\">True</property>\n\
1018 <property name=\"receives_default\">True</property>\n\
1019 <property name=\"round_digits\">0</property>\n\
1020 <property name=\"var_id\">st_recorder.gain</property>\n\
1021 <property name=\"show_value\">False</property>\n\
1022 <property name=\"value_position\">right</property>\n\
1023 <property name=\"value_xalign\">0.52000000000000002</property>\n\
1024 <property name=\"label_ref\">label0:rack_label</property>\n\
1027 <property name=\"expand\">False</property>\n\
1028 <property name=\"fill\">False</property>\n\
1029 <property name=\"position\">1</property>\n\
1033 <object class=\"GtkLabel\" id=\"label0:rack_label\">\n\
1034 <property name=\"visible\">True</property>\n\
1035 <property name=\"can_focus\">False</property>\n\
1036 <property name=\"xalign\">0</property>\n\
1037 <property name=\"label\" translatable=\"yes\">Level</property>\n\
1040 <property name=\"expand\">False</property>\n\
1041 <property name=\"fill\">False</property>\n\
1042 <property name=\"position\">2</property>\n\
1046 <object class=\"GxSwitch\" id=\"gxfswitch4\">\n\
1047 <property name=\"visible\">True</property>\n\
1048 <property name=\"can_focus\">False</property>\n\
1049 <property name=\"receives_default\">False</property>\n\
1050 <property name=\"relief\">none</property>\n\
1051 <property name=\"var_id\">st_recorder.clip</property>\n\
1052 <property name=\"base_name\">led</property>\n\
1055 <property name=\"expand\">False</property>\n\
1056 <property name=\"fill\">False</property>\n\
1057 <property name=\"position\">3</property>\n\
1062 <property name=\"expand\">False</property>\n\
1063 <property name=\"fill\">False</property>\n\
1064 <property name=\"position\">1</property>\n\
1073 inline int SCapture::load_ui_f(
const UiBuilder& b,
int form)
1086 #define PARAM(p) ("recorder" "." p)
1102 #define PARAM(p) ("st_recorder" "." p)
1123 int SCapture::load_ui_f_static(
const UiBuilder& b,
int form)
1128 void SCapture::del_instance(
PluginDef *p)