feat: expand companion platform, device controls, and memoir workflows
ci / verify (push) Canceled after 0s
ci / verify (push) Canceled after 0s
Add customer and operator login, BLE provisioning, device fleet controls, call memory, memoir generation, and refreshed family and maintenance portals. Include API contracts, migrations, firmware sources, tests, assets, and deployment documentation.
This commit is contained in:
@@ -0,0 +1,743 @@
|
||||
{
|
||||
"created": "2026-10-07",
|
||||
"method": "new project-specific score, additive tone synthesis",
|
||||
"external_recordings": [],
|
||||
"external_samples": [],
|
||||
"reference_songs": [],
|
||||
"generator": "scripts/create-memoir-music.py",
|
||||
"tracks": [
|
||||
{
|
||||
"id": "paper-light",
|
||||
"title": "纸页微光",
|
||||
"tempo": 64,
|
||||
"voice": "felt",
|
||||
"description": "柔和琴音与低声和弦,适合精装书阅读。",
|
||||
"chords": [
|
||||
[
|
||||
48,
|
||||
55,
|
||||
62,
|
||||
64
|
||||
],
|
||||
[
|
||||
45,
|
||||
52,
|
||||
60,
|
||||
67
|
||||
],
|
||||
[
|
||||
53,
|
||||
60,
|
||||
64,
|
||||
69
|
||||
],
|
||||
[
|
||||
43,
|
||||
50,
|
||||
59,
|
||||
62
|
||||
],
|
||||
[
|
||||
48,
|
||||
55,
|
||||
59,
|
||||
64
|
||||
],
|
||||
[
|
||||
45,
|
||||
52,
|
||||
60,
|
||||
64
|
||||
],
|
||||
[
|
||||
50,
|
||||
57,
|
||||
60,
|
||||
65
|
||||
],
|
||||
[
|
||||
43,
|
||||
55,
|
||||
59,
|
||||
62
|
||||
],
|
||||
[
|
||||
53,
|
||||
60,
|
||||
64,
|
||||
67
|
||||
],
|
||||
[
|
||||
48,
|
||||
55,
|
||||
62,
|
||||
67
|
||||
],
|
||||
[
|
||||
45,
|
||||
52,
|
||||
60,
|
||||
64
|
||||
],
|
||||
[
|
||||
50,
|
||||
57,
|
||||
60,
|
||||
65
|
||||
],
|
||||
[
|
||||
53,
|
||||
57,
|
||||
60,
|
||||
64
|
||||
],
|
||||
[
|
||||
43,
|
||||
50,
|
||||
57,
|
||||
62
|
||||
],
|
||||
[
|
||||
48,
|
||||
55,
|
||||
59,
|
||||
64
|
||||
],
|
||||
[
|
||||
48,
|
||||
55,
|
||||
62,
|
||||
64
|
||||
]
|
||||
],
|
||||
"phrases": [
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
76
|
||||
],
|
||||
[
|
||||
2.5,
|
||||
71
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.5,
|
||||
72
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
69
|
||||
],
|
||||
[
|
||||
3,
|
||||
76
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1,
|
||||
74
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
67
|
||||
],
|
||||
[
|
||||
2.5,
|
||||
71
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1,
|
||||
72
|
||||
],
|
||||
[
|
||||
3,
|
||||
76
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
77
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
2,
|
||||
74
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
76
|
||||
],
|
||||
[
|
||||
2.5,
|
||||
79
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1,
|
||||
74
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
72
|
||||
],
|
||||
[
|
||||
3,
|
||||
69
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.5,
|
||||
74
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
72
|
||||
],
|
||||
[
|
||||
2.5,
|
||||
69
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1,
|
||||
71
|
||||
],
|
||||
[
|
||||
3,
|
||||
74
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
76
|
||||
],
|
||||
[
|
||||
2.5,
|
||||
71
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1,
|
||||
67
|
||||
]
|
||||
]
|
||||
],
|
||||
"seconds": 60.0,
|
||||
"sample_rate": 44100,
|
||||
"channels": 2,
|
||||
"file": "paper-light.mp3",
|
||||
"bytes": 961034,
|
||||
"sha256": "883fb5e8c7d878fce522e9d1e82ddaffbf75d96707f6698c66046c30c83fa9f6",
|
||||
"peak_pcm": 0.55,
|
||||
"rms_pcm": 0.124366
|
||||
},
|
||||
{
|
||||
"id": "courtyard-breeze",
|
||||
"title": "桂香旧院",
|
||||
"tempo": 60,
|
||||
"voice": "silk",
|
||||
"description": "轻拨弦与悠长气息,适合画卷连续阅读。",
|
||||
"chords": [
|
||||
[
|
||||
50,
|
||||
57,
|
||||
62,
|
||||
69
|
||||
],
|
||||
[
|
||||
55,
|
||||
62,
|
||||
67,
|
||||
74
|
||||
],
|
||||
[
|
||||
47,
|
||||
54,
|
||||
62,
|
||||
69
|
||||
],
|
||||
[
|
||||
45,
|
||||
52,
|
||||
61,
|
||||
69
|
||||
],
|
||||
[
|
||||
50,
|
||||
57,
|
||||
66,
|
||||
69
|
||||
],
|
||||
[
|
||||
55,
|
||||
62,
|
||||
67,
|
||||
71
|
||||
],
|
||||
[
|
||||
47,
|
||||
54,
|
||||
62,
|
||||
66
|
||||
],
|
||||
[
|
||||
45,
|
||||
57,
|
||||
61,
|
||||
64
|
||||
],
|
||||
[
|
||||
55,
|
||||
62,
|
||||
69,
|
||||
74
|
||||
],
|
||||
[
|
||||
50,
|
||||
57,
|
||||
62,
|
||||
66
|
||||
],
|
||||
[
|
||||
52,
|
||||
59,
|
||||
66,
|
||||
71
|
||||
],
|
||||
[
|
||||
45,
|
||||
52,
|
||||
61,
|
||||
69
|
||||
],
|
||||
[
|
||||
55,
|
||||
62,
|
||||
67,
|
||||
71
|
||||
],
|
||||
[
|
||||
45,
|
||||
57,
|
||||
64,
|
||||
69
|
||||
],
|
||||
[
|
||||
50,
|
||||
57,
|
||||
62,
|
||||
66
|
||||
],
|
||||
[
|
||||
50,
|
||||
57,
|
||||
62,
|
||||
69
|
||||
]
|
||||
],
|
||||
"phrases": [
|
||||
[
|
||||
[
|
||||
0.75,
|
||||
74
|
||||
],
|
||||
[
|
||||
2.75,
|
||||
78
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.25,
|
||||
81
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
78
|
||||
],
|
||||
[
|
||||
3,
|
||||
74
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.5,
|
||||
76
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.75,
|
||||
69
|
||||
],
|
||||
[
|
||||
2.75,
|
||||
74
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1,
|
||||
78
|
||||
],
|
||||
[
|
||||
3,
|
||||
81
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
78
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
2,
|
||||
76
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
83
|
||||
],
|
||||
[
|
||||
2.5,
|
||||
81
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.5,
|
||||
78
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.75,
|
||||
76
|
||||
],
|
||||
[
|
||||
3,
|
||||
71
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.5,
|
||||
69
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
74
|
||||
],
|
||||
[
|
||||
2.75,
|
||||
78
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.25,
|
||||
76
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
74
|
||||
],
|
||||
[
|
||||
2.5,
|
||||
69
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1,
|
||||
74
|
||||
]
|
||||
]
|
||||
],
|
||||
"seconds": 64.0,
|
||||
"sample_rate": 44100,
|
||||
"channels": 2,
|
||||
"file": "courtyard-breeze.mp3",
|
||||
"bytes": 1024981,
|
||||
"sha256": "a6b01d3ab98ae57c0c1bcf51acdc397875523e194cebada836f18b41cc6b3798",
|
||||
"peak_pcm": 0.55,
|
||||
"rms_pcm": 0.120799
|
||||
},
|
||||
{
|
||||
"id": "slow-years",
|
||||
"title": "岁月慢行",
|
||||
"tempo": 68,
|
||||
"voice": "bell",
|
||||
"description": "清淡钟琴与暖音铺底,适合年代浏览。",
|
||||
"chords": [
|
||||
[
|
||||
53,
|
||||
60,
|
||||
65,
|
||||
69
|
||||
],
|
||||
[
|
||||
50,
|
||||
57,
|
||||
65,
|
||||
69
|
||||
],
|
||||
[
|
||||
58,
|
||||
65,
|
||||
69,
|
||||
72
|
||||
],
|
||||
[
|
||||
48,
|
||||
55,
|
||||
62,
|
||||
67
|
||||
],
|
||||
[
|
||||
53,
|
||||
60,
|
||||
64,
|
||||
69
|
||||
],
|
||||
[
|
||||
50,
|
||||
57,
|
||||
60,
|
||||
65
|
||||
],
|
||||
[
|
||||
58,
|
||||
65,
|
||||
69,
|
||||
74
|
||||
],
|
||||
[
|
||||
48,
|
||||
55,
|
||||
64,
|
||||
67
|
||||
],
|
||||
[
|
||||
57,
|
||||
64,
|
||||
67,
|
||||
72
|
||||
],
|
||||
[
|
||||
50,
|
||||
57,
|
||||
60,
|
||||
65
|
||||
],
|
||||
[
|
||||
58,
|
||||
65,
|
||||
69,
|
||||
72
|
||||
],
|
||||
[
|
||||
48,
|
||||
55,
|
||||
62,
|
||||
67
|
||||
],
|
||||
[
|
||||
58,
|
||||
65,
|
||||
67,
|
||||
72
|
||||
],
|
||||
[
|
||||
48,
|
||||
55,
|
||||
64,
|
||||
69
|
||||
],
|
||||
[
|
||||
53,
|
||||
60,
|
||||
65,
|
||||
69
|
||||
],
|
||||
[
|
||||
53,
|
||||
60,
|
||||
67,
|
||||
69
|
||||
]
|
||||
],
|
||||
"phrases": [
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
81
|
||||
],
|
||||
[
|
||||
2.5,
|
||||
76
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.5,
|
||||
77
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
74
|
||||
],
|
||||
[
|
||||
3,
|
||||
77
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1,
|
||||
79
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.75,
|
||||
76
|
||||
],
|
||||
[
|
||||
2.75,
|
||||
72
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.5,
|
||||
74
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
77
|
||||
],
|
||||
[
|
||||
3,
|
||||
81
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1,
|
||||
79
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
84
|
||||
],
|
||||
[
|
||||
2.5,
|
||||
81
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1,
|
||||
77
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
79
|
||||
],
|
||||
[
|
||||
3,
|
||||
77
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.5,
|
||||
76
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.75,
|
||||
74
|
||||
],
|
||||
[
|
||||
2.75,
|
||||
77
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1.5,
|
||||
76
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0.5,
|
||||
77
|
||||
],
|
||||
[
|
||||
2.5,
|
||||
72
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
1,
|
||||
69
|
||||
]
|
||||
]
|
||||
],
|
||||
"seconds": 56.471,
|
||||
"sample_rate": 44100,
|
||||
"channels": 2,
|
||||
"file": "slow-years.mp3",
|
||||
"bytes": 904609,
|
||||
"sha256": "e0820d4f99d383d327a646990c52298a7d6fd2eaac8483aa48fb46e9d27b9f18",
|
||||
"peak_pcm": 0.55,
|
||||
"rms_pcm": 0.11996
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user