lmao this is so cool
hereās a new HLER release - descriptions of Renoise relationship below:
Released June 13, 2025
Credits:
Written, produced and mixed by HLER (Heikki Lindgren, Esa Ruoho)
Heikki Lindgren: electric guitar, bowed lyre, live effects
Esa Ruoho: Pure Data, Ableton Live, Renoise with Paketti
Mastered by Jukka Andersson
Cover design Juuso Koponen
Signature Dark 2025
SD20D
Already listened to it on Spotify. Very nice!!!
glad you liked it!!
we have a library gig coming this 2nd july, letās see what kinda gear heikkiās gonna use this time. maybe either monosynths or electric guitar or the bowed lyre. sometimes he uses flutes.
itās all fun to loop and layer with them tools
That was pretty good JVS.Now why dont you use better sounds to make it stand out! Its a shame good music like this and other tracks in your soundcloud page to go unnoticed because of the sound selection.
Thank you very much.
My main goal is to focus on the most important element: melody, and Iām really glad you like it.
Is Korg M1 really that cheesy?
This definitely sounds like a Vektroid side project. I see why it might be divisive, but I kind of like it for that
Yes and No, it depends on ones taste
I think you are pretty good with melodies already and song structure,just try a different synth for a change
What @JVS is creating is basically āAmiga soundā in a better sound quality that only needs 4 tracks. The sound selection fits to that style imho. So as long as he prefers to create that style, a different synth alone probably wouldnāt change anything.
Atmosphere!
@lilith
Spheres: Huge difference in comparison to the WIP when it comes to mixing.
I didn 't post this track in the WIP section
BTW. The Cover is made with python (and chatgpt):
from PIL import Image, ImageDraw, ImageFont
import random
import math
class GridSpheresWithEdges:
def __init__(self, width=900, height=900, rows=3, cols=3, background=(10, 10, 20), base_color=(255, 255, 255)):
self.width = width
self.height = height
self.rows = rows
self.cols = cols
self.background_color = background
self.base_color = base_color
self.image = Image.new("RGB", (self.width, self.height), self.background_color)
self.draw = ImageDraw.Draw(self.image)
self.positions = [] # Store centers of spheres
def _draw_sphere(self, x, y, radius, base_color):
size = radius * 2
sphere = Image.new("RGBA", (size, size), (0, 0, 0, 0))
draw = ImageDraw.Draw(sphere)
for r in range(radius, 0, -1):
alpha = int(255 * (r / radius) ** 2)
brightness = int(base_color[0] * (r / radius) ** 1.8)
color = (brightness, brightness, brightness, alpha)
draw.ellipse((radius - r, radius - r, radius + r, radius + r), fill=color)
self.image.paste(sphere, (x - radius, y - radius), sphere)
def _draw_arrow(self, start, end, arrow_color=(255, 0, 0), arrow_size=15, width=3):
# Draw line
self.draw.line([start, end], fill=arrow_color, width=width)
# Calculate arrowhead
angle = math.atan2(end[1] - start[1], end[0] - start[0])
arrow_angle = math.pi / 6 # 30 degrees
# Points for arrowhead
left = (end[0] - arrow_size * math.cos(angle - arrow_angle),
end[1] - arrow_size * math.sin(angle - arrow_angle))
right = (end[0] - arrow_size * math.cos(angle + arrow_angle),
end[1] - arrow_size * math.sin(angle + arrow_angle))
self.draw.polygon([end, left, right], fill=arrow_color)
def draw_grid_spheres(self):
cell_width = self.width // self.cols
cell_height = self.height // self.rows
self.positions.clear()
for row in range(self.rows):
for col in range(self.cols):
cx = col * cell_width + cell_width // 2
cy = row * cell_height + cell_height // 2
max_radius = min(cell_width, cell_height) // 2 - 10
radius = random.randint(max_radius // 2, max_radius)
self._draw_sphere(cx, cy, radius, self.base_color)
self.positions.append((cx, cy))
def draw_arrows_between(self, edges):
# edges = list of (from_index, to_index)
for from_idx, to_idx in edges:
start = self.positions[from_idx]
end = self.positions[to_idx]
# Adjust start and end points to be on the edge of the spheres:
# Rough approximation: shift start/end closer by some pixels
dx = end[0] - start[0]
dy = end[1] - start[1]
dist = math.hypot(dx, dy)
if dist == 0:
continue
offset = 30 # Adjust depending on avg radius
start_adj = (start[0] + dx * offset / dist, start[1] + dy * offset / dist)
end_adj = (end[0] - dx * offset / dist, end[1] - dy * offset / dist)
self._draw_arrow(start_adj, end_adj)
def show(self):
self.image.show()
def save(self, filename="grid_spheres_with_arrows.png"):
self.image.save(filename)
# ------------------------
# run
# ------------------------
if __name__ == "__main__":
art = GridSpheresWithEdges()
art.draw_grid_spheres()
# Example edges (from node index to node index)
example_edges = [
(0, 1),
(1, 2),
(3, 0),
(4, 8),
(7, 6),
(5, 4),
(2, 5),
]
art.draw_arrows_between(example_edges)
art.show()
art.save()
My bad, I meant āWavefunctionsā. But āSpheresā is nice, too.
Are you checking all the different styles now? Techno, Electro, Dub Techno, next stop Tech House?
No Tech House. In the last three days I started with SuperCollider and I just ordered that book
Thanks againš iām on right track then. I ofte doubt my self, so it really encourages me.
Dont Worry, i have some comming sogns using predator VST and samplesš
Here comes my new Song, not hard to guess who inspired me here, for me still the the best Composer our time. Hope you enjoy this so much like me doing this spending several night hours. Used 100 % Renoise with dedicated āSpaghetti Westernā Kontakt VSTs, Pulse and Omnisphere 2.
Full of surprises from start to finish !!! Good work oleg71
95% of sound design is done in Renoise