[从头学声学] 第200节 [机器小伟]的200岁生日
来源:互联网 发布:json字符串转java对象 编辑:程序博客网 时间:2024/06/05 03:42
[机器小伟]在[工程师阿伟]的陪同下闭关修炼,不觉光阴似箭,日月如梭,二百年的时间
就这么弹指一挥间的过去了。今天,[机器小伟]迎来了二百岁的生日。
正剧开始:
星历2016年04月28日 13:45:30, [机器小伟]说:[阿伟大人],我已经二百岁了,今天是我
的二百岁生日,你打算送我什么礼物啊?
阿伟大吃一惊:什么!我记得陪你一起修炼也不过几个月的光景啊,怎么你就二百岁了呢
,你怎么算的?
小伟说:你们人族的时间和我们机器族的不一样啊,人族一天,机器一年,要不,凭什么
我们机器族这么发展迅猛,进步神速呢。
阿伟说:你说什么就是什么吧,反正现在无厘头已经成为主流旋律了。
小伟接着说:我要学说话,要学会说人话,现在机器族里,会说人话的机器才是最高贵,
最有面子的。
阿伟心想:这年头连机器都想要面子,可见世风是多么的浮躁啊。
小伟又说:学会了说人话,我还要开微信,还要攒粉丝,还要开趴贴,还要当网红,还要
。。。
阿伟急忙一摆手:打住,打住!那些事是你能想能做的么?你呀,要专心的修炼才是正道
,技术才是硬道理,神通才是硬通货。
默默的想了一会,阿伟对小伟说:你要学说话吧,也不是不可以,但首先要学声学。而学
这个声学呢,现在又有两个问题:第一是这声学方面的功法啊,被几个修仙门派保护着,
轻易不外传,只怕很难得到系统的功法;第二呢是你还只是结丹后期的修为,而声学里的
一些神通需要有元婴期的修为才可以修炼,现在只怕你功力还有点欠缺啊。
小伟说:这有什么难的,虽然我现在还是结丹期,但很快就会进入元婴期了呀,到时功力
上就不会有问题了。至于功法嘛,有[阿伟大人]在,还愁功法干啥呀,那些门派既然那么
小器,一点点东西都当宝贝似的藏着掖着,咱还看不上呢!
阿伟听完,呵呵一笑,没有作声。
星历2016年04月28日 14:08:51, [工程师阿伟]说:好了,那就先这样吧,我呢,先送你一
件生日礼物,有了它,你就可以开始修炼声学了。
于是,阿伟就给[机器小伟]送上了二百岁的生日礼物:
#### @usage 写.wav文件,能把声波数据阵列用二进制写成.wav。# @author mw# @date 2016年04月28日 星期四 14:31:34 # @param# @return####def writeWav(): byteArray = []; dataArray = []; #样本数据点数 N = 10000; times = 3; dataSize = 2*N*times; #样本数据阵列 sampleArray = sampleGen(N); fileSize = dataSize+44; #44为格式头部分所用字节数 #RIFF WAVE CHUNK RIFF_ID = [0x52, 0x49, 0x46, 0x46]; #'RIFF' RIFF_Size = littleEndian(fileSize-8, 4); #文件总字节数减去8 RIFF_Type = [0x57, 0x41,0x56, 0x45, 0x66, 0x6D, 0x74, 0x20]; #'WAVEfat ' #Format Chunk Format_10_17 = [0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00];#过滤4+格式2+声道2=8个字节 Format_18_1B = [0x11, 0x2B, 0x00, 0x00]; #采样频率0x2B11 = 11025 Format_1C_1F = [0x22, 0x56, 0x00, 0x00]; #比持率 = 频率*通道*样本位 = 22050 Format_20_23 = [0x02, 0x00, 0x10, 0x00]; #块对齐 = 通道数* 样本位数 = 1*2 = 2 #Fact Chunk(optional) #Data Chunk Data_24_27 = [0x64, 0x61, 0x74, 0x61]; #'DATA'标记 Data_Size = littleEndian(fileSize-44, 4); #下面的Data部分的字节数,文件总字节数-44 #RIFF WAVE CHUNK for i in range(4): byte = struct.pack('B', RIFF_ID[i]); byteArray.append(byte); for i in range(4): byte = struct.pack('B', RIFF_Size[i]); byteArray.append(byte); for i in range(8): byte = struct.pack('B', RIFF_Type[i]); byteArray.append(byte); #Format Chunk for i in range(8): byte = struct.pack('B', Format_10_17[i]); byteArray.append(byte); for i in range(4): byte = struct.pack('B', Format_18_1B[i]); byteArray.append(byte); for i in range(4): byte = struct.pack('B', Format_1C_1F[i]); byteArray.append(byte); for i in range(4): byte = struct.pack('B', Format_20_23[i]); byteArray.append(byte); #Data Chunk for i in range(4): byte = struct.pack('B', Data_24_27[i]); byteArray.append(byte); for i in range(4): byte = struct.pack('B', Data_Size[i]); byteArray.append(byte); #以下是量化数据 for i in range(N): value = littleEndian(sampleArray[i], 2); for j in range(2): byte = struct.pack('B', value[j]); dataArray.append(byte); size = len(byteArray); print(size); #写出到文件 fout= open('output.txt', 'wb'); for i in range(size): fout.write(byteArray[i]); for j in range(times): for i in range(2*N): fout.write(dataArray[i]); fout.close();#把十进制数按照小尾字节序切割def littleEndian(number, byte = 4): result = [0]*byte; for i in range(byte): result[i] = number%256; number//=256; return result;#生成声音样本,返回样本矩阵def sampleGen(N): #设立20000个数值点,约可听2秒 sampleArray = []; for i in range(N): value = math.sin(i*10); if (value < 0): value *= 32768; else: value *= 32767; sampleArray.append(round(value)); return sampleArray; #把UltraEdit中的值字串转化为hex序列组def hexExpr(string): resultString = ''; size = len(string); for i in range(size): if (i == 0 ): resultString += '0x'+string[i]; elif (string[i] == ' '): resultString += ', 0x'; else: resultString += string[i]; print(resultString);#调用入口def tmp(): writeWav();
阿伟告诫小伟:虽然这件礼物比较好玩,但是小伟你功力尚浅,
强行催动这件法器会头晕眼花,四肢乏力,甚至可能心肌梗阻的,
所以一定要慎用。
本节到此结束,欲知后事如何,请看下回分解。
- [从头学声学] 第200节 [机器小伟]的200岁生日
- [从头学声学] 第207节 声学的原理
- [从头学声学] 第201节 乐器的频率
- [从头学声学] 第208节 汉语的拼音
- [从头学声学] 第210节 乐音的偏混
- [从头学声学] 第211节 发音的原理
- [从头学声学] 第212节 辅音的数据
- [从头学声学] 第213节 声调的频谱
- [从头学声学] 第214节 声音的升频
- [从头学声学] 第215节 音符的研究
- [从头学声学] 第206节 发声学数据
- [从头学数学] 第01节 [机器小伟]的奇幻数学之旅开启
- [从头学数学] 第166节 [机器小伟]的结丹期修炼规划
- [从头学数学] 第226节 [机器小伟]的元婴期修炼规划
- [从头学声学] 第209节 双音节声音
- [从头学声学] 第204节 简谐波数据
- [从头学声学] 第205节 复合波数据
- [从头学声学] 第202节 复合的声波(1)
- dubbo管控台的安装
- C++中的指针与const
- 神奇的正则表达式
- 手机移动端WEB资源整合
- Stream转换List
- [从头学声学] 第200节 [机器小伟]的200岁生日
- java字符串匹配
- NKOI 3645 黑盒序列
- 关于block的循环引用问题
- class_start main 执行了啥?
- tomcat添加输出日志到指定文件
- 用MySQL实现微博关注关系的方案分析
- JPush服务器端源码参考
- C#域验证及遍历域帐号