CNMAT Flashback

A look back at some items in our archives.

Archive Browser

Browse CNMAT content by type
Book page

uOSC.PIC Source Code 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

Book page

PIC18F Hardware

- 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

Book page

Module Development

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.

Book page

OSC Message Handling

# 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:

Book page

SLIP Encoding and Decoding

# 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

Book page

Tuesday

+ 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-

Book page

Wednesday

+ 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

Book page

Build Configuration

- 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).

Book page

I2C

Implements synchronous master-mode I2C control at 100khz or 400khz (default). Optional "nunchuck" mode automatically polls and decodes data from an attached Wii Nunchuck.

The I2C clock is pin AN10 / B1. I2C data is pin AN12 / B0.

**NOTE:** I2C "open-drain" requires a pull-up resistor placed between the SCL and V+, SDA and V+ (typically, 1-4k ohms).

Book page

Books

Expanded Cinema, Youngblood, P. Dutton & Co., 1970, http://www.ubu.com/historical/youngblood/expanded_cinema.pdf
Experimental Animation, Russett - Starr, Da Capo Press, 1976, ISBN 0-306-80314-2
The Sound of Painting, von Maur, Prestel, 1999, ISBN 3-7913-2082-3
Sons & Lumières, von Maur - Rousseau - Cooper - Levin - Lista - Kahn - Duplaix - Kihm - Szendy, Éditions du Centre Pompidou, 2004, ISBN 2-84426-244-9

Pages