jjoriping / sorrygle Goto Github PK
View Code? Open in Web Editor NEWText-based MIDI writing language and its compiler
Home Page: https://sorry.daldal.so/sorrygle
License: MIT License
Text-based MIDI writing language and its compiler
Home Page: https://sorry.daldal.so/sorrygle
License: MIT License
(Sorry for bad English)
When playing/converting Sorrygle files that have both non-drum and drum parts, there are delays and inconsistencies on drum parts. And delay between drum and non-drum parts increases as song plays.
the picture above is piano roll of midi file that I downloaded from Sorrygle web demo.
Drum notes(gray) are uneven, and kick/snare notes are out of sync with bass notes(dark red and orange).
This de-syncing happens when playing Sorrygle files on web demo or song list site, converting Sorrygle files to midi or mp3, and using Sorrygle bot.
The midi file was converted from this Sorrygle file:
((bpm=150))
#1(q=8)(o=3)(p=81)
|:[eg^c]~~~~~[eg^c][fa^c]~~~~~~~~[fG^c]~~~~[fG^c]~[eg^c]~~~~~~~~:|
(o=4)[vgce]~~~~~[vge][cfa]~~~~~~~~[cfG]~~~~[fG^c]~[eg^c]~~~~~~~~[eg^c]~~~~~[eg^c][fa^c]~~~~~~~~[fG^d][fG^d][fG^d]~~[fG^d]~[eg^c]________
#2(q=8)(o=2)(p=33)
{{basspatt1}}{
xxxxxxxx
}
{{basspatt1}}(cvfvGccvfvGccvfvGccvf)(vGGG~~G~)c________
#3(q=8)(o=3)(p=80)
|:c^cc^cc^cc^c:|13ccc__c_c_________
#4(q=4)(o=6)(p=80) c~~(:cc)~~~~c~(:_c_c)~~~~c~~(:cc)~~~~c~(:_c_c)~~~~c~~(:cc)~~~~c~(^(:_c_c)~~~~c~~(:cc)~~~~(:ddd__d_c)____)
#10(q=8)(o=2)(p=1)
|:(:[cF]FFF):|27|:(:[cdF]FFF):|3 |: (:[cF]FFF[cdF]FFF):|11
[[
[cd][cd][cd]~F[cd]F[cd]~~~~~~~~|
^C~~(q=16)b+b(q=8)a~~~__(q=16)(^cccc)bbbbaaaa(q=8)
]]
저는 6년 전에 비슷한 고민으로 작업한 프로젝트가 있습니다.
http://nupamore.github.io/Markdown-Music-Notation/examples/
코딩에 대해 잘 알지 못 하던 시절 아이디어만으로 만들고 버려졌는데, 이렇게 MIDI export까지 출력하는 프로젝트를 보니 너무 반갑네요.
제가 생각했던 다른 아이디어 중에 최근에 emoji가 보편적으로 사용되니 그걸 문법으로 사용해도 좋을 것 같다는 생각을 했었어요.
(p=🎻) 를 41번으로 치환해주던가 하면 재밌을 것 같습니다.
혹시 제 아이디어들에서 영감을 받아 도움이 된다면 기쁠 것 같아 글 남겨요.
MMD를 사용하는 새로운 게임이 개발중이라면, 소리글을 지원하길 바래봅니다.
((bpm=80))
(o=0) 솔라시
((bpm=90))
(o=1) 시도레미파~~
No plays o=1 시
Parallelization([[ | ]]) 안, Staccato(<. >) 안에 Tie(~)가 들어갔을 경우에 양 성부의 길이가 서로 일치함에도 Parallelization length mismatch 오류가 발생합니다.
[[ <.c~> | c~ ]]
에서 Parallelization length mismatch 오류가 발생합니다.
Staccato를 여는 꺾쇠와, Sforzando를 여는 꺾쇠 사이에 음표가 들어갈 경우에,
Staccato와 Sforzando가 모두 영향을 주는 구간의 박자 오류가 발생합니다.
위 두 문법의 순서를 바꾼다거나 하는 추가적인 테스트는 실행해보지 않았기에, 관련된 추가적인 문제가 있을 수 있습니다.
(q=2)<.vAvF<![vAC]_[vAF]_>>
와
(q=2)<.vAvF><!<.[vAC]_[vAF]_>>
의 쏘리글 컴파일 결과([vAC]_[vAF]_
부분)가 서로 다릅니다.
Line 36의 (s=127), Line 48의 (s=0)이 존재할 때와 존재하지 않을 때에 박자의 차이가 발생합니다.
(3_ab)
와 같이 Triplet
안의 첫 번째 위치에 쉼표가 위치하면 오류가 발생합니다.
Quintuplet
,Septuplet
에서는 정상 작동함을 확인하였습니다.
|:
(^ defed
/1 defed )
:| /2 (^cdefgab^c~~~)
와 같이 Ranged octave up(^ )
안에 Prima volta(/1)
가 포함될 경우, 프로그램이 오류를 발생시킵니다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.