QPiano uses MIDI music files (.mid) or karaoke files (.kar) to play music.
See this thread on the forum which list useful source of midi files on the net. Please add to this list if you find any pieces of music that you enjoy playing.
Google search: Taylor's Traditional Tune Book, and download the "English Tunes". They are only single melody to play with quite good MIDI arrangements. Barry is quite fond of key changes which make it quite challenging. Especially "I Saw Three Ships."
Bach collection and others from repository of sheet music - Mutopia Project
QPiano will only distribute MIDI files submitted to the project under the Creative Commons (CC) License.
MIDI files created by hand constitute "original work". Original work can be released under the CC license. (see forum discussion)
MIDI files copied from existing works, (either digital copies, format-shifted copies, or 'recording' the playback output of works) are subject to the copyright laws under which the original works were released.
... (other cases? please add relevant links, discussion)
Although MIDI files can be generated in several ways, this guide covers a method that also produces sheet music and accompaniment. The general process: write "abc notation" of music (ABC file); convert ABC file to Solo MIDI and Sheet Music; write accompaniment "hints" (MMA file); convert solo MIDI and MMA file to final MIDI (ready to practice playing).
The ABCPlus notation describes the notes to be played by the right and left hands in plain text ascii-character file.
The ABC file is converted to a MIDI file using the abc2midi tool. This creates a MIDI file with right and left hand parts.
The ABC file can also be converted to a sheet music image with the abc2mtex tool.
The MMA software can greatly simplify creating accompanying "background" music.
Select File -> Open from QPiano main menu and then choose the .mid file or the .kar file. If you put all your MIDI files in adjacent directories then each directory will appear as books that can be accessed using the -book drop down list- and then each MIDI file can be accessed from the song drop down list.
When learning a new piece of music it is recommended that you first listen to the piece of music to hear how it should sound. Set the /skill level to listen/ and then click the /play stop button icon/. To stop the music click the /play/stop button again. To play the music from the beginning click on the /play from start button/.
QPiano has been specially designed so that you can play along with the MIDI music using a piano keyboard. Ensure that MIDI input is correctly set up. You can choose which hand to play select 'right', 'both' or 'left' from the hands selection. If you choose to play just a single part then QPiano will automatically play the other part for you. There are two different ways of playing along the 'follow you' mode and the 'play along' mode. When learning a new piece of music the follow you mode makes it much easier but you should progress to the 'play along' method as this ensure that you play with the correct timing.
Select the 'follow you' option and choose which hand you want play and then click the play button to start the accompaniment playing. The music will start playing and at the same time you should playing along to the notes shown on the screen.
While QPiano can take input from the computer keyboard, it is recommended to use a MIDI capable keyboard or piano. This section assumes you are using a keyboard or piano with either a USB MIDI port or MIDI input/output ports with a MIDI/USB adapter.
MIDI or Musical Instrument Digital Interface allows electronic musical equipment to communicate with each other. MIDI works like a pipeline; data (the music notes) "flows" in one direction. Every MIDI device port is labeled as either IN/input or OUT/output. The Output of the first device goes to an Input of the next device.
If your keyboard has a USB MIDI port, then a standard USB cable to the computer will provide both input from keys and output to the keyboard speakers (if there are speakers).
If the keyboard as MIDI IN/OUT ports, then the OUTPUT port of keyboard must be connected the INPUT of the USB MIDI adapter. To hear the QPiano output on the keyboard speakers, the OUTPUT of the USB adapter must be connected to the INPUT port on the keyboard.
To hear the sound QPiano needs a MIDI sound generator, there are two different General Midi sound generators available on Linux, 'fluidsynth' and 'timidity'.
It's recommends to use 'fluidsynth' for BSD Unix.
To install fluidsynth you must install the following packages 'fluidsynth' 'fluid-soundfont-gm' and 'fluid-soundfont-gs' using your favourite package manager
or
Arch Linux: 'fluidsynth' 'soundfont-fluid'. BSD Unix: 'fluidsynth' 'fluid-soundfont'.
To start the fluidsynth sound generator copy and paste the following command line (one very long command line).
Using ALSA:
fluidsynth -i -s -g 0.4 -C 0 -R 0 -r 44100 -c 6 -z 128 -l -a alsa -o audio.alsa.device=plughw:0 -o midi.alsa_seq.id=fs /usr/share/sounds/sf2/FluidR3_GM.sf2 /usr/share/sounds/sf2/FluidR3_GS.sf2
Using JACK:
fluidsynth -i -s -g 0.4 -C 0 -R 0 -r 44100 -c 6 -z 128 -l -a jack -o midi.alsa_seq.id=fs -j /usr/share/sounds/sf2/FluidR3_GM.sf2 /usr/share/sounds/sf2/FluidR3_GS.sf2
BSD Unix does not have ALSA, so you should use JACK:
fluidsynth -i -s -g 0.4 -C 0 -R 0 -r 44100 -c 6 -z 128 -l -a jack -j /usr/local/share/sounds/sf2/FluidR3_GM.sf2 /usr/local/share/sounds/sf2/FluidR3_GS.sf2
Note: Path /usr/share/sounds/sf2
is Debian, Ubuntu, OpenSuse, Slackware, etc. For Alt Linux, Arch Linux, CentOS, Fedora, Mageia, OpenMandriva, ROSA, etc. you must use path /usr/share/soundfonts
instead. BSD Unix uses /usr/local/share/sounds/sf2
.
Note: JACK in BSD Unix cannot be started realtime by user, but it starts realtime by default, user does not have permissions. Disabling realtime helps. How to disable realtime or allow user to use realtime please ask your favorite BSD Unix forum.
If you have a fast machine then you can leave out the flags -C 0 -R 0 -r 22050
which turns off the reverb, chorus and reduce the sample rate.
The flags -c 6 -z 128
control the latency try -c 5 -z 128
for less latency,
but at the risk of audio drop outs.
The flags -o audio.alsa.device=plughw:0
bypasses the Pulse Audio layer
which caused a lot of latency delay but unfortunately these flags may also
bypass the desktop volume controls.
Flag -i
: don't read commands from the shell. Flag -s
: start FluidSynth as a server process. Flag -g 1
: set the master gain = 1.
Flag -a alsa
or -a jack
: the name of the audio driver to use.
Flag -j
: attempt to connect the jack outputs to the physical ports.
Flag -l
: don't connect to LASH server.
For more information on running fluidsynth with low latency see this page.
On QPiano set the Setup/Midi Setup/Midi Output Device: to FLUID Synth (fs):0
If you get problems with unsteady playback or the audio cutting out then try closing all other programs, turning off your wireless network and unplug any network cable.
If you get an error, make sure to have snd-seq-midi kernel module loaded in your system (sudo modprobe snd-seq-midi).
You might prefer to use qsynth as GUI interface to fluidsynth for easy setting of Reverbs, chorus effects, etc.
Using 'timidity': wrapper script and desktop file.
Using 'fluidsynth': wrapper script and desktop file.
Timidity in Arch Linux does not work out of box. To use Freepats (freepats-general-midi package) with TiMidity, add the following lines to /etc/timidity++/timidity.cfg:
soundfont /usr/share/soundfonts/freepats-general-midi.sf2
Potentially needs to disable pulseaudio to use ALSA.
JACK can be used by jack or jack2. jack has better debug logs than jack2 to see errors, but they work equally. But JACK does not work out of box, needs to configure it.
run:
sudo sed -i "s|# End of file|@audio - rtprio 99|g" /etc/security/limits.conf
run:
sudo usermod -a -G audio exton
, where exton is user
log out and log in
stop pulseaudio:
systemctl --user stop pulseaudio.socket
run script:
qpiano-fluidsynth
start pulseaudio after:
systemctl --user start pulseaudio.socket
Note: Fluidsynth works without JACK with ALSA out of box even without conflicts with pulseaudio.
While there are many possible choices General Midi sound generators for the Mac (Timidity, FluidSynth or an external MIDI Synth), the easiest way is to use SimpleSynth, which can be obtained for free (MIT license) frome here.
This must be started before QPiano, and also allows to load custom Soundfonts.
Just enable use_jack="1"
in /usr/bin/qpiano-fluidsynth. If use_jack="0"
, then JACK is disabled.
The delay between pressing the note and hearing the sound is called the latency. Unfortunately some sound generators introduce a latency delay between receiving the command to play a note and producing the audible sound. This unwanted delay can make it extremely difficult to play along with the music.
The MS GM Wavetable Synthesizer that comes with Windows also suffers from this problem as it introduces a noticeable delay of 150 milliseconds (0.15 seconds).
The first thing to do is to turn up the speakers on your piano keyboard (provided that you are using a piano keyboard that has it's own sound generator) so that you can hear what you are playing without a delay. Then aim to use the 'Play Along' mode as much as possible.
To use the 'Follow You' mode you will need set the latency value (see the next question) or alternately use a realtime sound generator with low latency (recommended, For Linux, BSD Unix see fluidsynth Low Latency page.
The Latency fix aims to counteract the latency delay of the sound generator by deliberately running the musical accompaniment several milliseconds ahead of what you are playing on the piano to try and cancel out this delay within the sound generator.
The latency value is entered from the 'settings/Midi setup' page. If you are using the MS GM Wavetable Synthesizer then try entering a value for the delay of 150 mSec.
Whenever you set a value for the latency then the instrument sound for your piano is automatically set to 'None' to mute the delayed sound of your playing through the sound generator. Remember to turn up the volume of the speakers on your piano. If your piano does not have it's own speakers or you are still using the PC keyboard then this fix will not work, sorry.
Unfortunately when you stop playing using the 'Follow You' mode then the music will stop in the wrong place (because the music was deliberately being run ahead of your playing). The use of the latency fix is less than ideal and so the best solution is to change to different realtime sound generator that has a low latency delay.
Optional workaround: Try using a real time kernel.
To work out the value of the delay first enable the timing markers from the preferences menu. (These are the white crosses that are drawn over the notes that show when you pressed the note). Then using the 'Play Along' mode look at the timing markers to see if you are playing ahead or behind the notes. If you are playing consistently behind the beat then try increasing the latency value by say 100 milliseconds. Conversely if the timing markers show you are playing ahead of the beat then try decreasing the latency slightly.
It is always best to use a value that shows you are playing slightly ahead of the beat rather than behind the beat. (This is because QPiano in 'Follow You' mode will slow down the music if you are playing behind the beat.)
To disable the latency fix enter a value of zero.