Beispiel #1
0
    def convertir_octava(self, octava, nota):
        if not nota:
            return None
        if not re.fullmatch("[1-9]|10", octava):
            self.input_invalido.emit(
                TextEvent("Octava inválida, recuerda que la octava debe ser "
                          "un número del 0 al 10"))

            return None
        valor_nota = {
            "do": 1,
            "do#": 2,
            "re": 3,
            "mib": 4,
            "mi": 5,
            "fa": 6,
            "fa#": 7,
            "sol": 8,
            "sol#": 9,
            "la": 10,
            "sib": 11,
            "si": 12
        }
        octava_numerica = ((int(octava)) * 12) + valor_nota[nota] - 1
        if octava_numerica > 127:
            self.input_invalido.emit(
                TextEvent("Combinación octava inválida, recuerda que  si la "
                          "octava es 10 el valor numérico de la nota no puede"
                          " superar al de un sol"))

            return None
        return str(octava)
Beispiel #2
0
 def verificar_nueva_cancion(self, song):
     if len(song) < 6:
         self.input_invalido.emit(
             TextEvent("Canción debe tener al menos "
                       "6 caracteres"))
         return False
     self.verificar_cancion_repetida(song)
     if self.cancion_invalida:
         self.input_invalido.emit(TextEvent("Nombre canción ya existe"))
         return False
     return True
Beispiel #3
0
 def convertir_duracion(self, duracion):
     if duracion.isdigit():
         conversiones = {
             10: "semifusa",
             15: "semifusa.",
             20: "fusa",
             30: "fusa.",
             40: "semicorchea",
             60: "semicorchea.",
             80: "corchea",
             120: "corchea.",
             160: "negra",
             240: "negra.",
             320: "blanca",
             480: "blanca.",
             640: "redonda",
             960: "redonda."
         }
         if int(duracion) in conversiones:
             duracion = conversiones[int(duracion)]
     duraciones = {
         "redonda": "redonda",
         "1": "redonda",
         "redonda.": "redonda.",
         "1.": "redonda.",
         "blanca": "blanca",
         "2": "blanca",
         "blanca.": "blanca.",
         "2.": "blanca.",
         "negra": "negra",
         "3": "negra",
         "negra.": "negra.",
         "3.": "negra.",
         "corchea": "corchea",
         "4": "corchea",
         "corchea.": "corchea.",
         "4.": "corchea.",
         "semicorchea": "semicorchea",
         "5": "semicorchea",
         "semicorchea.": "semicorchea.",
         "5.": "semicorchea.",
         "fusa": "fusa",
         "6": "redonda",
         "fusa.": "fusa.",
         "6.": "redonda.",
         "semifusa": "semifusa",
         "7": "semifusa",
         "semifusa.": "semifusa.",
         "7.": "semifusa."
     }
     if duracion not in duraciones:
         self.input_invalido.emit(
             TextEvent("La duración no existe, recuerda que puede ser una "
                       "redonda, blanca, negra, corchea, semicorchea,"
                       "fusa o semifusa, o sus equivalentes en valor "
                       "numérico. Además pueden tener un punto (.) al final"
                       "para duración extendida"))
         return None
     else:
         return duraciones[duracion]
Beispiel #4
0
 def convertir_intensidad(self, intensidad):
     intensidades = {
         "pppp": "pppp",
         "8": "pppp",
         "ppp": "ppp",
         "20": "ppp",
         "pp": "pp",
         "31": "pp",
         "p": "p",
         "42": "p",
         "mp": "mp",
         "53": "mp",
         "mf": "mf",
         "64": "mf",
         "f": "f",
         "80": "f",
         "ff": "ff",
         "96": "ff",
         "fff": "fff",
         "112": "fff",
         "ffff": "ffff",
         "127": "ffff"
     }
     if intensidad not in intensidades:
         self.input_invalido.emit(
             TextEvent("La intensidad no existe, recuerda que puede ser: "
                       "pppp, ppp, pp, p, mp, mf, f, ff, fff o ffff, "
                       "o bien, su equivalente valor numérico."))
         return None
     else:
         return intensidades[intensidad]
Beispiel #5
0
 def verificar_usuario(self, user):
     if re.search(" ", user):
         self.input_invalido.emit(
             TextEvent("Usuario no debe tener "
                       "espacios"))
         return False
     elif len(user) < 6:
         self.input_invalido.emit(
             TextEvent("Usuario debe tener al menos "
                       "6 caracteres"))
         return False
     self.verificar_usuario_repetido(user)
     if self.usuario_invalido:
         self.input_invalido.emit(TextEvent("Nombre usuario ya existe"))
         return False
     return True
