Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'power_sequencer/operators/audiosync/mfcc/segment_axis.py')
-rw-r--r--power_sequencer/operators/audiosync/mfcc/segment_axis.py110
1 files changed, 0 insertions, 110 deletions
diff --git a/power_sequencer/operators/audiosync/mfcc/segment_axis.py b/power_sequencer/operators/audiosync/mfcc/segment_axis.py
deleted file mode 100644
index b5b8740c..00000000
--- a/power_sequencer/operators/audiosync/mfcc/segment_axis.py
+++ /dev/null
@@ -1,110 +0,0 @@
-#
-# Copyright (C) 2016-2020 by Nathan Lovato, Daniel Oakey, Razvan Radulescu, and contributors
-#
-# This file is part of Power Sequencer.
-#
-# Power Sequencer is free software: you can redistribute it and/or modify it under the terms of the
-# GNU General Public License as published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# Power Sequencer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
-# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with Power Sequencer. If
-# not, see <https://www.gnu.org/licenses/>.
-#
-import numpy as np
-import warnings
-
-
-def segment_axis(a, length, overlap=0, axis=None, end="cut", endvalue=0):
- """Generate a new array that chops the given array along the given axis
- into overlapping frames.
-
- example:
- >>> segment_axis(arange(10), 4, 2)
- array([[0, 1, 2, 3],
- [2, 3, 4, 5],
- [4, 5, 6, 7],
- [6, 7, 8, 9]])
-
- arguments:
- a The array to segment
- length The length of each frame
- overlap The number of array elements by which the frames should overlap
- axis The axis to operate on; if None, act on the flattened array
- end What to do with the last frame, if the array is not evenly
- divisible into pieces. Options are:
-
- 'cut' Simply discard the extra values
- 'wrap' Copy values from the beginning of the array
- 'pad' Pad with a constant value
-
- endvalue The value to use for end='pad'
-
- The array is not copied unless necessary (either because it is unevenly
- strided and being flattened or because end is set to 'pad' or 'wrap').
- """
-
- if axis is None:
- a = np.ravel(a) # may copy
- axis = 0
-
- l = a.shape[axis]
-
- if overlap >= length:
- raise ValueError("frames cannot overlap by more than 100%")
- if overlap < 0 or length <= 0:
- raise ValueError("overlap must be nonnegative and length must " "be positive")
-
- if l < length or (l - length) % (length - overlap):
- if l > length:
- roundup = length + (1 + (l - length) // (length - overlap)) * (length - overlap)
- rounddown = length + ((l - length) // (length - overlap)) * (length - overlap)
- else:
- roundup = length
- rounddown = 0
- assert rounddown < l < roundup
- assert roundup == rounddown + (length - overlap) or (roundup == length and rounddown == 0)
- a = a.swapaxes(-1, axis)
-
- if end == "cut":
- a = a[..., :rounddown]
- elif end in ["pad", "wrap"]: # copying will be necessary
- s = list(a.shape)
- s[-1] = roundup
- b = np.empty(s, dtype=a.dtype)
- b[..., :l] = a
- if end == "pad":
- b[..., l:] = endvalue
- elif end == "wrap":
- b[..., l:] = a[..., : roundup - l]
- a = b
-
- a = a.swapaxes(-1, axis)
-
- l = a.shape[axis]
- if l == 0:
- raise ValueError(
- "Not enough data points to segment array in 'cut' mode; " "try 'pad' or 'wrap'"
- )
- assert l >= length
- assert (l - length) % (length - overlap) == 0
- n = 1 + (l - length) // (length - overlap)
- s = a.strides[axis]
- newshape = a.shape[:axis] + (n, length) + a.shape[axis + 1 :]
- newstrides = a.strides[:axis] + ((length - overlap) * s, s) + a.strides[axis + 1 :]
-
- try:
- return np.ndarray.__new__(
- np.ndarray, strides=newstrides, shape=newshape, buffer=a, dtype=a.dtype
- )
- except TypeError:
- warnings.warn("Problem with ndarray creation forces copy.")
- a = a.copy()
- # Shape doesn't change but strides does
- newstrides = a.strides[:axis] + ((length - overlap) * s, s) + a.strides[axis + 1 :]
- return np.ndarray.__new__(
- np.ndarray, strides=newstrides, shape=newshape, buffer=a, dtype=a.dtype
- )