κ²μ κ°λ°μ νλ€λ³΄λ©΄, νλ νλ λ 벨 λ°μ΄ν°λ₯Ό μ§μ μ λ ₯νλ κ²μ΄ μ§μ λ¨Έλ¦¬κ° λ λκ° μμ΅λλ€.
κ·Έκ²μ΄ csvλ jsonμ μ΄μ©νλ κ²μ΄λ, κ²μ μμ§μμ μ§μ μ λ ₯νλ κ²μ΄λ,
무μ§μ₯ λ§μ λ°μ΄ν°μ ν μ€νΈλ₯Ό μμ±νκ±°λ λλκ·Έ μ€ λλ‘μΌλ‘ κΎΈμκΎΈμ λ°μΈλ©νλ κ²μ λΆλͺ μ¦κ±°μ΄ μΌμ μλλλ€.
νΉν λ¦¬λ¬ κ²μμ μ€μ κ²μ νλ μ΄μλ λ¬λ¦¬ νλ©΄μ μΈ λ°μ΄ν°κ° λ§κ²λ μ μ² ν λ°λ³΅λλ ꡬ쑰μ΄κΈ° λλ¬Έμ,Β
μ§μ νλ νλ μ λ ₯νλ€λ κ²μ μ¬λ―Έκ° μμ΄μ λ¬΄μ² μ΄λ €μ΄ μΌμ λλ€.
κ·Έλμ λ§λ€μ΄μ§ κ²μΈ μΉ λΈλΌμ°μ μμ μλνλ ν¨ν΄ μλν°μ λλ€.
λ‘컬μ΄λ μλ²μμ node.jsκ°μ μΉ μμ§μΌλ‘ κΈ°λν μλ μμ§λ§,Β
λ³λ μλ² μν¬ μλ μ μ μλΉμ€λ‘ ꡬμ±ν΄ κΉνλΈ νμ΄μ§λ‘ λ°°ν¬νμ΅λλ€.
μΉ λΈλΌμ°μ λ₯Ό μ΄μ©ν λ 벨 μλν°λ μ±λ₯λ©΄μμλ λ©λ¦¬νΈκ° μμ§λ§, κ°λ°μ΄ λΉ λ₯΄κ³ μ΄μ©μμ μ κ·Όμ±μ΄ μ’λ€λ μ μ΄ λ©λ¦¬νΈμ λλ€.
λ ΈνΈλ ν¬κ² Tab, Direction, Bothμ 3 μ’ λ₯λ‘ λλμ΄μ§κ³
λ‘±λ ΈνΈλ₯Ό μν κ° λ ΈνΈμ Long νμ , μΆκ°λ‘ λ³μμ΄λ μ΄λ²€νΈ μ μ΄λ₯Ό μν΄μλ§ μ‘΄μ¬νλ Node νμ μ΄ μμ΅λλ€.
κ²½λ‘λ Node νμ λ ΈνΈμ λ°©ν₯ μ μ΄κ° μλλΌλ©΄ Directionμ μμΉμ λ°©ν₯λ§μΌλ‘ κ·Έλ €μ§λ―λ‘,
ν¨ν΄ λμμ΄λλ€μ Direction λ ΈνΈλ₯Ό μ΄μ©ν΄ μμ μ μ΄μΈλ¦¬λ κ²½λ‘λ₯Ό λ§λ€ μ μμ΅λλ€.
μ΄ ν¨ν΄ μλν°λ κ° λ ΈνΈ λ³ bpm, λ 벨, λΆλ°κ³Ό μ μμ μΈ μ λ° λ³΄μ λ±μ μ€μ μ λͺ¨λ μ§μνκ³ ,
λ°μ΄ν° λ³κ²½ μ λΈλΌμ°μ μ€ν 리μ§μ μλ μ μ₯νλ©°, μΈκ²μκ³Ό μ μ¬ν ν리뷰 νλ μ΄λ₯Ό μ 곡ν©λλ€.
건λ°νμ΄ μλ κ²½λ‘ μλ₯Ό μΊλ¦ν°κ° μ΄λνλ ννμ λ¦¬λ¬ κ²μμ΄λ―λ‘, μ΄λ¬ν ν리뷰 κΈ°λ₯μ νμμμ΅λλ€.
μμ λ ΈνΈ κΈ°λ₯λ§μΌλ‘λ μ ν¬ κ²μμ κ·Όλ³Έμ΄ λλ κ²½λ‘μ λ ΈνΈ λ°°μΉλ κ°λ₯νμ§λ§,
μΉ΄λ©λΌ μ‘°μμ΄λ λ°°κ²½ μ΄λ―Έμ§ λ³κ²½, μκ°μ μΈ μ λ©Έ ν¨κ³Όλ κ΄μ ν¨κ³Ό νμ±ν λ±μ νΉμ ν¨κ³Όλ μ€νν μ μμμ΅λλ€.
νΉν, λμΈ ν΄μλμΈ 16:9 λΉμ¨μμ μ, μλμ μμΉν λ ΈνΈκ° λ무 λ¦κ² νλ©΄μ λ±μ₯ν΄ λΆμΎκ°μ μ£Όλ μ£Όμ μμΈμ΄ λμμ΅λλ€.
λ°λΌμ μ€μΈ, μ€μμκ³Ό κ°μ μΉ΄λ©λΌμν¬λ₯Ό μ§μνκ³ μ μ΄λ²€νΈ κΈ°λ₯ κ°λ°μ μ°©μνμ΅λλ€.
μ²μμλ ν΄λΉ λ ΈνΈμ μ€ννκ³ μ νλ μ΄λ²€νΈλ₯Ό μΆκ°νλ μμΌλ‘ λ°μ΄ν° ꡬ쑰λ₯Ό μ€κ³νλ € νμ§λ§,
μ΄ κ²½μ° μ€μ json λ°μ΄ν° λΏλ§ μλλΌ μλν°μμλ κ·Ήν λΉμ§κ΄μ μΈ ννλ‘ λ³΄μ¬μ‘μ΅λλ€.
κ·Έλ΄ μ λ°μ μλ κ²μ΄, κΈ°μ‘΄ λ°μ΄ν° μλμ μΆκ°μ μΈ λ°μ΄ν° ꡬ쑰λ₯Ό νμνλ κ²μ΄λκΉμ.
λν λμμ λ λλ§ ν΄μΌν κ²μ΄ λ§μμ§λ€λ κ²μ μκ·Έλλ μμ’μ μ±λ₯μ μΉ μλν°λ₯Ό λμ± λλ¦¬κ² λ§λ λ€λ λ»μ΄μμ΅λλ€.
λ°λΌμ κΈ°μ‘΄μ λ ΈνΈ λ°μ΄ν°λ NoteList, μ€νν μ΄λ²€νΈ λ°μ΄ν°λ EventListλ‘ λλμ΄μ jsonμ μ μ₯λλλ‘ νμ΅λλ€.
μΉ μλν°μμλ λ¬Όλ‘ λ 리μ€νΈλ₯Ό νμΌλ‘ λλμ΄ νμνλλ‘ νμ¬ λλλ§κ³Ό μ°μ° λΆνλ₯Ό κ°λ₯ν μ΅μννμ΅λλ€.
noteλ€μ pre-delayμ bpm, subdivision(λΆλ°) κ°μ κΈ°λ°μΌλ‘νλ beat κ°μ μ€μ νλλ‘ νμ΅λλ€.
μ¦, 120 bpmμ 16 subdivisionμ pre-delayκ° 30msλΌλ©΄, 10beatμ ν΄λΉνλ μκ°μΒ
10(beat) * 60(μ΄) / 120(bpm) / 16(subdivision) + 0.03(pre-delay) = 0.3155μ΄μ ν΄λΉνλ μμ λλ€.
μ΄λ κ² νμ λ μ 리ν μ μ, λ°λ‘ μκ°μ κ³μ°νμ§ μμλ BPMκ³Ό subdivision κ°μ λ°λΌμ κ²°κ³Ό μκ°μ΄ λμΆλλ€λ μ μ λλ€.
μκ°μΌλ‘ μ λ ₯ν μ μλ€λ©΄ μ λ ₯μ μμ λλ λμμ§κ² μ§λ§ μ¬λμ΄ μ§μ μμ μ BPMκ³Ό subdivisionμ κ³ λ €ν΄μ μκ°μ μ λ ₯ν΄μΌν ν λκΉμ.
νμ§λ§ eventλ€μ μκ°μΌλ‘ μ λ ₯ν μ μλλ‘ νμ΅λλ€.
μΌλ¨ note λ€μ λ§λ€μ΄ λκ³ μμ νλ κ²μ΄ μ μ μ΄κΈ° λλ¬Έμ κ·Έ λ ΈνΈμ μκ°μ κ°μ Έμμ μ λ ₯νλ©΄ λ©λλ€.
λν μ΄λ²€νΈλ κ·Έ μκ°μ νμ μ΄ μ΄λ£¨μ΄μ§λ κ²μ μλκΈ° λλ¬Έμ μλμ λ°λΌμ μμ μ λ°μμ λ€λ₯΄κ² μ¬μλλ μ°μΆλ μ§μν΄μΌ νκΈ° λλ¬Έμ λλ€.
eventμ λ°μ΄ν° ꡬ쑰λ Type - id - parameters - param(key-value)λ‘ κ΅¬μ±λμ΄ μμ΅λλ€.
Type, idλ μλν°μ κ²μ μμͺ½μ enumμΌλ‘ μ μλμ΄ μμ΅λλ€.
typeμ μΉ΄λ©λΌ, λ°°κ²½ λ±μ μ΄λ²€νΈμ μΉ΄ν κ³ λ¦¬λ₯Ό,
idλ μ€μΈ, μ€μμ, μ΄λ―Έμ§ λ³κ²½ λ±μ μΉ΄ν κ³ λ¦¬ λ΄λΆμμ μ²λ¦¬ν ꡬ체μ μΈ μ΄λ²€νΈ λ΄μ©μ μ μν©λλ€.
parametersλ μ¬μ μ μκ° λμ΄ μμ§λ μμ§λ§, μ΄λ²€νΈλ₯Ό μ²λ¦¬ν λ νμν νλΌλ―Έν° ν€μ ν¨κ» κ°μ μ λ ₯νλ©΄ κ·Έμ λ§κ² μ²λ¦¬λλ μμ λλ€.
μ΄μ κ²μμμ μ§μ λ μκ°μ΄ λμμ λ μ€νλλ event μμ€ν μ μν λ°μ΄ν° κ΅¬μ‘°κ° μμ±λμμ΅λλ€.
κ²μ μ΄λ²€νΈμ κ½, λ€μ΄μΌλ‘κ·Έλ₯Ό ꡬνν©λλ€.
λ¦¬λ¬ κ²μ μ€κ°μ λ€μ΄μΌλ‘κ·Έ μ΄λ²€νΈλ₯Ό??? μ΄κ² λ¬΄μ¨ κ°μλ¦°κ°μ κ°λ°μλ?
μ΄λ κ² μκ°νμ λΆλ κ³μκ² μ§λ§, νν 리μΌμ μν΄ λ§λ€μ΄μΌ νμ΅λλ€.
νν 리μΌλ§μ μν μλ‘μ΄ μμ€ν μ λ§λ€ μλ μκ² μ§λ§, κ·Έ νΈμ΄ μ€νλ € μκ°μ΄ λ κ±Έλ¦°λ€λ νλ¨μ΄μμ΅λλ€.
κ²λ€κ° μ μ© μμ€ν μ μ μ¬ν μν©μμμ μ¬μ¬μ©λ μ΄λ ΅κ΅¬μ.
νν 리μΌμ μν΄ λ§λλ κ²μ΄κΈ°λ νμ§λ§, μ€ν 리 μ§ν λ±μμ μΆ©λΆν μ¬μ©ν μ¬μ§κ° μλ€κ³ μκ°ν©λλ€.
μ΄ μμ€ν μ νΉν μ΄λ €μ λ λΆλΆμ, κΈ°μ‘΄μ μμ μκ°μ λ°λΌμ μμ§μ΄λ κ²μ μμ€ν μ¬μ΄μμ μμ°¨ μ²λ¦¬λλ λν μνμ€λ₯Ό λ£μ΄μΌ νλλ°,
κ·Έ λ°μ΄ν°κ° κΈ°μ‘΄ λ ΈνΈ, μ΄λ²€νΈ λ°μ΄ν° μμ μΉμ΄μ Έμ λμμΌ νλ€λ λΆλΆμ΄μμ΅λλ€.
μ΄ λ λ°μ΄ν°λ λͺ¨λ μκ° κΈ°λ°μ λ°μ΄ν°λ‘, μ€ν μκ°μ΄ κ°μΌλ©΄ λμμ μ²λ¦¬ν λΏμ΄κ³ μμλ₯Ό κΈ°λ€λ¦¬λ κΈ°λ₯μ μμ΅λλ€.
μ²μμλ κΈ°μ‘΄ μ΄λ²€νΈ μμ€ν λ§μΌλ‘ μ²λ¦¬ν λ°©λ²μ΄ μμκΉ κ³ λ―ΌνμΌλ,
κΈ°μ‘΄μ λ°©μμΌλ‘λ μμ°¨μ μΌλ‘ μ²λ¦¬νκΈ° μν΄μλ λν λ°μ΄ν° νλ νλμ μ²λ¦¬ μμ indexλ₯Ό λ£μ΄μ€μΌ νκ³ ,
λΆνμνκ² μ΄λ²€νΈ νλκ° κΈΈμ΄μ Έμ κ°λ μ±μ λ§€μ° ν΄μΉλ€λ λ¬Έμ κ° μμμ΅λλ€.
λν κ°μ μκ°μ μ¬λ¬ μ΄λ²€νΈλ₯Ό μ€νμν€κ² λλλ°, μ΄κ²μ μμλλ‘ μ²λ¦¬νκΈ° μν΄ indexλ₯Ό νμ±ν΄μ μ¬μ λ ¬νλ λ±μ μ²λ¦¬κ° λ§€μ° λ²μ‘μ€λ½κ² λκ»΄μ‘μ΅λλ€.
κ²°κ³Όμ μΌλ‘ μ νν λ°©λ²μ, parametersλ₯Ό λ체νλ dialogμ© λ°μ΄ν° ꡬ쑰λ₯Ό λ§λλ κ²μ΄μμ΅λλ€.
event λ΄μ λ λ€λ₯Έ ꡬ쑰μ eventκ° μ‘΄μ¬νλ λ°©μμ΄μ§μ.
μ΄λ²€νΈμμ system - dialogλ₯Ό μ ννλ©΄, κΈ°μ‘΄ μ΄λ²€νΈ λ³μλ₯Ό μ λ ₯νλ parameters νλ λμ dialogItems νλκ° νμλ©λλ€.
μ¦, κ²μμμ dialog μ΄λ²€νΈκ° μ€νλμμ λλ parameters λμ dialogItemsμ μ λ ₯ν κ°μ μ΄μ©ν΄μ μ΄λ²€νΈλ₯Ό μ²λ¦¬ν©λλ€.
dialogItemsμμλ ν μ€νΈ μ€μ , μΊλ¦ν° μ€μ , νμ μ€μ , νΉμ μ§μ ν¬μ»€μ€μ κ°μ κΈ°λ³Έμ μΈ νν 리μΌ, λ€μ΄μΌλ‘κ·Έ κΈ°λ₯μ μ νν μ μλλ‘ λμ΄μμ΅λλ€.
λν νΉμ ν€κ° μ λ ₯λ λκΉμ§ κΈ°λ€λ¦¬λλ‘ νλ κΈ°λ₯μ λ§λ€μ΄ νν λ¦¬μΌ μ νλ μ΄μ΄μ μ¬λ°λ₯Έ ν€ μ λ ₯μ λκΈ°ν μ μλλ‘ νμ΅λλ€.
μ΄λ κ² ν΄μ λ¦¬λ¬ κ²μ μ€κ°μ νμλλ λ€μ΄μΌλ‘κ·Έ μμ€ν κΉμ§ ꡬνμ μλ£νμ΅λλ€.
μ§κΈκΉμ§ κ°λ°ν κ²μ μ¬κΈ°κ° λμ΄μ§λ§,
μλ§ μμΌλ‘λ μλ‘μ΄ μꡬμ¬νμ λμνκΈ° μν΄μ λ€μ ν λ² λ°μ΄ν° ꡬ쑰μ μμ€ν ꡬνμ΄ νμν λκ° μ¬κ²λλ€.
κ·Έ λ, μ§κΈκΉμ§ λ§λ κ²μμ μ λΆ λ€μ λ§λ€μ΄μΌ νλ μν©λ§μ μ€μ§ μκΈ°λ₯Ό κ°μ ν λ°λλλ€...
λ ΈνΈκ° λ§μκ² μλλ©΄ λ ΈνΈ perfect λ λ νλ©΄ νλ€λ¦Ό μ‘°κΈ μμΌλ©΄ μ’ λ μΎκ°μ΄ μλ μΆκΈ°λ νκ³ - dc App
μΊλ¦ν°κ° νμ μ μ΄λΌ νλ€λ¦¬λ©΄ λΆλΆλͺ νλ€λ μκ²¬μ΄ μμ΄μ μ‘°μ¬μ€λ½λ€μ
κ³ μνμλλ€