Skip to content

Commit fc32131

Browse files
committed
Add SPL display support
1 parent 309e89a commit fc32131

File tree

8 files changed

+244
-48
lines changed

8 files changed

+244
-48
lines changed

README.md

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
Denon Remote
22
============
33

4-
Control Denon Professional DN-500AV surround preamplifier remotely.
4+
Control [Denon Professional DN-500AV surround preamplifier](https://www.denonpro.com/index.php/products/view/dn-500av)
5+
remotely.
56

67
![Screenshot](screenshot-v0.5.0-main.png)
78

89
![Settings Screenshot](screenshot-v0.5.0-settings.png)
910

10-
Author: Raphael Doursenaud <rdoursenaud@gmail.com>
11+
Author: Raphael Doursenaud <rdoursenaud+denonremote@gmail.com>
1112

1213
License: [GPLv3+](LICENSE)
1314

@@ -60,24 +61,33 @@ Fonts used:
6061
- [x] Relative
6162
- [x] Absolute
6263
- [x] Mute
63-
- [x] Presets! (-18dB, -24dB…)
64-
- [ ] SPL calibrated display (SMPTE RP200: -18dBFS = 85dB C SPL)
64+
- [x] SPL calibrated display
65+
- [x] EBU/SMPTE RP200: 85dB C SPL @ -18 dBFS (Equivalent to 83 dB C SPL @ -20 dBFS)
66+
- [x] K meter
67+
- [x] K-20: -20dBFS = 83dB C SPL (Same as SMPTE and EBU)
68+
- [x] K-14: -14dBFS = 83dB C SPL
69+
- [ ] Can be compensated from SMPTE/EBU levels by lowering the output volume by 6dB
70+
- [x] K-12: -12dBFS = 83dB C SPL
71+
- [ ] Can be compensated from SMPTE/EBU levels by lowering the output volume by 8dB
72+
- [x] EBU R 128: -23LUFS (-23dBFS) = 73dB C SPL (Debatable/unclear removed for now)
73+
- [x] Presets!
74+
- [x] Relative (-18dB, -24dB…)
75+
- [ ] Absolute
76+
- [ ] SPL calibrated
6577
- [ ] Input select
78+
- [x] Favorites
6679
- [ ] Security
6780
- [ ] Panel Lock
6881
- [ ] IR Remote Lock
6982
- [ ] Settings backup/restore
7083
- [ ] All
7184
- [ ] Subsystems?
72-
7385
- [x] Retrieve status
7486
- [x] Logger
7587
- [x] Update the GUI
76-
77-
- [ ] Profiles/presets?
78-
7988
- [ ] Import EQ settings
8089
- [ ] From [REW](https://www.roomeqwizard.com/) value file
90+
- [ ] Full Profiles/presets?
8191

8292
##### GUI
8393

@@ -110,7 +120,7 @@ Fonts used:
110120
- [ ] Android
111121
- [ ] iOS/iPadOS
112122

113-
#### Proxy?
123+
#### Proxy/background service?
114124

115125
The receiver only allows 1 active connection. A dispatcher proxy could allow multiple simultaneous remotes (Desktop and
116126
mobile).

denonremote/cli.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ class DenonRemoteApp:
88
def run(self):
99
# Get from config
1010
# FIXME: or get from arguments
11-
receiver_ip = kivy.config.Config.get('denonremote', 'receiver_ip')
12-
receiver_port = kivy.config.Config.get('denonremote', 'receiver_port')
11+
receiver_ip = kivy.config.get('denonremote', 'receiver_ip')
12+
receiver_port = kivy.config.get('denonremote', 'receiver_port')
1313

1414
reactor.connectTCP(receiver_ip, receiver_port, DenonClientFactory())
1515
reactor.run()

denonremote/denonremote.kv

Lines changed: 99 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
#:import system platform.system
33
#:import BUILD_DATE main.__BUILD_DATE__
44

5+
<ForcedToggleButton@ToggleButton>
6+
allow_no_selection: False
7+
58
FloatLayout:
69

710
FloatLayout:
@@ -45,24 +48,78 @@ FloatLayout:
4548
pos: (0, 63)
4649
pos_hint: {'top': .85}
4750

51+
BoxLayout
52+
id: spl_section
53+
orientation: 'horizontal'
54+
55+
BoxLayout
56+
id: spl_mode_section_1
57+
orientation: 'vertical'
58+
59+
ForcedToggleButton
60+
id: mode_k20
61+
text: "K-20"
62+
group: 'mode_ref'
63+
on_press: app.mode_changed(self)
64+
65+
ForcedToggleButton
66+
id: mode_ebu
67+
text: "EBU/SMPTE"
68+
state: 'down' # Default
69+
group: 'mode_ref'
70+
on_press: app.mode_changed(self)
71+
72+
BoxLayout
73+
id: spl_display_section
74+
orientation: 'vertical'
75+
76+
TextInput:
77+
id: spl_display
78+
text: "---dB SPL"
79+
readonly: True
80+
font_name: 'RobotoMono-Regular'
81+
font_size: 36
82+
halign: 'center'
83+
multiline: False
84+
foreground_color: [.85, .85, .85, 1]
85+
background_color: [.1, .1, .1, 1]
86+
#on_text_validate: app.spl_text_changed(self)
87+
disabled: False if root.ids.power.state == 'down' else True
88+
89+
TextInput:
90+
id: ref_display
91+
text: "@ ---dB FS"
92+
readonly: True
93+
font_name: 'RobotoMono-Regular'
94+
font_size: 24
95+
halign: 'center'
96+
valign: 'middle'
97+
multiline: False
98+
foreground_color: [.85, .85, .85, 1]
99+
background_color: [.1, .1, .1, 1]
100+
#on_text_validate: app.ref_text_changed(self)
101+
102+
BoxLayout
103+
id: spl_mode_section_2
104+
orientation: 'vertical'
105+
106+
ForcedToggleButton
107+
id: mode_k14
108+
text: "K-14"
109+
group: 'mode_ref'
110+
on_press: app.mode_changed(self)
111+
112+
ForcedToggleButton
113+
id: mode_k12
114+
text: "K-12"
115+
group: 'mode_ref'
116+
on_press: app.mode_changed(self)
117+
48118
BoxLayout:
49119
id: volume_section
50120
orientation: 'vertical'
51121
disabled: False if root.ids.power.state == 'down' else True
52122

53-
TextInput:
54-
id: volume_display
55-
text: "---.-dB"
56-
font_name: 'RobotoMono-Regular'
57-
font_size: 36
58-
halign: 'center'
59-
multiline: False
60-
size: (200, 60)
61-
size_hint: (1, None)
62-
foreground_color: [.85, .85, .85, 1]
63-
background_color: [.1, .1, .1, 1]
64-
on_text_validate: app.volume_text_changed(self)
65-
66123
BoxLayout:
67124
id: volume_keys_layout
68125
orientation: 'horizontal'
@@ -72,6 +129,17 @@ FloatLayout:
72129
text: "-"
73130
on_press: app.volume_minus_pressed(self)
74131

132+
TextInput:
133+
id: volume_display
134+
text: "---.-dB"
135+
font_name: 'RobotoMono-Regular'
136+
font_size: 36
137+
halign: 'center'
138+
multiline: False
139+
foreground_color: [.85, .85, .85, 1]
140+
background_color: [.1, .1, .1, 1]
141+
on_text_validate: app.volume_text_changed(self)
142+
75143
Button:
76144
id: volume_plus
77145
text: "+"
@@ -83,6 +151,12 @@ FloatLayout:
83151
group: 'mute'
84152
on_press: app.volume_mute_pressed(self)
85153

154+
BoxLayout
155+
id: presets_section
156+
orientation: 'vertical'
157+
disabled: False if root.ids.power.state == 'down' else True
158+
size_hint: (1, .5)
159+
86160
BoxLayout
87161
id: volume_presets_layout
88162
orientation: 'horizontal'
@@ -105,9 +179,16 @@ FloatLayout:
105179
group: 'vol_preset'
106180
on_press: app.vol_preset_3_pressed(self)
107181

182+
ToggleButton:
183+
id: vol_preset_4
184+
text: app.config.get('denonremote', 'vol_preset_4')
185+
group: 'vol_preset'
186+
on_press: app.vol_preset_4_pressed(self)
187+
108188
BoxLayout:
109189
id: sources_section
110190
orientation: 'vertical'
191+
size_hint: (1, 1.5)
111192

112193
ToggleButton:
113194
id: fav_src_1
@@ -127,7 +208,6 @@ FloatLayout:
127208
group: 'sources'
128209
on_press: app.fav_src_3_pressed(self)
129210

130-
131211
FloatLayout:
132212
id: footer
133213
disabled: False
@@ -157,6 +237,11 @@ FloatLayout:
157237
id: brand_label
158238
text: "EMA Tech."
159239

240+
Label:
241+
id: copyright_label
242+
text: "(c) 2021 Raphaël Doursenaud"
243+
font_size: 12
244+
160245
Label:
161246
id: version_label
162247
text: "v%s %s (Built on %s)" % (VERSION, system(), BUILD_DATE)

0 commit comments

Comments
 (0)