rog-golang-buddies / rapidmidiex-research

1 stars 0 forks source link

Create App Wireframes #9

Open harveysanders opened 2 years ago

harveysanders commented 2 years ago

We need some wireframes or diagrams to visually explain the application. I started a rough draft here. Let's discuss and build off it.

Update this image as necessary:

Image

hansvb commented 2 years ago

The Global Session View:

┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                          ┌───────────────────────────────────────────────┐     │
│                                          │nick    | IP             | latency (ms)        │     │
│                                          │-----------------------------------------      │     │
│                                          │jk      | 127.0.0.1:56763 | 23.24              │     │
│                                          │peewee  | 127.0.0.1:68376 | 54.23              │     │
│                                          └───────────────────────────────────────────────┘     │
│                                                                                                │
│                                                                                                │
│                                                                                                │
│                                                               ┌────────────────────────────┐   │
│                                                               │                            │   │
│                                                               │                            │   │
│                                                               │                            │   │
│                                                               │                            │   │
│                                                               │                            │   │
│                                                               │                            │   │
│                                                               │                            │   │
│    ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐  │                            │   │
│    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │  │                            │   │
│    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │  │                            │   │
│    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │  │                            │   │
│    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │  │                            │   │
│    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │  │                            │   │
│    │C│D│E│F│G│A│B│C│D│E│F│G│A│B│C│D│E│F│G│A│B│C│D│E│F│G│A│B│  │                            │   │
│    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │  │jk played C-3               │   │
│    │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │  │peewee played A-4           │   │
│    └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘  │jk played E-3               │   │
│                                                               └────────────────────────────┘   │
│                                                                                                │
│                                                                                                │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
harveysanders commented 2 years ago

This is great for initial setup!

How would we calculate the latency between peers? Periodically send pings to each peer and take the average?

hansvb commented 2 years ago

Proposal in protocol-version v0.0.1 is to use the low-level / already implemented in the websocket-stack Ping-Pong-frames. See https://github.com/rog-golang-buddies/rapidmidiex/issues/17

How the clients handle the latency-update-information is up to the clients. They could even draw a graph over time or indeed take an average or I was thinking simply updating when a new value comes in.