max v2; #N vpatcher 321 203 821 570; #P newex 604 229 68 196617 r set_method; #P newex 600 210 72 196617 r set_function; #P user fpic 96 304 36 39 leologo.pct 0 0 0 0. 0 0 0; #P newex 600 190 72 196617 r get_function; #P user umenu 337 104 142 1376329 1 64 126 0; #X add Audio Levels; #X add MIDI Control; #X add Rehearsals; #X add Preferences; #P bpatcher 217 143 263 183 0 0 functions 2; #N vpatcher 40 55 859 620; #P button 708 465 15 0; #P message 708 487 54 196617 \; dsp status; #P message 449 414 179 1376270 Open DSP Status Window; #P newex 709 408 45 196617 loadbang; #P newex 709 428 55 196617 v as_state; #P newex 709 386 46 196617 r set_as; #P newex 709 364 60 196617 s as_enable; #P user umenu 443 387 186 1376329 1 64 409 0; #X add Auto Save Enabled; #X add Auto Save Disabled; #P newex 709 332 80 196617 s restore_prefs; #P newex 711 301 65 196617 s save_prefs; #P message 462 360 148 1376274 Restore Defaults; #P message 440 333 190 1376274 Save Current Settings; #P comment 455 309 150 1376274 Set Preferences; #P newex 312 431 27 196617 + 1; #P user umenu 126 402 40 1376353 1 64 430 0; #X add 1; #X add 2; #X add 3; #X add 4; #X add 5; #X add 6; #X add 7; #X add 8; #X add 9; #X add 10; #X add 11; #X add 12; #X add 13; #X add 14; #X add 15; #X add 16; #X add 17; #X add 18; #X add 19; #X add 20; #X add 21; #P newex 312 451 45 196617 s reh_no; #P comment 75 377 156 1376274 Rehearsal Tools; #P comment 80 437 134 1376270 Select Rehearsal Number to start from; #P newex 711 248 45 196617 loadbang; #P newex 711 272 62 196617 v midi_chan; #P newex 711 137 63 196617 s clear_map; #P message 434 114 126 1376274 Clear Mapping; #P newex 698 50 81 196617 r set_midi_chan; #P newex 698 29 60 196617 r midi_note; #P newex 713 70 61 196617 s midi_chan; #P newex 712 90 59 196617 s map_note; #P newex 712 111 68 196617 s map_enable; #P newex 711 186 74 196617 s restore_map; #P newex 711 162 61 196617 s save_map; #P message 434 164 148 1376274 Restore Defaults; #P message 434 139 124 1376274 Save Mapping; #P user umenu 567 59 36 1376337 1 64 83 0; #X add 1; #X add 2; #X add 3; #X add 4; #X add 5; #X add 6; #X add 7; #X add 8; #X add 9; #X add 10; #X add 11; #X add 12; #X add 13; #X add 14; #X add 15; #X add 16; #P user umenu 434 89 155 1376329 1 64 111 0; #X add Mapping Disabled; #X add Mapping Enabled; #P number 434 59 51 20 0 0 0 21 0 0 0 221 221 221 222 222 222 0 0 0; #P user umenu 503 59 37 1376337 1 64 83 0; #X add 1; #X add 2; #X add 3; #X add 4; #X add 5; #X add 6; #X add 7; #X add 8; #X add 9; #X add 10; #X add 11; #X add 12; #X add 13; #X add 14; #X add 15; #X add 16; #X add 17; #X add 18; #X add 19; #X add 20; #X add 21; #P comment 430 26 58 1376270 MIDI Note No; #P comment 497 26 50 1376270 Note to Map; #P comment 558 26 62 1376270 Set MIDI Channel; #P newex 306 148 71 196617 receive~ lev4; #P newex 306 127 71 196617 receive~ lev3; #P newex 306 106 71 196617 receive~ lev2; #P newex 306 85 71 196617 receive~ lev1; #N thispatcher; #Q end; #P newobj 306 60 59 196617 thispatcher; #P inlet 306 39 15 0; #P comment 204 162 18 1376276 4; #P comment 149 162 18 1376276 3; #P comment 95 162 18 1376276 2; #P user meter~ 205 52 223 155 100 0 168 0 104 104 104 255 153 0 255 0 0; #P user meter~ 150 52 168 155 100 0 168 0 104 104 104 255 153 0 255 0 0; #P user meter~ 95 52 113 155 100 0 168 0 104 104 104 255 153 0 255 0 0; #P user meter~ 40 52 58 155 100 0 168 0 104 104 104 255 153 0 255 0 0; #P comment 65 24 138 1376276 Output Levels; #P comment 39 162 18 1376276 1; #P hidden connect 11 0 2 0; #P hidden connect 12 0 3 0; #P hidden connect 13 0 4 0; #P hidden connect 14 0 5 0; #P connect 9 0 10 0; #P hidden connect 38 0 39 0; #P connect 39 0 37 0; #P hidden connect 29 0 19 0; #P hidden connect 48 0 45 0; #P hidden connect 47 0 45 0; #P hidden connect 33 0 21 0; #P hidden connect 30 0 21 0; #P hidden connect 50 0 52 0; #P connect 52 0 51 0; #P hidden connect 42 0 44 0; #P hidden connect 45 0 46 0; #P connect 49 0 48 0; #P hidden connect 31 0 32 0; #P hidden connect 22 0 24 0; #P hidden connect 23 0 25 0; #P connect 34 0 33 0; #P hidden connect 41 0 43 0; #P hidden connect 18 0 27 0; #P hidden connect 20 0 26 0; #P hidden connect 21 0 28 0; #P pop; #BP pop 0; #P user fpic 349 21 131 44 hhlogo.pct 0 0 0 0. 0 0 0; #N vpatcher 347 123 731 364; #P newex 301 154 55 196617 send~ lev4; #P newex 261 174 55 196617 send~ lev3; #P newex 222 154 55 196617 send~ lev2; #P newex 181 173 55 196617 send~ lev1; #N vpatcher 50 40 289 272; #P inlet 193 39 15 0; #P newex 125 93 44 196617 hilbert~; #P newex 125 128 78 196617 complex-mod~; #P newex 21 128 78 196617 complex-mod~; #P newex 21 93 44 196617 hilbert~; #P outlet 21 186 15 0; #P inlet 89 39 15 0; #P inlet 21 38 15 0; #P connect 0 0 3 0; #P connect 3 0 4 0; #P connect 4 0 2 0; #P connect 5 0 2 0; #P connect 3 1 4 1; #P connect 1 0 4 2; #P connect 0 0 6 0; #P connect 6 0 5 0; #P connect 6 1 5 1; #P connect 7 0 5 2; #P pop; #P newobj 253 131 34 196617 p mod; #N vpatcher 50 40 289 272; #P inlet 193 39 15 0; #P newex 125 93 44 196617 hilbert~; #P newex 125 128 78 196617 complex-mod~; #P newex 21 128 78 196617 complex-mod~; #P newex 21 93 44 196617 hilbert~; #P outlet 21 186 15 0; #P inlet 89 39 15 0; #P inlet 21 38 15 0; #P connect 0 0 3 0; #P connect 3 0 4 0; #P connect 4 0 2 0; #P connect 5 0 2 0; #P connect 3 1 4 1; #P connect 1 0 4 2; #P connect 0 0 6 0; #P connect 6 0 5 0; #P connect 6 1 5 1; #P connect 7 0 5 2; #P pop; #P newobj 293 131 34 196617 p mod; #N vpatcher 50 40 289 272; #P inlet 193 39 15 0; #P newex 125 93 44 196617 hilbert~; #P newex 125 128 78 196617 complex-mod~; #P newex 21 128 78 196617 complex-mod~; #P newex 21 93 44 196617 hilbert~; #P outlet 21 186 15 0; #P inlet 89 39 15 0; #P inlet 21 38 15 0; #P connect 0 0 3 0; #P connect 3 0 4 0; #P connect 4 0 2 0; #P connect 5 0 2 0; #P connect 3 1 4 1; #P connect 1 0 4 2; #P connect 0 0 6 0; #P connect 6 0 5 0; #P connect 6 1 5 1; #P connect 7 0 5 2; #P pop; #P newobj 213 131 34 196617 p mod; #N vpatcher 50 40 289 272; #P inlet 193 39 15 0; #P newex 125 93 44 196617 hilbert~; #P newex 125 128 78 196617 complex-mod~; #P newex 21 128 78 196617 complex-mod~; #P newex 21 93 44 196617 hilbert~; #P outlet 21 186 15 0; #P inlet 89 39 15 0; #P inlet 21 38 15 0; #P comment 62 181 145 196617 "Adder" and "Subtractor"; #P connect 1 0 4 0; #P connect 4 0 5 0; #P connect 5 0 3 0; #P connect 6 0 3 0; #P connect 4 1 5 1; #P connect 2 0 5 2; #P connect 1 0 7 0; #P connect 7 0 6 0; #P connect 7 1 6 1; #P connect 8 0 6 2; #P pop; #P newobj 173 131 34 196617 p mod; #P newex 18 76 27 196617 - 0.; #P message 18 57 29 196617 0 \$1; #P newex 173 195 132 196617 dac~ 1 2 3 4; #P newex 173 27 130 196617 adc~ 1 2 3 4; #P newex 18 24 50 196618 r freq; #P comment 14 179 100 196617 Four Hilbert transform "ring modulators".; #P connect 1 0 4 0; #P connect 4 0 5 0; #P connect 2 0 6 0; #P connect 6 0 3 0; #P connect 6 0 10 0; #P connect 1 0 6 1; #P connect 5 0 6 2; #P connect 2 1 7 0; #P connect 7 0 3 1; #P connect 7 0 11 0; #P connect 1 0 7 1; #P connect 5 0 7 2; #P connect 2 2 9 0; #P connect 9 0 3 2; #P connect 9 0 12 0; #P connect 1 0 9 1; #P connect 5 0 9 2; #P connect 2 3 8 0; #P connect 8 0 3 3; #P connect 8 0 13 0; #P connect 1 0 8 1; #P connect 5 0 8 2; #P pop; #P newobj 595 169 77 196618 patcher audio; #P message 190 104 90 1376274 Ready; #P flonum 76 227 90 24 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P number 16 227 54 24 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P number 120 150 64 24 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P number 62 150 52 24 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P number 3 150 53 24 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 355 88 97 1376270 Select Fuction; #P user umenu 25 104 135 1376328 1 64 126 0; #X add Space Bar; #X add MIDI Trigger; #X add MIDI Notes; #N vpatcher 23 457 435 667; #P number 338 82 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 252 170 72 196617 s get_function; #P message 252 87 53 196617 offset 0 0; #P message 297 143 85 196617 offset -420 -290; #P message 282 125 81 196617 offset -35 -332; #P message 161 79 72 196617 \; key_enable 0 \; trig_enable 0 \; midi_enable 1; #P message 86 79 72 196617 \; key_enable 0 \; trig_enable 1 \; midi_enable 0; #P message 11 79 72 196617 \; key_enable 1 \; trig_enable 0 \; midi_enable 0; #P newex 252 54 71 196617 select 0 1 2 3; #P newex 11 54 236 196617 select 0 1 2; #P newex 11 29 48 196617 r method; #P newex 252 28 52 196617 r function; #P comment 12 145 223 196617 This module creates the commands required by the front panel menus "Select Control Method" and "Select Function".; #P message 267 107 81 196617 offset -405 -11; #P connect 3 0 4 0; #P connect 4 0 6 0; #P connect 4 1 7 0; #P connect 4 2 8 0; #P connect 2 0 5 0; #P connect 5 0 11 0; #P connect 10 0 12 0; #P connect 9 0 12 0; #P connect 11 0 12 0; #P connect 0 0 12 0; #P connect 5 1 0 0; #P connect 5 2 9 0; #P connect 5 3 10 0; #P pop; #P newobj 571 91 101 196617 patcher select_mode; #P comment 19 263 49 1376268 Note Number; #P comment 86 263 67 1376268 Frequency; #P newex 121 159 50 196618 r bar; #N vpatcher 599 60 1014 404; #P button 261 126 15 0; #P message 215 204 109 196617 write default_mapping; #P button 9 150 15 0; #P button 201 84 15 0; #P message 261 148 31 196617 clear; #P newex 261 103 63 196617 r clear_map; #P message 10 210 92 196617 read data_mapping; #P newex 48 81 27 196617 + 1; #P number 219 127 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 219 82 59 196617 r map_note; #P newex 9 126 74 196617 r restore_map; #P newex 201 62 61 196617 r save_map; #P number 48 102 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 112 99 35 196617 gate 2; #P newex 137 63 27 196617 gate; #P newex 112 257 35 196617 s freq; #P newex 54 257 51 196617 s note_no; #N coll freq_table; #P newobj 112 232 74 196617 coll freq_table; #P newex 48 61 68 196617 r map_enable; #P newex 82 24 69 196617 r midi_enable; #P message 9 171 104 196617 read default_mapping; #P message 201 186 95 196617 write data_mapping; #P newex 137 139 45 196617 pack 0 0; #P newex 219 103 27 196617 + 1; #P number 169 44 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 154 24 60 196617 r midi_note; #N coll data_mapping; #P newobj 112 207 88 196617 coll data_mapping; #P comment 30 282 281 196617 This module allows the performer to map any MIDI notes to the 21 frequencies. This is done using the front panel function "MIDI Control".; #P connect 17 0 25 0; #P connect 25 0 7 0; #P connect 9 0 20 0; #P connect 20 0 15 0; #P connect 1 0 11 0; #P connect 20 0 14 0; #P connect 23 0 1 0; #P connect 21 0 1 0; #P connect 5 0 1 0; #P connect 6 0 1 0; #P connect 7 0 1 0; #P connect 14 0 1 0; #P connect 26 0 1 0; #P connect 1 0 10 0; #P connect 10 0 12 0; #P connect 8 0 13 0; #P connect 13 0 14 1; #P connect 14 1 5 0; #P connect 2 0 13 1; #P connect 2 0 3 0; #P connect 4 0 5 1; #P connect 16 0 24 0; #P connect 24 0 6 0; #P connect 18 0 4 0; #P connect 4 0 19 0; #P connect 22 0 27 0; #P connect 27 0 23 0; #P pop; #P newobj 575 70 97 196618 patcher midi_map; #N vpatcher 249 42 529 319; #P newex 182 29 81 196617 r set_midi_chan; #P newex 101 72 27 196617 + 1; #P newex 182 54 62 196617 v midi_chan; #P newex 21 122 27 196617 gate; #P newex 82 98 29 196617 == 1; #P newex 101 26 61 196617 r midi_chan; #P newex 21 170 60 196617 s midi_note; #P newex 102 170 58 196617 s midi_trig; #P newex 21 148 49 196617 stripnote; #P newex 38 26 54 196617 notein; #P comment 13 204 203 1376266 This module receives MIDI input and routes it to the sequence driver \, or to MIDI note mapping \, whichever is set on the front panel menu.; #P connect 6 0 7 0; #P connect 7 0 2 0; #P connect 2 0 4 0; #P connect 1 0 7 1; #P connect 1 1 2 1; #P connect 1 2 6 0; #P connect 10 0 9 0; #P connect 5 0 9 0; #P connect 9 0 6 1; #P connect 2 0 3 0; #P connect 5 0 8 0; #P connect 10 0 8 0; #P pop; #P newobj 595 49 77 196618 patcher midi; #N vpatcher 375 43 625 483; #P message 132 176 101 196617 write data_sequence; #P message 137 154 69 196617 goto \$1 \, next; #P number 149 203 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 136 69 58 196617 r midi_trig; #P message 137 112 95 196617 read data_sequence; #P newex 81 228 35 196617 s freq; #P newex 63 246 51 196617 s note_no; #P newex 27 282 40 196617 s ssect; #P newex 9 300 35 196617 s sect; #P newex 9 207 85 196617 unpack 0 0 0 0 0.; #N coll ; #P newobj 9 185 40 196617 coll; #P newex 64 67 65 196617 r trig_enable; #P newex 64 88 27 196617 gate; #P newex 64 46 65 196617 r key_enable; #P newex 9 89 27 196617 gate; #P newex 9 22 50 196618 key; #P newex 137 89 50 196618 r initq; #P message 9 114 50 196618 next; #P newex 9 45 50 196618 select 32; #P comment 22 320 192 1376266 This module contains a 'coll' holding the sequence of pitch numbers and frequencies \, together with bar \, section and subsection numbers \, which are sent to the indicators in the main window. Each event is triggered by a space-bar press \, or by an incoming MIDI note on \, whichever is selected on the front pane menu.; #P newex 45 264 31 196617 s bar; #P newex 137 132 37 196617 r qadv; #P connect 6 0 3 0; #P connect 8 0 7 0; #P connect 7 0 4 0; #P connect 9 0 4 0; #P connect 20 0 11 0; #P connect 4 0 11 0; #P connect 17 0 11 0; #P connect 21 0 11 0; #P connect 11 0 12 0; #P connect 12 0 13 0; #P connect 3 0 7 1; #P connect 12 1 14 0; #P connect 12 2 1 0; #P connect 12 3 15 0; #P connect 10 0 9 0; #P connect 18 0 9 1; #P connect 12 4 16 0; #P connect 5 0 17 0; #P connect 0 0 20 0; #P connect 11 1 19 0; #P pop; #P newobj 582 28 90 196618 patcher sequence; #N vpatcher 489 289 955 720; #P button 323 245 15 0; #P message 323 286 125 196617 write default_preferences; #P newex 128 262 40 196617 r prefs; #P button 205 203 15 0; #P newex 253 143 55 196617 v as_state; #P newex 253 123 45 196617 r set_as; #P newex 70 144 45 196617 split 0 2; #P toggle 223 165 15 0; #P newex 223 143 27 196617 != 1; #P newex 310 175 27 196617 gate; #P newex 327 155 51 196617 closebang; #P message 9 190 28 196617 next; #P newex 72 375 72 196617 s set_function; #P newex 20 393 68 196617 s set_method; #P newex 124 357 81 196617 s set_midi_chan; #P newex 176 339 45 196617 s set_as; #P newex 20 318 166 196617 gate 4; #P message 187 144 29 196617 4 \$1; #P message 124 144 29 196617 3 \$1; #P newex 124 123 61 196617 r midi_chan; #P newex 187 123 60 196617 r as_enable; #P message 70 165 29 196617 2 \$1; #P message 20 144 29 196617 1 \$1; #P newex 20 123 48 196617 r method; #P newex 70 123 52 196617 r function; #P newex 205 183 65 196617 r save_prefs; #P message 205 223 115 196617 write data_preferences; #P newex 323 223 80 196617 r restore_prefs; #P message 323 264 122 196617 read default_preferences; #N coll data_preferences; #P newobj 20 288 105 196617 coll data_preferences; #P message 11 59 94 196617 \; status set Startup \; initq bang \;; #P message 332 67 83 196617 \; map_enable 0 \; prefs dump \; dsp start \; status set Ready; #P newex 332 45 59 196617 delay 5000; #P comment 112 49 187 1376266 This module initialises the program by loading the preference file into coll preferences \, initialising the sequencer and starting the dsp.; #P newex 11 26 62 196618 loadbang; #P comment 332 134 100 196617 initialise dsp \, etc; #P comment 253 306 193 196617 The coll contains the system preferences. By default it is set to use sequence triggered by space bar \, show audio levels \, use MIDI channel 1 and have Auto Save of Preferences Enabled.; #P connect 2 0 6 0; #P connect 13 0 14 0; #P connect 8 0 7 0; #P connect 10 0 7 0; #P connect 25 0 7 0; #P connect 14 0 7 0; #P connect 15 0 7 0; #P connect 18 0 7 0; #P connect 19 0 7 0; #P connect 34 0 7 0; #P connect 35 0 7 0; #P connect 7 1 20 0; #P connect 20 0 23 0; #P connect 12 0 30 0; #P connect 30 0 15 0; #P connect 20 1 24 0; #P connect 17 0 18 0; #P connect 20 2 22 0; #P connect 7 0 20 1; #P connect 20 3 21 0; #P connect 16 0 19 0; #P connect 11 0 33 0; #P connect 33 0 10 0; #P connect 27 0 10 0; #P connect 31 0 28 0; #P connect 16 0 28 0; #P connect 28 0 29 0; #P connect 31 0 32 0; #P connect 28 0 27 0; #P connect 9 0 36 0; #P connect 36 0 8 0; #P connect 26 0 27 1; #P connect 2 0 4 0; #P connect 4 0 5 0; #P pop; #P newobj 589 129 83 196618 patcher startup; #P newex 16 233 54 196618 r note_no; #P newex 79 232 50 196618 r freq; #P comment 54 186 68 1376268 Subsection; #P comment 6 186 49 1376268 Section; #P comment 130 186 42 1376268 Bar No; #P newex 525 65 40 1376266 r status; #N vpatcher 50 40 450 346; #P comment 9 235 365 1376266 Bug reports and suggestions for improvements may be addressed to Lawrence Electronic Operations - leo@lcasserley.co.uk; #P comment 9 263 365 1376266 Lawrence Casserley - 9 February \, 2003.; #P comment 10 59 365 1376268 For inital performances in 1983 \, analogue ring modulators and a voltage controlled oscillator were controlled by a BCPL program on a Research Machines 380Z. When the piece was revived by Carol Morgan and John Palmer in 1996 \, the composer created a MAX patch to drive a Yamaha TX81Z to create the modulation frequencies. Later this was adapted into a dsp version in MAX/fts on the Ircam Signal Processing Workstation. This version was used for performances and a recording in 1997. A MAXmsp version for MacIntosh was created in 1999 \, utilising hilbert transform frequency shifters as modulators. The current program is based on that \, with improved user interface created for publication by Edition HH in 2003.; #P comment 11 31 365 1376274 VISTA CLARA - by Lawrence Casserley; #P comment 9 195 366 1376268 The program may be used with any audio interface with two to four inputs and outputs. If the MIDI control options are selected \, a MIDI interface and MIDI keyboard \, or other controller \, are required also.; #P pop; #P newobj 584 150 88 196617 patcher READ_ME; #N vpatcher 652 71 912 206; #P newex 58 28 45 196617 r reh_no; #P newex 58 51 27 196617 * 7; #P newex 58 73 27 196617 - 6; #P newex 58 95 37 196617 s qadv; #P comment 127 29 100 196617 Calculates bar no from rehearsal number and sends signal to sequence. Controlled by front panel function "Rehearsals".; #P connect 4 0 3 0; #P connect 3 0 2 0; #P connect 2 0 1 0; #P pop; #P newobj 587 110 85 196617 patcher rehearse; #P comment 2 61 235 1376268 MAX/msp program for MacOS 9.x; #P comment 2 42 115 1376274 HH30.M9v01; #P newex 3 161 50 196618 r sect; #P newex 64 159 50 196618 r ssect; #P comment 45 211 86 1376270 Modulation; #P comment 18 88 153 1376270 Select Control Method; #P comment 39 134 107 1376270 Sequence Data; #P comment 186 88 99 1376270 System Status; #P newex 47 105 48 196617 s method; #P newex 374 104 52 196617 s function; #P comment 2 22 322 1376274 Lawrence Casserley - Vista Clara; #P comment 1 315 100 1376266 Program Created by; #P comment 114 46 100 1376268 Preliminary; #P hidden connect 10 0 31 0; #P hidden connect 20 0 34 0; #P hidden connect 44 0 29 0; #P hidden connect 29 0 4 0; #P hidden connect 9 0 32 0; #P hidden connect 19 0 35 0; #P hidden connect 25 0 33 0; #P hidden connect 15 0 36 0; #P hidden connect 41 0 39 0; #P hidden connect 43 0 40 0; #P hidden connect 40 0 3 0; #P pop;