Skip to content

mrk21/wav2midi

Repository files navigation

wav2midi

CircleCI

wav2midi is in order to convert sound wave to scale.

Dependencies

Middlewares/Tools

  • C++ Compiler (C++17)
    • AppleClang: N/A
    • Clang: >= 5.0.0
    • GCC: >= 7.0.0
  • CMake: >= 3.10.0
  • gnuplot
  • ffmpeg

Development tools

  • direnv
  • docker: >= 17.x.x
  • docker-compose: >= 1.20.0
  • clang-tidy: >= 5.0.0

Libraries

Setup

Install CMake

CMake is C/C++ build system generator. You can see installation detail to Installing | CMake. Also if you used macOS, then you can install by homebrew:

$ brew install cmake

Install Boost

Boost is C++ pre-standard library. You can see installation detail to Boost Getting Started on Unix Variants - 1.67.0. Also if you used macOS, then you can install by homebrew:

$ brew install boost

Install libsndfile

libsndfile is a C library for reading and writing sound files containing sampled audio data. You can see instalation detail to libsndfile. Also if you used macOS, then you can install by homebrew:

$ brew install libsndfile

Install bandit

bandit is C++11 testing framework like RSpec. Its installation works are nothing, because it is executed automatically on build.

Initialize project

$ mkdir gen
$ cd gen
$ cmake -DCMAKE_CXX_COMPILER=clang++ -DBUILD_TEST=ON ..

Build

$ cd gen
$ make

Run

Input from file

$ cd gen
$ ./src/main /path/to/sound.wav

Input from microphone(line in)

If you will input from microphone or line in, specify /dev/stdin and use ffmpeg. If you used macOS, enter the command like listed below:

$ cd gen
$ ffmpeg -f avfoundation -i "none:0" -f wav pipe:1 | ./src/main

Refer to:

Test

./test.sh [test_target]

Other

This project coding styles follow C++ Standard Libraries and Boost C++ Libraries basically.

Refer to:

More documentation

About

wav2midi is in order to convert sound wave to scale.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published