Discussion about the Korg PolySix synthesizer group photo

Yahoo Groups archive

Discussion about the Korg PolySix synthesizer

Archive for polysix.

Index last updated: 2026-03-30 01:17 UTC

Thread

Re: [PolySix] Re: Polysix Full Clone [1 Attachment]

Re: [PolySix] Re: Polysix Full Clone [1 Attachment]

2015-12-16 by Bob Grieb

The original 8049 code is assembly, not C. C was not really supported
on the MCU's back then. By that I mean that certain hardware/addressing modes
that are needed to efficiently implement the language was not included. While it
would be possible to write a C compiler for them, the code would get very ugly
and would be much slower than well written assembly code.

My PIC code is a straight translation of the original assembly, with some
code added for MIDI note playing and also in some places I had to add delay
as the PIC is much faster than the old MCU. I translated it instead of re-coding
it so that it would be exactly the same as the old code, including any odd quirks
that I might not be aware of. Also, the PIC instruction set is more powerful, so
translating the old code was very easy once a few basic decisions were made.

Bob Grieb
--------------------------------------------
On Wed, 12/16/15, tlule@gmx.de [PolySix] <PolySix@yahoogroups.com> wrote:

Subject: [PolySix] Re: Polysix Full Clone [1 Attachment]
To: PolySix@yahoogroups.com
Date: Wednesday, December 16, 2015, 5:05 PM


 









[Attachment(s) from tlule@gmx.de
[PolySix] included below]


Hi Guys,
Thanks for your feedback.
As for the KLM-367, I've already
seen an offer of 40Euros for a good quality PCB on
eBay.That's indeed the right offer for me, so I
do not have to bother about manufacture.
For the other boards, I was actually
hoping for a sort of an open source community.
If we all share our design files, we can
expand our experience faster,more people together
make projects grow faster and better.
As for the special chips, I was thinking
of analogue equivalent circuits. I've already got
an equivalent circuit together for the SSM2056 that fits on
22.5mm x 26.8mm.It is using an LM13700 and a few
more SMDs. Attached is a 3D view of that PCB. That
can be either plugged into the DIL socket, or I directly
replace the SSM in the PCB design by those easy to get
ICs.For replacing the SSM2044, I just only started to
putting a first basic schematic together. But maybe someone
else has got already a solution?
As for the key assigner, yes it would be
great to get some code to start from.Is it coded in
C? Then it could be also mapped to other controllers.
I have an STM32 nucleo board, which I thought to use
in place of the old microcontrollers.It doesn't
cost a lot and has plenty of extra processing power, to add
more functions over time.
Cheers











#yiv7693078801 #yiv7693078801 --
#yiv7693078801ygrp-mkp {
border:1px solid #d8d8d8;font-family:Arial;margin:10px
0;padding:0 10px;}

#yiv7693078801 #yiv7693078801ygrp-mkp hr {
border:1px solid #d8d8d8;}

#yiv7693078801 #yiv7693078801ygrp-mkp #yiv7693078801hd {
color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
0;}

#yiv7693078801 #yiv7693078801ygrp-mkp #yiv7693078801ads {
margin-bottom:10px;}

#yiv7693078801 #yiv7693078801ygrp-mkp .yiv7693078801ad {
padding:0 0;}

#yiv7693078801 #yiv7693078801ygrp-mkp .yiv7693078801ad p {
margin:0;}

#yiv7693078801 #yiv7693078801ygrp-mkp .yiv7693078801ad a {
color:#0000ff;text-decoration:none;}
#yiv7693078801 #yiv7693078801ygrp-sponsor
#yiv7693078801ygrp-lc {
font-family:Arial;}

#yiv7693078801 #yiv7693078801ygrp-sponsor
#yiv7693078801ygrp-lc #yiv7693078801hd {
margin:10px
0px;font-weight:700;font-size:78%;line-height:122%;}

#yiv7693078801 #yiv7693078801ygrp-sponsor
#yiv7693078801ygrp-lc .yiv7693078801ad {
margin-bottom:10px;padding:0 0;}

#yiv7693078801 #yiv7693078801actions {
font-family:Verdana;font-size:11px;padding:10px 0;}

#yiv7693078801 #yiv7693078801activity {
background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}

#yiv7693078801 #yiv7693078801activity span {
font-weight:700;}

#yiv7693078801 #yiv7693078801activity span:first-child {
text-transform:uppercase;}

#yiv7693078801 #yiv7693078801activity span a {
color:#5085b6;text-decoration:none;}

