grey-software / toonin Goto Github PK
View Code? Open in Web Editor NEWTechnology that allows you to tune in to your friends and family in realtime using peer-to-peer sharing.
Home Page: https://toonin.grey.software
License: MIT License
Technology that allows you to tune in to your friends and family in realtime using peer-to-peer sharing.
Home Page: https://toonin.grey.software
License: MIT License
How do users toonin at the moment?
Toonin currently supports tuning in via the web app by having the user enter the room name they want to enter.
How would users toonin via the extension?
I envision the user being able to enter the room name into the popup box that appears when the chrome extension is clicked.
**Would this open a new tab to the toonin web app or tune in on the current tab. **
We could make this configurable in the future, but I would imagine opening a new tab is the feature we're looking for, since you wouldn't want your toonin session to be tied to another tab's lifecycle.
We should look into setting up continuous integration for toonin. Students get Travis CI as a part of their student developer pack.
Implement a distributed streaming system by converting peers of source as hosts depending on the load
chrome extension
We should allow users to copy their toonin room's link to their clipboard.
A cookie associated with a cross-site resource at http://www.toonin.ml/ was set without the SameSite
attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with SameSite=None
and Secure
. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
When streaming audio through data channels, there is a clicking sound that can be heard on the client along with the audio. Between multiple data packets of audio, the audio wave is cut abruptly at a point other than the natural zero crossing leading to a "click" sound.
Refer: http://alemangui.github.io/blog//2015/12/26/ramp-to-value.html
The toonin box currently persists on the DOM of the source stream tab. This is intrusive to the experience of someone using a service such as Youtube or Spotify.
Following chrome extension best practices, we should have our chrome extension's ui persist only as long as the user currently requires it to.
This would likely involve a re-design on the states that the chrome extension can be in as well so that the user sees the appropriate UI when they click the extension.
We should remove the React app from the master branch to reduce clutter.
It is currently difficult to debug the extension because we only see the minified js. We could have an option to build dev and prod versions, with the former not being minified for debugging purposes.
If a user enters toonin.ml/room-name, the web app should automatically toonin to the room with name 'room-name'
Room names with "/" in them messes the call to backend server. For e.g., if room name == "event/room1", the server thinks we're making a "GET" request to the route event/room1 instead of the standard /:roomID dynamic route
The web app currently does not tune in via routes such as /roomName
This is because the app is served statically.
We may have to investigate to see if wrapping our Vue web app with a SSR framework like Nuxt would solve this for us.
recieveChannel.onmessage = function(event) {
if(typeof(event.data) === "string") {
// recieve the offset from the src to compensate for extra data at the start of
// every arraybuffer
firstBufferDur = Number(event.data);
console.log('offset: ' + firstBufferDur);
}
else {
audioContext.decodeAudioData(event.data, function(buffer) {
if(bufferQueue.length < 4) {
bufferQueue.unshift(buffer);
}
else {
bufferQueue.unshift(buffer);
nextBuffer = bufferQueue.pop();
soundSource = audioContext.createBufferSource();
soundSource.buffer = nextBuffer;
// here there is breakup because there is a gap between new buffer playing and old one ending
soundSource.start(audioContext.currentTime + prevBufferDur, firstBufferDur);
prevBufferDur = nextBuffer.duration;
soundSource.connect(soundDest);
tabAudio.srcObject = soundDest.stream;
tabAudio.play();
}
//visualizer();
}, function(error) {
console.log('Audio Decoding failed. Error: ' + String(error));
});
}
}
looks messy, planning to hide some components until its needed.
Clarity for users
have a general sense of how many people are using toonin and session time.
It currently shows the Vue favicon
Toonin's DX could be improved by writing a one command setup script.
Install all reqs
Set IPs in app and ext
Build ext and output folder path
Serve app and output url
Run server
The current readme file on github is outdated
Code looks messy right now. One of the main reasons is because we have global variables scattered all over the code, especially in the background.js file
Let the user know when the app is trying to connect to the room. Update the UI based on what step the app is at starting from searching for room to audio playback
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.