FET (Functional Ear Trainer)
Create MIDI files for functional ear training. Each file will contain a major/minor chord progression, followed by note(s) that you should identify the scale degree of by ear.
Installation
Add this line to your application's Gemfile:
gem 'fet'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install fet
Usage
Refer to the rdoc for detailed usage instructions and descriptions of commands.
Filename Format
The generators will currently create MIDI files. The correct answer is included in the filename.
Listening exercises
For listening exercises, here is a potential list of generated MIDI files (for 2 degrees):
$ find .
...
./listening/major/DbM_b6(Bbb2)_5(Ab5).mid
./listening/major/BbM_7(A4)_2(C6).mid
./listening/major/EM_b6(C2)_3(G#2).mid
./listening/major/GbM_6(Eb4)_3(Bb5).mid
./listening/major/FM_6(D4)_3(A5).mid
...
./listening/minor/Dm_b7(C3)_1(D4).mid
./listening/minor/F#m_b2(G2)_3(A#4).mid
./listening/minor/G#m_b6(E1)_b2(A2).mid
./listening/minor/Dm_6(B0)_7(C#3).mid
./listening/minor/C#m_5(G#4)_6(A#4).mid
...
The file name contains all the information required for the answer. For example, EM_b6(C2)_3(G#2).mid
:
EM
: the chord progression is in E Major.
b6
: the bottom note will be the b6 degree
(C2)
: the scientific pitch notation of which is C2
3
: the next note from the bottom will be the 3 degree
(G#2)
: the scientific pitch notation of which is G#2
Singing exercises
The singing exercises will generate all possible combinations for keys and degrees as follows:
$ find .
...
./singing/major/AM_1.mid
./singing/major/BbM_3.mid
./singing/major/CM_4.mid
./singing/major/CM_5.mid
./singing/major/BbM_2.mid
...
./singing/minor/Am_1.mid
./singing/minor/Bbm_3.mid
./singing/minor/Cm_4.mid
./singing/minor/G#m_4.mid
./singing/minor/F#m_1.mid
...
The file name contains all the information required for the answer. For example, BbM_3.mid
:
BbM
: the chord progression is in Bb Major.
3
: you should sing the 3rd degree.
Single Note Listening exercises
For single note listening exercises, the same note is played across all possible keys:
$ find .
...
./listening_single_note/major/CM_1.mid
./listening_single_note/major/BM_b2.mid
./listening_single_note/major/F#M_b5.mid
...
./listening_single_note/minor/Am_b3.mid
./listening_single_note/minor/G#m_3.mid
./listening_single_note/minor/Cm_1.mid
...
The file name contains all the information required for the answer. For example, G#m_3.mid
:
G#m
: the chord progression is in G# Minor.
3
: the note that is played is the 3rd degree in this key.
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and the created tag, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/DimitriosLisenko/fet.
License
The gem is available as open source under the terms of the MIT License.