Code Monkey home page Code Monkey logo

petitmidi's Introduction

PetitMIDI

PetitMIDI is a program to play MML music. MML (Music Macro Language)
is a musical language that can be used to write songs of all types. The
MML used in this app can be copied for use in programs that run on
Petit Computer.

Quick Use

CDEFGAB
These represent basic notes. The length of a note (quarter, eigth, etc.)
can be adjusted for individual notes by including a number after the note.
Notes can also be dotted by adding a period. For example, C4. represents
a C, as a 3/8 note. Notes can be tied together by typing an & between successive notes. Note that the behavior of the tie is based on note length - In Petit Computer, the tie will change pitch if you tie together two notes of different pitches.

N
This plus a number specifies the exact note played, where N60 represents
middle C and each number up or down represents a single half step.
The length of this note is determined by the channel default, and can't be dotted.

R
This represents a rest, where no music is played. This rest can have its
length adjusted, and can be dotted like a regular note.

#+-
Placing a pound (sharp) or plus sign after a note raises it a half step.
Similarly, placing a minus sign after a note lowers it by a half step.

<>
Placing a < increases the octave by 1, so notes play one octave higher
than usual. Placing a > does the opposite, dropping the octave by 1. If "Reverse Octave Marks" is enabled as an option, > increases the octave instead, and < decreases.

T120
Typing a T at the beginning, followed by a number, adjusts the tempo of all following notes.

:0
Typing a colon, followed by a number from 0-7, lets you specify music for
a specific channel in the player. Since the individual tracks are monotonic,
this is one way to play chords, aside from arpeggio.

@0
Typing an @ sign, followed by a number, specifies the instrument to use
for the specified channel. The instruments provided follow the General MIDI specification, with the exception that percussion is done by setting the instrument number to 128/129, allowing any channel to act as a percussion channel. Instruments 144-150 can be used to play square waves at different duty cycles, starting at 12.5% duty on 144, up to 87.5% duty on 150. Instrument 151 is a noise generator.

Unsupported Features

Aside from the limitations of the music player, this app doesn't support:

  • User made waveforms (instrument 255-256 on Petit Computer)
  • Tremolo, Vibrato
  • ADSR envelopes (the current implementation is lacking)
  • Gate Time (Q)
  • Detune
  • Portamento
  • Panning for PSG channels

petitmidi's People

Contributors

kcallend avatar silenthal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

petitmidi's Issues

pls precompile

there is no mono compiler for arch, so i ask,

could you compile and make it a release?

Tempo, and PSG generation

Currently, PSG output is accomplished by opening a wave handle, playing a sound, and closing it after a certain amount of time. Due to the delay in playing MIDI through software vs using waveOut (about 1/10 of a second), all wave plays are delayed by 1/10 of a second, event-wise. Due to the speed of releasing a handle, declaring a new one, and playing a different note, the player crashes when playing a multitude of notes in succession, trying to play a handle in the process of being released, for example.

Help

How do you use it? Sorry if that's a really dumb question.

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.