Go Down

Topic: PG200 clone with arduino (Read 161 times) previous topic - next topic

Barito

Hi all,

a synthesizer enthusiast in the need for your help here  :)

I am trying to understand how to send appropriate serial messages to a synthesizer (Roland JX3P) in order to emulate the behaviour of a rare and expensive nowadays hardware Roland developed in the mid '80s.
The hardware (PG200) was intended as an interface to send tone parameters to the synth in order to create new sounds out of it.

The protocol has just been studied and valuable info are available. Unfortunately I could not get in touch with the original author.

In a nutshell:
- messages are 9 bit unpaired
- messages are inverted before be sent
- a start message has to be sent for the synth to see them as valid

Here is a link to the whole notes the original author wrote
http://www.xonik.no/mpg-200/pg-200/pg-200.html

Now, sending midi messages with arduino is a joke thanks to the work of arduino communities all over the world and i have realized some hardware myself (see i.e. https://www.google.it/amp/s/www.instructables.com/id/almost-Universal-MIDI-SysEx-CC-Programmer-and-Sequ/%3famp_page=true).
Unfortunately, this is a completely different task and I am in the need for some starting hints from valuable coder.

Could anyone help me in figuring out how to assemble and send those messages with arduino?

Thanks in advance!

pylon

Quote
- messages are 9 bit unpaired
The UART of the AVR Arduinos is able to send 9bit data. The drawback: The Serial object (HardwareSerial) doesn't support it. You'd have to write your own code for this.

Quote
- messages are inverted before be sent
Seems to be a simple hardware inverter.

Quote
- a start message has to be sent for the synth to see them as valid
Should be the easiest part.

Barito

Thank you for your answer. Unfortunately I have no idea on how to rewrite hardware serial library (I am a "basic" user, not that advanced).
I have seen an old Gammon library for 9 bit messages: would it be of some use?

I really need some insight on the form of such messages...

pylon

Quote
I have seen an old Gammon library for 9 bit messages: would it be of some use?
Sure, but I would apply the patch to a current version of the HardwareSerial class to get all the bug fixes from the last years.

Quote
I really need some insight on the form of such messages...
The linked pages should give you enough inside of the form of such messages. But you cannot use the print() and println() methods of the Stream class as they don't support 9bit characters. Use the write() method for every character sent.

Barito

Thanks.
The author of those pages speak about bytes too, so it's not 100% clear to me if every message is 9 bit or some could be 8 bit... Any though?

pylon

Quote
The author of those pages speak about bytes too, so it's not 100% clear to me if every message is 9 bit or some could be 8 bit... Any though?
I'd expect everything to use 9bit characters. It's extremely uncommon to change the bit size of a character during a transmission.

Barito

Thanks. I am waiting for a 6 pin connector to be dropped in my mailbox to start experimenting with this. I will report back!

Go Up