                                   VirtualVS
              A Sequential Circuits Prophet-VS Emulator for Win32


       Original code Copyright 2004 John Manfreda (lordfrito@comcast.net)
                    http://mywebpages.comcast.net/lordfrito/


                     Uses Castaway Motoroloa 68000 emulator
                 Emulator distributed under the terms of the GPL
                      http://www.gnu.org/copyleft/gpl.html
             Source code available at http://castaway.sourceforge.net/

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

LEGAL STUFF:
------------

This emulator is provided freeware and 'as-is'.  You agree to run this program
at your own risk, and accept all responsiblity for its use.  The author accepts
no liability for any loss or damage arising from the use of this emulator.

Permission is grated to upload this emulator to any FTP or WWW side where it
may be publicly accessed, provided:
        - this README file accompanies the executable
        - the original ROMs are NOT distributed with this emulator

All other forms of distribution are strictly prohibited.  This restriction
includes, but is not limited to, distribution in Internet compilation disks /
CDs, shareware libraries, magazine cover disks/cds and any other media
(with the exception noted in the previous paragraph).

Do not distribute this emulator with the original ROM images.  The software in
the ROM images is owned by Sequential Circuits. Under current copyright law,
any unauthorized distribution of the ROM image is illegal.

DO NOT ASK ME FOR THE ROM IMAGES.  ALL REQUESTS FOR ROMS WILL BE IGNORED.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

CONTENTS:

1. Introduction
2. Requirements
3. ROM Image
4. Program Usage
   4.1 MIDI Port Selection
   4.2 Interface
   4.3 Patch Manipulation
   4.4 Waveform Mix Joystick
   4.5 Non-Volatile RAM
   4.6 Cartridge Interface
5. Shortcuts
6. Change Log
7. Acknowlegements

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

1. INTRODUCTION

The Virtual VS is a software emulator for the Sequential Circuits Prophet VS
vector synthesizer. The software allows any PC to emulate the features and
classic sound of the Prophet VS. Think of it as being a virtual rackmount
Prophet VS that sits inside your PC.

The synthesizer generates CD quality sound (16-bits at 44100 Hz). The output is
more or less faithful to the original Prophet VS.

The synthesizer accepts MIDI commands coming in over your MIDI port. It can also
output commands over the port. When connected to a real Prophet VS, patches can
be transferred to and from the Virtual VS.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

2. REQUIREMENTS

The software requires the following
- Pentium 3 or 4 class CPU, at least 1.0 GHz.  2.0 GHz recommended.
- Win32 operating system (Windows 95/98/ME/XP)
- DirectX version 8.0 or later
- DirectSound compatible sound card
- MIDI port (external keyboard connection)

The software has been tested and works well on the following systems:
     Pentium 4 2.0 GHz                  Athlon XP 2100
     512 MB RAM                         512 MB RAM

No guarantees of performance are made for other systems.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

3. ROM IMAGE
------------

Original Prophet-VS ROM images are required to run this emulator.  Software
has been tested on version 1.0 of Prophet-VS software.  Emulator has not been
tested (but should work) with the other available revisions.

The ROM image must be named "VS.bin", and must be placed in the same directory
as the program.

DO NOT ASK ME FOR THE ROM IMAGES.  ALL REQUESTS FOR ROMS WILL BE IGNORED.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

4. PROGRAM USAGE
----------------

The following is a brief overview of the emulator.  It is expected that the user
is familiar with the operation of the Prophet-VS synthesizer.  If necessary, an
operator manual for the synth can be found on the World-Wide Web.


4.1 MIDI Port Selection

Upon executing the program, the user will be welcomed with the MIDI port
selection screen.  Choose the proper input and output ports (if available) to
interface the VirtualVS with your music equipment.

Because the VirtualVS attempts to emulate a rackmount Prophet-VS synthesizer, a
MIDI enabled keyboard is required to transmit note information to the synth.
Without a MIDI enabled keyboard, you will not find much use for the VirtualVS.


4.2 Interface

The program interface is immediately recognizable to users of the Prophet-VS.
All panel switches are present, as well as LED and LCD outputs.

Control usage should be self explanitory.  Click on controls to familiarize
yourself with their operation


4.3 Patch manipulation

Patch manipulation is performed through combinations of switch presses, and use
of the Data Entry slider bar.


4.4 Waveform Mix Joystick

The Prophet-VS allows for real-time vector waveform mixing through the Waveform
Mix joystick.   The VirtualVS emulates this joystick through a mouse driven
interface.

The Waveform Mix joystick appears on the VirtualVS in much the same way as it
would on the Prophet-VS.  Blue triangles with the lettering A B C and D show the
extents of the joystick.  A white "X" cross-hair shows the location of the
joystick.

To move the joystick, simply click on the cross-hair.  You may then move the
cross hair to any valid joystick position.

Wave mixing can be performed in real time.  Experiment with the joystick to see
how it works.


4.5 Non-Volatile RAM

All patch and waveform data is held in non-volatile RAM (NVR).  The VirtualVS
automatically stores NVR data on your hard disk in between program sessions.
The data is stored in the file "VirtualVS.nvr".

During development of this emulator, it was discovered that the Prophet-VS does
not operate completely stable if NVR is in an erased state.  It is strongly
recommended that your NVR be initialized to the factory state.

The file "Factory.nvr" can be found on my web site (address above).  This file
contains the original (as far as I know) factory state of the Prophet-VS NVR.
Place this file in your program directory.

You may at any time reset your NVR state to the contents of Factory.nvr through
the program menu.


4.6 Cartridge Interface

Additional patch and waveform data may be held on Prophet-VS cartridges.

The cartride port is displayed prominently in the VirtualVS.  Right clicking
on the port brings up a menu of cartridge choices.  They are:
  - New        initialize a new/blank VS cartridge
  - Open       load a VS cartridge from file (*.vsc)
  - Save       save the contents of the cartridge to the original file
  - Save As    save the contents of the cartridge to a new file
  - Remove     remove the virtual cartridge from the VirtualVS

Once a cartridge has been inserted, the cartridge button on the VirtualVS must
be pressed to enable the cartridge.  The cartridge is enabled whenever the
cartridge LED is lit.

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

5. SHORTCUTS
------------

Keyboard shortcuts:
        Key           Function
        ---           --------
        0-9           simulates pressing the Prophet-VS Program 0-9 keys
        Enter         simulates pressing the Prophet-VS Enter key
        page up       move the Data Entry slider upwards (a lot)
	up arrow      move the Data Entry slider upwards (a little)
        down arrow    move the Data Entry slider downward (a little)
        page down     move the Data Entry slider downward (a lot)

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

6. CHANGE LOG
-------------

Version 1.1
- Bug fix: PCM data handling changed from unsigned to signed
- Fixed audio popping box.  Audio is now stored as signed, instead of unsigned.
  When unsigned, silence level was arbitrary.  Now silence level = zero.  This
  reduces pops and generally improves the quality of generated audio.
- Fixed foot pedal I/O bug
- Added support for white noise generation
- Waveform mixing / final output volume improved
- Audio enable/disable circuit now supported
- Filtering greatly improved
- Preliminary support for multiple playback sampling rates


Version 1.0
- Initial release

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

7. ACKNOWLEDGEMENTS
-------------------

Motorola 68000 emulation provided via Castaway emulator.  Emulator distributed
under the terms of the GPL. A copy of the GPL may be found at
          http://www.gnu.org/copyleft/gpl.html
Castaway source code is available at
          http://castaway.sourceforge.net/

Standard 4-pole analog VCF code derived from samples shown at the great site
          http://musicdsp.org/

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
