From 8af40272ea874a83aba69a66599a50c4ab9fa676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jure=20=C5=A0orn?= Date: Wed, 3 Jul 2019 19:31:00 +0200 Subject: [PATCH] Synthesizer --- README.md | 16 ++++++++-------- index.html | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index b6ef108..fcb4a17 100644 --- a/README.md +++ b/README.md @@ -2330,14 +2330,14 @@ from itertools import chain, repeat F = 44100 P1 = '71♪,69,,71♪,66,,62♪,66,,59♪,,,' P2 = '71♪,73,,74♪,73,,74,,71,,73♪,71,,73,,69,,71♪,69,,71,,67,,71♪,,,' -get_pause = lambda seconds: repeat(0, int(seconds * F)) -sin_f = lambda i, hz: math.sin(i * 2 * math.pi * hz / F) -get_wave = lambda hz, seconds: (sin_f(i, hz) for i in range(int(seconds * F))) -get_hz = lambda key: 8.176 * 2 ** (int(key) / 12) -parse_n = lambda note: (get_hz(note[:2]), 0.25 if '♪' in note else 0.125) -get_note = lambda note: get_wave(*parse_n(note)) if note else get_pause(0.125) -frames_i = chain.from_iterable(get_note(n) for n in f'{P1}{P1}{P2}'.split(',')) -frames_b = b''.join(struct.pack(''test.wav', frames_i) F = 44100 P1 = '71♪,69,,71♪,66,,62♪,66,,59♪,,,' P2 = '71♪,73,,74♪,73,,74,,71,,73♪,71,,73,,69,,71♪,69,,71,,67,,71♪,,,' -get_pause = lambda seconds: repeat(0, int(seconds * F)) -sin_f = lambda i, hz: math.sin(i * 2 * math.pi * hz / F) -get_wave = lambda hz, seconds: (sin_f(i, hz) for i in range(int(seconds * F))) -get_hz = lambda key: 8.176 * 2 ** (int(key) / 12) -parse_n = lambda note: (get_hz(note[:2]), 0.25 if '♪' in note else 0.125) -get_note = lambda note: get_wave(*parse_n(note)) if note else get_pause(0.125) -frames_i = chain.from_iterable(get_note(n) for n in f'{P1}{P1}{P2}'.split(',')) -frames_b = b''.join(struct.pack('<h', int(a * 30000)) for a in frames_i) +get_pause = lambda seconds: repeat(0, int(seconds * F)) +sin_f = lambda i, hz: math.sin(i * 2 * math.pi * hz / F) +get_wave = lambda hz, seconds: (sin_f(i, hz) for i in range(int(seconds * F))) +get_hz = lambda key: 8.176 * 2 ** (int(key) / 12) +parse_n = lambda note: (get_hz(note[:2]), 0.25 if '♪' in note else 0.125) +get_frames = lambda note: get_wave(*parse_n(note)) if note else get_pause(0.125) +frames_f = chain.from_iterable(get_frames(n) for n in f'{P1}{P1}{P2}'.split(',')) +frames_b = b''.join(struct.pack('<h', int(f * 30000)) for f in frames_f) simpleaudio.play_buffer(frames_b, 1, 2, F)

#Basic Script Template