'#####################
' Music Visualiser 2D
' By Ashish
' 18 May, 2021
'#####################
file_name$ = "rolling.mp3" '<<---- replace with your file name with a sound file you have
tmp_color = hsb~&(i * (255 / 360), 255, 128, 255)
colorData
(i
).x
= _Red(tmp_color
) / 255 colorData
(i
).y
= _Green(tmp_color
) / 255 colorData
(i
).z
= _Blue(tmp_color
) / 255
leftChannel = _MemSound(song&, 1)
rightChannel = _MemSound(song&, 2)
Print "An error occurred." stereo = 0
stereo = 1
i = 0
glAllow = 1
_FPS 60
_MemGet leftChannel
, leftChannel.OFFSET
+ i
+ j
, a1%
'get sound data leftData(n) = a1% * 0.00001
_MemGet rightChannel
, rightChannel.OFFSET
+ i
+ j
, a2%
rightData(n) = a2% * 0.00001
j = j + 2
i = i + 2 * (44100 / 60)
j = 0
_SndClose song&
'closing the sound releases the mem blocks
glInit = 1
_Echo "_GL() : initialization done. glInit set to 1"
'projection setup
gluLookAt 0, 0, 3, 0, 0, 0, 0, 1, 0
c
= Int(map
(Abs(leftData
(i
)), 0, 0.7, 0, 360)) _glColor3f colorData
(c
).x
, colorData
(c
).y
, colorData
(c
).z
'function from
'p5js.bas
'http://bit.ly/p5jsbas
Function map!
(value!
, minRange!
, maxRange!
, newMinRange!
, newMaxRange!
) map! = ((value! - minRange!) / (maxRange! - minRange!)) * (newMaxRange! - newMinRange!) + newMinRange!
'method adapted form http://stackoverflow.com/questions/4106363/converting-rgb-to-hsb-colors
H = map(__H, 0, 255, 0, 360)
S = map(__S, 0, 255, 0, 1)
B = map(__B, 0, 255, 0, 1)
hsb~&
= _RGBA32(B
* 255, B
* 255, B
* 255, A
)
fmx = B - (B * S) + S
fmn = B + (B * S) - S
fmx = B + (B * S)
fmn = B - (B * S)
H = H - 360
H = H / 60
H
= H
- (2 * Int(((iSextant
+ 1) Mod 6) / 2))
fmd = (H * (fmx - fmn)) + fmn
fmd = fmn - (H * (fmx - fmn))