Ejemplo n.º 1
0
import sys

from PyQt5 import QtWidgets
from ui import Ui

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = Ui()
    window.show()
    app.exec_()
Ejemplo n.º 2
0
import sys
from PyQt5.QtWidgets import QApplication
from ui import Ui
from socman import SocMan

app = QApplication(sys.argv)
socman = SocMan()
ui = Ui(socman)
ui.show()
sys.exit(app.exec_())
Ejemplo n.º 3
0
    sys.exit(0)

import sys
import signal
from ui import Ui
from PyQt5.QtWidgets import QApplication
# from PyQt5.QtCore import QThread

def sigint_handler(*args):
    """Handler for the SIGINT signal."""
    # sys.stderr.write('\r')
    # if QMessageBox.question(None, '', "Are you sure you want to quit?",
    #                         QMessageBox.Yes | QMessageBox.No,
    #                         QMessageBox.No) == QMessageBox.Yes:
    close_main_loop[0] = True


if __name__ == '__main__':
    loop  = asyncio.get_event_loop()
    signal.signal(signal.SIGINT, sigint_handler)

    app = QApplication(sys.argv)
    ui = Ui()
    ui.show()

    loop.run_until_complete(main(ui=ui))

# writer = tf.summary.FileWriter("outputgraph", sess.graph)
# writer.close()
Ejemplo n.º 4
0
class Controller(QtCore.QObject):
    def __init__(self, app, loop, engine):

        super().__init__()

        self.app = app
        self.loop = loop
        self.engine = engine

        self.timers = {}

        self.event_bus = EventBus(loop, self)

        self.ui = Ui()
        self.ui.show()

        self.ui.shortcut_close.activated.connect(self.close_app)

        self.ui.decks[0].play_pause.connect(self.play_pause_clicked)
        self.ui.decks[1].play_pause.connect(self.play_pause_clicked)
        self.ui.decks[0].tempo_changed.connect(self.tempo_changed)
        self.ui.decks[1].tempo_changed.connect(self.tempo_changed)

        self.ui.cross_fader.valueChanged.connect(self.cross_fade)

        self.social_controller = SocialController(self, self.ui)

        self.library_controller = LibraryController(self, self.ui)

    def close_app(self):
        self.app.quit()

    @QtCore.pyqtSlot(bool, int)
    def play_pause_clicked(self, value, deck):

        if value is True:
            position = self.engine.players[deck].get_position()
            self.engine.play(deck)
            self.connect_vu_meter(deck)
            self.send_play(deck, position)
        else:
            self.engine.pause(deck)
            del self.timers[deck]
            self.ui.decks[deck].vu_meter.setValue(0)
            self.send_pause(deck)

        print(value)

    def send_play(self, deck, position):
        timestamp = time.time()
        self.event_bus.send_data(timestamp, f'PLAY {deck} {position}')

    def receive_play(self, timestamp, deck, offset):
        self.ui.decks[int(deck)].play_button.setChecked(True)

        self.engine.play(int(deck), offset, timestamp)
        self.connect_vu_meter(deck)

    def send_load(self, deck, track):
        timestamp = time.time()
        self.event_bus.send_data(timestamp, f'LOAD {deck} {track}')

    def receive_load(self, timestamp, deck, track):
        self.library_controller.load_track(deck, name=track, send=False)

    def send_pause(self, deck):
        timestamp = time.time()
        self.event_bus.send_data(timestamp, f'PAUSE {deck}')

    def receive_pause(self, timestamp, deck):
        self.engine.pause(deck)
        self.ui.decks[deck].play_button.setChecked(False)
        del self.timers[deck]
        self.ui.decks[deck].vu_meter.setValue(0)

    def send_tempo_changed(self, deck, tempo):
        timestamp = time.time()
        self.event_bus.send_data(timestamp, f'TEMPO {deck} {tempo}')

    def receive_tempo(self, timestamp, deck, tempo):
        self.engine.change_tempo(deck, tempo, timestamp)
        self.ui.decks[deck].tempo_slider.blockSignals(True)
        self.ui.decks[deck].tempo_slider.setValue(int(tempo * 256))
        self.ui.decks[deck].tempo_slider.blockSignals(False)

    def send_cross_fade(self, value):
        timestamp = time.time()
        self.event_bus.send_data(timestamp, f'CROSSFADE {value}')

    def receive_cross_fade(self, timestamp, value):
        self.cross_fade(value, send=False)
        self.ui.cross_fader.blockSignals(True)
        self.ui.cross_fader.setValue(value)
        self.ui.cross_fader.blockSignals(False)

    @QtCore.pyqtSlot(int, int)
    def tempo_changed(self, value, deck):
        self.engine.change_tempo(deck, value / 256)
        self.send_tempo_changed(deck, value / 256)

    def receive(self, timestamp, sender, msg):

        print('RECEIVED', timestamp, msg)
        print(msg)
        if msg.startswith('PLAY'):
            _, deck, offset = msg.split(' ')
            self.receive_play(timestamp, int(deck), float(offset))
        elif msg.startswith('LOAD'):
            _, deck, track = msg.split(' ', 2)
            self.receive_load(timestamp, int(deck), track)
        elif msg.startswith('PAUSE'):
            _, deck = msg.split(' ')
            self.receive_pause(timestamp, int(deck))
        elif msg.startswith('TEMPO'):
            _, deck, tempo = msg.split(' ')
            self.receive_tempo(timestamp, int(deck), float(tempo))
        elif msg.startswith('CROSSFADE'):
            _, value = msg.split(' ')
            self.receive_cross_fade(timestamp, int(value))
        elif msg.startswith('LIBRARY'):
            _, value = msg.split(' ', 1)
            self.library_controller.receive(timestamp, sender, value)
        elif msg.startswith('SOC'):
            _, value = msg.split(' ', 1)
            self.social_controller.receive(timestamp, sender, value)

    @QtCore.pyqtSlot(int)
    def cross_fade(self, value, send=True):
        # "Transition" linear mode
        left_volume = min(1, 1 - value / 256)
        right_volume = min(1, 1 + value / 256)

        self.engine.players[0].volume = left_volume
        self.engine.players[1].volume = right_volume

        if send is True:
            self.send_cross_fade(value)

    def connect_vu_meter(self, deck):

        timer = QtCore.QTimer()
        timer.deck = deck
        timer.setInterval(20)

        callback = partial(self.update_vu_meter, deck=deck)
        timer.timeout.connect(callback)
        timer.start()
        self.timers[deck] = timer

    @QtCore.pyqtSlot()
    def update_vu_meter(self, deck):

        value = self.engine.players[deck].loudness * 100
        self.ui.decks[deck].vu_meter.setValue(value)