找回密码
 立即注册
搜索
查看: 8357|回复: 21

[PC] 不能发贴简单回贴用

[复制链接]
发表于 2017-7-13 16:58 | 显示全部楼层 |阅读模式
本帖最后由 eggplant 于 2025-9-16 19:55 编辑

https://stage1st.com/2b/thread-2262126-1-1.html

现在听MIDI用什么软件效果好,同时可以转换格式呢?




简单聊聊自己认知的Midi音乐和一些相关东西,因为不是专业音乐人或专业音频程序员,
只能从自身有限的了解发表有限的讨论,不保证认知100%正确,说人话就是先叠个甲。

2025年还听Midi音乐的,要么本身就是玩音乐,音乐人或者音频爱好者,要么就是游戏音乐怀旧爱好者。

而游戏音乐怀旧爱好者,通常对游戏音乐有原汁原味还原的要求,所以以流行的老游戏音乐来看。
FC,MD主机音乐应该是最多的。
FC有nsf
MD有vgz
能搜到专门的音乐播放器,放出来的效果和模拟器一个味。也可以导出成wav


再说Midi,Midi游戏音乐似乎是较老电脑游戏音乐,因为我没经历过那种游戏音乐的时代,不好说具体是什么效果。
但是从网上来看,有些似乎是和罗兰或者是什么声卡有关系的,经典的Midi声音是SC88等。


有几种方法模拟

第1种,用Roland的SoundCanvas插件VSTi,这个实在是太古老了,回忆了一下,2008年我还在玩Midi音乐时用过几次,
当时foobar有个VST插件,可以挂载VSTi,就可以调用这个听一些游戏原声Midi,但是老实讲这个效果和Windows自带的差的不多。
而且Windows的Midi波表其实也是Roland提供的。


第2种,挂Soundfont音色播放。比较流行的Soundfont播放器是TiMidity,现在用的话TiMidity++-2.15.0

因为大部分人,比如我,听Midi只要和Windows的软波表差不多的声音就可以了,只要Midi弯音解析正确即可。

所以对应Soundfont,大部分人会选择Scc1t2.sf2,因为他和Windows自带的播放效果非常相似。

https://www.doomworld.com/forum/topic/115687-scc1t2sf2-has-out-of-tune-pianos-gmsf2-has-bad-volume-levels-fixes-for-both/


这个链接讨论了这个事,以及修复了Scc1t2.sf2钢琴跑调的问题

顺便一提,Scc1t2.sf2体积3.12 MB,修复版__Florestan_Basic_GM_GS.sf2相同

其他一些SF音色

https://dev.nando.audio/pages/soundfonts.html


你在网上也能搜到一些其他的Soundfont音色,比如一些电子琴,电钢琴,合成器等等,但是用的比较少。
因为如果你稍微玩过Midi音乐,就知道一些更好的专门的合成器或者音源的Kontakt或者专门的VSTi版本。
比如VSL D274钢琴的SF2版和原版完全没法比,毕竟体积在那。



8楼的兄弟贴了Roland SC的设置方法
https://www.bilibili.com/opus/656673192156332041


老实讲,从我的角度讲不推荐,因为有点麻烦,虽然那贴说的很详细了,我也都能看懂,但是老实说真的很麻烦。
1.要安装Roland SC
2.要安装loopMIDI,虽然玩Midi的人,至少有Midi键盘的人至少人手一个了
3.要安装Coolsoft MIDIMapper,没用过,但是我看到要装3个东西,还有一个是上古卷轴级别的古董我就放弃了,
至少我是不会把这么古老的东西装进我的新电脑的(来自常年吃屎的直觉)




然后是Soundfont播放器,其实有挺多,推荐TiMidity++-2.15.0有几点。
1.他是日本人写的,日本人的软件在模仿他们本国出的软件上似乎有天然优势,毕竟文档资料什么的阅读比其他国家更多,更方便
2.当年玩Midifan论坛时,6老师唯一推荐的Midi播放器,当时他是国内某音频软件公司的程序员,他说他研究了一圈Midi播放器,
最后得出这个软件是最好的选择,当然那也是10多年前的事了,现在我不知道还是不是了,但是我用着还行


