Showing posts sorted by relevance for query vectrex. Sort by date Show all posts
Showing posts sorted by relevance for query vectrex. Sort by date Show all posts

Sunday, July 03, 2011

VecM: DIY MIDI Interface for GCE / Milton Bradley Vectrex

Introduction
The VecM is a MIDI interface for the GCE / Milton Bradley Vectrex console. The VecM is made up of two main parts - the interface hardware (which includes a pre-programmed microcontroller) and a custom program for the Vectrex console (which can be put onto a homemade cart or a third-party flash cart). The VecM interface gives the user full control over the sound capabilities of the Vectrex sound chip.



Music Examples
http://lazerscale2010.com/files/little-scale_087_the_harbour.mp3
http://lazerscale2010.com/files/little-scale_066_Happy_Lual.mp3
http://lazerscale2010.com/files/little-scale_065_Commiseration.mp3



Vectrex Sound Capabilities

Unlike most video game consoles, the Vectrex has no direct audio line output and was designed with an internal speaker only. As such, the sound of the Vectrex is always coloured by the physical space in which the console is used. This colouration can be bypassed by modifying a Vectrex console so as to have a direct audio output.

The Vectrex features an AY-3-8912 sound chip – a programmable sound generator made up of three channels. The AY-3-8912 is a sonically identical variant of the AY-3- 8910 sound chip, lacking one of the input / output ports found on the latter. Each channel of the AY-3-8912 can be set to a pitch-enabled mode for which the frequency is selectable. The sound chip also features a noise-enabled mode whereby a global pseudo-random noise source is routed to the output of a given channel. The frequency of the noise source is selectable via a global register. These two modes are not mutually exclusive, as a channel can simultaneously output both pitch and noise material.

The frequency resolution and frequency range of the AY-3-8912 are beyond that of comparable sound chips, such as the Texas Instrument SN76489. However, as with the SN76489, the oscillators of the AY-3- 8912 cannot be adjusted in terms of duty cycle and waveform type. Furthermore, the sound chip features a single amplitude envelope generator that can be used to modulate the volume of a channel. Although all of the features of the AY-3-8912 can, in theory, be used for music composition with the Vectrex, original Vectrex games tended to feature sparse soundtracks that under-utilised the capabilities of the sound chip.



Interface Hardware: Schematic and Notes


9 Pin D-subminiature 1 and 2 refer to controller ports one and two of the Vectrex video game console. IC1 is the ATmega328 microcontroller loaded with an Arduino bootloader and Vectrex Music Interface firmware.

For reference - when considering construction using a pre-built Arduino board:

◦ IC1 Pin 2 = Arduino Digital Pin 0 = PORTD Bit 0
◦ IC1 Pin 3 = Arduino Digital Pin 1 = PORTD Bit 1
◦ IC1 Pin 4 = Arduino Digital Pin 2 = PORTD Bit 2
◦ IC1 Pin 5 = Arduino Digital Pin 3 = PORTD Bit 3
◦ IC1 Pin 6 = Arduino Digital Pin 4 = PORTD Bit 4
◦ IC1 Pin 11 = Arduino Digital Pin 5 = PORTD Bit 5
◦ IC1 Pin 12 = Arduino Digital Pin 6 = PORTD Bit 6
◦ IC1 Pin 13 = Arduino Digital Pin 7 = PORTD Bit 7

◦ IC1 Pin 14 = Arduino Digital Pin 8 = PORTB Bit 0
◦ IC1 Pin 15 = Arduino Digital Pin 9 = PORTB Bit 1
◦ IC1 Pin 16 = Arduino Digital Pin 10 = PORTB Bit 2
◦ IC1 Pin 17 = Arduino Digital Pin 11 = PORTB Bit 3
◦ IC1 Pin 18 = Arduino Digital Pin 12 = PORTB Bit 4
◦ IC1 Pin 19 = Arduino Digital Pin 13 = PORTB Bit 5

◦ IC1 Pin 23 = Arduino analogue Pin 0 = PORTC Bit 0
◦ IC1 Pin 24 = Arduino analogue Pin 0 = PORTC Bit 1
◦ IC1 Pin 25 = Arduino analogue Pin 0 = PORTC Bit 2
◦ IC1 Pin 26 = Arduino analogue Pin 0 = PORTC Bit 3
◦ IC1 Pin 27 = Arduino analogue Pin 0 = PORTC Bit 4
◦ IC1 Pin 28 = Arduino analogue Pin 0 = PORTC Bit 5



Interface Hardware: Minimum Parts List

ICs:
◦ ATmega328 pre-programmed with an Arduino bootloader and the Vectrex Music Interface firmware
◦ 4n28 optocoupler

Resistors:
◦ 220 Ohms
◦ 3.3k Ohms
◦ 10k Ohms
◦ 100k Ohms

Capacitors:
◦ 22pF
◦ 22pF
◦ 0.1uF
◦ 47uF

Miscellaneous:
◦ 16.00 MHz crystal
◦ 1n4148 diode

Connectors:
◦ 5 pin DIN
◦ 9 pin D-Sub
◦ 9 pin D-Sub



Interface Software: Vectrex Software
There are two main software components to VecM - the program for the Vectrex console, and the program for the Arduino platform (or compatible microcontroller).

The ROM for the Vectrex console can be found here:
http://milkcrate.com.au/_other/chipmusic_software/vecm/GCE%20Milton%20Bradley%20Vectrex%20ROM%20for%20Console.bin