Beispiel #6
0
 def editar_cancion_lista(self, e):
     if self.cancion_actual in self.canciones_listas:
         self.verificar_usuario(e.user)
         if not self.usuario_invalido:
             self.mover_cancion()
             self.usuario = e.user
             self.abrir_cancion_escogida.emit(TextEvent(
                 self.cancion_actual))
Beispiel #7
0
 def convertir_nota(self, nota):
     notas = {
         "do": "do",
         "c": "do",
         "1": "do",
         "do#": "do#",
         "c#": "do#",
         "2": "do#",
         "dd": "do#",
         "re": "re",
         "d": "re",
         "3": "re",
         "mib": "mib",
         "eb": "mib",
         "4": "mib",
         "d#": "mib",
         "mi": "mi",
         "e": "mi",
         "5": "mi",
         "fa": "fa",
         "f": "fa",
         "6": "fa",
         "fa#": "fa#",
         "f#": "fa#",
         "7": "fa#",
         "gb": "fa#",
         "sol": "sol",
         "g": "sol",
         "8": "sol",
         "sol#": "sol",
         "g#": "sol#",
         "9": "sol#",
         "ab": "sol#",
         "la": "la",
         "a": "la",
         "10": "la",
         "sib": "sib",
         "bb": "sib",
         "a#": "sib",
         "11": "sib",
         "si": "si",
         "b": "si",
         "12": "si"
     }
     if nota not in notas:
         self.input_invalido.emit(
             TextEvent("La nota no existe, recuerda que la nota debe estar "
                       "entre las siguiente opciones: do, re, mi, fa, sol, "
                       "la, si, do#, fa#, sol#, o sus equivalentes "
                       "en nomenclatura inglesa o numérica"))
         return None
     else:
         return notas[nota]
Beispiel #8
0
 def agregar_nota(self, e):
     nota = e.nota.lower()
     octava = e.octava.lower()
     duracion = e.duracion.lower()
     intensidad = e.intensidad.lower()
     if re.search(" ", nota):
         self.input_invalido.emit(
             TextEvent("Nota no debe tener "
                       "espacios"))
         return
     elif re.search(" ", octava):
         self.input_invalido.emit(
             TextEvent("Octava no debe tener "
                       "espacios"))
         return
     elif re.search(" ", duracion):
         self.input_invalido.emit(
             TextEvent("Duración no debe tener "
                       "espacios"))
         return
     elif re.search(" ", intensidad):
         self.input_invalido.emit(
             TextEvent("Intensidad no debe tener "
                       "espacios"))
         return
     nota_convertida = self.convertir_nota(nota)
     duracion_convertida = self.convertir_duracion(duracion)
     intensidad_convertida = self.convertir_intensidad(intensidad)
     octava_convertida = self.convertir_octava(octava, nota_convertida)
     if (not nota_convertida) or (not duracion_convertida) or \
             (not intensidad_convertida) or (not octava_convertida):
         return
     self.enviar_mensaje_a_servidor({
         "motivo": "agregar_nota",
         "song": self.cancion_actual,
         "nota": nota_convertida,
         "duracion": duracion_convertida,
         "intensidad": intensidad_convertida,
         "octava": octava_convertida
     })
Beispiel #9
0
 def crear_cancion(self, e):
     self.verificar_usuario(e.user)
     self.verificar_nueva_cancion(e.text)
     if not self.usuario_invalido:
         if not self.cancion_invalida:
             self.usuario = e.user
             self.cancion_actual = e.text
             self.enviar_mensaje_a_servidor({
                 "motivo": "crear_cancion",
                 "song": e.text
             })
             QTest.qWait(200)
             self.abrir_cancion_escogida.emit(TextEvent(e.text))
Beispiel #10
0
 def agregar_silencio(self, e):
     duracion = e.text.lower()
     if re.search(" ", duracion):
         self.input_invalido.emit(
             TextEvent("Duración no debe tener "
                       "espacios"))
         return
     duracion_convertida = self.convertir_duracion(duracion)
     if not duracion_convertida:
         return
     self.enviar_mensaje_a_servidor({
         "motivo": "agregar_silencio",
         "song": self.cancion_actual,
         "duracion": duracion_convertida
     })
