Module: Muze::Core::Frames
- Defined in:
- lib/muze/core/frames.rb
Overview
Shared fixed-size frame slicing for analysis and effects code.
Class Method Summary collapse
Class Method Details
.slice(signal, frame_length:, hop_length:, pad_end: false) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/muze/core/frames.rb', line 9 def slice(signal, frame_length:, hop_length:, pad_end: false) raise Muze::ParameterError, "frame_length and hop_length must be positive" unless frame_length.positive? && hop_length.positive? values = signal.is_a?(Numo::NArray) ? signal.to_a : Array(signal) return [pad_frame(values, frame_length)] if values.length <= frame_length return Muze::Native.frame_slices(values, frame_length, hop_length) unless pad_end frame_count = ((values.length - frame_length).to_f / hop_length).ceil + 1 Array.new(frame_count) do |index| start = index * hop_length pad_frame(values[start, frame_length] || [], frame_length) end end |