著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:Zixuan Zhao链接:https://www.zhihu.c 번역 - 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:Zixuan Zhao链接:https://www.zhihu.c 한국어 말하는 방법

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:Zixuan Zhao
链接:https://www.zhihu.com/question/31424763/answer/51905512
来源:知乎

说一下当时我解决这个问题的思路。使用的语言是Mathematica,只是因为个人使用习惯。首先通过iTunes下载Deemo2.0的ipa,解压缩,找到数据包文件,然后用disunity提取,具体指令如下。经过观察发现TextAsset文件夹内存有Deemo的谱面文件,就把那个文件夹复制出来删掉其他的无关文件。经过观察发现TextAsset文件夹内存有Deemo的谱面文件,就把那个文件夹复制出来删掉其他的无关文件。这些谱面文件看起来是这样的打开是这样的打开是这样的基本可以确定如下信息:基本可以确定如下信息:1.每首曲子对应不同难度有不同文件deemo的钢琴反馈系统中,无论什么难度,都有一部分谱面note和一部分背景note,目前还无法确定信息是否完整及如何分配。但后来经过验证,每一首歌信息都是完整的并且完全相同的,具体两种note是在后面links的差别,在这里就不详说了。2.数据的格式为JavaScript Object Notation。最开始的时候我不知道json是什么,就自己写了一个parser,然而后来发现mma可以直接Import,所以还是用内置的Import来减少代码量。3.里面信息的大致含义我当时先听写了一首曲子,方便了理解这里面数据的含义。$id就是编号,忽略,sounds里面的d是duration,为note的长度;p是pitch,音高;v是velocity,强度;size应该是谱面note的大小,无关,忽略;pos应该是谱面note的中心位置,无关,忽略;_time是note开始的时间。这些也是我用来构造midi的全部信息。唯一的遗憾是在某些文件里面的sounds会有w的参数,并没有猜出来是什么含义,然而这样的midi听起来也和原曲没什么差别。当然如果有谁猜出来请告诉我,万分感激。mma内置了播放midi歌曲的函数,用Sound套起来一个由SoundNote组成的list就可以播放并且可以导出midi,而其中Sound[pitch_,{starttime_,endtime},SoundVolume->v_}]正好对应了刚才需要的四种数据,这样就省去了自己读写midi file的麻烦。所以剩余的任务就是通过list manipulation把原数据文件转化为Sound的形式就搞定了。首先Import[file,"JSON"]导入文件,得到了一堆rules,只想要notes,apply 一下 replacement rule就可以,"notes" /. Import[file, "JSON"]
然后删除不想要的那些元素:("notes" /.
Import[file, "JSON"]) /. ((# -> _) -> Sequence[] & /@ {"pos", "size", "w", "$id", "shift"})
这里我没有用DeleteCases,因为list的level不一样,删起来很麻烦,而替换就没这个问题。下一步打算把list里面的rule变成values,并且整理为规整的list,就在2,4层执行Values,并且最后做一些特殊情况的处理,包括time为0没有time元素的补全,电音并不对应琴键的删除,和小狗圆舞曲中某个note没有长度的修复:(Fold[Map[
Values, #1, #2] &, ("notes" /.
Import[file, "JSON"]) /. ((# -> _) -> Sequence[] & /@ {"pos",
"size", "w", "$id",
"shift"}), {{2}, {4}}] /. {{{a__List}} :> {{a}, 0}, {a_Real} :>
Sequence[], {a_Integer, b_Integer} :> {0, a, b}})
最后把list整理为每个音符的四元素为一个sublist,直接套入SoundNote格式。其中pitch在源文件中为0-127,C4对应60,mma中C4对应0,所以减去60即可,time直接使用,原来的velocity为0-127,mma中的为0-1,除以127就可以。最后的code如下:DeemoToMidiv2[file_] :=
Sound[Function[
SoundNote[#2 - 60, {#4, #4 + #1},
SoundVolume -> #3/127.]] @@ # & /@ (Flatten /@
Flatten[Thread /@ (Fold[
Map[Values, #1, #2] &, ("notes" /.
Import[file,
"JSON"]) /. ((# -> _) -> Sequence[] & /@ {"pos", "size",
"w", "$id",
"shift"}), {{2}, {4}}] /. {{{a__List}} :> {{a},
0}, {a_Real} :>
Sequence[], {a_Integer, b_Integer} :> {0, a, b}}), 1])]
可以试验一下:SetDirectory[$HomeDirectory "/Desktop/TextAsset"]
DeemoToMidiv2["v20anima.hard.json.txt"]
下一步可以处理全部文件了下一步可以处理全部文件了既然三个难度内容一样,留一个就好了(例如easy):MapThread[
Export[#1, DeemoToMidiv2[#2]] &, {StringReplace[FileNames[],
".easy.json.txt" -> ".mid"], FileNames[]}]
可以看到除了因为heyboy的空文件报错之外没有任何问题。(OSX用户要小心.DS_Store)之后就可以由logic pro x打开欣赏或者继续处理为五线谱啦。以上ps:想要midi的可以到这里下载【扒谱最终解决方案】Deemo全部歌曲钢琴midi,附几个效果好的谱_deemo吧
0/5000
다음 언어를 번역: -
다음 언어로 번역: -
결과 (한국어) 1: [복제]
복사!
저작권은 저자에 속한다.상업적인 reprints 인증, 비-상업적 무단 전재를 얻을, 소스를 표시 하시기 바랍니다 작성자를 문의 하시기 바랍니다.저자: Zixuan 자오링크: https://www.zhihu.com/question/31424763/answer/51905512소스: 알아说一下当时我解决这个问题的思路。使用的语言是Mathematica,只是因为个人使用习惯。首先通过iTunes下载Deemo2.0的ipa,解压缩,找到数据包文件,然后用disunity提取,具体指令如下。经过观察发现TextAsset文件夹内存有Deemo的谱面文件,就把那个文件夹复制出来删掉其他的无关文件。经过观察发现TextAsset文件夹内存有Deemo的谱面文件,就把那个文件夹复制出来删掉其他的无关文件。这些谱面文件看起来是这样的打开是这样的打开是这样的基本可以确定如下信息:基本可以确定如下信息:1.每首曲子对应不同难度有不同文件deemo的钢琴反馈系统中,无论什么难度,都有一部分谱面note和一部分背景note,目前还无法确定信息是否完整及如何分配。但后来经过验证,每一首歌信息都是完整的并且完全相同的,具体两种note是在后面links的差别,在这里就不详说了。2.数据的格式为JavaScript Object Notation。最开始的时候我不知道json是什么,就自己写了一个parser,然而后来发现mma可以直接Import,所以还是用内置的Import来减少代码量。3.里面信息的大致含义我当时先听写了一首曲子,方便了理解这里面数据的含义。$id就是编号,忽略,sounds里面的d是duration,为note的长度;p是pitch,音高;v是velocity,强度;size应该是谱面note的大小,无关,忽略;pos应该是谱面note的中心位置,无关,忽略;_time是note开始的时间。这些也是我用来构造midi的全部信息。唯一的遗憾是在某些文件里面的sounds会有w的参数,并没有猜出来是什么含义,然而这样的midi听起来也和原曲没什么差别。当然如果有谁猜出来请告诉我,万分感激。mma内置了播放midi歌曲的函数,用Sound套起来一个由SoundNote组成的list就可以播放并且可以导出midi,而其中Sound[pitch_,{starttime_,endtime},SoundVolume->v_}]正好对应了刚才需要的四种数据,这样就省去了自己读写midi file的麻烦。所以剩余的任务就是通过list manipulation把原数据文件转化为Sound的形式就搞定了。首先Import[file,"JSON"]导入文件,得到了一堆rules,只想要notes,apply 一下 replacement rule就可以,"notes" /. Import[file, "JSON"]원치 않는 요소 삭제: ("노트" /. 가져오기 [파일, "JSON"]) /. ((# _->) 시퀀스-> & / {"포스", "크기", "w", "$id", "이동"})다른 수준, 문제를 많이 삭제 하 여 목록을 대체 문제 때문에 여기, DeleteCases 필요가 없습니다. 목록 될 값 및 일반 목록에 다음 규칙 2, 4 레이어 값, 그리고 마지막으로 일부 특수 하 고 처리, 완료를 포함 하 여 0 시간 요소, Denon 삭제, 키에 해당 하지 않는 시간과 메모의 왈츠 길이 개에 고정 되지 않습니다: (배 [지도 [ 값, #1, #2] &, ("노트" /. 가져오기 [파일, "JSON"]) /. ((# _->) 시퀀스-> & / 분 {"pos", @ "크기", "w", "$id", "shift"}), {{2}, {4}}] /. {{{a__List}}: > {{a}, 0} {a_Real}: > , {A_Integer, b_Integer} 시퀀스: > {0, a, b}})마지막 4 개 성분의 각각의 순서를 따라 SoundNote 형식으로 직접 노트의 하위 설정 목록. 피치 c 4가 해당 60, 0-127, MMA에 대 한 소스 파일에서 60, 사용 시간을 빼기 그래서 C4 해당 0, 하, 원래 속도 0-127, MMA는 0-1 127로 나눈 값. 최종 코드는 다음과 같습니다: DeemoToMidiv2 [file_]: = 소리 [함수 [ SoundNote [#2-60, {#4, #4 + #1} SoundVolume-> #3/127.]] @ @ # & / 분 @ (병합 / 분 @ 병합 [스레드 / 분 (배 [@ [값, #1, #2] &, ("노트" /. [파일 가져오기 "JSON"]) /. ((# _->) 시퀀스-> & / 분 @ {"포스", "크기", "w", "$id", "shift"}), {{2}, {4}}] /. {{{a__List}}: > {{a}, 0}, {a_Real}: > , {A_Integer, b_Integer} 시퀀스: > {0, a, b}}), 1])]당신이 그것을 테스트할 수 있습니다: SetDirectory [$HomeDirectory <> "/ 데스크탑/TextAsset"]DeemoToMidiv2["v20anima.hard.json.txt"]다음 단계 다음 단계를 처리할 수 있는 모든 파일을 처리할 수 있는 세 가지 어려운 내용부터 모든 파일 두고 좋은 (와 같은 쉬운): MapThread [ 내보내기 [#1, DeemoToMidiv2 [#2]], {StringReplace [파일 이름, ". easy.json.txt"-> ".mid"], 파일 이름}]외부 빈 파일은 아무 문제 없이 heyboy 오류 외에도 볼 수 있습니다. (OSX 사용자 주의. DS_Store) 로직 프로 x 감사 후 열 또는 직원에 대 한 처리 추가 될 수 있습니다. 위의 추 신: 원하는 미디 다운로드할 수 있습니다 여기 "구운된 스펙트럼 최종 솔루션" Deemo 피아노 미디 몇 가지 좋은 스펙트럼 _deemo와 모든 노래,
번역되고, 잠시 기다려주십시오..
결과 (한국어) 2:[복제]
복사!
모든 저작권.
상업 재판 비상업적 무단 전재 소스를 표시하시기 바랍니다 승인 저자에게 문의하시기 바랍니다.
저자 : Zixuan 조의
링크 : HTTPS : //www.zhihu.com/question/31424763/answer/51905512
출처 : 거의 알고 나는이 문제를 해결하기 위해 생각하고 무슨 말을. 언어는 때문에 개인 습관, 매스 매 티카를 사용하여. 우선 아이튠즈를 통해, IPA, 압축 해제 Deemo2.0 다운로드 패키지 파일을 찾은 다음 아래의 분열, 특정 지침로 추출 하였다. 관찰 TextAsset 폴더 메모리 후 삭제 다른 관련없는 파일에서 그 넣어 폴더를 복사, Deemo 스펙트럼 표면 파일입니다. 관찰 TextAsset 폴더 메모리 후 삭제 다른 관련없는 파일에서 그 넣어 폴더를 복사, Deemo 스펙트럼 표면 파일입니다. 이 같은이 스펙트럼 얼굴 파일이 보이는 오픈 그렇게 열려 그렇다 다음과 같은 정보를 확인할 수 있습니다 기본 : Basic은 다음과 같은 정보를 확인할 수 있습니다 : 1. 모든 노래에 상관없이, 어떤 어려움을 피아노 피드백 시스템 deemo 다른 파일에 해당하는 어려움의 다른 정도가 없습니다 스펙트럼 측 노트와 배경 노트의 부분의 양쪽 부분은 여전히 정보가 완전하고 어떻게 할당 할 수 있는지 여부를 확인할 수 없습니다. 그러나 나중에 입증 된, 모든 노래 정보를 완료하고 정확한, 특정 노트는 말을 알 수없는 뒷면에 두 개의 링크 사이의 차이입니다. 자바 스크립트 객체 표기법 2. 데이터 형식입니다. 처음에 내가 파서를 작성하는 자신에 무엇 JSON 알고 있지만 나중에 MMA 직접 가져 오기, 그들은 여전히 코드의 양을 줄이기 위해 내장 된 가져 오기를 사용하여 발견하지 않습니다. I는 노래를 구술 전에 대략 내부 정보를 의미 3. 의미의 이해를 용이하게하기 위해 데이터가 있습니다. V는 속도, 힘이다; $ 이드, 숫자, 무시 D가 기간, 음표의 길이는 내부 사운드; p는 피치, 피치 크기면의 크기 스펙트럼의 주이어야 무관 무시; POS는 스펙트럼 평면이어야 중심 위치 노트는 관계없이, 무시, _time하는 것은주의가 시작이다. 이 또한 내가 미디를 구성하는 데 사용되는 모든 정보입니다. 유일한 후회가 매개 변수 W에서 소리의 내부 파일 중 일부, 그리고이 의미가 무엇인지 추측이다, 그러나 이러한 미디 사운드와 원곡 사이에 차이. 물론, 매우 감사 말해 사람이 추측하는 경우하시기 바랍니다. MMA는, 미디 음악 기능 - 재생 내장 사운드를 재생할 수 있습니다 SoundNote으로 구성 목록을 설정 사용하면 [V_가} 피치 _ {starttime_, ENDTIME}, SoundVolume->] 정확히 그냥 필요 해당하는 사운드의 미디를 내보낼 수 있습니다 네 개의 데이터는, 이와 같이 판독 자신 MIDI 파일 문제를 작성할 필요가 없다. 따라서, 나머지 작업은 얻을 수있는 형태로 사운드로 원본 데이터 파일이 조작을 나열하는 것입니다. 먼저 가져 오기 [파일 "JSON"] 가져 오기 파일, 바로 메모를 할 규칙의 무리를 얻을, "메모"/. 가져 오기 [파일 "JSON"] 수 교체 규칙에 대한 적용 다음과가 원치 않는 요소를 제거 :( "메모"/. 가져 오기 [파일 "JSON"]) / ((# -> _) -.> 순서 [] / @ { "POS", "크기", "W", "$ ID" ,} "이동") 과 여기에 레벨이 같은 목록이 아니기 때문에 내가 대체 DeleteCases으로 아무 문제가 없습니다, 문제를 많이 삭제 ,. 다음 규칙, 전자 음악 값이되고, 일반 목록을 마무리, 2,4 층은 값을 수행, 그리고 마지막으로 0의 시간을 할 시간 요소의 완성을 포함하지 않는, 어떤 특별한 상황과 거래를 할 내부 나열 할 계획이다 그것은 삭제 키에 해당하지 않으며, 개는 수리의 노트 길이에 왈츠를하지 않았다 ([지도 [접어 . 값, # 1, # 2] ( "메모"/ 가져 오기 [파일 "JSON"]) /. ((# -> _) -> 순서 [] / @ { "POS", "크기", "W", "$ ID", "시프트"}), {{2}, {4}} ] / {{{}} a__List :> {{}, 0}, {} A_REAL :.> 순서 [], {a_Integer, b_Integer}> {0, A, B}}) 그리고 마지막으로 각각에 대한 목록을 마무리 직접 SoundNote 형식으로 설정 하위 목록에 네 가지 요소를 지적한다. (60)에 대응하는 127에 대한 원본 파일의 피치, C4는 C4에서 MMA 0에 대응하는 경우, 0-1의 범위에, 직접, 원래 0-127의 속도, MMA을 시간 (60)을 뺄 분할 할 수 있도록 127이 될 수 있습니다. 최종 코드를 다음과 같이 DeemoToMidiv2 [file_] : = 사운드 [기능 [ SoundNote [# 2-60, {# 4, # 4 + 1}, SoundVolume -> # 127분의 3] @@ # & / @ (. / @ 평평 평평 [스레드 / @을 ([접어 맵 [값, # 1, # 2] ( "메모"/. 가져 오기 [파일, "JSON"]) / ((# -.> _) -> 순서 [] / @ { "POS", "크기", "W", "$ ID", "시프트"}), {{2}, {4}}] / {{{}} a__List :.> { {}, 0}, {A_REAL}> 순서 [], {a_Integer, b_Integer}> {0, A, B}}), 1])] 실험 할 수있다 : SetDirectory [$는 HomeDirectory <> "/ 데스크탑 / TextAsset "] DeemoToMidiv2 [ "v20anima.hard.json.txt"] 다음 (예 여유롭게) 미세 떠나는 모든 파일은 모두 파일 때문에 같은 내용을 다음 세 가지 어려움을 처리 할 수있는 처리하기 : MapThread을 [ 내보내기 [# 1, DeemoToMidiv2 [# 2]]는 {StringReplace와 [파일 이름은 [], ".easy.json.txt"-> ".MID"], 파일 이름은 []}] 빈 파일 heyboy 때문에 주어지는 이외에 것을 볼 수 있습니다 외부 아무 문제없이. 다음 열려있는 논리에게 프로 X 감사 또는 친구를 막기 위해 치료를 계속할 수 (OSX 사용자주의 된 .DS_Store 될). PS 위 : 미디는 여기에서 다운로드 할 수 있습니다 원 [아빠] Deemo 스펙트럼에 연결된 최고의 솔루션 모든 곡을 피아노 미디, 몇 가지 좋은 효과 스펙트럼 _deemo



























번역되고, 잠시 기다려주십시오..
결과 (한국어) 3:[복제]
복사!
he aimed his gun at the door
번역되고, 잠시 기다려주십시오..
 
다른 언어
번역 도구 지원: 갈리시아어, 구자라트어, 그리스어, 네덜란드어, 네팔어, 노르웨이어, 덴마크어, 독일어, 라오어, 라트비아어, 라틴어, 러시아어, 루마니아어, 룩셈부르크어, 리투아니아어, 마라티어, 마오리어, 마케도니아어, 말라가시어, 말라얄람어, 말레이어, 몰타어, 몽골어, 몽어, 미얀마어 (버마어), 바스크어, 베트남어, 벨라루스어, 벵골어, 보스니아어, 불가리아어, 사모아어, 세르비아어, 세부아노, 세소토어, 소말리아어, 쇼나어, 순다어, 스와힐리어, 스웨덴어, 스코틀랜드 게일어, 스페인어, 슬로바키아어, 슬로베니아어, 신디어, 신할라어, 아랍어, 아르메니아어, 아이슬란드어, 아이티 크리올어, 아일랜드어, 아제르바이잔어, 아프리칸스어, 알바니아어, 암하라어, 언어 감지, 에스토니아어, 에스페란토어, 영어, 오리야어, 요루바어, 우르두어, 우즈베크어, 우크라이나어, 웨일즈어, 위구르어, 이그보어, 이디시어, 이탈리아어, 인도네시아어, 일본어, 자바어, 조지아어, 줄루어, 중국어, 중국어 번체, 체와어, 체코어, 카자흐어, 카탈로니아어, 칸나다어, 코르시카어, 코사어, 쿠르드어, 크로아티아어, 크메르어, 클링곤어, 키냐르완다어, 키르기스어, 타갈로그어, 타밀어, 타지크어, 타타르어, 태국어, 터키어, 텔루구어, 투르크멘어, 파슈토어, 펀자브어, 페르시아어, 포르투갈어, 폴란드어, 프랑스어, 프리지아어, 핀란드어, 하와이어, 하우사어, 한국어, 헝가리어, 히브리어, 힌디어, 언어 번역.

Copyright ©2024 I Love Translation. All reserved.

E-mail: