Example #1
0
def load_samples():
    result = load_pickle('samples.p')
    table_of_contents = load_pickle('toc.p')
    samples_dir = sickBeetz.relative_path('samples/unparsed-samples')
    for filename in os.listdir(samples_dir):
        filetype = filename.split('.')[-1]
        if filetype != 'wav':
            continue
        if filename in table_of_contents:
            continue
        full_filename = sickBeetz.relative_path(os.path.join('samples/unparsed-samples', filename))
        if not os.path.isfile(full_filename):
            continue
        label_toks = filename.split('-')
        label = '-'.join(label_toks[i] for i in range(len(label_toks)-1))
        y, sr = librosa.load(full_filename, sr=None)

        segments = segmentr.segment_audio(y, sr)
        print filename + ' - ' + str(len(segments))
        for segment in segments:
            result.append((segment[0], label, sr))
        table_of_contents.append(filename)
    save_pickle(result, 'samples.p')
    save_pickle(table_of_contents, 'toc.p')
    return result
Example #2
0
 def __init__(self, parent, gui):
     Tkinter.Frame.__init__(self, parent)
     self.parent = parent
     self.gui = gui
     self.rec_button_img = Tkinter.PhotoImage(file=sickBeetz.relative_path("img/rec_button.gif"))
     self.stop_button_img = Tkinter.PhotoImage(file=sickBeetz.relative_path("img/stop_button.gif"))
     self.button = Tkinter.Button(self, state=Tkinter.DISABLED)
     self.button.config(width=100, height=50)
     self.config(width=40, height=40)
     self.button.pack()
     self.record_ready()
     self.is_recording = False
Example #3
0
 def __init__(self, parent, gui):
     Tkinter.Frame.__init__(self, parent)
     self.parent = parent
     self.gui = gui
     self.stop_button_img = Tkinter.PhotoImage(file=sickBeetz.relative_path("img/stop_button.gif"))
     self.play_button_img = Tkinter.PhotoImage(file=sickBeetz.relative_path("img/play_button.gif"))
     self.button = Tkinter.Button(self, height=50, width=100)
     if not gui.kit_selected:
         self.button.config(state=Tkinter.DISABLED)
     self.config(width=40, height=40)
     self.button.pack()
     self.ready()
Example #4
0
 def play_audio(self, times, q_times, labels, kit, quantized):
     self.button.config(state=Tkinter.DISABLED)
     self.gui.status.set("Building output...")
     if not sickBeetz.build_output(times, q_times, labels, kit, quantized):
         self.gui.status.set("Build failure: No input detected")
         self.button.config(state=Tkinter.NORMAL)
         return
     self.gui.status.set("Output is playing")
     self.button.config(state=Tkinter.NORMAL)
     chunk = 1024
     wf = wave.open(sickBeetz.relative_path("output.wav"), "rb")
     p = pyaudio.PyAudio()
     stream = p.open(
         format=p.get_format_from_width(wf.getsampwidth()),
         channels=wf.getnchannels(),
         rate=wf.getframerate(),
         output=True,
     )
     data = wf.readframes(chunk)
     while data != "":
         stream.write(data)
         data = wf.readframes(chunk)
     stream.close()
     p.terminate()
     self.gui.status.set("Output has finished playing")
Example #5
0
    def __init__(self, parent):
        ttk.Frame.__init__(self, parent)
        self.parent = parent
        self.raise_and_focus()
        self.pack(fill=Tkinter.BOTH, expand=True)

        logo_img = Tkinter.PhotoImage(file=sickBeetz.relative_path("img/sick_beetz_logo.gif"))
        logo_widget = Tkinter.Label(self, image=logo_img)
        logo_widget.photo = logo_img
        logo_widget.pack(side=Tkinter.TOP, fill=Tkinter.X)

        title_img = Tkinter.PhotoImage(file=sickBeetz.relative_path("img/sick_title.gif"))
        title_widget = Tkinter.Label(self, image=title_img)
        title_widget.photo = title_img
        title_widget.pack(side=Tkinter.TOP, fill=Tkinter.X)

        self.status = StatusBar(self)
        self.status.pack(side=Tkinter.BOTTOM, fill=Tkinter.X)

        self.window = Tkinter.Frame(self)
        self.window.configure(bg="white")
        self.window.pack(fill=Tkinter.BOTH, expand=True)

        self.queue = Queue.Queue()
        self.periodic_dequeue()

        # Misc globals
        self.rec_button = None
        self.finished_processing = False
        self.kit_selected = None
        self.is_quantized = Tkinter.BooleanVar()
        self.anal_out = None

        # Run
        self.record_state()
        self.status.set("Loading classifier...")
