Module guitarsounds.parameters
Expand source code
class Parameter(object):
"""
A class to store the individual sound parameters
"""
def __init__(self, name, value, info):
self.name = name
self.value = value
self.info = info
class ParameterSet(object):
"""
A class to store multiple parameters as a set
"""
def __init__(self, name, *parameters):
self.name = name
for parameter in parameters:
setattr(self, parameter.name, parameter)
def info(self):
print(self.name)
parameters = [parameter for parameter in self.__dict__.values() if type(parameter) != str]
for parameter in parameters:
print('\t', parameter.name, ':', parameter.value)
class GlobalParameters(object):
"""
A class to store the parameter sets and to be used to assign parameter values to the different functions
"""
def __init__(self, *parameter_sets):
for parameter_set in parameter_sets:
setattr(self, parameter_set.name, parameter_set)
def info(self):
"""
Prints the name and values of every parameter
"""
for parameter_set in self.__dict__.values():
print(parameter_set.name)
parameters = [parameter for parameter in parameter_set.__dict__.values() if type(parameter) != str]
for parameter in parameters:
print('\t', parameter.name, ':', parameter.value)
def more_info(self):
"""
Prints the name, value and info string of every parameter
"""
for parameter_set in self.__dict__.values():
print(parameter_set.name)
parameters = [parameter for parameter in parameter_set.__dict__.values() if type(parameter) != str]
for parameter in parameters:
info = '[' + parameter.info + ']'
print('\t', parameter.name, ':', parameter.value, info)
def change(self, name, value):
"""
Change the parameter with the name `name` from its current value to the specified value
"""
for parameter_set in self.__dict__.values():
parameters = [parameter for parameter in parameter_set.__dict__.values() if type(parameter) != str]
for parameter in parameters:
if parameter.name == name:
parameter.value = value
def sound_parameters():
"""
Function returning the instance of the sound parameters
"""
# General
octave_fraction = Parameter('octave_fraction', 3, 'Fraction of the octave used for octave computations')
fft_range = Parameter('fft_range', 2000, 'Maximum frequency in the Fourier transform plot')
general = ParameterSet('general', octave_fraction, fft_range)
# Onset
onset_delay = Parameter('onset_delay', 100, 'Delay before the onset (attack) to keep when trimming the signal')
onset_time = Parameter('onset_time', 0.005, 'Time interval used to detect the onset in seconds')
onset = ParameterSet('onset', onset_delay, onset_time)
# Envelop
frame_size = Parameter('frame_size', 524, 'Number of samples in the array used to compute a point of the envelop')
hop_length = Parameter('hop_length', 200, 'Number of samples between envelop points')
envelop = ParameterSet('envelop', frame_size, hop_length)
# Log Envelop
start_time = Parameter('start_time', 0.01, 'First point in the log scale envelop')
min_window = Parameter('min_window', None, 'Minimum window size for the log envelop computed from start_time by '
'default')
max_window = Parameter('max_window', 2048, 'Maximum window size for the log envelop in samples')
log_envelop = ParameterSet('log_envelop', start_time, min_window, max_window)
# Fundamental
min_freq = Parameter('min_freq', 60, 'Minimum frequency for the fundamental finding algorithm (Hz)')
max_freq = Parameter('max_freq', 2000, 'Maximum frequency for the fundamental finding algorithm (Hz)')
frame_length = Parameter('frame_length', 1024, 'Frame length in samples to compute the fundamentals across the signal')
fundamental = ParameterSet('fundamental', min_freq, max_freq, frame_length)
# Frequency bins to divide the signal
bass = Parameter('bass', 100, 'Higher cutoff value for the bass bin (Hz), the lower value is zero')
mid = Parameter('mid', 700, 'Higher cutoff value for the mid bin (Hz)')
highmid = Parameter('highmid', 2000, 'Higher cutoff value for the highmid bin (Hz)')
uppermid = Parameter('uppermid', 4000, 'Higher cutoff value for the uppermid bin (Hz)')
presence = Parameter('presence', 6000, 'Higher cutoff value for the presence bin (Hz),'
' the brilliance bin is above this frequency')
bins = ParameterSet('bins', bass, mid, highmid, uppermid, presence)
# Damping
lower_threshold = Parameter('lower_threshold', 0.05, 'lower amplitude treshold for the time damping analysis')
damping = ParameterSet('damping', lower_threshold)
SoundParameters = GlobalParameters(general, onset, envelop, log_envelop, fundamental, bins, damping)
return SoundParameters
Functions
def sound_parameters()
-
Function returning the instance of the sound parameters
Expand source code
def sound_parameters(): """ Function returning the instance of the sound parameters """ # General octave_fraction = Parameter('octave_fraction', 3, 'Fraction of the octave used for octave computations') fft_range = Parameter('fft_range', 2000, 'Maximum frequency in the Fourier transform plot') general = ParameterSet('general', octave_fraction, fft_range) # Onset onset_delay = Parameter('onset_delay', 100, 'Delay before the onset (attack) to keep when trimming the signal') onset_time = Parameter('onset_time', 0.005, 'Time interval used to detect the onset in seconds') onset = ParameterSet('onset', onset_delay, onset_time) # Envelop frame_size = Parameter('frame_size', 524, 'Number of samples in the array used to compute a point of the envelop') hop_length = Parameter('hop_length', 200, 'Number of samples between envelop points') envelop = ParameterSet('envelop', frame_size, hop_length) # Log Envelop start_time = Parameter('start_time', 0.01, 'First point in the log scale envelop') min_window = Parameter('min_window', None, 'Minimum window size for the log envelop computed from start_time by ' 'default') max_window = Parameter('max_window', 2048, 'Maximum window size for the log envelop in samples') log_envelop = ParameterSet('log_envelop', start_time, min_window, max_window) # Fundamental min_freq = Parameter('min_freq', 60, 'Minimum frequency for the fundamental finding algorithm (Hz)') max_freq = Parameter('max_freq', 2000, 'Maximum frequency for the fundamental finding algorithm (Hz)') frame_length = Parameter('frame_length', 1024, 'Frame length in samples to compute the fundamentals across the signal') fundamental = ParameterSet('fundamental', min_freq, max_freq, frame_length) # Frequency bins to divide the signal bass = Parameter('bass', 100, 'Higher cutoff value for the bass bin (Hz), the lower value is zero') mid = Parameter('mid', 700, 'Higher cutoff value for the mid bin (Hz)') highmid = Parameter('highmid', 2000, 'Higher cutoff value for the highmid bin (Hz)') uppermid = Parameter('uppermid', 4000, 'Higher cutoff value for the uppermid bin (Hz)') presence = Parameter('presence', 6000, 'Higher cutoff value for the presence bin (Hz),' ' the brilliance bin is above this frequency') bins = ParameterSet('bins', bass, mid, highmid, uppermid, presence) # Damping lower_threshold = Parameter('lower_threshold', 0.05, 'lower amplitude treshold for the time damping analysis') damping = ParameterSet('damping', lower_threshold) SoundParameters = GlobalParameters(general, onset, envelop, log_envelop, fundamental, bins, damping) return SoundParameters
Classes
class GlobalParameters (*parameter_sets)
-
A class to store the parameter sets and to be used to assign parameter values to the different functions
Expand source code
class GlobalParameters(object): """ A class to store the parameter sets and to be used to assign parameter values to the different functions """ def __init__(self, *parameter_sets): for parameter_set in parameter_sets: setattr(self, parameter_set.name, parameter_set) def info(self): """ Prints the name and values of every parameter """ for parameter_set in self.__dict__.values(): print(parameter_set.name) parameters = [parameter for parameter in parameter_set.__dict__.values() if type(parameter) != str] for parameter in parameters: print('\t', parameter.name, ':', parameter.value) def more_info(self): """ Prints the name, value and info string of every parameter """ for parameter_set in self.__dict__.values(): print(parameter_set.name) parameters = [parameter for parameter in parameter_set.__dict__.values() if type(parameter) != str] for parameter in parameters: info = '[' + parameter.info + ']' print('\t', parameter.name, ':', parameter.value, info) def change(self, name, value): """ Change the parameter with the name `name` from its current value to the specified value """ for parameter_set in self.__dict__.values(): parameters = [parameter for parameter in parameter_set.__dict__.values() if type(parameter) != str] for parameter in parameters: if parameter.name == name: parameter.value = value
Methods
def change(self, name, value)
-
Change the parameter with the name
name
from its current value to the specified valueExpand source code
def change(self, name, value): """ Change the parameter with the name `name` from its current value to the specified value """ for parameter_set in self.__dict__.values(): parameters = [parameter for parameter in parameter_set.__dict__.values() if type(parameter) != str] for parameter in parameters: if parameter.name == name: parameter.value = value
def info(self)
-
Prints the name and values of every parameter
Expand source code
def info(self): """ Prints the name and values of every parameter """ for parameter_set in self.__dict__.values(): print(parameter_set.name) parameters = [parameter for parameter in parameter_set.__dict__.values() if type(parameter) != str] for parameter in parameters: print('\t', parameter.name, ':', parameter.value)
def more_info(self)
-
Prints the name, value and info string of every parameter
Expand source code
def more_info(self): """ Prints the name, value and info string of every parameter """ for parameter_set in self.__dict__.values(): print(parameter_set.name) parameters = [parameter for parameter in parameter_set.__dict__.values() if type(parameter) != str] for parameter in parameters: info = '[' + parameter.info + ']' print('\t', parameter.name, ':', parameter.value, info)
class Parameter (name, value, info)
-
A class to store the individual sound parameters
Expand source code
class Parameter(object): """ A class to store the individual sound parameters """ def __init__(self, name, value, info): self.name = name self.value = value self.info = info
class ParameterSet (name, *parameters)
-
A class to store multiple parameters as a set
Expand source code
class ParameterSet(object): """ A class to store multiple parameters as a set """ def __init__(self, name, *parameters): self.name = name for parameter in parameters: setattr(self, parameter.name, parameter) def info(self): print(self.name) parameters = [parameter for parameter in self.__dict__.values() if type(parameter) != str] for parameter in parameters: print('\t', parameter.name, ':', parameter.value)
Methods
def info(self)
-
Expand source code
def info(self): print(self.name) parameters = [parameter for parameter in self.__dict__.values() if type(parameter) != str] for parameter in parameters: print('\t', parameter.name, ':', parameter.value)