El
programa de PINBALL consiste en primer lugar en recoger los valores
de los sensores a través del BasicStamp con funciones como
RCTIME y BUTTON para mandarlas depués a MidiPoet. Los mensajes
midi se mandan desde el Basic con la función SEROUT y MidiPoet
recoge estos datos y los transforma en valores que controlan las
imágenes (velocidad, frames, orden de reproducción...).
El mismo mensaje midi sale desde el MidiPoet al sintetizador midi
de la tarjeta de sonido. En un futuro la información de sonido
se sacaría a un programa tipo PD para poder manipular el
sonido de una forma más rica en tiempo real.
Código
BasicStamp:
'{$STAMP BS2}
'{$PBASIC 2.5}
btwk VAR Byte
btwk=0
pib3 VAR Word
pib4 VAR Word
pib5 VAR Word
pib6 VAR Word
pib7 VAR Word
flex VAR Word
posicion VAR Word
potenciometro VAR Word
baudmode CON 12
midinoteon CON 144
midiconchange CON 176
midiprogchange CON 192
inicio:
HIGH 2 'potenciometro
HIGH 3 'pibote3
HIGH 4 'pibote4
HIGH 5 'pibote5
HIGH 6 'pibote6
HIGH 7 'pibote7
HIGH 14 'posicion
HIGH 15 'flex
HIGH 8 'leds
BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13
RCTIME 2,1,potenciometro
IF potenciometro =1 THEN saltarpotenciometro
SEROUT 1, baudmode, [ midinoteon, potenciometro/5, 120]
DEBUG DEC ? potenciometro/5
saltarpotenciometro:
BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13
RCTIME 3,0,pib3
IF pib3 =1 THEN saltarpib3
SEROUT 1, baudmode, [ midinoteon+1, 1, 120]
DEBUG DEC ? pib3
saltarpib3:
BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13
RCTIME 4,0,pib4
IF pib4 =1 THEN saltarpib4
SEROUT 1, baudmode, [ midinoteon+2, 8, 120]
DEBUG DEC ? pib4
saltarpib4:
BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13
RCTIME 5,0,pib5
IF pib5 =1 THEN saltarpib5
SEROUT 1, baudmode, [ midinoteon+3, 13, 120]
DEBUG DEC ? pib5
saltarpib5:
BUTTON 0,0,254,0,btwk,1,diana
BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13
RCTIME 6,0,pib6
IF pib6 =1 THEN saltarpib6
SEROUT 1, baudmode, [ midinoteon+4, 25, 120]
DEBUG DEC ? pib6
saltarpib6:
BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13
RCTIME 7,0,pib7
IF pib7 =1 THEN saltarpib7
SEROUT 1, baudmode, [ midinoteon+5, 32, 120]
DEBUG DEC ? pib7
saltarpib7:
BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13
RCTIME 14,1,posicion
IF posicion >780 THEN saltarposicion
SEROUT 1, baudmode, [ midinoteon+6, posicion/6, 120]
DEBUG DEC ? posicion
saltarposicion:
BUTTON 0,0,254,0,btwk,1,diana
'BUTTON 9,0,0,0,btwk,1,nobout9
BUTTON 10,0,0,0,btwk,1,nobout10
BUTTON 11,0,0,0,btwk,1,nobout11
BUTTON 12,0,0,0,btwk,1,nobout12
BUTTON 13,0,0,0,btwk,1,nobout13
RCTIME 15,1,flex
IF flex <3700 THEN saltarflex
SEROUT 1, baudmode, [ midinoteon+7, flex/250, 120]
DEBUG DEC ? flex
saltarflex:
GOTO inicio
nobout9:
SEROUT 1, baudmode, [ midinoteon+8, 50, 120]
DEBUG "999999999999999999999999999999"
GOTO inicio
diana:
SEROUT 1, baudmode, [ midinoteon+9, 1, 120]
DEBUG "ffffffffffffffffffffffffffffffff"
GOTO inicio
nobout10:
SEROUT 1, baudmode, [ midinoteon+8, 10, 120]
DEBUG "101010101010101010101010101010"
GOTO inicio
nobout11:
SEROUT 1, baudmode, [ midinoteon+8, 20, 120]
DEBUG "111111111111111111111111111111"
GOTO inicio
nobout12:
SEROUT 1, baudmode, [ midinoteon+8, 30, 120]
DEBUG "222222222222222222222222222222"
GOTO inicio
nobout13:
SEROUT 1, baudmode, [ midinoteon+8, 40, 120]
DEBUG "3333333333333333333333333333333"
GOTO inicio
Código
MidiPoet: |