- JACK sequencer that generates Lilypond scores
- (c) 2013 - Joan Quintana Compte (joanillo)
- joanqc at gmail.com - www.joanillo.org - wiki.joanillo.org
jsequencer2lily is a JACK client (http://jackaudio.org/) that listen and record MIDI messages from controllers that are connected to it. It is, therefore, a sequencer. The main feature is that midi messages to LilyPond format (http://www.lilypond.org), and therefore is able to generate high-quality sheet music.
The first aim to desing jsequencer2lily was simplicity. it is a console sequencer, without GUI. There are different parameters in order to obtain correct scores that meet the musician expectations. This software is just a little contribution to the difficult art of sequencing.
The main reason that led the author to write this software is the ability to record musical ideas, melodies and solos quickly, easily and reliably.
FEATURES AND REQUIREMENTS
jsequencer2lily is a monophonic sequencer, designed to sequence melodies (the main instrument of the author is the saxophone and uses an EWI-USB wind controller). Basically jsequencer2lily performs two functions: first record the sequence; second process the information to generate a LilyPond file as correct as possible (in the sense of writing what the musician intended).
The main requirements are JACK and LilyPond, obviously. The developer uses the metronome klick (http://das.nasophon.de/klick/, also a JACK client), although it is not mandatory to use a metronome. jsequencer2lily is the JACK time master, so the metronome should be set as a time client in order to follow the sequencer.
From the generated lilypond is possible to generate the pdf score pdf and the midi file. To view automatically this pdf score we recommended evince (https://projects.gnome.org/evince/), the default pdf viewer from Ubuntu, so a reference to evince is hardcoded inside the program. In case you use another pdf viewer, change one line and recompilation of the program is necessary.
This software was tested with the following controllers:
- M-AUDIO AXIOM 25
- M-AUDIO KeyStudio 49
- AKAI EWI-USB
INSTALLATION, SETUP AND USE
Compilation of the software is easy with this sentence:
gcc -Wall jsequencer2lily-1.0.0.c utils.c -o jsequencer2lily -ljack
We recommend using a modification of the script jsequencer2lily.sh to setup all the connections and to launch the sequencer. The user should tweak this script depending to their needs and configuration. Basically the script does:
- read all the arguments (explained below).
- kill, if necessary, all the involved processes in order to setup the audio system in a stable manner.
- launch, if necessary, the JACK server (shell mode).
- launch, if necessary, a synthesizer (software or hardware)
- launch, if necessary, a midi controller, and establish connections with the synth.
- launch and setup a metronome with the given parameters.
- launch jsequencer2lily with all the given argument and establish connections with the controller.
In order to connect the midi controller to the sequencer you can use a2jmidid -e, a2j_bridge, or launch jackd with Xraw or Xseq options (the author prefers the last one).
Recommendations for using jsequencer2lily:
Choose a low tempo.
- Try to play with the whole length of the notes (don't cut the notes).
- Choose a correct value of quantization.
- Try different values of --beauty argument.
- Try the sequencer with differents controllers.
Available arguments are:
1. General options: --------------------------------------- -h | --help: usage information -d | --debug: debug information -f filevalue | --file filevalue: output lilypond file (.ly extension) --pdf yes/no: generate pdf score (default: yes) --viewscore yes/no: visualize pdf score with evince (default Ubuntu pdf viewer). (default: yes). Implies --pdf yes --midi yes/no: generate midi file (default: yes) 2. lilypond legacy options: --------------------------------------- --title titlevalue ex: --title 'New York' --composer composervalue ex: --composer 'Frank Sinatra' --opus opusvalue ex: --opus 'Alto Sax' --tagline taglinevalue ex: --tagline '© Joan Quintana 2013. Music engraving by LilyPond' --clef clefvalue ex: --clef treble (default: treble) --tempoly tempovalue: tempo for lilypond output and midi generation ex: --tempoly 110 (default: 110 or same as --temposeq) --key keyvalue ex: --key CM, --key Dm, --key FM (default: CM) 3. jsequencer2lily options: --------------------------------------- --time timevalue ex: --time 4/4 (default: 4/4) --temposeq tempovalue: tempo for sequencing ex: --temposeq 110 (default: 110 or same as --tempoly) --delaybars delaybarsvalue: number of bar/measures previous to sequencing. ex: --delaybars 0 (default: 1) -t transposevalue | --transpose transposevalue: 0:piano, flute; +3:saxo alto; -2:clarinet, saxo tenor ex: -q 8, --quant 16 (default: 16) -q quantvalue | --quant quantvalue: quantization (1 (whole note), 2 (half), 4 (quarter), 8 (quaver), 16 (semiquaver)). (default: 16) ex: -q 8, --quant 16 (default: 16) -b beautyvalue | --beauty beautyvalue: beauty value (value > 0). (default: 0) ex: -q 8, --quant 16 (default: 16) -s | --sequencing: just sequencing (sequencing and processing are default if both parameters -s and -p are omitted) -p | --processing: just processing, (sequencing and processing are default if both parameters -s and -p are omitted) --connection: don't try to make connections. By default, jsequencer2lily try to make connections to hardware ports, and to jack-keyboard
./jsequencer2lily -f new_york.ly ./jsequencer2lily -f new_york.ly --title 'Let it Be' --time 4/4 --tempo 80 --key CM ./jsequencer2lily -f new_york.ly --quant 16 --title 'Let it Be' --composer 'The Beatles' --opus 'Ballad, pop music' --tagline 'Music engraving by LilyPond. File generated by jsequencer2lily (GNU sequencer)' --clef treble --time 4/4 --tempo 80 --key CM --delaybars 2 --pdf yes --viewscore yes --midi yes ./jsequencer2lily -f new_york.ly --title 'Let it Be' --time 4/4 --tempo 80 --key CM --sequencing --debug ./jsequencer2lily -f new_york.ly --title 'Let it Be' --time 4/4 --tempo 80 --key CM --processing --debug -q 16 --beauty 100
LINKS AND DOWNLOAD
- project wiki: http://wiki.joanillo.org/index.php/Jsequencer2lily:_README
- download: Fitxer:Jsequencer2lily-1.0.0.tar.gz
- video: http://youtu.be/o5CLrfvZB9k
1. I listen klick too loud. Different solutions: try another metronome, use a mixer in you connection chain... but the simple way is to edit klick sounds and atenuate the signal. klick audio samples are found in a typical installation in /usr/share/klick/samples
2. Can I use jsequencer2lily with OS X? Sure, but the developer didn't already tested. JACK and lilypond have their OS X version. Is possible to install Evince (pdf visualizer) in OS X. If you want to use another pdf reader is necessay to change a line of code and recompile. Also is possible to use --pdf no option.
3. Can I use jsequencer2lily with Windows? In theory yes, since JACK and lilypond have their Windows versions. However, the developer can't give no support.
- Triplets are not implemented in this version, and it will not be implemented in the near future.
- demi-semiquavers (quantization = 32)
ABOUT THE AUTHOR, LICENCE AND SUPPORT
Copyright (C) 2013 - Joan Quintana Compte (joanillo) - joanqc at gmail.com
Using and testing this software is very welcome. Not hesistate to ask any questions.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details, in COPYING.TXT file. If you have not received a copy of this file along with this program, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
creat per Joan Quintana Compte, Novembre 2013