Translations of this page:

Soft_synth

Автор NightRadio

Музыкальный трек написанный на Pixilang
Внимание, ест много памяти

TICK_SIZE = 4096
BUFFER_SIZE = TICK_SIZE * 64
FREQ = 44100
buf = new_array( BUFFER_SIZE * 2 )
 
sound_volume( 128 )
 
per = new_array( 60 )
p = 0
per[ p ] = 1712 p + 1 per[ p ] = 1616 p + 1 per[ p ] = 1524 p + 1 per[ p ] = 1440 p + 1 
per[ p ] = 1356 p + 1 per[ p ] = 1280 p + 1 per[ p ] = 1208 p + 1 per[ p ] = 1140 p + 1 
per[ p ] = 1076 p + 1 per[ p ] = 1016 p + 1 per[ p ] = 960 p + 1 per[ p ] = 906 p + 1
per[ p ] = 856 p + 1 per[ p ] = 808 p + 1 per[ p ] = 762 p + 1 per[ p ] = 720 p + 1 
per[ p ] = 678 p + 1 per[ p ] = 640 p + 1 per[ p ] = 604 p + 1 per[ p ] = 570 p + 1
per[ p ] = 538 p + 1 per[ p ] = 508 p + 1 per[ p ] = 480 p + 1 per[ p ] = 453 p + 1
per[ p ] = 428 p + 1 per[ p ] = 404 p + 1 per[ p ] = 381 p + 1 per[ p ] = 360 p + 1 
per[ p ] = 339 p + 1 per[ p ] = 320 p + 1 per[ p ] = 302 p + 1 per[ p ] = 285 p + 1
per[ p ] = 269 p + 1 per[ p ] = 254 p + 1 per[ p ] = 240 p + 1 per[ p ] = 226 p + 1
per[ p ] = 214 p+1 per[ p ] = 202 p+1 per[ p ] = 190 p+1 per[ p ] = 180 p+1
per[ p ] = 170 p+1 per[ p ] = 160 p+1 per[ p ] = 151 p+1 per[ p ] = 143 p+1
per[ p ] = 135 p+1 per[ p ] = 127 p+1 per[ p ] = 120 p+1 per[ p ] = 113 p+1
per[ p ] = 107 p+1 per[ p ] = 101 p+1 per[ p ] = 95 p+1 per[ p ] = 90 p+1 
per[ p ] = 85 p+1 per[ p ] = 80 p+1 per[ p ] = 75 p+1 per[ p ] = 71 p+1 
per[ p ] = 67 p+1 per[ p ] = 63 p+1 per[ p ] = 60 p+1 per[ p ] = 56 p+1
 
off = TICK_SIZE * 0 note = 50-24 vol = 2000 * 64 ADD_STRING
off = TICK_SIZE * 0 note = 50 vol = 2000 * 64 ADD_STRING
off = TICK_SIZE * 3 note = 50+12 vol = 2000 * 64 ADD_STRING
off = TICK_SIZE * 6 note = 50-12 vol = 2000 * 64 ADD_STRING
off = TICK_SIZE * 9 note = 53 vol = 2000 * 64 ADD_STRING
off = TICK_SIZE * (32+0) note = 45-24 vol = 2000 * 64 ADD_STRING
off = TICK_SIZE * (32+0) note = 50 vol = 2000 * 64 ADD_STRING
off = TICK_SIZE * (32+3) note = 52 vol = 2000 * 64 ADD_STRING
off = TICK_SIZE * (32+6) note = 48 vol = 2000 * 64 ADD_STRING
off = TICK_SIZE * (32+9) note = 50 vol = 2000 * 64 ADD_STRING
off = TICK_SIZE * (32+9) note = 48 vol = 800 * 64 ADD_STRING
off = TICK_SIZE * (32+9) note = 45 vol = 800 * 64 ADD_STRING
 
MAKE_REVERSE
 
