#!/usr/bin/env python # -*- coding: utf-8 -*- # Beat tracking example # Appunti: buono per un video u po' psichedelico ci va: # an abstract circuit board design with orange yellow green and purple squares over red background in the style of bb3l15 # su modello colorful_v30 (https://civitai.com/images/3024879?modelVersionId=188803&prioritizedUserIds=913950&period=AllTime&sort=Most+Reactions&limit=20 ) # black background, sketch jungle scenery, path, dense su sd 1.5 # Wilson black background, sketch jungle setting import os import numpy as np import librosa import math from scipy.interpolate import interp1d from scipy.interpolate import UnivariateSpline import matplotlib.pyplot as plt def plotting_stuffs(): plt.figure(figsize=(15, 17)) t = librosa.frames_to_time(range(rms.size), hop_length=flength) ax = plt.subplot(3, 1, 1) librosa.display.waveshow(wave, alpha=0.5) plt.plot(t, rms[0], color="r") plt.ylim((-1, 1)) plt.title("Wave&Featurres") plt.show() x = np.linspace(1, 4000, 4000) y = f(x) #plt.plot(x, y) #plt.show() plt.hist(rms[0], color = 'red', edgecolor = 'black', bins = 10) plt.show() # Generate some example data data =cent[0] # Create a histogram hist, bin_edges = np.histogram(data, bins=100, density=True) # Calculate bin centers bin_centers = 0.5 * (bin_edges[:-1] + bin_edges[1:]) # Perform spline interpolation on the histogram data spline = UnivariateSpline(bin_centers, hist, s=0) # Create a finer x-axis for plotting the interpolated function x_interp = np.linspace(min(bin_centers), max(bin_centers), 1000) y_interp = spline(x_interp) # Plot the histogram and the interpolated function plt.hist(data, bins=100, density=True, alpha=0.6, color='g', label='Histogram') plt.plot(x_interp, y_interp, label='Interpolated PDF', color='red') plt.legend() plt.xlabel('x') plt.ylabel('Probability Density') plt.title('Histogram and Interpolated PDF') # Obtain min and max values of the probability density min_density = np.min(hist) max_density = np.max(hist) print(f"Min Probability Density: {min_density}") print(f"Max Probability Density: {max_density}") plt.show() plt.show() def f(t): return 1.0025+0.002*np.sin(1.25*3.14*t/30) #return x ** 2 def sig(x): return 1/(1 + np.exp(-12*(x-0.431))) strength_min = 0.4 strength_max = 0.6 # Assuming that into "generated" directoruy U've already create "project_name" subfolder #audio_input_file = '/home/lalo/data/studio_grafica/deforum/wilson_r1_mm_sample.wav' #audio_input_file = '/home/lalo/data/studio_suono/spx/231104_001_m01.wav' #audio_input_file = '/home/lalo/data/studio_grafica/deforum/eucrasy_r1_sample.wav' #audio_input_file = '/home/lalo/data/studio_grafica/deforum/eucrasy_r1.wav' #audio_input_file = '/home/lalo/data/studio_suono/231014_002_mastered_r2_clip.WAV' audio_input_file = 'C:/Users/LucaConte/Music/lc_music/wilson_r1_mm.wav' # Store the sampling rate as `sr` fps = 24 flength = 22050//fps #audio frame size is 22050/30=735 wave, sr = librosa.load(audio_input_file) rms = librosa.feature.rms(y=wave, frame_length=flength, hop_length=flength) #rms = librosa.feature.rms(y=wave, frame_length=735, hop_length=735) cent = librosa.feature.spectral_centroid(y=wave, sr=sr,n_fft=flength, hop_length=flength) duration = int(math.ceil(librosa.get_duration(y=wave, sr=sr))) frames = duration * fps print("RMS SIZE: " + str(len(rms[0]))) print("Rms min/max: " + str(rms.min()) + "/" + str(rms.max())) print("CEN SIZE: " + str(len(cent[0]))) print("Cent min/max: " + str(cent.min()) + "/" + str(cent.max())) print("TOTAL FRAMES: " + str(frames)) print("Audio duration in secs: " + str(duration)) # # sr.len /22050 = duration # rms.len * 30 = duration # rms[i] mi da la potenza media del frame iesimo m = interp1d([rms.min(), rms.max()], [strength_min, strength_max]) c = interp1d([cent.min(), cent.max()], [-0.5, 0.5]) # Creating the sctipt file (the real unique aoutput of this script) try: for frame in range(len(rms[0])): print(str(frame) + ":(" + str(1-m(rms[0][frame])) + "),", end="") print("") print("---------------") print("") for frame in range(cent.size): print(str(frame) + ":(" + str(cent[0][frame]) + "),", end="") except: print(exception) plotting_stuffs()