In [31]:
import numpy as np
import scipy
import os

# and IPython.display for audio output
import IPython.display

# matplotlib for displaying the output
import matplotlib.pyplot as plt
import matplotlib.style as ms
ms.use('seaborn-muted')
%matplotlib inline


# Librosa for audio
import librosa
# And the display module for visualization
import librosa.display

# Search audio files in audio directory
def search(dirname):
    try:
        global filenames
        filenames = os.listdir(dirname)
    except PermissionError:
        pass

search("/Users/wonyeong91/Documents/GIT/MusicAnalyzer/audio/kick/")


# check continuos zero value of sample at start and end
def filterZero(yData):
    res = []
    firstZero = 0
    lastZero = -1
    for i in range( 0, len( yData ) ):
        if(yData[i] == 0 or (yData[i]< 7.62939e-04 and yData[i]>-7.62939e-04)):
            if(lastZero == -1):
                firstZero += 1
            else:
                lastZero += 1
        else:
            lastZero = 1
        res = yData[firstZero:len(yData)-lastZero]
    return res


averageY = np.empty(shape=(5000, 1))    
                
for filename in filenames:
    audio_path = os.path.join("/Users/wonyeong91/Documents/GIT/MusicAnalyzer/audio/kick/", filename)
    ext = os.path.splitext(audio_path)[-1]
    if ext == '.wav': 
        sr44100 = 44100
        y, sr = librosa.load( audio_path, sr=sr44100 )
        newY = filterZero(y)
        newSr = sr44100 * 5000 / len( newY )
        librosa.output.write_wav('test.wav', newY, sr44100)
        y2, sr2 = librosa.load('test.wav', sr=newSr )

        print(len(y))
        print(len(y2))
        print("sr2", sr2)

        print(filename)
        
        #generate averageY
        for i in range( 0, len(y2) ) :
            averageY[i] = averageY[i] + y2[i]/len(filenames)
            if(y2[i]/len(filenames) > 0.9 ) :
                print("over value : ", averageY[i], y2[i], len(filenames))
        librosa.output.write_wav('average.wav', averageY, sr44100)

#if(len(y)>5000):
     
averageY2, averageSr = librosa.load('average.wav', sr=44100 )
librosa.display.waveplot( averageY2, 44100 )





audio_path = os.path.join("/Users/wonyeong91/Documents/GIT/MusicAnalyzer/audio/", "Odesza_Above_The_Middle.mp3")
y, sr = librosa.load( audio_path, sr=sr44100 )
librosa.output.write_wav('test.mp3', y, 10000)



IPython.display.Audio(data=averageY2, rate=44100)


21000
5000
('sr2', 13429)
106290__pder__mein-kick-1.wav
24506
5000
('sr2', 21230)
183098__dwsd__bd-detailed.wav
8400
5000
('sr2', 26413)
244194__cima__kick.wav
7104
5000
('sr2', 31970)
250547__almela__kick-bass-drum.wav
39424
5000
('sr2', 7630)
330043__andreonate__dre-kick-08.wav
20354
5000
('sr2', 11240)
72975__zgump__kick-pack-0102.wav
15265
5000
('sr2', 14449)
72982__zgump__kick-pack-0203.wav
72765
4999
('sr2', 3032)
72983__zgump__kick-pack-0301.wav
19845
5000
('sr2', 11113)
72986__zgump__kick-pack-0401.wav
19845
5000
('sr2', 11113)
72995__zgump__kick-pack-0506.wav
59535
5000
('sr2', 3995)
72997__zgump__kick-pack-0602.wav
25449
5000
('sr2', 15234)
82309__kevoy__kick.wav
Out[31]:

In [ ]: