Question types: Music Theory

qtype_musictheory
Maintained by Eric Brisson Eric Brisson
Question type supporting several exercises for music theory instruction.
218 sites
177 downloads
19 fans
This question type is designed for music theory instruction. It currently supports the following exercises:

  1. Note writing: The respondent is asked to enter a given note on the staff.
  2. Note identification: The response is asked to identify a give note.
  3. Keyboard Input: The respondent is asked to select a given key on the piano keyboard.
  4. Key signature writing: The respondent is asked to enter a given key signature.
  5. Key signature identification: The respondent is asked to identify a given major or minor key signature.
  6. Interval writing: The respondent is asked to enter a given interval above or below a given note.
  7. Interval identification: The respondent is asked to identify the quality and size of a given interval.
  8. Scale writing: The respondent is asked to enter a given scale.
  9. Scale identification: The respondent is asked to identify a given scale.
  10. Chord quality writing: Given a chord root and quality (e.g. 'G major', 'D minor'), the respondent is asked to enter corresponding chord on the staff.
  11. Chord quality identification: The respondent is asked to identify the quality of a given chord (e.g. 'major', 'minor', etc.).
  12. Harmonic function writing: The respondent is asked to enter a given harmonic function in a given key (e.g. 'IV in D minor').
  13. Harmonic function identification: The respondent is asked to identify the harmonic function of a given chord in a given key.
When Javascript is enabled, answers are entered and displayed in an HTML5 graphical user interface, using two separate Javascript components (Music Theory GUI and Keyboard Input) packaged as YUI modules. All the exercises above are fully functional without Javascript, except for 1) Note writing, 2) Note identification and 3) Keyboard Input.

