[sdiy] "lunetta"/CMOS sound-making equivalents in C Programming???

nvawter at media.mit.edu nvawter at media.mit.edu
Thu Mar 22 18:04:23 CET 2012


Heya Dan!

I noticed you were on an electromusic thread about 4522s and 4015s my  
friend sent me this morning.

uControllers can do lots of similar stuff to CMOS logic, with certain  
limitations (and certain advantages!)...  One of my favorite resources  
for this is believe-it-or-not, the wikipedia page on LFSRs!  It shows  
the "slow" (Fibonacci) and "fast" (Galois) way to make a shift  
register with feedback in C.

Typically, you'll want to have a loop running and shifting a register  
every clock cycle.  It's safe to use a nice wide variable like an  
unsigned 32-bit word.

A divide-by-two could be implemented as:
while(1){
   if( 0x1 == ((prev_div_in<<1)|(div_in))   ){div_out^=1;}
   prev_div_in=div_in;
}

that detects a transition from 0 to 1.  On that transition, it inverts  
the output.

I'm messing with this stuff, too, but aiming to place it inside a  
cheap CPLD to save space.  Someone (this list?) showed me the Amani  
CPLD board with the AlteraEPMx064 on it.  Those (reprogrammable,  
socketed PLCC) chips cost $2.10 in single quantity!  and they can take  
the place of a dozen CMOS chips!  Of course you have to learn a clumsy  
HDL language (and they are wonky, amiriteladies?), but it's not that  
hard, mostly C-like logic symbols.  And the CPLDs can potentially run  
much faster than the CMOS logic equivalents, too!  And there's a  
simulator (not with audio though, sadly!)





Quoting dan snazelle <subjectivity at hotmail.com>:

> Often I use counters, Logic, clocks, R2R's , shift registers and  
> flip-flops to make sequencers, CV generators, cheap crazy sounds,etc.
>
>
> I was wondering what is possible using a micro-controller and C to  
> replicate or expand on some of those techniques to end up with a  
> vocabulary of fun and quick
> noisemakers.
>
>
> for example, a common use for CMOS in sound making is taking a  
> clock, putting it through a  4040 counter (12 bit) or similar,  
> taking the taps, ANDING them with other clocks,
> XORing the result, etc.
>
>
> So...
>
> 1. How can you replicate something like a 4024/4040 in a program (   
> a counter with multiple outputs/taps	                                 
>                                                                       
>                                                                       
>                                     ?
>
> i think a for loop is a counter, would i just set up a bunch of if  
> statements ?
>
> for (i=0; i<12; i++)
>
> if (i=2)
> dacTap1=HIGH;
>
>
> 2.  how can i make a simple divide by 2 in code?
>
>
> 3. what about replicating shift registers?
>
>
> thanks for ANY IDEAS!!
>
>
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at dropmix.xs4all.nl
> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
>





More information about the Synth-diy mailing list