TiMidity++-2.15.0 下载
https://sourceforge.net/projects/timidity/files/TiMidity%2B%2B/


如果你点了下载,浏览器没有跳下载窗口,点 Problems Downloading 按钮,然后再点 direct link 下载就行了。
国内这网络,有时能直接下,有时不能,咱也不懂为什么

设置
https://www.bilibili.com/opus/1069075818786848809


视频
https://www.bilibili.com/video/av433963066/




总结来说
1.解压后,你需要在timidity.exe相同目录下新建一个叫 TiMidity.cfg 文件,里面写上你的Soundfont路径绝对地址
比如我的,自己用你要改成你自己本地存在的路径
soundfont "E:\TiMidity++-2.15.0\SF2\__Florestan_Basic_GM_GS.sf2"
SF2目录是我自建的
__Florestan_Basic_GM_GS.sf2是我下载的


2.运行timw32g.exe,Config 菜单第1项,Preference 项,Config File选择你上面写的那个配置文件
比如我的,自己用你要改成你自己本地存在的路径
E:\TiMidity++-2.15.0\TiMidity.cfg


3.File 菜单 Open File选择一个mid文件播放即可,文件可多选,界面还有个播放列表


4.Output菜单,默认应该是 Windows audio driver 选项,也就是直接声卡播放
你也可以选择 Riff WAVE file,这样播放完就会导出一个叫 output.wav 的音频文件,但是这个办法只对单文件有效
虽然输出到声卡可以多文件,但是导出不行。但是你可以用我下面这个脚本来批量导出


5.timidity.exe目录下新建一个Midi目录,把你想转换的midi文件都放进去
timidity.exe同目录下,新建一个叫wavs.bat的文件,内容如下

  1. @Echo off
  2. for %%i in (Midi\*.mid) do timidity %%i -Ow -o %%i.wav
复制代码



然后运行就可以批量导出成wav了




最后再提一下Midi播放的问题,关于Midi,网上似乎只能搜到mid文件的格式,以及参数意义,
但是具体实现上似乎没见过有任何文章或者博客说明具体应该怎么做。
所以你会发现,你用10个Midi播放器或者开源Midi播放器库,播放效果几乎都不相同,代码就更不用说了。
哪怕都是日本人的Midi Player,不同语言,不同版本效果可能也不相同,更不要说全世界范围了。
以我半调子的音频编程水平来看,我已经放弃寻求正确播放mid文件的路了,因为这个“正确”太难定义了

退而求其次,换一个角度讲,“正确的”播放的mid文件效果和“想要的”播放的mid文件效果,我现在选择了后者
只要你这个Midi播放器播放出来的声音,是我想要的效果,这就行了。而TiMidity++符合这个标准,这就行了。




测试mid文件,一般的不说了,测试弯音和效果的

jackal.mid                赤色要塞第1关,没有弯音效果的Midi播放器可以直接放弃,这是基础中的基础了



sor01.mid                怒之铁拳1第1关,开头6秒左右的下弯音特效,Windows自带播放器也播不出这个效果,但是TiMidity可以,
这算特例,但是这就是我说的想要的效果,其他播放器很少有能播出相同效果的





========================================
试了下foobar2000的MIDI Player插件,搞起来更简单直接一点。
首先需要一个新版的foobar2000,目前这个插件页面写的是foobar2000 v2.0 or later,要求2.0或更新版本

然后下载插件,双击安装

https://www.foobar2000.org/components/view/foo_midi+%28x64%29


然后会要求重启foobar2000

重启完后,如果没打开配置界面,打开配置界面

foobar菜单
Library > Config
找到
Playback > Decoding > MIDI Player
可以看到 Output下面 Player使用的默认播放解析是LibADLMIDI,点击下拉框可以看到更多选项,
因为其他解析我没用过,直接引用插件说明