Each of the exercises above (except for #3, Keyboard Input) can also be configured so that a specific question is randomly generated upon starting an activity. The randomization can be based on a set of parameters configured when the question is created or edited. For example, it is possible to configure an interval writing question so that it asks for a perfect fifth above a randomly chosen given note. This randomization process, configured during question creation, alleviates the need to create very large question banks, and can be particularly useful for interval and chord/harmonic function questions, given that the number of possible questions for these exercises is very large.

I made a choice to create a framework where the correctness of a given question is automatically computed, without having to enter individual answers during question creation. A framework for adding various grading strategies for each exercise is also in place, and is currently used for the scale writing exercise (currently allowing either an "all-or-nothing" grading strategy, or a "partial grade" approach where each correct note is given partial credit).

This plugin was developed with the hope of creating a music question type that would support a wide range of music theory exercises, using a single graphical user interface that is flexible enough to support such exercises. It is hoped that it will facilitate further development and Moodle server maintenance.

Special thanks to Jay Huber for his very significant contributions to the existing standalone Moodle music question types (Music Key Signature, Music Interval and Music Scale), and for inspiring me to develop this new question type.

Many thanks to Ken Graetz, Scott Schradle and colleagues in Winona State University's TLT and IT departments for their support of my Moodle development efforts through the maintenance of our institution's Moodle server.

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3

Contributors

Eric Brisson
Eric Brisson (Lead maintainer): Question type author
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Ben talking on the phone beside a monitor
    Wed, 29 Jul 2015, 1:59 AM
    Version 1.3.1 released July 2015 says it works with 2.9
  • Eric Brisson
    Wed, 29 Jul 2015, 2:42 AM
    I just released version 1.3.1 which is compatible with Moodle 2.7, 2.8 and 2.9.

    This version is now completely compatible with AMOS for purposes of translation (all case-sensitive language string keys have been replaced). It includes scale identification as a new exercise, and has a number of additional enhancements as well as bug fixes. The list of changes is the following:

    https://github.com/brissone/moodle-qtype_musictheory/issues?q=is%3Aissue+is%3Aclosed

    Thank you all for bug reports and suggestions - I appreciate it very much!

    Best,
    Eric
  • Eric Brisson
    Thu, 30 Jul 2015, 3:59 AM
    I released a patch as version 1.3.2, to take care of a bug that would have potentially affected compatibility for future translations submitted in AMOS. It affected the display of questions for the Scale Identification and Chord Quality Writing exercises, when using a language pack for which a translation is available.

    This question type should be fully ready for successful submission and use of translations at this point. Many thanks to all contributors!

    Eric
  • Picture of Andreas Schenkel
    Sun, 6 Sep 2015, 12:13 AM
    Problem with notec

    duplicate entry 'de-83-notec' for key 'mdl_toolcust_lancomstr_uix'
    INSERT INTO mdl_tool_customlang (lang,componentid,stringid,original,master,timemodified,outdated,local,timecustomized) VALUES(?,?,?,?,?,?,?,?,?)
    [array (
    0 => 'de',
    1 => '83',
    2 => 'notec',
    3 => 'C',
    4 => 'C',
    5 => 1441469339,
    6 => 0,
    7 => NULL,
    8 => NULL,
    )]
    Error code: dmlwriteexception
    Stack trace:

    line 446 of /lib/dml/moodle_database.php: dml_write_exception thrown
    line 1164 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end()
    line 1210 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->insert_record_raw()
    line 186 of /admin/tool/customlang/locallib.php: call to mysqli_native_moodle_database->insert_record()
    line 60 of /admin/tool/customlang/index.php: call to tool_customlang_utils::checkout()
  • Picture of Kees Koopman
    Mon, 29 Feb 2016, 8:57 PM
    Hi,

    Little (?) problem:

    Debug info: Duplicate entry 'nl-575-notec' for key 'mdl_toolcust_lancomstr_uix'
    INSERT INTO mdl_tool_customlang (lang,componentid,stringid,original,master,timemodified,outdated,local,timecustomized) VALUES(?,?,?,?,?,?,?,?,?)
    [array (
    0 => 'nl',
    1 => '575',
    2 => 'notec',
    3 => 'C',
    4 => 'C',
    5 => 1456748959,
    6 => 0,
    7 => NULL,
    8 => NULL,
    )]
    Error code: dmlwriteexception
    Stack trace:
    • line 446 of /lib/dml/moodle_database.php: dml_write_exception thrown
    • line 1164 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end()
    • line 1210 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->insert_record_raw()
    • line 186 of /admin/tool/customlang/locallib.php: call to mysqli_native_moodle_database->insert_record()
    • line 60 of /admin/tool/customlang/index.php: call to tool_customlang_utils::checkout()

    Can you give me tips how to solve this problem? Workarround?
  • Eric Brisson
    Sat, 12 Mar 2016, 3:42 AM
    Hi Kees,

    The problem would for users who have installed version 1.2 of the plugin, tried to customize a language pack while using version 1.2, and then upgraded to version 1.3.x, and finally try to customize a language pack using version 1.3.x. Users who have never installed version 1.2 or never tried to customize a language pack while using version 1.2 should not run into the issue.

    It occurs because version 1.3.x uses 'notec' instead of 'noteC' as a language string - since the resulting database key (nl-575-notec) is case insensitive, it conflicts with the existing key (nl-575-noteC) loaded into the custom language table from version 1.2.

    The quickest workaround to it is to run the following SQL statements on your Moodle database (statements below assuming MySQL) - this would delete the duplicate items that cause the error from the table mdl_tool_customlang and you should be able to customize the language pack afterwards:

    delete from mdl_tool_customlang where lang = 'nl' and componentid = '575' and stringid = 'noteC';
    delete from mdl_tool_customlang where lang = 'nl' and componentid = '575' and stringid = 'noteD';
    delete from mdl_tool_customlang where lang = 'nl' and componentid = '575' and stringid = 'noteE';
    delete from mdl_tool_customlang where lang = 'nl' and componentid = '575' and stringid = 'noteF';
    delete from mdl_tool_customlang where lang = 'nl' and componentid = '575' and stringid = 'noteG';
    delete from mdl_tool_customlang where lang = 'nl' and componentid = '575' and stringid = 'noteA';
    delete from mdl_tool_customlang where lang = 'nl' and componentid = '575' and stringid = 'noteB';

    I hope that this is helpful for you - please let me know if you have any other questions.

    Thanks so much,
    Eric
  • math
    Sat, 28 May 2016, 12:58 AM
    Great question type - thank you for providing it. Is a version for Moodle 3.1 in the works?
  • Picture of Charles Krengel eLearn Solutions
    Wed, 16 Nov 2016, 7:37 PM
    Thanks for a brilliant plugin.

    I've tested and it does not enable question creation in Moodle version 3.1

    A workaround enabling this question type to work in 3.1:

    - Create the questiona in a Moodle 3 instance
    - Import into a Moodle 3.1 instance (Questions are automatically added to the question bank)
    - Add select questions of this type from the question bank



  • Picture of B Monse
    Mon, 26 Dec 2016, 4:07 AM
    Are there plans to update for compatibility with Moodle 3.1 / 3.2 / etc? (Really hoping this isn't abandonware!)
  • Eric Brisson
    Thu, 29 Dec 2016, 9:58 PM
    I just released version 1.3.4, which is compatible with Moodle 3.1 and 3.2 (I'm sorry for the delay on this release). Many thanks for all feedback/questions and AMOS contributions - I appreciate them very much!

    Best,
    Eric
  • Picture of B Monse
    Sun, 23 Jul 2017, 8:35 AM
    Thanks Eric, any news about 3.3? smile
  • Eric Brisson
    Fri, 28 Jul 2017, 9:10 PM
    I just tested and enabled v.1.3.5 for Moodle 3.3. Thanks again for all feedback and AMOS contributions - I appreciate these very much!
    Best,
    Eric
  • Picture of stella saran
    Sun, 1 Oct 2017, 5:46 PM
    Any recent update of the plugin, awaiting for it eagerly.
  • Picture of Alan Brown
    Tue, 17 Oct 2017, 2:23 PM
    Thanks Eric - this is good! Any possibility to expand scale writing and identification to include major scale modes? That would make this very useful in a contemporary context.
  • Eric Brisson
    Wed, 18 Oct 2017, 6:40 AM
    Hi Alan,
    Thanks for suggesting it - I have added the idea to my development list (https://github.com/brissone/moodle-qtype_musictheory/issues). I don't expect that I will have time to add features before the end of the school year, but I may be able to do some more development work next summer.
    Thanks again!
    Eric
1 2
Please login to post comments