发新帖本帖赏金 40.00元(功能说明)我要提问
12下一页
返回列表
打印

『已完结』『活动』暮春三月,火舞喊你来寻找最美波形

[复制链接]
12238|53
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 zhanzr21 于 2017-4-10 17:15 编辑

编程活动: 暮春三月,火舞喊你来寻找最美波形


在前面的帖子中已经说明了为什么要做这样的一件事,每个板子都能歌唱:嵌入式系统与音频处理(缘起),下面就不废话直接上第一篇的活动了~
活动方式:
阅读这篇**:数字音频处理系统的基本原理, 理解后来提交代码完成以下任意一题.提交实现相同结果或者代码相似度过高的多个用户, 以第一个提交者为成功提交者进行评奖,后面提交的视情形另外发放原创奖. 关于波形验证,可以直接让我们来验证.代码只要能生成数据,即可算成功提交.经过验证后结果合格则算正确提交.[代码使用Python 3实现,只依赖标准库.建议除了数据生成部分,源文件中其他部分不要修改]


更新: 注意大家提交代码最好以附件形式提交, 最好自己测试过能运行再提交.  有条件验证的请发贴给出波形截图, 如果不方便验证请注明让楼主来验证, 最好将生成的数据也以附件提交. 代码中将自己id写到注释中最好, 这样方便楼主最后整理结果. 多谢!

再更新:
21ic不让直接上传py文件, 请直接粘上来或者打包上传!

First Blood!
第一个成功提交正确代码的同学:
@荣丰宇

发挥奖:
@
shanan