LibADLMIDI 1.6.0, Yamaha YMF262 and CT1747 (OPL3)
LibOPNMIDI 1.6.0, Yamaha YM2612 (OPN2) and Yamaha YM2608 (OPNA)
LibEMIDI, Yamaha (OPLL), PSG and SCC
LibMT32Emu 2.7.2, Roland MT-32, CM-32L and LAPC-I synthesiser modules
Nuked-OPL3, Yamaha YMF262 and CT1747 (OPL3)


在这个下拉列表下,除了第2项 BASSMIDI 外,应该都是其他各种解码模拟,而 BASSMIDI 则会使用Soundfont来播放,
需要在下面的
Playback > Decoding > MIDI Player > Paths
配置上Soundfont的路径才行,否则播放不了

以我的为例
E:\TiMidity++-2.15.0\SF2\__Florestan_Basic_GM_GS.sf2

配置好后,选BASSMIDI再播放MIDI就会得到和TiMidity++-2.15.0差不多的声音了
foobar的操作就比较简单了,直接鼠标右键就可以导出音频

其中 Paths 还有配置 VSTi等的选项,插件官方说支持32,64位,我用64位的Pianoteq 6 (64-bit).dll测试了一下,确实能放,
但是点配置,跳出VSTi窗口界面就不能再操作了,不知道哪的问题,要么就是有Bug,
可能只是为了挂个Roland SC之类的,用个默认设置播放个mid用,这样解释才说得通。







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

     
发表于 2020-3-5 11:36 | 显示全部楼层
我帮补充一下
个人很喜欢matt make games,横版开发经验十年有余的老将
Celeste角色部分源码:
https://github.com/NoelFB/Celeste
实现方式真的粗暴

TowerFall Physics 塔倒的物理系统文章
https://mattmakesgames.tumblr.co ... 1/towerfall-physics
回复

使用道具 举报

发表于 2020-3-5 12:10 | 显示全部楼层
看码就太辛苦了,虽然可以试试,但是至少还是想要地图编辑器,比如能配合tiled使用的,反正也看过一下SDL的,就显示个hello也有一大堆,最后也要close些什么,觉得暂时还是
回复

使用道具 举报

     
发表于 2020-3-5 14:27 | 显示全部楼层
mark一下
回复

使用道具 举报

     
发表于 2020-3-5 14:55 | 显示全部楼层
光看这个
C#似乎是最适合独立游戏作者自编的语言?
回复

使用道具 举报

发表于 2020-3-5 14:58 | 显示全部楼层
不如说说怎么编译?要说为什么难这也是个问题。
回复

使用道具 举报

     
发表于 2020-3-5 15:20 | 显示全部楼层
woodcoin 发表于 2020-3-5 14:55
光看这个
C#似乎是最适合独立游戏作者自编的语言?

门槛低,语法糖多,Windows开发环境配置方便
不过主要还是得益于XNA和Unity在独立开发者社群中的影响吧
回复

使用道具 举报

     
发表于 2020-3-5 15:23 | 显示全部楼层
mes 发表于 2020-3-5 14:58
不如说说怎么编译?要说为什么难这也是个问题。

第一个项目:
Compiling
You will need a compiler supporting C++11. So far, only mingw-w64-g++ 4.8 on Windows has been used, although the code is very portable. You will also need the following libraries:

SDL2
SDL2_mixer
opengl
DevIL
boost
rapidxml

如果那个工程支持独立编译运行,如何编译作者都会写在ReadMe里的呀
回复

使用道具 举报

     
发表于 2020-3-5 15:40 来自手机 | 显示全部楼层
马克一下。
回复

使用道具 举报

     
发表于 2020-3-5 15:42 来自手机 | 显示全部楼层


—— 来自 OnePlus GM1910, Android 10上的 S1Next-鹅版 v2.2.0.1
回复

使用道具 举报

发表于 2020-3-5 15:43 | 显示全部楼层
w30of 发表于 2020-3-5 15:23
第一个项目:
Compiling
You will need a compiler supporting C++11. So far, only mingw-w64-g++ 4.8 o ...

这些libraries就是个谜,怎么包括的,路径之类,还要改电脑属性之类,如果mingw还好,好像还能网上自动安装,还有如果自己写那就没项目文件了,又怎么编译?
回复

使用道具 举报

