From 71edb44bc2dcf9bd1b8a22806ebfc86095d5eb71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jure=20=C5=A0orn?= Date: Tue, 26 Feb 2019 02:34:08 +0100 Subject: [PATCH] Audio --- README.md | 63 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 5bf11b8..0e28b76 100644 --- a/README.md +++ b/README.md @@ -1195,6 +1195,7 @@ Bytes = [] = [] = b''.join() + = list() ``` ### Encode @@ -1232,9 +1233,10 @@ Struct * **Machine’s native type sizes and byte order are used by default.** ```python -from struct import pack, unpack, calcsize +from struct import pack, unpack, iter_unpack, calcsize = pack('', [, , ...]) = unpack('', ) + = iter_unpack('', ) ``` ### Example @@ -1700,7 +1702,7 @@ img.putdata([(int(a), 255, 255) for a in pixels]) img.convert(mode='RGB').save('test.png') ``` -#### Adds noise to an image: +#### Adds noise to PNG image: ```python from random import randint add_noise = lambda value: max(0, min(255, value + randint(-20, 20))) @@ -1719,21 +1721,50 @@ img.convert(mode='RGB').save('test.png') Audio ----- -#### Saves a list of floats with values between -1 and 1 to a WAV file: ```python -import wave, struct -samples_l = [struct.pack('] -samples_b = b''.join(samples_l) +import wave +from struct import pack, iter_unpack +``` + +### Read Frames from WAV File +```python +def read_wav_file(filename): + with wave.open(filename, 'rb') as wf: + frames = wf.readframes(wf.getnframes()) + return [a[0] for a in iter_unpack(' 2 else 0.125) get_note = lambda note: get_wave(*parse_n(note)) if note else get_pause(0.125) -samples_f = chain.from_iterable(get_note(n) for n in f'{P1}{P1}{P2}'.split(',')) -samples_b = b''.join(struct.pack('