Parses the song info & lyrics from various lyric presentation software file formats. You can convert between different formats and download the converted files.
Input | Output | |
---|---|---|
ChordPro | ✅ | ✅ |
EasyWorship - Issue #3 | ⭕ | ⭕ |
JSON | ✅ | ✅ |
MediaShout 7 | ✅ | ✅ |
OpenSong - Issue #5 | ⭕ | ⭕ |
OpenLyrics | ✅ | ✅ |
Plain Text | ✅ | ✅ |
ProPresenter v4 | ✅ | ⭕ |
ProPresenter v5 | ✅ | ✅ |
ProPresenter v6 | ✅ | ✅ |
ProPresenter v7💾 | ⭕ | ⭕ |
SongPro | ✅ | ✅ |
SongShow Plus v7 | ✅ | ⭕ |
SongShow Plus v8 | ❓ | ⭕ |
SongShow Plus v9 | ❓ | ⭕ |
Want to help out and improve LyricConverter? Thanks!
You'll need to be familiar with Angular and TypeScript, which are needed to run this project. Run npm install @angular/cli typescript -g
to install the global tools you'll need.
Clone this project and run npm install
. Afterwards run ng serve
to start the development server, you can see it running at http://localhost:4200/
. The application will automatically reload if you change any of the source files.
I recommend you use VSCode and install the recommended extensions when you open this project in it.
ng lint
to report on any potential code issuesng test
to run the unit tests. Please add tests for any new features or changes you make.npm run test-coverage
to generate a test coverage report. View the generated /coverage/lyric-converter/index.html
file to see specifics about uncovered areas of code if needed.ng build
to build the project in production mode which is stored in the dist/
directory.npm run prerender
to generate the prerendered HTML pages for each route - this is what is deployed to productionAnything added to this project will most likely be a new format for LyricConverter to either be able to read or write. So all you need to worry about is dealing with the inputs and outputs which are generalized TypeScript classes and not specific to the Angular framework at all.
ParserService
at /app/convert/parser/parser.service.ts
for the Angular app to manage./app/convert/inputs/*
folder that implement the IInputConverter
interface.doesInputFileMatchThisType()
method which returns a boolean
. Typically this only needs to check the file extension for most file types.extractSongData()
method to get the song information and lyrics converted to a generic ISong
format.ISong
format, all of these objects are passed to the output type that the user has selected
/app/convert/outputs/*
folder that implement the IOutputConverter
interface.ISong
representation of the song is passed to convertToType()
which manipulates it into a string
representation of the file content for whatever the desired format isstring
is then put into an IOutputFile
object and passed along to the UI for conversion to a real file to be downloaded/app/convert/inputs/
directory in your command line (in VSCode right click the folder > "Open in integrated terminal") and run ng generate class input-type-whatever
and Angular will generate a new class file named input-type-whatever.ts
and a test file input-type-whatever.spec.ts
export class InputTypeWhatever implements IInputConverter
and add the required properties and methodsParserService
at /app/convert/parser/parser.service.ts
and add this new input type to the inputConverters
arrayISong
format.ISong
object/app/convert/outputs/
directory in your command line (in VSCode right click the folder > "Open in integrated terminal") and run ng generate class output-type-whatever
and Angular will generate a new class file named output-type-whatever.ts
and a test file output-type-whatever.spec.ts
export class OutputTypeWhatever implements IOutputConverter
and add the required properties and methodsParserService
at /app/convert/parser/parser.service.ts
and add this new input type to the outputConverters
arrayISong
object and create a string
representation of whatever the file content of this format looks like and pass that off as an IOutputFile
object.
Add tests to verify that this new output type can take all kinds of ISong
objects and convert them to the expected output string
I am not in any way affiliated with any of the companies or organizations that make any of the lyric file formats or presentation software listed here