GithubHelp home page GithubHelp logo

iewbgfnydwhrorrsktkdymduzgdwubygdktdjwd / heartbeat Goto Github PK

View Code? Open in Web Editor NEW

This project forked from abudaan/heartbeat

0.0 1.0 0.0 360.54 MB

a javascript MIDI/Audio sequencer for your browser

Home Page: http://abudaan.github.io/heartbeat/

HTML 4.21% JavaScript 94.41% CSS 1.28% Shell 0.07% TypeScript 0.03%

heartbeat's Introduction

heartbeat

Heartbeat is a MIDI/Audio sequencer for your browser. Heartbeat has no GUI. It is intended to be used as an engine behind your application. Heartbeat is set up very flexible so you can make any kind of application on top of it; a game, an online DAW, artistic sites, music science experiments and so on. Read more.

So far heartbeat has been used in 2 MusicFirst projects:

example

Install heartbeat: yarn add heartbeat-sequencer

or: npm i heartbeat-sequencer

import sequencer from 'heartbeat-sequencer';

const init = async () => {
  await sequencer.ready();

  const events = sequencer.util.getRandomNotes({
      minNoteNumber: 60,
      maxNoteNumber: 100,
      minVelocity: 30,
      maxVelocity: 80,
      numNotes: 60
  });
      
  const part = sequencer.createPart();
  part.addEvents(events);

  const song = sequencer.createSong({
    parts: part,
    useMetronome: true
  });

  document.addEventListener('click', () => {   
    if (song.isPlaying) {
      song.pause();
    } else {
      song.play();
    }
  });
}

init();

or:

import sequencer from 'heartbeat-sequencer';

sequencer
.ready()
.then(init);

const init = () => {
  const events = sequencer.util.getRandomNotes({
    minNoteNumber: 60,
    maxNoteNumber: 100,
    minVelocity: 30,
    maxVelocity: 80,
    numNotes: 60
  });
      
  const part = sequencer.createPart();
  part.addEvents(events);

  const song = sequencer.createSong({
    parts: part,
    useMetronome: true
  });

  document.addEventListener('click', () => {   
    if (song.isPlaying) {
      song.pause();
    } else {
      song.play();
    }
  });
}

key features

MIDI
  • create MIDI file from scratch
  • import existing MIDI files
  • save MIDI data to a file (SMF 1.0)
  • record MIDI (only in browsers that support the WebMIDI API or have the Jazz plugin installed)
  • play back MIDI via external hardware, virtual MIDI ports or included softsynths or sample player
  • quantize and fixed length functions
  • keep a history of edit actions very easily
  • set the PPQ value of a file or song
  • support for tempo and time signature changes
  • multiple songs can be loaded and played back at the same time
  • MIDI data can be shared or moved across songs, tracks and parts very easily
  • import MusicXML files (in progress)
Audio
  • volume and panning controller per track
  • volume controller per song and one master volume output with compression
  • channel effects per track: reverb, panning, autopan and more to come
  • record audio directly in your browser
  • save audio recordings as wav, mp3 or base64 file
  • transpose audio (experimental)
Instruments
  • support for multiple velocity layers
  • support for control change events: sustain pedal, volume and panning
  • sustained instruments (like organ, stings, pads)
  • keyscaling for release and panning
  • configurable release duration and envelope type
  • support for .sfz format (up to a certain level)
  • instrument samples can be transposed at runtime (experimental)
  • 12 sample based instruments included for the sample player (570MB of samples)
  • 1 simple sinewave synthesizer included as fallback instrument

More documentation can be found here.

heartbeat's People

Contributors

abudaan avatar

Watchers

 avatar

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.