Imagine Brainloller, except instead of outputting characters and maybe doing a sum or two, it outputs noises and controls the attributes of a set number of oscillators. Perhaps different RGB values correspond to different operations and methods; consider logic-based control structures, complex polyphonic multiple-oscillator multiplicative synthesis combined with ENTERPRISE-LEVKidding. and waveform modifiability to boot.
Thoughts, /prog/? Contributive comments? Language? If it's anything other than C I'll be learning that as I go along. Am I reinventing a wheel somewhere?
I haven't read SICP in the last couple of days, and I just thought of this about 20 seconds prior to starting this post.
Name:
Anonymous2009-06-22 16:36
So it would be like Brainfuck hooked to a speaker instead of a printer? Sounds kind of iffy.
Name:
Anonymous2009-06-22 17:06
Make a csound operator.
Do it Anon!
Name:
Anonymous2009-06-22 17:45
Each pixel would be a statement (obviously), and each statement would be evaluated at intervals (maybe set by a clock speed thing or something).
The current instruction thingy would continue moving in a direction until it hit a control statement, where it could even clone itself and move off in separate directions, doing many things at once.
Oscillators would have properties like amplitude, frequency (or MIDI note and pitch bend), waveform, etc; or maybe they could chain with each other - O1 uses O2 as input 1;
O1 uses O3 as input 2;
O1 uses sum of inputs as output;
Something like that. It's all a theory right now, I'm kind of using /prog/ as an interactive notebook of sorts.
Name:
Anonymous2009-06-22 18:14
there's pd/gem which ive been meaning to look into, but havent got round to it yet
>>12
get a better algorithm. makeFibs :: (Integer, Integer) -> [Integer]
makeFibs (a, b) = let f@(_:t) = makeFibs (a,b)
in a : b : zipWith (+) f t
fibs = makeFibs (0, 1)
twoFibs :: Integer -> (Integer, Integer)
twoFibs 0 = (1, 0)
twoFibs n = let q = shiftR n 1
r = n .&. 1
(a, b) = twoFibs q
x = a * a + b * b
y = b * (2 * a + b)
in case r of
0 -> (x, y)
1 -> (y, x + y)
fib n = let q = shiftR (abs n) 2
r = n .&. 1
(a, b) = twoFibs (q + r)
in case r of
0 -> b * (2 * a + b)
1 -> a * a + b * b