Example #6
0
    def select_kit(self):
        self.clear_screen()
        self.status.set("Processing...")
        play_button = MutationOptions(self.window, self)
        self.call_async(self.quantize_and_classify, play_button.processing_finished, "temp.wav")

        self.window.columnconfigure(0, weight=1)
        self.window.columnconfigure(1, weight=0)
        self.window.columnconfigure(2, weight=0)
        self.window.columnconfigure(3, weight=0)
        self.window.columnconfigure(4, weight=1)

        header_text = Tkinter.Label(self.window, text="Choose your drum kit:", wraplength=1000, justify=Tkinter.CENTER)
        header_text.grid(row=1, column=1, columnspan=3, pady=20)

        standard_kit_img = Tkinter.PhotoImage(file=sickBeetz.relative_path("img/standard_kit.gif"))
        standard_kit_button = Tkinter.Button(
            self.window,
            image=standard_kit_img,
            command=lambda: self.set_drum_kit("kit_2", standard_kit_button, button_list, play_button),
        )
        standard_kit_button.photo = standard_kit_img
        standard_kit_button.grid(row=2, column=1)
        standard_txt = Tkinter.Label(self.window, text="Standard Kit")
        standard_txt.grid(row=3, column=1)

        bit_kit_img = Tkinter.PhotoImage(file=sickBeetz.relative_path("img/8bit_kit.gif"))
        bit_kit_button = Tkinter.Button(
            self.window,
            image=bit_kit_img,
            command=lambda: self.set_drum_kit("kit_1", bit_kit_button, button_list, play_button),
        )
        bit_kit_button.photo = bit_kit_img
        bit_kit_button.grid(row=2, column=2)
        bit_txt = Tkinter.Label(self.window, text="8-Bit Kit")
        bit_txt.grid(row=3, column=2)

        latin_kit_img = Tkinter.PhotoImage(file=sickBeetz.relative_path("img/latin_kit.gif"))
        latin_kit_button = Tkinter.Button(
            self.window,
            image=latin_kit_img,
            command=lambda: self.set_drum_kit("kit_3", latin_kit_button, button_list, play_button),
        )
        latin_kit_button.photo = latin_kit_img
        latin_kit_button.grid(row=2, column=3)
        latin_txt = Tkinter.Label(self.window, text="Latin Kit")
        latin_txt.grid(row=3, column=3)

        button_list = [standard_kit_button, bit_kit_button, latin_kit_button]

        quantize_text = Tkinter.Label(
            self.window,
            text="Would you like to quantize your input? This will track your " "tempo and align your beats.",
            wraplength=1000,
            justify=Tkinter.CENTER,
        )
        quantize_text.grid(row=4, column=1, columnspan=3, pady=20)

        c = Tkinter.Checkbutton(self.window, text="Quantize", variable=self.is_quantized)
        c.grid(row=5, column=1, columnspan=3)

        play_button.grid(row=6, column=1, columnspan=3)

        next_button = Tkinter.Button(self.window, text="New Recording", command=self.record_state)
        next_button.grid(row=7, column=1, columnspan=3, pady=20)

        self.update()
Example #7
0
def save_pickle(object, filename):
    model_file = open(sickBeetz.relative_path(filename), 'wb')
    pickle.dump(object, model_file)
    model_file.close()
Example #8
0
def load_pickle(filename):
    model_file = sickBeetz.relative_path(filename)
    if os.path.isfile(model_file):
        return pickle.load(open(model_file, 'rb'))
    return []