Skip to content

Commit 8af4027

Browse files
committed
Synthesizer
1 parent 1d75ae3 commit 8af4027

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2330,14 +2330,14 @@ from itertools import chain, repeat
23302330
F = 44100
23312331
P1 = '71♪,69,,71♪,66,,62♪,66,,59♪,,,'
23322332
P2 = '71♪,73,,74♪,73,,74,,71,,73♪,71,,73,,69,,71♪,69,,71,,67,,71♪,,,'
2333-
get_pause = lambda seconds: repeat(0, int(seconds * F))
2334-
sin_f = lambda i, hz: math.sin(i * 2 * math.pi * hz / F)
2335-
get_wave = lambda hz, seconds: (sin_f(i, hz) for i in range(int(seconds * F)))
2336-
get_hz = lambda key: 8.176 * 2 ** (int(key) / 12)
2337-
parse_n = lambda note: (get_hz(note[:2]), 0.25 if '' in note else 0.125)
2338-
get_note = lambda note: get_wave(*parse_n(note)) if note else get_pause(0.125)
2339-
frames_i = chain.from_iterable(get_note(n) for n in f'{P1}{P1}{P2}'.split(','))
2340-
frames_b = b''.join(struct.pack('<h', int(a * 30000)) for a in frames_i)
2333+
get_pause = lambda seconds: repeat(0, int(seconds * F))
2334+
sin_f = lambda i, hz: math.sin(i * 2 * math.pi * hz / F)
2335+
get_wave = lambda hz, seconds: (sin_f(i, hz) for i in range(int(seconds * F)))
2336+
get_hz = lambda key: 8.176 * 2 ** (int(key) / 12)
2337+
parse_n = lambda note: (get_hz(note[:2]), 0.25 if '' in note else 0.125)
2338+
get_frames = lambda note: get_wave(*parse_n(note)) if note else get_pause(0.125)
2339+
frames_f = chain.from_iterable(get_frames(n) for n in f'{P1}{P1}{P2}'.split(','))
2340+
frames_b = b''.join(struct.pack('<h', int(f * 30000)) for f in frames_f)
23412341
simpleaudio.play_buffer(frames_b, 1, 2, F)
23422342
```
23432343

index.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1951,14 +1951,14 @@ <h3 id="synthesizer">Synthesizer</h3>
19511951
F = <span class="hljs-number">44100</span>
19521952
P1 = <span class="hljs-string">'71♪,69,,71♪,66,,62♪,66,,59♪,,,'</span>
19531953
P2 = <span class="hljs-string">'71♪,73,,74♪,73,,74,,71,,73♪,71,,73,,69,,71♪,69,,71,,67,,71♪,,,'</span>
1954-
get_pause = <span class="hljs-keyword">lambda</span> seconds: repeat(<span class="hljs-number">0</span>, int(seconds * F))
1955-
sin_f = <span class="hljs-keyword">lambda</span> i, hz: math.sin(i * <span class="hljs-number">2</span> * math.pi * hz / F)
1956-
get_wave = <span class="hljs-keyword">lambda</span> hz, seconds: (sin_f(i, hz) <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(int(seconds * F)))
1957-
get_hz = <span class="hljs-keyword">lambda</span> key: <span class="hljs-number">8.176</span> * <span class="hljs-number">2</span> ** (int(key) / <span class="hljs-number">12</span>)
1958-
parse_n = <span class="hljs-keyword">lambda</span> note: (get_hz(note[:<span class="hljs-number">2</span>]), <span class="hljs-number">0.25</span> <span class="hljs-keyword">if</span> <span class="hljs-string">'♪'</span> <span class="hljs-keyword">in</span> note <span class="hljs-keyword">else</span> <span class="hljs-number">0.125</span>)
1959-
get_note = <span class="hljs-keyword">lambda</span> note: get_wave(*parse_n(note)) <span class="hljs-keyword">if</span> note <span class="hljs-keyword">else</span> get_pause(<span class="hljs-number">0.125</span>)
1960-
frames_i = chain.from_iterable(get_note(n) <span class="hljs-keyword">for</span> n <span class="hljs-keyword">in</span> <span class="hljs-string">f'<span class="hljs-subst">{P1}</span><span class="hljs-subst">{P1}</span><span class="hljs-subst">{P2}</span>'</span>.split(<span class="hljs-string">','</span>))
1961-
frames_b = <span class="hljs-string">b''</span>.join(struct.pack(<span class="hljs-string">'&lt;h'</span>, int(a * <span class="hljs-number">30000</span>)) <span class="hljs-keyword">for</span> a <span class="hljs-keyword">in</span> frames_i)
1954+
get_pause = <span class="hljs-keyword">lambda</span> seconds: repeat(<span class="hljs-number">0</span>, int(seconds * F))
1955+
sin_f = <span class="hljs-keyword">lambda</span> i, hz: math.sin(i * <span class="hljs-number">2</span> * math.pi * hz / F)
1956+
get_wave = <span class="hljs-keyword">lambda</span> hz, seconds: (sin_f(i, hz) <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(int(seconds * F)))
1957+
get_hz = <span class="hljs-keyword">lambda</span> key: <span class="hljs-number">8.176</span> * <span class="hljs-number">2</span> ** (int(key) / <span class="hljs-number">12</span>)
1958+
parse_n = <span class="hljs-keyword">lambda</span> note: (get_hz(note[:<span class="hljs-number">2</span>]), <span class="hljs-number">0.25</span> <span class="hljs-keyword">if</span> <span class="hljs-string">'♪'</span> <span class="hljs-keyword">in</span> note <span class="hljs-keyword">else</span> <span class="hljs-number">0.125</span>)
1959+
get_frames = <span class="hljs-keyword">lambda</span> note: get_wave(*parse_n(note)) <span class="hljs-keyword">if</span> note <span class="hljs-keyword">else</span> get_pause(<span class="hljs-number">0.125</span>)
1960+
frames_f = chain.from_iterable(get_frames(n) <span class="hljs-keyword">for</span> n <span class="hljs-keyword">in</span> <span class="hljs-string">f'<span class="hljs-subst">{P1}</span><span class="hljs-subst">{P1}</span><span class="hljs-subst">{P2}</span>'</span>.split(<span class="hljs-string">','</span>))
1961+
frames_b = <span class="hljs-string">b''</span>.join(struct.pack(<span class="hljs-string">'&lt;h'</span>, int(f * <span class="hljs-number">30000</span>)) <span class="hljs-keyword">for</span> f <span class="hljs-keyword">in</span> frames_f)
19621962
simpleaudio.play_buffer(frames_b, <span class="hljs-number">1</span>, <span class="hljs-number">2</span>, F)
19631963
</code></pre>
19641964
<h2 id="basicscripttemplate"><a href="#basicscripttemplate" name="basicscripttemplate">#</a>Basic Script Template</h2>

0 commit comments

Comments
 (0)