Jump to content

new 8 CPU parallel µC


DrBunsen
 Share

Recommended Posts

Wierd and totally offtopic, but it could be a useful tool for someone (softsynth? FX? MBHPTV?)

Parallax Propellor

Available in DIP form, around $20.  8 x 32 bit cores running at 80 MIPS 80 MHz = 20 MIPs each (each instruction takes 4 clock cycles), 32 shared I/O pins, 512 words of RAM per core and shared space of 8kwords RAM + 8k ROM.  High level OO language, free dev tools.  VGA, composite and audio out.  $200 dev kit or a DIY version being developed in the user forums.

Link to comment
Share on other sites

I have been looking at the propeller for months. It really looks like a great chip to work on. I remember the dev kit being cheaper than 200.. I'll have to check that.

One drawback is that there are no peripherals. A designer has to go back somewhat to the old bus days for things like analog input. Thankfully, the IO is so fast that with nothing more than a cap and possibly resistor, analog out can be bit banged.

So, for MB work, it would require:

1: an entirely new software package. Why? Propeller does not work quite like anything else on the market. The code that has been developed for MB would have to be broken up and recoded into modules for Propeller, and tested. So, yeah, thats a completely new software package essentially.

2: A minor hardware redesign to get around the fact that there is no analog in.

Link to comment
Share on other sites

Like software synthesis and effects?  ;D

being that for the most part, all that has been available so far are sequential computing systems, that has been the direction of what has been done.

now if a parallel computing system will benefit synthesis and effects will depend on how we try to take advantage of it.  we will have to think of way to utilise parallel and indepenent processing of the same input data.

i am not well studied in systhesis and effects at this time, but i am sure there would be situations where it would be preferrable for effects to be applied in parallel instead of sequentially to a sound source.

one situation might be if you wish to apply more than one sound patch to a midi noteon, at the moment midi dosen't directly cater for this, what is done is to either copy the signal to another channel before sending to the synthesiser or using midithru to a second synth.  this is a problem which organists (including myself) come across when introduced to midi, midi was not designed for multiple patches to a single noteon signal (what i described earlier are work arounds), while both electronic and pipe organs natively can handle multiple stops (patches) simulateneously.  - actually the term stop was used to describe the mechanism to prevent certain pipes from sounding, otherwise all pipes associated with a note would sound.

but back to the subject ... the main reason synth and effects applications are not readily thought of for parallel processing is that we have always used, designed and thought of sequential processing of a signal.  parallel processing may cause a revolution or it may have no effect at all, it depends on if we can use it for what we want.

Link to comment
Share on other sites

I could see this turning into the next digital synth if all of the lines can be multiplexed.  One CPU for midi, one for sequencer, one for A/D (for older modules) etc, etc, and of course, ETC.....

:)

Yes, all of the analog would need to be developed, but the chips and tools are available.  Since this thing seems to be a speed demon, I would think many functions could be incorporated into a box that would make amazing sounds.

This is not to say it would be a MidiBox ala TK.  I am sure we will see something for us musician/geeks in the next couple of years based on this architecture.

cheers,

gb

Link to comment
Share on other sites

i am not well studied in systhesis and effects at this time, but i am sure there would be situations where it would be preferrable for effects to be applied in parallel instead of sequentially to a sound source.

My Digitech Quad 4 can do this.  Some of the I/O maps can route one input to two or more effects in parallel.  It only uses one DSP though, so it creates virtual independant FX units by timeslicing (I assume)

It's a rocking mutiFX btw :)

I haven't so far been able to track down specs for the I/O pins on the Propeller.  If they're fast enough, independant A/D/As could be multiplexed on one pin.  There's 32 pins though, so there's probably enough to be getting along with.  Dedicating 8, 12 or 16 to a resistor ladder would be a cheap way of getting audio in and out for a proof-of-concept.  16 for in and 16 for out, for example.  Or you could write a software S/PDIF engine and use an external pro ADA or soundcard.

I was imagining something like running independant DSP algorhythms on each core and passing results digitally between them.

Link to comment
Share on other sites

speed demon

Ahem.  I made a booboo (corrected above).  That should have said 80 MHz, not 80 MIPs.  Each instruction takes four clock cycles, so it's only 20 MIPs per core.  And as I read it, for most apps you need to dedicate one core as a task master. according to a forum reply, the task master is onboard but separate to the 8 cores ("COGs")

Still, $20...

I'm off to search their forums for the words "DSP" and "audio" :D

Link to comment
Share on other sites

Results:  nothing specific on audio, midi or DSP so far.  Still, the night is young as they say.

Meanwhile this thread gives a really good rundown on on what the Propeller is capable of, what you need to get started, how coding works, etc.

I'm a total n00b, should I start on a Propeller?

You can start off simple using a single COG and then use additional COGs as you feel more confident

Link to comment
Share on other sites

$200 dev kit or a DIY version being developed in the user forums.

What about the propstick? it's built as a drop-in to a breadboard, with some code you could get it to talk to some of the MBHP modules....

