[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