audio_analysis 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/audio_analysis.rb +13 -7
- metadata +1 -4
- data/lib/bpm_analysis.py +0 -14
- data/lib/key_analysis.py +0 -27
- data/lib/requirements.txt +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c6ee2bf1738a0fefba9106383ac99014910171a22d0e34f86b72a201a3d3ae5
|
4
|
+
data.tar.gz: e5d37d7b4215d3772ce5c46b35e3424134bcdf1f6cf59896eb0380364a7031f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fce4fab5dc03e927721825c46999cb0d1e181ad4cd82086d917a69aeb577ce491bbaf4c3310d9849d8665c581059a355e3746ba3095a23b438489da233f3ec56
|
7
|
+
data.tar.gz: 3494f50f35eb17713fc752760a3625d58bdb0d48a94e350a3bfbc1cc939f667da73c4b0ac45fa02f37841371d5ab7e93d4486e721fbbdb2ccdaaf6a9dcef1f11
|
data/lib/audio_analysis.rb
CHANGED
@@ -1,19 +1,25 @@
|
|
1
1
|
class AudioAnalysis
|
2
2
|
def self.find_bpm(file_path)
|
3
|
-
`pip install -r lib/requirements.txt`
|
4
|
-
bpm = `python3 bpm_analysis.py #{file_path}`
|
3
|
+
`pip install -r #{gem_path}/lib/python_analysis/requirements.txt`
|
4
|
+
bpm = `python3 #{gem_path}/lib/python_analysis/bpm_analysis.py #{file_path}`
|
5
5
|
bpm.to_f
|
6
6
|
end
|
7
7
|
|
8
8
|
def self.find_key(file_path)
|
9
|
-
`pip install -r lib/requirements.txt`
|
10
|
-
`python3 key_analysis.py #{file_path}`
|
9
|
+
`pip install -r #{gem_path}/lib/python_analysis/requirements.txt`
|
10
|
+
`python3 #{gem_path}/lib/python_analysis/key_analysis.py #{file_path}`
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.analyze(file_path)
|
14
|
-
`pip install -r lib/requirements.txt`
|
15
|
-
bpm = `python3 bpm_analysis.py #{file_path}`
|
16
|
-
key =`python3 key_analysis.py #{file_path}`
|
14
|
+
`pip install -r #{gem_path}/lib/python_analysis/requirements.txt`
|
15
|
+
bpm = `python3 #{gem_path}/lib/python_analysis/bpm_analysis.py #{file_path}`
|
16
|
+
key =`python3 #{gem_path}/lib/python_analysis/key_analysis.py #{file_path}`
|
17
17
|
{ bpm: bpm, key: key }
|
18
18
|
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def self.gem_path
|
23
|
+
Gem.datadir("audio_analysis")
|
24
|
+
end
|
19
25
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: audio_analysis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 'Indigo Tech Tutorials '
|
@@ -17,9 +17,6 @@ extensions: []
|
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
19
|
- lib/audio_analysis.rb
|
20
|
-
- lib/bpm_analysis.py
|
21
|
-
- lib/key_analysis.py
|
22
|
-
- lib/requirements.txt
|
23
20
|
homepage: https://rubygems.org/gems/audio_analysis
|
24
21
|
licenses:
|
25
22
|
- MIT
|
data/lib/bpm_analysis.py
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
import librosa
|
2
|
-
import sys
|
3
|
-
|
4
|
-
if len(sys.argv) != 2:
|
5
|
-
print("You have to pass in a file path `python3 analysis.py path_to_file.mp3`")
|
6
|
-
sys.exit(1)
|
7
|
-
|
8
|
-
audio_file = sys.argv[1]
|
9
|
-
y, sr = librosa.load(audio_file)
|
10
|
-
|
11
|
-
# Estimate tempo (BPM)
|
12
|
-
tempo, _ = librosa.beat.beat_track(y=y, sr=sr)
|
13
|
-
|
14
|
-
print(tempo, end='')
|
data/lib/key_analysis.py
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
import librosa
|
2
|
-
import numpy as np
|
3
|
-
import sys
|
4
|
-
|
5
|
-
if len(sys.argv) != 2:
|
6
|
-
print("You have to pass in a file path `python3 analysis.py path_to_file.mp3`")
|
7
|
-
sys.exit(1)
|
8
|
-
|
9
|
-
audio_file = sys.argv[1]
|
10
|
-
|
11
|
-
y, sr = librosa.load(audio_file)
|
12
|
-
|
13
|
-
# Compute the Chroma Short-Time Fourier Transform (chroma_stft)
|
14
|
-
chromagram = librosa.feature.chroma_stft(y=y, sr=sr)
|
15
|
-
|
16
|
-
# Calculate the mean chroma feature across time
|
17
|
-
mean_chroma = np.mean(chromagram, axis=1)
|
18
|
-
|
19
|
-
# Define the mapping of chroma features to keys
|
20
|
-
chroma_to_key = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
|
21
|
-
|
22
|
-
# Find the key by selecting the maximum chroma feature
|
23
|
-
estimated_key_index = np.argmax(mean_chroma)
|
24
|
-
estimated_key = chroma_to_key[estimated_key_index]
|
25
|
-
|
26
|
-
# Print the detected key
|
27
|
-
print(estimated_key, end='')
|
data/lib/requirements.txt
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
librosa==0.10.1
|