FrendoWu / beats2beats

Apache License 2.0
6 stars 0 forks source link

midi文件中音色和速度由什么决定 #3

Closed dmyang42 closed 5 years ago

dmyang42 commented 5 years ago

问题:

midi文件中哪些event决定一个音频的音色和速度? 目前我知道的resolution是跟速度相关的,还有个Tempo啥的 然后ProgramChangeEvent是音色。 但好像两个都不是那么简单的,得确认下。

备注:

我一直觉得midi.ProgramChangeEvent决定一个Track的音色,但是有那么一个Track: Stan_9_Acoustic_Grand居然是个类似架子鼓的音色(不过我是在看切片的时候发现的这个问题,它的切片也比较麻烦,听起来),可能得弄清楚这个原因,按照我的理解不应该channel之类的相关,实在不清楚。

dmyang42 commented 5 years ago

@FrendoWu @ppzqh

dmyang42 commented 5 years ago

咋分工 @ppzqh

ppzqh commented 5 years ago

我现在的理解:

  1. 音色还是只取决于instrument,之前说的channel可以是因为改变了不同channel里instrument的分配情况,所以听起来不一样了。
  2. 速度取决于noteon和noteoff(或者noteon(velocity=0))的交换频率。
ppzqh commented 5 years ago

那我先确认音色的决定因素

  1. General MIDI中channel 10被保留作为打击乐器使用,其他channel中使用旋律音色表。
  2. 还有一个General MIDI Level 2,扩展了音色表中的群组,但我们用的python-midi没有这个event。
dmyang42 commented 5 years ago

那我先确认音色的决定因素

我来确定节拍那些事情

dmyang42 commented 5 years ago

S

Sample 样本,数字方式录制的声音          

Sample Rate 采样率 Sample Resolution 采样分辨率         

Sampler 采样器,能够以数字方式录制声音并能从键盘播放的一种电子乐器          

Sampling 采样          

Sampling Rate 采样速率,在数字音频设备中,考察输入的音频信号,并产生代表它瞬时振幅的频率          

Sampling Keyboard 采样键盘,使用实际录制的声音为采样样本,也就是能将声音转变为数字波形进而利用这些波形产生声音 
Save 存入          

Scale Tune 音阶调谐          

Score 总谱,配乐,能同时展开合奏中所有声部的乐谱,也可用于为电影、视频或类似项目配音乐乐谱          

Scoring Software 用五线谱的方式描述音乐的软件          

Sequencer 音序器(编曲机,以模拟多道录音的方式录下MIDI信号的仪器或应用程序)          

Serial 串型,以一次一个位的方式来传送数据          

Sequence Data 音序数据          

Sequence File 音序文件          

Sequence Number 音序号          

Semitone 半音        

Single Wire 单线(常指音箱连接方式,和Bi Wire 双线连接相比而言)          

Signal 信号          

Sine Wave 正弦波,由没有陪音的一种频率导致的简单的周期波形

Sharp 升高半音,使音符提高半个音的符号,也表示比所需音高发声更高          

Slider 推子,滑杆         

Slave 从属,伺服,能响应进入的数据的设备SMPLE(Society of Motion Picture and Television Engineers[运动图像以及电视工程师学会])音视频同步时间代码          

Solo 独奏,华彩乐段          

Sound Card 声卡          

Sound Module 音源模块,不附加键盘的合成器或采样器,它要求来自外部MIDI设备的输入以产生它的声音          

Sound Wave 声波          

Snare 军鼓          

Split 分解,将MIDI键盘范围(或其他控制器)划分为不同的部分,其中每一种都对不同的乐器声音进行控制,也表示该划分后出现的位置          

Staff 五线谱          

Stage 舞台         

Standard MIDI File(SMF) 标准MIDI文件

 Start Up 启动          

Step Edit 分步编辑          

Step Record 单步录音          

Step Time 分步时间,把固定的一段时间长短平分为数段,通常在鼓机上,需要这种功能来一步步设置          

Stop Mode 停止方式          

Stand Sheet Music 标准纸面乐谱          

Status Message 状态消息          

Stereo 立体声          

Strength 力度          

Stress 重音          

Strings 弦乐群          

Status Byte 一字节的信号,用来指出是哪一种MIDI信息及其要传送的位置          

Sustain 延音,声音包迹中释放阶段以前振幅保持恒定的部分          

Square Wave 方波          

Switch 开关          

  Symphony 交响乐          

Sync Clock 同步时钟          

Synthesizer 合成器          

Synchronization 同步          

System Configuration 系统配制          

System Exclusive Data 系统专有数据          

Synthesizer 电子合成器,简称Synth,利用波形组合成声音采样来发声的键盘乐器,可将其中的声音加以改进重组,以创造新的声音          

T

Tape Syne 磁带同步          

Tempo 速度(拍速),拍子          

Tempo Track 速度轨          

Threshold 临界值          

Timbre(或Timber) 音色,相同音高和音量下用于区别多种声音的特性          

Timecode 时间代码,用于将音乐和电影及视频合成的定时参考          

Time Signature 节拍记号、拍号,由两个数组成的符号,表示在每一节中出现多数拍以及哪一种音符的持续时间代表一拍    
Tick 在MIDI中计算时间的单位。例如:120 Ticks per beat (拍),则每一Tick的长度为1/120 beat。Beat(拍子)可以任意长度,依音乐的速度而定          

 Touch 触键,对按键程度的反应          

Tone 音调          

Transmit Channel 发送通道          

Transmit Max Velocity 发送最大触键力度        

U

Ultra-sand 超声波          

User 用户          

User Memory 用户存储区          

Utility 应用          

Unison 齐奏,两个音符以同一音高发声          

V

Velocity(Vel.) 击键力度          

Velocity 力度,表示音符演奏或释放时间用力程度的MIDI信息,往往用于控制音符的音量(MIDI上所代表的范围是0-127)

Velocity Range 触键速度范围          

Vibrate 颤音          

Vibrato 颤音效果(揉音、颤音,即模拟吉他演奏手指在指板上前后摇动所产生的震动效果)          

Video 视频          

Vinyl Record 塑胶唱片          

Virtual 虚拟的          

Virtuoso 演奏大师          

View Field 观看区域          

Volume 音量   

Transmit MIDI 发送MIDI          

Transmit Pan 发送相位          

Transmit Program Change 发送音色变化          

Transmit Transpose 发送移调          

Transmit Velocity Sensitivity 发送触键力度灵敏度          

Transmit Volume 发送音量

Transpose 移调          

Transmit Condition 发送条件          

Treble 高音谱表          

Track 轨          

Tune 音调          

Trigger 触发器  
dmyang42 commented 5 years ago

Tempo - 一个拍的时间,比如120BPM表示1min120beats,所以是500,000ms一个beat

Resolution - 一个beat含有的tick数,tick是midi中最小的时间单位(相对的,由Tempo和Resolution定出绝对值)。如Resolution为1,000,则一个tick500ms

Time Signature - 拍号,在midi中不会影响到Tempo

在初始化的时候,可以初始化Tempo与Resolution,后面可以调用event更改Tempo,但Resolution不可更改。

Tempo具体:https://github.com/vishnubob/python-midi/issues/74

ppzqh commented 5 years ago

关于音色:

  1. 对于channel9(打击乐),NoteOnEvent的data[0]代表音色 例:midi.NoteOnEvent(tick=0, channel=9, data=[80,100]),80代表闷音三角铁。
  2. 对于其他channel,ProgramChangeEvent用来改变音色,其中data[0]表示改变之后的音色 例:midi.ProgramChangeEvent(tick=0, channel=9, data=[0]),0代表Acoustic Grand Piano。
dmyang42 commented 5 years ago

关于音色:

  1. 对于channel10(打击乐),NoteOnEvent的data[0]代表音色 例:midi.NoteOnEvent(tick=0, channel=9, data=[80,100]),80代表闷音三角铁。
  2. 对于其他channel,ProgramChangeEvent用来改变音色,其中data[0]表示改变之后的音色 例:midi.ProgramChangeEvent(tick=0, channel=9, data=[35]),1代表Acoustic Grand Piano。

你说是,那就是8