Provides a way to indicate the data contained in a “smpl” chunk. That is, information about how the *.wav file could be used by a sampler, such as the file’s MIDI note or loop points. If a *.wav file contains a “smpl” chunk, then
Reader#sampler_info will return an instance of this object with the relevant info.
Returns the number of cents >= 0.0 and < 100.0 the note should be tuned up from the
midi_note field. 100 cents is equal to one semitone. For example, if this value is 50, and
midi_note is 60, then the sample is tuned half-way between MIDI note 60 and 61. If the value is 0, then the sample has no fine tuning.
Returns the ID of the manufacturer that this sample is intended for. If it’s not intended for a sampler from a particular manufacturer, this should be 0. See the list at www.midi.org/specifications-old/item/manufacturer-id-numbers
Constructs a new
the ID of the manufacturer that this sample is intended for. If it’s not intended for a sampler from a particular manufacturer, this should be 0. See the list at www.midi.org/specifications-old/item/manufacturer-id-numbers
the ID of the product made by the manufacturer this sample is intended for. If not intended for a particular product, this should be 0.
the length of each sample in nanoseconds, which is typically determined by converting
1 / sample rate(in seconds) into nanoseconds. For example, with a sample rate of 44100 this would be 22675 nanoseconds. However, this can be set to an arbitrary value to allow for fine tuning.
the MIDI note number of the sample. Should be between 0 and 127.
the number of cents >= 0.0 and < 100.0 the note should be tuned up from the
midi_notefield. 100 cents is equal to one semitone. For example, if this value is 50.0, and
midi_noteis 60, then the sample is tuned half-way between MIDI note 60 and 61. If the value is 0, then the sample has no fine tuning.
the SMPTE format. Should be 0, 24, 25, 29 or 30.
SMPTETimecoderepresenting the SMPTE time offset.
an Array of 0 or more
SamplerLoopobjects containing loop point info. Loop point info can indicate that (for example) the sampler should loop between a given sample range as long as the sample is played.
a String of data specific to the intended target sampler, or nil if there is no sampler specific data.
InvalidSamplerInfoError if the given arguments are can’t be written to a *.wav file.
# File lib/wavefile/sampler_info.rb, line 46 def initialize(manufacturer_id: required("manufacturer_id"), product_id: required("product_id"), sample_nanoseconds: required("sample_nanoseconds"), midi_note: required("midi_note"), fine_tuning_cents: required("fine_tuning_cents"), smpte_format: required("smpte_format"), smpte_offset: required("smpte_offset"), loops: required("loops"), sampler_specific_data: required("sampler_specific_data")) validate_32_bit_integer_field(manufacturer_id, "manufacturer_id") validate_32_bit_integer_field(product_id, "product_id") validate_32_bit_integer_field(sample_nanoseconds, "sample_nanoseconds") validate_32_bit_integer_field(midi_note, "midi_note") validate_fine_tuning_cents(fine_tuning_cents) validate_32_bit_integer_field(smpte_format, "smpte_format") validate_smpte_offset(smpte_offset) validate_loops(loops) validate_sampler_specific_data(sampler_specific_data) @manufacturer_id = manufacturer_id @product_id = product_id @sample_nanoseconds = sample_nanoseconds @midi_note = midi_note @fine_tuning_cents = fine_tuning_cents @smpte_format = smpte_format @smpte_offset = smpte_offset @loops = loops @sampler_specific_data = sampler_specific_data end