Skip to content

Commit

Permalink
Merge branch 'board-support' of https://github.com/Ritika8081/Chords-Web
Browse files Browse the repository at this point in the history
 into reconnection
  • Loading branch information
Amanmahe committed Jan 2, 2025
2 parents 7e8eec1 + e1eb005 commit 38d35fc
Show file tree
Hide file tree
Showing 10 changed files with 1,086 additions and 635 deletions.
37 changes: 34 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
![Chords Default](public/assets/dark/HeroSignalsClean.png)


Chords is an application based on Web Serial connection, you can connect boards like Arduino Uno, Arduino Nano after uploading the ArduinoFirmware.ino code to it, you'll recieve data signals from the board which can be visualized on web using Chords. Users can visualize ECG and EMG signals.
Chords is an application based on Web Serial connection, you can connect [Compatible Boards](https://github.com/upsidedownlabs/Chords-Arduino-Firmware) after uploading the ArduinoFirmware.ino code to it, you'll recieve data signals from the board which can be visualized on web using Chords. Users can visualize ECG and EMG signals.

> [!NOTE]
> Flash Arduino code to your hardware from [Chords Arduino Firmware](https://github.com/upsidedownlabs/Chords-Arduino-Firmware) to use it with Chords.
Expand All @@ -10,7 +10,13 @@ Chords is an application based on Web Serial connection, you can connect boards

- **Connection**: Experience a smooth connection/disconnection with board in single click.
- **Real-time Visualization**: Visualize incoming data without any jitter from the board in real-time.
- **Recording**: Record the signals data and download data in csv file.
- ****Frame Buffer Feature**: View and save up to the last five snapshots of your data. Navigate snapshots using left/right buttons, with channel count adjustments resetting snapshots for the new configuration. Zoom in or out for a closer look!
- **Recording**: Record data indefinitely in CSV format or set a timer to automatically stop recording.
- **Download/Delete**: Manage recorded files efficiently with a popover menu to download or delete individual files from IndexedDB. Additionally, download all files as a ZIP or delete them in one click.
- **Zoom**: Control your view with zoom-in and zoom-out features for both detailed and overall views.
- **Filter**: Enhance biopotential signal quality with intuitive filter controls. Apply filters for EMG, ECG, EOG, and EEG signals using dedicated icons and the master button for all-channel application.
- **Channel**: Plot and view multiple data channels in real-time, each color-coded for easy identification.
- **Disconnect**: Easily terminate the connection to the development board with a simple click for a seamless disconnection process.

## How to use

Expand All @@ -24,7 +30,7 @@ Chords is an application based on Web Serial connection, you can connect boards
8. Click the "download" button to download the recorded data.
9. Click the "Delete" button to delete recorded data.
10. Click the "Plus/Minus" button to increase/decrease channel.
11. Click "Theme" button which is present in navbar to change theme.
11. Click "Filter" button for EMG, ECG, EOG and EEG filters with muscle, heart, eye and brain icons or master buttons for all channels. You can apply 50Hz or 60Hz filter to individual or all channel.
12. Click the "Disconnect" button to terminate the connection with the Arduino and stop the data stream.

## Technologies Used
Expand All @@ -40,6 +46,31 @@ Chords is an application based on Web Serial connection, you can connect boards

- [Vendors](src/components/vendors.ts) list for board name and there vendor id are taken from [Stackblitz](https://stackblitz.com/edit/typescript-web-serial?file=vendors.ts) created by [William Grasel](https://github.com/willgm)

## Icons Used
- [Lucide React](https://lucide.dev/guide/packages/lucide-react)

## Roadmap for upcoming update

- [X] **Data Filtering** : We will be adding bio-potential signal filtering options which includes 50/60 Hz notch filter to remove AC interference noise and highpass/lowpass remove artefacts from ECG, Emg ,Eog and EEg. Under filters, we will be adding different highpass and lowpass filters for specific bio-potential signals this feature will further enhance the user experience to record even more clear biopotential signals.

- [X] **Frame Buffers of data** : We will add Frame Buffer Feature this option to show upto 5 snapshots of length each of 4 seconds, you can now view upto last five snapshots of your data and save them as images.

- **Enhance Recording Experience** : Improve reacording feature
- [X] **Multiple file download support** : We’re excited to enhance your options for downloading recorded data! Currently, you can record a file and choose to save or delete it. Soon, you’ll be able to download multiple files at once and have the flexibility to download or delete individual recorded files as needed.
- [ ] **Improve Recording Functionality** : Resolve delays in updating the canvas count to ensure the downloaded file shows accurate values instantly. Ensure smooth recording performance for durations exceeding 5 minutes without any lag or errors.


- [X] **CSV compatibility with [Chords Python](https://github.com/upsidedownlabs/Chords-Python)** : we will update the CSV data format and file names for both chords-web and chords-python so that you can use csvplotter.py to easily plot the recorded data.

- [X] **Implemented Web-worker for Indexeddb** : We will implement web worker for IndexedDB operations, for better data visualization.

- **Board Support**: Add support for the following boards
- [X] **Arduino Uno R4 WiFi Support**: Add support for Arduino Uno R4 WiFi.
- [X] **Giga R1 Support**: Add support for the Arduino Giga R1 board with its 16-bit ADC, offering a range of 0 to 65,535.
- [X] **Raspberry Pi Pico Support**: Release Raspberry Pi Pico support for Chords. It works seamlessly with the new Heart BioAmp Candy. Share your favorite board in the comments, and we'll aim to include it in future updates.
- [ ] **Arduino Nano Support** Add support for Nano board which supports up to 8 channels.


## Contributors

Thank you for contributing to our project! Your support is invaluable in creating & enhancing Chords-Web and making it even better. 😊
Expand Down
109 changes: 56 additions & 53 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "Chords",
"version": "0.1.0",
"name": "chords",
"version": "2.3.4a",
"private": true,
"scripts": {
"dev": "next dev",
Expand Down Expand Up @@ -38,8 +38,8 @@
"framer-motion": "^11.5.4",
"html2canvas": "^1.4.1",
"jszip": "^3.10.1",
"lucide-react": "^0.383.0",
"next": "14.2.10",
"lucide-react": "^0.460.0",
"next": "14.2.20",
"next-themes": "^0.3.0",
"react": "^18",
"react-dom": "^18",
Expand Down
2 changes: 1 addition & 1 deletion src/app/not-found.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import Link from "next/link";
const FourOFourPage = async () => {
return (
<div className="">
<Navbar />
<Navbar isDisplay={true}/>
<div className="flex flex-col min-h-[85vh] mx-auto justify-center items-center size-full">
<div className="text-center py-10 px-4 sm:px-6 lg:px-8">
<h1 className="text-7xl font-bold sm:text-9xl text-primary">404</h1>
Expand Down
Loading

0 comments on commit 38d35fc

Please sign in to comment.