本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理,全英文内容,文末附词汇解释。
from wave import open
from struct import Struct
from math import floor
frame_rate = 11025
def encode(x):
"""Encode float x between -1 and 1 as two bytes."""
i = int(16384 * x)
return Struct('h').pack(i)
def play(sampler, name = 'song.wav', seconds = 2):
"""Write the output of a sampler function as a wav file."""
out = open(name, 'wb')
out.setnchannels(1)
out.setsampwidth(2)
out.setframerate(frame_rate)
t = 0
while t < seconds * frame_rate:
sample = sampler(t)
out.writef