audio_analysis 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a1c982a664f5cea0335d76a00b15057db67c92bbdf3a25f4972b201defb7409
4
- data.tar.gz: 98884a8ab4ebc3b098e961b9c58f1261fa1d8f2df1a541d5491d1114765c0f61
3
+ metadata.gz: 77f3e6d28dab05d54e885f1d430c3e1034ad56c1ef318ffc7fcc01584022bdd3
4
+ data.tar.gz: 24a283dcf4579c575fcb82f3b661423a476fcd9df0ff9ab5163421fb9210f517
5
5
  SHA512:
6
- metadata.gz: 8fb0f096e78c10d32bb822e51ddd6bccd9e12874580c6a875056836f0f55d116551da7799bb69f4b8bc2b6cdc709b2e3bdd963ca233a60fca010d9858210dc6a
7
- data.tar.gz: 80df53e6a53b1d4a74d3ae23469774994caaa01f2ff5d52e5104175a39c9ee1973b731f838ea64f580c6dddca419d3f5ee09f2718f38a452f66f718ca26e885d
6
+ metadata.gz: 78c530c25407cc5975649e213043cecb66e8262e1c7b86c7a8fce6a8dbb6064ed2056ac0b5ab3aade7ed9d5f70faa4417d98921b21f07c42f5b801076c7c1733
7
+ data.tar.gz: d8caae585bd56c1266fe705f3c5538386dc59db3b45d9862238f3488c244edaa1c8b7c6e83991ab6007ed80687b60afb16fe27cc2256080053c39f4190e77856
@@ -1,19 +1,25 @@
1
1
  class AudioAnalysis
2
2
  def self.find_bpm(file_path)
3
- `pip install -r lib/python_analysis/requirements.txt`
4
- bpm = `python3 lib/python_analysis/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/python_analysis/requirements.txt`
10
- `python3 lib/python_analysis/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/python_analysis/requirements.txt`
15
- bpm = `python3 lib/python_analysis/bpm_analysis.py #{file_path}`
16
- key =`python3 lib/python_analysis/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.loaded_specs["audio_analysis"].gem_dir
24
+ end
19
25
  end
@@ -0,0 +1,14 @@
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='')
@@ -0,0 +1,27 @@
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='')
@@ -0,0 +1 @@
1
+ librosa==0.10.1
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
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - 'Indigo Tech Tutorials '
@@ -17,6 +17,9 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - lib/audio_analysis.rb
20
+ - lib/python_analysis/bpm_analysis.py
21
+ - lib/python_analysis/key_analysis.py
22
+ - lib/python_analysis/requirements.txt
20
23
  homepage: https://rubygems.org/gems/audio_analysis
21
24
  licenses:
22
25
  - MIT