It starts to sound like a new core module then, and I think TK would tell us that it's a really big job....

Link to comment
Share on other sites

Propeller is more than capable of audio and video work. IF you get the demo board, it comes with audio and video out jacks, and can process multiple sprite movements. In fact, someone is in the process of finalising an '8-bit' style game system on chip. The I/O is fast enough to bit bang a composit video signal in parallel with two audio channels, as well as read in button presses.

As to the cog/process style.. certainly you would want to push each cog to its limits before pushing a process onto another cog. For instance, one cog is capable of handling all MIDI I/O signaling, as well as the occasional serial port message (put the LCD and user buttons on a serial terminal?), not just midi in or just midi out.

The idea is not to break down the whole system into a bunch of little one task processes and use up all the cogs before anything usefull gets done... more like break the whole system down into SUB-systems.. ALL MIDI I/O on cog 1, button Scan input and led output on cog 2, Analog input scanning on cog 3, Everything for the LCD/user interface and Bank stick on cog 4..  etc

Consider that MOST of the process work done by current pic could be squeezed into one or two cogs by pushing them to the limits.

Yes it IS a really big job, but Spin actually looks pretty easy to learn. If someone where to build up a complete MIDI I/O object to run one cog, there is LOADS of room for people to make a device as they want it. For instance, a button press scan matrix wouldnt be hard to program, using the existing button boards. Nor would the LED output code be terribly difficult.  Also, once a suitable ADC is wedged between the Prop and the existing analog boards, we have what looks like a Midibox.

The real hard code (as I see it) is a: the midi library (it will come with time for certain) and B: (the big one) all the processing TK has put into adding FEATURES to MB. The real intelligence in the MB is all the fancy stuff you can do with it because of morphing the inputs and outputs into usefull MIDI data.

Link to comment
Share on other sites

I think the intelligence in the MIOS platform is more about the modular nature of the code, the extensible design practices, and in particular the many small optimisations which come about through TK's many years of experience with midi, coding in general, and this particular platform - these are most important because timing in MIDI is all-important... Nobody has that kind of experience with the Prop' and it will take a lot of time to make it come close to the MIOS we have now... It could be very cool though, I wish it had been around when I started my seq project, it really would be perfect for my design... But I've read enough of TK's code to know that I couldn't do what he does....

Link to comment
Share on other sites

EXACTLY!  Its the 'personality' of the MB that would be hard to replicate in any way. The feature rich nature and 'non-techie customzation' appeal.

You dont have to be a programmer to make a MB do what you want it to to do.

For the Prop, you would get midi and I/O objects, and the rest is your business.. kinda hard to be usefull without good programming skills.

But damn one day it would be a sweet machine!

Consider though that in the end, (once all that stuff is in place) it would be far more user friendly/configurable than the MB currently already is.

Link to comment
Share on other sites

Oh Lord, I couldn't imagine trying to replicate or port MIOS to this chip.  I was imagining it more as a platform for building DSP devices that could be controlled from a MIOS core.  But yes, one day perhaps MIOS will stretch its wings beyond its home planet and colonise other galaxies.  Er, I mean, get ported to other µcs.

Link to comment
Share on other sites

yeah if someone had some real heavy processing work to be done via midi control, it would be pretty sweet. Like perhaps model a SID inside the Prop?  Or perhaps some sort of MP3 playback with scratching capacity..    someone surely will come up with a damn good idea. I would imagine that if not already, then soon someone will have a MIDI object written for the Prop anyway.

Link to comment
Share on other sites

I remembered the other day that my Digitech Quad i mentioned above has a single DSP running at 21 MIPs, and out of that it gets 4 effects, some of which can be dual effects (ie delay+reverb), 7 MIDI CCs per effect, and dynamic response on all four analog inputs.  So *8* COGs running at 20 MIPs should be capable of some funky shit, even if they're not dedicated DSPs.

Link to comment
Share on other sites

hiho,

i'm a noob with midi coding - just made some opl3 stuff under freedos. but the interestening part of this chip here seems to be the parallel engine.

remembering the discussion about mixer design (somwhere in the design forum here) there were two chips (cs8414 and cs4334) which are usable to do some ad/da. some analogue device chips are also usable to get 192khz/24bit and all this stuff is about 5$ for each chip (except the crystal chips).

So just from an idea: transform the analog audio by SID/OPL3/whatever into DA and process it with multiple cores (the prob chip).

that would also kill some common problems: audio transformation (ad/da) because you already have an digital audio signal, which could optional transformed to analogue. there would be 2-3 outs: tos/spdif, analogue. wouldn't be fine? the only real and big problem is audio processing.

many threads exists to the nice little effect unit miss parker. but the prob chip could do the same for low cost.

it's just an idea ;)

Link to comment
Share on other sites

  • 1 month later...

(HSS) The Musical Propeller. (Hydra Sound System) 

{edited}

I've writen a sound engine for the up coming Hydra computer console. (or any other project that needs sound synthesis capabilities)

