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

VIC MIDI (World of Commodore 2015)

Feb 15, 2017

Download

Technology

Leif Bloomquist
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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!