Browse Source

toolbox logo looks acceptable now

master
Thomas Buck 1 year ago
parent
commit
23b118c6d7
  1. 30
      render.py
  2. 9
      toolbox.svg

30
render.py

@ -2,6 +2,9 @@
# Render image to Oscilloscope XY vector audio # Render image to Oscilloscope XY vector audio
# #
# https://pypi.org/project/svgpathtools/
# https://dood.al/oscilloscope/
#
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Copyright (c) 2024 Thomas Buck (thomas@xythobuz.de) # Copyright (c) 2024 Thomas Buck (thomas@xythobuz.de)
# #
@ -23,6 +26,8 @@ import wave
from svgpathtools import svg2paths from svgpathtools import svg2paths
samplerate = 44100 #192000 samplerate = 44100 #192000
volume_percent = 70
path_steps = 10
default_duration = 5.0 default_duration = 5.0
default_outfile = "out.wav" default_outfile = "out.wav"
@ -48,13 +53,32 @@ def read_image(filename):
print("min={} max={}".format(p_min, p_max)) print("min={} max={}".format(p_min, p_max))
data = bytearray() data = bytearray()
for n in range(0, len(points)):
def add_point(p):
for i in range(0, 2): for i in range(0, 2):
v = points[n][i]
v = p[i]
v -= p_min[i] v -= p_min[i]
v /= p_max[i] - p_min[i] v /= p_max[i] - p_min[i]
c = int((v * 2 - 1) * (32767 / 100 * 70))
if i == 1:
v = 1 - v
c = int((v * 2 - 1) * (32767 / 100 * volume_percent))
data.extend(c.to_bytes(2, byteorder="little", signed=True)) data.extend(c.to_bytes(2, byteorder="little", signed=True))
def interpolate(p1, p2, step):
p = []
for i in range(0, 2):
diff = p2[i] - p1[i]
v = p1[i] + diff * step
p.append(v)
return p
for n in range(0, len(points) - 1):
p1 = points[n]
p2 = points[n + 1]
for step in range(0, path_steps):
p = interpolate(p1, p2, step / path_steps)
add_point(p)
add_point(points[len(points) - 1])
return data return data
def write_waveform(data, filename): def write_waveform(data, filename):

9
toolbox.svg

@ -23,9 +23,9 @@
inkscape:pagecheckerboard="0" inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm" inkscape:document-units="mm"
inkscape:zoom="9.7401438"
inkscape:cx="34.291075"
inkscape:cy="39.732473"
inkscape:zoom="16"
inkscape:cx="27.6875"
inkscape:cy="45.875"
inkscape:window-width="1920" inkscape:window-width="1920"
inkscape:window-height="1020" inkscape:window-height="1020"
inkscape:window-x="0" inkscape:window-x="0"
@ -43,6 +43,7 @@
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
id="path32" id="path32"
style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.0352778;stroke-opacity:1" style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.0352778;stroke-opacity:1"
d="m 54.809672,66.488838 -0.0032,-0.0019 -0.0033,0.0019 -0.0032,-0.0057 -9.011829,-5.198633 h -0.0153 l 0.0029,-10.567212 9.035378,-5.20901 9.028924,5.208587 v 4.160979 h -0.01739 l 0.01739,0.03006 -1.862843,1.074597 1.862843,1.074702 -5.64e-4,9.88e-4 5.64e-4,2.82e-4 v 4.202042 h -0.0088 l 0.0088,0.01517 -9.027266,5.207453 -0.0032,0.0057 m 0.897926,-11.088264 v 0 l 0.01475,8.37463 6.246777,-3.580133 v -2.057153 l -1.864043,-1.075267 -1.899073,1.095516 V 55.99825 l 3.763116,-2.170818 v -2.029848 l -7.160824,-4.130957 -7.164416,4.133003 v 8.395441 l 6.19276,3.569109 v -7.281566 l -1.492427,0.863212 -1.871098,-1.079429 5.594315,-3.236454 1.871909,1.079994 -2.231742,1.290637" />
d="m 54.805794,66.484453 -9.032612,-5.199858 0.0025,-10.567302 9.035378,-5.20901 9.028924,5.208587 v 4.160979 l -1.862843,1.104657 1.862843,1.074702 c -9.33e-4,1.40583 -1.88e-4,2.812388 0,4.218482 l -9.033236,5.209579 m 0.910765,-2.706542 5.99e-4,-0.0022 6.246178,-3.577918 0.0047,-2.060667 -1.864043,-1.075267 -1.899073,1.095516 V 55.99825 l 3.763116,-2.170818 v -2.029848 l -7.160824,-4.130957 -7.164416,4.133003 v 8.395441 l 6.190862,3.564702 v -7.281566 l -1.492427,0.863212 -1.871098,-1.079429 5.594315,-3.236454 1.871909,1.079994 -2.233905,1.290426 0.01604,8.376379"
sodipodi:nodetypes="cccccccccccccccccccccccccccccc" />
</g> </g>
</svg> </svg>
Loading…
Cancel
Save