#yiv7693078801 #yiv7693078801activity span span {
color:#ff7900;}

#yiv7693078801 #yiv7693078801activity span
.yiv7693078801underline {
text-decoration:underline;}

#yiv7693078801 .yiv7693078801attach {
clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
0;width:400px;}

#yiv7693078801 .yiv7693078801attach div a {
text-decoration:none;}

#yiv7693078801 .yiv7693078801attach img {
border:none;padding-right:5px;}

#yiv7693078801 .yiv7693078801attach label {
display:block;margin-bottom:5px;}

#yiv7693078801 .yiv7693078801attach label a {
text-decoration:none;}

#yiv7693078801 blockquote {
margin:0 0 0 4px;}

#yiv7693078801 .yiv7693078801bold {
font-family:Arial;font-size:13px;font-weight:700;}

#yiv7693078801 .yiv7693078801bold a {
text-decoration:none;}

#yiv7693078801 dd.yiv7693078801last p a {
font-family:Verdana;font-weight:700;}

#yiv7693078801 dd.yiv7693078801last p span {
margin-right:10px;font-family:Verdana;font-weight:700;}

#yiv7693078801 dd.yiv7693078801last p
span.yiv7693078801yshortcuts {
margin-right:0;}

#yiv7693078801 div.yiv7693078801attach-table div div a {
text-decoration:none;}

#yiv7693078801 div.yiv7693078801attach-table {
width:400px;}

#yiv7693078801 div.yiv7693078801file-title a, #yiv7693078801
div.yiv7693078801file-title a:active, #yiv7693078801
div.yiv7693078801file-title a:hover, #yiv7693078801
div.yiv7693078801file-title a:visited {
text-decoration:none;}

#yiv7693078801 div.yiv7693078801photo-title a,
#yiv7693078801 div.yiv7693078801photo-title a:active,
#yiv7693078801 div.yiv7693078801photo-title a:hover,
#yiv7693078801 div.yiv7693078801photo-title a:visited {
text-decoration:none;}

#yiv7693078801 div#yiv7693078801ygrp-mlmsg
#yiv7693078801ygrp-msg p a span.yiv7693078801yshortcuts {
font-family:Verdana;font-size:10px;font-weight:normal;}

#yiv7693078801 .yiv7693078801green {
color:#628c2a;}

#yiv7693078801 .yiv7693078801MsoNormal {
margin:0 0 0 0;}

#yiv7693078801 o {
font-size:0;}

#yiv7693078801 #yiv7693078801photos div {
float:left;width:72px;}

#yiv7693078801 #yiv7693078801photos div div {
border:1px solid
#666666;height:62px;overflow:hidden;width:62px;}

#yiv7693078801 #yiv7693078801photos div label {
color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}

#yiv7693078801 #yiv7693078801reco-category {
font-size:77%;}

#yiv7693078801 #yiv7693078801reco-desc {
font-size:77%;}

#yiv7693078801 .yiv7693078801replbq {
margin:4px;}

#yiv7693078801 #yiv7693078801ygrp-actbar div a:first-child {
margin-right:2px;padding-right:5px;}

#yiv7693078801 #yiv7693078801ygrp-mlmsg {
font-size:13px;font-family:Arial, helvetica, clean,
sans-serif;}

#yiv7693078801 #yiv7693078801ygrp-mlmsg table {
font-size:inherit;font:100%;}

#yiv7693078801 #yiv7693078801ygrp-mlmsg select,
#yiv7693078801 input, #yiv7693078801 textarea {
font:99% Arial, Helvetica, clean, sans-serif;}

#yiv7693078801 #yiv7693078801ygrp-mlmsg pre, #yiv7693078801
code {
font:115% monospace;}

#yiv7693078801 #yiv7693078801ygrp-mlmsg * {
line-height:1.22em;}

#yiv7693078801 #yiv7693078801ygrp-mlmsg #yiv7693078801logo {
padding-bottom:10px;}


#yiv7693078801 #yiv7693078801ygrp-msg p a {
font-family:Verdana;}

#yiv7693078801 #yiv7693078801ygrp-msg
p#yiv7693078801attach-count span {
color:#1E66AE;font-weight:700;}

#yiv7693078801 #yiv7693078801ygrp-reco
#yiv7693078801reco-head {
color:#ff7900;font-weight:700;}

#yiv7693078801 #yiv7693078801ygrp-reco {
margin-bottom:20px;padding:0px;}

#yiv7693078801 #yiv7693078801ygrp-sponsor #yiv7693078801ov
li a {
font-size:130%;text-decoration:none;}

