Skip to content

JakebGutierrez/tune-sort

Repository files navigation

TuneSort

Description

Discover algorithms musically with TuneSort. It transforms sorting steps into harmonious tunes, making learning algorithms engaging and intuitive.

Features

  • Algorithm Visualisation: See how different sorting algorithms organize data in real-time.
  • Musical Interpretation: Each step of the sort is translated into a musical note, creating a melody as the algorithm works through the data.
  • Adjustable Speed: Control the speed of sorting, allowing for a detailed understanding of each step or a quicker overview.
  • Shuffle and Sort: Users can shuffle the dataset and watch as it gets sorted back into order, providing an interactive learning experience.
  • Start/Stop Functionality: Gives users control over the sorting process, allowing them to start or pause the sorting at any time.

How to Use

  1. Starting the Application: Open the application in your browser to see the default visualisation setup.
  2. Shuffling Data: Click the 'Shuffle' button to randomise the data set.
  3. Adjusting Speed: Use the provided slider to adjust the sorting speed to your preference.
  4. Sorting Data: Click the 'Play' button to start the sorting algorithm. You'll hear the corresponding notes as each item is sorted.
  5. Pausing the Sort: Click the 'Stop' button at any time to pause the sorting process.

Installation

To set up TuneSort on your local machine:

  1. Clone the Repository
   git clone https://github.com/JakebGutierrez/tune-sort

This command will clone the repository to your local machine.

  1. Install Dependencies

    Navigate to the cloned directory and run:

  npm install

This will install all the necessary dependencies for TuneSort.

  1. Start the Application

    Once the dependencies are installed, you can start the application with:

  npm run dev

This command will start the application and run it on your local server.

  1. Access TuneSort
  • Open your web browser and go to http://localhost:5173.
  • You should now be able to access and use TuneSort on your local machine.

Technologies Used

  • React.js
  • Vite
  • Tone.js
  • CSS

Future Improvements

  • Additional Sorting Algorithms: Expand the range with more sorting algorithms for varied visual and auditory experiences.

  • Diverse Musical Scales: Introduce a variety of musical scales, enriching the auditory experience of each sorting process.

  • Enhanced Algorithm Statistics: Offer in-depth statistics like time complexity for each algorithm, providing more educational insights.

  • Customisable Sound Options: Allow customisation of sounds for different sorting actions, enhancing user engagement.

  • Jazz Mode: Create a feature where algorithms can 'improvise' over jazz tracks for a unique blend of sorting and musical creativity.

  • Sorting Completion Indicator: Implement visual and auditory cues to indicate the completion of sorting, like a green sweep through the sorted data.

  • Live Key Changes: Enable live key changes during sorting for a dynamic, involved musical experience.

License

This project is open source and available under the MIT License.

Contributing

Contributions to TuneSort are welcome and appreciated. If you're interested in contributing, please follow these steps:

  1. Fork the Repository: Create your own fork of the repo.
  2. Create a Branch: For each new feature or bug fix, create a new branch based on the main branch.
  3. Make Changes: Implement your changes or improvements in your branch.
  4. Test Your Changes: Ensure your changes do not break any existing functionalities.
  5. Submit a Pull Request: Open a pull request from your branch to the main branch of the original repo. Include a clear description of your changes.

Please note that by contributing, you agree that your contributions will be licensed under its MIT License.

Author

Jakeb Gutierrez