pygame player different sample rates
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,3 +1,5 @@
|
||||
__pycache__
|
||||
Data
|
||||
.ipynb_checkpoints
|
||||
*.ipynb
|
||||
wav_converter.py
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import os
|
||||
import sys
|
||||
from pydub import AudioSegment
|
||||
from pygame import mixer
|
||||
from PyQt5.QtCore import QTimer
|
||||
|
||||
@@ -10,9 +11,11 @@ class AudioPlayer(object):
|
||||
method and set_audio_player, which loads the current file. Everything else
|
||||
is managed internally.
|
||||
"""
|
||||
__time_step = 1000
|
||||
__time_step = 1000 # Milliseconds.
|
||||
# __sample_rate = 8000 # Sample frequency of all audio files.
|
||||
|
||||
def __init__(self, play, pause, stop, volume, audio_progress):
|
||||
mixer.init()
|
||||
# mixer.init(frequency = self.__sample_rate)
|
||||
self.__paused = False
|
||||
self.__play = play
|
||||
self.__pause = pause
|
||||
@@ -27,23 +30,26 @@ class AudioPlayer(object):
|
||||
self.__stop.clicked.connect(self.__stop_audio)
|
||||
self.__volume.valueChanged.connect(self.__set_volume)
|
||||
|
||||
|
||||
def __set_volume(self):
|
||||
mixer.music.set_volume(self.__volume.value() / self.__volume.maximum())
|
||||
|
||||
def __reset_audio_widget(self):
|
||||
self.__audio_progress.reset()
|
||||
self.__volume.setValue(50)
|
||||
self.__enable_buttons(False, False, False)
|
||||
self.__paused = False
|
||||
if mixer.get_init():
|
||||
if mixer.music.get_busy():
|
||||
mixer.music.stop()
|
||||
self.__timer.stop()
|
||||
mixer.quit()
|
||||
self.__audio_progress.reset()
|
||||
self.__enable_buttons(False, False, False)
|
||||
self.__paused = False
|
||||
|
||||
def __update_bar(self):
|
||||
pos = mixer.music.get_pos()
|
||||
if pos == -1:
|
||||
self.__timer.stop()
|
||||
self.__audio_progress.reset()
|
||||
self.__enable_buttons(True, False, False)
|
||||
else:
|
||||
self.__audio_progress.setValue(pos)
|
||||
|
||||
@@ -54,13 +60,14 @@ class AudioPlayer(object):
|
||||
|
||||
def set_audio_player(self, fname):
|
||||
self.__reset_audio_widget()
|
||||
full_name = os.path.join('Data', 'Audio', fname + '.ogg')
|
||||
full_name = os.path.join('Data', 'Audio_wav', fname + '.wav')
|
||||
if os.path.exists(full_name):
|
||||
mixer.init(frequency = AudioSegment.from_ogg(full_name).frame_rate)
|
||||
self.__play.setEnabled(True)
|
||||
self.__audio_file = full_name
|
||||
self.__set_max_progress_bar()
|
||||
mixer.music.load(full_name)
|
||||
mixer.music.set_volume(self.__volume.value())
|
||||
self.__volume.setValue(50)
|
||||
|
||||
def __play_audio(self):
|
||||
if not self.__paused:
|
||||
@@ -73,6 +80,7 @@ class AudioPlayer(object):
|
||||
|
||||
def __stop_audio(self):
|
||||
mixer.music.stop()
|
||||
self.__audio_progress.reset()
|
||||
self.__timer.stop()
|
||||
self.__enable_buttons(True, False, False)
|
||||
|
||||
|
||||
31
main.py
31
main.py
@@ -20,21 +20,22 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
||||
super().__init__()
|
||||
self.setupUi(self)
|
||||
self.show()
|
||||
self.db_version = None
|
||||
self.load_db()
|
||||
self.display_signals()
|
||||
self.search_bar.textChanged.connect(self.display_signals)
|
||||
self.result_list.itemSelectionChanged.connect(self.display_specs)
|
||||
self.play.setIcon(qta.icon('fa5.play-circle',
|
||||
color = "#7a7a7a",
|
||||
color_active = '#1d5eff'))
|
||||
color = "#999999",
|
||||
color_disabled = '#000000'))
|
||||
self.play.setIconSize(self.play.size())
|
||||
self.pause.setIcon(qta.icon('fa5.pause-circle',
|
||||
color = "#7a7a7a",
|
||||
color_active = '#1d5eff'))
|
||||
color = "#999999",
|
||||
color_disabled = '#000000'))
|
||||
self.pause.setIconSize(self.pause.size())
|
||||
self.stop.setIcon(qta.icon('fa5.stop-circle',
|
||||
color = "#7a7a7a",
|
||||
color_active = '#1d5eff'))
|
||||
color = "#999999",
|
||||
color_disabled = '#000000'))
|
||||
self.stop.setIconSize(self.stop.size())
|
||||
self.audio_widget = AudioPlayer(self.play,
|
||||
self.pause,
|
||||
@@ -62,6 +63,24 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
||||
else:
|
||||
self.signal_names = db['signal_0']
|
||||
|
||||
try:
|
||||
with open(os.path.join('Data', 'verdb.ini'), 'r') as dbver:
|
||||
self.db_version = int(dbver.read())
|
||||
except (FileNotFoundError, ValueError):
|
||||
box = QMessageBox(self)
|
||||
box.setStyleSheet("""
|
||||
color:#FFFFFF;
|
||||
""")
|
||||
box.setWindowTitle("No database version")
|
||||
box.setText("Unable to detect database version.\n"
|
||||
"Possible data curruption.\n"
|
||||
"Go to Updates->Force Download.")
|
||||
box.show()
|
||||
self.setStatusTip(f"Database version: undefined.")
|
||||
else:
|
||||
self.setStatusTip(f"Database version: {self.db_version}.")
|
||||
|
||||
|
||||
def display_signals(self):
|
||||
self.result_list.clear()
|
||||
for signal in self.signal_names:
|
||||
|
||||
@@ -38,6 +38,76 @@ QProgressBar::chunk {
|
||||
/*background-color: #1d5eff;*/
|
||||
background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #1d5eff, stop:0.5 #4177ff, stop:1 #1d5eff);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
QAbstractScrollArea::corner {
|
||||
background: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
QScrollBar:vertical, QScrollBar:horizontal{
|
||||
background-color:#343434;
|
||||
border-radius: 5px;
|
||||
/*background: none;*/
|
||||
}
|
||||
|
||||
QScrollBar:vertical {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
/*width: 10px;*/
|
||||
}
|
||||
QScrollBar:horizontal{
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
/*height: 10px;*/
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical, QScrollBar::handle:horizontal{
|
||||
border-radius: 5px;
|
||||
border-color: none;
|
||||
border-width: 1px;
|
||||
background-color: #959595;
|
||||
}
|
||||
|
||||
QScrollBar::add-line:vertical, QScrollBar::add-line:horizontal{
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
}
|
||||
|
||||
QScrollBar::sub-line:vertical, QScrollBar::sub-line:horizontal{
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
}
|
||||
|
||||
QScrollBar::add-page:vertical{
|
||||
border-left: 1px solid gray;
|
||||
background: transparent;
|
||||
border-radius: 5px;
|
||||
/*
|
||||
border: 1px#343434;
|
||||
background-color: #343434;*/
|
||||
}
|
||||
QScrollBar::add-page:horizontal{
|
||||
border-top: 1px solid gray;
|
||||
background: transparent;
|
||||
border-radius: 5px;
|
||||
/*
|
||||
border: 1px#343434;
|
||||
background-color: #343434;*/
|
||||
}
|
||||
QScrollBar::sub-page:vertical{
|
||||
border-left: 1px solid gray;
|
||||
background: transparent;
|
||||
border-radius: 5px;
|
||||
/* border: 1px #343434;
|
||||
background-color: #343434;*/
|
||||
}
|
||||
QScrollBar::sub-page:horizontal{
|
||||
border-top: 1px solid gray;
|
||||
background: transparent;
|
||||
border-radius: 5px;
|
||||
/* border: 1px #343434;
|
||||
background-color: #343434;*/
|
||||
}</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
@@ -94,10 +164,11 @@ QProgressBar::chunk {
|
||||
<string/>
|
||||
</property>
|
||||
<property name="statusTip">
|
||||
<string>Search a signal name.</string>
|
||||
<string/>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color: rgb(255, 255, 255);
|
||||
<string notr="true">background-color: #343434;
|
||||
color: rgb(255, 255, 255);
|
||||
border: 1px solid gray;
|
||||
border-radius: 5px;</string>
|
||||
</property>
|
||||
@@ -147,9 +218,10 @@ border-radius: 5px;</string>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QListWidget {
|
||||
background-color:rgb(52,52,52);
|
||||
color: rgb(255, 255, 255);
|
||||
border: 1px solid gray;
|
||||
border-radius: 10px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
</string>
|
||||
</property>
|
||||
@@ -159,6 +231,12 @@ border-radius: 5px;</string>
|
||||
<property name="horizontalScrollBarPolicy">
|
||||
<enum>Qt::ScrollBarAsNeeded</enum>
|
||||
</property>
|
||||
<property name="autoScrollMargin">
|
||||
<number>16</number>
|
||||
</property>
|
||||
<property name="showDropIndicator" stdset="0">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@@ -421,6 +499,9 @@ QSlider::handle:horizontal {
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>50</number>
|
||||
</property>
|
||||
|
||||
Reference in New Issue
Block a user