This is just a small temporary page I kluged together regarding some info on these chips. Sorry for the mess.
As soon as I find my old papers, I am going to fix things and add a lot
more here. An email from Japan I did got regarding the use of OPK chip prodded
me into action, and here's some of the most vital stuff to get these
chips to work - programmed from your own controller.
I've made a custom module prototype that does also MIDI drums on the OPK, but it's not much fun.
Those few good instruments on the synths that use this chip are unfortunately
obtained by a constant updating of registers in OPK and not by the chip
itself - meaning - to get good sounds out of it, you have to do additional LFO and envelope generators in software. This is done even in the ever-so-simple PSS-26.
Besides 8 channels of 2-op FM, OPK has built in drum rompler extension
along with it's WaveROM. While otherwise similar, OPU (YM3420) does not
have drum extension, whereas OPJ (YM7137) has much smaller WaveROM and
only four short drum samples.
There are 256 registers, lower half of which is only for FM, and
upper half is for extensions. Drum rompler extension uses first 5 bytes
of it.
Drum WaveROM contains
65536 samples. As far as I remember, it's compressed with some kind of
4-bit DPCM to 32kbytes. There was also some kind of fade-out envelope
built into playback engine of drum channels. Here's it's entire
waverom: take a listen.
addr:
$80 pcm chan0
$81 pcm chan1
$82 pcm chan2
$83 pcm chan3
$84 trigger: 0 | 0 | 0 | 0 | trig_ch3 | trig_ch2 |trig_ch1 | trig_ch0 , active low
Accessing sequence example to play drums:
------
addr=$83 data=$81 <-- writing to channel 3 value $81 (bassdrum)
addr=$84 data=$07 <-- trigger, use idle 00001111 and then zero the bit of the channel(s) to trigger
addr=$84 data=$0F <-- release trigger
------
addr=$82 data=$11 <-- snare
addr=$84 data=$0B
addr=$84 data=$0F
------
addr=$81 data=$25 <-- hihat closed
addr=$84 data=$0D
addr=$84 data=$0F
------
addr=$81 data=$34 <-- hihat open
addr=$84 data=$0D
addr=$84 data=$0F
------
addr=$80 data=$C2 <-- tom
addr=$84 data=$0E
addr=$84 data=$0F
------
addr=$80 data=$53 <-- ride
addr=$84 data=$0E
addr=$84 data=$0F
------
Trigger is held activated for at least 188uS.
Upper bit actually is a "slow playback" bit, that trigger the sample 2x slower - used for bass drum and tom.
Playback samplerate is about 37.29kHz for the "normal" speed and 18.65kHz for "slow".
Using other addresses gives some glitches and there was one fun address
that plays the entire rom. Will dig up more precise info later on.
Chip initialization sequence (after power on/reset) is done this way:
addr=$01 data=$FF
addr=$12 data=$01
addr=$42 data=$0B
addr=$13 data=$01
addr=$43 data=$0B
addr=$16 data=$01
addr=$46 data=$0B
addr=$17 data=$01
addr=$47 data=$0B
addr=$1A data=$01
addr=$4A data=$0B
addr=$1B data=$01
addr=$4B data=$0B
addr=$1E data=$01
addr=$4E data=$0B
addr=$1F data=$01
addr=$4F data=$0B
addr=$2A data=$2D
addr=$2B data=$2D
addr=$2E data=$2D
addr=$2F data=$2D
Here's entire Yamaha PSS-26 demo song OPK/OPK2 bus access log, that you
can use to verify functionality of your design. BIN data file can be
played back using your own custom routine. Just read the file in byte
quartets, and then use first two bytes as a timing, and then the
following ones as address and data. I attached a txt file with
transcription for looking through it manualy.
Yamaha PSS-26 demo song in full length - all bus accesses: ZIP file with BIN and TXT
If you build something interesting out of it, give a credit where it's due. Have fun ;-)
Vestigial remnants of the forked page are below. Those are going to
be there for a while, until I update them into something visual about
OPK.
Custom sound module with OPJ on the left. Terrible short drums and 2-op, but oh well.. |
|
|
Page currently under development. As usual.