모든 저작권.
상업 재판 비상업적 무단 전재 소스를 표시하시기 바랍니다 승인 저자에게 문의하시기 바랍니다.
저자 : 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
번역되고, 잠시 기다려주십시오..