Implemented meters
This commit is contained in:
parent
5294df34c7
commit
57bcd3eebb
1 changed files with 14 additions and 7 deletions
21
main.py
21
main.py
|
|
@ -1,3 +1,5 @@
|
|||
import math
|
||||
|
||||
from rich.console import ConsoleOptions, Console
|
||||
from rich.segment import Segment
|
||||
from rich.style import Style
|
||||
|
|
@ -128,11 +130,15 @@ class Channel(Widget):
|
|||
"""
|
||||
|
||||
rms_value = var(0)
|
||||
scaled_rms_value = var(0)
|
||||
MAX_RMS = 2**64
|
||||
scaled_rms_value = var(0.0)
|
||||
RMS_FACTOR = float(2**54)
|
||||
|
||||
def compute_scaled_rms_value(self) -> float:
|
||||
return self.rms_value / self.MAX_RMS
|
||||
try:
|
||||
db = 10 * math.log10(self.rms_value / self.RMS_FACTOR)
|
||||
return (db + 90) / 110
|
||||
except ValueError:
|
||||
return 0
|
||||
|
||||
def watch_scaled_rms_value(self, val) -> None:
|
||||
self.query_one(Meter).value = val
|
||||
|
|
@ -165,8 +171,7 @@ class ChannelRow(Widget):
|
|||
|
||||
rms_values = var([])
|
||||
|
||||
def watch_rms_values(self, old_values, new_values):
|
||||
print('watch_rms_values', new_values)
|
||||
def watch_rms_values(self, new_values):
|
||||
for channel, value in zip(self.query(Channel), new_values):
|
||||
channel.rms_value = value
|
||||
|
||||
|
|
@ -320,7 +325,7 @@ class Mixer(App):
|
|||
self.out_port = mido.open_output('Mixer', virtual=True)
|
||||
|
||||
def on_mount(self) -> None:
|
||||
self.set_interval(.5, self.update_messages)
|
||||
self.set_interval(.1, self.update_messages)
|
||||
|
||||
def update_messages(self) -> None:
|
||||
self.out_port.send(self.STATUS_MSG)
|
||||
|
|
@ -367,13 +372,15 @@ class Mixer(App):
|
|||
self.messages.append(hex_format(decoded_msg))
|
||||
self.query_one('#log').update(self.messages)
|
||||
|
||||
print('update')
|
||||
input_row = self.query_one(InputChannelRow)
|
||||
input_row.rms_values = self.bf_rms.input_rms
|
||||
input_row.mutate_reactive(ChannelRow.rms_values)
|
||||
playback_row = self.query_one(PlaybackChannelRow)
|
||||
playback_row.rms_values = self.bf_rms.playback_rms
|
||||
playback_row.mutate_reactive(ChannelRow.rms_values)
|
||||
output_row = self.query_one(OutputChannelRow)
|
||||
output_row.rms_values = self.bf_rms.output_rms
|
||||
output_row.mutate_reactive(ChannelRow.rms_values)
|
||||
#self.query_one('#status').update(self.bf_status.__dict__)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue