Skip to content

Instantly share code, notes, and snippets.

@niiicolai
Created April 9, 2021 00:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save niiicolai/34caafa3b51eab226cc1577a0cfcfc5e to your computer and use it in GitHub Desktop.
Save niiicolai/34caafa3b51eab226cc1577a0cfcfc5e to your computer and use it in GitHub Desktop.
def get_shifted_data_array(self):
"""Returns the audio audio shifted either left or right
using zeros matching the phase shift in a given direction"""
# Calculate number of shifts
shifts = np.zeros(int(self.__sample_rate * abs(self.__phase_shift)))
# self.__sample_rate => 44100
# abs(self.__phase_shift) => et tal mellem 0 og 1.6
# lad os sige at det i dette eksempel er 0.5
# self.__sample_rate * abs(self.__phase_shift) = 44100 * 0.5 = 22050 antal nuller
# før amplitude dataen
# shifts => [0, 0, ..., 0] (22050 nuller)
# For at beregne antal nuller tilgængelige til phase shifting, se nedenstående:
# Bemærk dette step ikke bliver brugt, men kan hjælpe med det større billede
# possible_shifts = np.zeros(int(self.__sample_rate * self.__possible_duration))
# self.__sample_rate => 44100
# self.__possible_duration => præcis 1.6 (ikke en range som med phase shift)
# self.__sample_rate * self.__possible_duration = 44100 * 1.6 = 70560 antal nuller
# Bemærk ovenstående tal betyder vi kan tilføje 70560 antal nuller på venstre side, højre side
# eller fordelt skævt eller ligeligt på begge sider
# possible_shifts => [0, 0, ..., 0] (70560 nuller)
# Copy original data
copied_data = cp.copy(self.__data)
# Et array som indeholder amplitude data for selve audio filen
# Dette array indeholder både nuller, negative og positive tal.
# Da værdierne i i dette tilfælde er forskelligt fra lydfil til lydfil
# så lader vi som om (for eksemplets skyld) copied_data ser ud på følgende måde:
# copied_data => [1, 2, 3, 4]
# Calculate missing shifts
missing_zeros = int(self.__sample_rate * self.__possible_duration)-len(shifts)
# self.__sample_rate => 44100
# self.__possible_duration => præcis 1.6 (ikke en range som med phase shift)
# len(shifts) => længden af shifts variablen, i dette eksempel: 22050 (nuller)
# int(self.__sample_rate * self.__possible_duration)-len(shifts) => 70560 - 22050 = 48510
# Tallet, 48510, betyder at vi skal tilføje 48510 nuller på højre side
# missing_zeros => 48510
missing_shifts = np.zeros(abs(missing_zeros))
# missing_shifts => [0, 0, ..., 0] (48510 nuller)
# Herfra er der 3 vigtige parameter:
# shifts => S[0, 0, ..., 0] (22050 nuller)
# copied_data => [1, 2, 3, 4]
# missing_shifts=> M[0, 0, ..., 0] (48510 nuller)
# Bemærk jeg har indsat et 'S' og et 'M' foran
# shifts og missing_shifts variablen så vi kan
# se forskel på dem i efterfølgende kommentarer.
# Insert shifts before
copied_data = np.append(shifts, copied_data)
# copied_data => S[0, 0, ..., 0] + [1, 2, 3, 4]
# Insert missing shifts after
copied_data = np.append(copied_data, missing_shifts)
# Bemærk nedenstående er 3 eksempler på det samme:
# copied_data => S[0, 0, ..., 0] + [1, 2, 3, 4] + M[0, 0, ..., 0]
# copied_data => [0, 0, ..., 0 (22050 nuller), 1, 2, 3, 4, 0, 0, ..., 0 (48510 nuller)]
# copied_data => [0, 0, ..., 0, 1, 2, 3, 4, 0, 0, ..., 0]
# Returner koden til der hvor funktionen bliver kaldt/kørt
return copied_data
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment