Playdate Software Automatic Mouth (PDSAM)

Recently, I came across this project and thought it would be fun to have on Playdate.

It's a reverse-engineer of the voice synthesizer from the Commodore64. I created some Lua glue for it or you can access it directly in C. I'm also including a device build of a GUI tool for playing with the parameters. The source for the GUI isn't included because it uses an app framework that we're not ready to release yet.

pdsam.zip (61.1 KB)
pdsam_c_demo.pdx.zip (182.9 KB)

Let me know if this is useful in some way and maybe we can include it as an extra for the SDK.

12 Likes

I'm away from my Playdate at the moment. A video of this would be very welcome!

Amazing. I… I wonder if I could add a speech instrument to Playmaker… noooo

1 Like

Actually, I'd probably just limit to like 4 letters or something.

Resurrecting this thread because I thought of a potential use for it in my current game.

Before I work on switching my Lua-only project to a C-based one: has anyone happened to have used this library yet, and especially done any kind of performance checks? I'm wondering if this is the kind of thing that can run in the background of everything else, or whether it would have to take focus, or else be used very sparingly like Sinistar.

1 Like

Jumping in yet again because I'd really like to use this in my game. So far, it's fairly easy to use in a simulator project -- after hobbling together the CMakeLists files from this project and HelloWorld -- but I haven't been able to test it on device.

The demo app pdx included in the OP works fine on my device, of course.

Trying to build the device target -- whether in my own project or the one included in the pdsam.zip file in the OP -- I get linker errors.

The specific linker errors are that the globals unsigned char A,X,Y in main.c are also declared in reciter.c.
When I make them extern in reciter.c, it builds correctly but just generates noise instead of recognizable phonemes.

I can try to track it down further by re-initializing or renaming the variables in one of the files, but I wanted to make sure it wasn't a configuration issue first. I don't understand the CMake process in the slightest, so it's extremely probably I'm missing a step.

Chuck

PS I don't know if the etiquette is to tag @james directly or not....

1 Like

Okay, thanks to some info on the Discord and pointing me to the C_API/Examples/3DLibrary project, I've got it worked out.

Unsurprisingly, it's perfectly performant on the device. (I think I was paranoid because I still remember using SAM on the C64 and it requiring all of the processing power to say anything).

And my weird linking issue was user error -- while I was trying everything, I changed the sample text and completely forgot I'd changed it, so it just sounded like noise. Typical.

5 Likes

Looks like the source has fallen behind the SDK. I'll file a bug for myself to fix it up.

2 Likes

I just updated the downloads to be compatible with SDK/OS 2.6.0

3 Likes