vic midi (world of commodore 2015)

15
Jim Brain and Leif Bloomquist World of Commodore 2015 December 5, 2015 Toronto, Canada VIC MIDI

Upload: leif-bloomquist

Post on 15-Feb-2017

558 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: VIC MIDI (World of Commodore 2015)

Jim Brain and Leif Bloomquist

World of Commodore 2015December 5, 2015Toronto, Canada

VIC MIDI

Page 2: VIC MIDI (World of Commodore 2015)

Project Goals

Make the Commodore VIC-I (6560) chip’s distinctive sound available to electronic musicians.

Easy integration with sequencers, synthesizers, or tracking software using MIDI1.

1Musical Instrument Digital Interface

Page 3: VIC MIDI (World of Commodore 2015)

History Sometime in the 1980s: A schematic for a VIC-20 MIDI

interface was published in “Electronics, the Maplin Magazine”

No commercial MIDI interfaces were ever released for the VIC!

Page 4: VIC MIDI (World of Commodore 2015)

History cont’d 2006: David Viens and François Leveillé in Montreal had

built a prototype based on the Maplin article, but never completed the software.

Early 2009: A conversation with Rob Adlers and Syd Bolton leads to a search for a MIDI Interface for the VIC.

Mid 2009: I find David and Francois’ project through the “VIC-20 Denial” forums and offer to take over development.

1Musical Instrument Digital Interface

Page 5: VIC MIDI (World of Commodore 2015)

First Prototype

Page 6: VIC MIDI (World of Commodore 2015)

History cont’d

Late 2009: I approach Jim Brain from Retro Innovations about creating a small production run.

Prototypes and code evolve for several years…

Page 7: VIC MIDI (World of Commodore 2015)

2013

2011

2012

Page 8: VIC MIDI (World of Commodore 2015)

2015

Page 9: VIC MIDI (World of Commodore 2015)

The VIC-20’s Voices

Square Wave output (except Noise) Some overlap between voices

Page 10: VIC MIDI (World of Commodore 2015)

Implementation One MIDI Channel per Voice

Channel 1 = Alto (36874) Channel 2 = Tenor (36875) Channel 3 = Soprano (36876) Channel 4 = Noise (36877)

Polyphony Mode Channel 5 = Polyphony Mode (round-robins through voices)

Master Volume is set through Controller #7 (Coarse Volume) on any channel

Page 11: VIC MIDI (World of Commodore 2015)

Implementation (Continued)

Note On commands use a lookup table to match MIDI Note# to the closest match for that voice.

Controller #1 (Course Modulation) does a direct “POKE” to the corresponding Voice register based on MIDI Channel.

Note Off, All Notes Off commands on a specific channel are used to silence that voice.

MIDI “Running Status” supported

PAL, NTSC, and VIC-specific lookup tables Bank Select (Controller #0)

Page 12: VIC MIDI (World of Commodore 2015)

Still remaining to do: MIDI Out only sends one note at a time. Needs

multi-press, multi-note capability

Viznut’s waveforms don’t trigger reliably yet

More testing of Polyphony mode

Page 13: VIC MIDI (World of Commodore 2015)

Software 6502 Assembler

Cross-compiled using DASM

Code is open-source, MIT License

Available on GitHub:https://github.com/LeifBloomquist/VICMIDI

Developer and User Support Forum: http://www.jammingsignal.com (click FORUMS)

Page 14: VIC MIDI (World of Commodore 2015)

Other features Flashable

MIDI IN, Out, Through support

RS-232 Support (if installed)

UltiMem capable (512kB ROM, 128kB RAM)

UART can be set to any base address in IO2 or IO3

UltiMem can be enabled/disabled

MIDI/RS232 can be enabled/disabled

Page 15: VIC MIDI (World of Commodore 2015)

Demo Time!