-
Notifications
You must be signed in to change notification settings - Fork 238
Scribbletune 1.0.0 alpha.1 (new changes & goals)
1.0.0-alpha.1 is in development mode currently. Some of the major updates are:
- Use Scribbletune and create music for the browser (no more limited to exporting MIDI files from the terminal)
- Tone.js (which is the most excellent wrapper for the WebAudioAPI), is a primary dependency
- Move to Tonal.js for chord & scale generation (hence all transpose related tasks are now handled directly by Tonal)
- Updated pattern language (x and -) to adapt to Tone's Sequence method
- Add ability to create sessions and channels via Scribbletune to provide a interface that helps create a simplified session view like Ableton Live where channels are created with clips within them in columns and rows are available to play clips across all channels for a particular row.
While the documentation gets updated with the newer changes, here is a quick reference for some of the new functionality available:
Scribbletune combines it's own pattern language, Tone's player & instruments and sequence method to create loops. This loop, at the very least, requires a audio sample OR a synth along with a pattern.
Examples:
scribble.clip({
sample: '/path/to/soundfile.wav',
pattern: 'x'
}).start();
or if this was a synth, then
scribble.clip({
synth: 'FMSynth',
pattern: 'x--x'
}).start();
If you'd like to add use a preset for the synth, you can simply provide it in the format EffectName:Preset
scribble.clip({
synth: 'FMSynth:ThinSaws',
pattern: 'x--x'
}).start();
Finally, you can add effects to your clip (in the same format EffectName:Preset
or just EffectName
) in an array:
scribble.clip({
synth: 'FMSynth:ThinSaws',
pattern: 'x--x',
effects: ['Chorus', 'JCReverb:BounceHall']
}).start();
- AMSynth
- DuoSynth
- FMSynth
- MembraneSynth
- MetalSynth
- MonoSynth
- NoiseSynth
- PluckSynth
- PolySynth
- Synth
- AutoFilter
- AutoPanner
- AutoWah
- BitCrusher
- Chebyshev
- Chorus
- Distortion
- FeedbackDelay
- Freeverb
- JCReverb
- Phaser
- PingPongDelay
- PitchShift
- Tremolo
- Vibrato
Scribbletune takes inspiration from Ableton Live's session view which lets you work with multiple channels of sound sources or instruments. It lets you play clips or sequences along a channel or multiple channels across a particular row. You can define a session with all the material you need upfront, like this:
var channel1 = scribble.createSession([
{
sample: '/sounds/kick.wav',
clips: [
{ pattern: 'x--xx' },
{ pattern: 'xx-xx' },
{ pattern: 'xxx' }
]
},
{
sample: '/sounds/bass.wav',
clips: [
{ pattern: 'x--xx' },
{ pattern: 'xx-xx' },
{ pattern: 'xxx' }
]
}
]);
Or, you could just create an empty session and add channels to it later, like this,
var session = scribble.createSession();
var channel1 = session.createChannel({
sample: '/sounds/kick.wav',
clips: [
{ pattern: 'x--xx' },
{ pattern: 'xx-xx' },
{ pattern: 'xxx' }
]
});
var channel2 = session.createChannel({
sample: '/sounds/bass.wav',
clips: [
{ pattern: 'x--xx' },
{ pattern: 'xx-xx' },
{ pattern: 'xxx' }
]
});
Scribbletune lets you assemble patterns or clips in a column. This is called a channel. It has the ability to stop/play multiple musical ideas for the same instrument or sound.
Example
var channel1 = session.createChannel({
sample: '/sounds/kick.wav',
clips: [
{ pattern: 'x--xx' },
{ pattern: 'xx-xx' },
{ pattern: 'xxx' }
]
});