【数字视音频处理】【Qtcreator】音乐DIY 设计
来源:互联网 发布:java锁有几种 编辑:程序博客网 时间:2024/06/11 23:41
最后编辑于2017/12/17
参考
http://www.baofeng.com/video/239/video-37-3409739.html
基本属性
现在的点的类型pointMode
播放模式playMode
class Info{public: int x; int y; int pointMode; Info(); Info(int tx, int ty, int tpointMode);};class MainScene:public QMainWindow{ Q_OBJECTprivate: QGraphicsScene Scene; class Line *line[10];//十条弦 //这里画的线是用一串的points连接形成的,line特指弦 class Points *points[50];//我这里设置画的线条最多50条(然而没有溢出报错) int point_count;//记录已经画了几条线 int pointMode;//0-4 int active_num;//widget 是-1 这个是用来判断点击事件 点到了什么东西 点到画布开始画图,点到弦的一端可以移动 int effect_index;//这个是ui界面中play下面的选项 QTimer timer;//计时器,速度快慢靠这个条件 bool checkMode;//这个是为了展示加的一个按钮public: MainScene(); ~MainScene(); friend class MainWindow; //清屏 void clearScene(); //下面三个都是与鼠标有关的事件 void addPoint(int x,int y); void finish(); void start(int x ,int y);public slots: void updateMusic(); };
小球移动的碰撞
//(x1 y1)(x2 y2)和(x3 y3)(x4 y4)两条直线是否相交的判断 int temp11 = ((y2-y1)*(x3-x1)-(x2-x1)*(y3-y1)); int temp12 = ((y2-y1)*(x4-x1)-(x2-x1)*(y4-y1)); int temp21 = ((y4-y3)*(x1-x3)-(x4-x3)*(y1-y3)); int temp22 = ((y4-y3)*(x2-x3)-(x4-x3)*(y2-y3)); if(temp11>0&&temp12>0||temp11<0&&temp12<0|| temp21>0&&temp22>0||temp21<0&&temp22<0) { return;//没有碰撞 } // 这里是碰撞时间
写的有点赶所以貌似有点混乱
然后遇到的问题是本来想给 弦的两个控制点写继承成鼠标可以直接控制拖动 后来看了好几遍都没找到问题orz 只有点下的事件会激活 拖动和释放都没有
后来变成了 之前继承的QGraphicsView直接 传坐标进来 自己写和每个点判断有没有撞
后面
提取声音生成pointMode
导出midi文件
界面的一堆优化
音乐 5种 10个音阶(可以换)
配色
界面
以上是否要增加动画
延迟等等
一些音乐有关的其他设置?
比如同样的音需要的时间
类
http://doc.qt.io/qt-5/audiooverview.html
一些问题
上面那个类可以实现(想要的播放功能),但是想要更加细致的对音乐的处理仿佛很难做到因为Qt主要还是用户的交互
然后有些音乐播放会有很大的延迟(但是实际听起来没啥问题)我也不晓得咋回事
展示
没写稿子已经忘了怎么讲的了
大概是
1.先是提出画笔和音乐结合起来的想法,画笔和线段交叉会产生声音
2.然后这样的话没法重复长期发出声音,所以考虑把画笔保留增加那个沿着画笔运动的小球
3.希望有更多的音色,所以把音色和画笔的颜色对应起来
4.仅仅这样的话对音乐的控制还是偏少并且没有办法同时发出两个音,提出改变传统的弦的想法,让弦可以移动
后期我们将要继续完善的
- 前期的素材整理
会考虑增加更多的音色,然后按不同的风格分类
- 后期的处理
因为最后的展示结果会是一段我们自己处理的音乐,我们写的这个软件的初衷就更加侧重于简单的交互,让用户能以较少的操作体会到这种乐趣。而不是复杂的一个音乐的处理软件。
因为考虑到这一点,我们应该会对在这个软件的基础上,进一步学习一些音乐的处理,进行后期的处理。
代码
https://github.com/birdy-C/musicplayer.git
写的时候没多大问题很快就写掉了……
纠结最久的问题是不会用QGraphicItem的移动事件(现在也不知道是怎么用的)然后没办法直接自己重写了
- 【数字视音频处理】【Qtcreator】音乐DIY 设计
- 数字视音频处理知识点小结
- DIY音乐频谱
- 数字音乐
- 音频二--音乐
- DIY步骤处理
- iOS开发—01音频处理(音乐播放器1)
- iOS开发—02音频处理(音乐播放器2)
- iOS开发—03音频处理(音乐播放器3)
- iOS开发拓展篇—音频处理(音乐播放器1)
- iOS开发拓展篇—音频处理(音乐播放器2)
- iOS开发拓展篇—音频处理(音乐播放器3)
- iOS开发拓展篇—音频处理(音乐播放器4)
- iOS开发拓展篇—音频处理(音乐播放器5)
- iOS开发拓展篇—音频处理(音乐播放器6)
- iOS开发—04音频处理(音乐播放器4)
- iOS开发—05音频处理(音乐播放器5)
- iOS开发—06音频处理(音乐播放器6)
- 关于对象创建及初始化的面试向理解
- webrtc 接收packt包后处理
- Codeforces 877(442 Div.2) B. Nikita and string
- angularJs购物车
- iOS计算一段代码执行时间
- 【数字视音频处理】【Qtcreator】音乐DIY 设计
- PHP--SOCKET功能详解 及SOCKET编程
- bootstrap 表单验证formValidation的remote填坑
- sqlserver如何从带分隔符的字符串创建多个列
- 使用ExpandListView二级列表实现购物车
- Java程序初始化的顺序
- 机器学习_欧式距离和余弦相似度的对比
- 嵌入式openwrt平台(mt7688)上使用讯飞语音服务以及编译好的库文件
- 反射的工具类