-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathROADMAP
145 lines (130 loc) · 6.24 KB
/
ROADMAP
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
This is Notes about developing this application, known bugs and
features to add. It is generally in order of importance... or at
least order to be worked on. (some later things rely on sooner
things)
TODO:
- Assume pipewire is in system
- detect if pulse is pw - use pw commands
- choose system mode:
- pulse/jack:
same as before, turn pulse on, turn PW's jack lib off
This will only last a while as pulse will go
- pipewire only
Use PW to replace both pulse and jack. Jack libs will point
at PW. Maybe figure out use jackd as a device. (jack device switch)
- pipewire/jack
The idea is to use PW instead of pulse with jack still being
used normally. Need to figure out pw-jack bridging
Useful info:
- PW restart line: systemctl --user restart wireplumber pipewire pipewire-pulse
- PW devices can be renamed in ~/.config/wireplumber/main.lua.d/
sample file: 51-alsa-rename.lua
rule = {
matches = {
{
{ "node.name", "equals", "alsa_output.pci-0000_07_00.0.pro-output-0" },
},
},
apply_properties = {
["node.description"] = "M66",
["node.nick"] = "M66",
},
}
rule1 = {
matches = {
{
{ "node.name", "equals", "alsa_input.pci-0000_07_00.0.pro-input-0" },
},
},
apply_properties = {
["node.description"] = "M66",
["node.nick"] = "M66",
},
}
table.insert(alsa_monitor.rules,rule)
table.insert(alsa_monitor.rules,rule1)
Notes: description = what desktop sees and jack sees in full mode
nick = what jack sees in short mode.
- pw setting jack parameters is done in ~/.config/pipewire/jack.conf.d/
I used a file called: studio.conf
jack.properties = {
node.latency = 512/48000
#node.rate = 1/48000 # is this right?
node.lock-quantum = true #we want true
node.force-quantum = 512 # this should match latency above
jack.show-monitor = false # default to off. The same
# same audio is already available
#jack.merge-monitor = false # perhaps true would be right
jack.short-name = true # long names are painful
jack.filter-name = true # no bad char
jack.filter-char = "_" # space is bad
#
# allow: Don't restrict self connect requests
# fail-external: Fail self connect requests to external ports only
# ignore-external: Ignore self connect requests to external ports only
# fail-all: Fail all self connect requests
# ignore-all: Ignore all self connect requests
#jack.self-connect-mode = allow
#jack.locked-process = true
jack.default-as-system = true # true because old projects
# that connect to system: work
# Hmm maybe false, change name
# with wireplumber
#jack.fix-midi-events = true # change note on v0 to note off
Setting rate may not work as above and note that most of the above
parameters can be changed on the fly. pipewire.conf does have a
default SR. but the jack page suggests using:
pw-metadata -n settings 0 clock.force-rate <samplerate>
pw-metadata -n settings 0 clock.force-quantum <buffersize>
Need to find out how to set jack master and desktop default to
be different.
Many of these things can be set on the fly, so set the param on the
fly so we don't restart PW but still write the file for next start.
- pw mode should replace pulse bridge with a loopback node(s):
~/.config/pipewire/pipewire.conf.d/11-loopback.conf
context.modules = [
{ name = libpipewire-module-loopback
args = {
audio.position = [ FL FR ]
capture.props = {
media.class = Audio/Sink
node.name = loop_sink
node.description = "loop-sink"
#node.latency = 1024/48000
#audio.rate = 44100
#audio.channels = 2
#audio.position = [ FL FR ]
#target.object = "my-default-sink"
}
playback.props = {
#media.class = Audio/Source
node.name = loop_source
node.description = "loop-source"
#node.latency = 1024/48000
#audio.rate = 44100
#audio.channels = 2
#audio.position = [ FL FR ]
target.object = "my-default-source"
}
}
}
]
- NOTE there may be different/better ways. See virtual devices
-pw device name changes etc can replace extra devices. "Extra devices"
should be changed "device setup"
-Session management can remain as is. Code may be different.
- network can remain as is using zita-njbridge
this may be a problem... zita-njbridge was crashing.
Future Features:
- make help work with current tab
- remove warning dialogs and create on the fly as needed
- Add packagers file describing depends/conflicts
- Add multiple devices for firewire
- bluetooth via pulse.
Note: not worth doing. Pipewire will do this for us.
use: pacmd load-module module-loopback latency_msec=5
and: pacmd unload-module module-loopback
need to figue out how to auto route jack->pulse bridge to loop
and loop to bt device.
- adding in stuff from https://github.com/jhernberg/udev-rtirq so that
hot plugged USB devices get higher priority.