Shop OBEX P1 Docs P2 Docs Learn Events
My first major Propeller project — Parallax Forums

My first major Propeller project

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
protoboard.jpg

Comments

  • Congrats, sounds like a fun project. Youtube audio samples?
  • My keyboard skills are about that of a first grader with a month of lessons :). I'll find a good MIDI track I can send it
  • No keyboard skills needed to press middle c.
  • PaulForgey wrote: »
    My keyboard skills are about that of a first grader with a month of lessons :).

    IOW, today's pop music level? That's fine

    :lol:
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    LOL @ Mickster :D
  • Hi Paul

    This is very interesting project.

    Is possible make library for independent use like SIDCOG, AYCOG ?

    Many thanks

    Kamil
  • PaulForgeyPaulForgey Posts: 25
    edited 2016-06-14 03:25
    @JLS I tried to keep the components usable as they are without too much infrastructure around them. Some things need a bit of work, e.g. the envelope generator makes a few strange assumptions but it mostly generically useful. The oscillators are very usable standalone and could be worked into almost any sort of FM synthesis scenario.

    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.

  • Thanks info about project.

    But im very bad programmer is possible make simple example how to generate sound ? (project is very complex for me :-) )

    Many thanks
  • I'm currently working on completely re-doing the mess I've made of the envelopes. After that, I'll put together a high level document giving an overview to how all the pieces work. I've tried to document things inline at the component level.
  • JLS wrote: »
    Thanks info about 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
    
    
  • Many thanks example working :-)
  • cool! I hope to have an overview document added to the GIT repository shortly
Sign In or Register to comment.