[ 3-26更新:
理论上到今天第一期的活动已经结束了, 但是今后继续提交代码的同学, 楼主将继续整理到共享文件夹中. 学习是一个持续的过程, 相信大家不是因为专门冲着奖励而来的. 希望**与活动能给大家带来知识,带来乐趣! 提交代码的同学没有想象的那么多,也许是因为题材有点生疏, 也许是别的原因. 不管怎样, 这个系列的**与活动将会**搞下去. 请大家继续关注!
由于周末的原因, 下一期的活动下周开始. 奖励发放, 代码整理, 指定命题参考答案公布等事情下周处理.
另外第二篇**已经更新:

http://www.21ic.com/eva/audio/201703/711661.htm ]

[3-27更新]
成功提交代码并验证通过的同学,已经打赏20

另外

@荣丰宇
@
shanan
两位请把地址发到board@21ic.com
另外发两个小奖品奖励你们的好学精神!

成功提交的代码都上传到共享文件夹中供参考, 三个命题的参考答案也已经上传!
下期会!

另外建议大家直接使用共享的源代码进行修改, 而不要从网页拷贝代码, 因为Python对Tab检查很严格,网页上的代码很可能Tab被转得不可用了, 如果你是Python老自己修改也可, 如果你对Python不是那么熟,请使用共享文件夹里面的源代码直接修改,再用IDLE打开运行.
generate_raw_audio.zip (774 Bytes)
从网盘下载也可:
https://pan.baidu.com/s/1bpCHCTL

活动时间:
2017-3-15至2017-3-25
活动奖励:
前20名成功提交正确代码的,打赏20元,(即答对1.1、1.2、1.3、2四个题目中任意一个即视成功参与)
之后提交正确代码的,打赏5元奖励.
活动时间结束后还有提交正确代码的,如果确有创意的本人将另外打赏.活动结束后所有正确代码将打包给大家下载共享,所以大家最好在代码前段注释上自己的账号id以便整理.注意打赏是最后统一打赏.
1.指定题:
修改该文中的代码或者全部重写, 实现以下波形之一的结果即可.

1.1 抛物线

1.2 指数式尖峰曲线

1.3 拱门形状

2.发挥题
修改该文中的代码或者全部重写
,实现任意振动频率在(20Hz至20KHz)的周期性波形.不能与原文中波形重复,不能与上面指定题中波形重复.
---------------------------------------------------------------------------------------------------------------------
为什么要让火舞来代言....?

...



相关帖子

沙发
巧克力娃娃| | 2017-3-15 16:59 | 只看该作者
好的,我明白了

使用特权

评论回复
板凳
zhanzr21|  楼主 | 2017-3-15 17:03 | 只看该作者
不错,顶!

使用特权

评论回复
地板
dirtwillfly| | 2017-3-15 17:06 | 只看该作者

使用特权

评论回复
评论
zhanzr21 2017-3-15 20:59 回复TA
原回复是: 快来参加活动! 
zhanzr21 2017-3-15 20:59 回复TA
原来这样阿, 明白, 第一次发这种贴子, 还不熟悉操作了. 
5
zhanzr21|  楼主 | 2017-3-15 17:24 | 只看该作者

多谢捧场,来参加活动吧!
火舞看着你!

使用特权

评论回复
评论
dirtwillfly 2017-3-15 20:05 回复TA
看到你回复我了,但这个帖子只有本人和版主管理员可见。你回复的大家都看不到的。你可以点评我的帖子,我才能看到 
6
mmuuss586| | 2017-3-15 18:56 | 只看该作者
支持下;

使用特权

评论回复
评论
zhanzr21 2017-3-15 20:59 回复TA
多谢捧场,来参加活动吧! 火舞看着你! 
7
17770040425| | 2017-3-15 19:26 | 只看该作者
占楼

使用特权

评论回复
评论
zhanzr21 2017-3-15 20:59 回复TA
多谢捧场,来参加活动吧! 火舞看着你! 
zhanzr21 2017-3-15 20:59 回复TA
多谢捧场,来参加活动吧! 火舞看着你! 
8
zhanzr21|  楼主 | 2017-3-15 19:29 | 只看该作者

多谢捧场,来参加活动吧!
火舞看着你!

使用特权

评论回复
9
zhanzr21|  楼主 | 2017-3-15 19:29 | 只看该作者

多谢捧场,来参加活动吧!
火舞看着你!

使用特权

评论回复
10
皈依| | 2017-3-15 23:40 | 只看该作者
这个活动好!为了心中的波形~已下载python~

使用特权

评论回复
评论
zhanzr21 2017-3-15 23:56 回复TA
多谢捧场, 快提交代码! 火舞看着你! 
11
eyesee2008| | 2017-3-16 10:28 | 只看该作者
#!/bin/python
#Example source code for 21ic
#Default runs in Python 3.5 Environment
#Author: zhanzr21
#Description: This Example demonstrates how to generate raw audio data.
#
import os
import math
TEST_SAMPLE_RATE = 22050
TEST_SAMPLE_LEN_SEC = 1.5
TEST_SAMPLE_NUM = int(TEST_SAMPLE_RATE * TEST_SAMPLE_LEN_SEC)
CHAN_NO = 1
AUDIO_HZ = 600
AUDIO_CYCLE = (TEST_SAMPLE_RATE/AUDIO_HZ)
test_amp_gain = 0.75
INT16_MAX = 32767
f=open('test.raw',mode='wb')
for i in range(0, TEST_SAMPLE_NUM):
test_sample = int(test_amp_gain * (INT16_MAX if ((i%AUDIO_CYCLE)>(AUDIO_CYCLE/2)) else INT16_MIN))
test_ba = bytearray()
test_ba.append(test_sample&0x00ff)
test_ba.append((test_sample>>8)&0x00ff)
f.write(test_ba)
f.close()

使用特权

评论回复
评论
zhanzr21 2017-3-16 15:36 回复TA
感谢提交代码. 这个代码有变量没有定义, 而且是做的方波, 不符合成功提交条件额! 
12
@若水| | 2017-3-16 11:02 | 只看该作者
好活动,但没说奖品呢

使用特权

评论回复
评论
zhanzr21 2017-3-16 15:38 回复TA
感谢关注, 打赏就是奖励, 当然这个只是象征性的, 请不要嫌寒酸, 快来提交代码吧! 火舞看着你呢! 
13
deeplythinking| | 2017-3-16 11:32 | 只看该作者
自由发挥的题目:方波,只有大于0部分
#!/bin/python
#Example source code for 21ic
#Default runs in Python 3.5 Environment
#Author: deeplythinking
#Description: This Example demonstrates how to generate raw audio data.
#
import os
import math
TEST_SAMPLE_RATE = 22050
TEST_SAMPLE_LEN_SEC = 1.5
TEST_SAMPLE_NUM = int(TEST_SAMPLE_RATE * TEST_SAMPLE_LEN_SEC)
CHAN_NO = 1
AUDIO_HZ = 600
AUDIO_CYCLE = (TEST_SAMPLE_RATE/AUDIO_HZ)
test_amp_gain = 0.75
INT16_MAX = 32767
INT16_MIN = -32768
INT16_ZERO = 0
f=open('test.raw',mode='wb')
for i in range(0, TEST_SAMPLE_NUM):
    test_sample = int(test_amp_gain * (INT16_MAX if ((i%AUDIO_CYCLE)>(AUDIO_CYCLE/2)) else INT16_ZERO))
    test_ba = bytearray()
    test_ba.append(test_sample&0x00ff)
    test_ba.append((test_sample>>8)&0x00ff)
    f.write(test_ba)
f.close()

使用特权

评论回复
评论
zhanzr21 2017-3-16 15:42 回复TA
感谢提交代码, 但是这个跟原文中的示例有重复, 不符合条件. 
14
jinglixixi| | 2017-3-16 12:17 | 只看该作者
#!/bin/python
#Example source code for 21ic
#Default runs in Python 3.5 Environment
#Author: zhanzr21
#Description: This Example demonstrates how to generate raw audio data.
#
import os
import math
import random

TEST_SAMPLE_RATE = 96000
TEST_SAMPLE_LEN_SEC = 1.5

TEST_SAMPLE_NUM = int(TEST_SAMPLE_RATE * TEST_SAMPLE_LEN_SEC)

CHAN_NO = 1

AUDIO_HZ = 600
AUDIO_CYCLE = (TEST_SAMPLE_RATE/AUDIO_HZ)

PULSE_HZ = 5
PULSE_CYCLE = (TEST_SAMPLE_RATE/PULSE_HZ)

test_amp_gain = 0.75
INT16_MAX = 32767
INT16_MIN = -32768

f=open('t3.raw',mode='wb')

for i in range(0, TEST_SAMPLE_NUM):

    test_sample = - abs(int(+INT16_MAX * (test_amp_gain + test_amp_gain *  (math.sin(math.pi*2*(i%AUDIO_CYCLE)/AUDIO_CYCLE)))))

    test_ba = bytearray()
    test_ba.append(test_sample&0x00ff)
    test_ba.append((test_sample>>8)&0x00ff)
    f.write(test_ba)

f.close()

使用特权

评论回复
评论
zhanzr21 2017-3-16 15:48 回复TA
多谢提交, 但是这个跟原文中的例子相似度较高, 只是将正弦波加了一些偏移, 这个等我跟编辑商量后决定是否算正确提交. 
15
Hurricanesz| | 2017-3-16 13:44 | 只看该作者
活动是不错,配的带盐就更好了

使用特权

评论回复
评论
zhanzr21 2017-3-16 15:46 回复TA
多谢捧场,快来提交代码! 
16
荣丰宇| | 2017-3-16 13:46 | 只看该作者
本帖最后由 荣丰宇 于 2017-3-16 20:16 编辑

基于zhanzr21的代码,画出了抛物线Parabola 波形
通信工程出身,一段时间没看到这么亲切的波形了,刚开始还以为是matlab画的呢,哈哈

有些粗浅,权当午后娱乐一下啦!
同时感谢楼主zhanzr21~ @zhanzr21



============Code Begin!==============

#!/bin/python
#Default runs in Python 3.5 Environment
#Author: zjb(21ic-rong feng yu), based on zhanzr21
#Description: This Example demonstrates how to generate Parabola Wave raw audio data.
#
import os
import math
import random

TEST_SAMPLE_RATE = 22050
TEST_SAMPLE_LEN_SEC = 1.5

TEST_SAMPLE_NUM = int(TEST_SAMPLE_RATE * TEST_SAMPLE_LEN_SEC)

CHAN_NO = 1

AUDIO_HZ = 600
AUDIO_CYCLE = (TEST_SAMPLE_RATE/AUDIO_HZ)

PULSE_HZ = 5
PULSE_CYCLE = (TEST_SAMPLE_RATE/PULSE_HZ)

test_amp_gain = 1
INT16_MAX = 32767
INT16_MIN = -32768


f=open('test.raw',mode='wb')

for i in range(0, TEST_SAMPLE_NUM):
# Parabola Wave
    test_sample = int((INT16_MAX *test_amp_gain *(i%AUDIO_CYCLE-AUDIO_CYCLE/2)*(i%AUDIO_CYCLE-AUDIO_CYCLE/2)/AUDIO_CYCLE/AUDIO_CYCLE)*8+INT16_MIN)
    test_ba = bytearray()
    test_ba.append(test_sample&0x00ff)
    test_ba.append((test_sample>>8)&0x00ff)
    f.write(test_ba)

f.close()

============Code End!==============

附上源码文件和raw数据文件:
因为不能上传py文件,所以打包啦~ 抛物线by21ic荣丰宇.rar (1.04 KB)





使用特权

评论回复

打赏榜单

zhanzr21 打赏了 20.00 元 2017-03-27
理由:成功提交代码!

评论
zhanzr21 2017-3-16 20:57 回复TA
First Blood! 你的代码第一个通过验证! 
zhanzr21 2017-3-16 15:50 回复TA
多谢提交, 能否将代码以附件形式提交,或者干脆提贴上来, 这样我好统一验证整理, 多谢! 
17
guyues1| | 2017-3-16 15:28 | 只看该作者
本帖最后由 guyues1 于 2017-3-19 18:23 编辑

重新传一个 也不知道对不对 generate_pwx_audio.rar (705 Bytes)

使用特权

评论回复
评论
zhanzr21 2017-3-16 20:51 回复TA
你可以使用共享的源代码py文件直接改, 从网页上直接粘的会被转码 
zhanzr21 2017-3-16 15:58 回复TA
感谢提交, 但是你的代码语法不对, Tab不齐, 最好是自己试验过再来提交. 
18
jinglixixi| | 2017-3-16 17:23 | 只看该作者
jinglixixi 发表于 2017-3-16 12:17
#!/bin/python
#Example source code for 21ic
#Default runs in Python 3.5 Environment

我再争取写个新的,第一次上手,还是比较有意思的!

使用特权

评论回复
评论
zhanzr21 2017-3-16 20:52 回复TA
OK, Fight! 
19
gaochy1126| | 2017-3-16 19:50 | 只看该作者

使用特权

评论回复
评论
zhanzr21 2017-3-16 21:14 回复TA
多谢捧场, 来参加活动吧! 
20
guyues1| | 2017-3-16 20:29 | 只看该作者

好吧  没装软件 算那了

使用特权

评论回复
评论
zhanzr21 2017-3-16 21:14 回复TA
多谢支持! 
发新帖 本帖赏金 40.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:每天都進步

91

主题

1013

帖子

34

粉丝