source: buchla-emu/readme.txt@ 2f9f352

Last change on this file since 2f9f352 was 2f9f352, checked in by Thomas Lopatic <thomas@…>, 7 years ago

Added SDL2_ttf.

  • Property mode set to 100644
File size: 5.0 KB
Line 
1Buchla 700 Hardware Emulator
2----------------------------
3
4This repository, buchla-emu.git, contains a software emulation of the
5Buchla 700's hardware.
6
7It is minimalistic; it emulates just enough of the hardware to be able
8to run the firmware from the companion repository, buchla-68k.git.
9
10We don't have access to original hardware, so this is our best guess
11based on the firmware source code published by Lynx Crowe - the
12firmware's developer - via Aaron Lanterman:
13
14 http://lanterman.ece.gatech.edu/buchla700/
15
16See the buchla-68k.git repository for the firmware source code.
17
18
19Building the emulator
20---------------------
21
22The emulator uses SDL2, an abstraction layer for low-level machine
23access on Linux, OS X, and Windows. It can be obtained from the
24project's website:
25
26 https://libsdl.org/
27
28The SDL2 website also hosts the SDL2_ttf project, which adds support
29for TrueType fonts to SDL2. SDL2_ttf, in turn, requires the FreeType
30library, which is available from the FreeType website:
31
32 https://www.freetype.org/
33
34Currently, the emulator supports Linux and OS X. A port to Windows
35should be pretty easy, given that it doesn't use any platform-specific
36features, just C99 and SDL2.
37
38Our Makefile expects all of the above libraries to reside in
39/opt/sdl2. This is how we typically install them:
40
41 # Build and install FreeType first
42
43 tar zxvf freetype-2.7.1.tar.gz
44 cd freetype-2.7.1
45 mkdir build
46 cd build
47
48 # Skip the optional features (compressed fonts, etc.) that would
49 # create more dependencies
50
51 ../configure --prefix=/opt/sdl2 \
52 --without-zlib --without-bzip2 --without-png --without-harfbuzz
53
54 make
55 make install
56
57 # Then build and install SDL2
58
59 tar zxvf SDL2-2.0.5.tar.gz
60 cd SDL2-2.0.5
61 mkdir build
62 cd build
63
64 ../configure --prefix=/opt/sdl2
65
66 make
67 make install
68
69 # Build and install SDL2_ttf last
70
71 tar zxvf SDL2_ttf-2.0.14.tar.gz
72 cd SDL2_ttf-2.0.14
73 mkdir build
74 cd build
75
76 ../configure --prefix=/opt/sdl2
77
78 make
79 make install
80
81Now that we have everything in place, invoke
82
83 make buchla
84
85from the top-level directory of this repository to build the emulator.
86
87
88Emulated hardware
89-----------------
90
91Here's what we emulate:
92
93 * Motorola 68000 CPU. This is actually the Musashi CPU emulator by
94 Karl Stenerud:
95
96 https://github.com/kstenerud/Musashi
97
98 * Motorola MC6840: Timers.
99
100 * Motorola MC6850: Serial console and MIDI ports.
101
102 * Epson SED1335: LCD controller.
103
104 * Intel 82716: Video chip.
105
106 * National Semiconductor LMC835: Equalizer.
107
108 * General Instrument AY-3-8910: A sound chip, which is not used for
109 sound generation, but only for its I/O ports. It connects the CPU
110 to the above equalizer chip.
111
112 * Western Digital WD1772: Floppy disk controller.
113
114 * A few LEDs.
115
116 * Item X: A program running on a microcontroller. It converts the
117 analog signals from the Buchla's controller pads to digital
118 values.
119
120 Neither the program, nor the microcontroller are known, but the
121 protocol (known from the firmware source code) is pretty simple
122 and self-explanatory.
123
124 * Item Y: The actual sound generator, referred to by the firmware
125 source code as "the FPU." This could actually be two chips:
126
127 1. One chip, maybe a DSP, for generating the 15 different
128 parameter envelopes for each of the 12 voices:
129
130 - 4x FM modulator (oscillator) frequency.
131
132 - 6x FM modulator (oscillator) envelope.
133
134 - 1x Output signal amplitude envelope.
135
136 - 1x Output signal filter envelope.
137
138 - 1x Output signal filter resonance envelope.
139
140 - 1x Output signal stereo location.
141
142 - 1x "Dynamics." (TBD - currently not emulated.)
143
144 Over time, the chip interpolates between the points of the
145 envelopes drawn in the MIDAS VII instrument editor.
146
147 2. A second chip for the actual sound generation. This is likely
148 a DSP, possibly a Hitachi HD61810, which supports a 16-bit
149 floating-point format that's also found in the firmware
150 source code (12-bit mantissa, 4-bit exponent).
151
152 This chip takes in the current levels of a voice's envelopes
153 and, based on them, performs the FM synthesis for this voice
154 by modulating the user-drawn carrier waves A and B according
155 to the selected FM configuration (algorithm).
156
157 We don't know how many of the envelopes not related to FM
158 (e.g., the filter) are actually used digitally. At least some
159 of the envelopes probably control analog circuits.
160
161 Obviously, the emulator does everything digitally.
162
163 This "two chip" hypothesis would be in line with the "four
164 computers" marketing claim from the Buchla 700 marketing copy. The
165 four "computers" would be the Motorola 68000, the microcontroller
166 that does the A/D conversion of the pad inputs, plus the two CPUs
167 that constitute "the FPU."
168
169If you have access to an actual Buchla 700, please do contact us. It
170would be great to be able to compare the emulation to real hardware.
171
172If it's non-functional, this is also fine. We might be able to gain
173some insights from reading the FPU microcode PROMs.
Note: See TracBrowser for help on using the repository browser.