HSS (Hydra Sound System) is a sound engine for the Propeller which handles both Music, Sound FX and Samples.

It supports playback of 6 wavetable channels and 1 adpcm channel.

4 WaveTable channels are dedicated to the Hmus engine, which handles playback of music files.

2 WaveTable channels are left for Sound FXs which are controlled by the FXsynth engine.

The last ADPCM channel is used for playback of Compressed Wave Files; sampling rates from 10Hz to 32Khz; 1:6 audio

compression.

FXsynth generates sounds based on synthesis parameters.  Much like an analog synth, you set the parameters such as "Waveform", "Frequency Modulation", "ADSR", and so on...

The parameter data for a sound FX is either 12 bytes or 28 bytes with sequencer data appended.  In less then 1k you could put over 50 Sound FXs.

I'm going to release my code in the near future

My goal is to have MOD like music files that are less then 4k in size with WaveTable data.

In other news:

Lower prices on Propellers - $12.95

$15 project board - under development with forum input:

{edited}

The design is currently defined as follows:

  • Surface-mounted P8X32A-Q44 Processor, socketed crystal clock
  • 64k EEPROM with SDA and SCL accessible. Pullup resistor on SCL.
  • Power light with three-position switch (0 = off, 1 = power to all supplies except a few servo ports, 2 = power to all places) 
  • 3†x 4†size, with mounting holes the same as the BOE, Super Carrier, and SX Proto Boards
  • Dual power supply: 5V, 3.3V, and Vss
  • Two (2) 47 uF capacitors across the 5V power supply for servo management
  • Friendly power rails along the edge of the board for multiple connection points
  • Several rows of connected 0.1" pads for easy point-to-point soldering, providing 1x2 or 1x3 connections
  • (4) 3-pin locations for servo connections, or other 3-pin devices made by Parallax (serial LCDs, Ping, PIR, etc), and a jumper to supply these ports with Vin or Vdd.
  • Ample through-hole area for your projects
  • Strain-relief holes for wires leading off the board
  • PropPlug programming connection
  • USB2SER programming holes
  • Unpopulated dual ps/2 and VGA.
  • 4 A/D ports near the Propeller, we may have it so these are capable of being disabled to regain the I/O pins
  • No breadboard (however the user may place one over the prototype area).

Also:

Here's a list of good forum threads with much cool stuff.

More on the Hydra; board picture and more specs here:

{edited}

The Hydra is a small propeller based gaming system that gives you full development capabilities.  As a matter of fact, it comes with the development tools and a manual on how to program the thing.  It's all open and you can write your own games and programs for it along with designing your own hardware plug-ins.

Other audio/MBHP related threads:

MP3, Ogg and ADPCM thread

WAV player - 8 bit stereo 22kHz from FAT16 SD card; software DAC

LEDs as sensors

Propellor's gonna hurl... - phonemes, formants, speech synthesis

C=64 emulator boots!

General:

MoBoProp - motherboard and stackable daughtercards in the works.  Most daughtercards to be common with the MoBoStamp project.

Propellor supercomputing - massively parallel Propeller clusters,  cellular automata, neural networks, Genetic Algorithms, machine vision, robotics

PIPE Is not a Propellor Emulator

Propeller Object Exchange - free source code

Propellor "Operating System" (work in progress):

{edited}

VGA text and keyboard drivers;  a loader that can load from I2C EEPROMs;  a simple command interpreter to configure things and to load and execute programs;  a way to copy SPIN programs to the EEPROMs either from the boot EEPROM or an SD/MMC card;  a simple editor.

The hires vga text driver maintains multiple text windows.

A simple system, mostly for loading other programs that will only need to reference "built-in" drivers.  A loaded program can always take over the whole Propellor and run its own drivers.

Link to comment
Share on other sites

  • 2 weeks later...

More on the Hydra Sound System:

{edited}

HSS only needs 2 COGs to function. I designed it to function along with other COGs running tasks like game engines' date=' I/O, EEPROM management and video.

One COG plays the role of a sound synthesizer or soundchip.  It does all the calculations for Wavetable Synthesis, ADPCM, Mixing, Volume/Envelope and other things. This COG could be used by its self.

The second COG does the function of a co-processor.

It runs an engine written to play music, decompress data in realtime and interface to the user's program with High-level commands such as Play, Stop, Load, Tempo, SetVol, etc.

This allows the programmer to send commands to the sound engine and not have to worry about doing the dirty work of music playing and soundFXs in the game-engine's code.

HSS is pretty powerful. 6 channels of PCM WaveTable, ADPCM Playback, Tracker Music Playback Engine and Two Analog Synthesizer Emulaters all in 2 COGs.

Now everything is starting to take it's final form so a final first release is looking more likely.

Hmmm.  Porting MIOS to run on one of the free COGs suddenly sounds a lot more attractive.  At a mimimum, porting enough code that we can interface a PIC/MIOS Core with a Propeller running Hydra ...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...