Shop OBEX P1 Docs P2 Docs Learn Events
Propeller Sound, Midi, and Synthesizer. — Parallax Forums

Propeller Sound, Midi, and Synthesizer.

Fad ElectricFad Electric Posts: 9
edited 2006-12-21 23:53 in Propeller 1
It would be cool to hear what soundprojects you all have planed for propeller.

Personaly Im planing to build a Synthesizer around the propeller. It would be cool to share ideas on what may be posible to do with the propeller...

I´ve seen that you have done speech synthesis and someone planing for a c64 SID emulator. Thats cool!!!

Comments

  • acantostegaacantostega Posts: 105
    edited 2006-12-13 04:47
    I haven't planned anything specific, but I'd sure like to experiment with the Propeller as a digital synth. From what I've heard (the Hydra sound demos and the speech synthesis, for example) there's a lot of possibilities. I don't have a demo board, though, so the first step is making an amplifier circuit to get audio out. I have a couple of LM386s, so I'll try with those first.
    A nice example of a microcontroller based synth is www.elby-designs.com/avrsynth/avrsyn-about.htm.
  • Ym2413aYm2413a Posts: 630
    edited 2006-12-13 16:39
    Fad, I got a engine that can play 6 wavetable channels at once along with a compressed aDPCM channel.
    It only uses one COG.

    You could do some interesting things with that alone. I know I have.

    More COGs could be used to generate more channels or more advanced channels with a little work. ^^
  • Ym2413aYm2413a Posts: 630
    edited 2006-12-13 16:47
    P.S. A MIDI in/out object could be a nice thing to write for the Prop.
    With that you could make all kinds of neat little Synth projects.

    I wish I had the time to do all this though, Since lately I've been busy with my clients projects and not my own personal fun ones.

    The Propeller has enough power to do some really cool Analog emulation or FM! Think Arp Odyssey or Yamaha Dx7.
    I'd do the MelloTron with my current code but the sample RAM isn't large enough to store those old tape reel recordings.
    Maybe a SRAM chip would help with that. ^^ lol.gif
  • WurlitzerWurlitzer Posts: 237
    edited 2006-12-13 19:27
    I am working on replacing a BasicX-24 based MIDI controller for my Pipe Organ. While the BasicX-24 handles the record/playback MIDI functions quite well, the Propeller chip allows me to include all Stop changes (voice on/off), combination action memory controller, LCD screen and possibly direct read/write to an SD memory to record MIDI pieces without the need for a laptop or PC running.

    If successful, this will also reduce the IC count in the organ from about 35 to maybe 5 while at the same time increase functionality.
  • HarleyHarley Posts: 997
    edited 2006-12-13 21:13
    Wurlitzer,

    Any chance you've some photos of your MIDI controller?___
    And might the Propeller version of the schematic be available sometime soon?___ yeah.gif

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Harley Shanko
    h.a.s. designn
  • Fad ElectricFad Electric Posts: 9
    edited 2006-12-13 22:10
    Ym2413a said...

    P.S. A MIDI in/out object could be a nice thing to write for the Prop.
    With that you could make all kinds of neat little Synth projects.

    That would be great! Maybe it could even support more than one input and output on one COG. Anyone that could say if it would be posible with multiple MIDI input and output, on one COG?
    scool.gif
  • WurlitzerWurlitzer Posts: 237
    edited 2006-12-15 20:23
    Harley, I am in the writing code stage, learning Propeller assembly (only know Motorola 68705 assy). The BasicX-24 is on a Radio Shack 4"x4" 44 pin edge connector prototype pc board and a bunch of supporting ICs (35+).

    The Propeller will allow me to use a single set of 3-32 bit shift register ICs (Allegro) to scan all keyboards (1st and 2nd touch) and pedal board (again 1st and 2nd touch), scan the individual stops and the combination action pushbuttons, then process all the on/off events into General MIDI commands and send the data to the pipe chamber where 2 or 3 Propellers will process each message to the appropriate channel (set of organ pipes or percussion) and output to 3-32 bit shift register chips(same as the console scanning ICs and directly drive the organ pipe magnets.

    MIDI has not had great success for larger pipe organs because of the hugh number of messages sent (@ the slow MIDI baud rate) when a combination action button was pressed and a whole bunch of stops changed state. My program (already run in a BasicX-24) gets around this issue quite nicely IMO.

    If there is interest, when I have reached the construction stage I can post the schematic and pics. Thanks to the Propeller, it will be a guttless wonder because so much can be accomplished in software. If the Propeller could be programmed in VB like the BasicX-24 I would be playing the instrument right now instead of learning PropAssy. It will be worth the effort IMO.
  • Fad ElectricFad Electric Posts: 9
    edited 2006-12-18 13:51
    Ym2413a said...
    Fad, I got a engine that can play 6 wavetable channels at once along with a compressed aDPCM channel.
    It only uses one COG.

    You could do some interesting things with that alone. I know I have.

    More COGs could be used to generate more channels or more advanced channels with a little work. ^^

    How long can these wavetables be?
  • Ym2413aYm2413a Posts: 630
    edited 2006-12-18 15:07
    Fad Electric said...
    How long can these wavetables be?
    They can span the whole 32k of HUB-Ram.

    So they can be anywhere from 0 to 32k together.

    I've been writing tracker music for the thing that only use 2k for the samples which include instruments and drum kits.
    The two compression algorithms turn the 32k into 64k uncompressed and 192k uncompressed of sample storage.
    Both are lossy compression.
  • Fad ElectricFad Electric Posts: 9
    edited 2006-12-18 15:32
    Ym2413a said...
    Fad Electric said...
    How long can these wavetables be?
    They can span the whole 32k of HUB-Ram.

    So they can be anywhere from 0 to 32k together.

    I've been writing tracker music for the thing that only use 2k for the samples which include instruments and drum kits.
    The two compression algorithms turn the 32k into 64k uncompressed and 192k uncompressed of sample storage.
    Both are lossy compression.

    Are the samples in the wavetables 8bit???

    I have been working on a logaritm that decompress sound at an factor of 1:8 that can be driven form an 8bit controller. Maybe thats something that could be implemented under HSS.

    Post Edited (Fad Electric) : 12/18/2006 3:36:49 PM GMT
  • Ym2413aYm2413a Posts: 630
    edited 2006-12-18 15:48
    Fad Electric said...


    Are the samples in the wavetables are 8bit???

    I have been working on a logaritm that decompress sound at an factor of 1:8 that can be driven form an 8bit controller. Maybe thats something that could be implemented under HSS.

    Yeah, the sample are 8bit, 4bit and 1bit adpcm.
    8bit sounds the best but eats a bit of RAM.

    4bit has twice the quantize noise but saves half as much space. (very very simple compression)

    The 1bit ADPCM is 1/6th the size of uncompressed.
    It sounds good. Only it distorts a little bit with high frequencies. It works perfect for mid to low frequencies.
    It was designed with the idea of the Low-Pass filter used on the Demoboard so it sounds clean.

    The audio output from each wavetable synth is 9bit. The mixer does everything in 12bit.
    The ADPCM channel has 7bit range, but is also resampled to 9bit.

    What kind of loss is there with your alogaritm?
  • acantostegaacantostega Posts: 105
    edited 2006-12-18 22:44
    Ym2413a said...

    I've been writing tracker music for the thing that only use 2k for the samples which include instruments and drum kits.
    The two compression algorithms turn the 32k into 64k uncompressed and 192k uncompressed of sample storage.
    Both are lossy compression.

    Cool, tracker music! But how do you input the track information into the Propeller? Or, put another way, how do you control what sounds your software plays?
  • Ym2413aYm2413a Posts: 630
    edited 2006-12-19 00:34
    acantostega said...

    Cool, tracker music! But how do you input the track information into the Propeller? Or, put another way, how do you control what sounds your software plays?

    From SPIN with the HSS object it would look like this:

    ...
    hss.hmus_load(@song1)
    hss.hmus_play
    ...

    Where @song points to the music file in HUB-RAM.
    The music is composed on the PC and converted into .HMUS format which I designed for the Hydra.
    It's a compressed 4 channel tracker format, just like MOD and S3M.

    cool.gif
  • Fad ElectricFad Electric Posts: 9
    edited 2006-12-19 16:56
    Ym2413a said...


    Yeah, the sample are 8bit, 4bit and 1bit adpcm.
    8bit sounds the best but eats a bit of RAM.

    4bit has twice the quantize noise but saves half as much space. (very very simple compression)

    The 1bit ADPCM is 1/6th the size of uncompressed.
    It sounds good. Only it distorts a little bit with high frequencies. It works perfect for mid to low frequencies.
    It was designed with the idea of the Low-Pass filter used on the Demoboard so it sounds clean.

    The audio output from each wavetable synth is 9bit. The mixer does everything in 12bit.
    The ADPCM channel has 7bit range, but is also resampled to 9bit.

    What kind of loss is there with your alogaritm?

    What is 1bit adpcm? Is it something like CVSD (Continuously Variable Slope Delta).

    The compression I have been working on, rely on prediction of filter output.
  • Ym2413aYm2413a Posts: 630
    edited 2006-12-19 18:49
    Fad Electric said...

    What is 1bit adpcm? Is it something like CVSD (Continuously Variable Slope Delta).

    The compression I have been working on, rely on prediction of filter output.

    Yes my 1-bit ADPCM is a bit like CVSD.
    It's fast and easy to decompress.

    The "Slope" can be adapted to the waveform to better match the raw samples.
    It finds the average rate of change per samples in a packet and stores that as the adapted value which it adds or subtracts from the PCM values.

    I can run this decompressor on one COG at 32k sampling rate along with 6 WaveTable synths and programmable mixer.

    I'm interested in your compression method. It sounds interesting. I've heard of people using prediction of filter compression on other micro-controllers with great results.
  • acantostegaacantostega Posts: 105
    edited 2006-12-19 22:06
    Ym2413a said...
    acantostega said...

    Cool, tracker music! But how do you input the track information into the Propeller? Or, put another way, how do you control what sounds your software plays?

    From SPIN with the HSS object it would look like this:

    ...
    hss.hmus_load(@song1)
    hss.hmus_play
    ...

    Where @song points to the music file in HUB-RAM.
    The music is composed on the PC and converted into .HMUS format which I designed for the Hydra.
    It's a compressed 4 channel tracker format, just like MOD and S3M.

    cool.gif

    Wow, very cool indeed...
  • Fad ElectricFad Electric Posts: 9
    edited 2006-12-21 15:51
    Ym2413a said...
    Fad Electric said...

    What is 1bit adpcm? Is it something like CVSD (Continuously Variable Slope Delta).

    The compression I have been working on, rely on prediction of filter output.

    Yes my 1-bit ADPCM is a bit like CVSD.
    It's fast and easy to decompress.

    The "Slope" can be adapted to the waveform to better match the raw samples.
    It finds the average rate of change per samples in a packet and stores that as the adapted value which it adds or subtracts from the PCM values.

    I can run this decompressor on one COG at 32k sampling rate along with 6 WaveTable synths and programmable mixer.

    I'm interested in your compression method. It sounds interesting. I've heard of people using prediction of filter compression on other micro-controllers with great results.

    Ok! cool...
    I will have to convert my compression/decompression algorithm to COG assembler, to be able to contribute with anything useful at this department.

    Have you made any effort to keep the note/control data as small as possible?
  • Ym2413aYm2413a Posts: 630
    edited 2006-12-21 23:53
    Fad Electric said...

    Ok! cool...
    I will have to convert my compression/decompression algorithm to COG assembler, to be able to contribute with anything useful at this department.

    Have you made any effort to keep the note/control data as small as possible?

    Yes, the musical score data is compressed as well.
    Both using a mixture of Runlengh and Delta compression.
    Also Notes and Commands that are more likely to be used in playback are compressed using smaller word sizes.
    The playback engine decompresses the score data in realtime while it plays back.

    It returns greater compression ratios then S3M tracker.
    I'm at work, so I don't have my numbers with me at the moment.

    I take a lot of pride in the compression I came up with for the (.hmus) tracker music format. ^^
Sign In or Register to comment.