-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathratio_display.py
More file actions
39 lines (32 loc) · 1.49 KB
/
ratio_display.py
File metadata and controls
39 lines (32 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from PySide6.QtWidgets import QWidget
import numpy as np
import matplotlib
matplotlib.use('Qt5Agg')
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg
from matplotlib.figure import Figure
from matplotlib import pyplot as plt
from ui_resources.ui_ratio_display import Ui_ratioDisplay
class Sync3RatioXY(FigureCanvasQTAgg):
def __init__(self, numerator, denominator):
fig = Figure(figsize=(1,1), facecolor='black')
self.axes = fig.add_subplot(111)
self.axes.axis('off')
domain = np.linspace(0, 2 * np.pi * denominator, 256)
self.axes.plot(np.sin(domain), np.cos(domain * (numerator/denominator)), color='white')
super(Sync3RatioXY, self).__init__(fig)
def update_plot(self, numerator, denominator):
self.axes.cla()
self.axes.set_facecolor('black')
domain = np.linspace(0, 2 * np.pi * denominator, 256)
self.axes.plot(np.sin(domain), np.cos(domain * (numerator/denominator)), color='white')
self.draw()
class RatioDisplay(QWidget, Ui_ratioDisplay):
def __init__(self, parent):
super(RatioDisplay, self).__init__(parent)
self.setupUi(self)
self.lissa_plot = Sync3RatioXY(1,1)
self.xyLayout.addWidget(self.lissa_plot)
def update(self, numerator, denominator):
self.decimalData.setText('%.4f' % (numerator/denominator))
self.semitonesData.setText('%.4f' % (np.log2(numerator/denominator) * 12))
self.lissa_plot.update_plot(numerator, denominator)