@ -2351,15 +2351,15 @@ nframes = <Wave_read>.getnframes() <span class="hljs-comment"
< / code > < / pre > < / div >
< div > < h3 id = "examples-1" > Examples< / h3 > < div > < h4 id = "savesasinewavetoamonowavfile" > Saves a sine wave to a mono WAV file:< / h4 > < pre > < code class = "python language-python hljs" > < span class = "hljs-keyword" > from< / span > math < span class = "hljs-keyword" > import< / span > pi, sin
fram es_f = (sin(i * < span class = "hljs-number" > 2< / span > * pi * < span class = "hljs-number" > 440< / span > / < span class = "hljs-number" > 44100< / span > ) < span class = "hljs-keyword" > for< / span > i < span class = "hljs-keyword" > in< / span > range(< span class = "hljs-number" > 100000< / span > ))
write_to_wav_file(< span class = "hljs-string" > 'test.wav'< / span > , fram es_f)
sampl es_f = (sin(i * < span class = "hljs-number" > 2< / span > * pi * < span class = "hljs-number" > 440< / span > / < span class = "hljs-number" > 44100< / span > ) < span class = "hljs-keyword" > for< / span > i < span class = "hljs-keyword" > in< / span > range(< span class = "hljs-number" > 100000< / span > ))
write_to_wav_file(< span class = "hljs-string" > 'test.wav'< / span > , sampl es_f)
< / code > < / pre > < / div > < / div >
< div > < h4 id = "addsnoisetoamonowavfile" > Adds noise to a mono WAV file:< / h4 > < pre > < code class = "python language-python hljs" > < span class = "hljs-keyword" > from< / span > random < span class = "hljs-keyword" > import< / span > random
add_noise = < span class = "hljs-keyword" > lambda< / span > value: value + (random() - < span class = "hljs-number" > 0.5< / span > ) * < span class = "hljs-number" > 0.03< / span >
frames_f = (add_noise(f) < span class = "hljs-keyword" > for< / span > f < span class = "hljs-keyword" > in< / span > read_wav_file(< span class = "hljs-string" > 'test.wav'< / span > ))
write_to_wav_file(< span class = "hljs-string" > 'test.wav'< / span > , fram es_f)
samples_f = (add_noise(f) < span class = "hljs-keyword" > for< / span > f < span class = "hljs-keyword" > in< / span > read_wav_file(< span class = "hljs-string" > 'test.wav'< / span > ))
write_to_wav_file(< span class = "hljs-string" > 'test.wav'< / span > , sampl es_f)
< / code > < / pre > < / div >
< div > < h2 id = "synthesizer" > < a href = "#synthesizer" name = "synthesizer" > #< / a > Synthesizer< / h2 > < div > < h4 id = "playspopcornbygershonkingsley" > Plays Popcorn by Gershon Kingsley:< / h4 > < pre > < code class = "python language-python hljs" > < span class = "hljs-comment" > # $ pip3 install simpleaudio< / span >
@ -2368,15 +2368,15 @@ write_to_wav_file(<span class="hljs-string">'test.wav'</span>, frames_f)
F = < span class = "hljs-number" > 44100< / span >
P1 = < span class = "hljs-string" > '71♪,69,,71♪,66,,62♪,66,,59♪,,,'< / span >
P2 = < span class = "hljs-string" > '71♪,73,,74♪,73,,74,,71,,73♪,71,,73,,69,,71♪,69,,71,,67,,71♪,,,'< / span >
get_pause = < span class = "hljs-keyword" > lambda< / span > seconds: repeat(< span class = "hljs-number" > 0< / span > , int(seconds * F))
sin_f = < span class = "hljs-keyword" > lambda< / span > i, hz: math.sin(i * < span class = "hljs-number" > 2< / span > * math.pi * hz / F)
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)))
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 > )
parse_note = < 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 > )
get_fram es = < span class = "hljs-keyword" > lambda< / span > note: get_wave(*parse_note(note)) < span class = "hljs-keyword" > if< / span > note < span class = "hljs-keyword" > else< / span > get_pause(< span class = "hljs-number" > 0.125< / span > )
frames_f = chain.from_iterable(get_fram es(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 > ))
fram es_b = < span class = "hljs-string" > b''< / span > .join(struct.pack(< span class = "hljs-string" > '< h'< / span > , int(f * < span class = "hljs-number" > 30000< / span > )) < span class = "hljs-keyword" > for< / span > f < span class = "hljs-keyword" > in< / span > fram es_f)
simpleaudio.play_buffer(fram es_b, < span class = "hljs-number" > 1< / span > , < span class = "hljs-number" > 2< / span > , F)
get_pause = < span class = "hljs-keyword" > lambda< / span > seconds: repeat(< span class = "hljs-number" > 0< / span > , int(seconds * F))
sin_f = < span class = "hljs-keyword" > lambda< / span > i, hz: math.sin(i * < span class = "hljs-number" > 2< / span > * math.pi * hz / F)
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)))
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 > )
parse_note = < 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 > )
get_sampl es = < span class = "hljs-keyword" > lambda< / span > note: get_wave(*parse_note(note)) < span class = "hljs-keyword" > if< / span > note < span class = "hljs-keyword" > else< / span > get_pause(< span class = "hljs-number" > 0.125< / span > )
samples_f = chain.from_iterable(get_sampl es(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 > ))
sampl es_b = < span class = "hljs-string" > b''< / span > .join(struct.pack(< span class = "hljs-string" > '< h'< / span > , int(f * < span class = "hljs-number" > 30000< / span > )) < span class = "hljs-keyword" > for< / span > f < span class = "hljs-keyword" > in< / span > sampl es_f)
simpleaudio.play_buffer(sampl es_b, < span class = "hljs-number" > 1< / span > , < span class = "hljs-number" > 2< / span > , F)
< / code > < / pre > < / div > < / div >