Giter Club home page Giter Club logo

Comments (4)

kenwheeler avatar kenwheeler commented on July 25, 2024 1

To further expand upon this, I thought about this more as a developer and less as a musician. I think a couple of things need to happen.

Make steps on sequencer

We should be able to do something like this:

<Sequencer
  steps=[
    [0, 127, "c1"]
  ]
>
  <Instrument/>
</Sequencer>

And further:

<Sequencer
  steps=[
    [0, 127, "c1"]
  ]
>
  <MIDIOut channel={8}/>
</Sequencer>

Make instruments

So single oscillator synth tags are basically worthless unless you're making chiptune or something. We need to compose them into patches. Something like:

<Instrument >
  <Synth type="sine"/>
  <Synth type="sawtooth"/>
</Instrument>

Further, this lib shouldn't always loop. There should be a way to design a patch via MIDI in. Imagine this:

<Instrument midiInputChannel={2} >
  <Synth type="sine"/>
  <Synth type="sawtooth"/>
</Instrument>

Where you could play your patches with an external keyboard and have the sound design hot reload!

Arrangement

Arrangements could be top level tags, sequencers for sequencers if you will. Sequencers that are nested would not loop, but instead use a repeat prop to build arrangement bars:

<Arrangement repeat={2} >
  <Sequencer repeat={1} bars={4}/>
  <Sequencer repeat={4} bars={1}/>
</Arrangement>

These could be used to compose full length songs! Or at least longer loops with variety.

from react-music.

kenwheeler avatar kenwheeler commented on July 25, 2024 1

Progress posted here https://github.com/FormidableLabs/react-music/tree/1.0.0

Let me know if I'm crazy

from react-music.

lfittl avatar lfittl commented on July 25, 2024

@kenwheeler Somewhat related question - do you think a refactoring could enable easier state changes, specifically to support re-rendering with changed child props?

My use case is that I have a button outside the react-music world that influences how the sequencers behave (by modifying steps appropriately when state changes).

Right now the props are only read on the initial mount, but not on consecutive rendering runs. Ideally it would keep playing at the same point in time after a state change, but a clean reset would also work.

from react-music.

montao avatar montao commented on July 25, 2024

Glad to see that MIDI is not forgotten. My Roland 808 talks via channel 16 with cubase via a converter. When you have anything MIDI I'll be glad to try it.

from react-music.

Related Issues (20)

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.