• Welcome to Circuitbenders Forum.

CATWEAZLES Fraktal / CellilarAutomata Synth

Started by Circuitbenders, February 04, 2008, 06:45:00 PM

Previous topic - Next topic

Circuitbenders

i am not paid to listen to this drivel, you are a terminal fool

catweazle

#16
Quotesurely you mean: No, demo's are good!
;)

Quote... why is that? what is it, 8 bit sound or 1 bit or what? Thinking of building it aaahhh!!!!

Why?
- There are a lot of cool schematics and "lofi" synthboxes out there. But most are to expensive or to much
  components to wire (I'm a bit lazy). Lazyness, it's much more easier to do a program code than wiring
  a lot of ICs and analog parts. And if something has to be changed the circuit has to be rewired, software is
  easier and quicker changed. Belive me, it's really much more easier to learn a programming language like "C"
  than learning all about electronics. Today every cheap PC has so much performance to do all the stuff we
  build in software (VST-plugins, Max/Msp, Reaktor). But is it really fun to play a VST-CrackleBox with the mouse?!
  So the intension was an cheap easy to build versatile and bendable hardware platform.
  Next thing is that it's a bit boring to implement/rebuild the well known stuff again and again
  (the hundreth crackle box, ataripunkconsole ...).
  There are a lot of interesting fields we can get our ideas from: chaos theory, cellular automata,
  algorithmic omposition, neural networks, fuzzy logic and nature.
 
- 8bit/1Bit:
  Sound is calculated with 8Bit resolution, the PIC-microcontroller works internally with 8bit wide data/registers.
  Sound is outputed via pulsewidth modulation (PWM), which is 1Bit output but 8x oversampled. 
  At the moment, you get 4 different synthesizers/noisemakers in one microcontroller/box.
  - Two fractal based "music" generators ("predictive digital music synthesizer",  it's not random!)
  - Step-sequencer (8 steps) with FM(frequency modulation) tone generation
  - Cellular Automata (1 dimensional, see "game of life", "critterandguitari")
  But the synths are not limited to 4, it can be more (8,16,32 .. 2^x), A lot of free space is left in the PIC.

ToDo / Ideas:
- adding some switches (Play/ReTrigger, Reverse/Forward, Synth/Preset and Store/Rec)
- adding presets for each synth
- adding a Audio input for use as a FX/Sampler
- adding a 128kByte EEPROM (25LC1024, SPI) for sample storage
- adding MIDI input (control, sync)
- adding more synths (why not some common stuff)

I hope I don't have to write a detailed users manual because my english is not good enough to write
a good detailed and comprehensive manual. Ok, if the thing is working right (one algorithm is still in development)
I post of course a overview of the knobs and algorithms.... but no "high gloss" high resolution color magazine. 

I'm shure you can build and bend it  ;)

catweazle

ok, sound says more than thousand words - here is another wired FM-Stepsequncer demo.
The sequence itself is a bit shitty I know, but shows some of the posibilities. lofi fm-madness  8)
http://etecnic.fh-pforzheim.de/~catweazle/F-Synth/PICSynth_Fm-Stepsequencer_%232.mp3

djsynchro

#18
Quote from: Circuitbenders on February 15, 2008, 02:26:54 AM
Quote from: djsynchro on February 15, 2008, 12:10:33 AM
No demo's are good!

surely you mean:

No, demo's are good!

;)

Got carried away and forgot the comma...  :)

At catweazle: Man that thing sounds good.... Supergei!l
Glad you're not writing plug-ins but doing some funky hard/soft combination.
Will have to look into building your machine... list of projects is growing.... 

catweazle

Quote... list of projects is growing...
oh yes, that long list with no end  :D

Here is a PICsynth demo tweaking the fraktal-synth algorithm. bleeps and blops
recorded without effects (but it really need external effects and experience playing it live)...
http://etecnic.fh-pforzheim.de/~catweazle/F-Synth/PICsynth_Algorithm1_Tweaking.mp3

Circuitbenders

well i've finally got the parts, now to find time to actually build the thing  ;)
i am not paid to listen to this drivel, you are a terminal fool

catweazle

***********************
* PICsynth Betaversion 03  *       
***********************
http://etecnic.fh-pforzheim.de/~catweazle/F-Synth/PICsynth_Betaversion03.hex


------------------------------------------------------------------------
| PICsynth_Betaversion03.hex                                           |
------------------------------------------------------------------------
|     | Alg 1         | Alg 2         | Alg 3         | Alg 4          |
| POT | Fraktal       | Fraktal       | FM-Step       | "WSG"          |
|-----|---------------|---------------|---------------|----------------|
|  1  |                    select algorithm 1..4                       |
|-----|----------------------------------------------------------------|
|  2  |                         pitch / speed                          |
|-----|---------------|---------------|---------------|----------------|
|  3  | xxxx....      | xxxx....      | Step 1..8     | Main OSC pitch |
|-----|---------------|---------------|---------------|----------------|
|  4  | ....xxxx      | ....xxxx      | Step value    | AM OSC pitch   |
|-----|---------------|---------------|---------------|----------------|
|  5  | yyyy....      | yyyy....      | DCA Decay     | FM LFO pitch   |
|-----|---------------|---------------|---------------|----------------|
|  6  | ....yyyy      | ....yyyy      | FM  Decay     | FM depth       |
|-----|---------------|---------------|---------------|----------------|
|  7  | zzzzzzzz      | zzzzzzzz      | OSC A pitch   | not used       |
|-----|---------------|---------------|---------------|----------------|
|  8  | not used      | not used      | OSC B pitch   | not used       |
------------------------------------------------------------------------


