NewWave is a .NET music generation engine. It uses procedural generation and customized algorithms to create full instrumental songs.
Create a test in the unit test project (there are several examples already there) that calls the RenderAndPlay
function. It will save a MIDI file to the NewWave.Test\bin\Debug
directory and open it up with whatever music player you have set to default.
- NewWave.Core
- Contains an interface for the
Song
class which is implemented by the Generator library - Contains the
Score
class, a "rendered" song that can be saved as a MIDI file - Contains common classes like instrument tracks and
TimeSignature
- Contains an interface for the
- NewWave.Generator
- Where the magic happens. Generates chord progressions, drum grooves, arrangements, etc. and layers it all together
- NewWave.Library
- Contains common functionality: chords, scales, scales
- NewWave.Midi
- Enums for MIDI generation
- NewWave.Test
- As NewWave currently has no executable, unit tests are used for testing and executing all functionality, including full-stack custom song generation.
Sanford.Multimedia.Midi
- Leslie Sanford's MIDI toolkit, used for MIDI file generation
- https://github.com/tebjan/Sanford.Multimedia.Midi
- https://www.codeproject.com/Articles/6228/C-MIDI-Toolkit
Microsoft.Net.Compilers
- NewWave uses C# 6 features, so this is needed so work can be done with versions of Visual Studio that don't natively support it (2013 and older).
master
— "production"-quality code; currently NewWave is nowhere close to being ready for this.develop
— main development branch. Extra work on theNewWave.Core
project should go here. As stable and feature-complete as possible.generator
— active branch for theNewWave.Generator
project, where most of the work is currently happening. Merges back intodevelop
.