Skip to content

Commit

Permalink
Add support for multiple sound files
Browse files Browse the repository at this point in the history
  • Loading branch information
Lyubo committed May 28, 2024
1 parent 93bac1c commit 4126684
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 18 deletions.
9 changes: 7 additions & 2 deletions profileexecutor.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import threading
import os, pyaudio
import shutil
import random
import re
from pocketsphinx import *
from soundfiles import SoundFiles
Expand Down Expand Up @@ -250,10 +251,14 @@ def stopCommand(self, p_cmdName):
del self.m_cmdThreads[p_cmdName]

def playSound(self, p_cmdName):
sound_file = './voicepacks/' + p_cmdName['pack'] + '/' + p_cmdName['cat'] + '/' + p_cmdName['file']
# backwards compatibility with previous type
if isinstance(p_cmdName['file'], str):
selected_file = p_cmdName['file']
elif isinstance(p_cmdName['file'], list):
selected_file = random.choice(p_cmdName['file'])
sound_file = './voicepacks/' + p_cmdName['pack'] + '/' + p_cmdName['cat'] + '/' + selected_file
self.m_sound.play(sound_file)


def pressKey(self, w_key, w_type):
if self.p_parent.m_config['noroot'] == 1:
# xdotool has a different key mapping. translate old existing mappings of special keys
Expand Down
26 changes: 10 additions & 16 deletions soundactioneditwnd.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def __init__(self, p_sounds, p_soundAction = None, p_parent = None):
self.p_sounds = p_sounds
self.selectedVoicepack = False
self.selectedCategory = False
self.selectedFile = False
self.selectedFiles = []

self.ui.buttonOkay.clicked.connect(self.slotOK)
self.ui.buttonCancel.clicked.connect(super().reject)
Expand All @@ -29,7 +29,7 @@ def __init__(self, p_sounds, p_soundAction = None, p_parent = None):
if not p_soundAction == None:
self.selectedVoicepack = p_soundAction['pack']
self.selectedCategory = p_soundAction['cat']
self.selectedFile = p_soundAction['file']
self.selectedFiles = p_soundAction['file']
self.ui.buttonOkay.setEnabled(True)

self.listVoicepacks_model = QStandardItemModel()
Expand All @@ -53,7 +53,6 @@ def __init__(self, p_sounds, p_soundAction = None, p_parent = None):
self.ui.filterCategories.textChanged.connect(self.populateCategories)
self.ui.filterFiles.textChanged.connect(self.populateFiles)


self.populateCategories(False)
self.populateFiles(False)

Expand All @@ -70,17 +69,14 @@ def __init__(self, p_sounds, p_soundAction = None, p_parent = None):
index = self.listCategories_model.indexFromItem(item[0])
self.ui.listCategories.setCurrentIndex(index)

if not self.selectedFile == False:
item = self.listFiles_model.findItems(self.selectedFile)
if not self.selectedFiles:
item = self.listFiles_model.findItems(self.selectedFiles)
if len(item) > 0:
index = self.listFiles_model.indexFromItem(item[0])
self.ui.listFiles.setCurrentIndex(index)




def slotOK(self):
self.m_soundAction = {'name': 'play sound', 'pack': self.selectedVoicepack, 'cat' : self.selectedCategory, 'file' : self.selectedFile}
self.m_soundAction = {'name': 'play sound', 'pack': self.selectedVoicepack, 'cat' : self.selectedCategory, 'file' : self.selectedFiles}
super().accept()

def slotCancel(self):
Expand All @@ -102,11 +98,9 @@ def onCategorySelect(self):
self.ui.buttonOkay.setEnabled(False)
self.ui.buttonPlaySound.setEnabled(False)


def onFileSelect(self):
index = self.ui.listFiles.currentIndex()
itemText = index.data()
self.selectedFile = itemText
selected_indexes = self.ui.listFiles.selectedIndexes()
self.selectedFiles = [index.data() for index in selected_indexes]
self.ui.buttonOkay.setEnabled(True)
self.ui.buttonPlaySound.setEnabled(True)

Expand All @@ -122,7 +116,7 @@ def populateCategories(self, reset = True):
self.listCategories_model.removeRows( 0, self.listCategories_model.rowCount() )
self.listFiles_model.removeRows( 0, self.listFiles_model.rowCount() )
self.selectedCategory = False
self.selectedFile = False
self.selectedFiles = []

filter_categories = self.ui.filterCategories.toPlainText()
if len(filter_categories) == 0:
Expand All @@ -142,7 +136,7 @@ def populateFiles(self, reset = True):

if reset == True:
self.listFiles_model.removeRows( 0, self.listFiles_model.rowCount() )
self.selectedFile = False
self.selectedFiles = []

filter_files = self.ui.filterFiles.toPlainText()
if len(filter_files) == 0:
Expand All @@ -157,7 +151,7 @@ def populateFiles(self, reset = True):
self.listFiles_model.appendRow(item)

def playSound(self):
sound_file = './voicepacks/' + self.selectedVoicepack + '/' + self.selectedCategory + '/' + self.selectedFile
sound_file = './voicepacks/' + self.selectedVoicepack + '/' + self.selectedCategory + '/' + self.selectedFiles[0]
self.p_sounds.play(sound_file)

def stopSound(self):
Expand Down
1 change: 1 addition & 0 deletions ui_soundactioneditwnd.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ def setupUi(self, SoundSelect):
self.listFiles.setGeometry(QtCore.QRect(660, 90, 451, 231))
self.listFiles.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
self.listFiles.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.listFiles.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection)
self.listFiles.setProperty("showDropIndicator", False)
self.listFiles.setAlternatingRowColors(True)
self.listFiles.setObjectName("listFiles")
Expand Down

0 comments on commit 4126684

Please sign in to comment.