I've tried to implement the WSG as software, sounds not like the original but strange anyway ;)
Since the cellular automata is a bit boring in the moment I replaced it with the pseudo "WSG".

Hope you got it working, and have fun with it.

Circuitbenders

I'm working on it now.

assuming that the algorithm selection pot is divided into 4 bands of resistance values to select the 4 different algorithms wouldn't it be possible to use a 4 way rotary switch with 2.5K, 5K, 7.5K and 10K resistors on the pins? I'm just thinking a definite switch between settings might be a bit more useful for definite selection. Unless I've misunderstood and it actually fades between algorithms.

admittedly a rotary switch would mean that you couldn't add extra algorithms aftarewards as you'd be limited to 4, but would it work in theory?
i am not paid to listen to this drivel, you are a terminal fool

catweazle

That's a good idea to use a rotary switch for algorithm/synth selection,  better use 8 divisions
because the next software updates will contain "8" selectable synths.
And eight is the magic number in the PICsynth =)

But you have to do it this way (voltage devider):

   +5V
    ^
    *-------o A4
    |           
  10k
    |
    *-------o A3
    |              \
  10k              --- o ----------> AN0 (pin2)
    |
    *-------o A2
    |
  10k
    |
    *-------o A1
    |
   ----  GND


I have choosen the POT as alg/synth selector because
- less wiring pleasure
- easy expandable (number of maximum algorithms/synths)
The pot acts as an switch (rotary switch) emulation done in software.

No, it fades NOT between the algorithms, yet (but morphing would be cool on the fraktal synth)

     

catweazle

Tips for building:
- the case should not be to small, extensions: audio input connector, 4 switches/buttons, (midi input?)
- circuitboard should have space for a 8pin and a 14pin IC and some resistors/caps  (board area > 3 x pic size)
- adding a filter http://www.circuitbenders.co.uk/forum/index.php/topic,499.0.html could be nice ;)

Check your PIC-programmers connector, it is not shure that the pinout of your Programmer is the same
as on the schematic, the pins  PGD(data), PGC(clock) and MCLR(Vpp) have to be connected right.
(if they are not correct nothing will burn but not working, programmer could not detect target PIC).
Maybe you have to build an adapter cable. (MCLR,+5V,GND,PGD,PGC).
Or if the programmer has an 40pin connector for the PIC, use that instead.



Circuitbenders

#25
well, i've wired everything up and tried to burn the PIC with my programmer which has a 40 pin connector, stuck it in the circuit and got absolutely nothing. I'm assuming it should make some noise as soon as its turned on? How many milliamps should the circuit draw when its working?

I've checked over the board about 20 times with a multimeter and its all wired up correctly so i can only assume that i managed to burn the PIC wrong.

Is there any way i can tell if the PIC is actually working or if its actually burnt right? i used the 'verify' feature on the winpic software and it seemed to be alright and it detects the PIC alright although it seems to think that the PIC18F4620 is a 32k device where as you said it was 64k
i am not paid to listen to this drivel, you are a terminal fool

Circuitbenders

problem solved, it was a combination of a dead volume pot (a amateur error  ;) ) and WinPic800 just not liking my PIC programmer. In the end i re-burnt it with PICPgm programmer and it works fine.

Catweazle, you are a genius, this thing is brilliant. I'm really liking the FM step algorithm at the moment although you are right, it could probably benefit from an analogue filter. Looks like i'm going to have to build another one in a bigger box!

PICPgm can be found here if anyones interested http://members.aon.at/electronics/pic/picpgm/
i am not paid to listen to this drivel, you are a terminal fool

Circuitbenders

I recommend putting a series of markers around pot number three to divide it into 8 segments so that when you are using the FM-step algorithm you can tell which step you are adjusting a lot easier.
i am not paid to listen to this drivel, you are a terminal fool

catweazle

I'm glad you got it working so fast and very pleased to hear that you like it.
The PIC has 64kByte flash memory, which is organized in words (1word=16bit=2Byte)
so it has 32kWords memory. I think that's the reason why some programmer software show 32k memory.

The ouput has lots of high frequency components in it (comes from the PWM). You can add a second
lowpassfilter (4k7 resistor and 10nF capacitor) in series to the original schematic if it is to high for your needs.

It should be said that other people doing great stuff with microcontrollers:

AVR Chiptune Tracker
http://www.linusakesson.net/hardware/chiptune.php

1-Bit Groovebox ("Atari2600 emulator")
http://web.media.mit.edu/~nvawter/projects/1bit/
http://burnkit2600.com/gear/1-bit-groovebox/

PIC-Synth  (mmmh, same name, I have to find another name for it!)
http://www.icb.se/araya/synths.html 

6 Voice / Speech Synth based on PIC
http://oopic.com/soundgin/

Doepfer Sampler/Wavetable Osc Module A-112
http://www.doepfer.de/a112.htm

... and of course that thousands of SID 6581/8580 hardware projects.

I gain some ideas from them as well and implement in some ways. But first I want to add a
Audio Input for sampling or fx. We have to do something with the big flash memory ;)
So we can bend the unbendable (record something and bend the samples)
To make it a bit special I will use a CMOS HEF/CD 4069 (hex inverter) as input amplifier/antialiasing filter.

Circuitbenders

Can anything be done about the way that on the FM step algorithm the step selections don't appear to be equally spaced around pot 3. Steps 1 and 8 seem to have selection areas about twice the size of the others.

The other odd thing is that the OSC A pitch and OSC B pitch knobs seem to turn in opposite directions. The pitch is higher in a anti-clockwise direction on OSC A and a clockwise direction on OSC B. Its just a minor thing but if you can easily change it that would be cool.

i am not paid to listen to this drivel, you are a terminal fool