Next: , Previous: Database Configuration Files Example, Up: Database Configuration Files Example


8.2.1 `insts' File Example

This specifies five dynamic levels, two tuning systems (semitones and quartertones) and a few orchestral instruments along with their pitch ranges.

# -*- Conf -*-
# sample SPORCH instrument def file

# -----------------------------------------------------------------------------
# this file (named `insts' by default) must appear in the root sound file 
# directory.  it tells sporchdb how to gather all of the analyzed data and 
# organize it, and also specifies a few default parameters
# -----------------------------------------------------------------------------


# comment
// another comment
/* one more...
   comment */

# "a string"
# 'another string'
# yet_another_string
# "string with \"quotes\""
# "string\\with\\backslashes"
# quoteless\ string\ with\ spaces

# ("a" "list" "of" "strings")
# (another one)
# "list of only one string"
# (2 4 6 8 10)
# 12

# specifies the number of dynamic levels in the database (mandatory, defaults 
# to 6).  the higher this number is, the more refined sporch's search is (so a 
# value of 20 or more might be reasonable, for example)
n-dyns = 5
# specifies the number of dynamic levels that appear in the output.  `n-dyns' 
# affects sporch's search and the amount of information stored in the database 
# while `n-user-dyns' specifies the range of values the user sees.  this 
# setting is here because the number of dynamic levels specified above might 
# not be useful for composing.  it also affects how sporchdb interpolates 
# missing spectra (more specifically it affects the distance between different 
# pitch/dynamic levels) and becomes the default setting when the database is 
# loaded.  a reasonable value for this is between 6 and 8 since that's 
# approximately how many notated dynamic levels there are (the default is 6)
/*
n-user-dyns = 8
*/

# defines a tuning.  peaks are extracted separately for each one specified.  
# right now only equal temperaments are possible.  if none are specified the 
# database is compiled for 12-tone equal temperament
tune {
  # a unique, case insensitive id for this tuning
  name = "12tet"
  # 2 (the default) indicates that the tuning is based on divisions of one 
  # octave (a 2:1 frequency ratio).  a value of 3, for example, specifies a 
  # tuning based on a justly tuned octave and a fifth (a tritave)
  /*
  oct = 3
  */
  # the number of divisions per octave (or whatever was specified in `oct' 
  # above).  this is the default
  n-divs = 12
  # the number of microtones per division (this multipled by `n-divs' gives the
  # actual number of divisions per octave).  `n-divs' and `n-mics' together 
  # determine how data appear in the output.  1 is the default
  n-mics = 1
  # `base-freq' and `base-pitch' together determine how to translate 
  # frequencies into pitch numbers.  pitch number `base-pitch' has a frequency
  # of `base-freq'.  the numbers here are the defaults
  base-freq = 440
  base-pitch = 69
  # the minimum frequency distance between peaks (1.0 is a semitone here)
  inst-min-fdist = 1.0
  source-min-fdist = 1.0
}
/*
tune {
  name = "qtones"
  n-divs = 12
  n-mics = 2
  base-freq = 440
  base-pitch = 69
}
*/

# sets the default tuning
default-tune = 12tet

# specifies the farthest distance (pitchwise and dynamic-levelwise) sporchdb 
# searches when interpolating missing data.  if data is missing for a certain 
# pitch and dynamic level and no other data exists within this distance 
# (according to the tuning and `n-user-dyns' above) then the database won't 
# contain peaks for that pitch/dynamic.  this probably shouldn't be more than 
# 2 (a semitone in 12-tone equal temperament, the default) unless there is a 
# lot of missing sound samples
interp-dist = 2

# specifies whether to choose lower over higher or vice-versa when selecting 
# neighboring spectra to interpolate (options are `none', `low' and `high'--the 
# defaults are `low')
pitch-pref = low
dyn-pref = low

