(data, normalize)
| 152 | |
| 153 | @staticmethod |
| 154 | def _validate_and_normalize_with_numpy(data, normalize): |
| 155 | import numpy as np |
| 156 | |
| 157 | data = np.array(data, dtype=float) |
| 158 | if len(data.shape) == 1: |
| 159 | nchan = 1 |
| 160 | elif len(data.shape) == 2: |
| 161 | # In wave files,channels are interleaved. E.g., |
| 162 | # "L1R1L2R2..." for stereo. See |
| 163 | # http://msdn.microsoft.com/en-us/library/windows/hardware/dn653308(v=vs.85).aspx |
| 164 | # for channel ordering |
| 165 | nchan = data.shape[0] |
| 166 | data = data.T.ravel() |
| 167 | else: |
| 168 | raise ValueError('Array audio input must be a 1D or 2D array') |
| 169 | |
| 170 | max_abs_value = np.max(np.abs(data)) |
| 171 | normalization_factor = Audio._get_normalization_factor(max_abs_value, normalize) |
| 172 | scaled = data / normalization_factor * 32767 |
| 173 | return scaled.astype('<h').tostring(), nchan |
| 174 | |
| 175 | |
| 176 | @staticmethod |
no test coverage detected