ryanlintott / ssvep_keyboard Goto Github PK
View Code? Open in Web Editor NEWThe SSVEP Keyboard works with the icibici hardware. Once connected you should be able to look at keys and it will type them for you.
License: MIT License
The SSVEP Keyboard works with the icibici hardware. Once connected you should be able to look at keys and it will type them for you.
License: MIT License
Make a clear separation between demo mode (using pre-recorded user data) and active mode (using live data from audio jack).
Current "label" is just flickering the bands from their value to zero. Ideally there is a more precise way to label these frequency locations and values.
This will only work with Android and iPhone (not mac or PC) but if the output sample rate can be changed to less than 44100 the FFT window size will increase and the bucket size will shrink and be more precise.
Write instructions for setting up testflight in the readme file.
The Low and High Frequency buttons are great for a demo but they are unnecessary for typical use. Re-arrange the UI and hide these buttons under a toggle. Perhaps the bottom section of the screen should show more of the chart instead? Or just more space for flashing keys?
Create a new mode where the user can look at various flickering patters so that the app can learn the difference trigger values per person (as they may be different). This mode could also potentially set the delay differently depending on how good the connection is.
The Mode button currently toggles between different display modes. Add a UI element that shows which mode we are currently viewing.
White flickering is easier to detect than red and blue.
Create a script to import FFT from the Emotiv Insight
Setup a visual element to show the difference between the peaks for the high and low frequencies. It should have markings for the trigger threshold and another visual element to show how long it's been within that threshold.
Update the keys so that they are sprites instead of UI objects. This will allow them to flicker properly with 60Hz refresh rate.
Subtract the average from the data to scale all the values down equally before normalising
Waiting for a settings menu
Detect ERP (Event Related Potential) signals.
This one would take a while as I have to learn a lot more about ERP first.
Create a dynamic keyboard that does the following:
Using an alternative FFT function will allow for even more granularity in the results by increasing the window size beyond the limits of Unity's built in function.
Build a better and faster way to display the frequency line graph
Create a version of the keyboard with Yes and No keys as an alternative to a full keyboard
I have already decreased the sample rate to try to get more resolution.
This decreased from 44100 to 22050 to 11025 but this is the lower limit.
Instead of altering the sample rate I could instead alter the pitch of the tone we're looking for to spread it out across more frequencies. By increasing the pitch from 1 to 2 I could move the 1kHz tone to 2kHz and therefor the 1,015Hz and 1,020Hz to 2,030Hz and 2,040Hz. As I have up to half the sample rate to work with it would help to spread out these frequencies I'm looking for across more buckets.
create a function to find the peak in any samples around the low and high Hz values. Use a range to help find the peak and make this adjustable.
Turn off detection while key is green and no keys are flashing.
Turn detection back on again once the keys begin flashing.
Create a menu so that users can make adjustments to global app settings.
For example: Hz, length of detection time, etc
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.