Beispiel #11
0
 def listen_thread(self):
     while True:
         mensaje = self.recibir_mensaje_de_servidor()
         if mensaje["motivo"] == "modo_espectador":
             if mensaje["unico"] == "False":
                 self.espectador = True
                 self.modo_espectador_signal.emit()
         elif mensaje["motivo"] == "cargar_editar_songs":
             self.cargar_editar_songs_server(mensaje["songs"])
         elif mensaje["motivo"] == "cargar_listas_songs":
             self.cargar_listas_songs_server(mensaje["songs"])
         elif mensaje["motivo"] == "cargar_info_sala":
             self.cargar_info_sala_signal.emit(
                 InfoSalaEvent(mensaje["notas"], mensaje["chat"]))
             self.enviar_mensaje_a_servidor({
                 "motivo": "chat",
                 "song": self.cancion_actual,
                 "texto": "se ha conectado",
                 "user": self.usuario
             })
         elif mensaje["motivo"] == "crear_cancion":
             self.nueva_cancion_desde_servidor(mensaje["song"])
         elif mensaje["motivo"] == "verificar_usuario_repetido":
             if mensaje["unico"] == "True":
                 self.usuario_invalido = False
         elif mensaje["motivo"] == "verificar_cancion_repetida":
             if mensaje["unico"] == "True":
                 self.cancion_invalida = False
         elif mensaje["motivo"] == "descargar":
             song_bytes = self.recibir_cancion()
             convertir_a_midi(mensaje["song"], song_bytes)
             self.input_invalido.emit(TextEvent("Canción descargada"))
         elif mensaje["motivo"] == "mover_cancion":
             self.mover_cancion_servidor(mensaje["song"])
         elif mensaje["motivo"] == "borrar_nota":
             self.borrar_nota_signal.emit(mensaje["row"])
         elif mensaje["motivo"] == "agregar_nota":
             self.agregar_nota_desde_servidor(mensaje["nota_str"])
         elif mensaje["motivo"] == "chat":
             self.agregar_mensaje_chat_servidor(mensaje["texto"])
         elif mensaje["motivo"] == "usuario_desconectado":
             self.usuario_desconectado(mensaje["user"], mensaje["new"])
         else:
             raise ValueError(mensaje["motivo"])
 def conectar_crear_cancion(self):
     self.enviar_solicitud_crear_cancion.emit(
         TextEvent(self.new_song_edit.text(), self.user_edit.text()))
Beispiel #13
0
 def agregar_nota_desde_servidor(self, nota):
     self.cambiar_texto_lista_notas.emit(TextEvent(nota))
Beispiel #14
0
 def agregar_mensaje_chat_servidor(self, texto):
     self.cambiar_texto_lista_chat.emit(TextEvent(texto))
Beispiel #15
0
 def cargar_editar_songs_server(self, songs):
     for song in songs:
         self.cambiar_texto_canciones_editar.emit(TextEvent(song))
         self.canciones_en_edicion.add(song)
 def conectar_cliente_edicion(self, e):
     self.enviar_solicitud_editar.emit(
         TextEvent(e.text(), self.user_edit.text()))
Beispiel #17
0
 def cargar_listas_songs_server(self, songs):
     for song in songs:
         self.cambiar_texto_canciones_listas.emit(TextEvent(song))
         self.canciones_listas.add(song)
Beispiel #18
0
 def nueva_cancion_desde_servidor(self, song):
     self.cambiar_texto_canciones_editar.emit(TextEvent(song))
     self.canciones_en_edicion.add(song)
Beispiel #19
0
 def editar_cancion(self, e):
     self.verificar_usuario(e.user)
     if not self.usuario_invalido:
         self.usuario = e.user
         self.cancion_actual = e.text
         self.abrir_cancion_escogida.emit(TextEvent(e.text))
 def conectar_editar_cancion_lista(self):
     self.enviar_solicitud_editar_cancion_lista.emit(
         TextEvent("", self.user_edit.text()))
Beispiel #21
0
 def actualizar_canciones(self):
     self.limpiar_listas_canciones.emit()
     for song in self.canciones_listas:
         self.cambiar_texto_canciones_listas.emit(TextEvent(song))
     for song in self.canciones_en_edicion:
         self.cambiar_texto_canciones_editar.emit(TextEvent(song))