Skip to content

Scribbletune 1.0.0 alpha.1 (new changes & goals)

Walmik Deshpande edited this page Jul 1, 2018 · 8 revisions

scribbletune 1.0.0-alpha.1!

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:

clip

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();

Available Synths & Effects (from Tone.js)

Synths
  • AMSynth
  • DuoSynth
  • FMSynth
  • MembraneSynth
  • MetalSynth
  • MonoSynth
  • NoiseSynth
  • PluckSynth
  • PolySynth
  • Synth
Effects
  • AutoFilter
  • AutoPanner
  • AutoWah
  • BitCrusher
  • Chebyshev
  • Chorus
  • Distortion
  • FeedbackDelay
  • Freeverb
  • JCReverb
  • Phaser
  • PingPongDelay
  • PitchShift
  • Tremolo
  • Vibrato

Session

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' }
	]
});

Channel

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' }
	]
});