2014-01-29 4 views
3

현재 기타 코드와 함께 노래의 가사를 표시해야하는 iPhone 앱에서 작업하고 있습니다. 화면 출력은 다음과 같이 유사하다 :iOS에서 가사 및 코드 서식 지정

enter image description here

난 아직도 트랙에 데이터 (가사, 코드 및 타임 스탬프의 종류를 수행하는 형식의 최선의 유형을 어떻게 될지 궁금

각 줄마다). 나는 형식이 방법을 JSON 파일을 사용하는 방법에 대한 생각 :

{ 
     "lyrics": [ 
      { 
       "text":"This is one line of lyrics", 
       "startTimestamp":5000, 
       "endTimestamp":5800, 
       "chords":[ 
        { 
         "symbol":"A", 
         "position":0.2 
        }, 
        { 
         "symbol":"D#", 
         "position":0.8 
        } 
        ] 
      }, 
      { ... }, 
      { ... } 
     ] 
} 
또 다른 옵션은 Chordpro ​​형식으로 사용했을

다음을 동기화하기 위해 타임 스탬프를 수행하지 않습니다 http://tenbyten.com/software/songsgen/help/HtmlHelp/files_reference.htm

그러나 형식의이 종류를 음악으로 가사를 표시하고 iOS에서 구문 분석하는 데 약간 고통스러워 보입니다. HTML과 같은 다른 흥미로운 옵션이 있습니까?

앱에 12 트랙 만 가사가 포함됩니다.

답변

1

이 질문에 대해서도 흥미가 있습니다. HTML, CSS 및 JavaScript 만 사용하여 내 자신의 카탈로그를위한 '서버가없는'웹 페이지를 만들고 있습니다.

JSON에서 코드/서정 정보를 저장하는 방법을 찾고 있습니다. 나는이 사고 방식에 익숙하지 않지만 텍스트 줄을 연으로 구성하고 "Chorus, Verse, Intro ..."로 태그를 지정하고 코드 진행에 매핑 (OOP 접근 방식과 비슷)하기를 바라고 있습니다.

지금까지 나는 Music XML 물건을 많이 보았지만 더 공식적인 악보로 보입니다.

지금 당장은 텍스트를 HTML에 저장하고 'pre' 태그로 렌더링하는 것으로 실험하고 있습니다.

간단한 해결책은 정확한 단어를 코드 타이밍에 무시하고 적절한 코드를 가사의 적절한 줄 위에 렌더링하는 것입니다.

[A D#] 
    'This is one line of lyrics' 

또는 ... 어쩌면의 값은 길이 12 말하는 가사의 각 라인에 할당 할 수있을 (부트 스트랩 그리드처럼, 그러나 제수 포함 라인 당 비트의 수에 기초를 수) 다음 각 코드를 할당 위의 줄을 채우기위한 '슬롯'?

그래서

Em7  G 
    Today is gonna be the day 
      Dsus4     A7sus4 
That they're gonna throw it back to you, 

은 같은 것이 말도 안되는 답변을

{ 
    "stanza1": 
     { 
      "type": "verse", 
      "line1":{ 
       "lyric": "Today is goinna be the day that they're", //4 beats subdivided = 8 length 
       "start_beat": 1, //half a beat after Em7 chord 
       "end_beat": 7}, 
      "line2":{ 
       "lyric": "goinna throw it back to you" 
       "start": 8 //goinna is right on beat 5, (think modulo 4) 
       "end": 12} 
     } 
      "verse_chords":[ 
       { 
        "symbol":"Em7", 
        "chord_beat":0 //starts at very beginning 
       }, 
       { 
        "symbol":"D#", 
        "chord_beat":4 
       }, 
       { 
        "symbol":"Dsus4", 
        "chord_beat":8 
       }, 
       { 
        "symbol":"A7sus4", 
        "chord_beat":12 
       }, 

       ], 

    bla bla bla 
    ] 
} 

죄송합니다 (beat_of_measure =/2 % 4를 이길 경우)!