All Projects β†’ brettbuddin β†’ Musictheory

brettbuddin / Musictheory

Licence: mit
🎡 Music theory concepts in Go.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Musictheory

Giada
Your Hardcore Loop Machine.
Stars: ✭ 903 (+1603.77%)
Mutual labels:  audio, music, midi
Mixxx
Mixxx is Free DJ software that gives you everything you need to perform live mixes.
Stars: ✭ 2,510 (+4635.85%)
Mutual labels:  audio, music, midi
Minibae
The platform-neutral Beatnik Audio Engine, Mini Edition (miniBAE) is an exceptionally mature, well-rounded, and reliable computer music and sound system specially customized for small-footprint and embedded applications.
Stars: ✭ 82 (+54.72%)
Mutual labels:  audio, music, midi
Audiokit
Swift audio synthesis, processing, & analysis platform for iOS, macOS and tvOS
Stars: ✭ 8,827 (+16554.72%)
Mutual labels:  audio, music, midi
Bitmidi.com
🎹 Listen to free MIDI songs, download the best MIDI files, and share the best MIDIs on the web
Stars: ✭ 422 (+696.23%)
Mutual labels:  audio, music, midi
Audiokitsynthone
AudioKit Synth One: Open-Source iOS Synthesizer App
Stars: ✭ 1,258 (+2273.58%)
Mutual labels:  audio, music, midi
Webmidikit
Simplest MIDI Swift library
Stars: ✭ 100 (+88.68%)
Mutual labels:  audio, music, midi
Clubber
Application of music theory in audio reactive visualizations
Stars: ✭ 325 (+513.21%)
Mutual labels:  audio, music, midi
Midiwriterjs
♬ A JavaScript library which provides an API for programmatically generating and creating expressive multi-track MIDI files and JSON objects.
Stars: ✭ 381 (+618.87%)
Mutual labels:  audio, music, midi
Awesome Music Production
A curated list of software, services and resources to create and distribute music.
Stars: ✭ 340 (+541.51%)
Mutual labels:  audio, music, midi
Webaudiofont
Use full GM set of musical instruments to play MIDI and single sounds or effects. Support for reverberation and equaliser. No plugins, no Flash. Pure HTML5 implementation compatible with desktop and mobile browser. See live examples.
Stars: ✭ 600 (+1032.08%)
Mutual labels:  audio, music, midi
Romplayer
AudioKit Sample Player (ROM Player) - EXS24, Sound Font, Wave Player
Stars: ✭ 445 (+739.62%)
Mutual labels:  audio, music, midi
Zrythm
a highly automated and intuitive digital audio workstation - official mirror
Stars: ✭ 703 (+1226.42%)
Mutual labels:  audio, music, midi
Waveform Playlist
Multitrack Web Audio editor and player with canvas waveform preview. Set cues, fades and shift multiple tracks in time. Record audio tracks or provide audio annotations. Export your mix to AudioBuffer or WAV! Project inspired by Audacity.
Stars: ✭ 919 (+1633.96%)
Mutual labels:  audio, music
Pyo
Python DSP module
Stars: ✭ 904 (+1605.66%)
Mutual labels:  audio, music
Blipkit
C library for creating the beautiful sound of old sound chips
Stars: ✭ 23 (-56.6%)
Mutual labels:  audio, music
Jssynth
Make music in your browser with this synthesizer and sequencer
Stars: ✭ 25 (-52.83%)
Mutual labels:  audio, music
Awesome Music
Awesome Music Projects
Stars: ✭ 925 (+1645.28%)
Mutual labels:  audio, midi
Cs.2click
πŸ”Š A Better Audio Router for a Modular System.
Stars: ✭ 7 (-86.79%)
Mutual labels:  audio, music
Intellij Music
Play fancy music based on your keyboard activity in IDE
Stars: ✭ 28 (-47.17%)
Mutual labels:  music, midi

Music Theory

Build Status GoDoc

Explorations in music theory.

Usage

package main

import (
    mt "github.com/brettbuddin/musictheory"
    "github.com/brettbuddin/musictheory/intervals"
)

func main() {
    root := mt.NewPitch(mt.C, mt.Natural, 4)

    root.Name(mt.AscNames) // C4
    root.Freq()            // 261.625565 (Hz)
    root.MIDI()            // 72

    P5 := mt.Perfect(5)   // Perfect 5th
    A4 := mt.Augmented(4) // Augmented 4th

    root.Transpose(P5).Name(mt.AscNames)          // G4
    root.Transpose(A4).Name(mt.AscNames)          // F#4
    root.Transpose(P5.Negate()).Name(mt.AscNames) // F3

    mt.NewScale(root, intervals.Dorian, 1)
    // [C4, D4, Eb4, F4, G4, A4, Bb4]

    mt.NewScale(root, intervals.Mixolydian, 2)
    // [C4, D4, E4, F4, G4, A4, Bb4, C5, D5, E5, F5, G5, A5, Bb5]

    rootPosition := mt.NewChord(root, intervals.DiminishedSeventh)
    // [C4, Eb4, Gb4, A4]

    firstInversion := rootPosition.Invert(1)
    // [C5, Eb4, Gb4, A4]

    secondInversion := rootPosition.Invert(2)
    // [C5, Eb5, Gb4, A4]

    note := mt.NewNote(root, mt.D16) // C4 sixteenth note
    note.Time(mt.D4, 120)            // 125ms (quarter note getting the beat at 120 BPM)
}

ζ₯½γ—みます!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].