FormidableLabs/react-music là dự án Frontend trên GitHub, viết chủ yếu bằng JavaScript, với 2.7k sao. Make beats with React!
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
The easiest way to get started is to clone this repo and run npm start. The demo song will be running at http://localhost:3000. You can open up the /demo/index.js file and edit your song there, using the API below as reference.
That said, you can import the primitives yourself and run your own build setup if you want.
Basic Concepts
Song
The first thing you want to do is create a Song component. This is the controller for your entire beat. It takes a tempo prop where you specify a BPM, and an playing prop that configures whether the song should play right away, or wait to press the play button. Set up it like so:
<Song tempo={90}>
</Song>
Sequencer
Your Sequencer's are what you use to define a looping section. They take two props. The first resolution is the resolution of steps in your sequence array. This defaults to 16, which is a sixteenth note. The second is bars which is how many bars the sequencer sequences before it loops. You can have multiple sequencers in your song, and the main Song loop is based upon the sequencer with the largest number of bars. Here is an example:
Once you have a Song and a Sequencer component, you can add instruments to your Sequencer. Lets take a look at how these work:
Instruments
Sampler
The sampler component is used to play audio samples. To use it, you must at very least provide two props, sample and steps.sample is a path to an audio file, and steps is an array of indexes that map to the steps available based upon the resolution and bars props of your sequencer. So if you wanted a 4/4 kick line, you would do this:
You can also provide an array for a step, where the second value is a tuning, from -12 to 12.
Synth
The Synth component is used to create an oscillator and play it on steps, just like the Sampler does. To use it, you must provide two props, type and steps. Valid types are sine, square, triangle and sawtooth. The Synth component also takes an envelope prop, where you can specify your ASDR settings. The shape of the step prop is a bit different for the Synth component, as you must specify an array in the format of [ step, duration, note || [notes] ]. The duration portion specifies duration in steps. The note portion is a string of a musical note and octave like "a4" or "c#1", and for chords, can be an array of the same notes. This would look like:
The Monosynth component is a Synth component, but it only plays one note at a time. It also has a glide prop that specifies portamento length. So if two notes overlap, the monosynth glides up to the next value on that duration. Check out how:
There are a ton of new effects added in 1.0.0. You can compose effect chains by wrapping effects around your instruments. Here is an example of how you would do that:
If you want to define an effects bus, which is a set of effects that multiple instruments can send their output to, this is achieved with the Bus component.
First you want to create a Bus component, and give it an identifier:
<Song tempo={90}>
<Bus id="myBus"/>
</Song>
Next, wrap your bus with the effect chain you want to make available, similarly to the way you would wrap effects around an instrument. You generally want to do this with effects that have wet/dry control, and set the dryLevel to 0:
You know whats bananas? LFO. Thats what. You can use an oscillator to modify properties of your instruments and effects. This is done with the LFO component. Any node that you want to apply LFO to just needs it added as a child. Then you define a connect prop that returns a function that lets you select a parent AudioNode property to oscillate. See the following example.
gain (number) : A number specifying instrument gain
glide (number) : Portamento length for overlapping notes
steps (array) : Array of step arrays for the notes to be played at
steps={[
[0, 2, "a2"]
]}
transpose (number) : Positive or negative number for transposition of notes
type (string) : Oscillator type. Accepts square, triangle, sawtooth & sine
--
<Sampler />
busses (array) : An array of Bus id strings to send output to
detune (number) : A number (in cents) specifying instrument detune
gain (number) : A number specifying instrument gain
sample (string) : Path to an audio file
steps (array) : Array of step indexes for the sample to be played at. Accepts arrays for steps in order to provide a second argument for index based detune (in between -12 & 12).
--
<Synth />
busses (array) : An array of Bus id strings to send output to
envelope (object) : An object specifying envelope settings
transpose (number) : Positive or negative number for transposition of notes
type (string) : Oscillator type. Accepts square, triangle, sawtooth & sine
Effects
<Bitcrusher />
bits (number)
bufferSize (number)
normfreq (number)
--
<Chorus />
bypass (number)
delay (number)
feedback (number)
rate (number)
--
<Compressor />
attack (number)
knee (number)
ratio (number)
release (number)
threshold (number)
--
<Delay />
bypass (number)
cutoff (number)
delayTime (number)
dryLevel (number)
feedback (number)
wetLevel (number)
--
<Filter />
Q (number)
frequency (number)
gain (number)
type (string)
--
<Gain />
amount (number)
--
<MoogFilter />
bufferSize (number)
cutoff (number)
resonance (number)
--
<Overdrive />
algorithmIndex (number)
bypass (number)
curveAmount (number)
drive (number)
outputGain (number)
--
<PingPong />
delayTimeLeft (number)
delayTimeRight (number)
feedback (number)
wetLevel (number)
--
<Reverb />
bypass (number)
dryLevel (number)
highCut (number)
impulse (string)
level (number)
lowCut (number)
wetLevel (number)
Special
<Analyser />
fftSize (number) : FFT Size value
onAudioProcess (function) : Callback function with audio processing data
smoothingTimeConstant (number) : Smoothing time constant
--
<Bus />
gain (number) : A number specifying Bus gain
id (string) : Bus ID
--
<LFO />
connect (function) : LFO property selection function
frequency (number) : LFO frequency
gain (number) : A number specifying LFO gain
type (string) : Oscillator type. Accepts square, triangle, sawtooth & sine
Known Issues & Roadmap
Currently only the 4/4 time signature is supported
Synth presets need to be added
Record/Ouput audio file
Optional working mixing board alongside viz
Sampler sample maps
License
MIT License
Maintenance Status
Archived: This project is no longer maintained by Formidable. We are no longer responding to issues or pull requests unless they relate to security concerns. We encourage interested developers to fork this project and make it their own!
FormidableLabs/react-music thuộc nhóm Frontend trên TopGit, cùng 6 topic GitHub. Trang Trending và Topics liệt kê các repo cùng số sao và cùng ngôn ngữ để so sánh.
Đọc thêm về FormidableLabs/react-music ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/FormidableLabs/react-music là nguồn chính thức.
FormidableLabs/react-music có bao nhiêu sao?
FormidableLabs/react-music có 2.7k sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/FormidableLabs/react-music. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
FormidableLabs/react-music có những chủ đề gì?
GitHub topics của FormidableLabs/react-music: "buses", "instrument", "lfo", "music", "react", "reactjs". TopGit xếp repo vào nhóm Frontend.
FormidableLabs/react-music còn đang phát triển không?
Commit gần nhất trên FormidableLabs/react-music là 6.1 năm trước (theo timestamp GitHub). Repo có 197 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
FormidableLabs/react-music viết bằng ngôn ngữ gì?
FormidableLabs/react-music chủ yếu viết bằng JavaScript. Trường "language" của GitHub dựa trên phần lớn byte ở nhánh mặc định.
Vì sao FormidableLabs/react-music được xếp vào nhóm Frontend?
TopGit xếp FormidableLabs/react-music vào nhóm Frontend dựa trên GitHub topics và mô tả của repo (gắn thẻ: "buses", "instrument", "lfo"). Việc phân loại dựa trên metadata thật của repo, không phải đoán theo cảm tính biên tập.
Đọc đầy đủ README ở tab phía trên.
Muốn nghe thêm một ý kiến về react-music?
Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về react-music.