256byteram
Lines on Paper controller (Better sound)
updated
I found an LED matrix board in a box of things and improved on my previous attempt at a visual tuning indicator. The matrix allows for more than just the fundamental frequency to be tuned accurately.
My capture rig started to struggle around 2:21:00. I restarted the capture at the start of the ad break, so there's a glitch there. The video was played on a Sanyo Betacord VTC-9300P and stabilised with a Key West Big Voodoo TBC. I've upscaled it to 720p at 50 fps to try to emulate how it looks on a CRT.
See how long you can stick with it!
0:00:00 Ads
0:00:34 News break - Bruce McAvaney & Keith Martyn
0:01:43 Ads
0:06:23 Special Presentation
0:07:00 Royal Charity Performance
0:10:03 Barry Crocker
0:13:58 Ads
0:16:29 Barry Crocker - Opening monologue
0:19:28 Laura Mitchell - Another Suitcase in Another Hall
0:23:07 John O'May - And the Money Kept Rolling In
0:27:48 Ads
0:30:22 Christie Allen - He's My Number One
0:33:29 Christie Allen - Don't Put Out the Flame
0:36:40 Ads
0:38:13 Sir Robert Helpmann
0:44:31 Emily Jeffries - Chopin - Fantaisie-Impromptu
0:51:20 Jane Peters - Kroll - Banjo and Fiddle
0:55:01 Ads
0:58:22 The Australian Dance Theatre - Vangelis - Pulstar
1:05:18 Thomas Edmonds - Serenade from the Student Prince
1:09:25 Ads
1:13:38 Julie Anthony - Fame (and impressions)
1:30:13 End of Act 1 - Ads
1:33:15 Tommy Tycho
1:37:29 David Adkins Dancers
1:40:41 Ads
1:43:11 Kamahl
1:56:10 Ads
1:58:53 Colin Curtis - Pembroke Girl's Choir
2:03:12 Barry filling in time
2:06:32 Brian Porter - Annadelle Anthony - Violin
2:11:32 Ads
2:14:00 No Fixed Address - Black Man's Rights
2:20:04 June Bronhill - These are a few of my favourite things
2:21:30 Ads
2:24:28 June Bronhill & Dennis Olsen - Noel Coward - That is the end of the news
2:28:30 Dennis Olsen - Noel Coward - Mad Dogs and Englishmen
2:31:54 June Bronhill - Climb Every Mountain
2:35:39 Ads
2:38:42 Barry Crocker - Camelot
2:47:21 Barry Crocker - closing
2:50:10 Credits
The documentation is here: drive.google.com/open?id=1slncC7zeetj1p60YExDXzRKQC6r5GIFN
The tuner mechanism still needs work. The system is push activated, which switches on a motor to change channels. The whole mechanism is locked up with old grease, but given there's no analog television anymore it's not a huge issue. I just tune my RF modulator to the station it's stuck on. There's a remote control too, on a long cord. A button on top changes the channel and a slide switch on the side mutes the audio.
Apologies for not uploading a video in months! I have been working on projects, but work is getting in the way.
See youtu.be/LS3YdoPCtqE for more information.
The music starts at 1:16. Sorry for it being in monochrome, I'm afraid my VIC-II isn't very well. My joystick didn't want to work either so it took me a bit to start the game.
The crystal oscillator runs at 1MHz. My PAL Commodore 64 is clocked at 0.98MHz. This is approximately a 2% increase so all sounds will have a corresponding pitch shift. A variable oscillator could be used instead of a crystal oscillator, which would give a pitch bend, fifth, octave, or any other interval effect depending on how it's used.
The synthesizer I'm using is my DIY one I made in 2011. It's developed a fault where the oscillator CV won't go above a certain voltage, so there are a few dud notes in this demonstration.
I might make a Hackaday Projects page for this.
EDIT: hackaday.io/project/163761-vacuum-tube-synth-filter
The schematic is a normal state-variable filter but the resistor elements of the filter cutoff have been replaced with diode bridges. Regular silicon rectifier bridges will do. They're controlled by a fourth op-amp which generates a balanced voltage to bias the diodes on and off without causing excessive CV feedthrough.
The only major disadvantage of this circuit is its output amplitude is significantly lower than the input amplitude, but that can be corrected with a fifth op-amp to amplify the signal. This is needed because the diodes saturate if the signal is too loud.
I wanted to keep the op-amp count down to four so a single op-amp package can be used. Most op-amps should work, though a TL074, TL084, etc is preferred.
Typical output voltages are 0.5V peak. Op-amp 2 should have a 10Megaohm resistor across its capacitor for stabilisation.
It works by breaking the video signal down to an equivalent of S-Video, using two filters. The chroma channel goes to a comparator to make it a digital (binary) frequency signal. The luma channel gets compared against four voltage thresholds on four comparators. The five signals are sent to an FPGA which decodes the chroma signal, using the master clock as a reference. That outputs one of 12 possible hues plus the absence of colour. Combined with the current luma value gives the combination of all possible colours, which are looked up in a table and sent to the RGB output.
Apologies for the PotatoCam.
The FPGA development board is a FleaFPGA Classic from fleasystems.com.
The monitor is an NEC Multisync II running at 15kHz line rate.
The games are Super Mario Brothers, Bomber Man II and Binaryland.
I cut the audio out because there was some music in the background. Just in case YouTube stomps on it. Apparently it's piracy if you happen to have a barely intelligible and extremely noisy facsimile of a song that no one in their right mind would enjoy listening to in the background of a video that has nothing to do with music?
Wolfenstein 3D works on it but it has problems, such as bad keyboard input. Sometimes keys work, most of the time they don't. I might look through the source code and see what's going on. Notice how much screen space there is relative to the window!
More information is available at https://crawford.anu.edu.au/pdf/pep/pep-283.pdf and en.wikipedia.org/wiki/Multifunction_Polis
Found on a U-Matic cassette.
Here's what I did to get it going:
First I fixed the dry joints on the power supply board. This bought the monitor back to life. Nothing else needed to be soldered.
CP/M booted but it complained about a read only file. This was the submit temporary file, which was somehow set to read only. I assembled a small program to change the file attributes of the file, then entered that into memory with the boot monitor. It was about 20 bytes.
When I got a prompt, it would crash after pressing enter. I printed the CP/M source listing and started tracing through it. After a bit I noticed 256 bytes (one physical sector) worth of data was completely wrong on the third sector into CP/M, starting at D200h. CP/M itself starts at D000h. There wasn't much else I could do except enter the whole 256 bytes in manually with the boot monitor.
I knew there was a problem however, because should I warm boot CP/M for any reason, it would overwrite the code I entered in memory. I made a backup copy of that data in memory just below CP/M in case that happened. It was just a short bit of code using the LDIR Z80 instruction.
I was incredibly fortunate to find a disk sector editor on the A: partition of the hard drive, so I ran it and modified the faulty sector again manually, entering another 256 bytes.
So now it's working.
The system has a 2.048MHz Z80, 64kB RAM, 3-port serial card, a soft sector floppy controller, a 96 TPI floppy drive and a 10MB hard drive and associated bus interface. The system came with manuals for the internal cards, CP/M and Microsoft BASIC.
I don't have the top cover on it because the fan is clogged up and won't spin. It's a 115VAC fan running off the transformer. The whole thing stunk of WD40 when I opened it...
I decided to have a go at making my own scan doubler. This one needs 2kB of 4-bit RAM (provided in the FPGA) to store a single line, which is then output twice in succession at double the speed. This gives a signal that's compatible with VGA.
There is some sampling jitter, visible when I zoom in, because I'm running the board at 50MHz and the sample rate for CGA/EGA is 14.3181MHz. If I try it at a multiple of 27MHz I might have more luck.
The machine is an NEC PowerMate 1 Plus 80286 with 4MB RAM and a 40MB hard drive. It has an EGA graphics card.
I'm using a FleaFPGA development board from www.fleasystems.com, which is an excellent little board for this sort of thing.
Copyright Telecom Australia. I'm uploading this for historical and information purposes. If the copyright holder wishes this to be removed, please contact me.
Apologies for the terrible videotape skew. I had to adjust the tension on the VCR to its maximum. I didn't use a video frame buffer because it made it worse.
Copyright 1986 Telecom Australia. I'm uploading this for historical and information purposes. If the copyright holder wishes this to be removed, please contact me.
Schematics to follow....
The basic Phantastron circuit and theory is at archive.org/stream/MillmanPulseAndDigitalCircuits1956/Millman_Pulse_and_Digital_Circuits_1956#page/n237/mode/2up/search/phantastron
The big improvement since last time is the circuit now enters nulling mode automatically when the note is off. When the key is released, the circuit switches to track the variable oscillator to the reference oscillator. When a key is pressed, that reference voltage is held to keep the circuit tuned. I adjust the reference oscillator at the end of the video to prove the point. The reference voltage can be seen moving up and down on the oscilloscope when the note is off. There's still a nasty pop when the note turns off so I might need to include something to silence it.
Secondly, I added a voltage controlled amplifier (though it's really an RF gain control) which provides an input for an envelope generator.
Currently the note stops when the key is released so I'll see if I can wire it up to detect when the envelope drops below a threshold before the oscillator enters nulling mode.
This is the transistor and IC incarnation of my previous vacuum tube synth oscillators. There are two RF oscillators, one is a fixed 120kHz reference, provided by a signal generator, and the other is a variable frequency Colpitts oscillator. The VFO is controlled by a control voltage input run through an exponential converter.
The problem faced was trying to get the output to sit at zero Hertz when the frequency input is at zero Volts. The VFO can be higher or lower than the reference frequency and either case makes a sine wave. The further away from the reference frequency the VFO is, the higher the pitch. If the frequency isn't nulled, the tuning will be out, because there's a linear frequency offset on all notes.
My solution is to have a button that does two things. It drives the CV input to a negative voltage which sets the exponential output to zero and secondly it connects the audio output through a sample and hold circuit back to the linear frequency input. This creates a phase locked loop. When the loop is opened to play a tone, the offset voltage is stored in the S&H. It's not perfect (as can be seen) but it means I might be able to make more than one oscillator and not have to null them all individually.
Interference on the microphone was pretty bad from the CRT so I noise reduced it as much as I could and compressed it a little. The vertical lines of interference aren't visible on the CRT. I expect they're caused by bus noise in the II aliasing against the sample rate of the capture card.
Here are some differences I noticed from the PC version:
It runs much slower when there are more than one moving objects on the screen (it's a 1MHz 65C02, give it a break)
The speaker is CPU driven so when there are sound effects the whole game stops.
Some of the graphics around the border seem to be cut off.
Other than that it's an early version of Space Quest II. Later versions are more common on the PC so there are some differences in the game itself, such as when Roger is in the shuttle being taken away from the asteroid fortress.
To get this game running, you will need to run Bag of Tricks on your Apple (after you've written the eight sides of the game to disks) and run the Init program. Make sure the option is set to preserve data, change the label of the first disk, front side to 001, back side to 002, disk 2 front to 003, back to 004 etc., writing changes to each disk.
0:30 John Martin's
1:00 McDonalds, GE prizes
1:30 Esso
1:58 Telecom Telex
2:28 Kit-Kat
2:58 Oil of Ulan
3:58 Bic disposable shaver
4:28 Savings Bank of South Australia
5:12 Juicy Fruit chewing gum
5:41 Yellow Pages
6:11 Close Encounters of the Third Kind, first time on TV
7:03 Pine-o-Clean
7:32 Mars Bars
8:02 Sara Dane closing, Esso
8:22 Sara Dane ad for next broadcast
9:02 Next on Ten
9:11 Selsun anti-dandruff
9:21 1982 Escort Cup
9:51 Buster and Billie, Wednesday movie
10:06 Clock - Australian Motors jingle
10:20 "You can see it all on 10" - Benny Hill
10:46 Esso
11:13 Preen
11:43 South Australian Film Corporation
12:43 Treets
13:12 Vicks VapoRub
13:42 Balfours
14:02 "The Letter" - Sunday night movie
14:14 Savings Bank of South Australia
14:57 Farmer's Union
15:57 Subaru 4WD
16:26 Esso
16:55 Lux
17:25 Aura laundry detergent
17:55 John Martin's
18:25 Olivetti Electronic Typewriters
19:24 Kentucky Fried Chicken
19:54 Stork Margarine
20:22 "The Best of Parkinson in Australia"
20:58 Savings Bank of South Australia
21:41 Weet-Bix
22:11 Le Cornu
22:21 "The Wake of the Red Witch" Tuesday Movie
22:37 Esso
22:45 Sara Dane part 3 ad
23:32 Next on 10
23:42 Simpson
23:52 "Escape to Victory" In cinemas
The film is Killers From Space (1954) from archive.org/details/Killers_from_space
The Python script I mangled together uses multithreading to process as many images in parallel as the system can handle, provided there's enough RAM. This clip took about four hours to render on an i7 laptop.
Circuit diagram is here http://kaput.hopto.org/~thrashbarg/Bandpass.png
The audio transformer is a 100V line transformer.
Here's an FFT of a note. Plenty of intermodulation distortion there. http://kaput.hopto.org/~thrashbarg/Bandpass_fft.png
Some more samples are here. They're both just me playing my synth through it. The filter on the synth was bypassed. The spring reverb file is the filter put through an old reverb tank.
dropbox.com/s/okpb3nskt8c5uc0/Bandpass.mp3?dl=0
dropbox.com/s/xts98hiv2s8dslo/Bandpass_spring_reverb.mp3?dl=0
I replaced the wax capacitors, rectifier valve, tuning cord, light bulbs and added a fuse.
The current setup is ugly. The YM2149 is tacked into the 28 pin socket I've used. I only had one AY-3-8912 but this works. I'll get some more 8912's later.
If there's enough interest I'll have some PCB's made up for it.
The schematic for this adapter is at http://kaput.homeunix.org/II-PAL.pdf
No unusual IC's are used, just regular TTL.
Anyway, the schematic is here
http://kaput.homeunix.org/II-PAL.pdf
Never mind about my schematic. This one's much better: http://www.theremin.us/144/schematicp1.gif from http://www.theremin.us/144/144.htm
My original one would've been broadcasting everywhere.
The timbre control feeds some of the audio output back into the control voltage input, which distorts the sine wave and produces harmonics.
Sorry about the air conditioning blowing on the mic.


