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.console import ConsoleOptions, Console
|
||||||
from rich.segment import Segment
|
from rich.segment import Segment
|
||||||
from rich.style import Style
|
from rich.style import Style
|
||||||
|
|
@ -128,11 +130,15 @@ class Channel(Widget):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
rms_value = var(0)
|
rms_value = var(0)
|
||||||
scaled_rms_value = var(0)
|
scaled_rms_value = var(0.0)
|
||||||
MAX_RMS = 2**64
|
RMS_FACTOR = float(2**54)
|
||||||
|
|
||||||
def compute_scaled_rms_value(self) -> float:
|
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:
|
def watch_scaled_rms_value(self, val) -> None:
|
||||||
self.query_one(Meter).value = val
|
self.query_one(Meter).value = val
|
||||||
|
|
@ -165,8 +171,7 @@ class ChannelRow(Widget):
|
||||||
|
|
||||||
rms_values = var([])
|
rms_values = var([])
|
||||||
|
|
||||||
def watch_rms_values(self, old_values, new_values):
|
def watch_rms_values(self, new_values):
|
||||||
print('watch_rms_values', new_values)
|
|
||||||
for channel, value in zip(self.query(Channel), new_values):
|
for channel, value in zip(self.query(Channel), new_values):
|
||||||
channel.rms_value = value
|
channel.rms_value = value
|
||||||
|
|
||||||
|
|
@ -320,7 +325,7 @@ class Mixer(App):
|
||||||
self.out_port = mido.open_output('Mixer', virtual=True)
|
self.out_port = mido.open_output('Mixer', virtual=True)
|
||||||
|
|
||||||
def on_mount(self) -> None:
|
def on_mount(self) -> None:
|
||||||
self.set_interval(.5, self.update_messages)
|
self.set_interval(.1, self.update_messages)
|
||||||
|
|
||||||
def update_messages(self) -> None:
|
def update_messages(self) -> None:
|
||||||
self.out_port.send(self.STATUS_MSG)
|
self.out_port.send(self.STATUS_MSG)
|
||||||
|
|
@ -367,13 +372,15 @@ class Mixer(App):
|
||||||
self.messages.append(hex_format(decoded_msg))
|
self.messages.append(hex_format(decoded_msg))
|
||||||
self.query_one('#log').update(self.messages)
|
self.query_one('#log').update(self.messages)
|
||||||
|
|
||||||
print('update')
|
|
||||||
input_row = self.query_one(InputChannelRow)
|
input_row = self.query_one(InputChannelRow)
|
||||||
input_row.rms_values = self.bf_rms.input_rms
|
input_row.rms_values = self.bf_rms.input_rms
|
||||||
|
input_row.mutate_reactive(ChannelRow.rms_values)
|
||||||
playback_row = self.query_one(PlaybackChannelRow)
|
playback_row = self.query_one(PlaybackChannelRow)
|
||||||
playback_row.rms_values = self.bf_rms.playback_rms
|
playback_row.rms_values = self.bf_rms.playback_rms
|
||||||
|
playback_row.mutate_reactive(ChannelRow.rms_values)
|
||||||
output_row = self.query_one(OutputChannelRow)
|
output_row = self.query_one(OutputChannelRow)
|
||||||
output_row.rms_values = self.bf_rms.output_rms
|
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__)
|
#self.query_one('#status').update(self.bf_status.__dict__)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue