Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PyQt5 import QtCore, QtGui, QtWidgets
- from PyQt5.QtWidgets import QApplication, QDialog, QLabel, QMessageBox
- from PyQt5.QtCore import QObject, QThread, pyqtSignal
- from PyQt5.QtCore import Qt, pyqtSignal, QTimer
- import data
- import os
- from datetime import datetime
- from pydub import AudioSegment,effects,utils,generators
- import pyaudio
- import miniaudio
- import math
- from time import sleep
- import time
- import wave
- from pynput.keyboard import Key,Controller
- import sys
- import io
- import queue
- import math
- class Manage_Decks:
- def __init__(self,main_self):
- self.main_self = main_self
- system_volume = int(self.main_self.main_ui.general_deck_system_control.value())
- volume = int(self.main_self.main_ui.general_deck_volume_control.value())
- normalize = int(self.main_self.main_ui.general_deck_normalize_checkbox.isChecked())
- pan = int(self.main_self.main_ui.general_deck_pan_control.value())
- low_frequency = int(self.main_self.main_ui.general_deck_low_frequency_input.text())
- high_frequency = int(self.main_self.main_ui.general_deck_high_frequency_input.text())
- if self.RepresentsInt(low_frequency)==False or self.RepresentsInt(high_frequency) ==False:
- low_frequency = 20
- self.main_self.main_ui.general_deck_low_frequency_input.setText(20)
- high_frequency = 20000
- self.main_self.main_ui.general_deck_high_frequency_input.setText(20000)
- else:
- if low_frequency>high_frequency:
- low_frequency = 20
- high_frequency = 20000
- self.main_self.main_ui.general_deck_low_frequency_input.setText(20)
- self.main_self.main_ui.general_deck_high_frequency_input.setText(20000)
- else:
- if low_frequency<20 or high_frequency<20 or high_frequency>20000 or low_frequency>20000:
- low_frequency = 20
- high_frequency = 20000
- self.main_self.main_ui.general_deck_low_frequency_input.setText(20)
- self.main_self.main_ui.general_deck_high_frequency_input.setText(20000)
- self.active_transmition = False
- self.general_deck = {
- "system-volume":system_volume,
- "volume":volume,
- "normalize":normalize,
- "pan":pan,
- "low-frequency":low_frequency,
- "high-frequency":high_frequency,
- "play-status":"stopped"
- }
- self.deck_1 = {
- "player-list-item":None,
- "player-list-row":None,
- "play-status":"stopped",
- "chunk-number":0,
- "mute":0,
- "total-duration-human":"00:00:00",
- "total-duration-milliseconds":0,
- "current-duration-milliseconds":0,
- "muted":False,
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000,
- "player-history-number":None,
- "stopped-timestamp":0,
- "paused-timestamp":0,
- }
- self.deck_2 = {
- "player-list-item":None,
- "player-list-row":None,
- "play-status":"stopped",
- "chunk-number":0,
- "mute":0,
- "total-duration-human":"00:00:00",
- "total-duration-milliseconds":0,
- "current-duration-milliseconds":0,
- "muted":False,
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000,
- "player-history-number":None,
- "stopped-timestamp":0,
- "paused-timestamp":0,
- }
- self.music_clip_deck = {
- "player-list-item":None,
- "player-list-row":None,
- "play-status":"stopped",
- "chunk-number":0,
- "mute":0,
- "total-duration-human":"00:00:00",
- "total-duration-milliseconds":0,
- "current-duration-milliseconds":0,
- "muted":False,
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000,
- "player-history-number":None,
- "stopped-timestamp":0,
- "paused-timestamp":0,
- }
- self.speackers_deck = {
- "play-status":"stopped",
- "volume":100,
- "normalize":0,
- "pan":0,
- "mute":0,
- "low-frequency":20,
- "high-frequency":20000
- }
- self.ip_call_1 = {
- "call-status":"stopped",
- "volume":100,
- "normalize":0,
- "pan":0,
- "mute":0,
- "low-frequency":20,
- "high-frequency":20000,
- }
- self.ip_call_2 = {
- "call-status":"stopped",
- "volume":100,
- "normalize":0,
- "pan":0,
- "mute":0,
- "low-frequency":20,
- "high-frequency":20000
- }
- self.ip_call_3 = {
- "call-status":"stopped",
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000
- }
- self.active_radio_connections = []
- self.record_status = "stopped"
- #get system_sound_volume
- self.general_deck["system-volume"] = int(data.read_setting("system sound volume")[0]["current value"])
- #for system-volume
- self.keyboard = Controller()
- for i in range(50):
- self.keyboard.press(Key.media_volume_down)
- self.keyboard.release(Key.media_volume_down)
- for i in range(0,int(self.general_deck["system-volume"]/2)):
- self.keyboard.press(Key.media_volume_up)
- self.keyboard.release(Key.media_volume_up)
- self.main_self.main_ui.general_deck_system_control.setValue(int(self.general_deck["system-volume"]))
- self.main_self.main_ui.general_deck_volume_label_2.setText(str(self.general_deck["system-volume"])+"/100")
- #create music thread
- self.send_data_to_servers = Send_Data_To_Servers()
- self.send_data_to_servers.connections = self.main_self.manage_connections.connections
- self.send_data_to_servers.start()
- self.microphone_input = Microphone()
- self.microphone_input.microphone_segment_ready.connect(self.put_microphone_segment_to_queue)
- self.microphone_input.start()
- self.papinhio_player = Papinhio_Player(self.general_deck)
- self.papinhio_player.connections = self.main_self.manage_connections.connections
- self.papinhio_player.start()
- #display music clips
- self.display_music_clips()
- #create thread emit function for final slice
- self.papinhio_player.final_slice_ready.connect(self.final_slice_ready_method)
- #create thread emit function handlers for general deck
- self.papinhio_player.general_deck_status_signal.connect(self.general_deck_status_changed)
- self.papinhio_player.general_deck_volume_signal.connect(self.general_deck_volume_changed)
- #create thread emit function handlers for deck 1
- self.papinhio_player.deck_1_status_signal.connect(self.deck_1_status_changed)
- self.papinhio_player.deck_1_duration_signal.connect(self.deck_1_duration_changed)
- self.papinhio_player.deck_1_volume_signal.connect(self.deck_1_volume_strength_changed)
- #create thread emit function handlers for deck 2
- self.papinhio_player.deck_2_status_signal.connect(self.deck_2_status_changed)
- self.papinhio_player.deck_2_duration_signal.connect(self.deck_2_duration_changed)
- self.papinhio_player.deck_2_volume_signal.connect(self.deck_2_volume_strength_changed)
- #create thread emit function handlers for music clip deck
- self.papinhio_player.music_clip_deck_status_signal.connect(self.music_clip_deck_status_changed)
- self.papinhio_player.music_clip_deck_duration_signal.connect(self.music_clip_deck_duration_changed)
- self.papinhio_player.music_clip_deck_volume_signal.connect(self.music_clip_deck_volume_strength_changed)
- #create thread emit function handlers for speackers deck
- self.papinhio_player.speackers_deck_duration_signal.connect(self.speackers_deck_duration_changed)
- self.papinhio_player.speackers_deck_volume_signal.connect(self.speackers_deck_volume_strength_changed)
- #create thread emit function handlers for ip call 1 deck
- self.papinhio_player.ip_call_1_deck_duration_signal.connect(self.ip_call_1_deck_duration_changed)
- self.papinhio_player.ip_call_1_deck_volume_signal.connect(self.ip_call_1_deck_volume_strength_changed)
- #create thread emit function handlers for ip call 2 deck
- self.papinhio_player.ip_call_2_deck_duration_signal.connect(self.ip_call_2_deck_duration_changed)
- self.papinhio_player.ip_call_2_deck_volume_signal.connect(self.ip_call_2_deck_volume_strength_changed)
- #create thread emit function handlers for ip call 3 deck
- self.papinhio_player.ip_call_3_deck_duration_signal.connect(self.ip_call_3_deck_duration_changed)
- self.papinhio_player.ip_call_3_deck_volume_signal.connect(self.ip_call_3_deck_volume_strength_changed)
- #create event handlers for general deck
- self.main_self.main_ui.general_deck_previous_song.clicked.connect(lambda:self.load_previous_song())
- self.main_self.main_ui.general_deck_play_or_pause.clicked.connect(lambda:self.general_deck_play_or_pause_clicked())
- self.main_self.main_ui.general_deck_stop.clicked.connect(lambda:self.general_deck_stop_clicked())
- self.main_self.main_ui.general_deck_next_song.clicked.connect(lambda:self.load_next_song())
- self.main_self.main_ui.general_deck_auto_dj.clicked.connect(lambda:self.manage_auto_dj())
- self.main_self.main_ui.general_deck_repeat_playlist_checkBox.stateChanged.connect(lambda:self.repeat_player_list_checkbox_changed())
- self.main_self.main_ui.general_deck_volume_control.valueChanged.connect(lambda:self.general_deck_signal_volume_changed())
- self.main_self.main_ui.general_deck_reset_volume_strength.clicked.connect(lambda:self.general_deck_reset_volume_signal())
- self.main_self.main_ui.general_deck_system_control.sliderReleased.connect(lambda:self.general_deck_system_volume_changed())
- self.main_self.main_ui.general_deck_reset_system_volume.clicked.connect(lambda:self.general_deck_reset_system_volume())
- self.main_self.main_ui.general_deck_normalize_checkbox.stateChanged.connect(lambda:self.general_deck_normalize_changed())
- self.main_self.main_ui.general_deck_pan_control.valueChanged.connect(lambda:self.general_deck_pan_changed())
- self.main_self.main_ui.general_deck_reset_pan.clicked.connect(lambda:self.general_deck_reset_pan())
- self.main_self.main_ui.general_deck_apply_filter.clicked.connect(lambda:self.general_deck_apply_filter())
- self.main_self.main_ui.general_deck_reset_filter.clicked.connect(lambda:self.general_deck_reset_filter())
- self.main_self.main_ui.open_records_folder.clicked.connect(lambda:self.open_records_folder())
- self.main_self.main_ui.player_history_report.clicked.connect(lambda:self.create_player_history_report())
- #create event handlers for deck 1
- self.main_self.main_ui.deck_1_timeline.valueChanged.connect(lambda:self.deck_1_timeline_changed())
- self.main_self.main_ui.deck_1_play_pause.clicked.connect(lambda:self.deck_1_play_or_pause_clicked())
- self.main_self.main_ui.deck_1_stop.clicked.connect(lambda:self.deck_1_stop_clicked())
- self.main_self.main_ui.deck_1_mute.clicked.connect(lambda:self.deck_1_mute_clicked())
- self.main_self.main_ui.deck_1_volume_control.valueChanged.connect(lambda:self.deck_1_volume_changed())
- self.main_self.main_ui.deck_1_normalize.stateChanged.connect(lambda:self.deck_1_normalize_changed())
- self.main_self.main_ui.deck_1_pan_control.valueChanged.connect(lambda:self.deck_1_pan_changed())
- self.main_self.main_ui.deck_1_apply_filter.clicked.connect(lambda:self.deck_1_apply_filter())
- self.main_self.main_ui.deck_1_reset_filter.clicked.connect(lambda:self.deck_1_reset_filter())
- #create event handlers for deck 2
- self.main_self.main_ui.deck_2_timeline.valueChanged.connect(lambda:self.deck_2_timeline_changed())
- self.main_self.main_ui.deck_2_play_pause.clicked.connect(lambda:self.deck_2_play_or_pause_clicked())
- self.main_self.main_ui.deck_2_stop.clicked.connect(lambda:self.deck_2_stop_clicked())
- self.main_self.main_ui.deck_2_mute.clicked.connect(lambda:self.deck_2_mute_clicked())
- self.main_self.main_ui.deck_2_volume_control.valueChanged.connect(lambda:self.deck_2_volume_changed())
- self.main_self.main_ui.deck_2_normalize.stateChanged.connect(lambda:self.deck_2_normalize_changed())
- self.main_self.main_ui.deck_2_pan_control.valueChanged.connect(lambda:self.deck_2_pan_changed())
- self.main_self.main_ui.deck_2_apply_filter.clicked.connect(lambda:self.deck_2_apply_filter())
- self.main_self.main_ui.deck_2_reset_filter.clicked.connect(lambda:self.deck_2_reset_filter())
- #create event handlers for music clip deck
- self.main_self.main_ui.music_clip_deck_timeline.valueChanged.connect(lambda:self.music_clip_deck_timeline_changed())
- self.main_self.main_ui.music_clip_deck_play_pause.clicked.connect(lambda:self.music_clip_deck_play_or_pause_clicked())
- self.main_self.main_ui.music_clip_deck_stop.clicked.connect(lambda:self.music_clip_deck_stop_clicked())
- self.main_self.main_ui.music_clip_deck_mute.clicked.connect(lambda:self.music_clip_deck_mute_clicked())
- self.main_self.main_ui.music_clip_deck_volume_control.valueChanged.connect(lambda:self.music_clip_deck_volume_changed())
- self.main_self.main_ui.music_clip_normalize.stateChanged.connect(lambda:self.music_clip_deck_normalize_changed())
- self.main_self.main_ui.music_clip_deck_pan_control.valueChanged.connect(lambda:self.music_clip_deck_pan_changed())
- self.main_self.main_ui.music_clip_deck_apply_filter.clicked.connect(lambda:self.music_clip_deck_apply_filter())
- self.main_self.main_ui.music_clip_deck_reset_filter.clicked.connect(lambda:self.music_clip_deck_reset_filter())
- #create event handlers for speackers deck
- self.main_self.main_ui.speakers_deck_open_or_close_microphone.clicked.connect(lambda:self.speackers_deck_click_to_talk_clicked())
- self.main_self.main_ui.speakers_deck_click_to_talk.pressed.connect(lambda:self.speackers_deck_click_to_talk_pressed())
- self.main_self.main_ui.speakers_deck_click_to_talk.released.connect(lambda:self.speackers_deck_click_to_talk_released())
- self.main_self.main_ui.speackers_deck_volume_control.valueChanged.connect(lambda:self.speackers_deck_volume_changed())
- self.main_self.main_ui.speackers_deck_normalize.stateChanged.connect(lambda:self.speackers_deck_normalize_changed())
- self.main_self.main_ui.speackers_deck_pan_control.valueChanged.connect(lambda:self.speackers_deck_pan_changed())
- self.main_self.main_ui.speackers_deck_apply_filter.clicked.connect(lambda:self.speackers_deck_apply_filter())
- self.main_self.main_ui.speackers_deck_reset_filter.clicked.connect(lambda:self.speackers_deck_reset_filter())
- #create event handlers for ip call 1 deck
- self.main_self.main_ui.ip_call_1_answer.clicked.connect(lambda:self.ip_call_1_deck_answer())
- self.main_self.main_ui.ip_call_1_reject.clicked.connect(lambda:self.ip_call_1_deck_reject())
- self.main_self.main_ui.ip_call_1_forward.clicked.connect(lambda:self.ip_call_1_transmit_call())
- self.main_self.main_ui.ip_call_1_volume_control.valueChanged.connect(lambda:self.ip_call_1_deck_volume_changed())
- self.main_self.main_ui.ip_call_1_normalize.stateChanged.connect(lambda:self.ip_call_1_deck_normalize_changed())
- self.main_self.main_ui.ip_call_1_pan_control.valueChanged.connect(lambda:self.ip_call_1_deck_pan_changed())
- self.main_self.main_ui.ip_call_1_apply_filter.clicked.connect(lambda:self.ip_call_1_deck_apply_filter())
- self.main_self.main_ui.ip_call_1_reset_filter.clicked.connect(lambda:self.ip_call_1_deck_reset_filter())
- #create event handlers for ip call 2 deck
- self.main_self.main_ui.ip_call_2_answer.clicked.connect(lambda:self.ip_call_2_deck_answer())
- self.main_self.main_ui.ip_call_2_reject.clicked.connect(lambda:self.ip_call_2_deck_reject())
- self.main_self.main_ui.ip_call_2_forward.clicked.connect(lambda:self.ip_call_2_transmit_call())
- self.main_self.main_ui.ip_call_2_volume_control.valueChanged.connect(lambda:self.ip_call_2_deck_volume_changed())
- self.main_self.main_ui.ip_call_2_normalize.stateChanged.connect(lambda:self.ip_call_2_deck_normalize_changed())
- self.main_self.main_ui.ip_call_2_pan_control.valueChanged.connect(lambda:self.ip_call_2_deck_pan_changed())
- self.main_self.main_ui.ip_call_2_apply_filter.clicked.connect(lambda:self.ip_call_2_deck_apply_filter())
- self.main_self.main_ui.ip_call_2_reset_filter.clicked.connect(lambda:self.ip_call_2_deck_reset_filter())
- #create event handlers for ip call 3 deck
- self.main_self.main_ui.ip_call_3_answer.clicked.connect(lambda:self.ip_call_3_deck_answer())
- self.main_self.main_ui.ip_call_3_reject.clicked.connect(lambda:self.ip_call_3_deck_reject())
- self.main_self.main_ui.ip_call_3_forward.clicked.connect(lambda:self.ip_call_3_transmit_call())
- self.main_self.main_ui.ip_call_3_volume_control.valueChanged.connect(lambda:self.ip_call_3_deck_volume_changed())
- self.main_self.main_ui.ip_call_3_normalize.stateChanged.connect(lambda:self.ip_call_3_deck_normalize_changed())
- self.main_self.main_ui.ip_call_3_pan_control.valueChanged.connect(lambda:self.ip_call_3_deck_pan_changed())
- self.main_self.main_ui.ip_call_3_apply_filter.clicked.connect(lambda:self.ip_call_3_deck_apply_filter())
- self.main_self.main_ui.ip_call_3_reset_filter.clicked.connect(lambda:self.ip_call_3_deck_reset_filter())
- self.set_greek_timer_function()
- def put_microphone_segment_to_queue(self,segment):
- self.papinhio_player.microphone_queue.put(segment)
- def final_slice_ready_method(self,segment):
- self.send_data_to_servers.q.put(segment)
- def reload_player_list_data(self):
- self.active_transmition = False
- self.deactivate_auto_dj()
- #delete player_list_data
- #data.empty_player_list()
- #put previous player list data
- for item in self.player_list_data_copy:
- if item["type"]!="retransmitions" and item["type"]!="greek time files":
- data.add_to_player_list_bottom(item["type"],item["relative number"])
- elif item["type"]=="retransmitions":
- data.add_retransmition_to_player_list_bottom(item["relative number"],item["duration"])
- else:
- data.add_greek_time_to_player_list(item["relative number"])
- self.main_self.display_player_list_items(search=False,first_time=False)
- self.active_transmition = False
- self.activate_auto_dj()
- def start_record(self,error=False):
- if self.record_status == "stopped":
- if error == False:
- self.output_filename, ok = QtWidgets.QInputDialog.getText(self.main_self.mainWindow, 'Όνομα αρχείου ηχογράφησης', 'Παρακαλώ εισάγετε το όνομα του αρχείου της ηχογράφησης.\nΠαράδειγμα: Ομιλία vabab 2021-07-01\nΕπιτρεπόμενοι χαρακτήρες: γράμματα (κεφαλαία και μικρά, ελληνικά και αγγλικά), χαρακτήρας \'-\',χαρακτήρας \'_\', ')
- else:
- self.output_filename, ok = QtWidgets.QInputDialog.getText(self.main_self.mainWindow, 'Όνομα αρχείου ηχογράφησης', 'Παρακαλώ εισάγετε το όνομα του αρχείου της ηχογράφησης (λανθασμένη εισαγωγή).\nΠαράδειγμα: Ομιλία vabab 2021-07-01\nΕπιτρεπόμενοι χαρακτήρες: γράμματα (κεφαλαία και μικρά, ελληνικά και αγγλικά), χαρακτήρας \'-\',χαρακτήρας \'_\', ')
- if ok:
- self.output_path = "../../disket_box/records/"
- self.record_full_path = self.output_path+self.output_filename+".wav"
- self.record_full_path = os.path.abspath(self.record_full_path)
- try:
- self.papinhio_player.output_file = wave.open(self.record_full_path, 'wb')
- except:
- self.start_record(True)
- self.papinhio_player.output_file.setnchannels(self.papinhio_player.channels)
- self.papinhio_player.output_file.setsampwidth(self.papinhio_player.p.get_sample_size(self.papinhio_player.format))
- self.papinhio_player.output_file.setframerate(self.papinhio_player.new_sample_rate)
- self.record_status = "recording"
- self.papinhio_player.record_status = "recording"
- self.main_self.main_ui.menu_record_pause.setEnabled(True)
- self.main_self.main_ui.menu_record_stop.setEnabled(True)
- self.main_self.main_ui.menu_record_start.setEnabled(False)
- self.main_self.main_ui.menu_record_start.setText("Έναρξη ηχογράφησης")
- self.main_self.main_ui.record_label.setText("Ηχογραφείτε τώρα: ΝΑΙ")
- else:
- self.record_status = "recording"
- self.papinhio_player.record_status = "recording"
- self.main_self.main_ui.menu_record_pause.setEnabled(True)
- self.main_self.main_ui.menu_record_stop.setEnabled(True)
- self.main_self.main_ui.menu_record_start.setEnabled(False)
- self.main_self.main_ui.menu_record_start.setText("Έναρξη ηχογράφησης")
- self.main_self.main_ui.record_label.setText("Ηχογραφείτε τώρα: ΝΑΙ")
- def pause_record(self):
- self.record_status = "paused"
- self.papinhio_player.record_status = "paused"
- self.main_self.main_ui.menu_record_pause.setEnabled(False)
- self.main_self.main_ui.menu_record_stop.setEnabled(True)
- self.main_self.main_ui.menu_record_start.setEnabled(True)
- self.main_self.main_ui.menu_record_start.setText("Συνέχιση ηχογράφησης")
- self.main_self.main_ui.record_label.setText("Ηχογραφείτε τώρα: ΟΧΙ (σε παύση)")
- def stop_record(self):
- self.record_status = "stopped"
- self.papinhio_player.record_status = "stopped"
- self.papinhio_player.output_file.close()
- self.papinhio_player.output_file = None
- self.main_self.main_ui.menu_record_pause.setEnabled(False)
- self.main_self.main_ui.menu_record_stop.setEnabled(False)
- self.main_self.main_ui.menu_record_start.setEnabled(True)
- self.main_self.main_ui.menu_record_start.setText("Έναρξη ηχογράφησης")
- self.main_self.main_ui.record_label.setText("Ηχογραφείτε τώρα: ΟΧΙ")
- def set_greek_timer_function(self):
- self.greek_time_timer = QtCore.QTimer(self.main_self.mainWindow)
- self.greek_time_timer.timeout.connect(lambda:self.play_greek_time())
- now = datetime.now()
- minutes = now.minute
- seconds = now.second
- if (int(minutes)>=30):
- seconds = 1000*(60*(59-minutes)+(60-seconds))
- else:
- seconds = 1000*(60*(29-minutes)+(60-seconds))
- self.greek_time_timer.start(seconds)
- def play_greek_time(self):
- self.greek_time_timer.start(1000*30*60)
- now = datetime.now()
- group_title = ""
- for item in self.main_self.player_list_data:
- if item["type"]=="greek time files":
- group_title = item["relative number"]
- break
- if group_title!="":
- greek_time_collection = data.search_greek_time_by_group_title(group_title)
- case = greek_time_collection[0]["case"]
- hours = int(now.hour)
- minutes = int(now.minute)
- if(hours<10):
- hours = "0"+str(hours)
- if minutes<10:
- minutes = "0"+str(minutes)
- hours = str(hours)
- minutes = str(minutes)
- when_to_play = str(hours)+":"+str(minutes)
- for greek_time_entry in greek_time_collection:
- when_to_play_db = greek_time_entry["when to play"].split("|")
- for when_to_play_db_part in when_to_play_db:
- if(when_to_play==when_to_play_db_part):
- #1. pause all decks and play greek time from deck_1
- if self.deck_1["play-status"]=="playing":
- self.deck_1["previous-play-status"] = "playing"
- self.deck_1["play-status"] = "paused"
- self.papinhio_player.deck_1["play-status"] = "paused"
- else:
- self.deck_1["previous-play-status"] = self.deck_1["play-status"]
- if self.deck_2["play-status"]=="playing":
- self.deck_2["previous-play-status"] = "playing"
- self.deck_2["play-status"] = "paused"
- self.papinhio_player.deck_1["play-status"] = "paused"
- else:
- self.deck_2["previous-play-status"] = self.deck_2["play-status"]
- if self.music_clip_deck["play-status"]!="stopped":
- self.music_clip_deck["play-status"] = "stopped"
- self.music_clip_deck_status_changed("stopped")
- self.papinhio_player.music_clip_deck["play-status"] = "stopped"
- self.music_clip_deck["player-list-item"] = {"title":greek_time_entry["title"],"saved path":greek_time_entry["saved path"],"type":"greek time files","relative number":greek_time_entry["number"],"duration":0,"append":greek_time_entry["append"],"append sound file number":greek_time_entry["append sound file number"]}
- self.music_clip_deck["player-list-row"] = -1
- #greek_time_segment = AudioSegment.from_file(self.music_clip_deck["player-list-item"]["saved path"])
- self.music_clip_deck["total-duration-milliseconds"] = greek_time_entry["duration milliseconds"]
- self.music_clip_deck["player-list-item"]["duration milliseconds"] = self.music_clip_deck["total-duration-milliseconds"]
- self.music_clip_deck["total-duration-human"] = greek_time_entry["duration human"]
- self.music_clip_deck["player-list-item"]["duration human"] = self.music_clip_deck["total-duration-human"]
- self.music_clip_deck["player-list-item"]["repeats"] = 0
- #Update music clip deck
- self.main_self.main_ui.music_clip_deck_title.setText("Music clip deck: "+str(self.music_clip_deck["player-list-item"]["title"]))
- self.main_self.main_ui.music_clip_deck_time.setText("00:00:00/"+str(self.music_clip_deck["total-duration-human"]))
- self.main_self.main_ui.music_clip_deck_timeline.setMaximum(self.music_clip_deck["total-duration-milliseconds"])
- self.main_self.main_ui.music_clip_deck_timeline.setSingleStep(500)
- self.main_self.main_ui.music_clip_deck_timeline.setPageStep(1000)
- self.main_self.main_ui.music_clip_deck_timeline.setProperty("value", 0)
- self.main_self.main_ui.music_clip_deck_timeline.setEnabled(True)
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_play_pause.setIcon(icon3)
- self.papinhio_player.prepare_music_clip_deck(self.music_clip_deck)
- self.music_clip_deck["play-status"] = "playing"
- self.papinhio_player.music_clip_deck["play-status"] = "playing"
- self.music_clip_deck_status_changed("playing")
- def general_deck_status_changed(self,new_status):
- if new_status == "playing":
- if self.deck_1["play-status"]=="stopped" and self.deck_2["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="stopped":
- if self.deck_1["stopped-timestamp"]>self.deck_2["stopped-timestamp"] and self.deck_1["stopped-timestamp"]>self.music_clip_deck["stopped-timestamp"]:
- #play deck_1
- self.deck_1_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_2["stopped-timestamp"]>self.deck_1["stopped-timestamp"] and self.deck_2["stopped-timestamp"]>self.music_clip_deck["stopped-timestamp"]:
- #play deck 2
- self.deck_2_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.music_clip_deck["stopped-timestamp"]>self.deck_1["stopped-timestamp"] and self.music_clip_deck["stopped-timestamp"]>self.deck_2["stopped-timestamp"]:
- #play music_clip_deck
- self.music_clip_deck_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_1["stopped-timestamp"]!=0 and self.deck_1["stopped-timestamp"]==self.deck_2["stopped-timestamp"] and self.music_clip_deck["stopped-timestamp"]==self.deck_1["stopped-timestamp"]:
- if self.deck_1["player-list-item"] is not None:
- #play deck_1
- self.deck_1_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_2["player-list-item"] is not None:
- #play deck 2
- self.deck_2_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.music_clip_deck["player-list-item"] is not None:
- #play music_clip_deck
- self.music_clip_deck_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- else:
- if len(self.main_self.player_list_data)>0:
- player_list_number = self.main_self.player_list_data[0]["player number"]
- self.prepare_and_play_deck_1(player_list_number)
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- else:
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "stopped"
- self.papinhio_player.general_deck["play-status"] = "stopped"
- elif self.deck_1["stopped-timestamp"]==0 and self.deck_2["stopped-timestamp"]==0 and self.music_clip_deck["stopped-timestamp"]==0:
- #play in deck 1 the next song
- if len(self.main_self.player_list_data)>0:
- player_list_number = self.main_self.player_list_data[0]["player number"]
- self.prepare_and_play_deck_1(player_list_number)
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- else:
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "stopped"
- self.papinhio_player.general_deck["play-status"] = "stopped"
- else:#paused+stopped
- if self.deck_1["play-status"]=="paused" and self.deck_2["play-status"]=="paused" and self.music_clip_deck["play-status"]=="paused":
- if self.deck_1["paused-timestamp"]>self.deck_2["paused-timestamp"] and self.deck_1["paused-timestamp"]>self.music_clip_deck["paused-timestamp"]:
- #play deck_1
- self.deck_1_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_2["paused-timestamp"]>self.deck_1["paused-timestamp"] and self.deck_2["paused-timestamp"]>self.music_clip_deck["paused-timestamp"]:
- #play deck 2
- self.deck_2_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.music_clip_deck["paused-timestamp"]>self.deck_1["paused-timestamp"] and self.music_clip_deck["paused-timestamp"]>self.deck_2["stopped-timestamp"]:
- #play music_clip_deck
- self.music_clip_deck_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_1["play-status"]=="paused" and self.deck_2["play-status"]=="paused" and self.music_clip_deck["play-status"]=="stopped":
- if self.deck_1["paused-timestamp"]>self.deck_2["paused-timestamp"]:
- #play deck_1
- self.deck_1_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_2["paused-timestamp"]>self.deck_1["paused-timestamp"]:
- #play deck 2
- self.deck_2_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_1["play-status"]=="paused" and self.deck_2["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="paused":
- if self.deck_1["paused-timestamp"]>self.music_clip_deck["paused-timestamp"]:
- #play deck_1
- self.deck_1_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.music_clip_deck["paused-timestamp"]>self.deck_1["paused-timestamp"]:
- #play music clip deck
- self.music_clip_deck_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_1["play-status"]=="stopped" and self.deck_2["play-status"]=="paused" and self.music_clip_deck["play-status"]=="paused":
- if self.deck_2["paused-timestamp"]>self.music_clip_deck["paused-timestamp"]:
- #play deck_1
- self.deck_2_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.music_clip_deck["paused-timestamp"]>self.deck_2["paused-timestamp"]:
- #play music clip deck
- self.music_clip_deck_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_1["play-status"]=="stopped" and self.deck_2["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="paused":
- self.music_clip_deck_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_1["play-status"]=="paused" and self.deck_2["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="stopped":
- self.deck_1_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_2["play-status"]=="paused" and self.deck_1["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="stopped":
- self.deck_2_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_2["play-status"]=="stopped" and self.deck_1["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="stopped":
- if self.deck_1["stopped-timestamp"]>self.deck_2["stopped-timestamp"] and self.deck_1["stopped-timestamp"]>self.music_clip_deck["stopped-timestamp"]:
- #play deck_1
- self.deck_1_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_2["stopped-timestamp"]>self.deck_1["stopped-timestamp"] and self.deck_2["stopped-timestamp"]>self.music_clip_deck["stopped-timestamp"]:
- #play deck 2
- self.deck_2_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.music_clip_deck["stopped-timestamp"]>self.deck_1["stopped-timestamp"] and self.music_clip_deck["stopped-timestamp"]>self.deck_2["stopped-timestamp"]:
- #play music_clip_deck
- self.music_clip_deck_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_1["stopped-timestamp"]!=0 and self.deck_1["stopped-timestamp"]==self.deck_2["stopped-timestamp"] and self.music_clip_deck["stopped-timestamp"]==self.deck_1["stopped-timestamp"]:
- if self.deck_1["player-list-item"] is not None:
- #play deck_1
- self.deck_1_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.deck_2["player-list-item"] is not None:
- #play deck 2
- self.deck_2_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- elif self.music_clip_deck["player-list-item"] is not None:
- #play music_clip_deck
- self.music_clip_deck_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- else:
- if len(self.main_self.player_list_data)>0:
- player_list_number = self.main_self.player_list_data[0]["player number"]
- self.prepare_and_play_deck_1(player_list_number)
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- else:
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "stopped"
- self.papinhio_player.general_deck["play-status"] = "stopped"
- elif self.deck_1["stopped-timestamp"]==0 and self.deck_2["stopped-timestamp"]==0 and self.music_clip_deck["stopped-timestamp"]==0:
- #play in deck 1 the next song
- if len(self.main_self.player_list_data)>0:
- player_list_number = self.main_self.player_list_data[0]["player number"]
- self.prepare_and_play_deck_1(player_list_number)
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "playing"
- self.papinhio_player.general_deck["play-status"] = "playing"
- else:
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "stopped"
- self.papinhio_player.general_deck["play-status"] = "stopped"
- elif new_status == "paused":
- if self.deck_1["play-status"]!="stopped":
- self.deck_1_status_changed("paused")
- if self.deck_2["play-status"]!="stopped":
- self.deck_2_status_changed("stopped")
- if self.music_clip_deck["play-status"]!="playing":
- self.music_clip_deck_status_changed("paused")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "paused"
- self.papinhio_player.general_deck["play-status"] = "paused"
- elif new_status == "stopped":
- self.deck_1_status_changed("stopped")
- self.deck_2_status_changed("stopped")
- self.music_clip_deck_status_changed("stopped")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"] = "stopped"
- self.papinhio_player.general_deck["play-status"] = "stopped"
- def general_deck_volume_changed(self,normalized_value):
- frame_width = self.main_self.main_ui.general_deck_pick.geometry().width()
- stop_red = 255
- stop_green = int(255*(1-normalized_value))
- if(stop_green>255):
- stop_green = 255
- normalized_value = int(frame_width*normalized_value)
- self.main_self.main_ui.general_deck_pick_strength.setGeometry(QtCore.QRect(0, 0, normalized_value, 16))
- self.main_self.main_ui.general_deck_pick_strength.setStyleSheet("QFrame{background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgb(255, 255, 0), stop:1 rgb("+str(stop_red)+", "+str(stop_green)+", 0))}")
- self.main_self.main_ui.general_deck_pick_strength.update()
- def deck_1_status_changed(self,new_status):
- if new_status == "playing":
- if self.deck_1["play-status"]!="paused":
- now = datetime.now()
- player_history_item = (now,now,self.deck_1["player-list-item"]["type"],self.deck_1["player-list-item"]["relative number"])
- self.deck_1["player-history-number"] = data.import_player_history(player_history_item)
- elif new_status == "stopped":
- if self.deck_1["play-status"]!="stopped":
- if self.deck_1["player-history-number"] is not None:
- now = datetime.now()
- player_history_item = (now,self.deck_1["player-history-number"])
- data.edit_player_history(player_history_item)
- self.deck_1["player-history-number"] = None
- #self.deck_1["play-status"] = new_status
- if(new_status=="playing"):
- if self.deck_1["player-list-item"] is not None:
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_1_play_pause.setIcon(icon3)
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="playing"
- self.papinhio_player.general_deck["play-status"]="playing"
- self.papinhio_player.deck_1["play-status"]="playing"
- self.deck_1["play-status"] = new_status
- else:
- self.deck_1["play-status"] = "stopped"
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_1_play_pause.setIcon(icon3)
- elif new_status == "paused":
- if self.deck_1["player-list-item"] is not None:
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_1_play_pause.setIcon(icon3)
- self.deck_1["play-status"] = "paused"
- self.deck_1["paused-timestamp"] = time.time()
- if self.deck_2["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="stopped":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif self.deck_2["play-status"]=="paused" and self.music_clip_deck["play-status"]=="paused":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif (self.deck_2["play-status"]=="paused" and self.music_clip_deck["play-status"]=="stopped") or (self.deck_2["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="paused"):
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif self.deck_2["play-status"]=="playing" or self.music_clip_deck["play-status"]=="playing":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="playing"
- self.papinhio_player.general_deck["play-status"]="playing"
- else:
- self.deck_1["play-status"] = "stopped"
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_1_play_pause.setIcon(icon3)
- elif new_status == "stopped":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_1_play_pause.setIcon(icon3)
- self.deck_1["play-status"] = "stopped"
- self.deck_1["stopped-timestamp"] = time.time()
- if self.deck_2["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="stopped":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="stopped"
- self.papinhio_player.general_deck["play-status"]="stopped"
- elif self.deck_2["play-status"]=="paused" and self.music_clip_deck["play-status"]=="paused":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif (self.deck_2["play-status"]=="paused" and self.music_clip_deck["play-status"]=="stopped") or (self.deck_2["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="paused"):
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif self.deck_2["play-status"]=="playing" or self.music_clip_deck["play-status"]=="playing":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="playing"
- self.papinhio_player.general_deck["play-status"]="playing"
- if self.main_self.auto_dj==1:
- if self.deck_2["player-list-item"] is not None:
- #play deck 2
- self.deck_2["play-status"] = "playing"
- self.papinhio_player.deck_2["play-status"] = "playing"
- self.deck_2_status_changed("playing")
- #prepare next song to deck 1
- counter = 0
- for item in self.main_self.player_list_data:
- if item["type"]!="greek time files":
- counter = 1
- player_list_number = item["player number"]
- self.prepare_deck_1(player_list_number)
- break
- if counter == 0:
- self.deck_1["player-list-item"] = None
- self.deck_1["player-list-row"] = None
- self.deck_1["player-status"] = "stopped"
- self.deck_1["chunk-number"] = 0
- self.deck_1["total-duration-human"] = "00:00:00"
- self.deck_1["total-duration-milliseconds"] = 0
- self.deck_1["current-duration-milliseconds"] = 0
- if self.active_transmition == True:
- if self.deck_2["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="stopped" and len(self.main_self.player_list_data)==0:
- self.reload_player_list_data()
- def deck_1_duration_changed(self,duration_in_milliseconds):
- self.main_self.main_ui.deck_1_timeline.blockSignals(True)
- self.main_self.main_ui.deck_1_timeline.setValue(int(duration_in_milliseconds))
- self.main_self.main_ui.deck_1_timeline.blockSignals(False)
- current_duration_human = self.convert_duration_from_milliseconds_to_human(duration_in_milliseconds)
- self.main_self.main_ui.deck_1_time.setText(str(current_duration_human)+"/"+str(self.deck_1["total-duration-human"]))
- self.main_self.main_ui.deck_1_duration.setText("Διάρκεια: "+str(current_duration_human)+"/"+str(self.deck_1["total-duration-human"]))
- def deck_1_volume_strength_changed(self,normalized_value):
- frame_width = self.main_self.main_ui.deck_1_pick.geometry().width()
- stop_red = 255
- stop_green = int(255*(1-normalized_value))
- if(stop_green>255):
- stop_green = 255
- normalized_value = int(frame_width*normalized_value)
- self.main_self.main_ui.deck_1_pick_strength.setGeometry(QtCore.QRect(0, 0, normalized_value, 16))
- self.main_self.main_ui.deck_1_pick_strength.setStyleSheet("QFrame{background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgb(255, 255, 0), stop:1 rgb("+str(stop_red)+", "+str(stop_green)+", 0))}")
- self.main_self.main_ui.deck_1_pick_strength.update()
- def deck_2_status_changed(self,new_status):
- if new_status == "playing":
- if self.deck_2["play-status"]!="paused":
- now = datetime.now()
- player_history_item = (now,now,self.deck_2["player-list-item"]["type"],self.deck_2["player-list-item"]["relative number"])
- self.deck_2["player-history-number"] = data.import_player_history(player_history_item)
- elif new_status == "stopped":
- if self.deck_2["play-status"]!="stopped":
- if self.deck_2["player-history-number"] is not None:
- now = datetime.now()
- player_history_item = (now,self.deck_2["player-history-number"])
- data.edit_player_history(player_history_item)
- self.deck_2["player-history-number"] = None
- if(new_status=="playing"):
- if self.deck_2["player-list-item"] is not None:
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_2_play_pause.setIcon(icon3)
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="playing"
- self.papinhio_player.general_deck["play-status"]="playing"
- self.papinhio_player.deck_2["play-status"]="playing"
- self.deck_2["play-status"] = new_status
- else:
- self.deck_2["play-status"] = "stopped"
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_2_play_pause.setIcon(icon3)
- elif new_status == "paused":
- if self.deck_2["player-list-item"] is not None:
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_2_play_pause.setIcon(icon3)
- self.deck_2["play-status"] = "paused"
- self.deck_2["paused-timestamp"] = time.time()
- if self.deck_1["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="stopped":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif self.deck_1["play-status"]=="paused" and self.music_clip_deck["play-status"]=="paused":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif (self.deck_1["play-status"]=="paused" and self.music_clip_deck["play-status"]=="stopped") or (self.deck_1["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="paused"):
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif self.deck_1["play-status"]=="playing" or self.music_clip_deck["play-status"]=="playing":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="playing"
- self.papinhio_player.general_deck["play-status"]="playing"
- else:
- self.deck_2["play-status"] = "stopped"
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_2_play_pause.setIcon(icon3)
- elif new_status == "stopped":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_2_play_pause.setIcon(icon3)
- self.deck_2["play-status"] = "stopped"
- self.deck_2["stopped-timestamp"] = time.time()
- if self.deck_1["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="stopped":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="stopped"
- self.papinhio_player.general_deck["play-status"]="stopped"
- elif self.deck_1["play-status"]=="paused" and self.music_clip_deck["play-status"]=="paused":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif (self.deck_1["play-status"]=="paused" and self.music_clip_deck["play-status"]=="stopped") or (self.deck_1["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="paused"):
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif self.deck_1["play-status"]=="playing" or self.music_clip_deck["play-status"]=="playing":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="playing"
- self.papinhio_player.general_deck["play-status"]="playing"
- if self.main_self.auto_dj==1:
- #play deck 1
- self.deck_1["play-status"] = "playing"
- self.papinhio_player.deck_1["play-status"] = "playing"
- self.deck_1_status_changed("playing")
- #prepare next song to deck 2
- counter = 0
- for item in self.main_self.player_list_data:
- if item["type"]!="greek time files":
- counter = 1
- player_list_number = item["player number"]
- self.prepare_deck_2(player_list_number)
- break
- if counter == 0:
- self.deck_2["player-list-item"] = None
- self.deck_2["player-list-row"] = None
- self.deck_2["player-status"] = "stopped"
- self.deck_2["chunk-number"] = 0
- self.deck_2["total-duration-human"] = "00:00:00"
- self.deck_2["total-duration-milliseconds"] = 0
- self.deck_2["current-duration-milliseconds"] = 0
- if self.active_transmition == True:
- if self.deck_1["play-status"]=="stopped" and self.music_clip_deck["play-status"]=="stopped" and len(self.main_self.player_list_data)==0:
- self.reload_player_list_data()
- def deck_2_duration_changed(self,duration_in_milliseconds):
- self.main_self.main_ui.deck_2_timeline.blockSignals(True)
- self.main_self.main_ui.deck_2_timeline.setValue(int(duration_in_milliseconds))
- self.main_self.main_ui.deck_2_timeline.blockSignals(False)
- current_duration_human = self.convert_duration_from_milliseconds_to_human(duration_in_milliseconds)
- self.main_self.main_ui.deck_2_time.setText(str(current_duration_human)+"/"+str(self.deck_2["total-duration-human"]))
- self.main_self.main_ui.deck_2_duration.setText("Διάρκεια: "+str(current_duration_human)+"/"+str(self.deck_2["total-duration-human"]))
- def deck_2_volume_strength_changed(self,normalized_value):
- frame_width = self.main_self.main_ui.deck_2_pick.geometry().width()
- stop_red = 255
- stop_green = int(255*(1-normalized_value))
- if(stop_green>255):
- stop_green = 255
- normalized_value = int(frame_width*normalized_value)
- self.main_self.main_ui.deck_2_pick_strength.setGeometry(QtCore.QRect(0, 0, normalized_value, 16))
- self.main_self.main_ui.deck_2_pick_strength.setStyleSheet("QFrame{background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgb(255, 255, 0), stop:1 rgb("+str(stop_red)+", "+str(stop_green)+", 0))}")
- self.main_self.main_ui.deck_2_pick_strength.update()
- def music_clip_deck_status_changed(self,new_status):
- if new_status == "playing":
- if self.music_clip_deck["play-status"]!="paused":
- now = datetime.now()
- player_history_item = (now,now,self.music_clip_deck["player-list-item"]["type"],self.music_clip_deck["player-list-item"]["relative number"])
- self.music_clip_deck["player-history-number"] = data.import_player_history(player_history_item)
- elif new_status == "stopped":
- if self.music_clip_deck["play-status"]!="stopped":
- if self.music_clip_deck["player-history-number"] is not None:
- now = datetime.now()
- player_history_item = (now,self.music_clip_deck["player-history-number"])
- data.edit_player_history(player_history_item)
- self.music_clip_deck["player-history-number"] = None
- if(new_status=="playing"):
- if self.music_clip_deck["player-list-item"] is not None:
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_play_pause.setIcon(icon3)
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="playing"
- self.papinhio_player.general_deck["play-status"]="playing"
- self.papinhio_player.music_clip_deck["play-status"]="playing"
- self.music_clip_deck["play-status"] = new_status
- else:
- self.music_clip_deck["play-status"] = "stopped"
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_play_pause.setIcon(icon3)
- elif new_status == "paused":
- if self.music_clip_deck["player-list-item"] is not None:
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_play_pause.setIcon(icon3)
- self.music_clip_deck["play-status"] = "paused"
- self.music_clip_deck["paused-timestamp"] = time.time()
- if self.deck_1["play-status"]=="stopped" and self.deck_2["play-status"]=="stopped":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif self.deck_1["play-status"]=="paused" and self.deck_2["play-status"]=="paused":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif (self.deck_1["play-status"]=="paused" and self.deck_2["play-status"]=="stopped") or (self.deck_1["play-status"]=="stopped" and self.deck_2["play-status"]=="paused"):
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif self.deck_1["play-status"]=="playing" or self.deck_2["play-status"]=="playing":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="playing"
- self.papinhio_player.general_deck["play-status"]="playing"
- else:
- self.music_clip_deck["play-status"] = "stopped"
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_play_pause.setIcon(icon3)
- elif new_status == "stopped":
- if self.music_clip_deck["player-list-item"] is not None:
- if self.music_clip_deck["player-list-item"]["type"]=="greek time files":
- if self.deck_1["play-status"] != self.deck_1["previous-play-status"]:
- self.deck_1_status_changed(self.deck_1["previous-play-status"])
- if self.deck_2["play-status"] != self.deck_2["previous-play-status"]:
- self.deck_2_status_changed(self.deck_2["previous-play-status"])
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_play_pause.setIcon(icon3)
- self.music_clip_deck["play-status"] = "stopped"
- self.music_clip_deck["stopped-timestamp"] = time.time()
- if self.deck_1["play-status"]=="stopped" and self.deck_2["play-status"]=="stopped":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="stopped"
- self.papinhio_player.general_deck["play-status"]="stopped"
- elif self.deck_1["play-status"]=="paused" and self.deck_2["play-status"]=="paused":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif (self.deck_1["play-status"]=="paused" and self.deck_2["play-status"]=="stopped") or (self.deck_1["play-status"]=="stopped" and self.deck_2["play-status"]=="paused"):
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="paused"
- self.papinhio_player.general_deck["play-status"]="paused"
- elif self.deck_1["play-status"]=="playing" or self.deck_2["play-status"]=="playing":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.general_deck_play_or_pause.setIcon(icon3)
- self.general_deck["play-status"]="playing"
- self.papinhio_player.general_deck["play-status"]="playing"
- if self.active_transmition == True:
- if self.deck_1["play-status"]=="stopped" and self.deck_2["play-status"]=="stopped" and len(self.main_self.player_list_data)==0:
- self.reload_player_list_data()
- def music_clip_deck_duration_changed(self,duration_in_milliseconds):
- self.main_self.main_ui.music_clip_deck_timeline.blockSignals(True)
- self.main_self.main_ui.music_clip_deck_timeline.setValue(int(duration_in_milliseconds))
- self.main_self.main_ui.music_clip_deck_timeline.blockSignals(False)
- current_duration_human = self.convert_duration_from_milliseconds_to_human(duration_in_milliseconds)
- self.main_self.main_ui.music_clip_deck_time.setText(str(current_duration_human)+"/"+str(self.music_clip_deck["total-duration-human"]))
- def music_clip_deck_volume_strength_changed(self,normalized_value):
- frame_width = self.main_self.main_ui.music_clip_deck_pick.geometry().width()
- stop_red = 255
- stop_green = int(255*(1-normalized_value))
- if(stop_green>255):
- stop_green = 255
- normalized_value = int(frame_width*normalized_value)
- self.main_self.main_ui.music_clip_deck_pick_strength.setGeometry(QtCore.QRect(0, 0, normalized_value, 16))
- self.main_self.main_ui.music_clip_deck_pick_strength.setStyleSheet("QFrame{background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgb(255, 255, 0), stop:1 rgb("+str(stop_red)+", "+str(stop_green)+", 0))}")
- self.main_self.main_ui.music_clip_deck_pick_strength.update()
- def speackers_deck_duration_changed(self,duration_in_milliseconds):
- current_duration_human = self.convert_duration_from_milliseconds_to_human(duration_in_milliseconds)
- self.main_self.main_ui.speackers_deck_time.setText(str(current_duration_human))
- def speackers_deck_volume_strength_changed(self,normalized_value):
- frame_width = self.main_self.main_ui.speackers_deck_pick.geometry().width()
- stop_red = 255
- stop_green = int(255*(1-normalized_value))
- if(stop_green>255):
- stop_green = 255
- normalized_value = int(frame_width*normalized_value)
- self.main_self.main_ui.speackers_deck_pick_strength.setGeometry(QtCore.QRect(0, 0, normalized_value, 16))
- self.main_self.main_ui.speackers_deck_pick_strength.setStyleSheet("QFrame{background-color:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgb(255, 255, 0), stop:1 rgb("+str(stop_red)+", "+str(stop_green)+", 0))}")
- self.main_self.main_ui.speackers_deck_pick_strength.update()
- def ip_call_1_deck_duration_changed(self,duration_in_milliseconds):
- pass
- def ip_call_1_deck_volume_strength_changed(self,normalized_value):
- pass
- def ip_call_2_deck_duration_changed(self,duration_in_milliseconds):
- pass
- def ip_call_2_deck_volume_strength_changed(self,normalized_value):
- pass
- def ip_call_3_deck_duration_changed(self,duration_in_milliseconds):
- pass
- def ip_call_3_deck_volume_strength_changed(self,normalized_value):
- pass
- def load_previous_song(self):
- if len(self.main_self.player_list_data)>0:
- self.general_deck_status_changed("stopped")
- player_list_number = self.main_self.player_list_data[-1]["player number"]
- self.prepare_and_play_deck_1(player_list_number)
- def general_deck_play_or_pause_clicked(self):
- if self.general_deck["play-status"]=="paused" or self.general_deck["play-status"]=="stopped":
- self.general_deck_status_changed("playing")
- else:
- self.general_deck_status_changed("paused")
- def general_deck_stop_clicked(self):
- self.general_deck_status_changed("stopped")
- def load_next_song(self):
- if len(self.main_self.player_list_data)>0:
- self.general_deck_status_changed("stopped")
- player_list_number = self.main_self.player_list_data[0]["player number"]
- self.prepare_and_play_deck_1(player_list_number)
- def manage_auto_dj(self):
- if self.main_self.auto_dj == 1:
- self.main_self.auto_dj = 0
- self.main_self.main_ui.auto_dj.blockSignals(True)
- self.main_self.main_ui.auto_dj.setChecked(False)
- self.main_self.main_ui.auto_dj.blockSignals(False)
- self.main_self.main_ui.general_deck_auto_dj.setText("Ενεργοποίηση αυτόματου DJ")
- self.deactivate_auto_dj()
- else:
- self.main_self.auto_dj = 1
- self.main_self.main_ui.auto_dj.blockSignals(True)
- self.main_self.main_ui.auto_dj.setChecked(True)
- self.main_self.main_ui.auto_dj.blockSignals(False)
- self.main_self.main_ui.general_deck_auto_dj.setText("Απενεργοποίηση αυτόματου DJ")
- self.activate_auto_dj()
- #save setting
- data.update_setting({"keyword":"auto_dj","current value":str(self.main_self.auto_dj)})
- def activate_auto_dj(self,repeat=1):
- self.main_self.auto_dj = 1
- self.main_self.main_ui.auto_dj.blockSignals(True)
- self.main_self.main_ui.auto_dj.setChecked(True)
- self.main_self.main_ui.auto_dj.blockSignals(False)
- self.main_self.main_ui.general_deck_auto_dj.setText("Απενεργοποίηση αυτόματου DJ")
- #save setting
- data.update_setting({"keyword":"auto_dj","current value":"1"})
- #enable repeat playlist
- if repeat == 1:
- self.main_self.repeat_player_list_old = self.main_self.repeat_player_list
- self.main_self.repeat_player_list = 1
- data.update_setting({"keyword":"repeat player list","current value":"1"})
- self.main_self.main_ui.repeat_player_list_checkBox.setChecked(True)
- self.main_self.main_ui.general_deck_repeat_playlist_checkBox.setChecked(True)
- else:
- self.main_self.repeat_player_list_old = self.main_self.repeat_player_list
- self.main_self.repeat_player_list = 0
- data.update_setting({"keyword":"repeat player list","current value":"0"})
- self.main_self.main_ui.repeat_player_list_checkBox.setChecked(False)
- self.main_self.main_ui.general_deck_repeat_playlist_checkBox.setChecked(False)
- #disable buttons
- self.main_self.main_ui.general_deck_previous_song.setEnabled(False)
- self.main_self.main_ui.general_deck_play_or_pause.setEnabled(False)
- self.main_self.main_ui.general_deck_stop.setEnabled(False)
- self.main_self.main_ui.general_deck_next_song.setEnabled(False)
- self.main_self.main_ui.general_deck_repeat_playlist_checkBox.setEnabled(False)
- self.main_self.main_ui.deck_1_play_pause.setEnabled(False)
- self.main_self.main_ui.deck_1_stop.setEnabled(False)
- self.main_self.main_ui.deck_1_mute.setEnabled(False)
- self.main_self.main_ui.deck_2_play_pause.setEnabled(False)
- self.main_self.main_ui.deck_2_stop.setEnabled(False)
- self.main_self.main_ui.deck_2_mute.setEnabled(False)
- self.main_self.main_ui.music_clip_deck_play_pause.setEnabled(False)
- self.main_self.main_ui.music_clip_deck_stop.setEnabled(False)
- self.main_self.main_ui.music_clip_deck_mute.setEnabled(False)
- self.main_self.main_ui.repeat_player_list_checkBox.setEnabled(False)
- if self.deck_1["play-status"]!="playing" and self.deck_2["play-status"]!="playing" and self.music_clip_deck["play-status"]!="playing":
- #play first track in deck 1
- for item in self.main_self.player_list_data:
- if item["type"]!="greek time files":
- player_list_number = item["player number"]
- self.prepare_and_play_deck_1(player_list_number)
- break
- #prepare next song in deck 2
- for item in self.main_self.player_list_data:
- if item["type"]!="greek time files":
- player_list_number = item["player number"]
- self.prepare_deck_2(player_list_number)
- break
- def deactivate_auto_dj(self):
- self.main_self.auto_dj = 0
- self.main_self.main_ui.auto_dj.blockSignals(True)
- self.main_self.main_ui.auto_dj.setChecked(False)
- self.main_self.main_ui.auto_dj.blockSignals(False)
- self.main_self.main_ui.general_deck_auto_dj.setText("Ενεργοποίηση αυτόματου DJ")
- #save setting
- data.update_setting({"keyword":"auto_dj","current value":"0"})
- #enable repeat playlist
- self.main_self.repeat_player_list_old = self.main_self.repeat_player_list
- if self.main_self.repeat_player_list==1 or self.main_self.repeat_player_list==True or self.main_self.repeat_player_list:
- self.main_self.repeat_player_list = 1
- self.main_self.main_ui.repeat_player_list_checkBox.setChecked(True)
- self.main_self.main_ui.general_deck_repeat_playlist_checkBox.setChecked(True)
- else:
- self.main_self.repeat_player_list = 0
- self.main_self.main_ui.repeat_player_list_checkBox.setChecked(False)
- self.main_self.main_ui.general_deck_repeat_playlist_checkBox.setChecked(False)
- data.update_setting({"keyword":"repeat player list","current value":str(self.main_self.repeat_player_list)})
- #enable buttons
- self.main_self.main_ui.general_deck_previous_song.setEnabled(True)
- self.main_self.main_ui.general_deck_play_or_pause.setEnabled(True)
- self.main_self.main_ui.general_deck_stop.setEnabled(True)
- self.main_self.main_ui.general_deck_next_song.setEnabled(True)
- self.main_self.main_ui.general_deck_repeat_playlist_checkBox.setEnabled(True)
- self.main_self.main_ui.deck_1_play_pause.setEnabled(True)
- self.main_self.main_ui.deck_1_stop.setEnabled(True)
- self.main_self.main_ui.deck_1_mute.setEnabled(True)
- self.main_self.main_ui.deck_2_play_pause.setEnabled(True)
- self.main_self.main_ui.deck_2_stop.setEnabled(True)
- self.main_self.main_ui.deck_2_mute.setEnabled(True)
- self.main_self.main_ui.music_clip_deck_play_pause.setEnabled(True)
- self.main_self.main_ui.music_clip_deck_stop.setEnabled(True)
- self.main_self.main_ui.music_clip_deck_mute.setEnabled(True)
- self.main_self.main_ui.repeat_player_list_checkBox.setEnabled(True)
- self.general_deck_status_changed("stopped")
- self.deck_1_status_changed("stopped")
- def repeat_player_list_checkbox_changed(self):
- repeat = self.main_self.main_ui.general_deck_repeat_playlist_checkBox.isChecked()
- if(repeat):
- self.main_self.repeat_player_list = 1
- self.main_self.main_ui.repeat_player_list_checkBox.setChecked(True)
- else:
- self.main_self.repeat_player_list = 0
- self.main_self.main_ui.repeat_player_list_checkBox.setChecked(False)
- #save setting
- data.update_setting({"keyword":"repeat player list","current value":str(self.main_self.repeat_player_list)})
- def general_deck_signal_volume_changed(self):
- self.general_deck["volume"] = int(self.main_self.main_ui.general_deck_volume_control.value())
- self.main_self.main_ui.general_deck_volume_label.setText(str(self.general_deck["volume"])+"/100")
- self.papinhio_player.general_deck["volume"] = self.general_deck["volume"]
- def general_deck_reset_volume_signal(self):
- self.general_deck["volume"] = 100
- self.main_self.main_ui.general_deck_volume_label.setText("100/100")
- self.papinhio_player.general_deck["volume"] = 100
- self.main_self.main_ui.general_deck_volume_control.setValue(100)
- def general_deck_system_volume_changed(self):
- self.general_deck["system-volume"] = self.main_self.main_ui.general_deck_system_control.value()
- self.general_deck["system-volume"] = int(self.general_deck["system-volume"])
- if self.general_deck["system-volume"] % 2 == 1:
- self.general_deck["system-volume"] += 1
- self.main_self.main_ui.general_deck_system_control.setValue(self.general_deck["system-volume"])
- #save setting
- data.update_setting({"keyword":"system sound volume","current value":self.general_deck["system-volume"]})
- for i in range(50):
- self.keyboard.press(Key.media_volume_down)
- self.keyboard.release(Key.media_volume_down)
- for i in range(0,int(self.general_deck["system-volume"]/2)):
- self.keyboard.press(Key.media_volume_up)
- self.keyboard.release(Key.media_volume_up)
- self.main_self.main_ui.general_deck_volume_label_2.setText(str(self.general_deck["system-volume"])+"/100")
- self.papinhio_player.general_deck["system-volume"]=self.general_deck["system-volume"]
- def general_deck_reset_system_volume(self):
- self.general_deck["system-volume"] = 50
- self.main_self.main_ui.general_deck_system_control.setValue(50)
- #save setting
- data.update_setting({"keyword":"system sound volume","current value":self.general_deck["system-volume"]})
- for i in range(50):
- self.keyboard.press(Key.media_volume_down)
- self.keyboard.release(Key.media_volume_down)
- for i in range(0,int(self.general_deck["system-volume"]/2)):
- self.keyboard.press(Key.media_volume_up)
- self.keyboard.release(Key.media_volume_up)
- self.main_self.main_ui.general_deck_volume_label_2.setText("50/100")
- self.papinhio_player.general_deck["system-volume"]=50
- def general_deck_normalize_changed(self):
- self.general_deck["normalize"] = self.main_self.main_ui.general_deck_normalize_checkbox.isChecked()
- self.papinhio_player.general_deck["normalize"] = self.general_deck["normalize"]
- def general_deck_pan_changed(self):
- self.general_deck["pan"] = float(self.main_self.main_ui.general_deck_pan_control.value()/100)
- self.main_self.main_ui.general_deck_pan_label.setText(str(self.general_deck["pan"]))
- self.papinhio_player.general_deck["pan"] = self.general_deck["pan"]
- def general_deck_reset_pan(self):
- self.general_deck["pan"] = 0
- self.main_self.main_ui.general_deck_pan_control.setValue(0)
- self.main_self.main_ui.general_deck_pan_label.setText("0")
- self.papinhio_player.general_deck["pan"] = 0
- def general_deck_apply_filter(self):
- self.general_deck["low-frequency"] = self.main_self.main_ui.general_deck_low_frequency_input.text()
- self.general_deck["high-frequency"] = self.main_self.main_ui.general_deck_high_frequency_input.text()
- if self.RepresentsInt(self.general_deck["low-frequency"]) and self.RepresentsInt(self.general_deck["high-frequency"]):
- self.general_deck["low-frequency"] = int(self.general_deck["low-frequency"])
- self.general_deck["high-frequency"] = int(self.general_deck["high-frequency"])
- if self.general_deck["high-frequency"]>self.general_deck["low-frequency"] and self.general_deck["high-frequency"]<=20000 and self.general_deck["low-frequency"]>=20:
- self.papinhio_player.general_deck["low-frequency"] = self.general_deck["low-frequency"]
- self.papinhio_player.general_deck["high-frequency"] = self.general_deck["high-frequency"]
- else:
- self.general_deck_reset_filter()
- else:
- self.general_deck_reset_filter()
- def general_deck_reset_filter(self):
- self.general_deck["low-frequency"] = 20
- self.general_deck["high-frequency"] = 20000
- self.main_self.main_ui.general_deck_low_frequency_input.setText("20")
- self.main_self.main_ui.general_deck_high_frequency_input.setText("20000")
- self.papinhio_player.general_deck["low-frequency"] = self.general_deck["low-frequency"]
- self.papinhio_player.general_deck["high-frequency"] = self.general_deck["high-frequency"]
- def open_records_folder(self):
- FILEBROWSER_PATH = os.path.join(os.getenv('WINDIR'), 'explorer.exe')
- path = os.path.abspath("../../disket_box/records/")
- os.startfile(path)
- return 1
- def create_player_history_report(self):
- self.main_self.player_history_report_instance.create_word()
- def deck_1_timeline_changed(self):
- if(self.deck_1["play-status"]=="playing" or self.deck_1["play-status"]=="paused"):
- new_current_duration = int(self.main_self.main_ui.deck_1_timeline.value())
- #calculate new chunk_number
- chunk_number = round(new_current_duration/self.papinhio_player.packet_time)
- self.papinhio_player.deck_1["chunk-number"] = chunk_number
- current_duration_milliseconds = chunk_number*self.papinhio_player.packet_time
- self.papinhio_player.deck_1["current-duration-milliseconds"] = current_duration_milliseconds
- else:
- self.main_self.main_ui.deck_1_timeline.setProperty("value", 0)
- def deck_1_play_or_pause_clicked(self):
- if self.deck_1["play-status"]=="playing":
- #pause deck 1
- self.deck_1_status_changed("paused")
- self.deck_1["play-status"] = "paused"
- self.papinhio_player.deck_1["play-status"] = "paused"
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_1_play_pause.setIcon(icon3)
- elif self.deck_1["play-status"]=="paused" or self.deck_1["play-status"]=="stopped":
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_1_play_pause.setIcon(icon3)
- self.deck_1_status_changed("playing")
- def deck_1_stop_clicked(self):
- self.deck_1_status_changed("stopped")
- self.deck_1["play-status"] = "stopped"
- self.papinhio_player.deck_1["play-status"] = "stopped"
- self.deck_1_duration_changed(0)
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_1_play_pause.setIcon(icon3)
- self.deck_1_status_changed("stopped")
- def deck_1_mute_clicked(self):
- if self.deck_1["player-list-row"] is not None:
- if self.deck_1["mute"]==False:
- self.deck_1["mute"] = True
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/mute.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_1_mute.setIcon(icon3)
- self.deck_1["previous-volume"] = self.deck_1["volume"]
- self.deck_1["volume"] = 0
- self.main_self.main_ui.deck_1_volume_label.setText(str(self.deck_1["volume"])+"/100")
- if self.deck_1["player-list-item"] is not None:
- self.deck_1["player-list-item"]["volume"] = self.deck_1["volume"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_1["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_1["player-list-item"])
- self.main_self.player_list_volume_changed(self.deck_1["player-list-item"]["player number"],False)
- self.papinhio_player.deck_1["volume"] = self.deck_1["volume"]
- else:
- self.deck_1["mute"] = False
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/volume.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_1_mute.setIcon(icon3)
- self.deck_1["volume"] = self.deck_1["previous-volume"]
- self.main_self.main_ui.deck_1_volume_label.setText(str(self.deck_1["volume"])+"/100")
- if self.deck_1["player-list-item"] is not None:
- self.deck_1["player-list-item"]["volume"] = self.deck_1["volume"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_1["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_1["player-list-item"])
- self.main_self.player_list_volume_changed(self.deck_1["player-list-item"]["player number"],False)
- self.papinhio_player.deck_1["volume"] = self.deck_1["volume"]
- def deck_1_volume_changed(self):
- self.deck_1["volume"] = int(self.main_self.main_ui.deck_1_volume_control.value())
- self.main_self.main_ui.deck_1_volume_label.setText(str(self.deck_1["volume"])+"/100")
- if self.deck_1["player-list-item"] is not None:
- self.deck_1["player-list-item"]["volume"] = self.deck_1["volume"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_1["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_1["player-list-item"])
- self.main_self.player_list_volume_changed(self.deck_1["player-list-item"]["player number"],False)
- self.papinhio_player.deck_1["volume"] = self.deck_1["volume"]
- def deck_1_normalize_changed(self):
- self.deck_1["normalize"] = self.main_self.main_ui.deck_1_normalize.isChecked()
- if self.deck_1["player-list-item"] is not None:
- if self.deck_1["normalize"]:
- self.deck_1["player-list-item"]["normalize"] = 1
- else:
- self.deck_1["player-list-item"]["normalize"] = 0
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_1["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_1["player-list-item"])
- self.main_self.change_player_list_normalize(self.deck_1["player-list-item"]["player number"],False)
- self.papinhio_player.deck_1["normalize"] = self.deck_1["normalize"]
- def deck_1_pan_changed(self):
- self.deck_1["pan"] = int(self.main_self.main_ui.deck_1_pan_control.value())/100
- self.main_self.main_ui.deck_1_pan_label.setText(str(self.deck_1["pan"]))
- if self.deck_1["player-list-item"] is not None:
- self.deck_1["player-list-item"]["pan"] = self.deck_1["pan"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_1["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_1["player-list-item"])
- self.main_self.player_list_pan_changed(self.deck_1["player-list-item"]["player number"],False)
- self.papinhio_player.deck_1["pan"] = self.deck_1["pan"]
- def deck_1_apply_filter(self):
- self.deck_1["low-frequency"] = self.main_self.main_ui.deck_1_low_frequency_input.text()
- self.deck_1["high-frequency"] = self.main_self.main_ui.deck_1_high_frequency_input.text()
- if self.RepresentsInt(self.deck_1["low-frequency"]) and self.RepresentsInt(self.deck_1["high-frequency"]):
- self.deck_1["low-frequency"] = int(self.deck_1["low-frequency"])
- self.deck_1["high-frequency"] = int(self.deck_1["high-frequency"])
- if self.deck_1["high-frequency"]>self.deck_1["low-frequency"] and self.deck_1["high-frequency"]<=20000 and self.deck_1["low-frequency"]>=20:
- self.papinhio_player.deck_1["low-frequency"] = self.deck_1["low-frequency"]
- self.papinhio_player.deck_1["high-frequency"] = self.deck_1["high-frequency"]
- if self.deck_1["player-list-item"] is not None:
- self.deck_1["player-list-item"]["low frequency"] = self.deck_1["low-frequency"]
- self.deck_1["player-list-item"]["high frequency"] = self.deck_1["high-frequency"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_1["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_1["player-list-item"])
- self.main_self.player_list_apply_filter(self.deck_1["player-list-item"]["player number"],False)
- else:
- self.deck_1_reset_filter()
- else:
- self.deck_1_reset_filter()
- def deck_1_reset_filter(self):
- self.deck_1["low-frequency"] = 20
- self.deck_1["high-frequency"] = 20000
- self.main_self.main_ui.deck_1_low_frequency_input.setText(str(self.deck_1["low-frequency"]))
- self.main_self.main_ui.deck_1_high_frequency_input.setText(str(self.deck_1["high-frequency"]))
- if self.deck_1["player-list-item"] is not None:
- self.deck_1["player-list-item"]["low frequency"] = self.deck_1["low-frequency"]
- self.deck_1["player-list-item"]["high frequency"] = self.deck_1["high-frequency"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_1["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_1["player-list-item"])
- self.main_self.player_list_apply_filter(self.deck_1["player-list-item"]["player number"],False)
- self.papinhio_player.deck_1["low-frequency"] = self.deck_1["low-frequency"]
- self.papinhio_player.deck_1["high-frequency"] = self.deck_1["high-frequency"]
- def deck_2_timeline_changed(self):
- if(self.deck_2["play-status"]=="playing" or self.deck_2["play-status"]=="paused"):
- new_current_duration = int(self.main_self.main_ui.deck_2_timeline.value())
- #calculate new chunk_number
- chunk_number = round(new_current_duration/self.papinhio_player.packet_time)
- self.papinhio_player.deck_2["chunk-number"] = chunk_number
- current_duration_milliseconds = chunk_number*self.papinhio_player.packet_time
- self.papinhio_player.deck_2["current-duration-milliseconds"] = current_duration_milliseconds
- else:
- self.main_self.main_ui.deck_2_timeline.setProperty("value", 0)
- def deck_2_play_or_pause_clicked(self):
- if self.deck_2["play-status"]=="playing":
- #pause deck 1
- self.deck_2_status_changed("paused")
- self.deck_2["play-status"] = "paused"
- self.papinhio_player.deck_2["play-status"] = "paused"
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_2_play_pause.setIcon(icon3)
- elif self.deck_2["play-status"]=="paused" or self.deck_2["play-status"]=="stopped":
- self.deck_2_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_2_play_pause.setIcon(icon3)
- def deck_2_stop_clicked(self):
- self.deck_2_status_changed("stopped")
- self.deck_2["play-status"] = "stopped"
- self.papinhio_player.deck_2["play-status"] = "stopped"
- self.deck_2_duration_changed(0)
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_2_play_pause.setIcon(icon3)
- self.deck_2_status_changed("stopped")
- def deck_2_mute_clicked(self):
- if self.deck_2["player-list-row"] is not None:
- if self.deck_2["mute"]==False:
- self.deck_2["mute"] = True
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/mute.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_2_mute.setIcon(icon3)
- self.deck_2["previous-volume"] = self.deck_2["volume"]
- self.deck_2["volume"] = 0
- self.main_self.main_ui.deck_2_volume_label.setText(str(self.deck_2["volume"])+"/100")
- if self.deck_2["player-list-item"] is not None:
- self.deck_2["player-list-item"]["volume"] = self.deck_2["volume"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_2["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_2["player-list-item"])
- self.main_self.player_list_volume_changed(self.deck_2["player-list-item"]["player number"],False)
- self.papinhio_player.deck_2["volume"] = self.deck_2["volume"]
- else:
- self.deck_2["mute"] = False
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/volume.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_2_mute.setIcon(icon3)
- self.deck_2["volume"] = self.deck_2["previous-volume"]
- self.main_self.main_ui.deck_2_volume_label.setText(str(self.deck_2["volume"])+"/100")
- if self.deck_2["player-list-item"] is not None:
- self.deck_2["player-list-item"]["volume"] = self.deck_2["volume"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_2["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_2["player-list-item"])
- self.main_self.player_list_volume_changed(self.deck_2["player-list-item"]["player number"],False)
- self.papinhio_player.deck_2["volume"] = self.deck_2["volume"]
- def deck_2_volume_changed(self):
- self.deck_2["volume"] = int(self.main_self.main_ui.deck_2_volume_control.value())
- self.main_self.main_ui.deck_2_volume_label.setText(str(self.deck_2["volume"])+"/100")
- if self.deck_2["player-list-item"] is not None:
- self.deck_2["player-list-item"]["volume"] = self.deck_2["volume"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_2["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_2["player-list-item"])
- self.main_self.player_list_volume_changed(self.deck_2["player-list-item"]["player number"],False)
- self.papinhio_player.deck_2["volume"] = self.deck_2["volume"]
- def deck_2_normalize_changed(self):
- self.deck_2["normalize"] = self.main_self.main_ui.deck_2_normalize.isChecked()
- if self.deck_2["player-list-item"] is not None:
- if self.deck_2["normalize"]:
- self.deck_2["player-list-item"]["normalize"] = 1
- else:
- self.deck_2["player-list-item"]["normalize"] = 0
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_2["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_2["player-list-item"])
- self.main_self.change_player_list_normalize(self.deck_2["player-list-item"]["player number"],False)
- self.papinhio_player.deck_2["normalize"] = self.deck_2["normalize"]
- def deck_2_pan_changed(self):
- self.deck_2["pan"] = int(self.main_self.main_ui.deck_2_pan_control.value())/100
- self.main_self.main_ui.deck_2_pan_label.setText(str(self.deck_2["pan"]))
- if self.deck_2["player-list-item"] is not None:
- self.deck_2["player-list-item"]["pan"] = self.deck_2["pan"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_2["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_2["player-list-item"])
- self.main_self.player_list_pan_changed(self.deck_2["player-list-item"]["player number"],False)
- self.papinhio_player.deck_2["pan"] = self.deck_2["pan"]
- def deck_2_apply_filter(self):
- self.deck_2["low-frequency"] = self.main_self.main_ui.deck_2_low_frequency_input.text()
- self.deck_2["high-frequency"] = self.main_self.main_ui.deck_2_high_frequency_input.text()
- if self.RepresentsInt(self.deck_2["low-frequency"]) and self.RepresentsInt(self.deck_2["high-frequency"]):
- self.deck_2["low-frequency"] = int(self.deck_2["low-frequency"])
- self.deck_2["high-frequency"] = int(self.deck_2["high-frequency"])
- if self.deck_2["high-frequency"]>self.deck_2["low-frequency"] and self.deck_2["high-frequency"]<=20000 and self.deck_2["low-frequency"]>=20:
- self.papinhio_player.deck_2["low-frequency"] = self.deck_2["low-frequency"]
- self.papinhio_player.deck_2["high-frequency"] = self.deck_2["high-frequency"]
- if self.deck_2["player-list-item"] is not None:
- self.deck_2["player-list-item"]["low frequency"] = self.deck_2["low-frequency"]
- self.deck_2["player-list-item"]["high frequency"] = self.deck_2["high-frequency"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_2["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_2["player-list-item"])
- self.main_self.player_list_apply_filter(self.deck_2["player-list-item"]["player number"],False)
- else:
- self.deck_2_reset_filter()
- else:
- self.deck_2_reset_filter()
- def deck_2_reset_filter(self):
- self.deck_2["low-frequency"] = 20
- self.deck_2["high-frequency"] = 20000
- self.main_self.main_ui.deck_2_low_frequency_input.setText(str(self.deck_2["low-frequency"]))
- self.main_self.main_ui.deck_2_high_frequency_input.setText(str(self.deck_2["high-frequency"]))
- if self.deck_2["player-list-item"] is not None:
- self.deck_2["player-list-item"]["low frequency"] = self.deck_2["low-frequency"]
- self.deck_2["player-list-item"]["high frequency"] = self.deck_2["high-frequency"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.deck_2["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_2["player-list-item"])
- self.main_self.player_list_apply_filter(self.deck_2["player-list-item"]["player number"],False)
- self.papinhio_player.deck_2["low-frequency"] = self.deck_2["low-frequency"]
- self.papinhio_player.deck_2["high-frequency"] = self.deck_2["high-frequency"]
- def music_clip_deck_timeline_changed(self):
- if(self.music_clip_deck["play-status"]=="playing" or self.music_clip_deck["play-status"]=="paused"):
- new_current_duration = int(self.main_self.main_ui.music_clip_deck_timeline.value())
- #calculate new chunk_number
- chunk_number = round(new_current_duration/self.papinhio_player.packet_time)
- self.papinhio_player.music_clip_deck["chunk-number"] = chunk_number
- current_duration_milliseconds = chunk_number*self.papinhio_player.packet_time
- self.papinhio_player.music_clip_deck["current-duration-milliseconds"] = current_duration_milliseconds
- else:
- self.main_self.main_ui.music_clip_deck_timeline.setProperty("value", 0)
- def music_clip_deck_play_or_pause_clicked(self):
- if self.music_clip_deck["play-status"]=="playing":
- self.music_clip_deck_status_changed("paused")
- #pause deck 1
- self.music_clip_deck["play-status"] = "paused"
- self.papinhio_player.music_clip_deck["play-status"] = "paused"
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_play_pause.setIcon(icon3)
- elif self.music_clip_deck["play-status"]=="paused" or self.music_clip_deck["play-status"]=="stopped":
- self.music_clip_deck_status_changed("playing")
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/pause_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_play_pause.setIcon(icon3)
- def music_clip_deck_stop_clicked(self):
- self.music_clip_deck_status_changed("stopped")
- self.music_clip_deck["play-status"] = "stopped"
- self.papinhio_player.music_clip_deck["play-status"] = "stopped"
- self.music_clip_deck_duration_changed(0)
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_play_pause.setIcon(icon3)
- self.music_clip_deck_status_changed("stopped")
- def music_clip_deck_mute_clicked(self):
- if self.music_clip_deck["player-list-row"] is not None:
- if self.music_clip_deck["mute"]==False:
- self.music_clip_deck["mute"] = True
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/mute.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_mute.setIcon(icon3)
- self.music_clip_deck["previous-volume"] = self.music_clip_deck["volume"]
- self.music_clip_deck["volume"] = 0
- self.main_self.main_ui.music_clip_deck_volume_label.setText(str(self.music_clip_deck["volume"])+"/100")
- if self.music_clip_deck["player-list-item"] is not None:
- self.music_clip_deck["player-list-item"]["volume"] = self.music_clip_deck["volume"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.music_clip_deck["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.music_clip_deck["player-list-item"])
- self.main_self.player_list_volume_changed(self.music_clip_deck["player-list-item"]["player number"],False)
- self.papinhio_player.music_clip_deck["volume"] = self.music_clip_deck["volume"]
- else:
- self.music_clip_deck["mute"] = False
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/volume.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_mute.setIcon(icon3)
- self.music_clip_deck["volume"] = self.music_clip_deck["previous-volume"]
- self.main_self.main_ui.music_clip_deck_volume_label.setText(str(self.music_clip_deck["volume"])+"/100")
- if self.music_clip_deck["player-list-item"] is not None:
- self.music_clip_deck["player-list-item"]["volume"] = self.music_clip_deck["volume"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.music_clip_deck["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.music_clip_deck["player-list-item"])
- self.main_self.player_list_volume_changed(self.music_clip_deck["player-list-item"]["player number"],False)
- self.papinhio_player.music_clip_deck["volume"] = self.music_clip_deck["volume"]
- def music_clip_deck_volume_changed(self):
- self.music_clip_deck["volume"] = int(self.main_self.main_ui.music_clip_deck_volume_control.value())
- self.main_self.main_ui.music_clip_deck_volume_label.setText(str(self.music_clip_deck["volume"])+"/100")
- if self.music_clip_deck["player-list-item"] is not None:
- self.music_clip_deck["player-list-item"]["volume"] = self.music_clip_deck["volume"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.music_clip_deck["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.music_clip_deck["player-list-item"])
- self.main_self.player_list_volume_changed(self.music_clip_deck["player-list-item"]["player number"],False)
- self.papinhio_player.music_clip_deck["volume"] = self.music_clip_deck["volume"]
- def music_clip_deck_normalize_changed(self):
- self.music_clip_deck["normalize"] = self.main_self.main_ui.music_clip_normalize.isChecked()
- if self.music_clip_deck["player-list-item"] is not None:
- if self.music_clip_deck["normalize"]:
- self.music_clip_deck["player-list-item"]["normalize"] = 1
- else:
- self.music_clip_deck["player-list-item"]["normalize"] = 0
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.music_clip_deck["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.music_clip_deck["player-list-item"])
- self.main_self.change_player_list_normalize(self.music_clip_deck["player-list-item"]["player number"],False)
- self.papinhio_player.music_clip_deck["normalize"] = self.music_clip_deck["normalize"]
- def music_clip_deck_pan_changed(self):
- self.music_clip_deck["pan"] = int(self.main_self.main_ui.music_clip_deck_pan_control.value())/100
- self.main_self.main_ui.music_clip_deck_pan_label.setText(str(self.music_clip_deck["pan"]))
- if self.music_clip_deck["player-list-item"] is not None:
- self.music_clip_deck["player-list-item"]["pan"] = self.music_clip_deck["pan"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.music_clip_deck["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.music_clip_deck["player-list-item"])
- self.main_self.player_list_pan_changed(self.music_clip_deck["player-list-item"]["player number"],False)
- self.papinhio_player.music_clip_deck["pan"] = self.music_clip_deck["pan"]
- def music_clip_deck_apply_filter(self):
- self.music_clip_deck["low-frequency"] = self.main_self.main_ui.music_clip_deck_low_frequency_input.text()
- self.music_clip_deck["high-frequency"] = self.main_self.main_ui.music_clip_deck_high_frequency_input.text()
- if self.RepresentsInt(self.music_clip_deck["low-frequency"]) and self.RepresentsInt(self.music_clip_deck["high-frequency"]):
- self.music_clip_deck["low-frequency"] = int(self.music_clip_deck["low-frequency"])
- self.music_clip_deck["high-frequency"] = int(self.music_clip_deck["high-frequency"])
- if self.music_clip_deck["high-frequency"]>self.music_clip_deck["low-frequency"] and self.music_clip_deck["high-frequency"]<=20000 and self.music_clip_deck["low-frequency"]>=20:
- self.papinhio_player.music_clip_deck["low-frequency"] = self.music_clip_deck["low-frequency"]
- self.papinhio_player.music_clip_deck["high-frequency"] = self.music_clip_deck["high-frequency"]
- if self.music_clip_deck["player-list-item"] is not None:
- self.music_clip_deck["player-list-item"]["low frequency"] = self.music_clip_deck["low-frequency"]
- self.music_clip_deck["player-list-item"]["high frequency"] = self.music_clip_deck["high-frequency"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.music_clip_deck["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.music_clip_deck["player-list-item"])
- self.main_self.player_list_apply_filter(self.music_clip_deck["player-list-item"]["player number"],False)
- else:
- self.music_clip_deck_reset_filter()
- else:
- self.music_clip_deck_reset_filter()
- def music_clip_deck_reset_filter(self):
- self.music_clip_deck["low-frequency"] = 20
- self.music_clip_deck["high-frequency"] = 20000
- self.main_self.main_ui.music_clip_deck_low_frequency_input.setText(str(self.music_clip_deck["low-frequency"]))
- self.main_self.main_ui.music_clip_deck_high_frequency_input.setText(str(self.music_clip_deck["high-frequency"]))
- if self.music_clip_deck["player-list-item"] is not None:
- self.music_clip_deck["player-list-item"]["low frequency"] = self.music_clip_deck["low-frequency"]
- self.music_clip_deck["player-list-item"]["high frequency"] = self.music_clip_deck["high-frequency"]
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==self.music_clip_deck["player-list-item"]["player number"]:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.music_clip_deck["player-list-item"])
- self.main_self.player_list_apply_filter(self.music_clip_deck["player-list-item"]["player number"],False)
- self.papinhio_player.music_clip_deck["low-frequency"] = self.music_clip_deck["low-frequency"]
- self.papinhio_player.music_clip_deck["high-frequency"] = self.music_clip_deck["high-frequency"]
- def speackers_deck_click_to_talk_clicked(self):
- play_status = self.speackers_deck["play-status"]
- if play_status == "stopped":
- self.speackers_deck["play-status"] = "playing"
- self.papinhio_player.speackers_deck["play-status"] = "playing"
- self.microphone_input.speackers_deck["play-status"] = "playing"
- now = datetime.now()
- player_history_item = (now,now,"microphone","")
- self.speackers_deck["player-history-number"] = data.import_player_history(player_history_item)
- self.main_self.main_ui.speakers_deck_open_or_close_microphone.setText("Πατήστε όταν σταματήσετε να μιλάτε")
- self.main_self.main_ui.speakers_deck_click_to_talk.setEnabled(False)
- elif play_status == "playing":
- self.speackers_deck["play-status"] = "stopped"
- self.papinhio_player.speackers_deck["play-status"] = "stopped"
- self.microphone_input.speackers_deck["play-status"] = "stopped"
- now = datetime.now()
- player_history_item = (now,self.speackers_deck["player-history-number"])
- data.edit_player_history(player_history_item)
- self.main_self.main_ui.speakers_deck_open_or_close_microphone.setText("Πατήστε μία φορά για να μιλήσετε")
- self.main_self.main_ui.speakers_deck_click_to_talk.setEnabled(True)
- def speackers_deck_click_to_talk_pressed(self):
- if self.speackers_deck["play-status"] == "stopped":
- now = datetime.now()
- player_history_item = (now,now,"microphone","")
- self.speackers_deck["player-history-number"] = data.import_player_history(player_history_item)
- self.main_self.main_ui.speakers_deck_open_or_close_microphone.setEnabled(False)
- self.speackers_deck["play-status"] = "playing"
- self.papinhio_player.speackers_deck["play-status"] = "playing"
- self.microphone_input.speackers_deck["play-status"] = "playing"
- self.main_self.main_ui.speakers_deck_click_to_talk.setText("Αφήστε το ποντίκι όταν σταματήσετε να μιλάτε")
- def speackers_deck_click_to_talk_released(self):
- if self.speackers_deck["play-status"] == "playing":
- now = datetime.now()
- player_history_item = (now,self.speackers_deck["player-history-number"])
- data.edit_player_history(player_history_item)
- self.main_self.main_ui.speakers_deck_open_or_close_microphone.setEnabled(True)
- self.speackers_deck["play-status"] = "stopped"
- self.papinhio_player.speackers_deck["play-status"] = "stopped"
- self.microphone_input.speackers_deck["play-status"] = "stopped"
- self.main_self.main_ui.speakers_deck_click_to_talk.setText("Πιέστε παρατεταμένα για να μιλήσετε")
- def speackers_deck_volume_changed(self):
- self.speackers_deck["volume"] = int(self.main_self.main_ui.speackers_deck_volume_control.value())
- self.main_self.main_ui.speackers_deck_volume_label.setText(str(self.speackers_deck["volume"])+"/100")
- self.papinhio_player.speackers_deck["volume"] = self.speackers_deck["volume"]
- self.microphone_input.speackers_deck["volume"] = self.speackers_deck["volume"]
- def speackers_deck_normalize_changed(self):
- self.speackers_deck["normalize"] = self.main_self.main_ui.speackers_deck_normalize.isChecked()
- self.papinhio_player.speackers_deck["normalize"] = self.speackers_deck["normalize"]
- self.microphone_input.speackers_deck["normalize"] = self.speackers_deck["normalize"]
- def speackers_deck_pan_changed(self):
- self.speackers_deck["pan"] = int(self.main_self.main_ui.speackers_deck_pan_control.value())/100
- self.main_self.main_ui.speackers_deck_pan_label.setText(str(self.speackers_deck["pan"]))
- self.papinhio_player.speackers_deck["pan"] = self.speackers_deck["pan"]
- self.microphone_input.speackers_deck["pan"] = self.speackers_deck["pan"]
- def speackers_deck_apply_filter(self):
- self.speackers_deck["low-frequency"] = self.main_self.main_ui.speackers_clip_deck_low_frequency_input.text()
- self.speackers_deck["high-frequency"] = self.main_self.main_ui.speackers_deck_high_frequency_input.text()
- if self.RepresentsInt(self.speackers_deck["low-frequency"]) and self.RepresentsInt(self.speackers_deck["high-frequency"]):
- self.speackers_deck["low-frequency"] = int(self.speackers_deck["low-frequency"])
- self.speackers_deck["high-frequency"] = int(self.speackers_deck["high-frequency"])
- if self.speackers_deck["high-frequency"]>self.speackers_deck["low-frequency"] and self.speackers_deck["high-frequency"]<=20000 and self.speackers_deck["low-frequency"]>=20:
- self.papinhio_player.speackers_deck["low-frequency"] = self.speackers_deck["low-frequency"]
- self.microphone_input.speackers_deck["low-frequency"] = self.speackers_deck["low-frequency"]
- self.papinhio_player.speackers_deck["high-frequency"] = self.speackers_deck["high-frequency"]
- self.microphone_input.speackers_deck["high-frequency"] = self.speackers_deck["high-frequency"]
- else:
- self.speackers_deck_reset_filter()
- else:
- self.speackers_deck_reset_filter()
- def speackers_deck_reset_filter(self):
- self.speackers_deck["low-frequency"] = 20
- self.speackers_deck["high-frequency"] = 20000
- self.main_self.main_ui.speackers_clip_deck_low_frequency_input.setText(str(self.speackers_deck["low-frequency"]))
- self.main_self.main_ui.speackers_deck_high_frequency_input.setText(str(self.speackers_deck["high-frequency"]))
- self.papinhio_player.speackers_deck["low-frequency"] = self.speackers_deck["low-frequency"]
- self.microphone_input.speackers_deck["low-frequency"] = self.speackers_deck["low-frequency"]
- self.papinhio_player.speackers_deck["high-frequency"] = self.speackers_deck["high-frequency"]
- self.microphone_input.speackers_deck["high-frequency"] = self.speackers_deck["high-frequency"]
- def ip_call_1_deck_answer(self):
- pass
- def ip_call_1_deck_reject(self):
- pass
- def ip_call_1_transmit_call(self):
- pass
- def ip_call_1_deck_volume_changed(self):
- pass
- def ip_call_1_deck_normalize_changed(self):
- pass
- def ip_call_1_deck_pan_changed(self):
- pass
- def ip_call_1_deck_apply_filter(self):
- pass
- def ip_call_1_deck_reset_filter(self):
- pass
- def ip_call_2_deck_answer(self):
- pass
- def ip_call_2_deck_reject(self):
- pass
- def ip_call_2_transmit_call(self):
- pass
- def ip_call_2_deck_volume_changed(self):
- pass
- def ip_call_2_deck_normalize_changed(self):
- pass
- def ip_call_2_deck_pan_changed(self):
- pass
- def ip_call_2_deck_apply_filter(self):
- pass
- def ip_call_2_deck_reset_filter(self):
- pass
- def ip_call_3_deck_answer(self):
- pass
- def ip_call_3_deck_reject(self):
- pass
- def ip_call_3_transmit_call(self):
- pass
- def ip_call_3_deck_volume_changed(self):
- pass
- def ip_call_3_deck_normalize_changed(self):
- pass
- def ip_call_3_deck_pan_changed(self):
- pass
- def ip_call_3_deck_apply_filter(self):
- pass
- def ip_call_3_deck_reset_filter(self):
- pass
- def prepare_deck_1(self,player_list_number):
- if self.deck_1["play-status"]!="stopped":
- self.deck_1["play-status"] = "stopped"
- self.deck_1_status_changed("stopped")
- self.papinhio_player.deck_1["play-status"] = "stopped"
- counter = 0
- for player_list_row_1 in self.main_self.player_list_data:
- if player_list_row_1["player number"]==player_list_number:
- self.deck_1["player-list-item"] = player_list_row_1
- self.deck_1["player-list-row"] = counter
- break
- counter +=1
- #set data to deck_1_details
- if "image path" not in self.deck_1["player-list-item"]:
- self.deck_1["player-list-item"]["image path"] = ""
- if os.path.exists(self.deck_1["player-list-item"]["image path"]):
- pixmap = QtGui.QPixmap(self.deck_1["player-list-item"]["image path"]).scaledToHeight(230)
- self.main_self.main_ui.deck_1_image.setPixmap(pixmap)
- self.main_self.main_ui.deck_1_image.setScaledContents(True)
- self.main_self.main_ui.deck_1_image.resize(230, 230)
- self.main_self.main_ui.deck_1_image.update()
- else:
- self.main_self.main_ui.deck_1_image.setPixmap(QtGui.QPixmap(":/main_program_icons/media/images/deck_image.png"))
- self.main_self.main_ui.deck_1_image.setScaledContents(True)
- self.main_self.main_ui.deck_1_image.resize(230, 230)
- self.main_self.main_ui.deck_1_image.update()
- if "image title" not in self.deck_1["player-list-item"]:
- self.deck_1["player-list-item"]["image title"] = ""
- self.main_self.main_ui.deck_1_image_title.setText(str(self.deck_1["player-list-item"]["image title"]))
- self.main_self.main_ui.deck_1_title_in_details.setText("Τίτλος: "+str(self.deck_1["player-list-item"]["title"]))
- if "artist" not in self.deck_1["player-list-item"]:
- self.deck_1["player-list-item"]["artist"] = ""
- self.main_self.main_ui.deck_1_artist.setText("Καλλιτέχνης: "+str(self.deck_1["player-list-item"]["artist"]))
- if "composer" not in self.deck_1["player-list-item"]:
- self.deck_1["player-list-item"]["composer"] = ""
- self.main_self.main_ui.deck_1_composer.setText("Συνθέτης: "+str(self.deck_1["player-list-item"]["composer"]))
- if "author" not in self.deck_1["player-list-item"]:
- self.deck_1["player-list-item"]["author"] = ""
- self.main_self.main_ui.deck_1_author.setText("Στιχουργός: "+str(self.deck_1["player-list-item"]["author"]))
- if "album" not in self.deck_1["player-list-item"]:
- self.deck_1["player-list-item"]["album"] = ""
- self.main_self.main_ui.deck_1_album.setText("Λεύκωμα: "+str(self.deck_1["player-list-item"]["album"]))
- if "year" not in self.deck_1["player-list-item"]:
- self.deck_1["player-list-item"]["year"] = ""
- self.main_self.main_ui.deck_1_year.setText("Έτος κυκλοφορίας: "+str(self.deck_1["player-list-item"]["year"]))
- rating = int(self.deck_1["player-list-item"]["rating"])
- self.display_rating("Clic",self.deck_1["player-list-item"]["player number"],rating,"deck 1")
- self.deck_1["total-duration-milliseconds"] = int(self.deck_1["player-list-item"]["duration milliseconds"])
- self.deck_1["total-duration-human"] = self.deck_1["player-list-item"]["duration human"]
- self.main_self.main_ui.deck_1_duration.setText("Διάρκεια: 00:00:00/"+str(self.deck_1["total-duration-human"]))
- self.main_self.main_ui.deck_1_repeats.setText("Υπολειπόμενες επαναλήψεις: "+str(self.deck_1["player-list-item"]["repeats"]))
- self.deck_1["player-list-item"]["repeats"] -= 1
- #3. Update deck_1
- self.main_self.main_ui.deck_1_title.setText("Deck 1: "+str(self.deck_1["player-list-item"]["title"]))
- self.main_self.main_ui.deck_1_time.setText("00:00:00/"+str(self.deck_1["total-duration-human"]))
- self.main_self.main_ui.deck_1_timeline.setMaximum(self.deck_1["total-duration-milliseconds"])
- self.main_self.main_ui.deck_1_timeline.setSingleStep(500)
- self.main_self.main_ui.deck_1_timeline.setPageStep(1000)
- self.main_self.main_ui.deck_1_timeline.setProperty("value", 0)
- self.main_self.main_ui.deck_1_timeline.setEnabled(True)
- if self.deck_1["player-list-item"]["type"]!="retransmitions":
- self.main_self.main_ui.deck_1_timeline.show()
- else:
- self.main_self.main_ui.deck_1_timeline.hide()
- self.deck_1["volume"] = int(self.deck_1["player-list-item"]["volume"])
- self.main_self.main_ui.deck_1_volume_label.setText(str(self.deck_1["volume"])+"/100")
- self.main_self.main_ui.deck_1_volume_control.setValue(self.deck_1["volume"])
- self.deck_1["normalize"] = int(self.deck_1["player-list-item"]["normalize"])
- if self.deck_1["normalize"]==1 or self.deck_1["normalize"]==True:
- self.main_self.main_ui.deck_1_normalize.setChecked(True)
- else:
- self.main_self.main_ui.deck_1_normalize.setChecked(False)
- self.deck_1["pan"] = int(self.deck_1["player-list-item"]["pan"])
- self.main_self.main_ui.deck_1_pan_label.setText(str(self.deck_1["pan"]))
- self.main_self.main_ui.deck_1_pan_control.setValue(self.deck_1["pan"])
- self.deck_1["low-frequency"] = int(float(self.deck_1["player-list-item"]["low frequency"]))
- self.main_self.main_ui.deck_1_low_frequency_input.setText(str(self.deck_1["low-frequency"]))
- self.deck_1["high-frequency"] = int(float(self.deck_1["player-list-item"]["high frequency"]))
- self.main_self.main_ui.deck_1_high_frequency_input.setText(str(self.deck_1["high-frequency"]))
- #Remove or update playerlist item
- if self.deck_1["player-list-item"]["repeats"]<0:
- #remove item
- self.main_self.delete_player_list_item(player_list_number)
- #if player list is checked insert the deleted row in the endswith
- if self.main_self.repeat_player_list:
- if self.deck_1["player-list-item"]["type"]!="retransmitions" and self.deck_1["player-list-item"]["type"]!="greek time files":
- data.add_to_player_list_bottom(self.deck_1["player-list-item"]["type"],self.deck_1["player-list-item"]["relative number"])
- elif self.deck_1["player-list-item"]["type"]=="retransmitions":
- data.add_retransmition_to_player_list_bottom(self.deck_1["player-list-item"]["relative number"],self.deck_1["player-list-item"]["duration milliseconds"])
- elif self.deck_1["player-list-item"]["type"]=="greek time files":
- data.add_greek_time_to_player_list(self.deck_1["player-list-item"]["group title"])
- new_row = len(self.main_self.player_list_data)-1
- self.main_self.display_player_list_row(new_row,self.deck_1["player-list-item"],True)
- self.main_self.player_list_data.append(self.deck_1["player-list-item"])
- else:
- #update item
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==player_list_number:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_1["player-list-item"])
- self.deck_1["chunk-number"] = 0
- self.deck_1["current-duration-milliseconds"] = 0
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_1_play_pause.setIcon(icon3)
- #if type is retransmition check radio url
- if self.deck_1["player-list-item"]["type"]=="retransmitions":
- self.deck_1["radio-url"] = None
- self.papinhio_player.prepare_deck_1(self.deck_1)
- self.check_url(self.deck_1["player-list-item"],"deck 1")
- else:
- self.papinhio_player.prepare_deck_1(self.deck_1)
- def check_url(self,retransmition,deck):
- url = retransmition["url"]
- url_option = retransmition["url option"]
- self.javascript_code = retransmition["javascript code"]
- radio_url_check = retransmition["radio url"]
- if(url_option=="const"):
- radio_url_exists = self.check_radio_url(url)
- if(radio_url_exists==True):
- self.radio_url = url
- if deck == "deck 1":
- self.papinhio_player.deck_1["radio-url"] = url
- if deck == "deck 2":
- self.papinhio_player.deck_2["radio-url"] = url
- else:
- if deck == "deck 1":
- self.papinhio_player.deck_1["radio-url"] = None
- self.deck_1["play-status"] = "stopped"
- self.papinhio_player.deck_1["play-status"] = "stopped"
- #display error message
- if deck == "deck 2":
- self.papinhio_player.deck_2["radio-url"] = None
- self.deck_2["play-status"] = "stopped"
- self.papinhio_player.deck_2["play-status"] = "stopped"
- #display error message
- else:
- radio_url_exists = self.check_radio_url(radio_url_check)
- if(radio_url_exists==True):
- self.radio_url = radio_url_check
- if deck == "deck 1":
- self.papinhio_player.deck_1["radio_url"] = radio_url_check
- if self.deck_1["play-status"]=="prepare-and-play":
- self.deck_1["play-status"] = "playing"
- self.papinhio_player.deck_1["play-status"] = "playing"
- if deck == "deck 2":
- self.papinhio_player.deck_2["radio_url"] = radio_url_check
- if self.deck_2["play-status"]=="prepare-and-play":
- self.deck_2["play-status"] = "playing"
- self.papinhio_player.deck_2["play-status"] = "playing"
- else:
- self.main_page_loaded = False
- self.browser = QWebView()
- self.main_page = QWebPage()
- self.browser.setPage(self.main_page)
- self.browser.setUrl(QUrl(url))
- self.browser.loadFinished.connect(lambda ok:self.main_page_loaded_finished(ok))
- def check_radio_url(self,radio_url):
- packets = 10
- try:
- self.client = miniaudio.IceCastClient(radio_url)
- try:
- self.pcm_stream = MiniaudioDecoderPcmStream(self.client.audio_format,self.client)
- except Exception as e:
- return e
- for i in range(0,packets):
- try:
- audio = self.pcm_stream.read(1024)
- except Exception as e:
- return e
- return True
- except Exception as e:
- return e
- return True
- def main_page_loaded_finished(self,ok):
- if(self.main_page_loaded==False):
- if(ok):
- self.main_page_loaded = True
- radio_url_retrieved = str(self.browser.page().currentFrame().evaluateJavaScript(self.javascript_code)).strip()
- self.main_page.deleteLater()
- self.main_page = None
- self.browser.stop()
- self.browser.close()
- self.browser.hide()
- self.browser.deleteLater()
- self.browser = None
- radio_url_exists = self.check_radio_url(radio_url_retrieved)
- if(radio_url_exists==True):
- self.radio_url = radio_url_retrieved
- if deck == "deck 1":
- self.papinhio_player.deck_1["radio-url"] = radio_url_retrieved
- if deck == "deck 2":
- self.papinhio_player.deck_2["radio-url"] = radio_url_retrieved
- else:
- if deck == "deck 1":
- self.radio_url = False
- self.papinhio_player.deck_1["radio-url"] = None
- self.deck_1["play_status"] = "stopped"
- self.papinhio_player.deck_1["play-status"] = "stopped"
- if deck == "deck 2":
- self.radio_url = False
- self.papinhio_player.deck_1["radio-url"] = None
- self.deck_2["play_status"] = "stopped"
- self.papinhio_player.deck_2["play-status"] = "stopped"
- def prepare_and_play_deck_1(self,player_list_number):
- self.prepare_deck_1(player_list_number)
- self.deck_1["play-status"] = "playing"
- self.papinhio_player.deck_1["play-status"] = "playing"
- self.deck_1_status_changed("playing")
- def prepare_deck_2(self,player_list_number):
- if self.deck_2["play-status"]!="stopped":
- self.deck_2["play-status"] = "stopped"
- self.deck_2_status_changed("stopped")
- self.papinhio_player.deck_2["play-status"] = "stopped"
- counter = 0
- for player_list_row_1 in self.main_self.player_list_data:
- if player_list_row_1["player number"]==player_list_number:
- self.deck_2["player-list-item"] = player_list_row_1
- self.deck_2["player-list-row"] = counter
- break
- counter +=1
- #set data to deck_2_details
- if "image path" not in self.deck_2["player-list-item"]:
- self.deck_2["player-list-item"]["image path"] = ""
- if os.path.exists(self.deck_2["player-list-item"]["image path"]):
- pixmap = QtGui.QPixmap(self.deck_2["player-list-item"]["image path"]).scaledToHeight(230)
- self.main_self.main_ui.deck_2_image.setPixmap(pixmap)
- self.main_self.main_ui.deck_2_image.setScaledContents(True)
- self.main_self.main_ui.deck_2_image.resize(230, 230)
- self.main_self.main_ui.deck_2_image.update()
- else:
- self.main_self.main_ui.deck_2_image.setPixmap(QtGui.QPixmap(":/main_program_icons/media/images/deck_image.png"))
- self.main_self.main_ui.deck_2_image.setScaledContents(True)
- self.main_self.main_ui.deck_2_image.resize(230, 230)
- self.main_self.main_ui.deck_2_image.update()
- if "image title" not in self.deck_2["player-list-item"]:
- self.deck_2["player-list-item"]["image title"] = ""
- self.main_self.main_ui.deck_2_image_title.setText(str(self.deck_2["player-list-item"]["image title"]))
- self.main_self.main_ui.deck_2_title_in_details.setText("Τίτλος: "+str(self.deck_2["player-list-item"]["title"]))
- if "artist" not in self.deck_2["player-list-item"]:
- self.deck_2["player-list-item"]["artist"] = ""
- self.main_self.main_ui.deck_2_artist.setText("Καλλιτέχνης: "+str(self.deck_2["player-list-item"]["artist"]))
- if "composer" not in self.deck_2["player-list-item"]:
- self.deck_2["player-list-item"]["composer"] = ""
- self.main_self.main_ui.deck_2_composer.setText("Συνθέτης: "+str(self.deck_2["player-list-item"]["composer"]))
- if "author" not in self.deck_2["player-list-item"]:
- self.deck_2["player-list-item"]["author"] = ""
- self.main_self.main_ui.deck_2_author.setText("Στιχουργός: "+str(self.deck_2["player-list-item"]["author"]))
- if "album" not in self.deck_2["player-list-item"]:
- self.deck_2["player-list-item"]["album"] = ""
- self.main_self.main_ui.deck_2_album.setText("Λεύκωμα: "+str(self.deck_2["player-list-item"]["album"]))
- if "year" not in self.deck_2["player-list-item"]:
- self.deck_2["player-list-item"]["year"] = ""
- self.main_self.main_ui.deck_2_year.setText("Έτος κυκλοφορίας: "+str(self.deck_2["player-list-item"]["year"]))
- rating = int(self.deck_2["player-list-item"]["rating"])
- self.display_rating("Clic",self.deck_2["player-list-item"]["player number"],rating,"deck 2")
- self.deck_2["total-duration-milliseconds"] = int(self.deck_2["player-list-item"]["duration milliseconds"])
- self.deck_2["total-duration-human"] = self.deck_2["player-list-item"]["duration human"]
- self.main_self.main_ui.deck_2_duration.setText("Διάρκεια: 00:00:00/"+str(self.deck_2["total-duration-human"]))
- self.main_self.main_ui.deck_2_repeats.setText("Υπολειπόμενες επαναλήψεις: "+str(self.deck_2["player-list-item"]["repeats"]))
- self.deck_2["player-list-item"]["repeats"] -= 1
- #3. Update deck_2
- self.main_self.main_ui.deck_2_title.setText("Deck 2: "+str(self.deck_2["player-list-item"]["title"]))
- self.main_self.main_ui.deck_2_time.setText("00:00:00/"+str(self.deck_2["total-duration-human"]))
- self.main_self.main_ui.deck_2_timeline.setMaximum(self.deck_2["total-duration-milliseconds"])
- self.main_self.main_ui.deck_2_timeline.setSingleStep(500)
- self.main_self.main_ui.deck_2_timeline.setPageStep(1000)
- self.main_self.main_ui.deck_2_timeline.setProperty("value", 0)
- self.main_self.main_ui.deck_2_timeline.setEnabled(True)
- if self.deck_2["player-list-item"]["type"]!="retransmitions":
- self.main_self.main_ui.deck_2_timeline.show()
- else:
- self.main_self.main_ui.deck_2_timeline.hide()
- self.deck_2["volume"] = int(self.deck_2["player-list-item"]["volume"])
- self.main_self.main_ui.deck_2_volume_label.setText(str(self.deck_2["volume"])+"/100")
- self.main_self.main_ui.deck_2_volume_control.setValue(self.deck_2["volume"])
- self.deck_2["normalize"] = int(self.deck_2["player-list-item"]["normalize"])
- if self.deck_2["normalize"]==1 or self.deck_2["normalize"]==True:
- self.main_self.main_ui.deck_2_normalize.setChecked(True)
- else:
- self.main_self.main_ui.deck_2_normalize.setChecked(False)
- self.deck_2["pan"] = int(self.deck_2["player-list-item"]["pan"])
- self.main_self.main_ui.deck_2_pan_label.setText(str(self.deck_2["pan"]))
- self.main_self.main_ui.deck_2_pan_control.setValue(self.deck_2["pan"])
- self.deck_2["low-frequency"] = int(float(self.deck_2["player-list-item"]["low frequency"]))
- self.main_self.main_ui.deck_2_low_frequency_input.setText(str(self.deck_2["low-frequency"]))
- self.deck_2["high-frequency"] = int(float(self.deck_2["player-list-item"]["high frequency"]))
- self.main_self.main_ui.deck_2_high_frequency_input.setText(str(self.deck_2["high-frequency"]))
- #Remove or update playerlist item
- if self.deck_2["player-list-item"]["repeats"]<0:
- #remove item
- self.main_self.delete_player_list_item(player_list_number)
- #if player list is checked insert the deleted row in the endswith
- if self.main_self.repeat_player_list:
- if self.deck_2["player-list-item"]["type"]!="retransmitions" and self.deck_2["player-list-item"]["type"]!="greek time files":
- data.add_to_player_list_bottom(self.deck_2["player-list-item"]["type"],self.deck_2["player-list-item"]["relative number"])
- elif self.deck_2["player-list-item"]["type"]=="retransmitions":
- data.add_retransmition_to_player_list_bottom(self.deck_2["player-list-item"]["relative number"],self.deck_2["player-list-item"]["duration milliseconds"])
- elif self.deck_1["player-list-item"]["type"]=="greek time files":
- data.add_greek_time_to_player_list(self.deck_2["player-list-item"]["group title"])
- new_row = len(self.main_self.player_list_data)-1
- self.main_self.display_player_list_row(new_row,self.deck_2["player-list-item"],True)
- else:
- #update item
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==player_list_number:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.deck_2["player-list-item"])
- self.deck_2["chunk-number"] = 0
- self.deck_2["current-duration-milliseconds"] = 0
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.deck_2_play_pause.setIcon(icon3)
- #if type is retransmition check radio url
- if self.deck_2["player-list-item"]["type"]=="retransmitions":
- self.deck_2["radio-url"] = None
- self.papinhio_player.prepare_deck_2(self.deck_2)
- self.check_url(self.deck_2["player-list-item"],"deck 2")
- else:
- self.papinhio_player.prepare_deck_2(self.deck_2)
- def prepare_and_play_deck_2(self,player_list_number):
- self.prepare_deck_2(player_list_number)
- self.deck_2["play-status"] = "playing"
- self.papinhio_player.deck_2["play-status"] = "playing"
- self.deck_2_status_changed("playing")
- def prepare_music_clip_deck(self,player_list_number):
- if self.music_clip_deck["play-status"]!="stopped":
- self.music_clip_deck["play-status"] = "stopped"
- self.music_clip_deck_status_changed("stopped")
- self.papinhio_player.music_clip_deck["play-status"] = "stopped"
- counter = 0
- for player_list_row_1 in self.main_self.player_list_data:
- if player_list_row_1["player number"]==player_list_number:
- self.music_clip_deck["player-list-item"] = player_list_row_1
- self.music_clip_deck["player-list-row"] = counter
- break
- counter +=1
- self.music_clip_deck["total-duration-milliseconds"] = int(self.music_clip_deck["player-list-item"]["duration"])
- self.music_clip_deck["total-duration-human"] = self.convert_duration_from_milliseconds_to_human(self.music_clip_deck["total-duration-milliseconds"])
- self.music_clip_deck["player-list-item"]["repeats"] -= 1
- #Update music clip deck
- self.main_self.main_ui.music_clip_deck_title.setText("Music clip deck: "+str(self.music_clip_deck["player-list-item"]["title"]))
- self.main_self.main_ui.music_clip_deck_time.setText("00:00:00/"+str(self.music_clip_deck["total-duration-human"]))
- self.main_self.main_ui.music_clip_deck_timeline.setMaximum(self.music_clip_deck["total-duration-milliseconds"])
- self.main_self.main_ui.music_clip_deck_timeline.setSingleStep(500)
- self.main_self.main_ui.music_clip_deck_timeline.setPageStep(1000)
- self.main_self.main_ui.music_clip_deck_timeline.setProperty("value", 0)
- self.main_self.main_ui.music_clip_deck_timeline.setEnabled(True)
- self.music_clip_deck["volume"] = int(self.music_clip_deck["player-list-item"]["volume"])
- self.main_self.main_ui.music_clip_deck_volume_label.setText(str(self.music_clip_deck["volume"])+"/100")
- self.main_self.main_ui.music_clip_deck_volume_control.setValue(self.music_clip_deck["volume"])
- self.music_clip_deck["normalize"] = int(self.music_clip_deck["player-list-item"]["normalize"])
- if self.music_clip_deck["normalize"]==1 or self.music_clip_deck["normalize"]==True:
- self.main_self.main_ui.music_clip_normalize.setChecked(True)
- else:
- self.main_self.main_ui.music_clip_normalize.setChecked(False)
- self.music_clip_deck["pan"] = int(self.music_clip_deck["player-list-item"]["pan"])
- self.main_self.main_ui.music_clip_deck_pan_label.setText(str(self.music_clip_deck["pan"]))
- self.main_self.main_ui.music_clip_deck_pan_control.setValue(self.music_clip_deck["pan"])
- self.music_clip_deck["low-frequency"] = int(float(self.music_clip_deck["player-list-item"]["low frequency"]))
- self.main_self.main_ui.music_clip_deck_low_frequency_input.setText(str(self.music_clip_deck["low-frequency"]))
- self.music_clip_deck["high-frequency"] = int(float(self.music_clip_deck["player-list-item"]["high frequency"]))
- self.main_self.main_ui.music_clip_deck_high_frequency_input.setText(str(self.music_clip_deck["high-frequency"]))
- #Remove or update playerlist item
- if self.music_clip_deck["player-list-item"]["repeats"]<0:
- #remove item
- self.main_self.delete_player_list_item(player_list_number)
- #if player list is checked insert the deleted row in the endswith
- if self.main_self.repeat_player_list:
- data.add_to_player_list_bottom(self.music_clip_deck["player-list-item"]["type"],self.music_clip_deck["player-list-item"]["relative number"])
- new_row = len(self.main_self.player_list_data)-1
- self.main_self.display_player_list_row(new_row,self.music_clip_deck["player-list-item"],True)
- else:
- #update item
- counter = 0
- row_found = False
- for player_list_row in self.main_self.player_list_data:
- if player_list_row["player number"]==player_list_number:
- row = counter
- row_found = True
- break
- counter +=1
- if row_found == True:
- self.main_self.display_player_list_row(row,self.music_clip_deck["player-list-item"])
- self.music_clip_deck["chunk-number"] = 0
- self.music_clip_deck["current-duration-milliseconds"] = 0
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_play_pause.setIcon(icon3)
- self.papinhio_player.prepare_music_clip_deck(self.music_clip_deck)
- def prepare_and_play_music_clip_deck(self,player_list_number):
- self.prepare_music_clip_deck(player_list_number)
- self.music_clip_deck["play-status"] = "playing"
- self.papinhio_player.music_clip_deck["play-status"] = "playing"
- self.music_clip_deck_status_changed("playing")
- def RepresentsInt(self,s):
- try:
- int(s)
- return True
- except ValueError:
- return False
- def display_rating(self,action,player_list_number,rating,deck,loop=False):
- preview_rating_frame = QtWidgets.QFrame()
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(preview_rating_frame.sizePolicy().hasHeightForWidth())
- preview_rating_frame.setSizePolicy(sizePolicy)
- preview_rating_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
- preview_rating_frame.setFrameShadow(QtWidgets.QFrame.Raised)
- horizontalLayout = QtWidgets.QHBoxLayout(preview_rating_frame)
- rating_label = QtWidgets.QLabel()
- rating_label.setText("Αξιολόγηση: ")
- horizontalLayout.addWidget(rating_label)
- rest_rating = 10 - rating
- for i in range(0,rating):
- star_label = QLabelClickable(preview_rating_frame)
- star_label.setMinimumSize(QtCore.QSize(16, 16))
- star_label.setMaximumSize(QtCore.QSize(16, 16))
- star_label.setText("")
- star_label.setPixmap(QtGui.QPixmap(":/main_program_icons/media/images/star_yellow.png"))
- star_label.setScaledContents(True)
- #star_label.setCursor(QtGui.QCursor(Qt.PointingHandCursor))
- #star_label.clicked.connect(lambda action,player_list_number=player_list_number,rating=i+1:self.display_rating(action,player_list_number,rating,deck))
- horizontalLayout.addWidget(star_label)
- for i in range(0,rest_rating):
- star_label = QLabelClickable()
- star_label.setMinimumSize(QtCore.QSize(16, 16))
- star_label.setMaximumSize(QtCore.QSize(16, 16))
- star_label.setText("")
- star_label.setPixmap(QtGui.QPixmap(":/main_program_icons/media/images/star.png"))
- star_label.setScaledContents(True)
- #star_label.setCursor(QtGui.QCursor(Qt.PointingHandCursor))
- #star_label.clicked.connect(lambda action,player_list_number=player_list_number,rating=rating+i+1:self.display_rating(action,player_list_number,rating,deck))
- horizontalLayout.addWidget(star_label)
- horizontalLayout.setContentsMargins(0, 0, 0, 0)
- horizontalLayout.setSpacing(0)
- preview_rating_frame.setStyleSheet("QFrame{border:0px;}")
- if deck == "deck 1":
- self.main_self.main_ui.verticalLayout_23.replaceWidget(self.main_self.main_ui.deck_1_rating_frame, preview_rating_frame)
- self.main_self.main_ui.deck_1_rating_frame = preview_rating_frame
- else:
- self.main_self.main_ui.verticalLayout_24.replaceWidget(self.main_self.main_ui.deck_2_rating_frame, preview_rating_frame)
- self.main_self.main_ui.deck_2_rating_frame = preview_rating_frame
- if deck=="deck 1":
- self.deck_1["player-list-item"]["rating"] = rating
- elif deck=="deck 2":
- self.deck_2["player-list-item"]["rating"] = rating
- '''
- #save rating edit
- if deck=="deck 1":
- relative_type = self.deck_1["player-list-item"]["type"]
- relative_number = self.deck_1["player-list-item"]["relative number"]
- elif deck=="deck 2":
- relative_type = self.deck_2["player-list-item"]["type"]
- relative_number = self.deck_2["player-list-item"]["relative number"]
- item = data.read_items_by_type_and_relative_number(relative_type,relative_number)[0]
- item["rating"] = rating
- if relative_type=="sound files":
- data.edit_sound_file(item)
- elif relative_type=="sound clips":
- data.edit_sound_clip(item)
- elif relative_type=="retransmitions":
- data.edit_retransmition(item)
- elif relative_type=="weather news":
- data.edit_weather_news(item)
- elif relative_type=="church news":
- data.edit_church_news(item)
- elif relative_type=="greek time files":
- data.edit_greek_time_rating(rating,relative_number)
- '''
- def convert_duration_from_milliseconds_to_human(self,duration_milliseconds):
- total_seconds = int(duration_milliseconds/1000)
- #1. find how much hours total_seconds are
- hours = int(total_seconds/(60*60))
- #2. calculate seconds remaining
- seconds_remaining = total_seconds-(hours*60*60)
- #3. find how much minutes seconds_remaining are
- minutes = int(seconds_remaining/60)
- #4. recalculate seconds remaining
- seconds = seconds_remaining-(minutes*60)
- #add leading zero
- if(seconds<10):
- seconds = "0"+str(seconds)
- if(minutes<10):
- minutes = "0"+str(minutes)
- if(hours<10):
- hours = "0"+str(hours)
- return str(hours)+":"+str(minutes)+":"+str(seconds)
- def display_music_clips(self):
- sound_clips = data.read_sound_clips(10)
- for i in reversed(range(self.main_self.main_ui.gridLayout_35.count())):
- self.main_self.main_ui.gridLayout_35.itemAt(i).widget().setParent(None)
- counter = 0
- for sound_clip in sound_clips:
- self.sound_clip_button = QtWidgets.QPushButton()
- font = QtGui.QFont()
- font.setPointSize(7)
- self.sound_clip_button.setFont(font)
- #self.sound_clip_button.setWordWrap(True)
- title = sound_clip["title"]#.replace(" ", "\n")
- self.sound_clip_button.setText(title)
- self.sound_clip_button.clicked.connect(lambda state,sound_clip_number=sound_clip["number"]:self.play_sound_clip(sound_clip_number))
- if counter<=4:
- self.main_self.main_ui.gridLayout_35.addWidget(self.sound_clip_button,0,counter,1,1)
- if counter>4:
- self.main_self.main_ui.gridLayout_35.addWidget(self.sound_clip_button,1,counter-5,1,1)
- self.sound_clip_button.setStyleSheet("QPushButton{width:100px;height:30px;}")
- counter +=1
- def play_sound_clip(self,sound_clip_number):
- if self.music_clip_deck["play-status"]!="stopped":
- self.music_clip_deck["play-status"] = "stopped"
- self.music_clip_deck_status_changed("stopped")
- self.papinhio_player.music_clip_deck["play-status"] = "stopped"
- self.music_clip_deck["player-list-item"] = None
- self.music_clip_deck["player-list-row"] = None
- counter = -1
- for sound_clip in self.papinhio_player.sound_clips:
- counter = 0
- if sound_clip["number"] == sound_clip_number:
- title = sound_clip["title"]
- self.music_clip_deck["total-duration-milliseconds"] = sound_clip["total-duration-milliseconds"]
- self.music_clip_deck["total-duration-human"] = self.convert_duration_from_milliseconds_to_human(self.music_clip_deck["total-duration-milliseconds"])
- #Update music clip deck
- self.main_self.main_ui.music_clip_deck_title.setText("Music clip deck: "+str(title))
- self.main_self.main_ui.music_clip_deck_time.setText("00:00:00/"+str(self.music_clip_deck["total-duration-human"]))
- self.main_self.main_ui.music_clip_deck_timeline.setMaximum(self.music_clip_deck["total-duration-milliseconds"])
- self.main_self.main_ui.music_clip_deck_timeline.setSingleStep(500)
- self.main_self.main_ui.music_clip_deck_timeline.setPageStep(1000)
- self.main_self.main_ui.music_clip_deck_timeline.setProperty("value", 0)
- self.main_self.main_ui.music_clip_deck_timeline.setEnabled(True)
- self.music_clip_deck["volume"] = self.main_self.main_ui.music_clip_deck_volume_control.value()
- self.music_clip_deck["normalize"] = self.main_self.main_ui.music_clip_normalize.isChecked()
- self.music_clip_deck["pan"] = self.main_self.main_ui.music_clip_deck_pan_control.value()
- self.music_clip_deck["low-frequency"] = self.main_self.main_ui.music_clip_deck_low_frequency_input.text()
- self.music_clip_deck["high-frequency"] = self.main_self.main_ui.music_clip_deck_high_frequency_input.text()
- icon3 = QtGui.QIcon()
- icon3.addPixmap(QtGui.QPixmap(":/main_program_icons/media/images/play_song.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.main_self.main_ui.music_clip_deck_play_pause.setIcon(icon3)
- self.papinhio_player.load_sound_clip(sound_clip_number)
- return 1
- class Microphone(QThread):
- microphone_segment_ready = pyqtSignal(AudioSegment)
- def __init__(self):
- super().__init__()
- #self.microphone_queue = queue.Queue()
- #QoS settings
- self.packet_time = 744
- self.packet_size = 4104
- self.new_sample_rate = 44100
- self.format = pyaudio.paInt16
- self.channels = 2
- self.input_device_name = data.read_setting("input device name")[0]["current value"]
- self.input_device_number = int(data.read_setting("input device number")[0]["current value"])
- self.p = pyaudio.PyAudio()
- self.info = self.p.get_host_api_info_by_index(0)
- self.numdevices = self.info.get('deviceCount')
- self.input_devices = [[0,0,"Καμία συσκευή μικροφώνου"]]
- counter = 1
- for i in range (0,self.numdevices):
- if self.p.get_device_info_by_host_api_device_index(0,i).get('maxInputChannels')>0:
- self.input_devices.append([counter,i,self.p.get_device_info_by_host_api_device_index(0,i).get('name')])
- counter += 1
- self.speackers_deck = {
- "play-status":"stopped",
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000
- }
- def run(self):
- for input_device in self.input_devices:
- if(self.input_device_name==input_device[2]):
- self.input_device_index = input_device[1]
- self.microphone_input_stream = self.p.open(format=pyaudio.paInt16,channels=1,rate=44100,input=True,input_device_index=self.input_device_index)
- self.microphone_input_stream.start_stream()
- while(True):
- #t1 = time.time()
- #speackers deck
- if self.speackers_deck["play-status"]=="playing":
- microphone_data = self.microphone_input_stream.read(8*int(self.packet_size))#744msec
- microphone_slice = AudioSegment(microphone_data, sample_width=2, frame_rate=44100, channels=1)
- microphone_slice = AudioSegment.from_mono_audiosegments(microphone_slice, microphone_slice)
- if self.speackers_deck["pan"]!=0:
- microphone_slice = microphone_slice.pan(self.speackers_deck["pan"])
- if self.speackers_deck["low-frequency"]>20:
- microphone_slice = effects.high_pass_filter(microphone_slice, self.speackers_deck["low-frequency"])
- if self.speackers_deck["high-frequency"]>20000:
- microphone_slice = effects.low_pass_filter(microphone_slice, self.speackers_deck["high-frequency"])
- if(self.speackers_deck["volume"]==0):
- self.db_volume = -200
- else:
- self.db_volume = 20*math.log10(self.speackers_deck["volume"]/100)
- microphone_slice = microphone_slice+self.db_volume
- #normalize
- if(self.speackers_deck["normalize"]==True or self.speackers_deck["normalize"]==1):
- microphone_slice = self.normalize_method(microphone_slice,0.1)
- self.microphone_segment_ready.emit(microphone_slice)
- #self.microphone_queue.put(microphone_slice)
- else:
- self.speackers_deck["chunk-number"] = 0
- self.speackers_deck["current-duration-milliseconds"] = 0
- microphone_slice = AudioSegment.empty()
- #with self.microphone_queue.mutex:
- # self.microphone_queue.queue.clear()
- #t2 = time.time()
- #total_time = (t2 - t1)*1000
- #if total_time<self.packet_time:
- # time.sleep(total_time/1000)
- time.sleep(0.015)
- def normalize_method(self,seg, headroom):
- peak_sample_val = seg.max
- # if the max is 0, this audio segment is silent, and can't be normalized
- if peak_sample_val == 0:
- return seg
- target_peak = seg.max_possible_amplitude * utils.db_to_float(-headroom)
- #target_peak = seg.max_possible_amplitude * (percent_headroom)
- needed_boost = utils.ratio_to_db(target_peak / peak_sample_val)
- return seg.apply_gain(needed_boost)
- class Papinhio_Player(QThread):
- general_deck_status_signal = pyqtSignal(str)
- general_deck_volume_signal = pyqtSignal(float)
- deck_1_status_signal = pyqtSignal(str)
- deck_1_duration_signal = pyqtSignal(int)
- deck_1_volume_signal = pyqtSignal(float)
- deck_2_status_signal = pyqtSignal(str)
- deck_2_duration_signal = pyqtSignal(int)
- deck_2_volume_signal = pyqtSignal(float)
- music_clip_deck_status_signal = pyqtSignal(str)
- music_clip_deck_duration_signal = pyqtSignal(int)
- music_clip_deck_volume_signal = pyqtSignal(float)
- speackers_deck_duration_signal = pyqtSignal(int)
- speackers_deck_volume_signal = pyqtSignal(float)
- ip_call_1_deck_duration_signal = pyqtSignal(int)
- ip_call_1_deck_volume_signal = pyqtSignal(float)
- ip_call_2_deck_duration_signal = pyqtSignal(int)
- ip_call_2_deck_volume_signal = pyqtSignal(float)
- ip_call_3_deck_duration_signal = pyqtSignal(int)
- ip_call_3_deck_volume_signal = pyqtSignal(float)
- final_slice_ready = pyqtSignal(AudioSegment)
- def __init__(self,general_deck_dict):
- super().__init__()
- #QoS settings
- self.bit_rate = 128*1024 #128 kb/sec
- self.packet_time = 744
- #self.packet_size = int(16384/4)
- self.packet_size = 4104
- #self.new_sample_rate = 32768
- self.new_sample_rate = 44100
- self.format = pyaudio.paInt16
- self.channels = 2
- self.primary_output_device_name = data.read_setting("primary output device name")[0]["current value"]
- self.primary_output_device_number = int(data.read_setting("primary output device number")[0]["current value"])
- self.input_device_name = data.read_setting("input device name")[0]["current value"]
- self.input_device_number = int(data.read_setting("input device number")[0]["current value"])
- self.p = pyaudio.PyAudio()
- self.info = self.p.get_host_api_info_by_index(0)
- self.numdevices = self.info.get('deviceCount')
- self.output_devices = [[0,0,"Καμία συσκευή αναπαραγωγής ήχου"]]
- self.input_devices = [[0,0,"Καμία συσκευή μικροφώνου"]]
- counter = 1
- for i in range (0,self.numdevices):
- if self.p.get_device_info_by_host_api_device_index(0,i).get('maxOutputChannels')>0:
- self.output_devices.append([counter,i,str(self.p.get_device_info_by_host_api_device_index(0,i).get('name'))])
- counter += 1
- counter = 1
- for i in range (0,self.numdevices):
- if self.p.get_device_info_by_host_api_device_index(0,i).get('maxInputChannels')>0:
- self.input_devices.append([counter,i,self.p.get_device_info_by_host_api_device_index(0,i).get('name')])
- counter += 1
- sine_segment = generators.Sine(1000).to_audio_segment()
- sine_segment = sine_segment.set_frame_rate(self.new_sample_rate)
- sine_segment = sine_segment[500-int(125)-1:500+int(125)]
- self.silent_segment = sine_segment-200
- self.general_deck = general_deck_dict
- self.deck_1 = {
- "player-list-item":None,
- "player-list-row":None,
- "play-status":"stopped",
- "chunk-number":0,
- "total-duration-human":"00:00:00",
- "total-duration-milliseconds":0,
- "current-duration-milliseconds":0,
- "muted":False,
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000,
- "client":None,
- "pcm_stream":None
- }
- self.deck_2 = {
- "player-list-item":None,
- "player-list-row":None,
- "play-status":"stopped",
- "chunk-number":0,
- "total-duration-human":"00:00:00",
- "total-duration-milliseconds":0,
- "current-duration-milliseconds":0,
- "muted":False,
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000,
- "client":None,
- "pcm_stream":None
- }
- self.music_clip_deck = {
- "player-list-item":None,
- "player-list-row":None,
- "play-status":"stopped",
- "chunk-number":0,
- "total-duration-human":"00:00:00",
- "total-duration-milliseconds":0,
- "current-duration-milliseconds":0,
- "muted":False,
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000
- }
- self.speackers_deck = {
- "play-status":"stopped",
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000
- }
- self.microphone_queue = queue.Queue()
- self.ip_call_1 = {
- "call-status":"stopped",
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000,
- }
- self.ip_call_2 = {
- "call-status":"stopped",
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000
- }
- self.ip_call_3 = {
- "call-status":"stopped",
- "volume":100,
- "normalize":0,
- "pan":0,
- "low-frequency":20,
- "high-frequency":20000
- }
- self.record_status = "stopped"
- self.prepare_sound_clips()
- def prepare_sound_clips(self):
- self.sound_clips = []
- sound_clips_items = data.read_sound_clips(10)
- for sound_clip in sound_clips_items:
- saved_path = sound_clip["saved path"]
- self.sound_clip_dict = {}
- self.sound_clip_dict["audio-segment"] = AudioSegment.from_file(saved_path,format="mp3",frame_rate=44100, channels=2, sample_width=2)
- self.sound_clip_dict["total-duration-milliseconds"] = sound_clip["duration milliseconds"]
- self.sound_clip_dict["audio-segment-normalized"] = self.normalize_method(self.sound_clip_dict["audio-segment"],0.1)
- self.sound_clip_dict["audio-segment"] = self.sound_clip_dict["audio-segment"].set_frame_rate(self.new_sample_rate)
- self.sound_clip_dict["audio-segment-normalized"] = self.sound_clip_dict["audio-segment-normalized"].set_frame_rate(self.new_sample_rate)
- #self.sound_clip_dict["chunk-number"] = 0
- #self.sound_clip_dict["current-duration-milliseconds"] = 0
- self.sound_clip_dict["number"] = sound_clip["number"]
- self.sound_clip_dict["title"] = sound_clip["title"]
- self.sound_clips.append(self.sound_clip_dict)
- def load_sound_clip(self,sound_clip_number):
- for sound_clip in self.sound_clips:
- if sound_clip["number"]==sound_clip_number:
- self.music_clip_deck["play-status"] = "stopped"
- self.music_clip_deck["chunk-number"] = 0
- self.music_clip_deck["current-duration-milliseconds"] = 0
- self.music_clip_deck["audio-segment"] = sound_clip["audio-segment"]
- self.music_clip_deck["total-duration-milliseconds"] = sound_clip["total-duration-milliseconds"]
- self.music_clip_deck["audio-segment-normalized"] = self.normalize_method(self.music_clip_deck["audio-segment"],0.1)
- self.music_clip_deck["play-status"] = "playing"
- break
- def run(self):
- for output_device in self.output_devices:
- if(self.primary_output_device_name==output_device[2]):
- self.output_device_index = output_device[1]
- for input_device in self.input_devices:
- if(self.input_device_name==input_device[2]):
- self.input_device_index = input_device[1]
- self.stream = self.p.open(format=pyaudio.paInt16,channels=2,rate=self.new_sample_rate,output=True,output_device_index=self.output_device_index,frames_per_buffer=self.packet_size)
- self.stream.start_stream()
- self.microphone_input_stream = self.p.open(format=pyaudio.paInt16,channels=1,rate=44100,input=True,input_device_index=self.input_device_index)
- self.microphone_input_stream.start_stream()
- while(True):
- #t1 = time.time()
- deck_1_slice = AudioSegment.empty()
- if self.deck_1["play-status"]=="playing":
- if self.deck_1["current-duration-milliseconds"]>self.deck_1["total-duration-milliseconds"]:
- self.deck_1["play-status"] = "stopped"
- self.deck_1_status_signal.emit("stopped")
- self.deck_1["chunk-number"] = 0
- self.deck_1["current-duration-milliseconds"] = 0
- if self.deck_1["play-status"]=="playing":
- if self.deck_1["player-list-item"]["type"] != "retransmitions":
- if(self.deck_1["normalize"]==False or self.deck_1["normalize"]==0):
- if((self.deck_1["chunk-number"]+1)*(self.packet_time)<=self.deck_1["total-duration-milliseconds"]):
- deck_1_slice = self.deck_1["audio-segment"][self.deck_1["chunk-number"]*(self.packet_time):(self.deck_1["chunk-number"]+1)*(self.packet_time)]
- else:
- if((self.deck_1["chunk-number"])*(self.packet_time)<self.deck_1["total-duration-milliseconds"]):
- deck_1_slice = self.deck_1["audio-segment"][self.deck_1["chunk-number"]*(self.packet_time):]
- else:
- deck_1_slice = AudioSegment.empty()
- else:
- if((self.deck_1["chunk-number"]+1)*(self.packet_time)<=self.deck_1["total-duration-milliseconds"]):
- deck_1_slice = self.deck_1["audio-segment-normalized"][self.deck_1["chunk-number"]*(self.packet_time):(self.deck_1["chunk-number"]+1)*(self.packet_time)]
- else:
- if((self.deck_1["chunk-number"])*(self.packet_time)<self.deck_1["total-duration-milliseconds"]):
- deck_1_slice = self.deck_1["audio-segment-normalized"][self.deck_1["chunk-number"]*(self.packet_time):]
- else:
- deck_1_slice = AudioSegment.empty()
- else:
- if "radio-url" in self.deck_1:
- if self.deck_1["radio-url"] is not None:
- if self.deck_1["client"] is None and self.deck_1["pcm_stream"] is None:
- self.deck_1["client"] = miniaudio.IceCastClient(self.deck_1["radio-url"])
- self.deck_1["pcm_stream"] = MiniaudioDecoderPcmStream(self.deck_1["client"].audio_format,self.deck_1["client"])
- deck_1_slice = AudioSegment.empty()
- for i in range(0,8):
- audio = self.deck_1["pcm_stream"].read(int(self.packet_size))
- deck_1_slice_part = AudioSegment(audio, sample_width=2, frame_rate=self.new_sample_rate, channels=2)
- deck_1_slice = deck_1_slice+deck_1_slice_part
- #audio = self.deck_1["pcm_stream"].read(int(self.packet_size))
- #deck_1_slice = AudioSegment(audio, sample_width=2, frame_rate=self.new_sample_rate, channels=2)
- #print(len(deck_1_slice))
- deck_1_slice.set_frame_rate(self.new_sample_rate)
- if self.deck_1["pan"]!=0:
- deck_1_slice = deck_1_slice.pan(self.deck_1["pan"])
- if self.deck_1["low-frequency"]>20:
- deck_1_slice = effects.high_pass_filter(deck_1_slice, self.deck_1["low-frequency"])
- if self.deck_1["high-frequency"]>20000:
- deck_1_slice = effects.low_pass_filter(deck_1_slice, self.deck_1["high-frequency"])
- if(self.deck_1["volume"]==0):
- self.db_volume = -200
- else:
- self.db_volume = 20*math.log10(self.deck_1["volume"]/100)
- deck_1_slice = deck_1_slice+self.db_volume
- else:
- self.deck_1["chunk-number"] = 0
- deck_1_slice = AudioSegment.empty()
- elif self.deck_1["play-status"] == "stopped":
- self.deck_1["chunk-number"] = 0
- self.deck_1["current-duration-milliseconds"] = 0
- deck_1_slice = AudioSegment.empty()
- #deck_1_volume_strength
- average_data_value = deck_1_slice.max
- normalized_value = abs(average_data_value)/deck_1_slice.max_possible_amplitude
- if normalized_value>1:
- normalized_value = 1
- self.deck_1_volume_signal.emit(normalized_value)
- #deck 2
- deck_2_slice = AudioSegment.empty()
- if self.deck_2["play-status"]=="playing":
- if self.deck_2["current-duration-milliseconds"]>self.deck_2["total-duration-milliseconds"]:
- self.deck_2["play-status"] = "stopped"
- self.deck_2["chunk-number"] = 0
- self.deck_2["current-duration-milliseconds"] = 0
- self.deck_2_status_signal.emit("stopped")
- if self.deck_2["play-status"]=="playing":
- if self.deck_2["player-list-item"]["type"] != "retransmitions":
- if(self.deck_2["normalize"]==False or self.deck_2["normalize"]==0):
- if((self.deck_2["chunk-number"]+1)*(self.packet_time)<=self.deck_2["total-duration-milliseconds"]):
- deck_2_slice = self.deck_2["audio-segment"][self.deck_2["chunk-number"]*(self.packet_time):(self.deck_2["chunk-number"]+1)*(self.packet_time)]
- else:
- if((self.deck_2["chunk-number"])*(self.packet_time)<self.deck_2["total-duration-milliseconds"]):
- deck_2_slice = self.deck_2["audio-segment"][self.deck_2["chunk-number"]*(self.packet_time):]
- else:
- deck_2_slice = AudioSegment.empty()
- else:
- if((self.deck_2["chunk-number"]+1)*(self.packet_time)<=self.deck_2["total-duration-milliseconds"]):
- deck_2_slice = self.deck_2["audio-segment-normalized"][self.deck_2["chunk-number"]*(self.packet_time):(self.deck_2["chunk-number"]+1)*(self.packet_time)]
- else:
- if((self.deck_2["chunk-number"])*(self.packet_time)<self.deck_2["total-duration-milliseconds"]):
- deck_2_slice = self.deck_2["audio-segment-normalized"][self.deck_2["chunk-number"]*(self.packet_time):]
- else:
- deck_2_slice = AudioSegment.empty()
- else:
- if "radio-url" in self.deck_2:
- if self.deck_2["radio-url"] is not None:
- if self.deck_2["client"] is None and self.deck_2["pcm_stream"] is None:
- self.deck_2["client"] = miniaudio.IceCastClient(self.deck_2["radio-url"])
- self.deck_2["pcm_stream"] = MiniaudioDecoderPcmStream(self.deck_2["client"].audio_format,self.deck_2["client"])
- deck_2_slice = AudioSegment.empty()
- for i in range(0,8):
- audio = self.deck_2["pcm_stream"].read(int(self.packet_size))
- deck_2_slice_part = AudioSegment(audio, sample_width=2, frame_rate=self.new_sample_rate, channels=2)
- deck_2_slice = deck_2_slice+deck_2_slice_part
- #audio = self.deck_2["pcm_stream"].read(int(self.packet_size))
- #deck_2_slice = AudioSegment(audio, sample_width=2, frame_rate=self.new_sample_rate, channels=2)
- #deck_2_slice.set_frame_rate(self.new_sample_rate)
- if self.deck_2["pan"]!=0:
- deck_2_slice = deck_2_slice.pan(self.deck_2["pan"])
- if self.deck_2["low-frequency"]>20:
- deck_2_slice = effects.high_pass_filter(deck_2_slice, self.deck_2["low-frequency"])
- if self.deck_2["high-frequency"]>20000:
- deck_2_slice = effects.low_pass_filter(deck_2_slice, self.deck_2["high-frequency"])
- if(self.deck_2["volume"]==0):
- self.db_volume = -200
- else:
- self.db_volume = 20*math.log10(self.deck_2["volume"]/100)
- deck_2_slice = deck_2_slice+self.db_volume
- else:
- self.deck_2["chunk-number"] = 0
- deck_2_slice = AudioSegment.empty()
- elif self.deck_2["play-status"] == "stopped":
- self.deck_2["chunk-number"] = 0
- self.deck_2["current-duration-milliseconds"] = 0
- deck_2_slice = AudioSegment.empty()
- #deck_2_volume_strength
- average_data_value = deck_2_slice.max
- normalized_value = abs(average_data_value)/deck_2_slice.max_possible_amplitude
- if normalized_value>1:
- normalized_value = 1
- self.deck_2_volume_signal.emit(normalized_value)
- #music clip deck
- music_clip_deck_slice = AudioSegment.empty()
- if self.music_clip_deck["play-status"]=="playing":
- if self.music_clip_deck["current-duration-milliseconds"]>self.music_clip_deck["total-duration-milliseconds"]:
- self.music_clip_deck["play-status"] = "stopped"
- self.music_clip_deck["chunk-number"] = 0
- self.music_clip_deck["current-duration-milliseconds"] = 0
- self.music_clip_deck_status_signal.emit("stopped")
- if self.music_clip_deck["play-status"]=="playing":
- if(self.music_clip_deck["normalize"]==False or self.music_clip_deck["normalize"]==0):
- if((self.music_clip_deck["chunk-number"]+1)*(self.packet_time)<=self.music_clip_deck["total-duration-milliseconds"]):
- music_clip_deck_slice = self.music_clip_deck["audio-segment"][self.music_clip_deck["chunk-number"]*(self.packet_time):(self.music_clip_deck["chunk-number"]+1)*(self.packet_time)]
- else:
- if((self.music_clip_deck["chunk-number"])*(self.packet_time)<self.music_clip_deck["total-duration-milliseconds"]):
- music_clip_deck_slice = self.music_clip_deck["audio-segment"][self.music_clip_deck["chunk-number"]*(self.packet_time):]
- else:
- music_clip_deck_slice = AudioSegment.empty()
- else:
- if((self.music_clip_deck["chunk-number"]+1)*(self.packet_time)<=self.music_clip_deck["total-duration-milliseconds"]):
- music_clip_deck_slice = self.music_clip_deck["audio-segment-normalized"][self.music_clip_deck["chunk-number"]*(self.packet_time):(self.music_clip_deck["chunk-number"]+1)*(self.packet_time)]
- else:
- if((self.music_clip_deck["chunk-number"])*(self.packet_time)<self.music_clip_deck["total-duration-milliseconds"]):
- music_clip_deck_slice = self.music_clip_deck["audio-segment-normalized"][self.music_clip_deck["chunk-number"]*(self.packet_time):]
- else:
- music_clip_deck_slice = AudioSegment.empty()
- if self.music_clip_deck["pan"]!=0:
- music_clip_deck_slice = music_clip_deck_slice.pan(self.music_clip_deck["pan"])
- if self.music_clip_deck["low-frequency"]>20:
- music_clip_deck_slice = effects.high_pass_filter(music_clip_deck_slice, self.music_clip_deck["low-frequency"])
- if self.music_clip_deck["high-frequency"]>20000:
- music_clip_deck_slice = effects.low_pass_filter(music_clip_deck_slice, self.music_clip_deck["high-frequency"])
- if(self.music_clip_deck["volume"]==0):
- self.db_volume = -200
- else:
- self.db_volume = 20*math.log10(self.music_clip_deck["volume"]/100)
- music_clip_deck_slice = music_clip_deck_slice+self.db_volume
- else:
- self.music_clip_deck["chunk-number"] = 0
- music_clip_deck_slice = AudioSegment.empty()
- elif self.deck_2["play-status"] == "stopped":
- self.music_clip_deck["chunk-number"] = 0
- self.music_clip_deck["current-duration-milliseconds"] = 0
- music_clip_deck_slice = AudioSegment.empty()
- #music_clip_volume_strength
- average_data_value = music_clip_deck_slice.max
- normalized_value = abs(average_data_value)/music_clip_deck_slice.max_possible_amplitude
- if normalized_value>1:
- normalized_value = 1
- self.music_clip_deck_volume_signal.emit(normalized_value)
- #speackers deck
- if self.speackers_deck["play-status"]=="playing":
- print(self.microphone_queue.qsize())
- if self.microphone_queue.qsize()>0:
- microphone_slice = self.microphone_queue.get()
- else:
- slice_found = False
- while(slice_found==False):
- if self.microphone_queue.qsize()>0:
- microphone_slice = self.microphone_queue.get()
- slice_found=True
- else:
- self.speackers_deck["chunk-number"] = 0
- self.speackers_deck["current-duration-milliseconds"] = 0
- microphone_slice = AudioSegment.empty()
- with self.microphone_queue.mutex:
- self.microphone_queue.queue.clear()
- #microphone_volume_strength
- average_data_value = microphone_slice.max
- normalized_value = abs(average_data_value)/microphone_slice.max_possible_amplitude
- if normalized_value>1:
- normalized_value = 1
- self.speackers_deck_volume_signal.emit(normalized_value)
- if(len(deck_1_slice)==0 and len(deck_2_slice)==0 and len(music_clip_deck_slice)==0 and len(microphone_slice)==0):
- final_slice = self.silent_segment
- else:
- if(len(deck_1_slice)==0 and len(deck_2_slice)==0 and len(music_clip_deck_slice)==0 and len(microphone_slice)!=0):
- final_slice = microphone_slice
- elif(len(deck_1_slice)==0 and len(deck_2_slice)==0 and len(music_clip_deck_slice)!=0 and len(microphone_slice)==0):
- final_slice = music_clip_deck_slice
- elif(len(deck_1_slice)==0 and len(deck_2_slice)!=0 and len(music_clip_deck_slice)==0 and len(microphone_slice)==0):
- final_slice = deck_2_slice
- elif(len(deck_1_slice)!=0 and len(deck_2_slice)==0 and len(music_clip_deck_slice)==0 and len(microphone_slice)==0):
- final_slice = deck_1_slice
- elif(len(deck_1_slice)!=0 and len(deck_2_slice)!=0 and len(music_clip_deck_slice)==0 and len(microphone_slice)==0):
- final_slice = deck_1_slice.overlay(deck_2_slice)
- elif(len(deck_1_slice)!=0 and len(deck_2_slice)==0 and len(music_clip_deck_slice)!=0 and len(microphone_slice)==0):
- final_slice = deck_1_slice.overlay(music_clip_deck_slice)
- elif(len(deck_1_slice)!=0 and len(deck_2_slice)==0 and len(music_clip_deck_slice)==0 and len(microphone_slice)!=0):
- final_slice = deck_1_slice.overlay(microphone_slice)
- elif(len(deck_1_slice)==0 and len(deck_2_slice)!=0 and len(music_clip_deck_slice)!=0 and len(microphone_slice)==0):
- final_slice = deck_2_slice.overlay(music_clip_deck_slice)
- elif(len(deck_1_slice)==0 and len(deck_2_slice)!=0 and len(music_clip_deck_slice)==0 and len(microphone_slice)!=0):
- final_slice = deck_2_slice.overlay(microphone_slice)
- elif(len(deck_1_slice)==0 and len(deck_2_slice)==0 and len(music_clip_deck_slice)!=0 and len(microphone_slice)!=0):
- final_slice = music_clip_deck_slice.overlay(microphone_slice)
- elif(len(deck_1_slice)!=0 and len(deck_2_slice)!=0 and len(music_clip_deck_slice)!=0 and len(microphone_slice)==0):
- final_slice = deck_1_slice.overlay(deck_2_slice).overlay(music_clip_deck_slice)
- elif(len(deck_1_slice)!=0 and len(deck_2_slice)!=0 and len(music_clip_deck_slice)==0 and len(microphone_slice)!=0):
- final_slice = deck_1_slice.overlay(deck_2_slice).overlay(microphone_slice)
- elif(len(deck_1_slice)==0 and len(deck_2_slice)!=0 and len(music_clip_deck_slice)!=0 and len(microphone_slice)!=0):
- final_slice = deck_2_slice.overlay(music_clip_deck_slice).overlay(microphone_slice)
- elif(len(deck_1_slice)!=0 and len(deck_2_slice)==0 and len(music_clip_deck_slice)!=0 and len(microphone_slice)!=0):
- final_slice = deck_1_slice.overlay(music_clip_deck_slice).overlay(microphone_slice)
- elif(len(deck_1_slice)!=0 and len(deck_2_slice)!=0 and len(music_clip_deck_slice)!=0 and len(microphone_slice)!=0):
- final_slice = deck_1_slice.overlay(deck_2_slice).overlay(music_clip_deck_slice).overlay(microphone_slice)
- #final slice settings
- if self.general_deck["pan"]!=0:
- final_slice = final_slice.pan(self.general_deck["pan"])
- if self.general_deck["low-frequency"]>20:
- final_slice = effects.high_pass_filter(final_slice, self.general_deck["low-frequency"])
- if self.general_deck["high-frequency"]>20000:
- final_slice = effects.low_pass_filter(final_slice, self.general_deck["high-frequency"])
- if(self.general_deck["volume"]==0):
- self.db_volume = -200
- else:
- self.db_volume = 20*math.log10(self.general_deck["volume"]/100)
- final_slice = final_slice+self.db_volume
- #normalize
- if(self.general_deck["normalize"]==True or self.general_deck["normalize"]==1):
- final_slice = self.normalize_method(final_slice,0.1)
- #final_slice_volume_strength
- average_data_value = final_slice.max
- normalized_value = abs(average_data_value)/final_slice.max_possible_amplitude
- self.general_deck_volume_signal.emit(normalized_value)
- if self.deck_1["play-status"]=="playing":
- self.deck_1["chunk-number"] +=1
- self.deck_1["current-duration-milliseconds"] += self.packet_time
- self.deck_1_duration_signal.emit(self.deck_1["current-duration-milliseconds"])
- if self.deck_2["play-status"]=="playing":
- self.deck_2["chunk-number"] +=1
- self.deck_2["current-duration-milliseconds"] += self.packet_time
- self.deck_2_duration_signal.emit(self.deck_2["current-duration-milliseconds"])
- if self.music_clip_deck["play-status"]=="playing":
- self.music_clip_deck["chunk-number"] +=1
- self.music_clip_deck["current-duration-milliseconds"] += self.packet_time
- self.music_clip_deck_duration_signal.emit(self.music_clip_deck["current-duration-milliseconds"])
- if self.speackers_deck["play-status"]=="playing":
- self.speackers_deck["chunk-number"] +=1
- self.speackers_deck["current-duration-milliseconds"] += self.packet_time
- self.speackers_deck_duration_signal.emit(self.speackers_deck["current-duration-milliseconds"])
- if self.record_status=="recording":
- try:
- self.output_file.writeframesraw(final_slice.raw_data)
- except:
- pass
- self.stream.write(final_slice.raw_data)
- self.final_slice_ready.emit(final_slice)
- '''
- send_data = io.BytesIO()
- final_slice.export(send_data,format="mp3")
- send_data = send_data.getvalue()
- for connection in self.connections:
- if connection["status"]=="connected":
- connection["connection"].send(send_data)
- connection["connection"].sync()
- '''
- #t2 = time.time()
- #execution_time_milliseconds = 1000*(t2-t1)
- #sleep_time_milliseconds = self.packet_time-execution_time_milliseconds
- #sleep_time_seconds = sleep_time_milliseconds/1000
- #if sleep_time_seconds>0:
- # time.sleep(sleep_time_seconds)
- time.sleep(0.015)
- def prepare_deck_1(self,deck_1_dict):
- self.deck_1 = deck_1_dict
- relative_type = deck_1_dict["player-list-item"]["type"]
- relative_number = deck_1_dict["player-list-item"]["relative number"]
- if relative_type!="retransmitions":
- saved_path = deck_1_dict["player-list-item"]["saved path"]
- self.deck_1["audio-segment"] = AudioSegment.from_file(saved_path,format="mp3",frame_rate=44100, channels=2, sample_width=2)
- self.deck_1["total-duration-milliseconds"] = deck_1_dict["player-list-item"]["duration milliseconds"]
- self.deck_1["audio-segment-normalized"] = self.normalize_method(self.deck_1["audio-segment"],0.1)
- self.deck_1["audio-segment"] = self.deck_1["audio-segment"].set_frame_rate(self.new_sample_rate)
- self.deck_1["audio-segment-normalized"] = self.deck_1["audio-segment-normalized"].set_frame_rate(self.new_sample_rate)
- self.deck_1["client"] = None
- self.deck_1["pcm_stream"] = None
- self.deck_1["chunk-number"] = 0
- self.deck_1["current-duration-milliseconds"] = 0
- def prepare_deck_2(self,deck_2_dict):
- self.deck_2 = deck_2_dict
- relative_type = deck_2_dict["player-list-item"]["type"]
- relative_number = deck_2_dict["player-list-item"]["relative number"]
- if relative_type!="retransmitions":
- saved_path = deck_2_dict["player-list-item"]["saved path"]
- self.deck_2["audio-segment"] = AudioSegment.from_file(saved_path,format="mp3",frame_rate=44100, channels=2, sample_width=2)
- self.deck_2["total-duration-milliseconds"] = deck_2_dict["player-list-item"]["duration milliseconds"]
- self.deck_2["audio-segment-normalized"] = self.normalize_method(self.deck_2["audio-segment"],0.1)
- self.deck_2["audio-segment"] = self.deck_2["audio-segment"].set_frame_rate(self.new_sample_rate)
- self.deck_2["audio-segment-normalized"] = self.deck_2["audio-segment-normalized"].set_frame_rate(self.new_sample_rate)
- self.deck_2["client"] = None
- self.deck_2["pcm_stream"] = None
- self.deck_2["chunk-number"] = 0
- self.deck_2["current-duration-milliseconds"] = 0
- def prepare_music_clip_deck(self,music_clip_dict):
- self.music_clip_deck = music_clip_dict
- relative_type = music_clip_dict["player-list-item"]["type"]
- relative_number = music_clip_dict["player-list-item"]["relative number"]
- saved_path = music_clip_dict["player-list-item"]["saved path"]
- if music_clip_dict["player-list-item"]["type"] == "greek time files":
- if music_clip_dict["player-list-item"]["append"]==1:
- append_sound_file_number = music_clip_dict["player-list-item"]["append sound file number"]
- sound_file = data.read_items_by_type_and_relative_number("sound files",append_sound_file_number)[0]
- sound_file_saved_path = sound_file["saved path"]
- segment_1 = AudioSegment.from_file(saved_path,format="mp3",frame_rate=44100, channels=2, sample_width=2)
- segment_2 = AudioSegment.from_file(sound_file_saved_path,format="mp3",frame_rate=44100, channels=2, sample_width=2)
- self.music_clip_deck["audio-segment"] = segment_1.append(segment_2)
- self.music_clip_deck["total-duration-milliseconds"] = len(self.music_clip_deck["audio-segment"])
- else:
- self.music_clip_deck["audio-segment"] = AudioSegment.from_file(saved_path,format="mp3",frame_rate=44100, channels=2, sample_width=2)
- self.music_clip_deck["total-duration-milliseconds"] = music_clip_dict["player-list-item"]["duration milliseconds"]
- else:
- self.music_clip_deck["audio-segment"] = AudioSegment.from_file(saved_path,format="mp3",frame_rate=44100, channels=2, sample_width=2)
- self.music_clip_deck["total-duration-milliseconds"] = music_clip_dict["player-list-item"]["duration milliseconds"]
- self.music_clip_deck["audio-segment-normalized"] = self.normalize_method(self.music_clip_deck["audio-segment"],0.1)
- self.music_clip_deck["audio-segment"] = self.music_clip_deck["audio-segment"].set_frame_rate(self.new_sample_rate)
- self.music_clip_deck["audio-segment-normalized"] = self.music_clip_deck["audio-segment-normalized"].set_frame_rate(self.new_sample_rate)
- self.music_clip_deck["chunk-number"] = 0
- self.music_clip_deck["current-duration-milliseconds"] = 0
- def normalize_method(self,seg, headroom):
- peak_sample_val = seg.max
- # if the max is 0, this audio segment is silent, and can't be normalized
- if peak_sample_val == 0:
- return seg
- target_peak = seg.max_possible_amplitude * utils.db_to_float(-headroom)
- #target_peak = seg.max_possible_amplitude * (percent_headroom)
- needed_boost = utils.ratio_to_db(target_peak / peak_sample_val)
- return seg.apply_gain(needed_boost)
- class Send_Data_To_Servers(QThread):
- def __init__(self):
- super().__init__()
- self.connections = []
- self.q = queue.Queue()
- def run(self):
- while(True):
- q_size = self.q.qsize()
- #print(q_size)
- if (self.q.qsize())>0:
- #final_slice = AudioSegment.empty()
- #for segment in range(0,q_size):
- # final_slice = final_slice + self.q.get()
- final_slice = self.q.get()
- send_data = io.BytesIO()
- final_slice.export(send_data,format="mp3")
- send_data = send_data.getvalue()
- for connection in self.connections:
- if connection["status"]=="connected":
- connection["connection"].send(send_data)
- connection["connection"].sync()
- time.sleep(0.015)
- class MiniaudioDecoderPcmStream(miniaudio.StreamableSource):
- def __init__(self, fmt, stream):
- self.pcm_stream = miniaudio.stream_any(stream, fmt, dither=miniaudio.DitherMode.TRIANGLE)
- def read(self, size):
- try:
- bytes_readed = b""
- if size>16384:
- total_chunks = math.ceil(size/16384)
- for i in range(0,total_chunks):
- if i!=total_chunks-1:
- chunk_size = int(16384/total_chunks)
- else:
- chunk_size = int(size - ((total_chunks-1)*16384))
- bytes_readed = bytes_readed+self.pcm_stream.send(chunk_size).tobytes()
- return bytes_readed
- else:
- return self.pcm_stream.send(size).tobytes()
- except StopIteration:
- return b""
- except Exception as e:
- print(e)
- return b""
- class QLabelClickable(QLabel):
- clicked = pyqtSignal(str)
- def __init__(self, parent=None):
- super(QLabelClickable, self).__init__(parent)
- def mousePressEvent(self, event):
- self.ultimo = "Clic"
- def mouseReleaseEvent(self, event):
- if self.ultimo == "Clic":
- QTimer.singleShot(QApplication.instance().doubleClickInterval(),self.performSingleClickAction)
- else:
- # Realizar acción de doble clic.
- self.clicked.emit(self.ultimo)
- def mouseDoubleClickEvent(self, event):
- self.ultimo = "Doble Clic"
- def performSingleClickAction(self):
- if self.ultimo == "Clic":
- self.clicked.emit(self.ultimo)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement