source: buchla-emu/readme.txt@ 7eb8971

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

Added SDL2 and FreeType prefix.

  • Property mode set to 100644
File size: 5.1 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 --with-sdl-prefix=/opt/sdl2 --with-freetype-prefix=/opt/sdl2
78
79 make
80 make install
81
82Now that we have everything in place, invoke
83
84 make buchla
85
86from the top-level directory of this repository to build the emulator.
87
88
89Emulated hardware
90-----------------
91
92Here's what we emulate:
93
94 * Motorola 68000 CPU. This is actually the Musashi CPU emulator by
95 Karl Stenerud:
96
97 https://github.com/kstenerud/Musashi
98
99 * Motorola MC6840: Timers.
100
101 * Motorola MC6850: Serial console and MIDI ports.
102
103 * Epson SED1335: LCD controller.
104
105 * Intel 82716: Video chip.
106
107 * National Semiconductor LMC835: Equalizer.
108
109 * General Instrument AY-3-8910: A sound chip, which is not used for
110 sound generation, but only for its I/O ports. It connects the CPU
111 to the above equalizer chip.
112
113 * Western Digital WD1772: Floppy disk controller.
114
115 * A few LEDs.
116
117 * Item X: A program running on a microcontroller. It converts the
118 analog signals from the Buchla's controller pads to digital
119 values.
120
121 Neither the program, nor the microcontroller are known, but the
122 protocol (known from the firmware source code) is pretty simple
123 and self-explanatory.
124
125 * Item Y: The actual sound generator, referred to by the firmware
126 source code as "the FPU." This could actually be two chips:
127
128 1. One chip, maybe a DSP, for generating the 15 different
129 parameter envelopes for each of the 12 voices:
130
131 - 4x FM modulator (oscillator) frequency.
132
133 - 6x FM modulator (oscillator) envelope.
134
135 - 1x Output signal amplitude envelope.
136
137 - 1x Output signal filter envelope.
138
139 - 1x Output signal filter resonance envelope.
140
141 - 1x Output signal stereo location.
142
143 - 1x "Dynamics." (TBD - currently not emulated.)
144
145 Over time, the chip interpolates between the points of the
146 envelopes drawn in the MIDAS VII instrument editor.
147
148 2. A second chip for the actual sound generation. This is likely
149 a DSP, possibly a Hitachi HD61810, which supports a 16-bit
150 floating-point format that's also found in the firmware
151 source code (12-bit mantissa, 4-bit exponent).
152
153 This chip takes in the current levels of a voice's envelopes
154 and, based on them, performs the FM synthesis for this voice
155 by modulating the user-drawn carrier waves A and B according
156 to the selected FM configuration (algorithm).
157
158 We don't know how many of the envelopes not related to FM
159 (e.g., the filter) are actually used digitally. At least some
160 of the envelopes probably control analog circuits.
161
162 Obviously, the emulator does everything digitally.
163
164 This "two chip" hypothesis would be in line with the "four
165 computers" marketing claim from the Buchla 700 marketing copy. The
166 four "computers" would be the Motorola 68000, the microcontroller
167 that does the A/D conversion of the pad inputs, plus the two CPUs
168 that constitute "the FPU."
169
170If you have access to an actual Buchla 700, please do contact us. It
171would be great to be able to compare the emulation to real hardware.
172
173If it's non-functional, this is also fine. We might be able to gain
174some insights from reading the FPU microcode PROMs.
Note: See TracBrowser for help on using the repository browser.