Skip to content

Commit 4d7a8ff

Browse files
committed
0.90 release
1 parent ef7d9cc commit 4d7a8ff

5 files changed

Lines changed: 85 additions & 79 deletions

File tree

CHANGES.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,29 @@ This file summarizes the changes made with each release of the code.
44

55
-----------
66

7+
# 0.90 - 2024-12-07
8+
9+
* Split into two commands:
10+
* amidiminder - the deamon, and user commands to manage profiles
11+
* amidiview - interactive viewer, and command line replacement for aconnect
12+
13+
* Interactive port and connection viewer
14+
* terminal graphic user interface
15+
* commands to connect and disconnect ports, with undo
16+
* dynamically updates view with system changes
17+
18+
* amidiview list command
19+
* shows all ports and connections in an easy to read format
20+
* has many display options
21+
22+
* amidiview connect/disconnect commands
23+
* uses simple port name syntax, inluding defaulting ports if just a client
24+
name is used.
25+
* can use ALSA ids if you really want
26+
* matches aconnect usage
27+
28+
-----------
29+
730
# 0.80 - 2024-12-01
831

932
* Profile files

NOTES

Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,6 @@ NOTES
33

44
# TODO
55

6-
[x] split into two commands
7-
[x] amidiview.1 man page
8-
[x] amidiview should default to view command
9-
10-
[x] new handling of numbers in rules
11-
- name:num is partial string match
12-
- name:=num is ALSA id match
13-
- num:num is ALSA id match on both
14-
[x] num:num should only be allowed on command line
15-
16-
[x] amidiview -c, -d, & -x options to mirror aconnect
17-
18-
## aconnect functionality
19-
20-
[x] connect & disconnect
21-
[x] support for num:num matches
22-
23-
[x] list
24-
[x] sort ports - name
25-
[x] numeric sort options
26-
[] ? group ports by type??
27-
[x] sort connections
28-
[x] port display in columns based on client and port name widths
29-
[x] all ports option (includes system ports)
30-
[x] ports only, connections only options
31-
[x] simple text versions (without formatting) --plain
32-
[x] client listings
33-
[x] move verbose port details (-p) option to the list command
34-
[x] recode Seq::outputAddrDetails to use fmt... or???
35-
[x] man page update
36-
[x] --long-name flag (and remove dep on msg.h)
37-
38-
[x] view
39-
[x] refresh if ALSA Seq has updates
40-
[x] control-l to repaint
41-
[x] actually connect & disconnect
42-
[x] massive code clean up
43-
[x] turn off debugging
44-
[x] adjust selections on SeqSnapshot refresh
45-
[x] handle empty ports and connections
46-
[x] undo
47-
[x] man page
48-
496

507
## future
518

@@ -78,6 +35,8 @@ NOTES
7835
[] ? future possible options for connect/disconnect
7936
--force, --interactive, --dry-run
8037

38+
[] ? in list command and view command, group ports by type??
39+
8140

8241
# MAJOR THEMES
8342

README.md

Lines changed: 57 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
# amidiminder
2-
ALSA utility to keep your MIDI devices connected
1+
# amidiminder & amidiview
2+
**amidiminder:** an ALSA utility to keep your MIDI devices connected
3+
**amidiview:** a tool for managing connections
34

45
### The problem
56

@@ -25,16 +26,64 @@ ALSA utility to keep your MIDI devices connected
2526
... But when the MIDI port comes back - `amidimider`'s got your back and
2627
will connect them right back up again just as they were.
2728

