Legatos: “Legos” for Sound
Physical Modular Sound Blocks for sound and music
all bytes be the same length?
markups for holes in type A block. Make a run of them laid out on
on ordering etching supplies.
out details of how the user switches between the blocks w/ the foot
down specifics of what the demo will be
out what transistor to use for LEDs
add resistor to RX/TX for type A
on refund for ordering Digikey stuff. Done. Have RMA number. Need to
type A board : done
- Figure out
making holes on the modela: done. The tutorial is
for pushbutton switches. Nice ones in Mitch’s stash. Order these. Done
dimensions of phone jacks
down last week’s order. Got it.
clips for 26 pin micros? Use Tiny26 programming clip
connecting RX/TX leads with resistor. Works. Don’t use resistor. See
test3 code for turning on and off transmit pin
contents… Yes. Use programming clip
available? Yes. Check on size
- Type A
type A board
holes with the modela: find tutorial on XLR? Types to make holes?
capacitors handle higher frequencies. Tantalum handle lower frequencies
tutorial for Eagle: http://www.interq.or.jp/japan/se-inoue/e_eagle.htm
Eagle you want to export: Top, bottom, pads, vias…
to figure out how parts lay out upside-down print the mirror of the
Description of Implementation:
will be a demo of the Legatos idea, not a full implementation. It will
basically show a scratch/DJ effect with samples:
blocks will not have knobs. Instead the input will be controlled by
ultrasonic sensors on a microphone measuring distance
I still need input blocks with knobs or at least an LED display anyway?
- A foot
controller will allow the user to choose which input block the sensors
are feeding numbers to
- For the
demo, the user can record a few seconds of data, and adjust the speed,
amplitude, and pitch of the playback. There will be some sort of looping
Block type A:
block has 2 inputs and 2 outputs. Everything is phone cord RJ12. The board,
basically an efe without the sensor, will be glued to the bottom of my own
Legos block. The top of this block will have Lego’s-like knobs so that a top
can be put on and removed.
types of array blocks:
(adjusting frequency, amplitude, etc.)
(direct audio, as in a buffer)
this distinction could be hidden from the user?
blocks take one input: size, which should be in mSec?
input an array, use foot controller:
the left foot controller cycles between the array blocks in the network
the right foot controller “records” values for the array using the
the right foot controller again stops recording
poll each other through DFS
description makes it back up to the Python code, which describes the
blocks as a PD file.
keyboard commands to load the PD file
updates on the input blocks through UDP sockets between Python and PD
- How can
Python check if bytes are waiting in the serial port buffer?
- There will be a block which translates
standard async UART protocol 2-wire to 1-wire
- Tiny 15
- Another way?
- If UART is high and pulled low for start-bit
- Have 10K resistor between TX and RX
- RX can receive signal
- TX will send signal --- but RX will receive
this as well. We could ignore this in the software
- Will TX signal be too weak?
- All commands
2 bytes long so no framing is necessary
byte: # in queue i.e.
sends $00,00 to query 1st block
block knows it is 1st in the queue
block send $00,01 to query 2nd block, etc.
find array block and turn on LED
byte: signature of block searching for
block not in this queue
2: # block is in the queue
3&4: size of block, LSB, MSB
5-9: $fc, $fd, $fe, $ff
array block’s LED will be turned on
- $02: turn
off LED array block
byte: signature of block searching for
block not found
block found. LED shut off
2-5: $fc, $fd, $fe, $ff
1: block type
bit 7 if block has been queued already in this query. If so, blocks
5-n will be skipped
2: block signature for this block type
bytes 1 and 2 for a complete signature
3: # block is in the queue as received from the send ID command
(exactly the same number, NOT the number + 1)
4-n: data for specific block
n+1 to n+4: end transmission: $fc, $fd, $fe, $ff
w/ knob: n = 7
5: range of decimal place:
range 1-999 (x1)
range .1-99.9 (x.1)
range .01-9.99 (x.01)
6: number before range adjustment LSB
7: number before range adjustment MSB
- When a
block gets queried:
Checks to see if it has already been queried. If so,
responds with ID only
Queries block to its left (1st input)
Wait for a response from its 1st input
o If no
response within 1mS, block knows it is the last in the chain
Receives response --- transmits response bit-by-bit
synchronously with receive
Blocks implementation: Specifics
1 2 3 4
- 5V Signal NC Gnd
signal must be unregulated
wouldn’t it be better to surround signal by ground?
1 2 3 4
- 5V Gnd Signal Gnd
Jack component in Eagle
“type a” blocks board layout. Modella the board
clip for tiny26 w/ necessary cables, plugs, etc.
- Best way to convert from 2-wire UART to 1-wire
- Easy way to make Y-cables from phone cord?
- Did Raffi order mat’ls?
- How do we tell if we are on a right branch or
a left branch?
- Change protocol: when a block gets queried:
- Send “L” immediately. Then poll left inlet
- Send all responses from left inlet
- Send “R”. Poll right inlet; poll all
- Send ID of block itself.
- Is response to what number we are in the
queue still necessary?