#yiv7693078801 #yiv7693078801ygrp-sponsor #yiv7693078801ov
li {
font-size:77%;list-style-type:square;padding:6px 0;}

#yiv7693078801 #yiv7693078801ygrp-sponsor #yiv7693078801ov
ul {
margin:0;padding:0 0 0 8px;}

#yiv7693078801 #yiv7693078801ygrp-text {
font-family:Georgia;}

#yiv7693078801 #yiv7693078801ygrp-text p {
margin:0 0 1em 0;}

#yiv7693078801 #yiv7693078801ygrp-text tt {
font-size:120%;}

#yiv7693078801 #yiv7693078801ygrp-vital ul li:last-child {
border-right:none !important;
}
#yiv7693078801

Re: [PolySix] Re: Polysix Full Clone [1 Attachment]

2015-12-17 by chipaudette@yahoo.com

I replaced my Key Assigner with an Arduino.  As a result, it was written in C/C++, using some of the Arduino libraries simplified wrappers for reading and setting the digital pins.

Note that I was also doing a bunch of other changes (replacing the keybed with a MIDI-outputting keybed), so my Key Assigner software would not be directly useable with the Polysix's built-in keybed, but adding the key scanning wouldn't be too big a deal.  

Here's a post describing the start of the hardware replacement (swapping the Arduino for the 8049):
And here's a post describing the sharing of my code on GitHub:

Re: [PolySix] Re: Polysix Full Clone [1 Attachment]

2015-12-19 by tlule@gmx.de

Hi Bob,


Great stuff, thanks for sharing the ASM code.


Already contains a  lot of useful comments.

I'll need to spend more time analysing that code;

I will maybe add more comments and upload my thoughts later.


Sure at that time uCtrl were written in ASM, but that's simply difficult to reuse on different platforms.

I may even consider to do a direct transcription into C.


KORG seem to have used a lot of 8049. To be able to upgrade without wire harness I've also already made adapter board layouts to go from 8049 to 8051 type footprint in DIL40. There are plenty of modern variants of 8051, and that's sort of a uCtrl I am familiar with. And c-compilers are also available. I can share that layout if someone is interested. By making the two serial ports pins available on an extra connector it can be easily extended with MIDI I-O.


Haitar




Re: [PolySix] Re: Polysix Full Clone [1 Attachment]

2015-12-19 by tlule@gmx.de

Hi Chip,


Yes, I have already read through your synth hacker blogs.

Very deep down stuff that you are doing. Kind off where I want to get to as well.

But to start with I make a clone first, then I will look to replace CPU and code.


By the way you asked for that signal MC, which is output from the uCtrl.

I actually cannot even find it anywhere else, can you?


When you built your code, did started off from the original assembler code,

or built it just from observing how the PS functions?

Especially for the Arpeggiator I would have thought that must be difficult to rebuild the original arpeggios, or not?


Haitar


Re: [PolySix] Re: Polysix Full Clone [1 Attachment]

2015-12-20 by chipaudette@yahoo.com

Hello Haitar,

You asked whether I built my Assigner software based on the 8049 assembly, or simply from observing how the Polysix works.  To me, it is far easier to observe the Polysix and write code than to figure out the 8049 assembly.  So, I simply wrote fresh code.

Because of the limitations of the 8049 chip, I was fairly certain that the assembly code would do some unusual things so that it was "optimized" to fit within the given limitations.  I assumed that the optimizations would make the code hard to follow.  Plus interpreting other people's code is less fun (to me) than the creative process of writing my own code.

Because I had to figure things out for myself, though, my code is a little ugly, as it reflects the iterative process of try-fail-try-fail-try-success!  It certainly would be cleaner if I started from scratch.  

Chip

Re: [PolySix] Re: Polysix Full Clone

2015-12-21 by tlule@gmx.de

Hi Chip,


Awesome!


For sure, the scanning of keyboard and front panel is a piece of cake.

But when it comes to assigning tones to voices there are different approaches.

And the icing on the cake must have been the arpeggiator.

Some guys have written, the POLYSIX arpeggiator is better than others.

Other places, some hickups are mentioned.


So did you make a side-side comparison of yours with the original Arpeggiator.

Or did you not go as far as that?


As for my clone works: I am now through 60% of the KLM-368 Chorus board.

Beautiful design, quite dense.  But certainly worth the one or other hack.

But once cloned could easily find it's way into other analogue synths!

When I've got the 100% clone ready, I will start with a derivative replacing

the 3 obsolete 30$ bucket-brigade chips with more recent variants.


I few quirks in the docs with a short in the schematic, or part names missing.

But while overlaying the my PCB layout over the scan from the service manual,

I was so far able to correct all that stuff!

Attached are 2 screenshots working on KLM-368 schematic and layout.


For the voice board KLM-366, I seem to be not the only one who would still appreciate

a good quality scan of the board traces, if someone would have some?


Cheers,


Haitar


Re: [PolySix] Re: Polysix Full Clone [1 Attachment]

2015-12-21 by tlule@gmx.de

Hi All,


Been asked for the DIP adapter from 8048 to 8051.


So here for the open source community, the complete file in Target 3001 format.


This layout editing software can be downloaded as a limited non-commercial format from here:


TARGET 3001! PCB Design Freeware is a Layout CAD Software|Support, Tutorials, Shop


Would  be glad to hear from people using that design.


Enjoy,


Haitar



Re: [PolySix] Re: Polysix Full Clone

2015-12-22 by chipaudette@yahoo.com

Hello Haitar,

I never compared my implementation of the Arpeggiator to the original.  Once it started to arpeggiate, I was satisfied.

Chip

Re: [PolySix] Re: Polysix Full Clone [1 Attachment]

2015-12-24 by grantbt@jps.net

Hi,

Very cool adapter. I also use the 8051 a lot, so I have a couple of questions.

Regarding the adapter, is it possible to print a PDF of the schematic. That way we don't have to install the software and it's easier to see the adaptation than the actual PCB.

Regarding compatibility, is the 8051 a superset of the 8048/49?  Does it have mostly the same instruction set and peripherals?

By the way, at my work we probably have some good quality 8048 tools (assembler, etc) on 5.25" floppies that I could probably attempt to read. I'm not sure if they are better than the "universal" assemblers I've seen. I think we even have an old ICE somewhere. What 40-pin DIP 8051 where you planning on using with your adapter?  I like the newer ones that have built-in debugging rather than ICE.

GB

Re: [PolySix] Re: Polysix Full Clone

2015-12-27 by Johannes

Hi all,

Merry Christmas!
Yes, the 8051 is a superset of the 8048. As far as I remember only the
8048 user flags are different and had to be emulated with the much more
powerful bit ALU of the 8051. I created a header file with a number of
macros to assemble 8048 code with / for 8051. The reason was I was
making some code for the 8048 and I had a simulator for the 8051. By the
use of a macro-capable assembler I could assemble 8048 code directly.
I was using the "Telemark Cross Assembler". I used it for other CPUs
as well, e.g. Z80. And for a self-made (in an FPGA) CPU, since it is
easily expandable/adoptable to other CPOUs...
I uploaded it to the files section of the list under the "Software &
Plugins" category.

Johannes


On 2015-12-24, 17:57 grantbt@jps.net [PolySix] wrote:
>
>
> Hi,
>
> Very cool adapter. I also use the 8051 a lot, so I have a couple of
> questions.
>
> Regarding the adapter, is it possible to print a PDF of the schematic.
> That way we don't have to install the software and it's easier to see
> the adaptation than the actual PCB.
>
> Regarding compatibility, is the 8051 a superset of the 8048/49? Does it
> have mostly the same instruction set and peripherals?
>
> By the way, at my work we probably have some good quality 8048 tools
> (assembler, etc) on 5.25" floppies that I could probably attempt to
> read. I'm not sure if they are better than the "universal" assemblers
> I've seen. I think we even have an old ICE somewhere. What 40-pin DIP
> 8051 where you planning on using with your adapter? I like the newer
> ones that have built-in debugging rather than ICE.
>
> GB
>
>

Re: [PolySix] Re: Polysix Full Clone [1 Attachment]

2015-12-27 by tlule@gmx.de

Hi Grant,


No problem. I attach the adapter schematic as PDF.

However I can only recommend to also install the soft, very intuitive to use, and you can use it to make extensions.


For programming I've used various assemblers (TASM).

But over time it find it too tedious to do anything more complex.

ELEKTOR has issued good series of introduction into 8051 systems. 

There I made experience with AT89C8252/53.

Cool guys, ISP, with RAM, FLASH and EEPROM on board.

The right Connector for ISP-Programming could also be added to the adapter.


Otherwise there's also a cute PASCAL compiler (NILIPAS) for easy programming.

And for more serious stuff, Keil C compiler cool stuff, professional and widely usable.


 Cheers,


Haitar