a = 0 while( a < 0 )
{
	off = TICK_SIZE * (a+0) vol = 3000 ADD_BIT
	off = TICK_SIZE * (a+1) vol = 200 ADD_BIT
	off = TICK_SIZE * (a+2) vol = 3000 ADD_BIT
	off = TICK_SIZE * (a+3) vol = 100 ADD_BIT
	off = TICK_SIZE * (a+4) vol = 1000 ADD_BIT
	off = TICK_SIZE * (a+5) vol = 300 ADD_BIT
	off = TICK_SIZE * (a+6) vol = 1500 ADD_BIT
	off = TICK_SIZE * (a+7) vol = 100 ADD_BIT
	a + 8
}
MAKE_BLUR
MAKE_BLUR
 
send_sound( buf, FREQ, 2, 1 )
 
halt
 
ADD_STRING:
coff = rand&127
p = off
sp = 0
new_d = ( ( ( 3546894 / FREQ ) * 1024 ) / per[ note ] + (rand&3) ) * 1024
d = prev_d
pp = 0
while( vol > 0 )
{
	l = ( ( sp / 1024 ) & 127 ) - 64
	r = ( (( sp / 1024 )+coff) & 127 ) - 64
	vol2 = ( (csin( pp / 20 )/4+200) * vol ) / 256
	l * (vol2/32) l = l / 64
	r * (vol2/32) r = r / 64
	buf[ p * 2 + 0 ] = buf[ p * 2 + 0 ] + l
	buf[ p * 2 + 1 ] = buf[ p * 2 + 1 ] + r
	sp + d / 1024
	if d < new_d { d + 128 if d > new_d { d = new_d } }
	if d > new_d { d - 128 if d < new_d { d = new_d } }
	vol - 1
	p + 1
	if p >= BUFFER_SIZE { p = 0 }
	pp + 1
}
prev_d = d
ret
 
ADD_BIT:
p = off
pp = 0
ps = 32768
while( vol > 0 )
{
	l = (rand&127)-64
	r = (rand&127)-64
	l * (vol/32)
	r * (vol/32)
	buf[ p * 2 + 0 ] = buf[ p * 2 + 0 ] + l
	buf[ p * 2 + 1 ] = buf[ p * 2 + 1 ] + r
	vol - 2
	p + 1
	ps - 256
	if ps < 0 { ps = 0 }
	pp + (ps / 256)
	if p >= BUFFER_SIZE { p = 0 }
}
ret
 
MAKE_ECHO:
i = 0 while( i < 4 )
{
	p = 0 while( p < BUFFER_SIZE*2 ) {
		p2 = p - TICK_SIZE*2*8
		if p2 < 0 { p2 + BUFFER_SIZE*2 }
		buf[ p ] = buf[ p ] + buf[ p2 ] / 4
		p + 1
	}
	i + 1
}
ret
 
MAKE_BLUR:
p = 0 while( p < BUFFER_SIZE ) {
	p2 = p + 1 if p2 >= BUFFER_SIZE { p2 = 0 }
	p3 = p - 1 if p3 < 0 { p2 = BUFFER_SIZE - 1 }
	l = ( buf[ p2 * 2 + 0 ] + buf[ p3 * 2 + 0 ] ) / 2
	r = ( buf[ p2 * 2 + 1 ] + buf[ p3 * 2 + 1 ] ) / 2
	buf[ p * 2 + 0 ] = l
	buf[ p * 2 + 1 ] = r
	p + 1
}
ret
 
MAKE_REVERSE:
p = 0 while( p < BUFFER_SIZE ) {
	p2 = ( BUFFER_SIZE - p ) - 1 
	buf[ p * 2 + 0 ] = buf[ p * 2 + 0 ] + ( buf[ p2 * 2 + 1 ] * csin( p / 32 ) ) / 256
	buf[ p * 2 + 1 ] = buf[ p * 2 + 1 ] + ( buf[ p2 * 2 + 0 ] * csin( p / 32 ) ) / 256
	p + 1
}
ret
pixi-projects/soft_synth.txt · Последние изменения: 2009/01/23 04:03 — 195.91.151.1
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki