In [33]:
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
---------------------------------------------------------------------------
ParameterError                            Traceback (most recent call last)
<ipython-input-33-667ac308c8da> in <module>()
     70             if(y2[i]/len(filenames) > 0.9 ) :
     71                 print("over value : ", averageY[i], y2[i], len(filenames))
---> 72         librosa.output.write_wav('average.wav', averageY, sr44100)
     73 
     74 #if(len(y)>5000):

/Users/wonyeong91/anaconda/lib/python2.7/site-packages/librosa/output.pyc in write_wav(path, y, sr, norm)
    214 
    215     # Validate the buffer.  Stereo is okay here.
--> 216     util.valid_audio(y, mono=False)
    217 
    218     # normalize

/Users/wonyeong91/anaconda/lib/python2.7/site-packages/librosa/util/utils.pyc in valid_audio(y, mono)
    155 
    156     if not np.isfinite(y).all():
--> 157         raise ParameterError('Audio buffer is not finite everywhere')
    158 
    159     return True

ParameterError: Audio buffer is not finite everywhere

In [ ]: