A look back at some items in our archives.
- Psyche Loui's exit talk, spring 2007
Meeting agenda for Friday 6/20/08:
- Review candidates for Music Applications Programmer position
- Review status of current research projects
- Sponsored research: Starkey
- Affiliates: Meyer, Sennheiser, Waves, Native Instruments, Ableton...
- Clarify profile of Rimas replacement and goals for Meyer collaborations
- Discuss fundraising strategy for next year.
# Project objectives
- Low cost microcontroller target
- Maximally complete OSC implementation
- Timestamps and synchronization
- Floating point support
- High performance transport
- Clock synchronization
- Hardware features
- TTL, SPI and I2C digital connectivity
- Ratiometric ADC for 3.3v regulated systems
Provides OSC protocol meta-information and clock synchronization services.
-----
**/osc/version** : Report OSC version
TX: [ /osc/version ]
RX: [ /osc/version ,s "1.0" ]
-----
**/osc/type/accepts** : List typetags understood by device
Enables digital communication with devices over TTL serial (0-5v signaling). Baud rates of 2400-115200.
Note that the TTL serial mode conflicts with SPI and I2C modules--only one can be used at a given moment.
The transmit pin is C6 and the receive pin is C7 on the PIC18F series.
**NOTE:** Do NOT leave the input pin (C7) floating! If it is not in use, it must be grounded, otherwise the hardware UART module will behave strangely and may lock up the firmware.
-----
**/ttl/baud** : Get/set baud rate, argument is int-32
# Cost:
About $25.
# Information:
[http://www.sparkfun.com/commerce/product_info.php?products_id=762]
# Pins:
- /ra/0-3,5 -- Analog
- /ra/4 -- Digital
- /rb/0 -- Analog Input, I2C Data
- /rb/1 -- Analog Input, I2C Clock
- /rb/2-4 -- Analog Input
- /rb/5,6,7 -- Digital
- /rx, /tx -- Digital, TTL serial port
# Status LED:
Two LEDs, S1 (yellow) a
# Cost:
About $50.
# Information:
[http://www.create.ucsb.edu/~dano/CUI/]
# Pins:
- /a/4 -- Digital
- /b/6,7 -- Digital
- /c/0 -- Digital
- /c/1,2 -- Digital, Hardware PWM
- /c/6,7 -- Digital, TTL Serial
- /d/0-7 -- Digital
- /an/0-12 -- Analog
- /an/10 -- I2C Clock
- /an/12 -- I2C Data
- /pgm -- Digital Input-only (physically maps to
Enables 2-channel hardware pulse-width modulation control on pins C1 and C2. This can be used to control brightness of LEDs or digital-to-analog conversion.
The SPI module is mostly written but still untested. This is some preliminary documentation.
--------
**/spi/enable**
Turn on/off.
------
**/spi/rate**:
Configure clock rate. Fosc /4, /16, /64.
-------
**/spi/mode**:
Configure the transmission waveform. See spec sheet.
- Mode 0: Clock default low, falling edge on data transmit.
- Mode 1: Clock default high, rising edge on data.
- Mode 2: Clock default low, rising edge on transmit
- Mode 3: Clock default low, falling edge on transmit
- General Utilities:
- [w:Subversion] repository client.
Recommendation: svnX for Mac OS/X, TortiseSVN for Windows
- catserial.py -- utility for dumping serial port output (in the repository)
- slipserial.py -- utility for dumping a serial slip stream (in the repository)
- A Windoze machine (optional, for some hardware tools)
- USB Analyzer: [cnmat:node/5964]
The repository for uOSC is located here; this URL is to be put into your SVN client, not for use in a web browser.
- https://cnmat.berkeley.edu/svn/repository/uosc
A friendly "web-view" front-end is here; this will show you the files and commit logs, but does not allow you to perform any actual manipulations on the code.
- https://cnmat.berkeley.edu/svn/view/uosc
Contents overview:
# system/typedefs.h
Defines byte, word, LSB, MSB, etc.
# autofiles/usbcfg.h
Select which variant target to build for (CUI, Bitwacker, etc)
# autofiles/usbdsc.*
Contains the USB descriptor table
# io_cfg.h
Defines pins, pin counts, enable individual modules
# main.c
Starts the program when USB enumeration is completed
# user.c
Contains the main loop of program and i
- 5V supply
- Tosc = 48 Mhz clock, Fosc = Tosc / 4 = 12 Mhz instruction rate.
- Program memory: Up to about 16k ROM.
- RAM: 2048 bytes:
- 256 bytes for stack
- 512 bytes for micro-OSC buffers and other data
- 512 bytes for USB endpoint buffers
- 768 bytes for heap
- 16 digital I/O
- 13 analog in
- 4 hardware timers (internal clock, interrupts)
- 2 PWM out / CCP in
- 1 T
Read the source code! Read it again. This is a very concise overview...
1. Make a MODULE\_ENABLE macro flag (io\_cfg.h) -- all of your code should be #ifdef conditional on this flag.
2. Make a file for low-level functions, e.g. user/mything.c
3. Make a file for handling the OSC dispatch, e.g. user/osc\_node_mything.c
4. Define the OSC schema (osc\_schema.c)
5.
# Unpacking
This can be done in a node dispatch routine. Variables of note:
- osc\_message\_in\_argc : how many arguments in the typetag section
- osc\_message\_in\_len : total message length
- p\_osc_message\_in : pointer to start of message
- p\_osc_message\_in\_tt : pointer to start of typetags (after magic comma)
- p\_osc_message\_in\_data : pointer to start of data section
For figuring out which method was matched in a large tree of nodes:
# SLIP special characters:
#define SLIP_END 0300 // indicates end of packet -- decimal 192
#define SLIP_ESC 0333 // indicates byte stuffing -- decimal 219
#define SLIP_ESC_END 0334 // ESC ESC_END means END data byte -- 220
#define SLIP_ESC_ESC 0335 // ESC ESC_ESC means ESC data byte -- 221
# Double-EN
+ Tuesday: Gestural Control
- Guest: Keith McMillan (Zeta Music, Octav, TrioMetrik, Beam Foundation, ...)
- Controller museum
+ Gestural Control: CNMAT's online database of controllers
+ History, Benefits and the Present
+ Connectivity
- MIDI
- USB
- OpenSoundControl
- Analog signals
- Audio-
+ Wednesday: Modularity
- Guest: David Zicarelli (Cycling 74)
- Abstractions/Encapsulation
- Arguments and Attributes
- poly~
+ Building Interfaces
- bpatcher
- pvar
- presentation mode
- jsui
- Big Patch: probablistic, harmonic cloud maker
+ From Tuesday...
+ Audio Analysis
+ Real-time Analysis Tools
- fidd
- In MPLAB, select Configure > Select Device, then choose the appropriate processor
- Edit 18fxxxx.lkr and change FILES line to appropriate target processor library
- Edit autofiles/usbcfg.h and change the #define to point to the new target platform (Bitwacker, CUI etc).