1.1.1 • Published 6 years ago

lrc-kit v1.1.1

Weekly downloads
70
License
MIT
Repository
github
Last release
6 years ago

LRC Kit

NPM version NPM downloads Build Status

lrc parser and runner

Install

npm

npm i -S lrc-kit

Lrc

Usage

import

import { Lrc } from 'lrc-kit';

parse lyric

var lrc = Lrc.parse(`
  [ti:Title]
  [ar:Lyrics artist]
  [00:09.010][00:30.000]i guess you're my creep tonight
`)

lrc.info
// { ti: 'Title', ar: 'Lyrics artist' }

lrc.lyrics
// [{
//   content: "i guess you're my creep tonight",
//   timestamp: 9.01
// }, {
//   content: "i guess you're my creep tonight",
//   timestamp: 30.0
// }]

make lyric

var lrc = new Lrc()
lrc.info['ar'] = 'Lyrics artist'
lrc.lyrics.push({
    content: "i guess you're my creep tonight",
    timestamp: 9.01,
})
lrc.lyrics.push({
    content: "i guess you're my creep tonight",
    timestamp: 30.0,
})

lrc.toString()
// [ar:Lyrics artist]
// [00:30.00][00:09.01]i guess you're my creep tonight

lrc.toString({combine: false})
// [ar:Lyrics artist]
// [00:09.01]i guess you're my creep tonight
// [00:30.00]i guess you're my creep tonight


lrc.offset(-3)
lrc.toString()
// [ar:Lyrics artist]
// [00:27.00][00:06.01]i guess you're my creep tonight

API

Lrc.parse(text): parse lyirc text and return a lrc object

Lrc object

  • lrc.info lyric info plain object
{
    'ar': 'Lyrics artist',
    'al': 'Album where the song is from',
    'ti': 'Lyrics (song) title',
    'au': 'Creator of the Songtext',
    'length': 'music length, such as 2:50',
    'by': 'Creator of the LRC file',
    'offset': '+/- Overall timestamp adjustment in milliseconds, + shifts time up, - shifts down',
    're': 'The player or editor that created the LRC file',
    've': 'version of program',
}
  • lrc.lyrics lyric array
[
    {
        content: "i guess you're my creep tonight",
        timestamp: 9.01,
    },
    {
        content: "The way you knock me off my feet",
        timestamp: 12.08,
    },
]
  • lrc.offset(offset) offset all lyrics

  • lrc.toString(options) generate lyric string

    • options.combine (boolean) lyrics combine by same content
    • options.sort (boolean) lyrics sort by timestamp
    • options.lineFormat (string) newline format

Runner

Usage

import

import { Runner } from 'lrc-kit';

run

var runner = new Runner(Lrc.parse(...))

audio.addEventListener('timeupdate', () => {
    runner.updateTime(audio.currentTime)
    var lyric = runner.curLyric()
    // or
    var lyric = runner.getLyric(runner.curIndex())

    lyric
    // {
    //    content: "i guess you're my creep tonight",
    //    timestamp: 9.01
    // }
})

// Modify lyric
runner.lrc.lyrics.push({
    content: "Now i can't tell my left form right",
    timestamp: 17.3,
})
runner.lrcUpdate() // Must call lrcUpdate() when update lyrics

API

new Runner(lrc = new Lrc(), offset=true)

  • lrc lrc object
  • offset parse lrc.info.offset if offset is true

Runner object

  • runner.setLrc(lrc) reset the lrc object
  • runner.lrcUpdate() call it when lrc updated
  • runner.timeUpdate(timestamp) time update
  • runner.getInfo() get runner.lrc.info
  • runner.getLyrics() get runner.lrc.lyrics
  • runner.curIndex() current index
  • runner.curLyric() current lyric

License

MIT

1.1.1

6 years ago

1.1.0

6 years ago

1.0.0

6 years ago

0.4.1

8 years ago

0.4.0

8 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.2

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.3

10 years ago

0.1.2-alpha3

10 years ago

0.1.2-alpha2

10 years ago

0.1.2-alpha1

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago