Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
QMIDIARP(1)		    General Commands Manual		   QMIDIARP(1)

NAME
       qmidiarp	- MIDI arpeggiator and LFO

SYNOPSIS
       qmidiarp	[OPTION] [file]
       qmidiarp	{ --help | --version }

DESCRIPTION
       QMidiArp	 is  an	advanced MIDI arpeggiator, programmable	step sequencer
       and LFO.	 It runs with either JACK MIDI or ALSA MIDI. It	can  hold  any
       number of arpeggiator or	LFO modules running in parallel. The arpeggia-
       tor  modules produce sequences depending	on the notes sent to their in-
       put port, which is typically connected to a  keyboard  or  another  se-
       quencer.	 The step sequencer modules allow you to create	simple linear,
       monophonic and globally transposable sequences  similar	to  the	 first
       analog  sequencers. The MIDI LFOs independently produce MIDI controller
       data of adjustable waveform, time resolution, amplitude	and  duration.
       For each	module,	an input note filter is	available, and the output port
       and  channel  can be set	independently.	Since the modules use a	common
       sequencer queue,	they  are  automatically  in  sync  with  each	other.
       QMidiArp	 works with an internal	tick resolution	of 192 ticks per beat.
       The queue can be	synchronized to	an incoming MIDI realtime clock	or  as
       a  JACK transport client. Most of the relevant control elements are ac-
       cessible	via  MIDI  controller  through	a  MIDI-learn  infrastructure.
       QMidiArp	 also  has  a log tool displaying the history of incoming MIDI
       events in colors	depending on their type.  QMidiArp is based on the Qt4
       toolkit.

   General Operation
       When no commandline options are given, QMidiArp starts as a  JACK  MIDI
       client  with  an	input port and two output ports. For starting QMidiArp
       as an ALSA client, use the -a option.  A	new arpeggiator	or LFO	module
       can  be	created	 by clicking one of the	Add Arp..., Add	LFO...	or Add
       Step Sequencer...  buttons, which will show a new tab with  the	chosen
       module  in  the	main area. The modules can be renamed or removed using
       the corresponding buttons or menu functions. Modules  can  be  detached
       from  the main window to	control	and view them in parallel. They	can be
       brought back to the main	window again by	clicking on the	 icon  on  the
       left  side  of each module title	bar. They can also be aligned side-by-
       side within the same window if the  main	 window	 is  stretched	suffi-
       ciently	before	reinserting  a module. The entire setup	containing all
       arps, sequences and LFOs	in the tab bar along with the  parameters  set
       in  the	Settings  window can be	saved to or loaded from	a QMidiArp XML
       file (.qmax). The tempo of the queue can	be set in beats	per minute and
       affects all modules. The	queue is started and stopped by	the blue arrow
       button.

   MIDI	Clock operation	(ALSA MIDI only)
       In ALSA mode, QMidiArp runs using its own clock and tempo, but  it  can
       optionally  use incoming	MIDI clock events as clock and start/stop con-
       trol source.  If	the MIDI clock	button	right  of  the	tempo  box  is
       pressed,	 the running ALSA queue	is stopped, and	QMidiArp will wait for
       an incoming "MIDI Clock Start" event from an external source  connected
       to  QMidiArp's  MIDI  input.  Once this event is	received, the queue is
       started using MIDI realtime clock events	as clock source. QMidiArp will
       best remain in sync with	the incoming MIDI clock	if its internal	 tempo
       value  (see  above)  approximately  corresponds to that of the incoming
       clock. The MIDI clock tempo is, however,	measured while	the  queue  is
       running.	 Therefore,  if	 the  tempos  of  the  MIDI  clock and that of
       QMidiArp	differ,	synchronization	should become stable from  the	second
       queue  start.  The  queue will stop when	a MIDI Clock Stop event	is re-
       ceived. During MIDI Clock operation, QMidiArp's	own  clock  start  and
       stop  functions	as  well as adding or loading new setups are disabled.
       They are	enabled	again by unchecking the	MIDI clock button.

   JACK	Transport Client Operation
       When the	Jack Transport Connect button is pressed, QMidiArp will	try to
       connect to a running Jack server	and then function as a Jack  Transport
       client,	i.e.  set  its tempo and remain	synchronized to	a running Jack
       Transport master. Note that QMidiArp will restart its queue  from  zero
       whenever	 Jack transport	is starting regardless of Jack Transport's po-
       sition. This also applies in case of a looping  Jack  Transport	queue.
       The Jack	button will be released	automatically if QMidiArp gets discon-
       nected  from  Jack by a possible	Jack shutdown or if Jack is not	avail-
       able at connection time.

       Note: MIDI Clock	and Jack Transport button states will  be  saved  with
       the  QMidiArp  session file, and	get active or inactive when a new ses-
       sion file is loaded.

   Arpeggiator Modules
       QMidiArp's arpeggiators can produce complex patterns derived  from  the
       notes  played  on  a MIDI keyboard. QMidiArp's arpeggiator modules were
       inspired	by the MAP1 hardware arpeggiator by Rudi Linhard.

       Input and Output	panels

       Each arpeggiator	has an Input and an Output panel. The Input panel  de-
       fines the note range and	the MIDI channel to which the arp is assigned.
       Notes  that pass	this Input filter are sorted by	pitch and added	to the
       internal	note buffer of the arpeggiator.	Incoming  notes	 that  do  not
       match  any  filter can either be	discarded or forwarded to a selectable
       MIDI port (see Settings ). The Output panel holds settings for the MIDI
       channel and output port to which	the arpeggiator	notes will be sent.

       Arpeggiator Patterns

       Arpeggio	patterns can be	selected and  edited  in  the  Pattern	panel.
       Pattern	presets	 are selectable	from a combo box. The currently	active
       pattern is displayed as a piano roll type screen	showing	the base notes
       as streaks. The y-scale of the graphics window corresponds to the index
       of the notes in the pattern. Octave changes (see	Editing	patterns ) are
       shown as	additional horizontal lines.  The notes	 that  are  eventually
       sent  depend  on	 the  input notes received by the arpeggiator. The re-
       ceived notes notes are attributed in ascending order to the  notes  de-
       fined in	the pattern. For example, a single streak on the bottom	of the
       arp display ("simple" presets) means that at the	first pass through the
       pattern,	 the  lowermost	 note  played on the keyboard is played.  If a
       chord is	played on the keyboard and only	one note  is  present  in  the
       pattern,	 only  the  lowermost pressed note is output at	the first pass
       through the pattern. For	the following repetitions of the pattern,  the
       chosen  "repeat mode" is	used to	determine the following	notes.	If the
       pattern contains	stacked	note streaks (chord mode),  chords  played  on
       the  keyboard are also output as	chords with polyphony up to the	number
       of notes	defined	in the stack.

       Repeat Mode

       This setting defines the	behavior of the	arpeggio over several  repeti-
       tions  of  the pattern when the number of notes pressed on the keyboard
       is higher than the number of notes present in the pattern.  When	Repeat
       Mode is "Up", the next higher note played on the	keyboard is played  at
       each  repetition.  With	"Down",	 the next lower	note is	played.	With a
       single note present in the arp pattern, this creates  classical	linear
       arpeggios.  This	 way even simple patterns like "01" (or	even "0") will
       generate	a complete arpeggio.  When "Static" is selected, this  classi-
       cal  arpeggio  mode  will be disabled, and the output notes remain con-
       stant.

       Trigger mode

       QMidiArp's arpeggiators can run in three	modes. "No trigger" will cause
       the arp running continuously in synchronization with  the  internal  or
       external	 clock	source.	 Even  when new	notes are played, they will be
       output quantized	to the running queue. "Kbd restart" will cause a reset
       of the playhead position	upon the next note to be output, but the  out-
       put  pattern  stays  quantized  to the queue. When "Kbd trigger"	is se-
       lected, each new	note played in stakato will trigger the	 pattern  with
       the timing of the played	note.

       Editing Arp patterns

       Arp  patterns are defined by a text sequence containing the notes them-
       selves as numbers along with control changes for	chord, tempo, velocity
       and octave changes. When	the Edit pattern button	in the	pattern	 panel
       is  clicked,  the  current pattern preset appears as a text input line.
       The edited pattern can be stored	in the preset list by clicking on  the
       Store  pattern button. The currently active pattern can be removed from
       the preset list by clicking on the Remove pattern  button.  All	preset
       patterns	 are immediately saved in the .qmidiarprc resource file	when a
       pattern is stored or removed, and the new pattern list is  made	avail-
       able  to	 the  other arps in the	tab bar. Pattern presets are automati-
       cally loaded on each application	start.

       The syntax for the pattern text is as follows:

       0..9 : Note indices
	  + : One octave up
	  - : One octave down
	  = : Reset to standard	octave
	  > : Double tempo
	  < : Half tempo
	  . : Reset to standard	tempo
	( ) : Chord, begin..end,
	      e.g. (012) would be a chord of the
	      lowermost	three notes in the buffer
	  / : Volume up	by 20%
	  \ : Volume down by 20%
	  d : Double length
	  h : Half length
	  p : Pause

       Any token is valid until	the end	of a pattern is	reached. The  token  >
       will  e.g.  double  the	tempo  for all following notes of the pattern.
       When the	loop jumps back	to the beginning of the	pattern, the tempo  is
       reset to	its initial value, i.e.	a quarter note.

       Random

       The  timing,  velocity and length of the	output notes can be randomized
       using the sliders in the	Random panel. These settings can  be  used  to
       make  the  arpeggiator  sound  less  mechanical,	but if they are	set to
       higher values, they add interesting accents to the patterns.

       Envelope

       QMidiArp	can modulate the velocity of the arpeggios  with  an  envelope
       function	 defined by Attack time	and Release time. If an	attack time is
       set, the	velocities of the output notes are ramped up during the	attack
       time defined in seconds.	If a release time is set, notes	released  from
       the  keyboard are continued to be output	while their velocity is	ramped
       down linearly and until the release time	has reached its	end. The enve-
       lope function only makes	sense if the sound driven by the arp is	veloc-
       ity-sensitive. It works best with highly	polyphonic  patterns  such  as
       "Chord Oct 16 A".

       Groove

       The  Groove sliders control a linear shift of timing, length and	veloc-
       ity within each beat of the output pattern. This	can be used to	create
       swing  timing and accent. The Groove settings are adjusted for all arps
       simultaneously.

   LFO Modules
       In parallel to the arps,	QMidiArp can send MIDI controller data in form
       of a low	frequency oscillator (LFO) to the  assigned  output.  The  LFO
       data consist of controller events that are in sync with the arpeggiator
       queue. The queue	has to be in running state to enable the LFO. Each LFO
       module  has  a  waveform	panel to define	the shape of the outgoing data
       and an output panel to define MIDI Channel, ALSA	 port  and  controller
       number  to  be produced.	The waveform can currently be set to Sine, Saw
       Up, Saw Down, Triangle, Square and Custom. The frequency	of the LFO can
       be set in muliples and divisors of the arp tempo, such  that  frequency
       of  1  produces one full	wave per beat. If frequencies lower than 1 are
       selected, the length of the wavetable has to  be	 adjusted  correspond-
       ingly to	produce	a full wave. The time resolution of the	LFO determines
       the  number  of events produced every beat and can be adjusted to up to
       192 events per beat.  Amplitude and offset of the waveform can  be  ad-
       justed  from  0...127. Low resolutions lead to audibly discrete rythmic
       controller changes whereas higher resolution values lead	to  more  con-
       tinuous waves.

       Muting individual wave points

       Individual  wave	 points	can be muted/unmuted by	clicking on the	corre-
       sponding	location in the	wave display with the right mouse  button.   A
       muted wave point	is shown in darker color.

       Custom Waveforms

       When  Custom is selected, the waveform can be drawn with	the left mouse
       button in the waveform display. A calculated waveform is	copied to  the
       custom  waveform	 whenever it is	being modified by the mouse. This will
       overwrite the previous custom waveform  with  the  currently  displayed
       waveform.  As  all LFO operations, drawing and muting can be done while
       the queue is running, and becomes effective immediately.

       Play direction and looping

       The play	mode can be switched between:

	 ->_> :	Forward	and Loop
	 <_<- :	Backward and Loop
	 ->_< :	Forward	and Bounce
	 >_<- :	Backward and Bounce
	 ->_| :	Forward	Single shot
	 |_<- :	Backward Single	shot

       The direction and loop settings apply immediately when changed  on  the
       fly.

       Recording

       The  LFO	 records  incoming  controller	data  as selected in the Input
       panel, when the Record button is	pressed. Note that the	Record	button
       itself  can  be	attributed to a	MIDI toggle controller so that it pro-
       vides a convenient implementation of a controller  motion  sampler  and
       looper.

       LFO Input panel

       The  input  panel contains settings on which MIDI CC is to be recorded,
       how the LFO acts	to note	events received	on the input. As the arpeggia-
       tors, the LFO can be restarted or (re-) triggered by  notes  played  on
       the  keyboard,  and the wave output can be stopped or not when Note Off
       events are received on the input	Channel

       LFO Output panel

       The LFO output panel contains the port, channel and  controller	number
       settings	 of  the  LFO data produced by each LFO	tab. You can also mute
       each LFO	wave.

   Step	Sequencer Modules
       By clicking Add Step Sequencer...  in the control tool bar, a  new  Seq
       module  can  be	added  to the tab bar. Each of these modules produce a
       simple linear (monophonic) sequence, similar to the first analog	 hard-
       ware  sequencers.  The Seq modules are controllable while running, also
       in a similar way	to analog step sequencers.

       Programming a sequence

       As QMidiArp's LFO modules, the step sequencer can be programmed by  ad-
       justing	notes  with left mouse clicks on the sequence display. The oc-
       tave range is fixed to 4. The lowest note is C2 if the global transpose
       is set to 0. Notes can be muted with the	right  mouse  click.  The  se-
       quence length can be adjusted between 1 and 8 beats, and	the time reso-
       lution  can be set to values between 1 and 16 per beat. A resolution of
       4 means that 4 notes are	output every beat, i.e.	sixteenth notes.   The
       sequence	 can  also  be	programmed using the Record function. When the
       Record button is	pressed, notes received	on  the	 input	port  will  be
       recorded	step-by-step starting from the last modified note. Programming
       can be done on the fly also when	the sequencer queue is running.

       Controlling the sequence	globally

       There  are  sliders to adjust the global	velocity (volume), note	length
       and transpose of	the sequence in	semitones.

       Seq Input and Output panels

       The Seq Input panel determines how to handle incoming notes on the MIDI
       Channel set in the channel box. If Note is checked, the	sequence  will
       be  globally  transposed	 with the incoming note	as transpose value. If
       Velocity	is checked in addition,	the sequence will  output  notes  with
       the  same  velocity as that received on its input. The Input panel also
       determines how the sequence behaves when	incoming notes	are  received.
       It  can be restarted, triggered and stopped with	the timing of received
       notes as	the LFO	modules.

       The Seq Output panel is equivalent to that of arpeggiator and LFO  mod-
       ules.

       Note  that accents within a pattern can be produced by running LFO mod-
       ules in parallel	to the Seq module, and by sending to the same  channel
       and port	as the Seq module.

   Settings
       The Settings window allows one to configure if and to which port	incom-
       ing  events that	do not match any module's input	filter are forwarded (
       unmatched events). It also allows one  to  set  whether	incoming  con-
       troller	events	are  recognized	for muting and controlling the modules
       separately. If this option is set, QMidiArp will	recognize MIDI control
       events that can be attributed to	different parameters (see MIDI Control
       ). By checking the compact module style all new	created	 modules  will
       show with small GUI elements to be more economic	in space when distrib-
       uted as separate	windows	over the desktop.

       All  settings  in  this dialog are stored along with the	module data in
       the qmax	session	file.

   MIDI	control
       QMidiArp	supports MIDI control events if	the  Modules  controllable  by
       MIDI CC option is checked in the	Settings dialog.

       MIDI Learn

       Controllers  can	be attributed by right-clicking	on the sliders or mute
       checkbox	in each	module and selecting MIDI Learn.  QMidiArp  will  then
       wait for	MIDI control events, and moving	a MIDI controller connected to
       QMidiArp's input	will attribute this controller to the control item. It
       is possible to add several MIDI controllers to one item.	If MIDI	Forget
       is  selected, all controllers for that item are removed.	If Cancel MIDI
       learning	is selected, the learn process is stopped.

       Note that by default, mute controllers are interpreted as toggles, i.e.
       the mute	state is toggled on reception of a value of 127	from  the  at-
       tributed	controller.

       Control Editor

       The  Control  Editor  is	accessible from	the View menu. Controls	can be
       edited by MIDI control number, channel, and  the	 minimum  and  maximum
       values  that are	sent to	the control item. Mute controllers have	a spe-
       cial behaviour. If minimum and maximum are equal, the  controller  acts
       as toggler upon reception of the	adjusted value.	 If minimum is differ-
       ent from	maximum, the corresponding module will be muted	upon reception
       of minimum and unmuted upon reception of	maximum	as values.

       If  Remove  is  pressed,	 the  currently	selected line will be removed,
       pressing	Revert reloads the current controller settings.	Pressing  Can-
       cel  quits  the control editor without applying changes,	and only if OK
       is pressed, the edited control list becomes active.

   Global Storage
       There is	another	dock window available for storing and  restoring  most
       of  the	parameters of all modules at once. In this window, each	module
       and its storages	appear as a  column,  the  first  column  representing
       switches	 for  all modules globally. When the small Store button	on the
       left is clicked,	all modules will store their parameters	in a  location
       given  by  the current row, and the next	available storage location ap-
       pears. Module storages can be recalled by clicking on  the  buttons  of
       each  individual	module or globally (numbered buttons in	the first col-
       umn). Storage locations can be removed again by clicking	on the "arrow"
       button on the bottom of the list.  When a new module is added at	a time
       when storage locations already exist for	other modules, the storage lo-
       cations for the new module will be empty	and can	 be  filled  by	 using
       Store again at this location.

       When QMidiArp is	running, the switch behavior will depend on the	selec-
       tion made in the	comboboxes in the first	row of the window.

       End  of	will  cause parameter switches to occur	when the module	in the
       second combobox reaches its pattern end.	When individual	 switches  are
       done  the  module  in  the  column of the clicked module	determines the
       switch time.

       After will do parameter switches	at the end of the number of beats  se-
       lected in the second combobox after the restore button is clicked.

       The  switch  can	 be done by MIDI controller assigned by	the MIDI Learn
       context menu of the top button of each column. Note that	it is the  the
       controller value	that corresponds to the	storage	location, and that you
       may  want  to  adjust  the range	of controllers to your needs using the
       MIDI Control Editor With	the Global Storage handler, QMidiArp  can  act
       as a simple but handy live sequencer tool.  But the Golbal Storage but-
       ton  in the View	menu and in the	main toolbar toggles visibility	of the
       Global Storage window.

   Event Log
       The Event Log displays incoming MIDI events. It	is  displayed  in  the
       bottom area by default, but can be hidden if not	needed or set floating
       as a top-level window on	the desktop. Logging can also be disabled gen-
       erally or for MIDI Clock	events only.

   Example Files
       There  are  currently  three demo arpeggios.  The demo.qma arpeggio was
       intended	to be used with	the following sound types: Ch 1:  Marimba,  Ch
       2: Celesta, Ch 3: Acoustic Bass,	but you	can get	interesting results if
       you use other instrument	settings.

       The  demo_seqlfo.qmax  setup shows the use of the new sequencer and LFO
       modules playing in parallel. The	sequencer outputs should be routed  to
       percussive  synthesizer sounds. The LFO data is intended	to act on fil-
       ter cutoff, which has the standard  controller  CC#74.  ZynAddSubFX  by
       Paul  Nasca reacts on these filter cutoff controllers. The "Bass	1" and
       "Plucked	3" presets from	this synthesizer  work	well  with  this  demo
       file.

OPTIONS
       --portCount <num>
	      Set  the number of available ALSA	output ports to	<num>. The de-
	      fault is 2.

       --help Print possible command-line options and exit.

       --version
	      Print version information	and exit.

       --alsa Use the ALSA MIDI	backend

       --jack Use the JACK MIDI	backend	(default)

       file   Name of a	valid QMidiArp (.qmax) XML file	to be loaded on	start.

FILES
       *.qmax
	      QMidiArp XML files containing session data in XML	text format.

EXAMPLES
       Example QMidiArp	files  can  be	found  in  /usr/share/qmidiarp	or  in
       /usr/local/share/qmidiarp

NOTES
       Errors and warnings are written to stderr(3).

SUPPORT
       qmidiarp-devel@lists.sourceforge.net

AUTHORS
       Frank  Kober,  Nedko  Arnaudov, Guido Scholz and	Matthias Nagorni. This
       manual page was written by Frank	Kober <emuse@users.sourceforge.net>.

				  2011-11-07			   QMIDIARP(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=qmidiarp&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help