Code Monkey home page Code Monkey logo

extraordinaryrhymes's Introduction

You had one job, spit extraordinary lines
instead you came with Extraordinary Rhymes…

— Esoteric
CZARFACE – A Fistful of Peril

ExtraordinaryRhymes

A simple web app for writing song lyrics.

Table of Contents

2.0 Preliminary Project Proposal

3.0 Project Proposal

5.0 Software Requirements Specification

2.0 Preliminary Project Proposal

The title of this project is: Extraordinary Rhymes. It is a web app designed for functionality on desktop computers, tablets, and mobile devices. The app is a web page that allows the user to input lyrics via a text field and helps the user to write song lyrics. The app is targeted toward writing rhymes for rap songs (hip-hop). To this end, the app helps in about five different ways: 1) highlighting rhymes found within the lyrics and suggesting rhymes if the user is following a rhyme scheme, 2) allowing the user to label sections of the text as belong to different parts of the song (i.e. the chorus, the verse(s), the intro), perhaps using color highlighting, 3) counting bars or syllables within individual bars, 4) perhaps a dictionary or thesaurus function, and 5) helping the user to fit the song into popular existing song structures (AABA) or rhyme schemes as well as educating the user on different rhyme schemes. In all likelihood, the app will not include all five features, but perhaps only a smattering of them.

3.0 Project Proposal

For a brief overview of the project, see the above section. The app will be a web app, there will therefore be no downloadable form of the app, neither on a desktop OS, a tablet, or a phone. The app will be built primarily using client-side web technologies, such as jQuery, JavaScript, HTML, CSS, and so on and so forth. Calls to various API services will be made using Ajax requests. The app can be hosted on any web server desired, whether it be a Python, Apache, or Node.js web server, the choice is trivial. Most of the business logic for the app will reside within the JavaScript files created for the app.

When the user is finished typing their lyrics we will allow one of two export forms: 1) a desktop user will receive and exported HTML file formatted to retain the highlighting and annotating of his lyrics, or 2) a mobile user will receive an e-mail to a link containing their exported lyrics.

A possible idea for exporting includes sending pictures of the highlighted lyrics. This will remove the possibility of the user copying and pasting his lyrics, but it provides all of the information in a neat snapshot. Development of the app will be targeted toward desktop users primarily, so we will not be sorry if we fail to implement a static linking service or a picture e-mailing service for mobile users.

5.0 Software Requirements Specification

5.1 Introduction

Extraordinary Rhymes is a simple client-side web app that marks up song lyrics entered by the user. The app is intended to help the user find rhymes within their lyrics, and will give the option of helping the user structure their song in blocks. The app will also include features such as rhyme-scheme enforcement and suggestion of lyrics.

The remainder of this document is structured as follows: section 5.2 contains functional requirements, section 5.3 will describe performance requirements for the app, and section 5.4 will contain environment requirements.

5.2 Functional Requirements

5.2.1 index.html (the landing page)

5.2.1.1 The landing page shall provide a set of a replicatable blocks that the user can drag and drop to structure a song. At the very least these blocks shall contain: an Intro block, a Verse block, an Outro block, a Chorus block, and a Bridge block. These blocks shall be text fields constrained to only accept what is applicable to each of the block’s nuances.
5.2.1.2 The landing page shall display a marked up, un-editable, text field featuring the user’s lyrics, annotated, with rhymes indicated. Additional information about the lyrics shall be displayed adjacent to the body of lyrics itself. Rhymes will be indicated by colored highlighting of texts, blocks of lyrics will be annotated by a small note above each block (for example: “Verse 1”, or “Chorus”). The marked up text field will be displayed adjacent to the block sandbox.
5.2.1.3 The landing page shall provide two options for exporting the song lyrics:
  1. As an image file sent to one’s e-mail.
  2. As a marked up HTML file.

5.2.2 *.js

5.2.1.1 The app shall provide the following features:
  1. Users can enforce rhyme schemes on phrases.
  2. Rhyme schemes can follow any format: 1. AABB 2. ABAB
  3. Internal rhyme and end rhyme are supported.
  4. Multisyllabic rhymes (feminine rhymes) are supported.
  5. Users can query the app for rhyme suggestions.
  6. Suggestions can follow certain dimensions: 1. Do you want a noun? 2. A verb?
  7. Users can apply pre-templated song structures.
  8. 32-bar form.
  9. Verse-chorus form.
  10. Users can force highlight rhyme recognition.
  11. The app will consider two words to rhyme in order to fit a schema, even if the app (or API) fails to detect this rhyme.
  12. The app shall annotate Bar lines.
  13. The app shall count syllables (for each Bar).

5.3 Performance Requirements

  1. This app shall be hosted on a web server with a domain name indicating its address.
  2. The app, if queried by a mobile device, such as a phone or tablet, shall display a responsive and mobile-friendly web page that will allow the user to perform all functions satisfactorily.
  3. The app, if queried by a desktop PC, shall function satisfactorily.

5.4 Environment Requirements

Development of this app shall require a syntax-highlighting IDE, a working Git installation, and a modern web browser. Execution of this app shall require a modern web browser with an up-to-date JavaScript engine. Deployment of this app shall require a dedicated or virtual private server with an installation of nginx, Apache, or some equivalent web server. Deployment of this app shall require a domain exclusive to the app, such as extraordinaryrhymes.com.

extraordinaryrhymes's People

Contributors

jameshyen avatar

Watchers

 avatar  avatar

Forkers

newrapcity

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.