Natural Preference for Minification

    lrc-kit
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.1 • Public • Published

    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

    Keywords

    Install

    npm i lrc-kit

    DownloadsWeekly Downloads

    18

    Version

    1.1.1

    License

    MIT

    Unpacked Size

    40 kB

    Total Files

    28

    Last publish

    Collaborators

    • raidou