Giter VIP home page Giter VIP logo

melocbr's Introduction

meloCBR

A python project to build a system that could effectively harmonize a given melody. The methodology followed is Case Based Reasoning with support from a database of Bach compositions.

----very early developmental phase-----

  1. In fact there can be difference of opinions as to what note qualifies as bass or mid or trebble. The system assigns in the order it receives in. So there can be times when the two notes played are mid and bass and the system assigns them to trebble and mid.
  2. While inserting a case in the database, in casemaker.py, the note variables are being converted to null values whereas the othernotes and hother lists, if empty, will be replaced with 'None'. Correspondingly, in main.py, while retrieving, these two varialbes are checked for inquality with 'None'. Changes will have to be made in both the modules if null is to be used. However, since the values stored in the database are string values, it shouldnt matter. That and I feel that this will be easier to handle in other scenarios (evaluating the string for being None).
  3. Isolation level could have been used for the connection object. But I thought it better to have a wrapper commit hook instead. Keeps tighter control over when the transactions would be commited, since it is not desirable to commit the databse if there is an error midway while inserting cases from a piece.

Pending Changes:

  1. Efficient storage of notes. Using the same note for different cases. Will involve major change in the casemaker module. From what I can imagine, the insert case function will need a list of all the possible combinations of distinct note objects that it will compare the current note with. If found, then the current note can be discarded and the NID of the existing note and be returned to the insertcase function to be stored as the link to this existing note for the current case.

Lessons learnt:

  1. Use ORM.

melocbr's People

Watchers

 avatar  avatar

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.