function param = param_skeleton()
% Algorithm parameter skeleton for Matthias Mauch's thesis code
% Parameters concerning input, output and verbosity are not in here.
param.beattype = 'auto';
param.dsp.extractiontype = '';
param.dsp.resampleto = [];
param.dsp.blocksize = [];
param.dsp.hopsize = [];
param.dsp.fmin = [];
param.dsp.fmax = [];
param.dsp.nSbin = [];
param.dsp.noterange = [];
param.dsp.minMidinote = [];
param.dsp.maxMidinote = [];
param.dsp.medfiltlength = []; % length of a median filter in frames
param.dsp.nrmsmoothlen = [];
param.dsp.bassbin13 = true; % is there a thirteenth bin corresponding to "no bass"
param.dsp.norm = 'max';
param.dsp.separatenormalising = true;
param.dsp.mutesilent = false;
param.dsp.manualbeats = false;
param.dsp.nochord05 = false;

param.newchroma.partials1 = 0.6;
param.newchroma.partials2 = 0.6;
param.newchroma.standardise = true;
param.newchroma.whitemethod = 'standardize';

param.dbn.name = ''; % name of the model 
param.dbn.nMeter = []; % number of different meters
param.dbn.nMetpos = []; % number of metric positions (in the different meters)
param.dbn.nBass = [];
param.dbn.keyset = {}; % set of key names 
param.dbn.key_c = []; % strange variable c for expert function
param.dbn.nKey = [];
param.dbn.chordclassset = {}; % set of chord classes
param.dbn.nChord = [];
param.dbn.chordpcs = []; % chord pitch class set (binary vector of length 12)
param.dbn.chordbassnotes = [];
param.dbn.basshaschordnotes = false;
param.dbn.chromavar = []; % variance of the chroma vector, applicable in manually set model
param.dbn.basschromavar = []; % same as above for the bass
param.dbn.beattrans = []; % transition probability to next beat (manually set)
param.dbn.keychange = []; % key change probability (manually set)
param.dbn.nominalbass = []; % probability of nominal bass pc sounding on first beat of chord
param.dbn.nominalbass_inner = []; % as above, but on the rest of the beats of a chord
param.dbn.chordchange = []; % one minus prob of chord change at different beats
param.dbn.infermpe = true;
param.dbn.inferencebypart = false;

param.seg.type = ''; % "standard" segmentation, with automatic "editor" intervention, "none", or "manual" segmentation, tc.
param.seg.beattype = ''; % what kind of beat tracking
param.seg.chroma = ''; % what kind of chroma (not just wide or treble, but also which techinque)
param.seg.quantile = []; % quantile as in ISMIR paper equation (3)
param.seg.editor = false; % if true, look for frequent sub-segments
param.seg.beat_pairs = false; % pairing up beats for decreased chance of random match
param.seg.medfilt_length = []; % length of median filter over similarity matrix
param.seg.barline_spacing = []; %
param.seg.thresh_beat = []; % beat similarity has to be at least this
param.seg.minlength = []; % min length of segment
param.seg.maxlength = []; % max length of segment
param.seg.dynamic = false; % use dynamic time warping
param.seg.standardise = false; % 
param.seg.thresh_seg = []; % take segments over this threshold (in units above std)
param.seg.inferenceoverlap = 8;