The source code for the Vectrex ROM file can be found here. Please note that the source code for the Vectrex ROM file is not required for the VecM:
http://milkcrate.com.au/_other/chipmusic_software/vecm/GCE%20Milton%20Bradley%20Vectrex%20Source%20Code%20for%206809.txt

The source code for the Arduino platform can be found here:
http://milkcrate.com.au/_other/chipmusic_software/vecm/GCE%20Milton%20Bradley%20Vectrex%20Arduino%20Source%20Code.txt

To run the Vectrex ROM file on an actual Vectrex console, a flash cartridge (e.g. http://www.vectrex.biz/) or homemade E/EPROM or similar cartridge is required.

To run the Arduino program, simply copy and paste the source code into a new Arduino sketch, compile and upload to the microcontroller board as per usual.



User Guide
A user guide, covering basic setup, MIDI mapping and control, can be found here:
http://milkcrate.com.au/_other/chipmusic_software/vecm/Vectrex%20Music%20Interface%20User%20Guide.pdf

Sunday, October 28, 2007

Overview of the Interface and Protocol

Introduction
The interface is made up of one hardware component and three software components. The four components operate in accordance to a predetermined, custom protocol for delivering and receiving information relevant to the production of musical material from the host computer system to the Vectrex videogame console. The protocol is a description of the order and method of information flow from one place to another.



Limitations
The current prototype interface is considerably limited. It is restricted in the following ways.
  • Monophonic capability (ie. only one note can be played at a time out of a theoretically* possible three)
  • Four-bit pitch set (ie. only sixteen different pitches can be played out of a theoretically possible 4096)

However, it should be noted that the system is in its infancy in terms of development. The interface also incorporates some positive aspects. The reaction time of the interface is fast since only one byte of information is required to be sent and received successfully in order to generate a sound or a change in a sound. Secondly, the four-bit volume control allows for complex volume envelopes that are generated by a host computer program (see Software Overview: Host Computer Patch).

A number of data routing and control techniques will be implemented in order to overcome these limitations in the near future.



Software Overview: Host Computer Patch
The host computer patch acts as a mediator between MIDI data and the microcontroller stage (see: Software Overview: Microcontroller). The MIDI data may be played in by the user in real time or may be pre-sequenced or algorithmically generated in some fashion. The Max/MSP patch titled VECENV reacts to note on, note off and certain continuous control messages.

Each note on and note off event contains two important bytes of data – the velocity and the note number (pitch). For a note on event, the velocity will be a number between 1 and 127. For a corresponding note off event, the velocity will be 0. The pitch byte in both cases is a number between 0 and 127.

The patch examines the pitch byte of the incoming MIDI note and takes the modulo 15 value. This value then becomes the 4-bit frequency nibble that is eventually sent to the Vectrex console (see: Protocol Overview).

A non-zero velocity value from the incoming MIDI note triggers a 32-stage, 4-bit custom volume envelope. This envelope is represented graphically to the user in an editable form. A zero velocity value from the incoming MIDI note sets the output to 0. The data from the volume envelope forms the 4-bit volume nibble that is eventually sent to the Vectrex console (see: Protocol Overview).

The VECENV patch includes a set of 16 presets containing information regarding the shape of the volume envelope. These presets can be accessed via the graphic user interface or by using MIDI Continuous Controller number 16 (General Purpose Slider #1). The range of data from 0 to 127 is scaled to a value between 0 and 15. This value sets the preset from 0 to 15. The default envelope shape preset is 0, which contains a value of 15 for the first step of the envelope and 0 for the remaining steps.

The user is able to alter the speed at which the volume envelope is read through. This is expressed in milliseconds per envelope step and a value from 10ms to 220ms is allowed. The speed parameter can be accessed via the graphic user interface or by using MIDI Continuous Controller number 17 (General Purpose Slider #2). The range of data from 0 to 127 is scaled to a value between 10ms and 220ms. The default speed value is 10ms.

The user is able to alter the length of the volume envelope. This parameter sets how many of the 32 steps are read through before either looping or muting occurs and is defined by a value between 0 and 31. The length parameter can be accessed via the graphic user interface or by using MIDI Continuous Controller number 18 (General Purpose Slider #3). The range of data from 0 to 127 is scaled to a value between 0 and 31. The default value for the length parameter is 31 (representing the full length of the volume envelope).

The user is able to set the volume envelope to loop mode. If the envelope is set to loop mode then the steps of the envelope will wrap-around indefinitely, so long as a note-off event has not been received. This allows for longer, held notes. The loop mode toggle can be accessed via the graphic user interface or by using MIDI Continuous Controller number 19 (General Purpose Slider #4). The range of data from 0 to 127 is scaled to either 0 (for values below 64) or 1 (for values above or equal to 64). If the resulting value is 0, then loop mode is set to off. If the resulting value is 1, then the loop mode is turned on. The loop mode is off by default.

The user is able to scale the output of the volume envelope by a number between 0 and 15. This parameter is called volume and allows for effective control over fade-ins, fade-outs and mixing levels for the Vectrex voice that is being played. The volume parameter can be accessed via the graphic user interface or by using MIDI Continuous Controller number 1 (Modulation). The range of data from 0 to 127 is scaled to a value between 0 and 15. The default value for the volume parameter is 15.

The following table summarises the current MIDI implementation of the VECENV patch.




Software Overview: Microcontroller

The microcontroller software acts as a mediator between the host computer Max/MSP patch VECENV and the bridging circuit (see: Hardware Overview: Bridging Circuit). The microcontroller software has been written in the Arduino environment for use with an Arduino NG or similar interfacing board. An Arduino allows for the translation of digital data into electrical signals.

The sketch (Arduino program) takes the data byte from the Max/MSP VECENV patch containing pitch and volume data and transfers it to the Vectrex via the bridging hardware using electrical states. It should be noted that pins 0 and 1 cannot be used within the Arduino program to send the byte to the Vectrex as these pins are used to transfer the information from the host computer. Thus, PORTB (pins 8 to 15) have to be used in conjunction with PORTD (pins 0 – 7), even though only eight bits are being set.

/*
VECENV TO VSOUNDER CONVERTER by Sebastian Tomczak 26 October 2007
*/

byte data;
// set up a space for data to be tranferred
void setup() {
// begin the setup function
Serial.begin(57600);
// open up a serial connection
DDRD = B11111110;
// set the direction of the PORTD pins (0 - 7)
DDRB = B00000011;
// set the direction for the PORTB pins (8 - 15)}
void loop() {
// begin the loop function
if(Serial.available() > 0) {
// if a serial byte has been received in the serial buffer, then...
data = Serial.read();
// read the byte into memory
PORTD = (data << portb =" (data">> 6) & B00000011;
// set the PORTB pins 0 - 1 to the most significant two bits}}

/* END */
Code 1: The Arduino Sketch



Hardware Overview: Bridging Hardware
The bridging hardware acts as a mediator between the micrcontroller software and the Vectrex itself (see Software Overview: Vectrex Binary). In essence, the interfacing hardware allows the Arduino board to send data to the Vectrex console by directly manipulating the controller ports that are usually used for player input. It is a very simple circuit and is summarised in the following table. Each arrow indicates a direct electrical connection.



** All Arduino pins are connected to ground via separate 30kΩ pull-down resistors . Resistors with a power rating of 0.25W and a tolerance of 5% should suffice for this application. Resistance values between 22kΩ and 100kΩ will suffice for this application.

*** Ground (pin 8) of the DB-9 connector 1 is connected to Arduino ground. 5V (pin 7) of the DB-9 connector 1 is connected to Arduino ground. The Arduino power selection jumper should be set to EXT for the use of an external power source.

**** Ground (pin 8) of the DB-9 connector 2 is connected to Arduino ground.


It should be noted that the ATMega168 microcontroller onboard the Arduino is powered via the outlets on the Vectrex controller. However, the FTDI Serial USB microchip onboard the Arduino is powered via the USB connection to the host computer USB bus. This allows for a reliable transmission of data from the host computer to the Arduino board via the incorporated FTDI microchip. This also allows for direct control of the Vectrex controller ports because the same power bus as the analog to digital circuitry inside the Vectrex powers the micrcontroller that is acting as a control mechanism.



Software Overview: Vectrex Binary
The Vectrex binary acts as a mediator between the bridging hardware and the sound chip of the Vectrex. It is a ROM (read-only memory) image titled VSOUNDER and is essentially a piece of software that the Vectrex console is able to use. The software takes the current state of the two controller ports and uses this state to manipulate the sound chip (programmable sound generator or PSG). The state of the two controller ports thus determines the sounds that the Vectrex creates.

The creation of this binary would not have been possible without the hard work of a number of individuals within the Vectrex community. In particular, the tutorials by both Chris Salomon and Christopher Tumber very were useful as was a triggering code example by Manu Pärssinen . Finally, it is only through the VecFlash hardware developed by Richard Hutchinson that the binary can be currently executed on an actual Vectrex machine (as opposed to an emulator). The source code was assembled in the AS09 assembler. Although a number of variants have been explored thus far, the basic structure and format of the assembly code is as follows.

; pulse wave control example
; by sebastian tomczak
; 26 october 2007
;
; setup bios functions as used in the program
waitrecal equ $f192
byte2sndchip equ $f256
clearsound equ $f272
readbuttons equ $f1ba
; header block
org 0 ; set memory position to zero
fcb $67,$20
fcc "gce 2007" ; copyright year
fcb $80 ; end copyright year string
fdb musa,$f850,$30b8 ; play header music
fcc "vsounder ex" ; program display title
fcb $80,$0 ; end program display title string
; initialise program
jsr readbuttons ; read buttons for initial values
jsr clearsound ; stop any sounds that might be playing
; main program
main jsr waitrecal ; resync
jsr readbuttons ; read buttons into ram
ldb $c80f ; retrieve current button state
andb #$0f ; bitmask least sig four bits
lda #$08 ; modify psg register
jsr byte2sndchip ; set psg register
ldb $c80f ; retrieve current button state
andb #$f0 ; bitmask (most sig four bits revealed)
lda #$00 ; modify psg register
jsr byte2sndchip ; set psg register
lda #01 ; modify psg register
ldb #01 ; data to register
jsr byte2sndchip ; set psg register
lda #$07 ; modify psg register 7 (mixer)
ldb $c807 ; get previous value for psg reg 7
andb #$fe ; turn on tone on voice 1
orb #$08 ; turn off noise on voice 1
jsr byte2sndchip ; set psg register
bra main ; branch back to main loop
musa fdb $fee,$fbe6 ; silent music for header block
fcb $0,$80 ; end silent music for header block
; end

Code 2: The VSOUNDER Source Code

In order to achieve the results heard in the work Extraction Point, a total of five Vectrex binaries were assembled and explored musically via MIDI data from the ProTools environment. Each variant introduced a different set of notes of noise shaping values.



Protocol Overview
The overall structure of the control flow is as follows.
  • MIDI data is sent to the Max/MSP patch VECENV
  • The Max/MSP patch VECENV generates the pitch and volume data that is sent to the Arduino board
  • The Arduino board sets the state of the interfacing hardware that is manipulating the controller ports on the Vectrex
  • The VSOUNDER Vectrex binary measures the state of the controller ports on the Vectrex.
  • The VSOUNDER Vectrex binary controls the sound chip of the Vectrex as determined by the controller ports

MIDI data is transformed into two four-bit nibbles (see: Software Overview: Host Computer Patch). These two nibbles form a byte as follows.


The high nibble (frequency) corresponds to the controller 2 buttons in the hardware tranfer of data. Button 1 corresponds to bit 4, button 2 corresponds to bit 5, button 3 corresponds to bit 6 and button 4 corresponds to bit 7.

The low nibble (volume) corresponds to the controller 1 buttons in the hardware tranfer of data. Button 1 corresponds to bit 0, button 2 corresponds to bit 1, button 3 corresponds to bit 2 and button 4 corresponds to bit 3.

The state of the controllers is read into a memory location $C80F. The data is represented as follows within this location.

The memory location $C80F is bitmasked† against $0F (00001111) in order to retrieve only the volume nibble. This value is then written to PSG (programmable sound generator) register†† eight. The lower four bits of this register set the volume of the voice one output of the Vectrex.

The memory location $C80F is bitmasked against $F0 (11110000) in order to retrieve only the frequency nibble. This value is then written to PSG register nine. The upper four bits of this register help to determine the frequency which is played by voice one of the Vectrex. Each of the three Vectrex voices can play 4096 different possible pitches. This is controlled by a twelve-bit number held in two registers. For voice one of the PSG, register one is the coarse-tuning register (most significant four bits of the twelve-bit value) and register zero is the fine-tuning register (the eight least significant bits of the twelve-bit value). Acceptable frequency ranges can be achieved by changing the four most significant bits of register zero in tandem with setting certain bits within register one.



Bibliography
Richard Hutchinson. “The VecFlash Multi Cart”. http://www.richard.hutchinson.dsl.pipex.com/new_page_1.htm. (Accessed 28 October 2007).

Manu Pärssinen. “Sound Triggering Example”. http://www.pelikonepeijoonit.net/vec/sound5.as9. (Accessed 28 October 2007).

Kevin Ross. “The Basics – Very Basic Circuits: The Pull-Up Resistor”. http://www.seattlerobotics.org/encoder/mar97/basics.html. (Accessed 28 October 2007).

Chris Salomon. “List of Vectrex ROM Function – Functionally Ordered”. http://playvectrex.com/designit/chrissalo/appendixa.htm#Functionally. (Accessed 28 October 2007).

Chris Salomon. “Vectrex Programming Tutorial”. http://playvectrex.com/designit/chrissalo/toc.htm. (Accessed 28 October 2007).

Christopher Tumber. “Introduction to Vectrex Programming”. http://playvectrex.com/designit/christumber/tutorial.htm. (Accessed 28 October 2007).

Sunday, August 23, 2015

Vectrex Controller to USB HID Joystick



Made with a Teensy 2.0 in the Arduino IDE using the Teensyduino add-on. Download the code here.

The hardware set up is simple - the Vectrex controller end has nine pins. These should be connected to the Teensy as follows:

Vectrex pin 1 to Teensy digital pin 0
Vectrex pin 2 to Teensy digital pin 1
Vectrex pin 3 to Teensy digital pin 2 
Vectrex pin 4 to Teensy digital pin 3
Vectrex pin 5 to Teensy analog pin 0 
Vectrex pin 6 to Teensy analog pin 1
Vectrex pin 7 to Teensy 5V
Vectrex pin 8 to Teensy ground
Vectrex pin 9 to Teensy ground

The Teensy pinout can be found here. The Teensy should be set to joystick mode in the Arduino IDE under Tools > USB Type.






Tuesday, October 30, 2007

Vectrex Sound Control Videos, Sounds and Info


You can see a number of videos of controlling the Vectrex sound chip in various ways here as well as listen to a track and read some information. It is all pretty basic stuff at the moment. But a higher degree of control should be reached pretty soon. Stay tuned for more!

Extraction Point [mp3, 3:18]
A track featuring Vectrex accompanied by Gameboy (LSDJ). More information can be read here.


MIDI Controlled Vectrex: Custom Volume Envelopes [video, 1:00]
The sound of a Vectrex videogame console is controlled via MIDI information within ProTools.

In this example, a number of custom volume envelopes are used. The MIDI information contains directions as to when the envelope should change its shape.



MIDI Controlled Vectrex: Simple Drum Sequencing [video, 0:55]
In this example, the MIDI data in ProTools is controlling a voice in the Vectrex sound chip that is set to noise in order to achieve some simple drum sequencing.

Volume envelope data is sent from the computer to the Vectrex as well.



Vectrex Standalone Sound Sequencer [video, 2:17]
A very basic standalone sound sequencer for the Vectrex.

This currently features an eight step sequencer, choice of sequence length (between one and eight steps), sequence speed and a four stage, four bit volume envelope generator.

The potentiometers control all of these features as well as the pitches of the individual steps.
The external hardware is powered by the Vectrex.


Information About the Interface [blog post]
More information regarding the interface so far can be read here.

Sunday, April 30, 2006

Vectrex logo animation



Here is a vectrex logo animation I have started making tonight. It begins off seemingly chaotic, but eventually settles down. Click on the picture above to download or view it. It's seventeen seconds long, in the .avi format and 636kb in size (so it is quite low in quality). You can see the program below. You can also click on that to see a larger version.

The video is just a feed from a camcorder of the vectrex in action. It is played back at normal speed.

Why would I be notating my patches / programs of logo? Apart from the fact that the glyphs look pretty damn cool, there are two reasons.

Firstly, seeing the structure of a program allows me to think about it when not actually sitting at the vectrex console.

Secondly, one cannot store logo programs inside of the vectrex cart; you can either do a hex dump, and write down the code (just lots of rows of numbers- no sense to me in itself) or write down the instructions, like I have done here.

Eventually, I would like to be able to analyse certain types of logo animations in real time with a camera and computer, and be outputting music based off of it...

Sunday, April 09, 2006

Gear review: VecFlash



Richard Hutchinson's VecFlash is without a doubt a must-have accessory for all Vectrex owners. This product allows the Vectrex user to upload up to fifteen games (in the form of ROM .bin images) at one time, with non-volatile memory, giving a player the chance to try all of the classic and many of the modern games in the Vec's ever-growing library of titles.

At roughly 35% more in price than a standard (non-user uploadable) 36-in-1 Vectrex Multicart, the VecFlash is most certainly worth the money, since the cart's ROM images can be removed and new ones added as the user sees fit. The upload process is simple but transference to the VecFlash is not instant (as is to be expected, of course). The thing to remember (at least with my setup) is to plug in the VecFlash to the Vectrex and connect the VecFlash to the PC before turning the latter on, but to turn the Vectrex on after booting up the uploading program.

The VecFlash comes with its own serial port to three ring 3.5mm plug. Other features include an easy-to-use program uploader for Windows 95-XP and a menu driven interface for the Vectrex, both written by Alex Herbert. This is opposed to using jumper leads to select games, as found on some of the standard multicarts. There is also no need to be turning the console off and on to select another title- only a reset is necessary.

Richard Hutchinson, I take my hat off to you. Congratulations on creating such a useful and easy-to-use product.

Saturday, October 27, 2007

MIDI Controlled Vectrex: Simple Drum Sequencing


In this example, the MIDI data in ProTools is controlling a voice in the Vectrex sound chip that is set to noise in order to achieve some simple drum sequencing.

Volume envelope data is sent from the computer to the Vectrex as well.

Video URL: http://www.youtube.com/watch?v=995BOJWcCwY

Wednesday, March 03, 2010

VecM Vectrex MIDI Interface Update

The VecM Vectrex MIDI Interface has been updated. Support has been added for:

• A better tuning algorithm
• Improved noise and envelope access
• Improved pitch bends

I simply love the way that the Vectrex sounds like in a given space.

Saturday, April 05, 2008

Let's draw with Vectrex!

A pentagram as seen in the patch.

The same pentagram as seen on Vectrex hardware.


A few days ago, i began working on a Max/MSP patch that lets one draw vector-based images. The images are output as text files containing relative co-ordinate pairs in such a way that they can be easily incorporated into Vectrex assembly code.

Saturday, March 13, 2010

VecM Vectrex MIDI Interface Update: Noise Source Added

I have added a software-based noise source that can be enabled on the Vectrex channel 1 to the VecM Vectrex MIDI Interface. This is a relatively low-frequency noise source, but it is still useable for kick drums and the like, and it has a different character to the noise as found on the AY-3-8912.

Additionally, this is my 1111th blog post.

Sunday, April 30, 2006

Animating with vectrex logo: first steps


This morning I have started to learn how to make animations using the vectrex logo program. It has been addictive- I didn't even notice I had spent as much time as I did on it (a sure sign of a good product).

One of the programs / patches / whatever I worked on is shown below. My aim was to draw a shape with 'tentacles' that expand or contract by rolling up or straightening.

I have coloured different areas of the structure to help with an explanation.


1. RED AREA: Initialising variables
line 1 glyphs: SET VAR (var 1 = 10)
Variable 1 is used for the angle of rotation on each element that makes up each tentacle in the animation.

2. BLUE AREA: Main program
line 2 glyphs: CLEAR SCREEN (lightspeed = on)
This is so that when the main program is looped, the drawing of each individual vector of each frame is not seen. Rather, each loop is seen as a completed frame.

line 3 glyphs: CALL PROC, CALC (var 1 = var 1 + 2)
Here, the green area is called. this is responsible for the actual drawing of the tentacles, an action that is repeated for each frame of animation. After calling the tentacle procedure, a new value for the angle of each element of the tentacle is calculated (and is two higher than in the previous iteration). The value for angle wraps around at 127.

line 4 glyphs: CALL PROC, REPEAT (27), RETURN
This final line of the main program pretty much just ties things up. First, a procedure is called (shown in yellow at the bottom of the diagram). This procedure sets the amount of pause seen in each frame, amounting to the speed of the animation. The whole process from line 2 (the first CLEAR SCREEN glyph) to line 4 is then repeated 27 times. The RETURN glyph signals the end of the main program.

3. GREEN AREA: First proc
line 5 glyphs: FORWARD (13), LEFT (var 1), REPEAT (5)
Contains the instructions for drawing a single tentacle. The turtle moves forward for 13 units, and turns left by the number of vegrees set by variable 1. By the way, 32 vegrees is equal to 45 degrees. The maximum rotation of one LEFT or RIGHT glyph is about 179 degrees (127 vegrees). These motions are then repeated 5 times, indicating the number of elements in each tentacle.

line 6 glyphs: HOME (rotation = on, turtle = invisible), RIGHT (32), REPEAT (8), RETURN
Here, the whole collection of tentacles comes together. First, the turtle travels home, so that the next tentacle will be drawn from the same origin as the previous one. Memory of rotation is kept, so that each tentacle will be drawn 1/8th of a full rotation from the previous one. Next, a 1/8th rotation (32 vegrees or 45 degrees) is performed, so that the next tentacle can be drawn. The process from lines 5 and 6 is then repeated 8 times. The RETURN glyph signals the end of this procedure.

4. YELLOW AREA: Second proc
line 7 glyphs: CLEAR SCREEN (lightspeed = off, don't clear screen = on), REPEAT(6), RETURN
The aim of this procedure is to slow down the speed of animation if it is too quick. First, the speed is slowed down from lightspeed (without the screen being cleared). This is required, since without this, the individual frames would not be seen (only the net result of loops and calculation). This step is then repeated a number of times, in effect pausing the frame. The RETURN glyph signals the end of this procedure also (suprise, suprise).

I know this is quite a simple logo patch. I have decided to write all this down, because it helps to clarify things in my mind. Next time I may take a little video of a vectrex animation...

Tuesday, March 31, 2009

Luke Altmann Interviews Hidden Village

Luke Altmann is an Adelaide-based new music composer, curator and gallery director, and runs the de la Catessen Gallery on Anster Street in the CBD.

In the chiptune community Lauren Tomczak and Sebastian Tomczak, as Hidden Village, are internationally recognized. They draw upon an eclectic collection of retro game consoles, such as the Atari 2600, Vectrex, the Sega Master System and Mega Drive, utilising recently developed sound software to create a performance duo. They endeavour to explore the use of relatively unconventional hardware and software in music making, such as the use of mobile phones as homebrew portable instruments and the construction of self-designed digital sequencing devices from scratch as performance.

Additionally, they have designed and implemented a number of physical interfaces for use in musical performance involving light and water as well as an interface for the Vectrex videogame console. They have performed at the Australian Computer Music Conference (2006), the Tyndall Assembly Concert Series (2007), and expanded to perform as Hidden City for the opening of the 2008 Adelaide Festival of Arts, alongside Stephen Whittington, Luke Harrald, Derek Pascoe and the Zephyr Quartet. The closing concert of AFUM 09 is one of Hidden Village’s major performances for 2009, and will feature a keyboard-controlled walkman-mellotron, singing bowls, and live VGA hacking.


Obviously, I had some questions to ask them ahead of this, beginning with a request for their definition of the under-represented art of Chiptune:

HV: Chiptune or chipmusic is the use of obsolete video game consoles and computers in music composition, production, and performance. The movement revolves around the use of sound chips. However, the meaning of the word has changed over time; originally, the term chiptune was used to describe a certain kind of Amiga music in the very late eighties and early nineties, so it was a very narrow use of the word.

Since then, the word has become broader in its application, and today includes music that was made using emulation, music that has its roots in inspiration (music that uses sounds that imitate sound chips rather than emulate), and music that uses traditional instrumentation to complement (or to be complemented by) chipmusic instrumentation. Currently, popular consoles and computers within the chipmusic scene include the Nintendo Game Boy, the NES, the Commodore 64, and the Amiga. However, a wide variety of consoles are in use today.


LA: Most activities of the growing international chiptune community are conducted online. Why are live performances so rare?

HV: Are live performances so rare? They are in Adelaide, but even in Melbourne and Sydney the numbers of concerts and shows featuring Game Boys and Nintendos are increasing. In the US, the UK and Europe, and parts of South-East Asia, live chipmusic performance is more common than here in Australia.


LA: Chiptune music, pervading areas of private entertainment otherwise closed to art music - namely computer and video games - has undeniable connotations of introverted escape. How do people respond to hearing this music in the context of a public concert in room full of strangers?

HV: The responses of people will undoubtedly change depending on the material that is presented as well as their own connection (if any) to these types of electronic sounds. For Hidden Village, chipmusic at its core represents an exploration of decontextualisation and an exploration of constraints - both technical and, as a result, timbral. So in this sense, it is hoped that people do no necessarily connect any feelings of nostalgia directly with our music but, rather, hear these sounds in a new light, in a new context.


LA: Do you perform as though playing a game, thus building a piece out of personal responses to unforeseeable dilemmas hidden from the audience, or do you largely compose pieces in advance with a focus on musical development in the more or less traditional sense?

HV: Our performances are a mix of through-composed music and improvisation in the sense that the structure and form of a work is not set but certain phrases and instrumentation are set beforehand. In our performance for the AFUM, we are combining aspects of chipmusic, live sampling, improvisation, and field recordings, with a healthy dose of humour and reflexivity, as well as some more serious minimalism.


LA: The late Tristram Cary was a pioneer of finding new musical uses for old electrical equipment - starting with discarded WWII navy surplus components - and also played a central role in the institutionalisation of electronic music in Australia. We now see Hidden Village taking a similar do-it-yourself approach as graduates of the Adelaide University's state-of-the-art Electronic Music Unit to which Cary contributed so much. Is this a consciously ironic reaction to the standards of academia or a warm acknowledgement and deep bow to your musical roots? Or both?

HV: I would have to say it's more of a deep bow to our musical roots. The use of DIY aesthetics and ideologies have been a part of electronic music for as long as music has been electronic - this sense still runs strongly through modern music technology academia. However, the use of hacked, modified or subverted obsolete technology - especially hardware-oriented applications - is something that is not so popular today in academic circles… we are all very good at looking forwards and never looking back. So perhaps in a sense there is a little sense of irony, or at least a sense of going against the grain.


LA: It's important to point out that your prominent use of otherwise obsolete and culturally era-specific thus nostalgic equipment does not represent a rejection of current audio technology, which in fact you constantly utilise and explore alongside the vintage models of - for example - Atari and Vectrex. Is this co-existence of old and new employed simply through a need to make various old interfaces compatible with contemporary technology while using their limitations as a structure for performance, or a need or desire to expand the language of musical expression through which you communicate to the public?

HV: We would have to say that the use of obsolete technology in our music and performances represents a need to use a different language of musical expression than what might be otherwise available, especially in the areas of timbre and texture. Technology from different eras has different characteristics and as a result different positive attributes. We don't see a need to exclude certain technologies based on their age or function but rather try to find a use for a range of different technologies in music performance.

Thursday, March 04, 2010

"Commiseration" (Vectrex Track)

http://chipmusic.org/little-scale/music/commiseration-vectrex-ay-3-8912

Friday, October 26, 2007

MIDI controlled vectrex: custom volume envelopes

The sound of a Vectrex videogame console is controlled via MIDI information within ProTools.

In this example, a number of custom volume envelopes are used. The MIDI information contains directions as to when the envelope should change its shape.

More coming soon.

Video URL: http://www.youtube.com/watch?v=QfbMPwMZn8w

Tuesday, April 03, 2007

Hidden Village live at The Trianide


Yep. Last night we played at The Trianide at the Gallery de la Catessen on Anster Street. It was actually a very stressful night, but the set was not too bad. Mycorrizha had their debut set and West'n'Mitchell also presented some 3D video. All in all a good night, which makes we want to organise another one at some stage. But not too soon!

For the Hidden Village set:
Lauren - Vectrex Animations, Commodore 64 w/ Cynthcart 1.0
Seb -
Vectrex Animations, Gameboy w/ LSDJ 3.3.6 and DS Lite w/ Nanoloop 2.0.1
Jordan - Tetris


You can check out a cross section of our set here (only 1:36 - so no excuse!): http://www.youtube.com/watch?v=6WDtztSsxkc






Monday, March 30, 2009

Programme Announced for AFUM09

Adelaide Festival of Unpopular Music - AFUM 2009

April marks the end of the fourth year of musical activity at de la Catessen. To celebrate, a selection of musicians with a special emphasis on those working in Adelaide’s underground, experimental, and academic fields will present a series of concerts from April 12-23. The programme is as follows:



Sunday, April 12th, 3:30pm
Monday, April 13th, 6:30pm
$20/$15
ALEKSANDR TSIBOULSKI & JACOB CORDOVER
Classical Guitars

Five years after their intensive collaboration at the Banff Centre in Canada, two of Australia’s most gifted young guitarists come together for a one-off reunion tour across Australia. The versatile programme will feature solo sets, and duos, including the rarely heard contemporary virtuosic masterwork “Clocks” by American composer Joan Tower, Antonio Jose’s “Sonata”, and “Three Duets” by Australia’s own guru, Phillip Houghton.

Jacob Cordover resides in Barcelona, and this will be his first concert performance in Adelaide.



Monday, April 13th, 3pm $10/$8
DAVID KOTLOWY: prepared guitar, ruined piano, shakuhachi
ADE SUHARTO: dance
STEVEN KOTLOWY: bowed metallophones

Leading Adelaide composer David Kotlowy gives his final performance here before embarking for an extended stay in Japan as the 2008 recipient of the Bank of Tokyo-Mitsubishi Japan Travel Fund.



Tuesday, April 14th, 10pm $5
DEREK PASCOE
saxophone

Derek Pascoe is among the leading free improvisers in Adelaide, whose rigorous approach to musical self-discipline gives a profound assurance to his rare extended solo public performances.


Wednesday, April 15th, 8pm $5
JASON SWEENEY with Tristan Louth-Robins:
Panoptique Electrical

Panoptique Electrical is both an experimental studio project by Jason Sweeney and occasional collaborations with Zoë Barry, Jed Palmer, Tristan Louth-Robins (live performers) and Steve Phillips (Sensory Projects record label). Sweeney has been composing sound and music scores for live theatre, dance, film/video and installation projects since 1998. The first album Let The Darkness At You was released in 2008. The new album Yes to Fear, Yes to Desire will be released in July 2009 on Sensory Projects/Inertia Music.



Thursday, April 16th, 8pm FREE
CHRISTIAN HAINES

This performance by Christian Haines will an eclectic exploration of the mobile phone, Ligeti, failure aesthetics and the highly relevant amplification of the sound of ice melting.



Sunday, April 19th, 8pm $5
TRISTAN LOUTH-ROBINS

Using a combination of laptop, turntable and iPod, Tristan Louth-Robins (red_robin) creates live electro-acoustic improvisations of rich sonic textures interspersed with restrained melodic gestures and deviations.



Monday, April 20th, 8pm $5
MINIMAX
featuring
LUKE HARRALD - computers
DEREK PASCOE - saxophone
CHRIS MARTIN - piano

As a collaborative project between electronic music teacher Luke Harrald and the gestalt of the accomplished free-impro duo of Martin and Pascoe, MiniMax offers a complex live audio-visual performance.



Tuesday, April 21st, 8pm
BITCHES OF ZEUS
solo sets and trio by
DANIEL VARRICCHIO
PATRICK SARACINO
MOURGOS GRUND

Post-rock-logged sponges of musical performance practice: intuitive, unpredictable, uninhibited, confronting, self-taught, and psychedelic, Bitches of Zeus members Varricchio, Saracino, and Mourgos Grund offer sibylline commentary on unpop-culture.



Wednesday, April 22nd, 9pm
ADAM PAGE SOLO

Adam Page Solo is at the forefront of a new and unique style of performing, recording live instruments into loop pedals and spontaneously composing intricate grooves in many different styles. Primarily a Saxophone player, the instruments Page loops are as diverse as Bass, Keys, Percussion, Vocals, Tuvan Throat Singing, Beat Boxing, Guitar, Flute, Clarinet, Mbira (African Thumb Piano), Didgeridoo and Nose Flute in styles ranging from Funk, Tango and Punjabi to Classical, Jazz and Metal. He has even dabbled in playing drilled out vegetables.



Thursday, April 23rd, 7:30pm
HIDDEN VILLAGE

As Hidden Village, Lauren Tomczak and Sebastian Tomczak are internationally recognised musicians of the online chiptune community. They draw upon an eclectic collection of retro game consoles, such as the Atari 2600, Commodore 64, Vectrex and original Gameboy, utilising recently developed sound software to create a performance duo. They endeavour to explore the use of relatively unconventional hardware and software in music making, such as the use of mobile phones as homebrew portable instruments and the construction of self-designed digital sequencing devices from scratch as performance.

Additionally, they have designed and implemented a number of physical interfaces for use in musical performance involving light and water as well as an interface for the Vectrex videogame console. They have performed at the Australian Computer Music Conference (2006), the Tyndall Assembly Concert Series (2007), and expanded to perform as Hidden City for the opening of the 2008 Adelaide Festival of Arts, alongside Stephen Whittington, Luke Harrald, Derek Pascoe and the Zephyr Quartet.

The closing concert of AFUM is one of Hidden Village’s major performances for 2009, and will feature a keyboard controlled walkman-mellotron, singing bowls, and live VGA hacking.

Friday, May 04, 2007

Vectrex stuff for the win!

My package from madtronix.com eventually arrived (after circa six months). But it has been worth the wait. I received:
So far i have used the 3D imager and the lightpens with the multi-cart. Can't wait to get into the Vecvoxx.

Thursday, October 30, 2008

VecM (Vectrex MIDI Interface) Announcement Group

I have made a Google Group for announcements regarding the VecM - the MIDI interface for the Vectrex console.

Here is the link: http://groups.google.com.au/group/vecm-announcements

Tuesday, May 23, 2006

Hidden Village at Tyndall Assembly concert 5









So last week Lauren and I played at the fifth concert of the Tyndall Assembly series. There were not that many people there when we played- which is unfortunate (for those that weren't there ;). We played two pieces: Black Dog White Dog and Toriton (for one).

You can watch a one minute video containing excerpts from the performance here (mov, 1.2mb). If you are unable to watch it, please let me know and I will convert it to a more friendly format. It is just the same feed as was shown on the TV and the projector, so it is not 'the whole performance' on one screen. Or something.

The idea behind Black Dog White Dog is to have a 'visual score' written on the Vectrex Logo program. The score is comprised of three movements, held in banks 1-3 of the Vec. The Vectrex is then filmed via a video camera, which is on its side to compensate for the machine's unique screen dimensions. The video signal from the camera is then routed to a 51cm TV. The output from the TV was further routed to a projector, so the audience could properly see the Vect animations.

Connected to the TV was a set of twenty-four light dependent resistors (whose resistance lowers the more light is presented to them), each replacing certain buttons in one of four 'recreated' Atari 2600 CX50 control pads. These four matrix sets where plugged into two Atari 2600's each running a copy of Paul Slocum's Synthcart. The catch is that the LDR's are not the standard, cheap 10MΩ or even 1MΩ types. Those cheaper ones could not lower their resistance enough to allow notes on the Synthcarts to trigger. After a quick test, I realised roughly 3-4KΩ is required for the task; however, the 1MΩ model only goes as low as 6-7KΩ when the television is at it's very brightest. In the end, I ordered 0.5MΩ models from interstate. They work very quickly and very well, however the TV must be calibrated properly in terms of having the correct brightness and contrast.

Below you can see the layout of the four pads.
                Left Atari              Right Atari
Button Pad A Pad B Pad C Pad D
1 X X X
2 X
3 X X
4 X X X
5 X X X
6 X
7 X X
8 X X X
9 X
* X X
0 X X
# X

Both Ataris' visuals where routed to two 34cm TV, and the Synthcart was set to lightshow mode, a simple (yet effective and very cool looking) visualisation based on the notes that each 2600 is playing. Both Ataris had had a direct audio modification performed on them. The audio from the left Atari was played directly through a Marshall guitar amp. The right Atari was through a Behringer bass amp. Both Ataris were set to square and lead voicing.

Here you can view the Logo patches for the three movements.



Below is a picture of me playing the piece for water surface, Toriton (for one).

Saturday, April 22, 2006

Vec logo





The logo arrived yesterday. I am very impressed. Easy to use and understand, yet powerful in its programming functions. It definitely can push the vectrex to and beyond its limits (I've crashed it many times already). I cannot wait to explore recursive pictures via this method further.

My one problem with this package? The overlay is about 2mm too short to fit into the vec's slots! So, I have had to use some tape to stick it to the vectrex...