GithubHelp home page GithubHelp logo

samm82 / worshiplist Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 39.72 MB

A program that will generate a chord sheet for a certain list of songs specified.

License: BSD 3-Clause "New" or "Revised" License

Python 96.48% Makefile 3.52%
music chords worship chord-sheet python python-docx songs chord-charts chord-chart song-files

worshiplist's Introduction

About Me

Hello! My name is Samuel Crawford; I have a B.Eng. in Software Engineering from McMaster University, and I am back at McMaster for my M.A.Sc., working on Drasil. I am the recipient of a Schulich Leader Scholarship for community leadership and academic excellence, and I strive to put my skills to good use wherever I find myself.

Skills

  • My areas of expertise are object-oriented design, functional programming, and software testing
  • My main languages are Python, Haskell, LaTeX, Dart, and Java
  • I am comfortable with common tools and frameworks like Git, Flutter, pytest, and Make
  • I have experience with MATLAB, Bash, C, C++, and SQL

Sam's GitHub stats

worshiplist's People

Contributors

dependabot[bot] avatar samm82 avatar

Watchers

 avatar

worshiplist's Issues

Reduce duplication in song files

I shouldn't have to store the song files in two directories; there should be a debug mode and a build mode that selects the path to the song files

Add Page Breaks

If a song gets split over two pages, add a page break before it.

New Page Spacing Issue

Cases to Test

  • The Goodness of Jesus, A Thousand Hallelujahs, Jesus We Love You, (space issue is here), Living Hope, and Holy Ground
  • Shout Hosanna, To the One, (space issue is here)
  • Who You Say I Am, Way Maker, Build My Life, (space issue is here) Holy Spirit

Split into Modules

Split WorshipList.py into:

  • Main.py
  • Document.py
  • Exceptions.py
  • GUI.py
  • MusicData.py

Create Song Files

TODO

  • Breakthrough
  • Do It Again
  • Forever
  • Glory
  • Here I Bow
  • I Speak Jesus
  • I Surrender
  • It Is Well - Bethel
  • Look to the Son
  • Love on the Line
  • My King Forever
  • Oceans
  • You Make Me Brave

Improve implementation of "repeats"

Why use "double" when "x2" works just as well? Make this general - no extra code should have to be written to allow for "x4" (when this is ready, the verse of King of Kings should be x4)

Compile into .exe

  • Use pyinstaller to compile into one .exe file
  • Prompt user the option to create/download Settings.txt and songs/ or have them automatically generated if not found in current directory?
    • What to do when songfiles exist? Overwrite?
  • Create README.md with information about running the program and setting up the environment
    • Auto-generate/copy from stable and put command to do so in Makefile?
  • Add icon?

Remove use of `pathlib`

Trying to make compile results in the following error:

$ make compile
pyinstaller --onefile src/Main.py -n WorshipList -i src/icon.ico -w
The 'pathlib' package is an obsolete backport of a standard library package and is incompatible with PyInstaller. Please remove this package (located in C:\Users\samcr\AppData\Local\Programs\Python\Python312\Lib\site-packages) using
    "C:\Users\samcr\AppData\Local\Programs\Python\Python312\python.exe" -m pip uninstall pathlib
then try again.
make: *** [compile] Error 1

pathlib should be replace with a more standard library

Improve Documentation

TODO

  • Update README
    • Find better format for Contents
  • Add doxygen comments
  • Add doxygen capabilities
  • Better comments throughout code
  • Pull out key duties to getNotes()
  • Add README to src/ folder

Keep input in case of error so user doesn't have to start over

Work is mostly done in keepInput - after some final testing, it can be merged and this issue closed

  • Implement a way to keep all input, not just correct input
  • Warn if kept input would be removed with a reduction of the number of songs in GUI
  • Don't use closebuttons for getting input in case of invalid input that would need to be changed

Allow for Multiple Entries on One Line

  • Make function for writing line
  • Iterate through lines by number, not by line
  • Call writeLine recursively with 'same' keyword

For space consolidation, allow for multiple entries in the same line. See example:

oneLine

^ This example probably won't work anymore - try with Glorious Day though

Working on branches SameLine and SameLine2 - very hard

Add support for file paths for different systems

  • Use Python library for dealing with file paths
  • Change Settings.txt to use new file path method
  • Add functionality to change output path from GUI
  • Pull out file path for src/ to maybe be variable in future alongside #26
    • Settings file -> "src: srcPath \n output: outputPath"
    • Instantiate Settings upon first run of WorshipList.exe
      • Check if src/output directories can be found before asking for user input

Refactor writeSection

Should iterate until a colon is found, and throw an error if missing from songfile

Fix Line Breaking

In the file "LIFT Worship 1-12-20", the song "What a Beautiful Name" was pushed onto a separate page when there was room for it on just one page.

  • Fix erroneous splitting
  • Add option to reduce font size of titles to accommodate one page (hard)

Ensure GitHub action to build works

  • Add "Last Compiled" line to README and update with current date
  • "WorshipList" file ends up in zip built on GitHub? Fix: removed in GitHub action

Implement Method for Adding Songs

The song adding process should be more straight forward and not involve adding a .txt file.

  • Create a blank file with the song name
  • Add key names for each field for easy referencing
  • Add functionality for "same"
  • Check that each chord (or similar: "x2", etc.) is valid
  • Add commonly used section names
  • Test by adding songs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.