29+
### A bonus
30+
31+
`amidiview` provides an interactive terminal interface for looking at, and
32+
modifying the connections on your system. Try it... you won't regret it!
33+
34+
```sh
35+
& amidiview
36+
```
37+
38+
Further, it includes all the functionality of `aconnect` (list, connect,
39+
disconnect), but allowing you to use `amidiminder`'s easy syntax for
40+
specifying ports. Often you can just use a part of the device name:
41+
42+
```sh
43+
& amidiview list
44+
Ports:
45+
MicroMonsta 2 : MIDI 1 [ 32:0] <->
46+
Midi Through : Port-0 [ 14:0] <->
47+
Midihub MH-1Z109TZ : MIDI 1 [ 36:0] <->
48+
Midihub MH-1Z109TZ : MIDI 2 [ 36:1] <->
49+
Midihub MH-1Z109TZ : MIDI 3 [ 36:2] <->
50+
Midihub MH-1Z109TZ : MIDI 4 [ 36:3] <->
51+
Pure Data : Midi-In 1 [130:0] <--
52+
Pure Data : Midi-Out 1 [130:1] -->
53+
Connections:
54+
55+
& amidiview connect Pure Monsta
56+
Connected Pure Data:Midi-Out 1 [130:1]+ --> MicroMonsta 2:MIDI 1 [32:0]+
57+
58+
& amidiview connect hub:2 Pure
59+
Connected Midihub MH-1Z109TZ:MIDI 2 [36:1] --> Pure Data:Midi-In 1 [130:0]+
60+
61+
& amidiview list
62+
Ports:
63+
MicroMonsta 2 : MIDI 1 [ 32:0] <->
64+
Midi Through : Port-0 [ 14:0] <->
65+
Midihub MH-1Z109TZ : MIDI 1 [ 36:0] <->
66+
Midihub MH-1Z109TZ : MIDI 2 [ 36:1] <->
67+
Midihub MH-1Z109TZ : MIDI 3 [ 36:2] <->
68+
Midihub MH-1Z109TZ : MIDI 4 [ 36:3] <->
69+
Pure Data : Midi-In 1 [130:0] <--
70+
Pure Data : Midi-Out 1 [130:1] -->
71+
Connections:
72+
Midihub MH-1Z109TZ:MIDI 2 [36:1] --> Pure Data:Midi-In 1 [130:0]+
73+
Pure Data:Midi-Out 1 [130:1]+ --> MicroMonsta 2:MIDI 1 [32:0]+
74+
```
75+
2876

2977
## Building
3078

3179
Prerequisites:
32-
* g++, 6 or later
80+
* g++, 8 or later
3381
* make
3482
* libasound2-dev
83+
* libfmt-dev
3584

3685
```sh
37-
sudo apt install g++ make libasound2-dev
86+
sudo apt install g++ make libasound2-dev libfmt-dev
3887
```
3988

4089
Clone this repo and run `make`:
@@ -43,12 +92,13 @@ Clone this repo and run `make`:
4392
git clone https://github.com/mzero/amidiminder.git
4493
cd amidiminder
4594
make
95+
make deb
4696
```
4797

4898
Outputs:
4999

50-
- build executable is in `build/amidiminder`.
51-
- deb package is in `build/amidiminder.deb`.
100+
- build executables: `build/amidiminder` & `build/amidiview`.
101+
- deb package, which is placed in the directory above.
52102

53103

54104
## Install
@@ -57,39 +107,13 @@ Installing the built deb package will install a systemd service that runs
57107
`amidiminder` at startup.
58108

59109
```sh
60-
sudo dpkg -i build/amidiminder.deb
110+
sudo apt install ../amidiminder_*.deb
61111
```
62112

63113
That's it. — It's installed. — It's running — You're done!
64114

65115
## Configuration
66116

67-
`amidiminder` reads a rules file from `/etc/amidiminder.rules`. If you edit
68-
that file, you can first check it is legal:
69-
70-
```sh
71-
amidiminder -C # checks the rules and then quits
72-
```
73-
74-
Then, restart the service:
75-
76-
```sh
77-
sudo systemctl restart amidiminder
78-
```
79-
80-
### Rules Format
81-
82-
Example:
83-
```
84-
nanoKEY2 --> Circuit
85-
# connects the first port for each device as shown
86-
87-
bicycle <-- Launchpad Pro MK3
88-
bicycle <-- Launchpad Pro MK3:2
89-
bicycle:synths --> Circuit
90-
# the port direction can go which ever way is convienent for you
91-
# ports can be specified by number or by name
92-
```
93117

94118
---
95119

src/args-service.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace {
77
const auto appDescription = "Maintain MIDI device connections";
8-
const auto appVersion = "0.80";
8+
const auto appVersion = "0.90";
99
}
1010

1111
namespace Args {

src/args-user.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
#include "msg.h"
55

66
namespace {
7-
const auto appDescription = "Maintain MIDI device connections";
8-
const auto appVersion = "0.80";
7+
const auto appDescription = "MIDI connection utility knife";
8+
const auto appVersion = "0.90";
99
}
1010

1111
namespace Args {

0 commit comments

Comments
 (0)