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.
Sunday, December 2, 2012
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.
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.
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 :-)
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).
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.
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.
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.
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.
Labels:
Eagle,
hardware,
pro-one,
sequential circuits,
VCO
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 :)
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:
NB: The switch has a 0.25" (6.35 mm) shaft. Other pots may use 6mm shafts.
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)
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:
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.
Subscribe to:
Posts (Atom)