-
Notifications
You must be signed in to change notification settings - Fork 0
/
soundmode.go
184 lines (157 loc) · 3.98 KB
/
soundmode.go
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
package denonavr
import "strings"
// thx to https://github.com/ol-iver/denonavr/blob/main/denonavr/const.py
// Sound modes
const ALL_ZONE_STEREO = "ALL ZONE STEREO"
var SOUND_MODE_MAPPING = map[string][]string{
"MUSIC": {
"PLII MUSIC",
"DTS NEO:6 MUSIC",
"DTS NEO:6 M",
"DTS NEO:X M",
"DOLBY D +NEO:X M",
"DTS NEO:X MUSIC",
"DOLBY PL2 MUSIC",
"DOLBY PL2 M",
"PLIIX MUSIC",
"DOLBY PL2 X MUSIC",
},
"MOVIE": {
"PLII MOVIE",
"PLII CINEMA",
"DTS NEO:X CINEMA",
"DTS NEO:X C",
"DTS NEO:6 CINEMA",
"DTS NEO:6 C",
"DOLBY D +NEO:X C",
"PLIIX CINEMA",
"DOLBY PLII MOVIE",
"MULTI IN + VIRTUAL:X",
"DOLBY PL2 CINEMA",
"DOLBY PL2 C",
"DOLBY PL2 X MOVIE",
},
"GAME": {
"PLII GAME",
"DOLBY D +NEO:X G",
"DOLBY PL2 GAME",
"DOLBY PL2 G",
"DOLBY PL2 X GAME",
},
"AUTO": {"None"},
"STANDARD": {"None2"},
"VIRTUAL": {"VIRTUAL"},
"MATRIX": {"MATRIX"},
"ROCK ARENA": {"ROCK ARENA"},
"JAZZ CLUB": {"JAZZ CLUB"},
"VIDEO GAME": {"VIDEO GAME"},
"MONO MOVIE": {"MONO MOVIE"},
"DIRECT": {"DIRECT"},
"PURE DIRECT": {"PURE_DIRECT", "PURE DIRECT"},
"DOLBY DIGITAL": {
"DOLBY DIGITAL",
"DOLBY D + DOLBY SURROUND",
"DOLBY D+DS",
"DOLBY DIGITAL +",
"STANDARD(DOLBY)",
"DOLBY SURROUND",
"DOLBY D + +DOLBY SURROUND",
"NEURAL",
"DOLBY HD",
"DOLBY HD + DOLBY SURROUND",
"MULTI IN + DSUR",
"MULTI IN + NEURAL:X",
"MULTI IN + DOLBY SURROUND",
"DOLBY D + NEURAL:X",
"DOLBY DIGITAL + NEURAL:X",
"DOLBY DIGITAL + + NEURAL:X",
"DOLBY ATMOS",
"DOLBY AUDIO - DOLBY SURROUND",
"DOLBY TRUEHD",
"DOLBY AUDIO - DOLBY DIGITAL PLUS",
"DOLBY AUDIO - TRUEHD + DSUR",
"DOLBY AUDIO - DOLBY TRUEHD",
"DOLBY AUDIO - TRUEHD + NEURAL:X",
"DOLBY AUDIO - DD + DSUR",
"DOLBY AUDIO - DD+ + NEURAL:X",
"DOLBY AUDIO - DD+ + DSUR",
"DOLBY AUDIO - DOLBY DIGITAL",
"DOLBY AUDIO-DSUR",
"DOLBY AUDIO-DD+DSUR",
},
"DTS SURROUND": {
"DTS SURROUND",
"DTS NEURAL:X",
"STANDARD(DTS)",
"DTS + NEURAL:X",
"MULTI CH IN",
"DTS-HD MSTR",
"DTS VIRTUAL:X",
"DTS-HD + NEURAL:X",
"DTS-HD",
"DTS + VIRTUAL:X",
"DTS + DOLBY SURROUND",
"DTS-HD + DOLBY SURROUND",
"DTS-HD + DSUR",
"DTS:X MSTR",
},
"AURO3D": {"AURO-3D"},
"AURO2DSURR": {"AURO-2D SURROUND"},
"MCH STEREO": {
"MULTI CH STEREO",
"MULTI_CH_STEREO",
"MCH STEREO",
"MULTI CH IN 7.1",
},
"STEREO": {"STEREO"},
ALL_ZONE_STEREO: {"ALL ZONE STEREO"},
}
func (d *DenonAVR) GetSoundModeList() []string {
var soundModeList []string
for mode := range SOUND_MODE_MAPPING {
soundModeList = append(soundModeList, mode)
}
return soundModeList
}
func (d *DenonAVR) GetSurroundMode(zone DenonZone) string {
return d.getZoneSurroundMode(d.zoneStatus[zone])
}
func (d *DenonAVR) getZoneSurroundMode(zoneStatus DenonZoneStatus) string {
var surroundMode string
rawSurroundMode := strings.TrimRight(zoneStatus.SurrMode, " ")
if strings.Contains(strings.ToUpper(rawSurroundMode), "DTS") {
surroundMode = "DTS SURROUND"
}
if strings.Contains(strings.ToUpper(rawSurroundMode), "DOLBY DIGITAL") {
surroundMode = "DOLBY DIGITAL"
}
if strings.Contains(strings.ToUpper(rawSurroundMode), "MUSIC") {
surroundMode = "MUSIC"
}
if strings.Contains(strings.ToUpper(rawSurroundMode), "AURO3D") {
surroundMode = "AURO3D"
}
if strings.Contains(strings.ToUpper(rawSurroundMode), "MOVIE") || strings.Contains(strings.ToUpper(rawSurroundMode), "CINEMA") {
surroundMode = "MOVIE"
}
if strings.Contains(strings.ToUpper(rawSurroundMode), "AURO3D") {
surroundMode = "AURO3D"
}
if strings.ToUpper(rawSurroundMode) == "AURO-2D SURROUND" {
surroundMode = "AURO2DSURR"
}
if strings.ToUpper(rawSurroundMode) == "None" {
surroundMode = "AUTO"
}
if strings.ToUpper(rawSurroundMode) == "None2" {
surroundMode = "STANDARD"
}
if surroundMode == "" {
surroundMode = rawSurroundMode
}
return surroundMode
}
func (d *DenonAVR) SetSoundModeMainZone(mode string) int {
status, _ := d.sendCommandToDevice(DenonCommandMS, strings.ToUpper(mode))
return status
}