PO hacks

interesting i thought it was just another arduino chip. oops. teensy looks very promising!

https://www.youtube.com/watch?v=RsCtGyrawKA

^ Ah, that is so lovely… I dream of doing that with a PO :slight_smile:

@formatk Yes, we would need to do it in C. I’m not sure which would be the best ARM sound libraries.

Actually, creating a new firmware for the POs is no simple task. We would first need to reverse engineer the circuit schematic, then implement all the basic logic, like enabling clocks and power management, reading keys and knobs, setting up the display driver, managing the Cirrus Logic codec, etc. All that may require using a real time OS and a few interrupt handlers. Only then you get to create something useful, like sound engines, effects and a sequencer. And all of that needs to be done with extreme care for the lowest overhead and maximum performance, because there is very little processing power available. I wish TE would simply release some of the PO source code, even if it is a stripped down version, just to get us started.

The other option is hacking into TE binary code, if it is not locked up, but frankly it won’t be an easier ride…

Just calling @jon (designer of the PO hardware) attention to this thread in case he is willing/allowed to answer the following basic questions:


- Is the EFM32 debug mode locked out to prevent reading the firmware?

- Which J-Link signals correspond to each of the 12 exposed pads at the back?


Man, I just wish there was midi on some of the pads on the back

@punji There’s always http://zinc.rs which makes many of those hard things easier, or easier to implement correctly once you have them figured out… assuming you’re okay with Rust’s type system.

Oh and @formatk http://basicsynth.com/index.php has some details on implementing software synthesis and effects in C.

I’m not sure @anomalous, Zinc seems interesting but it is still in its infancy… and the closest to the bare metal the most efficient it will be, which may be important in this case since the POs are very limited. Probably the first thing I would do as a proof of concept is to port some audio engine from MAME, either the Atari 2600 or some of the Yamaha FM chips found on the 80’s arcade machines :slight_smile:

since the conversation has switched gears from hacking the PO to emulating the PO i would like to point out this video again. while seemingly simple it is rich with functionality. it doesnt exist thoughhttps://www.youtube.com/watch?v=NV6IFOVY-go

^ That is a nice example (and source of inspiration) of what could be done with the PO hardware! Pity it is not available (yet).

I was think of doing something similar, i.e., instead of a grid sequencer, implement a more “looper” oriented approach, and allow chromatic transposing of each track (like the endless sequencer).

I'm not sure @anomalous, Zinc seems interesting but it is still in its infancy... and the closest to the bare metal the most efficient it will be, which may be important in this case since the POs are very limited. Probably the first thing I would do as a proof of concept is to port some audio engine from MAME, either the Atari 2600 or some of the Yamaha FM chips found on the 80's arcade machines :-)
Rust is competitive with C, beating it in some cases. Efficiency is definitely important. Rust is still new (alpha 2) but for RTOS I don't think there's much to worry about since you wouldn't link the stdlib. Zinc surely has some growing to do, but I personally don't mind filling in the gaps myself if that buys me something more expressive.

For a PoC you're more ambitious than I am. I would probably just start with a tone generator and a mod source. Anyway, if you have any luck I'll probably get a dev kit myself.

I removed the display from my PO-16 and confirmed that some previous assumptions were wrong:


- The MCU is a Leopard Gecko Cortex-M3 w/ 128KB Flash (EFM32LG890F128G), so no DSP instructions nor floating point unit there.
- The coded is the 24-bit Cirrus Logic CS42L52, so it has both ADC and DAC.

I’m still trying to map the 12 exposed pads to the J-Link debug interface (I only got the purpose of 6 of them so far).


1 Like

Brave! Could you share some pics?

There you go:


IMG_0106_2

@punji is possible to pop a LED for the screen in there? It’s hard to Jam In my dungeon of a room.


- The MCU is a Leopard Gecko Cortex-M3 w/ 128KB Flash (EFM32LG890F128G), so no DSP instructions nor floating point unit there.
- The coded is the 24-bit Cirrus Logic CS42L52, so it has both ADC and DAC.

Eek. No hardfloat is rough, but ADC is <3.

http://coranac.com/tonc/text/fixed.htm — have fun!

@Kites The display is reflective only (as opposed to transflective), so light will not go through it.

@anomalous Thanks for the info. I also confirmed that ARM CMSIS lib has the basic DSP functions for fixed point math.

I’m having a hard time figuring out the exposed pads. Some are obvious, like 3V (main power, replicated on two pads), 2.5V (Codec power), RESET, GND (replicated on three pads), but the other signals are very odd, like one is the Play LED voltage (replicated on two pads), one seems not connected and two have a low voltage level (700 mV and 900 mV). No pads appear compatible with the J-Link debug interface.

If TE doesn’t help, I may be forced to desolder the EFM32 to directly probe the board connections, and that will be the end of it, since I can’t solder back a BGA chip… :frowning:

Btw, I confirmed the coded is operating at 16-bit / 48KHz.

1 Like
Oh and @formatk http://basicsynth.com/index.php has some details on implementing software synthesis and effects in C.

cheers @anomalous, I’ll take a look!

@punji - brave man! Those mystery pads aren’t serial TX and RX are they?

does anyone know the Teensy 3.*, a more or less arduino compatible ARM M4 board?
http://pjrc.com/teensy/teensy31.html
there's a special audio lib for this board:
http://pjrc.com/teensy/td_libs_Audio.html
might be a good starting point ...

The Teensy 3.1 + Audio board is just awesome combo. I’ve been building my own synths in many environments but Teensy just rocks. I made a 4 voice (8 oscillator) “analog modelling” synth in few hours with it, here’s a crappy song made with it:

https://www.youtube.com/watch?v=A824z3JfPxM
(skip to 2min 23 seconds for some multi-voice-chord-action!) Dunno why the player doesn’t work, here’s a URL to the video: http://tinyurl.com/nkw67ty

The teensy can play four 44kHz wav samples from SD card realtime. And much more if you play them from RAM. And the sound quality is top notch. I would say PO’s could be easily replicated with Teensy, no question about it.

PO-12 seems to be using samples and some simple oscillator-synth in making the sounds. For example the bass drum kick is really noisy, I don’t understand why. Maybe they have packed the samples in some way. Some other samples have just playback-rate and some other specific parameter (sample start location) as in the tweakable parameters through potentiometers.

I also checked yesterday with oscilloscope what the signals look like. The pads with the speaker icon output both PWM, so it seems that the DAC is generating the sound through PWM (which is lowpassed probably).

And I also measured some dimensions of my PO-12, wrote them in my snippet-blog: http://mitat.tuu.fi/?p=309

1 Like