符文工房吧 关注:21,663贴子:344,192

回复:【资源重发】NDS符文工房1到3音乐和音效提取

只看楼主收藏回复

想要实现这个功能的话,我们就要思考一下该怎么实现,首先需要在MainForm类中添加相关菜单选项,即导出所有WAV的选项。
我们找到相关的代码,按照它的规范添加一个导出所有WAV的选项即可。



IP属地:云南16楼2025-03-26 01:12
回复
    按照它的规范添加完菜单选项后,它这里显示未包含定义的话不要着急,我们在解决方案资源管理器的Properties中找到Strings.resx添加相关字符串资源即可,添加完成后就不会报错了。





    IP属地:云南17楼2025-03-26 01:17
    回复
      2026-01-17 06:29:12
      广告
      不感兴趣
      开通SVIP免广告
      给大佬顶


      IP属地:辽宁来自Android客户端18楼2025-03-26 01:21
      收起回复
        处理完菜单选项我们就可以写批量导出WAV的方法了,先创建CommonOpenFileDialog类的实例,提示用户选择保存目录。



        IP属地:云南19楼2025-03-26 01:25
        回复
          文件夹选择完成后,我们定义两个值为0的int类型变量,用于存储成功导出和失败的计数,再做一些播放状态的记录,例如当前的音乐索引,播放状态,是否淡出,循环次数,再调用Stop方法停止播放。


          IP属地:云南20楼2025-03-26 01:38
          回复
            接着使用for循环遍历所有音乐,使用try…catch结构来捕获可能出现的异常。
            在try块中,可以先对转换失败的情况做一个处理,通过加载音乐检查音轨数据,如果音轨数量为0就是转换失败,可以添加转换失败的计数,再使用continue语句跳过当前迭代继续循环,则跳过转换失败的音乐继续下一个。


            IP属地:云南21楼2025-03-26 01:55
            回复
              然后继续在try块中处理转换成功的情况,定义两个string类型的变量,用于存储音乐名和文件名,音乐名由于我之前提到过这个工具默认保存文件名会带有双引号,所以要调用之前处理非法字符的方法。
              除了这个以外,我们还可以写一个确保导出的WAV文件路径是唯一的方法,防止出现文件名相同的情况,导致文件被覆盖,GetUniqueFilePath方法可以支持在文件名末尾添加递增的序号。



              IP属地:云南23楼2025-03-26 02:19
              回复
                文件名处理完成后就可以导出音乐了,其中Engine.Instance.Player.ShouldFadeOut = true是启用音频淡出效果,NumLoops和音乐循环次数有关,最后调用Record方法生成WAV文件并保存到指定路径,逻辑和之前导出单个WAV逻辑一样,这段代码执行成功的话,则增加转换成功的计数。


                IP属地:云南24楼2025-03-26 02:22
                回复
                  2026-01-17 06:23:12
                  广告
                  不感兴趣
                  开通SVIP免广告
                  catch块则用于处理异常,出现异常则增加转换失败的计数,并提示用户导出失败。
                  finally块则恢复导出参数,了解C#中异常处理结构的话,就知道不论程序在执行过程中是否发生异常,finally语句中的代码总是被执行。


                  IP属地:云南25楼2025-03-26 02:23
                  回复
                    for循环结束后,就可以恢复之前的播放状态,并提示成功导出的音乐的数量和失败的数量了。


                    IP属地:云南26楼2025-03-26 02:28
                    回复
                      完成导出所有WAV的方法后,我们还需要在在FinishLoading方法中启用这个选项,不然这个选项就无法使用。
                      代码的逻辑是判定当前加载音乐的数量,如果大于0就启用。



                      IP属地:云南27楼2025-03-26 02:34
                      回复
                        同样导出所有WAV的选项在DisposeEngine方法中也要禁用,不然在引擎中止时,导出所有WAV的选项依然还可以点击的话,可能会产生异常。


                        IP属地:云南28楼2025-03-26 02:40
                        回复
                          关于解决VGMusicStudio保存的文件名有双引号,还有批量导出的功能就这些了,很久不搞代码现在也生疏了。
                          其中有借助了AI的帮助,不过我还是理解了代码还有这个功能是怎么实现的,感觉我好几年前学的有些东西现在也是过时了,代码水平确实不如AI。
                          这个是我测试批量导出牧场物语双子村的音乐也没问题,有时候确实存在部分没有音轨的音乐导出失败的情况。


                          IP属地:云南29楼2025-03-26 02:49
                          回复
                            说完了怎么提取以后,借这个贴子发点牢骚吧,不喜欢的可以离开了。
                            记得早期在这个贴吧发相关贴子(2017年)的时候,当年我只有16岁,年龄并没有你们想象的那么大,现在已经从学校出来了好几年,距离第一次工作也有四年多了,今年也过第二个本命年了。
                            不知道这个吧现在还有没有人记得我,不过我给很多人的印象都是不太合群,性格糟糕吧。
                            我确实不太擅长与人打交道,性格也的确不好,我这边人生其实也算是挺失败的,小时候学习一直都不好,考试都是垫底,以前来这边发贴其实也算是逃避现实,当时我可能是有点装过头了,让很多人误以为我是大佬,但其实并不是,我只是站在了其他大佬的肩膀上才做到那些东西的,自己是没什么技术的。
                            现在来看自己当年或许确实是在拿一生中最珍贵,最该提升自己的时光,去搞有些无关紧要的东西,最终第一学历就只是个专科,做不了什么技术型的工作,这几年给人家扫地收垃圾也是混日子了,未来几十年都要为那一口苦饭发愁,现在感觉我还不如有个跟我一样住群租房的前辈。
                            或许这就是年少无知,未在正确的时间做该做的事,结果换来了后半辈子的卑微吧。


                            IP属地:云南30楼2025-03-26 02:50
                            回复
                              2026-01-17 06:17:12
                              广告
                              不感兴趣
                              开通SVIP免广告
                              这几年生活和周围的人际关系都出现了巨大变故,自己也活成了曾经讨厌的模样,低谷期选择主动断绝了大多数人的关系,做法是有点极端,不过也是想着给自己留下最后一点体面,这里还是想给有些以前加过我的人道歉,我现在对很多东西也确实是有心无力,也提供不了什么价值。
                              虽然我也确实热爱计算机专业,前几年读成教混了个本科文凭,后面虽然可以申请学位,不过我那几年还是比较混的,我在2022年去医院确诊过双相,早期认识我的有些人,可能发现我有时候确实不太稳定,没法给别人带来笑容和情绪价值,现在精神状况有时候也不太好。
                              学业方面我也确实荒废了,那几年我其实是一堂课都没有去上过,网课挂机,只是按部就班的完成那边的要求,还有工作要做的事,不过有些东西我以前学过,要做的题复习一下还是能做的,像毕设和论文我用的就是C#写的Windows窗体程序,不过做出来的程序很垃圾,写出来的论文质量也不高,程序方面甚至还不如我当年的水平,我也确实是很多年没有再继续学习了,所以也有点不配得感吧。


                              IP属地:云南31楼2025-03-26 02:51
                              回复