Skip to content

iodes/Lyrical

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

Synchronized Lyrics Library For .NET
고급 싱크 가사를 읽고 작성할 수 있는 통합 라이브러리를 제공합니다.

소개

본 라이브러리는 문자 단위 매핑을 지원하는 .SLR 포맷을 사용합니다.
포함된 컨버터를 통해 기존의 .LRC 포맷의 가사를 손쉽게 변환할 수 있으며,
제공되는 가사 편집기를 통해 새로운 가사 문서를 작성 및 매핑할 수 있습니다.

사용 방법

기존 가사 읽기

다음과 같이 객체의 생성자에 파일 경로를 입력합니다.
자동으로 파일 내용을 분석하여 문서 객체를 반환합니다.

var document = new LyricsDocument("Lyrics.slr");

가사 객체 저장

다음과 같이 최상위 객체를 문자열로 변환할 수 있습니다.

File.WriteAllText("Lyrics.slr", document.ToString());

가까운 문장 찾기

가사 문서 객체에서 제공된 시간과 가장 가까운 가사 문장을 가져옵니다.

var sentence = document.GetSentence(TimeSpan.FromMilliseconds(16580));

가까운 문자 찾기

가사 문서 객체에서 제공된 시간과 가장 가까운 가사 문자를 가져옵니다.

var character = document.GetCharacter(TimeSpan.FromMilliseconds(16580));

가사 컨트롤 사용

기본 내장된 가사 컨트롤을 통해 가사를 표시할 수 있습니다.
Lyrical.Controls의 ILyricsProvider를 통해 재생 시간을 제공하는 객체를 생성합니다.

class LyricsProvider : ILyricsProvider
{
	public TimeSpan GetPosition()
	{
		return SoundEngine.Position;
	}
}

창 또는 페이지에 LyricsView 컨트롤 객체를 그린 후 다음과 같이 초기화를 진행합니다.

LyricsView.Provider = new LyricsProvider();
LyricsView.Document = new LyricsDocument("Lyrics.slr");

가사 포맷

포맷의 특징

  • 다국어 가사 지원
  • 문자 단위로 싱크 가능
  • 가사 원문에 발음 및 해석 싱크 가능

포맷의 기본 구조

[TI:Starlog]
[AL:Starlog]
[AR:ChouCho]

[00:16.58]
[LR:どんな明日が]
[PR:돈나 아시타가]
[TR:어떤 내일을]

[00:18.72]
[LR:欲しかったんだろう]
[PR:호시캇탄다로오]
[TR:원했던 걸까]

문장만 싱크된 가사 포맷의 기본 구조입니다.
가사 포맷은 기본적으로 다음과 같은 규칙을 가지고 잇습니다.

헤더

  • TI는 곡의 제목입니다.
  • AL은 곡의 앨범 이름입니다.
  • AR는 곡의 연주자 이름입니다.
  • 헤더 정보는 중복으로 기록할 수 없습니다.
  • 헤더 정보는 문서의 상단에 기록되어야 합니다.

가사

  • LR은 가사의 원어입니다.
  • PR은 가사의 발음입니다.
  • TR은 가사의 해석입니다.
  • 원어는 반드시 입력되어야 합니다.
  • 발음과 해석은 입력하지 않을 수 있습니다.
  • 헤더를 제외한 모든 블록은 가사 영역입니다.
  • 각 영역은 줄바꿈 문자를 통해 구분되어야 합니다.
  • 가사의 시작은 반드시 문장의 시작 시간이 기록되어야 합니다.

매핑된 포맷의 구조

[TI:Starlog]
[AL:Starlog]
[AR:ChouCho]

[00:16.58]
[00:16.58~00:16.66-L0-P0-T0]
[00:16.67~00:16.93-L1-P0-T0]
[00:16.94~00:17.29-L2-P1-T1]
[00:17.30~00:17.47-L3-P4-T3]
[00:17.47~00:18.18-L4-P5-T4]
[00:18.19~00:18.54-L5-P6-T5]
[LR:どんな明日が]
[PR:돈나 아시타가]
[TR:어떤 내일을]

[00:18.72]
[00:18.72~00:18.90-L0-P0-T0]
[00:18.90~00:19.43-L1-P1-T0]
[00:19.44~00:19.52-L2-P2-T1]
[00:19.52~00:19.97-L3-P2-T1]
[00:19.97~00:20.10-L4-P3-T3]
[00:20.10~00:20.68-L5-P3-T3]
[00:20.69~00:20.86-L6-P4-T4]
[00:20.87~00:21.04-L7-P5-T4]
[00:21.05~00:21.58-L8-P6-T5]
[LR:欲しかったんだろう]
[PR:호시캇탄다로오]
[TR:원했던 걸까]

각각의 문자까지 매핑된 포맷의 구조입니다.
본 형식은 기본 구조의 규칙에서 다음과 같은 규칙이 추가됩니다.

  • 위치는 0부터 시작합니다.
  • Ln은 매핑된 원어 문자 위치입니다.
  • Pn은 매핑된 발음 문자 위치입니다.
  • Tn은 매핑된 발음 문자 위치입니다.
  • 원어 매핑은 반드시 입력되어야 합니다.
  • 발음 및 해석 매핑은 입력하지 않을 수 있습니다.
  • 문자의 시작 시간과 끝시간을 명확히 표시해야 합니다.
  • 매핑된 문자의 위치값은 이전 매핑보다 작을 수 없습니다.
  • 동일 문자 위치를 중복 매핑한 경우 시작 및 끝 시간이 합쳐집니다.

이러한 규칙들을 통해 매핑시 다음과 같이 추가 작업이 가능합니다.

// 00:16.58에서 00:17.29까지 'どんな'가 표시됩니다.
[00:16.58~00:17.29-L2]
[LR:どんな明日が]
// 중복 매핑을 통해 원어 'かっ'이 표시되는
// 00:19.44에서 00:19.97까지 발음은 '캇'이 표시됩니다.
[00:18.72~00:18.90-L0-P0]
[00:18.90~00:19.43-L1-P1]
[00:19.44~00:19.52-L2-P2]
[00:19.52~00:19.97-L3-P2]
[00:19.97~00:20.10-L4-P3]
[LR:欲しかったんだろう]
[PR:호시캇탄다로오]

About

Synchronized Lyrics Library For .NET

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages