def main(args): if len(args) < 1: raise SystemExit( "Mixes one or more audio files. Arguments: inputfile...") hqresample = AudiofileToWavStream.supports_hq_resample() if not hqresample: print( "WARNING: ffmpeg isn't compiled with libsoxr, so hq resampling is not supported." ) wav_streams = [ AudiofileToWavStream(filename, hqresample=hqresample) for filename in args ] with StreamMixer(wav_streams, endless=True) as mixer: mixed_samples = iter(mixer) with Output(mixer.samplerate, mixer.samplewidth, mixer.nchannels) as output: levelmeter = LevelMeter(rms_mode=False, lowest=-50) temp_stream = AudiofileToWavStream("samples/909_crash.wav", hqresample=hqresample) for timestamp, sample in mixed_samples: levelmeter.update(sample) output.play_sample(sample) time.sleep(sample.duration * 0.4) levelmeter.print(bar_width=60) if 5.0 <= timestamp <= 5.1: mixer.add_stream(temp_stream) if 10.0 <= timestamp <= 10.1: sample = Sample("samples/909_crash.wav").normalize() mixer.add_sample(sample) print("done.")
def main(args): if len(args) < 1: raise SystemExit("Mixes one or more audio files. Arguments: inputfile...") hqresample = AudiofileToWavStream.supports_hq_resample() if not hqresample: print("WARNING: ffmpeg isn't compiled with libsoxr, so hq resampling is not supported.") wav_streams = [AudiofileToWavStream(filename, hqresample=hqresample) for filename in args] with StreamMixer(wav_streams, endless=True) as mixer: mixed_samples = iter(mixer) with Output(mixer.samplerate, mixer.samplewidth, mixer.nchannels) as output: levelmeter = LevelMeter(rms_mode=False, lowest=-50) for timestamp, sample in mixed_samples: levelmeter.update(sample) output.play_sample(sample) time.sleep(sample.duration*0.4) levelmeter.print(bar_width=60) print("done.")
def main(args): if len(args) < 1: raise SystemExit("Mixes one or more audio files. Arguments: inputfile...") hqresample = AudiofileToWavStream.supports_hq_resample() if not hqresample: print("WARNING: ffmpeg isn't compiled with libsoxr, so hq resampling is not supported.") wav_streams = [AudiofileToWavStream(filename, hqresample=hqresample) for filename in args] with StreamMixer(wav_streams, endless=True) as mixer: mixed_samples = iter(mixer) with Output(mixer.samplerate, mixer.samplewidth, mixer.nchannels) as output: if not output.supports_streaming: raise RuntimeError("need api that supports streaming") levelmeter = LevelMeter(rms_mode=False, lowest=-50) output.register_notify_played(levelmeter.update) for timestamp, sample in mixed_samples: output.play_sample(sample) levelmeter.print(bar_width=60) print("done.")
self.pb_left.configure(style="yellow.Vertical.TProgressbar") else: self.pb_left.configure(style="green.Vertical.TProgressbar") if right > -3: self.pb_right.configure(style="red.Vertical.TProgressbar") elif right > -6: self.pb_right.configure(style="yellow.Vertical.TProgressbar") else: self.pb_right.configure(style="green.Vertical.TProgressbar") self.after(self.update_rate, self.update) def play_gui(file_or_stream): root = tk.Tk() app = LevelGUI(file_or_stream, master=root) app.mainloop() if __name__ == "__main__": if len(sys.argv) != 2: raise SystemExit("give audio file to play as an argument.") hqresample = AudiofileToWavStream.supports_hq_resample() with AudiofileToWavStream(sys.argv[1], hqresample=hqresample) as stream: print(stream.format_probe) if stream.conversion_required and not hqresample: print( "WARNING: ffmpeg isn't compiled with libsoxr, so hq resampling is not supported." ) play_gui(stream) print("Done.")
import tkinter as tk import tkinter.ttk as ttk import tkinter.font import tkinter.messagebox import tkinter.filedialog from .backend import BACKEND_PORT from synthesizer.streaming import AudiofileToWavStream, StreamMixer, VolumeFilter from synthesizer.sample import Sample, Output, LevelMeter import appdirs import Pyro4 import Pyro4.errors import Pyro4.futures StreamMixer.buffer_size = 4096 # larger is less skips and less cpu usage but more latency and slower meters try: hqresample = AudiofileToWavStream.supports_hq_resample() if hqresample: print("Great, ffmpeg supports high quality resampling.") else: print("WARNING: ffmpeg isn't compiled with libsoxr, high quality resampling is not supported.") except IOError: raise SystemExit("Cannot find the ffmpeg and ffprobe executables. They have to be installed on the search path.") class Player: update_rate = 50 # 50 ms = 20 updates/sec levelmeter_lowest = -40 # dB xfade_duration = 7 async_buffers = 2 def __init__(self, app, trackframes):