Git Product home page Git Product logo

poireau's Introduction

Requirements Status

Pool Of Intelligent Records Effortlessly Auto-generated for Usability (POIREAU)

This project aims at creating an internal website to ease file management and song learning between all the members of a choir. It mainly uses Python 3, Django, Bootstrap.

Who does that ?

This project is currently managed by members of the Negitachi choir.

How is Poireau as of now ?

Poireau is in "not even alpha state" for now. It still has to go under heavy development before being ready for anything serious.

How to use the project if you're not used to working with Python3/Django projects

You will find details instructions here on how to understand the project if you're not yet used to Python3/Django development.

How to use the project if you're used to working with Python3/Django projects

Highway to dev

If the content of the Ubuntu Install script is OK for you, then project installation on Ubuntu 14.04 LTS (Trusty) is as simple as :

curl -O -L https://raw.githubusercontent.com/ewjoachim/poireau/master/scripts/ubuntu_install.sh
chmod +x ubuntu_install.sh
./ubuntu_install.sh
rm ubuntu_install.sh

This script will install the system-wide dependencies, git-clone the repo, create a venv, install the python reqs in it, create the Database, add an user (you), prepare the static files for web access and the translations.

Requirements

Except Python 3 and the requirements listed in requirements.txt, the non-python requirements for this project are :

  • Lilypond (lilypond and musicxml2ly executables) (for now, it's not used)
  • GetText for translations
  • Ipython and Notebook if you want to try the project notebook (just for dev, and not mandatory)

Installation

Once you have installed the non-python requirements above, git-clone'd the rep, created and activated a virtualenv :

# Install the python dependencies
pip install -r requirements/development.txt

# Create the database
./manage.py migrate

# preparing the static files
./manage.py collectstatic

# preparing the translations
./scripts/compilemessages.sh

# create a superuser
./manage.py createsuperuser

Parameters

Most parameters can be set in the Environment variables. To ease development, local server (manage.py runserver) automatically sets the content of .env.default and .envas environment variables. The .env file is not tracked so you can safely put your passwords and API keys in there if necessary.

Try some features

Via the Notebook :

./manage.py shell_plus --notebook

and open Poireau Notebook.

Via the the views :

./manage.py runserver

Launch the tests

./manage.py test

(Note : no tests have been written so far... [TODO] anyone ?)

Translations

Launch the script that parses the code to find translatable strings

./scripts/makemessages.sh

Once translation is written, compile it with

./scripts/compilemessages.sh

Project Settings

To specify the specific settings of your project, create a file at poireau/common/local_settings.py based on poireau/common/local_settings.py. As long as you have not done so, you'll have a warning everytime you interact with the project. You can create an empty file at that location to get rid of the message.

poireau/common/local_settings.py not found or produced an ImportError. Default parameters used.

How to discuss

Mailing List

Changelog

Available here

License

MIT license :

Copyright © 2015, Joachim Jablon

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders X be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.

Except as contained in this notice, the name of the shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the .

poireau's People

Contributors

ewjoachim avatar grouloup avatar miaaou avatar yoda-jm avatar

Stargazers

 avatar

Watchers

 avatar

poireau's Issues

User management model and views

Using Django's auth views and maybe Class Based Views equivalents if you can find good ones, implement the views for :

  • User creation by the admin, providing the e-mail of the user, who will received an e-mail with a link to create their password
  • Activation - deactivation of Singer profile
  • Lost password management
  • Custom user model with all the needed info ? (if necessary)

Write some tests

Mainly, test what the Poireau Notebook does.

Also, test that loading the pages when logged out (except Login page) redirects to login.

Song learning package

We could generate a "Learning package" with exercises : The song with your voice, the song with your voice and the other voices lower, the "normal" song, the song without your voice, the song with holes and you're supposed to continue alone for ten seconds etc.

If you specify some measures you want to work specifically, you may generate a loop of n times theses measures specifically.

Volume modulation on parts

Find a way to set the volume independently for each part in the generated sound file. That may be by editing the musicxml and making sure it is taken into account by musicxml2ly. Another lead is to see if it's possible to do it from the .ly file. Finally, maybe it's doable from the generated midi file.

We may attach a property ("volume") on xml_parts in Song, and Song.export may use it to set the volume properly at export time.

Then we'll be able to generate songs with all but one part with a lower volume.

Find a nice user interface (UI) to set the sections for each part of a song.

This is the only editable thing in Part. It's logical to edit all the sections for all the parts in a Song simultaneously. A little bit of logic could help providing a default section for a part from its name ("Bass" usually is linked to Bass ...). We could examine all other parts named identically and if they're always linked to the same section, this should be the default choice.

Group choice management

This feature allows users to create and manage surveys for all users of one or several given "main section"

This feature contains:

  • A view to list all the existing surveys (with links to each survey, and a link to create a new survey)
  • A view to create, modify or delete a survey
  • A view to answer the survey, update an answer and see the responses of all the participants
  • A script to remind regularly the users until they have answered the survey

Discover the Songs in the Dropbox Folder View

The method is already there but it should be made into a View with 2 steps :

  • See all the changes that will be done
  • Validate and do the changes

In order to do that, the discover method has an argument commit. If false, nothing is changed, but the return value helps figuring out what changes will be done, and then if commit= True, changes are made.

Create views for the models

Create basic ModelForms and Views for Detail, Creation, List, Update (and Deletion when applicable ?) for :

  • Songs
  • Parts
  • Singers
  • Sections

Some highly specialized views like Auto-Song Creation from Dropbox exploration or assignement of singers to their parts in songs will be done in their own ticket. This is for the simple views.

Idea : use Selectize to improve display of ChoiceFields.

Explore methods for creating mp3 files

Currently, Lylipond creates a .midi file from the .xml. The midi file defines notes, but has to be associated with instruments to create a real sound. On method is to use FluidSynth in association with a SoundFont (sf2) file. Try different methods (ideally using a python library, and if not possible, using a executable in python) to implement this in the Song.export method (that may need refinement in terms of defining its inputs and outputs).

Assign a Singer to parts in Songs

2 views :

  • From a Singer : for each song, specifies his/her parts (useful when adding a new member)
  • From a Song : for each singer, specifies their parts (useful when adding a new song)

Default choices can be inferred via part.section and singer.main_section

Song suggestions

A way for users to sugest new songs to work on. Features include :

  • Anyone (logged) can add a new suggestion and edit their suggestions
  • Anyone can comment any suggestion (not anonymously)
  • Anyone can vote +1 or -1 or 0 on any song. This is anonymous but we keep track of user's votes. Yes, the admin may know who voted for what but it's ok.
  • The only votes considered are those of active users.
  • The total (sum of 0, +1 and -1) on each song is displayed. Songs are sorted by tuple (DidIAlreadyVoteForThat, score (desc)),
  • Voting is done through an ajax call to enable quick voting
  • A suggestion is composed of :
    • The name of the song
    • The person who suggested it
    • the date of suggestion
    • Up to 3 youtube videos embedded, with suggestion of having the original song, the most interesting performance they can find and, if it exists an arrangement for choir or something.
    • A free (markdowned) text box for the rest
    • and the score and the voting panel (something like this : http://getbootstrap.com/components/#btn-groups-sizing)
  • Optionnal : when voted, a suggestion moves to the bottom part of the list

Classify songs by level of mastering for each user

Each user is able to say how much they master a given song (I don't sing it / I don't know it / I know it / I master it). In the song list, songs are sorted with the ones that need the more work first.

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.