-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CCSMB-5: PCM Audio Transmissions over modem #18
base: master
Are you sure you want to change the base?
Conversation
Standards/CCSMB-5.md
Outdated
|
||
## Packet | ||
A packet consists of the following fields in a table: | ||
- buffer: Signed 8-bit PCM @ 48kHz |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might want to elaborate on this later on.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
znepb suggested that that might be a standard as well
This comment was marked as resolved.
This comment was marked as resolved.
There should be a field that uniquely identifies a packet as following this spec. With the addition of that, the field names could be simplified into |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
Should we make clients reject packets from servers with an invalid |
It would create more stability, I'm expecting to expand this someday in another standard so that should be good |
I think we're ready right? |
This comment was marked as off-topic.
This comment was marked as off-topic.
Wait for more feedback. |
Co-authored-by: Erlend <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This feels like a very rough draft of a proper standard. Maybe I'm just picky, but standards should clearly explain every relevant part of the standard, and define strict rules where implementors can quickly determine whether they match or not. There's still a lot of ambiguity here, and as-is describes more of a loose data format to follow instead of a proper end-to-end protocol.
One thing I'm a bit stuck on in general is channel choice - having limited channel choice is a bit weird when we have Rednet able to not only specify (theoretically) infinite server endpoints, but it also doesn't have to worry about channel collisions, as the ID of the computer uniquely identifies the source of the data. A drawback is that by using Rednet, every station in the world will always be sending Rednet messages to every computer using Rednet, which isn't quite desirable. An alternative may be to use the current method, but with the computer ID to identify the server instead.
As for discovery, I propose a broadcast message to query what stations are available/in range. This can work like GPS, where a message is sent on a standardized channel, and all servers reply with their metadata, including channel number (in the reply channel field?). This would enhance this otherwise simple protocol with more user-friendly features. It would also allow users to use the server name to connect, instead of having to remember the specific channel number (imagine having to remember an IP instead of domain name for every site); as well as the ability to have full channel listings and browsers.
I think we're ready right?
Standards should be in the queue for at least a week for all kinks to be worked out by as many people as possible. RFCs take years to pass to make sure that there's been plenty of consensus on every exact detail.
- title: A string that contains the song that is currently being played | ||
- protocol: A string that contains the protocol used | ||
|
||
In order to be compliant the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is worded a bit informally; I'd prefer it to use full sentences in bullet points or an ordered list.
We should also mention RFC 2119 if using keywords like "MUST", "SHOULD", etc.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you write an example, I feel like writing the same In order to be compliant the
in 5 bullet points is a bit redundant
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
I'll work on that once it's pretty much set in stone
I agree |
I honestly don't know if this is fixable over CC, if you compare it to real life, anyone with a Pi can transmit over FM |
Packets are up to 2.7s long, It would take like 6 seconds at max to get a solid connection |
@EmmaKnijn @MCJack123 what if stations broadcasted some information like station name, channel number etc over a specified channel every, say, 15 seconds, and had a specific range of channel IDs that are specified for radio but aren't hard coded? |
I'd rather make it be a request-response system - the client sends a request for servers on a standardized channel, and all servers respond with their names/channel number. Broadcasting to nobody is just wasted CPU time. |
You have a lot of feedback to work with here, and a fair bit of work to do. I would also request that do not make tons of GitHub comments for responding, when you can quote multiple messages in one message. cc @EmmaKnijn I am all for the idea for server discovery. A client sends a message on a specific channel, and all stations reply on that channel with names / channel. I am not sure how I feel about encryption or signing of the radio. Afaik it would take valuable time to verify this before playing the audio? |
Added a bunch of things, feel free to have another look |
Still a lot of unresolved conversations here. Not ready for merge. |
Alright, I iterated again. Feel free to have another look. |
|
||
## Packet | ||
An audio packet consists of the following fields in a table: | ||
- `buffer`: A table that contains up to 8 tables of signed 8-bit PCM @ 48kHz audio |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we index this as
buffer.fr
buffer.fl
buffer.fc
etc...
Here is CCSMB-5, suggestions are welcome!