# these default settings may also appear here (note: they can also appear in 
# the `.sporch' init file--the values in this file take precendence over 
# `.sporch' file values)
/*
db-name = ...
db-conf-name = ...
tmp-file-ext = ...
use-tmp-files = ...
rm-extra-tmp-files = ...
*/
# integer specifying the highest power used to determine FFT sizes.  3 
# specifies the FFT size must be some multiple of powers of 2 and 3.  5 would 
# specify that it must be a multiple of 2, 3 and 5, etc..  The default value is
# 2 (only power of 2 sizes allowed)
fft-pow-limit = 3


# WOODWINDS

# `inst' followed by braces defines an instrument
inst {
  # this is a unique, case insensitive name for the instrument
  name = "flute"
  # this is a regular expression or list of expressions indicating which 
  # peak extractions belong to this instrument--it matches ids specified in the
  # `conf' files
  ids = "flute"
  # the lowest and highest pitches of this instrument (in the default tuning 
  # specified above)--ranges for other tunings will be calculated from these
  minp = 60
  maxp = 96
  # a "practical" highest pitch for this instrument--pitches above this value 
  # get increasingly worse scores during the search process so they are chosen 
  # less often.  (there is also a `pract-minp' setting)
  pract-maxp = 94
}
/*
inst {
  name = "alto flute"
  ids = "alto flute"
  minp = 55
  maxp = 86
  pract-maxp = 84
}
*/
/*
inst {
  name = "bass flute"
  ids = "bass flute"
  minp = 48
  maxp = 79
  pract-maxp = 74
}
*/
inst {
  name = "oboe"
  ids = "oboe"
  minp = 58
  maxp = 91
  pract-minp = 62
  pract-maxp = 86
}
inst {
  name = "clarinet"
  ids = "bfclarinet"
  minp = 50
  maxp = 91
  pract-maxp = 87
}
/*
inst {
  name = "bass clarinet"
  ids = "bass clarinet"
  minp = 37
  maxp = 72
  pract-maxp = 67
}
*/
inst {
  name = "bassoon"
  ids = "bassoon"
  minp = 34
  maxp = 72
  pract-maxp = 69
}
/*
inst {
  name = "alto sax"
  ids = "alto sax"
  minp = 49
  maxp = 80
  pract-minp = 62
}
*/


# BRASS

inst {
  name = "horn"
  ids = "horn"
  minp = 35
  maxp = 77
  pract-minp = 48
  pract-maxp = 72
}
inst {
  name = "trumpet"
  ids = "trumpet"
  minp = 52
  maxp = 82
  pract-minp = 55
  pract-maxp = 80
}
inst {
  name = "trombone"
  ids = "tenortrombone"
  minp = 40
  maxp = 72
  pract-minp = 41
  pract-maxp = 68
}
/*
inst {
  name = "bass trombone"
  ids = "bass trombone"
  minp = 36
  maxp = 71
  pract-maxp = 65
}
*/
inst {
  name = "tuba"
  ids = "tuba"
  minp = 26
  maxp = 67
  pract-minp = 31
  pract-maxp = 58
}


# STRINGS

inst {
  name = "violin"
  ids = "violin"
  minp = 55
  maxp = 103
  pract-maxp = 88
}
inst {
  name = "viola"
  ids = "viola"
  minp = 48
  maxp = 93
  pract-maxp = 79
}
inst {
  name = "cello"
  ids = "cello"
  minp = 36
  maxp = 84
  pract-maxp = 67
}
inst {
  name = "contrabass"
  ids = "bass"
  minp = 28
  maxp = 67
  pract-maxp = 62
}


# PIANO

/*
inst {
  name = "piano"
  ids = "piano"
  minp = 21
  maxp = 108
}
*/


# PERCUSSION

/*
inst {
  name = "bass drum"
  ids = "bass drum"
  # specify `perc' for unpitched instruments--sporch's default method of 
  # extracting peaks also works for noisy instruments and sound sources
  perc
}
*/
/*
inst {
  name = "cymbal"
  ids = "cymbal"
  perc
}
*/
/*
inst {
  name = "snare drum"
  ids = "snare drum"
  perc
}
*/