My first major Propeller project
in Propeller 1
I've mostly completed my first major hobby project using the Propeller. Although the Propeller is not a DSP, I was curious to see how far I could get with an FM synth project. The result is a 8 note polyphonic, 4 operator, 12 algorithm standalone FM synth with a VGA UI and MIDI controlled input.
I started it with the motivation of trying to push the things as far as I could, and I'm sort of pleased with how it turned out. The code and circuit description is on GitHub.
I actually don't do DSP work in real life, and if somebody who does takes some interest and has feedback, it would of course be greatly appreciated!
https://github.com/PaulForgey/spinSynth
I started it with the motivation of trying to push the things as far as I could, and I'm sort of pleased with how it turned out. The code and circuit description is on GitHub.
I actually don't do DSP work in real life, and if somebody who does takes some interest and has feedback, it would of course be greatly appreciated!
https://github.com/PaulForgey/spinSynth

Comments
IOW, today's pop music level? That's fine
This is very interesting project.
Is possible make library for independent use like SIDCOG, AYCOG ?
Many thanks
Kamil
I'm not trying to emulate anything in particular, although I did use my knowledge of the DX7's internals as a general guide how to structure the overall project.
But im very bad programmer is possible make simple example how to generate sound ? (project is very complex for me :-) )
Many thanks
Envelopes are a rather critical piece of the puzzle, but this shows how to minimally make noise using some of the components. If you want to make use of the envelopes, the most critical thing about them is they need to have their 'Advance' method called as an idle process.
CON _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 OBJ osc : "synth.osc" out : "synth.out" VAR LONG TriggerPtr LONG AudioPtr LONG Inputs[8*4] LONG Envelope[5] BYTE Algo BYTE Feedback PUB Main | v ' start oscillator cog. This provides 8 oscillators/2 voices ' leave Algo and Feedback set to 0 for organ mode (all oscillators output, no modulation) and no feedback osc.Start(@Inputs, @Algo, @Feedback) ' array of one element for audio outputs and triggers AudioPtr := osc.OutputPtr TriggerPtr := osc.TriggerPtr ' output cog also drives envelopes. Even if we don't need them. ' must provide at least one envelope set (5 longs each) ' we have one set of audio/triggers ' output to pin 9 out.Start(9, @AudioPtr, @TriggerPtr, 1, @Envelope, 1) ' play a C Inputs[0] := $6132 ' 0 = full output (no attenuation) ' $8800 is silent, log scale Inputs[1] := 0