MappingBeyondHeat
The prompt for Genuary2025 Day 21 is “CollisionDetection“, Day 28 is “ InfiniteScroll “ & Day 30 is “ AbstractMap ”
ScrollMaps uses Python, Hydra & SonicPi to bring the three prompts together: Heat Maps & Radial Maps in Python, Abstraction & scrolling with Hydra and Collision Detection used for the SonicPi composition.
Poetry
Maps Scrolling
Paths Unrolling
Abstraction Evading
Infinite Scrolls Shifting
Lifting
To the next point where the shade is in
Video
Code
Python
HeatMaps
import numpy as np
import seaborn as sns
import matplotlib.pylab as plt
def battle():
boats = [0,1,2,3,4,5,6,7,8,9,10,11]
prob = [0.025,0.025,0.05,0.05,0.05,0.05,0.1,0.1,0.1,0.1,0.2,0.15]
shipyard2 = np.random.choice(boats, (16,16), p=prob)
return shipyard2
def plotting(x):
letters = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P']
uniform_data = x
ax = sns.heatmap(uniform_data, linewidth=0.5,cmap="Reds")
ax.set_xticklabels(letters)
plt.show()
return x
Plot
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
def plotting(num,var_mean1,var_mean2,rate,styling):
sns.set_theme(style="dark")
n = num
mean = [0, var_mean2]
cov = [(2, var_mean1), (var_mean1, .2)]
rng = np.random.RandomState(rate)
x, y = rng.multivariate_normal(mean, cov, n).T
f, ax = plt.subplots(figsize=(6, 6))
sns.scatterplot(x=x, y=y, s=5, color=".15")
sns.histplot(x=x, y=y, bins=50, pthresh=.1, cmap= styling)
sns.kdeplot(x=x, y=y, levels=5, color="w", linewidths=1)
plotting(5000,0.4,1,5,'Set3')
plotting(20000,0.8,0,10,'mako')
plotting(250,1.2,0.5,3,'cool')
Hydra
Abstacting the Map
s1.initScreen()
src(s1).scale(2).repeat(1,2).modulatePixelate(src(s1),0.31).modulateScrollX(src(s1)).modulateScrollY(src(s1).repeat(3,3).colorama()).out()
Quad Code
s1.initScreen()
s2.initScreen()
s3.initScreen()
s0.initScreen()
src(s1).modulateRotate(s1).out(o0)
src(s2).modulatePixelate(s2).out(o2)
src(s3).ModulateScrollX(s3).out(o1)
src(s0).out(o3)
render()
SonicPi - Detection
def Chosen(x,timer)
use_random_seed Time.now.to_i / timer
y = x.shuffle.shuffle
y = y * 3
z = y.shuffle
return z
end
def Collisions(a, b)
c = []
count = 0
while count < a.length - 1
if a[count] == b[count]
c.append(a[count])
end
count = count + 1
end
puts c
return c
end
live_loop :detection2 do
use_random_seed Time.now.to_i / 3
x = Collisions(Chosen([30,4,5,12,6,19,7,8,9,12,17,25],7),Chosen([30,4,5,12,6,19,7,8,9,12,17,25],9))
with_fx [:flanger,:ixi_techno].choose do
use_synth [:chipbass,:piano,:prophet ].choose
play x.tick * 5
end
sleep [0.25,0.5,0.75,1].choose
end
live_loop :detection1 do
use_random_seed Time.now.to_i / 3
x = Collisions(Chosen([30,4,5,12,6,19,7,8,9,12,17,25],3),Chosen([30,4,5,12,6,19,7,8,9,12,17,25],2))
with_fx [:flanger,:ixi_techno].choose do
use_synth [:chipbass,:piano,:prophet ].choose
play x.tick
end
sleep [0.25,0.5,0.75,1].choose
end