Monday, July 8, 2013

Roland M-240 power supply

Some time ago I bought a Roland M-240 24 channel line mixer. It looks like a nice and compact mixer, but the seller never got around to delivering the power supply / wall wart for it. I have tried googling to figure out what kind of power supply I could use, but have not found any info whatsoever.

So, today I opened the mixer and had a look at the power input board. It is quite simple - no bridge recitifier and no circuit breaker. It has a few huge caps though.

The connector on the back says +/-21.5V DC 500mA. The internal voltage regulators however - AN7812F / AN7815F / AN7912F / AN7915F - can all handle +/- 35V input, so anything between 21.5V and 35V should be fine - it might even work with 18V but this is not guaranteed. Beware that a different voltage than specified may make the voltage regulators run hotter than intended though!

I made a schema of the circuit, it looks like this:

I haven't figured out the value of the ceramic caps though...



Looking at the circut makes me think a bit - the two diodes look very much like they form a half-wave rectifier in conjunction with the 2200uF electrolytic capacitors. I do however take no responsibility if you connect an AC power supply to the mixer and it burns out!

Update, dec 2021: The input is in fact DC, but not well regulated, just rectified and filtered with two caps. I wrote a bit more here: https://atosynth.blogspot.com/2021/12/roland-m-240-psu.html

Monday, April 22, 2013

Prepare to be sawed to pieces!

I've been working on something lately. It involves seven saw oscillators, each to be tuned slightly apart and mixed together, all controlled from the same 1V/oct CV. Can you guess what it is? Does it sound like something you have heard before?

Oh yes! It's the amazing Super Saw! This time in glorious analog :-D

I am fairly certain I will be able to pull this off, but I have no idea of its stability or real sound. I am implementing the circuit part by part. So far I've worked out how to create the detune control slope, the mix curves and the saw oscillators.

The detune pot is not linear, instead it follows a "trumpet" shaped function, somewhat like an exponential function but much sharper than you would be able to create with a normal exponential converter, so I've approximated it using four linear sections in the way described here: http://www.oldcrows.net/~patchell/archives/idealdiode.html (I got the link from Scott Stites on the electro-music.com forum). I've done the math and breadboarded this part of the circuits, and it works as expected although it requires some more work to get a stable +/- 15V.

The mix curves for oscillator 1-3 and 5-7 are essentially exponential functions, and I indend to use the AD633 for that. I have done the math but not yet tried the circuit in practice. The curve for oscillator 4 is just a decending linear function which will be easy.

The oscillators are basically the cores from Yves Usson's VCO: http://yusynth.net/Modular/index_en.html
I've ripped out the main parts - the CV mixer, exponential converter and saw wave generator, leaving out the sine, square/pulse wave, sync possibilities and exponential fm. My version is based on a surface mounted SSM2212 (replacement for the SSM2210) and I've managed to fit all seven oscillators on a 160 * 100 mm PCB. I have also duplicated the power line parts, not sure if this is necessary but I wanted to have the oscillators as separate as possible.

Here is the schematic:
The main thought here is that one can connect one (pre-mixed) 1V/oct CV that goes to all the oscillators, and one detune voltage per oscillator. One could of course connect a separate 1V/oct CV to any of the detune voltage inputs too, to get separate control of each oscillator. One could also attach the missing parts of the oscillators to a separate board to get seven full blown oscillators, but a few modifications will be necessary as there is nowhere to connect the sync and pwm inputs.

Here is the board, almost finished. Ground planes are missing though:


My idea is currently to fit the additional parts - the detune slope and mix curve generators, three VCA/mixers to mix the 7 oscillators, possibly some noise generators and a VCF to a second board of the same size, that can be stacked together with this one for a complete one-voice Super saw oscillator (only leaving out one or more envelope generators.

This is really turning out to be a fun project, I hope I will complete it. Also, I expect it to be drifting as hell,  but that remains to be seen. Perhaps it would be possible to make a digital circuit, compu-tune style for compensating this, that remains to be seen. I am already fantasizing about a six voice analog super saw - imagine the pain of having to keep 42 oscillators in tune...

PS: The board uses 5mm pitch resistors in order to fit everyting in such a small space.


Wednesday, March 13, 2013

Stand alone prototype finished

The first fully functional MPG-200 prototype was finished and shipped yesterday. It features automatic switching between midi and pg-200 mode (with a small modification to the JX-3P), and tries to minimise the fact that switching cannot be done very quickly. In particular, it stores any note off messages received while in pg-200 mode and sends them as soon as it reverts back to midi mode.

The following features have been implemented:
  • all switches and pots from the PG-200 except for write and manual
  • midi passthrough - lets all midi messages not destined for the mpg-200 through
  • note off protection to prevent hanging notes
  • automatic switching between midi and pg-200 mode to allow full control of the JX-3p from a DAW or similar
  • three modes - pg-200 only (blocks midi but keeps delay to a minimum), safe mix (mixes midi and pg-200, but ensures that no message is interpreted as the wrong type by the jx-3p by introducing a "safe time" between modes), mix (switches instantly).
  • queueing of messages in case they arrive faster than the mpg200 can handle them.
  • default CC-to-pg200 mapping

Still to be implemented are
  • Config of CC-mapping and other parameters via sysex, stored to flash memory
  • Configurable midi channel
  • Autosensing of when the jx-3p has noticed a mode change
  • Configurable ranges for the potmeters
The mpg-400 prototype. The "production model" will be using an 8 leg microcontroller with a built in crystal, and will be using at least 7 parts fewer than the prototype.

Tuesday, January 1, 2013

Oh the horror!

I have incredibly bad news to bring to the world at the start of the year. To my horror, I've discovered that the switch between midi and PG-200 modes on the JX-3p is scanned like any other key on the front panel of the JX-3P. Using my logic probe on the scan line while turning both a dial and playing notes at the same time, I have observed the following:


  • The scan frequency varies widely depending on how much work the JX-3P has to do (as is to be expected I guess)
  • The minimum period between two scan cycles is 11.7ms (!) while delays of up to .23 seconds (!!) also occured. This means that the absolute fastest switch between midi and PG-200 data is about 12ms and that I have to use a much higher period to be reasonably sure of not dropping any bytes.



In this screenshot, the first waveform is the serial data (midi/pg-200), the second is the mode-select signal (switches between midi and pg-200), the third is the scanning - notice the big period of blackness in the middle of the screen, here the JX-3P has been working hard and not had the time to scan for changes, resulting in a dropped midi or pg-200 byte. The fourth is the result of the scanning, whenever a scan occurs and the mode select signal is 0, a 1 is returned to the microcontroller - this is seen as long stretches of 1 on the fourth line, in the parts where the scanline still changes rapidly.

This is by far the biggest problem I have faced while working on the mpg-200, and I am afraid this one cannot be solved easily as it is directly related to the way both the hardware and firmware of the JX-3P is built.

I have tried using a "settle time" after changing the mode of about 100ms, that seems to work fine for most hand turned potmeters etc, as long as one does not play fast and turn rapidly at the same time. However, even this means that one has to wait at least 100ms after changing a controller before a new note is pressed (or released). If not, the note will be delayed or not played at all.

So - one can do filter sweeps as long as you hold down the same note, but rapidly changing parameters while playing will probably not work very well :-/


This seems to me like a show stopper for much of what I wanted the mpg-200 to be. It can still be used for tweaking the JX-3P from a daw, but prevents much of the automation that would be cool.

What a bad way to start 2013...

Sunday, December 2, 2012

Ping without Pong!

Eureka! The final major mystery is solved!

Last night I got the MPG-200 working, but when I powered it up again this morning, nothing happened. It was completely dead again and the JX-3P didn't react to any of the input - just the way it has been for the last few weeks.

I opened the JX-3P again and measured the logic signals going to its microcontroller, and sure thing, they were coming through just as they did last night. Still, no reaction.

It then occured to me - what if the PG-200 sends a special message when booting up? To 'ping' the JX-3P, telling it that it's present?

I reconnected the PG-200 and this time I started the recording before turning on the power on the JX-3P. And what do you know - there, just before the first output from the PG-200 controllers, it sent two bytes: An address with the value 128 and an empty (0) data byte.

It actually doesn't send the Ping on startup, it seems it waits untill the first time a controller is changed. I have to look into it to see if this is significant. Anyway, after implementing the same scheme on the MPG-200 (or rather, just sending the Ping 1 second after startup), it works like a charm! Now the MPG-200 works every time :-D

I have however managed to consistently overloading the JX-3P by sending to many bytes. I assume that this is because I ignore the busy-line. When this happens, the JX-3P shuts down (the microcontroller at least) and it stops producing sound. It is quickly fixed by turning power off/on, but this has to be fixed.


Saturday, December 1, 2012

Finally - the MPG-200 is alive!

Success at last! Tonight the MPG-200 successfully controlled the JX-3P for the first time! The current circuit uses the same japanese transistors as the PG-200, but I am still not sure that is necessary. I have tweaked the delays between the address and data bytes (the timing in the PG-200 is about 70uS between the last low of the address byte and the first low of the data byte) and between two blocks of data (PG-200: at least 17.5mS). The current delays for the MPG-200 are 91uS and 20.4mS respectively.

Now I have to get this to work with a more custom delay (or at least drop bytes instead of queueing them up, currently I get a 'delay'-effect of sorts instead of stepping. I also need to figure out how to generate bit masks for the switches. 

Sunday, November 11, 2012

Almost there - MPG200

Well, I thought that tonight would be the night when I got the MPG-200 up and running with the JX-3P for the first time. Alas, I failed miserably ;-)

I've checked the output from both the MPG-200 and the PG-200, and they both output the same signals. BUT - I've forgotten that I implemented running status support on the MPG-200 (which means that the midi device generating the CC messages does not have to send the controller number again as long as it is the same controller as the previous one). The JX-3P on the other hand, does not support running messages, so it has to explicitly get a controller (or address as it is called in the PG-200 service notes) message for every data message. I have forgotten to implement this and instead just send the new controller value. Not a hard thing to fix, but missing none the less.

Here is a picture of my setup btw:




To the left is a macbook connected to a saleae.com logic probe, which I used to decode the PG-200 signals. The white square to the right of it is a prototype card/solderless breadboard, with all the necessary electronics (except for the microcontroller and associated circuitry) for interfacing the JX-3P. Behind that is my good old Mikroelektronika EasyPIC3 development kit, connected to a different PC (behind the synth). This kit holds the microcontroller. To the right of it, just beneath the big screen is the JX-3P, and below it is the guts of the PG-200 (the box is actually under it). To the far right is my Australian Redback edition Little Phatty which I only use as a midi controller in this setup.

Saturday, November 10, 2012

Ask google

For a while now I've been working on the MPG-200 (Midi enabled PG-200). One of the challenges is that while midi is 8 bit serial, the PG-200 runs 9 bit. Because of this, I've been trying to use a normal output pin for transmitting data to the JX-3P, while reading midi using the built-in UART on the microcontroller (PIC 18F series).

Aside from some rather ugly code, I've had some trouble getting the "bit banging" to work fast enough - I tried to send one bit at the time through an interrupt routine, but even with almost no code in the interrupt handler, the minimum delay between invocations was higher than I needed to achieve 31.25kHz transmission.

I did successfully implement a method where data was sent in one go, with NOP instructions in between bits for timing, but that takes a full 1/4000 of a second for each byte, in which time the microcontroller cannot do anything else.

So, to try to figure out how everybody else do their bit banging (...), I asked Google. The first post I found was this: http://www.embedded.com/design/embedded/4006445/Tricks-with-PICs. Here, I discovered something cool. The PIC family can actually transmit 9 bit while still receiving 8 bit! All my problems suddenly vanished :-D

The moral of the story is: Ask google, there's always someone who has done what you want to do before you :-)

Tuesday, May 15, 2012

Pro-one rack external IO diagram


Planned external inputs and outputs. Top ones are normal analog IO, bottom ones are midi and special keyboard and mod/pitch wheel IO.



Internal signal path diagram for Pro-one rack

Internal signals from card to card in the planned Pro-one rack. As the sheet indicates, the plan is now to build five cards, with the functionality spread as indicated. External signals and signals going to the front panel are not shown, except where indicated by "via switches".

Thursday, May 10, 2012

Pro-one rack front panel sketch

Not much to say - just made an initial sketch of the pro one "rack" front panel. The panel is 5U high and 430mm wide, which leaves room for rack ears to be added later - meaning that the machine can be used both as a desktop version and as a rackmounted one.


Tuesday, May 8, 2012

Pro-one gate and seq/arp

The Pro-one has a nifty system for controlling the arpeggiator and sequencer. It all runs through the gate circuit, so here are a few details about the gate and trigger circuit, deducted from the schematics (as I have no real Pro-one to compare with).

Sequencer and arpeggiator

First of all, the sequencer/arp speed is controlled by the speed of the LFO, which is not uncommon on old synths. The triangle output of the LFO runs through HALF of switch S125 (Seq) or S127 (Arp) when these are in active modes. The other half of the switches are connected to the microcontroller, to read the sequencer or arpeggiator mode. From the switch, the triangle wave is connected to the Gate output, and thus controls the gate directly. So, in sequencer or arpeggiator mode, a new gate signal is sent for every cycle of the LFO. The gate signal from the LFO is NOT sent to the Gate out jack. I don't yet know the shape of the LFO-gate signal when it arrives at the gate. It starts out as a triangle wave, but runs through a transistor and a capacitor on the way.

The square wave of the LFO is connected to the microcontroller as the "clock". One can assume that this is used to control the arpeggiator up/down motion and sequencer advance. More on the clock a little later.

The trigger signal is normally controlled from the microcontroller, and is probably syncronized to the clock programatically when the synth is in sequencer or arpeggiator mode.

The clock signal may be overriden by both an external gate input and the -ext and Audio Gate inputs. how the sequencer/arpeggiator works in these cases is unknown to me at the moment.

Gate/Clock input, Ext and Audio gate

An external gate signal input is available. It is connected to the clock input of the microcontroller and not directly to the gate. As such, the fact that the gate signal comes from an external source is unknown to the microcontroller, which is the reason I don't know how the arpeggiator and sequencer act in this mode.

As the ext and audio gate signals are connected to the clock in, the same is true for these. However, if no external gate/clock is connected, one must probably turn down the LFO speed to 0, to prevent the LFO from interfering.

Trigger

The trigger sets off the envelope generators that control the volume and filter frequency (The envelope generators then run through the Attach and Decay-parts of their cycle, and stays at Sustain level untill the gate signal goes away, which triggers the Release-mode). The trigger is controlled directly by the microcontroller in normal mode, but can be overridden by Mode drone or Mode repeat/ext.

Mode drone

The mode drone switch is connected between the microcontroller and the trigger and gate signals (the gate out signal is tapped before the switch and is not affected by mode drone. When the switch is in the drone-position, both trigger and gate are permanently connected to +5v, keeping them "open" at all times, which lets through any sound coming from the mixer.  When the Mode drone switch is in the off position, the gate and trigger signals are unaffected.

Glide

Glide is not directly a part of the gate circuit, but it is controlled by the gate. As with gate out, the control signal is tapped before the mode drone switch and thus not affected by mode drone. When the glide switch is in auto-mode, the gate is connected to the glide circuit, when it is in normal mode, the glide circuit is fed a constant signal of +5v through the switch.

Repeat/Ext

The Mode repeat/ext switch is connected between the microcontroller and the trigger/gate. As it is connected BEFORE the gate out, it affects the gate out signal. When in normal mode, both trigger and gate are passed through directly from the microcontroller. When the switch is in repeat mode however, both trigger and gate are connected to the clock in. This means that they are controllable directly by the Audio gate, gate/clock in and LFO! In LFO mode, notes are retriggered on every LFO cycle, regardless of wether or not a key is currently pressed. It also means that the gate and trigger cannot be controlled by the microcontroller when in repeat mode, which in turn means that the keyboard keys only affect the pitch, not the triggering of notes.

Gate out

The gate out jack is tapped before the mode drone switch, but after the repeat/ext switch. It is thus not affected by Mode drone, but will be affected by any external clock input when the repeat switch is in repeat mode. The gate signal from the Seq/Arp switch (LFO triangle wave) cannot reach the gate out directly, so in seq/arp mode the gate out is connected to the microcontroller. I do not know if the microcontroller outputs any gate signal when in seq/arp mode.

Sunday, May 6, 2012

Pro one mix and random board finished

Just finished the second board for the Pro-one project. This one contains the oscillator mixer, a modified noise circuit, a sample and hold part and the output buffer. There are so many ins and outs on the upper part of this card that I couldn't find room for the top right screw hole... Oh well.

I think it will take at least two more boards, perhaps three, to get all the necessary circuitry in place. And that excludes the front panel that will hold the pots and switches, and any output boards.


Sunday, April 29, 2012

Pro one oscillator board finished

Just finished revision 1 of the Pro one oscillator board! It looks quite good and fits on a 10 x 8 cm PCB. It contains the CV-mixers and two oscillators. Next up is the audio mixer, envelope follower, reference voltage generator and noise generator.


Sunday, April 22, 2012

SY77 floppy drive repair/replacement

I picked up a Yamaha SY77 last week. Except for a minor scratch (5 x 2 mm) it is in mint condition. However, the floppy drive is not working, something quite common with these I think. I will open it up tonight to see if it is only the drive belt. The synth can be used without the floppy, so it doesn't worry me that it is not working, but it would be nice to have it back in fully working condition.

The display backlight is a bit dim too, I have found a replacement on Ebay that I may buy.

All in all a very nice machine, one of the last in the line that started with the DX7.

To open the synth, put it upside down on something soft. Unscrew all the screws you can see on the underside - 20 in all on my SY77. Carefully lift the bottom plate and push it towards the front of the synth as soon as it clears the edge of the plastic parts.

You now have access to the floppy drive. The drive is located under the gray steel bracket towards the back of the right side (when upside down) of the synth. The bracket is held in place by three screws.

The floppy is attached to the main circuit board via a rather long ribbon cable, so removing it is very easy. It is not possible to detach the ribbon cable from the floppy without unscrewing the lid, so remove it from the circuit board side.


 The floppy is screwed to the bracket with four black screws. Remove them and you will have access to the drive belt.


After removing the bracket, it was very easy to spot the problem - the drive belt had snapped. Replacements are available online for around $17, so this should be an easy fix :)



Monday, April 9, 2012

Sequential Circuits Pro One - Octave selection rotary switches

The octave selection rotary switches on the pro one works a little differently than most other.

They are in fact four position, DP switches, meaning that they have no common pin, the rotary action short circuits two and two poles.

The way the selector works, is that it selects 0, 1, 2 or 3 connections to the 1V reference voltage. In the various positions of the switch it means that:

  • Pos 0 : pin 10 is connected to pin 2, and pin 5 is connected to 6, connecting the octave summer to R161, which in turn is connected to ground.
  • Pos 1: pin 1-2 and pin 6-7 are connected, connecting the octave summer to the reference voltage through R162 (100k)
  • Pos 2: pin 2-3 and pin 7-8 are connected, connecting the octave summer to the reference voltage through R163 and R164 (100k * 2)
  • Pos 3: pin 3-4 and pin 8-9 are connected, connecting the octave summer to the reference voltage through R162, R163 and R164 (100k * 3)
Mouser.com sells a C&K switch with the number R20407RN02Q. I don't know if the kind of shaft is the correct length (it is .500", for a total height of about 1.05"), but the switching mechanism is the correct one. The same switch is sold by digi-key.com too.

NB: The switch has a 0.25" (6.35 mm) shaft. Other pots may use 6mm shafts.

New general synth stuff blog

As I've finished the Introspectiv 9090 (909 clone), the so909.blogspot.com blog will not be updated any more. It's also about time I moved to a more general blog, as the latest posts are not related to the 909.

Thus, here is "A to Synth", my new company blog. I have a few nice things coming up shortly:
  • the full description of the PG-200 (JX-3P programmer) protocol, including data format and events for each pot/switch 
  • a parts list for the Sequential Circuits Pro-one 
  • redrawn schematics for the Pro-one in Eagle format All time permitting though, as these are only part time projects.
  • vector versions of several well known synthesizer companies' logos, as well as synth logos.