发表于 2020-3-5 15:48 来自手机 | 显示全部楼层
说到马里奥…我记得PC上有一个只有几关的马里奥…具体几关忘记了…但是全打完会自动回到第一关重新开始…印象里是Pascal写的(存疑)…这个不知道有源码么

—— 来自 OnePlus ONEPLUS A6010, Android 10上的 S1Next-鹅版 v2.2.0.1
回复

使用道具 举报

     
发表于 2020-3-5 16:26 | 显示全部楼层
mes 发表于 2020-3-5 15:43
这些libraries就是个谜,怎么包括的,路径之类,还要改电脑属性之类,如果mingw还好,好像还能网上自动安 ...

他用这个mingw我接触的不是很多
不过我用过这些库,boost、rapidxml啥的下载下来的都是一些.hpp .cpp啥的
下载下来再放在mingw的那个库路径里就行了

搜一下相关答案很多
https://stackoverflow.com/questi ... -lib-paths-to-mingw

自己写没项目文件啥意思?
回复

使用道具 举报

发表于 2020-3-5 17:06 | 显示全部楼层
w30of 发表于 2020-3-5 16:26
他用这个mingw我接触的不是很多
不过我用过这些库,boost、rapidxml啥的下载下来的都是一些.hpp .cpp啥的 ...

如果自己写一堆.c文件。
回复

使用道具 举报

发表于 2020-3-5 18:05 | 显示全部楼层
只要是想做游戏而不是做引擎,物理、渲染、资源管理这些底层轮子都别碰了。从GL、SDL、XNA开始写看起来是要酷一些,但都是历史的烟尘。现在的独立作者没有不从通用引擎开始的理由。
回复

使用道具 举报

     
发表于 2020-3-5 18:18 | 显示全部楼层
mes 发表于 2020-3-5 17:06
如果自己写一堆.c文件。

c文件的话 我所知是用cmake 配置好可以直接生成.exe
网上随便找个教程
https://zhuanlan.zhihu.com/p/74070812
再配合官方文档
https://cmake.org/cmake/help/latest/guide/tutorial/index.html

呃……你确定要折腾这玩意?
如果从这步开始折腾的话,你之后还会碰一鼻子灰
并且与最开始的意愿已经大相径庭了,现在也很少从这开始开发的

我建议还是只看代码学习一下

感觉有点偏离主题,要不要删一下贴?
回复

使用道具 举报

发表于 2020-3-5 18:35 | 显示全部楼层
w30of 发表于 2020-3-5 18:18
c文件的话 我所知是用cmake 配置好可以直接生成.exe
网上随便找个教程
https://zhuanlan.zhihu.com/p/7407 ...

我已经碰过了,反正也只是碰碰,其他有心人可以再努力点,我个人还是推荐经典2D游戏用Sdl这些比较高效的。
回复

使用道具 举报

发表于 2020-3-6 22:48 | 显示全部楼层

问个纯属技术上感兴趣,因为现在肯定没人想写,3D碰撞的问题。某3D塞尔达似乎是只有向上永远对齐Y轴的圆柱和可以不对齐任何轴的三角形和四角形(也许可以看成两个三角形),那么怎么算它们有没有碰撞?
github.com/n64decomp/sm64/blob/master/src/engine/surface_collision.c
听说和mario 64比较像,不过看不懂。
回复

使用道具 举报

     
发表于 2020-8-12 06:30 | 显示全部楼层
感谢楼主,很有帮助的解答!
回复

使用道具 举报

     
发表于 2023-5-10 16:46 | 显示全部楼层
感谢楼主(突然想起自己三年前发了个DRPG的贴,最后虽然没做成,但改成了一个卡牌桌游,和朋友线下玩的还比较乐呵
回复

使用道具 举报

发表于 2023-8-9 18:24 | 显示全部楼层
感谢讲解,让我对该看哪些内容有了大致的了解。
回复

使用道具 举报

     
发表于 2025-9-16 20:03 | 显示全部楼层
mark多谢,不过楼主你加分来替换回复的话不点提醒是注意不到的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-9-18 12:31 , Processed in 0.103498 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表