Giter VIP home page Giter VIP logo

wave's Introduction

Wave

This app was built for the Science Talent Search Victoria 2022.

UPDATE: This project won a minor bursary prize in the Computer Programs category

Wave is an app for viewing sound in waveforms (commonly known as sound waves) and constructing soundwaves with a visual editor. It also features educational resources and online capabilities such as publication of waves for others to use.

Table of Contents

  1. Concept
  2. Science
  3. Technology
  4. Contributing

Concept

Wave is envisioned as a highly-capable sound editor and sampler. The app is built around the concept of waveforms to represent sound visually. The two key features of the app involve both the recording of sound waves, as well as creating sound waves with the use of a visual editor. Aimed to appeal to the scientific/physics community, 'waves' may be shared online and cloned by other users to allow for the scientific community to analyse the same wave(s) and perform individual experiments.

Screenshots

Science

Sound travels in mechanical waves that are formed from the various frequencies in which particles vibrate.

An example of physical sound waves
Source: https://www.physicsclassroom.com/

A wavelength is the distance which a sound wave must travel to complete one wave cycle (one repetition of the pattern). This can also be thought of as the length of the pattern. There are three basic components that make up a sound wave; frequency, wavelength and amplitude.

A diagram demonstrating the three basic components of a sound wave
Source: https://oceanexplorer.noaa.gov

Wavelength has already been defined above, but what are frequency and amplitude? Frequency is the rate at which a cycle occurs. In the example above, this is 2 cycles per second or 2 Hz. The amplitude of a sound wave is represented by its height. The higher a wave is, the louder it is.

Technology

Wave is built with Flutter.

Setup

  1. Install Flutter/Dart packages
cd ~/path/to/wave/client
flutter pub get
  1. Run the app (ensure simulator/device is connected)
cd ~/path/to/wave/client
flutter run

Contributing

Since this is being built for the Science Talent Search Victoria, it would not be right to accept code contributions at this stage. However, anyone who is willing to help test the app can reach out to me at my email.

wave's People

Contributors

william-herring avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

nonymousmorlock

wave's Issues

Set up basic authentication

Use DRF ApiViews for basic login/logout/register functions. Using base user model from django.contrib.auth.models for now.

oneCycleData is always null

lib/screens/plot_screen.dart

I've finally figured out the issue of why the CustomPainter for drawing the waves isn't drawing anything. That's because it is never actually initialised. So that's one problem solved, but it also helped to reveal that the reason that it isn't initialised is because oneCycleData is always null.

Container(
    height: 100,
    width: double.infinity,
    color: Colors.white54,
    padding: const EdgeInsets.symmetric(
      horizontal: 5,
      vertical: 0,
    ),
    child: oneCycleData != null
        ? CustomPaint(
      size: MediaQuery.of(context).size,
      painter: WavePainter(oneCycleData!),
    )
        : Container()),

As shown in the above code, the WavePainter can't be added to the widget tree because oneCycleData is null. I have no idea why this happens but at least it is a starting point.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.