技术栈(持续更新中)
已掌握或使用过的工具与技术
IDE
Free Pascal
Delphi
Dev C++
Virtual Studio 2013/2017
Virtual Studio Code
Eclipse
IntelliJ IDEA
Pycharm
Android Studio
Matlab
Masm
语言
Pascal
C/C++
Python
Java
SQL
机器学习相关
TensorFlow
Keras
OpenCV
Scikit-Learn
ModelArts
Kaldi
DeepSpeech
数据库
SQL Server 2000
MySQL
Navicat
C++/Java 框架
MFC
Win32 API
Spring Boot
MyBatis
硬件
Raspberry Pi
Serial Comm
ESP 8266
MPU 6050
8253/8255/8259
前端
Vue.js
Bootstrap
Hexo
音频音乐相关
Librosa
Music21
其它工具
音乐制作
Cubase
Overture
Sonic P ...
本人项目汇总(持续更新中)
汉诺塔游戏与演示程序 (C++, MFC) 介绍 代码
Rookemon — 类似精灵宝可梦的游戏 (C++, Win32 API) 介绍 代码 演示
钢琴和弦查询器 (Python, PyQt) 介绍 代码 演示
TSP 师生汇科研交流平台 (Pascal, Delphi) 代码
智能垃圾拾取分类小车 (Raspberry Pi, Tensorflow) 代码
考务管理系统 (Java, Spring Boot) 代码
堆箱子游戏 (Unity) 代码
垃圾宝 — 垃圾图像识别分类手机APP (Java, Tensorflow) 代码
Scorpionn — 自制深度学习框架 (Python) 代码
咕咕语翻译器 (JavaScript) 链接
在线和弦查询器 (JavaScript) 链接
旅游地图 (JavaScript) 链接
多功能手势识别新乐器 (Python, Max/MSP) 演示 暂未开源
音乐自动伴奏系统 (Python, Pytorch, GAN) 暂未开源
AutoHarmonizer — 音乐和声自动配置系统 (Python, Tensorflow) 链接
...
使用Python处理xlsx表格
使用Python处理xlsx表格的操作示例
载入表格文件
1234import openpyxlworkbook = openpyxl.load_workbook(r".\dataset.xlsx")worksheet = workbook.worksheets[0]
获取行数和列数
12raw_num = worksheet.max_rowcol_num = worksheet.max_column
获取单元格内容
12x = worksheet.cell(i, j).value# i, j start with index 1
改变单元格内容
12worksheet.cell(i, j, y)# change the value to y
保存修改的内容
12workbook.save(r".\dataset.xlsx")# or workbook.save(r".\new_dataset.xlsx")
使用Python批量处理文件名
使用Python批量处理文件名的操作示例
遍历文件
1234567import osfile_path = r".\audio"for root, dirs, files in os.walk(file_path): for file_name in files: print(file_name)
获取文件后缀
1os.path.splitext(file_name)[1]
寻找某个字符的位置
1file_name.find('_')
重命名文件
12os.rename(root + '/' + file_name, root + '/' + new_name)# or os.rename(root + '\\' + file_name, root + '\\' + new_name)
律学初探(二)
本文修改后出版于《音频音乐与计算机的交融——音频音乐技术2》,谢绝转载。
音律计算法及三种常见律制介绍见 律学初探(一)
六、中国律学简史
中国的律学研究,仅从十二律名的出现算起,至今已有2500多年,可谓历史悠久。我们可以根据中国律学发展的特点,将中国律学史分为四个时期:
1)三分损益律发现时期,约公元前8世纪至公元前3世纪,即春秋战国时期;
2)探求新律时期,约公元前3世纪至公元14世纪,即汉代至元代;
3)十二平均律发现时期,公元16世纪前后,即明代;
3)律学研究新时期,1911年至今。
(一)三分损益律发现时期
在讨论律学发展史之前,我们需要明确一些中国古代音乐相关知识。
中国自西周时期起,音乐就已经有了一定的发展。西周宫廷中有着由1400多人组成的音乐机构,乐器据《诗经》记载也已经达到29种之多。春秋战国时期更是“百花齐放,百家争鸣”,对音律的研究发展提供了条件。
中国古代有五声音阶、七声音阶,以“宫、商、角、徵、羽”作为音阶中各音的“阶名”。以“变”表示低半音,以“清”表示高半音,例如“变徵”表示比“徵”低半音,“清角”表示比“角”高半音。“宫商角徵羽”的名称早期记载 ...
国外部分音乐人工智能/音乐科技研究机构科研项目简介
本文对国外部分音乐人工智能/音乐科技科研机构的科研项目与教学课程设置作简要介绍,包括英国伦敦玛丽女王大学(Queen Mary)的数字音乐中心(C4DM)、西班牙巴塞罗那庞培法布拉大学(UPF)的音乐技术研究组(MTG)、美国斯坦福大学的音乐与声学计算机研究中心(CCRMA)以及法国的声学/音乐协调研究所(IRCAM)。
本文写于2021年1月,资料均来自各机构官方网站。
C4DM
英国伦敦玛丽女王大学的数字音乐中心(Centre for Digital Music,简称C4DM)是一个世界领先的音频音乐技术领域的多学科研究小组。自创始人员于2001年加入玛丽女王大学以来,该中心已发展成为英国首屈一指的数字音乐研究小组。
C4DM属于伦敦玛丽女王大学的电子工程与计算机科学学院,其主要的研究领域包括音乐信息检索、音乐信息学、语义音频、音乐语义网、音乐音频数字信号处理、音频工程、机器听觉、声音合成、音乐感知与认知、增强乐器和声音交互设计。
科研团队与项目
一、C4DM的智能音频工程研究团队致力于智能录音技术、高级音效、现场声音制作技术、混音格式转换技术以及音频编辑自动化技术的开发,目前 ...
PyTorch入门程序
在 PyTorch For Audio and Music Processing 入门代码的基础上添加了一些注释和新的内容,包括:
Download dataset
Create data loader
Build model
Train
Save trained model
Load model
Predict
注意,以下代码存在一个小问题:在Pytorch的CrossEntropyLoss()损失函数中,自带了计算Softmax这一步骤,所以在神经网络最后不需要Softmax这一层。
12345import torchfrom torch import nnfrom torch.utils.data import DataLoaderfrom torchvision import datasetsfrom torchvision.transforms import ToTensor
1234567891011121314def download_mnist_datasets(): train_data = datasets.MNIST( root=" ...
音乐速度与节拍估计(二)教程阅读笔记
ISMIR 2021 速度、节拍与强拍估计教程阅读笔记
教程链接: Tempo, Beat, and Downbeat Estimation — Tempo, Beat and Downbeat Estimation (tempobeatdownbeat.github.io)
Annotate
自动标注 + 自动修正 + 人工修正
Baseline
See 音乐速度与节拍估计基本方法 | WiZardWen (wzw21.cn)
Evaluate
F-measure
将节拍估计问题视为二分类问题来进行评估
Typically use a tolerance window of +/- 70ms around each ground truth annotation.
使用 F-measure 的好处:Catch either: i) natural human variation in tapping and not punish it, or ii) contend with cases like arpeggiated chords where it’s difficul ...
去除来必力(Livere)附带广告
去除来必力(Livere)评论系统附带韩文广告的两种方法
方法一:添加CSS代码
在css文件(e.g. normalize.min.css)中添加如下代码
123.trc_rbox_container { display: none !important;}
添加后需要hexo clean
方法二:添加JS代码
在js/pug文件(e.g. livere.pug)中添加如下代码
1234567891011121314script. var intervalFunctionID = setInterval(function(){ myTimer() }, 1000); function myTimer() { if (document.getElementById("taboola-livere") != null) { if (document.getElementById("taboola-livere").style.display = ...
音乐速度与节拍估计(一)基本方法
使用Librosa库对音乐速度、节拍进行估计的基本方法
参考:https://tempobeatdownbeat.github.io/tutorial/ch2_basics/baseline.html
基本设置
1234import librosaimport matplotlib.pyplot as pltimport librosa.displayimport numpy as np
1mount = False
1234from google.colab import drivedrive.mount('/content/drive')# drive._mount('/content/drive') # failed on Jan 21st, 2022mount = True
1234567891011121314if mount == True: filename = "drive/MyDrive/data/tempo_tutorial/audio/book_assets_ch2_basics_audio_easy_exa ...