from pydub import AudioSegment import numpy as np # Parameters duration = 10 # seconds sample_rate = 44100 # Hz fade_duration = 1000 # milliseconds # Function to generate Shepard tone def generate_shepard_tone(frequencies, volume_ramp=True): tones = [] for freq in frequencies: tone = AudioSegment.sine(freq, duration * 1000) if volume_ramp: tone = tone.fade_in(fade_duration).fade_out(fade_duration) tones.append(tone) return sum(tones) # Define Shepard tone parameters num_octaves = 3 num_tones_per_octave = 8 # Generate Shepard tone frequencies base_freq = 110 # Starting frequency in Hz (A2) frequencies = [base_freq * (2 ** (i / num_tones_per_octave)) for i in range(num_octaves * num_tones_per_octave)] # Generate Shepard tone shepard_tone = generate_shepard_tone(frequencies) # Export Shepard tone to WAV file shepard_tone.export("shepard_tone.wav", format="wav") print("Shepard tone saved as shepard_tone.wav")