So yeah this is happening.
I'm teaching myself how to do analog to digital processing of sound.
So far i've been able to isolate one sound but not two.
Once I can isolate a differentiating set that is different than silence (in total 3 possible values)
I can begin on the numeric transferance algorithm.
This algorithm will not be based directly on FFT (Fast fourier transform) although depending on my time and reading comprehension I may borrow more than one trick from it if my math skills are up to the task. (they've been improving but not by leaps yet)
So here we go.
The plan:
Create a service mainly for users to plug into (literally)]
Requirements:
You will have to use a splitter cable in your 3ds and you will have to connect both the mic and speaker to a pc.
You will have to install a pc program.
You will have to leave smilebasic running to stay connected.
Limitations would be you can't hear game sound. While connected.
Possibilities:
*An eshop style software downloader for smilebasic programs since we can both save and load programs already.
*User based key system for storing and retrieving keys from the web.
*Non blocking server that allows connected users to utilize it. (Asyncronous packets)
*The ability to finally have a live chat inside a smilebasic game that isn't laggy.
*Yet another (silly) and alternative way to connect to SBS chat (possibly?)
*Item trading or other turn based goodies in smilebasic games.
How feasible is it?
Given that it will be mainly used for GAMES that don't require continuous (streaming) real time updates to stay connected.
Pretty feasible I'm sure.
Consider this player A wants to trade items with player B. Connect packets are exchanged and the handshake is at most going to be about 30 bytes between both players.
30 bytes can be sent fairly fast...
once connected different message packets can be sent in series of less than or equivalent to 3 bytes at a time.
Sending of ASCII characters would only require 2 bytes, the first byte telling the system that a character is coming through.
The message handler would be up to the user to code themselves.
An always on pc server would allow a connected pc to connect, and then the user would have to plug their 3ds cables into the pc headphone and mic slots.
Other possibilities?
If the latency isn't horrible, more than two player or three player games could be possible.
Games that feature rich items and the ability to trade or collect those items could be very feasible.
Something similiar to mystery gift in pokemon where users connect and get a trade.
Server PROVIDED events in SmileBasic games.
Basically on SmileNet there would be a network lay out as such
Network Lay out Proposal:
Spoiler
[]- One dedicated pc running a server.
- A 3ds running smilebasic connects to the server and tells the server through their pc what the ID of this server is.
- The PC server only sends packets meant for the id of the client coming in from other 3ds's.
- If the client ID the user is trying to connect to doesn't exist as a 3ds that is also connected then an error message is displayed.
- This allows more than one network session to run on the same server in an asyncronous way.
- It would be possible to use C# to create new server instances per host ID.
- A 3ds either connects on the pc as a host or client.
- The 3ds plugin for SB would have a handshake built in to confirm that it is connected to the pc client application properly for easier debugging of network issues within it.
- The smilebasic app would also feature a paired optimize feature which lets you adjust your sound volume while audio plays into the mic with different samples to best adjust your data stream and reduce errors or random noise.
- Possible to give the pc client the ability to auto optimize and pair with the 3ds app and get a handshake going with clear audio. and minimal interference using an adaptive algorithm.
- A smilebasic program optimized to do network handshaking, allowing for interpreted audio analog to digital inputs.
- A computer application running on any pc platform to allow hosting.
- A computer application running on any pc platform to allow a client to connect.
- Possibility of more than one server on pc end running (for private or p2p connections).
- PC-END Server Software will probably not be distributed by me.