== Overview == The Buchla 700 is a synthesizer released in 1987. It was conceived and built by Donald Buchla together with Lynx Crowe, who wrote the firmware for the 700. Some years ago Lynx kindly allowed Aaron Lanterman to release the firmware source code on his website: http://lanterman.ece.gatech.edu/buchla700/ While our modifications to the original firmware are in the public domain, Lynx's terms still apply to the underlying original firmware code. The Buchla 700 is a 12-voice polyphonic synthesizer using frequency modulation, wave shaping, and wave shape interpolation to create its sounds. In contrast to many instruments of its time, it did not use a traditional keyboard as input, but an array of touch sensitive membrane keys. In addition to the built-in LCD display, an external monitor can be connected for editing of sounds. This is a walk-through of some simple functions which might be of interest without sound. === Starting MIDAS === On emulator startup, three windows will appear that emulate three different components: - The external monitor, which will still be blank. - The built-in LCD display, showing `Buchla 700 -- BIOS/FIRMWARE by D.N. Lynx Crowe`. - The serial debug console, showing an orange cursor. Make sure that the debug console window is in focus and then press `r`. Then `Buchla 700 BIOS / Debug PROM` should appear and there should be a `ROMP:` prompt. You are now talking to the 700's built-in debug monitor via one of the 700's serial ports. Now, in the debug monitor, type `midas` and press `Enter`. This will load the MIDAS operating system from the floppy disk image, `buchla.disk`, which came in the ZIP archive with the emulator. This will take a while - floppy drives were slow! Once MIDAS has been loaded, you'll get another `ROMP:` prompt. Now type `go $10000` to actually run MIDAS. The external monitor should now show a menu and the LCD display should show faders. You can exit the emulator at any time by pushing the `Esc` key. === User Interface === The emulator is usable via a combination of mouse and keyboard. It is possible to connect an actual mouse to the 700’s serial port, so even if it might be somewhat unusual by modern standards we have kept it. Approached from a modern perspective the interface of the 700 needs some adjustment. Certain keys have different values in different situations and sometimes even function differently depending on which area the mouse is hovering over. ==== Using the Mouse ==== Usually, moving your mouse moves the mouse pointer of your operating system. In order to virtually connect your mouse to the emulator: - Make sure that the external monitor window is in focus. - Then push the `Cursor Down` key of your keyboard. Now your mouse should move the 700's mouse pointer. In order to disconnect your mouse from the emulator again: - Make sure that the external monitor window is in focus. - Then push the `Cursor Up` key of your keyboard. In general, the left mouse button selects something, whereas the right mouse button always takes you back to the main menu. ==== Using the Keyboard ==== The keyboard mapping depends on which emulator window is currently active. Let's take a look at what things are like with the LCD display active. After starting MIDAS, the LCD display looks like this: [[Image(lcd.png)]] The display is subdivided into 14 columns. When looking at a real 700, each of these 14 columns has a corresponding button and a corresponding fader right below it. Note the text at the top of each column: `Quiet`, `ROMP`, `Lamp`, ... This text says what each of the 14 buttons is currently configured to do. These 14 buttons are mapped to `Ctrl + a` - `Ctrl + n`. You've already met ROMP, the 700's debug monitor. Let's try something. The text at the top of the second column says `ROMP`. Now push `Ctrl + b`, i.e., the button associated with this column. Note how this breaks into ROMP in the serial debug console window. Activate that window and enter `go` (this time without `$10000`) to leave ROMP again. There is also text at the bottom of each column: `Locn`, `Level`, `Ind 1` ... This text says which parameter each of the 14 faders is currently assigned to. The lines in the middle of each column indicate the current position of each fader. The faders are moved up with `a` - `n` and moved down with `Shift + a` - `Shift + n`. For example, now push `b` a few times to move the fader of the second column (`Level`) up. Then push `Shift + b` a few times to move it down again. And that's it for the LCD display. All in all, here's how you interact with this window via the keyboard: || Keys || Function || || `Ctrl + a` - `Ctrl + n` || Push button 1 - 14 || || `a` - `n` || Move fader 1 - 14 up || || `Shift + a` - `Shift + n` || Mover fader 1 - 14 down || Let's now take a look at which keys we can use when the external monitor window is active. Notes can be triggered via a MIDI keyboard or via 24 built-in keys. These keys are mapped to `Shift + a` - `Shift + x`. The 700 also has 10 data entry keys, 0 - 9. These are used whenever numerical data needs to entered. In some contexts, keys 8 and 9 also increment and decrement numbers, respectively, or toggle functions. These 10 data entry keys are mapped to the number keys `0` - `9`. Just like on a real 700, `8` and `9` also provide the extended functionality of decrementing, incrementing, and toggling. Then there are the E, M, and X keys: - The E key (edit?) generally works like a left mouse click, i.e., it selects something to be edited. - The M key (menu?) generally works like a right mouse click, i.e., it always takes you back to the main menu. - The X key (cross-out?) is generally used to delete or remove something. These three keys of the 700 are mapped to `e`, `m`, and `x`. And that's it for the external monitor. All in all, here's how you interact with this window via the keyboard: || Keys || Function || || `0` - `9` || Data entry || || `8` || In some contexts: decrement or toggle || || `9` || In some contexts: increment or toggle || || `e` || E key (left mouse click) || || `m` || M key (right mouse click) || || `x` || X key || === MIDI Configuration === It is possible to control the emulator with a MIDI keyboard. Currently, the emulator must be started from the command line with the extra argument `-m` followed by the desired MIDI port. An example command for doing so on OS X with MIDI port 1: `./buchla-os-x -m 1` In order to list the available MIDI ports use `list` instead of a MIDI port: `./buchla-os-x -m list` == A Little Exploration == Let's try a few things to get a little more familiar with some user interface concepts of the 700. === Librarian === To save a setting, select ''Librarian'' from the main menu.. Enter a filename by clicking in the orange box to the right of ''FILENAME'' and selecting the letters of the desired name of your file from the character selection menu. When you are done, select the ''*'' symbol to close the character selection menu. Then click ''Store'' and then the type of setting you would like to save (''Waves'', ''Assgn'', ''Score'', etc.). Your data will be stored on the virtual floppy disk image, `buchla.disk`. The image is a FAT-formatted 720-KiB 1.44" floppy disk, by the way. You can access it with any tools that support FAT file systems. === Score Editor === The ''Score editor'' menu item allows you to record and arrange performances. It is possible to record a MIDI Sequence in the emulator. To do this, hover the cursor over the green star of the groups in the ''GROUP/INSTRUM'' row. Pressing `9` once will change it to yellow and a second time will change it to red: track is armed. On the bottom of the screen select ''Recrd''. Then, to start recording, select ''Clock'' at the top of the screen. Now the played MIDI notes will be shown in the score. If you do not have a MIDI controller, it is still possible to draw notes. At the top of the screen click on ''Src Local''. In the appearing menu, select ''Step''. Arm one of the groups by hovering over the green star and pressing `9` twice. Select ''Recrd'' at the bottom of the screen. Then, in the top right corner, click on ''Note Edit'' and select ''Begin Nat'' from the menu. Now you can draw MIDI notes on events by clicking (only once!) on the staff (right of the line in the center) at the desired pitch. The score editor will start scrolling and reappear with the drawn note. ''Begin Nat'' will have changed to ''End Note'', allowing you to set the end of the MIDI note by clicking on the desired spot. === Instrument Designer === The ''Instrument designer'' menu item lets you edit the "functions" (Buchla's term for envelopes) for different parameters. The functions (displayed on the graph) are made up of individual points, so called breakpoints, which are interpolated linearly. Clicking on the preview at the top of the screen (''Frq 1'', ''Frq 2'', etc.) allows you to select the function of the parameter you would like to edit. - To edit the last breakpoint: Click on the function graph (or press `e`) and the last breakpoint will become red and disconnected from the preceding breakpoint. Now click at the position that you would like to move the breakpoint to, and the function will be redrawn. - To add a breakpoint: Press `9` (increment) and the last breakpoint will become red, but will still be connected. Now click on the desired position you want the new breakpoint to have. - To remove the breakpoints: Hover your mouse over the number in the ''Pt'' box below the graph. Use the number keys to enter the breakpoint you would like to delete from, e.g. ''05''. Then the 5th and all following breakpoints will be deleted. === Waveshape Editor === The ''Waveshape editor'' menu item allows you to edit the transform function for the oscillator. What looks like a waveform is in fact an array of 254 values which are scanned by the wave generated by the frequency modulation setting. To understand this better, imagine a sine wave oscillating between 0 and 253, it will count from 0 until 253, back down again and repeat. Instead of playing the actual waveform directly, a value is used to look up the value stored in the waveshape table. In our example the sine wave would look up all values from 0 to 253 and then, conversely, from 253 to 0 and repeat. This way, if you draw a diagonal line from bottom left to top right, the scanning waveform will be played unaltered. The waveshape editor shows you the current wave shape being used. Click on a point in the wave or hover over a point and press `e`, this will toggle edit mode. If you move the mouse up or down and wait a second or two for the screen to refresh you will see you have changed the value of single point. To exit edit mode, click or press `e` a second time. Most of the time you will of course want to manipulate more than a single point. For this, move the mouse cursor over the wave shape and press `9` (increment) or `8` (decrement). This will change the ''Width'' setting in the control part of the screen. You can select ''Width 0'' through ''Width 7'' and another option, ''Interp''. The ''Width'' options allow you to "bend" multiple points, 0 being only one point and 7 being the entire wave shape. ''Interp'' lets you draw the wave shape free hand. === Tuning Tables, Patch Editor, Assignment Tables, Sequence Editor === These screens might be fun to explore, but have limited effect in this version without actual sound generation.