1#
2# Controls via sliders for csound in tcl/tk
3# John ffitch 2000 May 14
4#  Modified for stdin/out use May 21
5#  2001 January: added text boxes
6#
7
8# Create a new slider
9proc displayslider num {
10    global lastsl
11    set sl ".s$num"
12    set ex [winfo exists $sl]
13    if {$ex == 0} {
14        scale $sl -label Control$num -from 0 -to 127 -orient horizontal -length 10c -command "newval $num"
15        pack $sl -after $lastsl
16        set lastsl $sl
17    }
18}
19
20proc newval {num val} {
21    puts "$num $val"
22}
23
24# Output controls
25
26proc setvalue {which val} {
27    set sl ".s$which"
28    displayslider $which
29    $sl set $val
30}
31
32proc setmin {which val} {
33    set sl ".s$which"
34    displayslider $which
35    $sl configure -from $val
36}
37
38proc setmax {which val} {
39    set sl ".s$which"
40    displayslider $which
41    $sl configure -to $val
42}
43
44proc setlab {which val} {
45    set sl ".s$which"
46    displayslider $which
47    $sl configure -label $val
48}
49
50# AND NOW THE BUTTONS AND CHECKS
51
52# Create a new button
53proc displaybutton num {
54    global lastb
55    set bt ".b$num"
56    set ex [winfo exists $bt]
57    if {$ex == 0} {
58        button $bt -text Button$num -command "buttonpush $num"
59        pack $bt -pady 2m -after $lastb
60        set lastb $bt
61    }
62}
63
64proc buttonpush num {
65    puts "0 $num"
66}
67
68# Create a new check
69proc displaycheck num {
70    global xxx
71    set ch ".x$num"
72    set ex [winfo exists $ch]
73    if {$ex == 0} {
74        checkbutton $ch -text Check$num -variable xxx -command "checkpush $num"
75        pack $ch -pady 2m
76    }
77}
78
79proc checkpush num {
80    global xxx
81    puts "-$num $xxx"
82}
83
84proc settext {num txt} {
85    global lasttxt
86    set wl ".flashtxt$num"
87    set ex [winfo exists $wl]
88    if {$ex == 0} {
89        toplevel $wl
90        message $wl.msg -text $txt -width 10c -justify left -relief raised -bd 2
91        pack $wl.msg
92    } else {
93        $wl.msg configure -text $txt
94    }
95}
96
97proc deltext num {
98    set wl ".txt$num"
99    destroy $wl
100}
101
102# ending
103
104message .title -width 10c -justify center -font -*-times-bold-r-normal--*-180-*-*-*-*-*-* -text "Csound Controls"
105pack .title
106set lastsl .title
107message .title1 -width 10c -justify center -font -*-times-bold-r-normal--*-100-*-*-*-*-*-* -text " "
108pack .title1
109set lastb .title1
110#displayslider 1
111# # # Experimental
112#  displayslider 2
113#  displaybutton 1
114#  displayslider 3
115#  displaybutton 2
116#  displaycheck 1
117# # # End
118
119puts "Ready"
120