I'm trying to reproduce, on my own, an electric piano sound. I'm open to using any type of synthesis(I actually use the Pyo DSP library ), but I'd particularly like to know how to do it with substractive synthesis, à la Yamaha CP-20/CP-30.

What types of waveforms are the best? How many oscillators? What kind of filters, effects, etc are necessary or interesting?

Most importantly, any advice and details about the envelopes? Is ADSR sufficient? What did the Yamaha CP line used?

I've been playing around a bit, using a few triangle oscillators and distortion, and all, but I'm still finding the result lacking.

Any resources on that would be welcomed.


  • Because of the bell-like character of electric pianos, you're going to find it very hard to make a convincing patch with subtractive synthesis. The best non-sampled EPs are usually FM synthesis - that's why the Yamaha DX7 was so popular. It used digitally controlled analog FM synthesis to create a great EP sound in a portable, lightweight format. – Todd Wilcox Nov 26 '16 at 20:48
  • The Yamaha EP-20/EP-30 used substractive synthesis to achieve a sound similar to electric pianos. I know it's not exactly piano-like, but it's still the kind of sound I'd like to reproduce. – Charles Langlois Nov 26 '16 at 22:52
  • Sorry, Yamaha CP-20/CP-30. – Charles Langlois Nov 26 '16 at 23:19

I haven't been able to find anything authoritative about how the CP-20/30/25/35 generate sounds. They might not even be subtractive synths in the typical sense.

You can do a kind of FM on a purely subtractive synth if you can set the filter to self-oscillate and then modulate the cutoff frequency using one of the audio rate oscillators. That doesn't work so well on real polyphonic subtractive synths like the Prophet 5/6, but can work on virtual instrument re-creations of those kinds of synths.

There's also oscillator hard sync that might give you that EP sound. It's similar to FM and does give a kind of ringing sound like EP tines if you play with the base frequency ratio between the oscillators. This is what I would try first. Getting the envelopes right will be important, for both the amp and filter envelopes. Also adding just a little bit of volume modulation can help since a lot of EPs had tremolo units.

  • Thanks for the tips on hard sync, though that seems to be one of the few things the pyo library lacks, and that I'm I can implement myself. To be clear, I could and did try using FM, so I'm not interested in "emulating" FM using sub, rather finding good purely subtractive methods(with some additional effects, like disto or phaser or whatever) that can generate interesting sounds. I am currently playing around with filter and distortion envelopes, and the like, but have yet to reach my goal. And I'm pretty sure The CPs used some sort of subtractive method(I heard they used Pulse waves as well). – Charles Langlois Dec 1 '16 at 0:17
  • *I'm not sure I can implement myself... – Charles Langlois Dec 1 '16 at 2:36
  • @CharlesLanglois You might edit your question to remove the part where you wrote that you were open to any type of synthesis, since you wrote you want to use purely subtractive methods. Not all sounds can be well emulated using just waveforms and filters. – Todd Wilcox Dec 1 '16 at 7:17
  • Well, let me backtrack a bit. I am open to specific suggestions for fm-based methods as well, but as I said, I am particularly interested in subtractive synthesis. And I have access, using the Pyo library, to many types of synthesis(including sub, fm, additive, and more), and I can combine them as I wish. However, simplicity has value. – Charles Langlois Dec 1 '16 at 7:42
  • And again, since the CP-30 seems to be using subtractive synthesis, at least that kind of sound should be feasible, especially if they could do it in the 1970s using purely analogue circuits with the methods available then. – Charles Langlois Dec 1 '16 at 7:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.