diff --git a/sound_algo/.claude/skills/adding-synthdef/SKILL.md b/sound_algo/.claude/skills/adding-synthdef/SKILL.md new file mode 100644 index 0000000..f032560 --- /dev/null +++ b/sound_algo/.claude/skills/adding-synthdef/SKILL.md @@ -0,0 +1,118 @@ +--- +name: adding-synthdef +description: Use when the user asks to "add a SynthDef", "create a new instrument", "ajouter un instrument", or names a synthesis technique to package (FM, granular, Karplus-Strong, formant, etc.). Generates a SynthDef under `synth//` (drums, bass, lead, pad, world, master) for instruments, or `fx//` (bus, insert, trick) for effects. The auto-loaders `synth/_index.scd` and `fx/_index.scd` discover new files recursively. Follows the rigid sound_algo convention: standard arg signature (freq/gate/ADSR/amp/pan/scBus/scAmt), `EnvGen.kr(..., doneAction: 2)`, `Pan2.ar` final, `LeakDC.ar` after feedback, `clip` on freq, `tanh` saturation pattern. Forgetting `doneAction: 2` creates Synth zombies that accumulate in RAM until the server crashes. +--- + +# Adding a SynthDef + +## Where to put it + +Pick a directory based on the SynthDef's role. The auto-loader (`_index.scd`) +recursively loads every `.scd` in the tree, so a new file is picked up +automatically without editing any index. + +| Directory | Theme | +| --- | --- | +| `synth/drums/` | Kicks, snares, claps, hats, percs, taiko, tabla | +| `synth/bass/` | Sub bass, FM bass, reese, hooverbass | +| `synth/lead/` | Lead synths, plucks, scratches | +| `synth/pad/` | Warm pads, choirs, strings, drones | +| `synth/world/` | Exotic/world instruments (koto, erhu, didgeridoo, ...) | +| `synth/master/` | Master-bus instruments / utility synths | +| `fx/bus/` | Send-bus FX (reverb, delay, chorus, ...) | +| `fx/insert/` | Insert FX on a single channel | +| `fx/trick/` | Live tricks (freeze, glitch, stutter, ...) | +| `engine.scd` | DO NOT add here -- it's the core, kept stable | + +## Standard arg signature + +Every SynthDef MUST accept these args (with defaults) : + +```supercollider +arg freq = 220, gate = 1, cutoff = 6000, rq = 0.5, + attack = 0.001, decay = 0.04, sustain = 0.0, release = 0.6, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; +``` + +This way the SynthDef is a drop-in replacement in `~melodyInst`, `~kickInst`, etc. + +## Template + +```supercollider +SynthDef(\, { + arg freq = 220, gate = 1, cutoff = 6000, rq = 0.5, + attack = 0.001, decay = 0.04, sustain = 0.0, release = 0.6, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + + // --- 1. Synthesis core (oscillator / noise / sample / ...) ------- + sig = ...; + + // --- 2. Filter (LPF/RLPF/HPF/...) -------------------------------- + sig = LPF.ar(sig, freq.clip(40, 18000)); + + // --- 3. Drive / saturation (preserve gain) ----------------------- + sig = (sig * drive).tanh / drive.sqrt; + + // --- 4. Leak DC if any feedback / waveshaping -------------------- + sig = LeakDC.ar(sig); + + // --- 5. Envelope with doneAction:2 (free node when env ends) ---- + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), + gate, doneAction: 2); + + // --- 6. Sidechain duck (kick -> instrument) --------------------- + duck = 1 - (In.kr(scBus, 1) * scAmt); + + // --- 7. Output : Pan2 stereo ------------------------------------ + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +``` + +## Mandatory invariants + +| Rule | Reason | +| --- | --- | +| `doneAction: 2` on EnvGen.kr | Without it, Synth zombies pile up forever | +| `Pan2.ar(sig, pan)` | Mono `[sig, sig]` breaks the mixer's stereo bus | +| `freq.clip(min, max)` | Unclamped freq -> NaN/Inf at filter | +| `(sig * drive).tanh / drive.sqrt` | Preserves perceived loudness across drive | +| `LeakDC.ar` after feedback | Comb/Karplus need it or DC offset accumulates | +| `In.kr(scBus, 1) * scAmt` | Standard sidechain bus pattern | +| Defaults on EVERY arg | Pdef breaks if any arg is missing | + +## Synthesis recipes + +```supercollider +// Karplus-Strong (plucked string) +exciter = WhiteNoise.ar(0.6) * EnvGen.kr(Env.perc(0.0005, 0.003)); +sig = LeakDC.ar(CombC.ar(exciter, 0.05, freq.reciprocal, 3.0)); + +// FM bell +mod = SinOsc.ar(freq * 1.4) * 200 * EnvGen.kr(Env.perc(0.001, 0.5)); +sig = SinOsc.ar(freq + mod); + +// Granular pad +sig = GrainSin.ar(2, Impulse.kr(20), 0.1, freq, pan); + +// Formant vowel +sig = Formant.ar(freq, formantFreq, bw); +``` + +## After creation + +1. Run `validating-scd-files` on the synthdefs file (P:0 B:0, TLB:1). +2. Test SynthDef compilation : `tests/e2e_04_synthdef_compile.scd` should + still pass. +3. Add the new symbol to the README's instrument list if user-facing. + +## Anti-patterns + +- **No `doneAction: 2`** -> Synth zombies, RAM leak, eventual crash. +- **`Out.ar(0, sig)`** -> mono, breaks panning + stereo mixer. +- **Hardcoded `0.5` for amp** -> not user-controllable. +- **Missing default value for an arg** -> Pdef crashes when scheduling. +- **Duplicating an existing SynthDef name** -> silently overwrites. +- **`SinOsc.ar(freq)` without clip** -> NaN if freq <= 0 from a modulator. diff --git a/sound_algo/.claude/skills/generating-live-wrappers/SKILL.md b/sound_algo/.claude/skills/generating-live-wrappers/SKILL.md new file mode 100644 index 0000000..0d1a1c4 --- /dev/null +++ b/sound_algo/.claude/skills/generating-live-wrappers/SKILL.md @@ -0,0 +1,119 @@ +--- +name: generating-live-wrappers +description: Use when the user asks to "add a live wrapper", "expose dict X to live API", "ajouter une API live", or creates a new dict catalogue (`~newDict = ()`) that needs a live entry. Generates the dual API pattern used across the 5 sound_algo namespaces (`~kk`, `~mm`, `~ff`, `~cc`, `~p`): a dict for catalogue access AND env-direct wrappers for actual calls. Pseudo-method `~dict.key.(args)` is broken in SC (Event passes ~dict as 1st arg, real args lost — empirical bug on SC 3.14.1, see `live/melodies.scd`). Without env-direct wrappers, the live API is unusable. +--- + +# Generating live wrappers + +## The problem this solves + +```supercollider +// FAUX -- args lost, ~m passed as 1st arg +~m.short.(50) + +// OK +~m[\short].(50) // bracket notation +~mShort.(50) // env-direct wrapper (PREFERRED) +~mm.(50) // short alias +``` + +Toute API live exposée via dict DOIT avoir des wrappers env directs, sinon +les utilisateurs se retrouvent à taper de la bracket-notation lourdingue. + +## Reserved-name collisions + +Ces clefs explosent silencieusement à cause de méthodes Object/Server : + +| Réservé | Renommer en | +| --- | --- | +| `.s` | `.short` | +| `.l` | `.long` | +| `.x` | `.xlong` | +| `.e` | `.epic` | +| `.r` | `.rnd` | +| `.p` | `.pat` | +| `.t` | `.tim` | +| `.next` | `.nx` | +| `.prev` | `.pv` | +| `.send` | `.snd` | +| `.set` | `.st` | +| `.tap` | `.tp` | +| `.value` | (interdit -- méthode Function) | + +## Template (1 dict + N wrappers) + +```supercollider +( +// --- Dict catalogue ---------------------------------------------- +~ = ( + \: { |arg1, arg2| /* impl */ }, + \: { |arg1| /* impl */ }, + \list: { ~.keys.asArray.sort.do(_.postln) } +); + +// --- Env-direct wrappers (API utilisateur primaire) ------------- +~ = { |arg1, arg2| ~[\].(arg1, arg2) }; +~ = { |arg1| ~[\].(arg1) }; +~List = { ~[\list].() }; + +// --- Alias court (optionnel) ------------------------------------- +~ = ~; // ~mm = ~mShort, ~kk = ~kkTechno + +"[OK] API ready".postln; +) +``` + +## Naming conventions + +- **Dict** : `~<2-letter-name>` ou `~` (ex: `~m`, `~kk`, `~ff`, `~ch`, `~p`) +- **Wrapper prefix** : same letters + Capitalized key (ex: `~mShort`, `~kkTechno`, `~fxDrop`, `~chIntro`, `~pHat`) +- **Short alias** : single 2-letter env var (ex: `~mm`, `~kk`, `~ff`, `~cc`) + +## Mandatory invariants + +| Rule | Why | +| --- | --- | +| Dict + env-direct wrappers (both) | Pseudo-method broken | +| Dict keys avoid reserved names | Crashes silently otherwise | +| Wrappers call `~dict[\key].()` not `~dict.key.()` | Same trap | +| Print `[OK] API ready` at end | User sees confirmation | +| Wrapped in `(...)` single block | `.load` compatibility | +| Comment in French at top | Project convention | + +## Concrete example (extracted from `live/melodies.scd`) + +```supercollider +( +~m = ( + \short: { |n| (~useMelody !? { ~useMelody.(("m"++n).asSymbol) }) ? nil }, + \long: { |n| (~useMelody !? { ~useMelody.(("ml"++n).asSymbol) }) ? nil }, + \rnd: { ~useMelodyRandom.value }, + \nx: { ~melodyNext.value }, + \pv: { ~melodyPrev.value } +); +~mShort = { |n| ~m[\short].(n) }; +~mLong = { |n| ~m[\long].(n) }; +~mRnd = { ~m[\rnd].() }; +~mNx = { ~m[\nx].() }; +~mPv = { ~m[\pv].() }; +~mm = ~mShort; // alias court +"[OK] melody API ready".postln; +) +``` + +## After generation + +1. Run `validating-scd-files` on the host file (P:0 B:0, TLB depends on file). +2. Add an example block in `01_live.scd` so users can discover the API. +3. Document the 5-namespace mapping at top of `live/CLAUDE.md` if a new + namespace is introduced. + +## Anti-patterns + +- **Dict only, no env-direct wrappers** : forces users into bracket notation, + breaks the `01_live.scd` cheat-sheet pattern. +- **Wrapper using `~dict.key.()`** : same bug it was meant to fix. +- **Reserved-name keys** : `.set`, `.send`, `.tap`, `.value`, `.s`, `.l`, ... +- **No `.list` key** : users can't discover available keys. +- **No `[OK] ... ready` log** : user can't tell if SETUP succeeded. +- **Wrapper that mutates global state without `~reload.value`** : Pdef stale. diff --git a/sound_algo/.claude/skills/registering-jump-section/SKILL.md b/sound_algo/.claude/skills/registering-jump-section/SKILL.md new file mode 100644 index 0000000..b58d086 --- /dev/null +++ b/sound_algo/.claude/skills/registering-jump-section/SKILL.md @@ -0,0 +1,87 @@ +--- +name: registering-jump-section +description: Use when the user asks to "register a section", "add a jump target", "make section X jumpable", or after `scaffolding-track` finishes. Adds `~sections[\][\] = { ... }` to `control/jump.scd` so `~jumpTo.(\, \)` works during live play. The slug must match the timestamp log line in the track Routine. Without this skill, sections written in tracks are NOT jumpable from `01_live.scd` block [8]. +--- + +# Registering a jump section + +## Why this skill exists + +`control/jump.scd` is a 2225-line append-only file that mirrors every section +of every track A-W. Each section is registered as a closure : + +```supercollider +~sections[\A] = ( + \minimal_kick_t5_sub_melody_pad: { + ~bpm = 124; ~kickFreq = 42; ~melodyInst = \pad; + ~melodyNotes = [60,0,0,0, ...]; + }, + \acid_rave_kick_t1_melody_lead_variations: { + ~bpm = 132; ~melodyInst = \lead; ~acidCutoff = 800; + // ... + } +); +``` + +`~jumpTo.(\A, \acid_rave_kick_t1_melody_lead_variations)` then : + +1. Stops `~track` and any pending Routines (`~filterSweep`, `~melodyEvolve`, ...) +2. Calls the closure (mutates `~xxx` vars) +3. Calls `~reload.value` +4. Replays the 8 standard Pdef + +## Inputs to gather + +1. **Track letter** : `\A` to `\W`. +2. **Section slug** : derived from the track's `.postln` log. Convert `"[A 2:00] acid rave kick t1 melody lead variations..."` to `\acid_rave_kick_t1_melody_lead_variations` (lowercase, underscores, no leading article). +3. **Mutation block** : the body of the section in the track Routine, **without** `TempoClock.default.tempo`, `~reload.value`, `Pdef.play` (the `~jumpTo` helper does those). + +## Slug derivation rules + +- Take the description after `[ M:SS] ` and before `...`. +- Lowercase everything. +- Replace spaces and punctuation with `_`. +- Strip leading articles ("the ", "le ", "la "). +- Collapse multiple underscores. + +Examples : + +| Log line | Slug | +| --- | --- | +| `[A 0:00] minimal -- kick T5 sub + melody PAD...` | `\minimal_kick_t5_sub_melody_pad` | +| `[E 3:30] DROP 1 -- growl dubstep + sub kick...` | `\drop_1_growl_dubstep_sub_kick` | +| `[F 2:00] uplifter 138 BPM...` | `\uplifter_138_bpm` | + +## Insertion + +Append to the existing `~sections[\]` entry in `control/jump.scd`. If +`~sections[\]` doesn't exist yet, create it (alphabetical order with +existing tracks). + +```supercollider +~sections[\][\] = { + ~bpm = ; + // ... mutations from the track section, sans TempoClock/Pdef/reload +}; +``` + +## Validation + +After insertion : + +1. Run `validating-scd-files` skill on `control/jump.scd` (P:0 B:0, TLB:1). +2. Test in SC : `~jumpTo.(\, \)` should print `[JUMP] [ ]` + and audibly switch the section. +3. Add a check in `tests/e2e_07_jump.scd` if the section is critical. + +## Anti-patterns + +- **Slug mismatch with track log** : silent jump lookup failure (just prints + `!! [ ] inexistante`). +- **Including `~reload.value` in the closure** : called twice = potential + Pdef glitch. +- **Including `Pdef(...).play` in the closure** : `~jumpTo` already does it. +- **Calling `TempoClock.default.tempo` in the closure** : `~jumpTo` derives + it from `~bpm` if you set `~bpm`. +- **Forgetting to stop a custom Routine** : add it to `~jumpTo`'s stop list + if your section spawns its own (`~filterSweep`, `~melodyEvolve`, etc.). diff --git a/sound_algo/.claude/skills/scaffolding-track/SKILL.md b/sound_algo/.claude/skills/scaffolding-track/SKILL.md new file mode 100644 index 0000000..ebf704a --- /dev/null +++ b/sound_algo/.claude/skills/scaffolding-track/SKILL.md @@ -0,0 +1,98 @@ +--- +name: scaffolding-track +description: Use when the user asks to "create a new track", "ajouter une track", "scaffolder une track X", or names a new track letter (A-W are taken, so X/Y/Z or beyond, OR overwriting an existing letter). Generates `tracks/_.scd` following the strict 23-track convention used in sound_algo: header banner, `~track !? { ~track.stop }` guard, `Routine` with timed sections, `~bpm`/`~kickFreq`/`~melodyInst`/`~melodyNotes` mutations, `TempoClock.default.tempo = ~bpm/60`, `~reload.value`, Pdef list `[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq]`, section logs `[L M:SS] description`, and `.wait` between sections. Forgetting any of these breaks live performance — this skill enforces them. +--- + +# Scaffolding a new track + +## Inputs to gather + +Ask the user (or infer from context): + +1. **Letter** : single uppercase letter. A-W are taken; default to next free letter (X, Y, ...). +2. **Slug** : short snake_case name (`acid_journey`, `dub_techno`, `phonk`). +3. **Sections** : list of `(timestamp, name, BPM, vibe)` tuples. Minimum 3 sections (intro, drop, outro). +4. **Total duration** : sum of section waits. Typical track = 5-10 minutes. +5. **Style** : melody instrument (\pad/\lead/\saw3/\rhodes/\koto/...), kick timbre, scale. + +## Template + +```supercollider +// ===================================================================== +// _.scd +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// PREREQUIS : engine.scd evalue (les SynthDef + helpers doivent exister). +// ===================================================================== + +// --- TRACK : "" <DURATION> minutes ------------------- +// 0:00 <s1> -> M:SS <s2> -> M:SS <s3> -> ... -> M:SS outro +( +~track !? { ~track.stop }; +~track = Routine({ + "[<LETTER> 0:00] <section 1 description>...".postln; + ~bpm = <BPM1>; + ~kickFreq = 42; ~kickPitchAmt = 2.0; ~kickDecay = 0.5; + ~kickAmp = 0.5; ~hatAmp = 0.08; ~melodyAmp = 0.14; + ~melodyInst = \<inst1>; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 1500; + ~melodyNotes = [60,0,0,0, 0,0,0,0, 67,0,0,0, 0,0,0,0, + 60,0,0,0, 0,0,0,0, 65,0,0,0, 0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; + <WAIT1>.wait; + + "[<LETTER> M:SS] <section 2 description>...".postln; + ~bpm = <BPM2>; + // ...mutations... + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + <WAIT2>.wait; + + // ... more sections ... + + "[<LETTER> END] outro".postln; + ~masterFadeOut.(8); +}).play; +) +``` + +## Mandatory invariants + +- `~track !? { ~track.stop }` BEFORE creating the new Routine. Without this, multiple Routines stack up. +- `~reload.value` after **every** mutation of `~xxx` parameters that feed Pdef. +- `TempoClock.default.tempo = ~bpm/60` whenever `~bpm` changes. +- One `.postln` log per section, format `"[<L> M:SS] <description>..."` -- this is parsed by tooling. +- `.wait` after each section (in seconds) -- sum should match total duration. +- Final `~masterFadeOut.(N)` (or stop Pdef explicitly) to avoid hanging Pdef. + +## Variations within a section + +Standard pattern for live mutations every 2-4 seconds inside a section : + +```supercollider +30.do { |k| + if (0.25.coin) { ~acidCutoff = rrand(600, 1400); ~reload.value }; + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, + [~scaleMinorPent, ~scaleDorian].choose); + ~reload.value; + }; + 4.wait; // 30 * 4 = 120s = 2 minutes +}; +``` + +## After scaffolding + +1. Run `validating-scd-files` skill on the new file (P:0 B:0, TLB:N OK for tracks). +2. Optionally use `registering-jump-section` skill to expose sections via `~jumpTo.(\<L>, \<slug>)`. +3. Add the track to `tests/e2e_09_tracks.scd` parse list. + +## Anti-patterns to avoid + +- **Hardcoded path** : never write absolute paths, use `~base`. +- **Section without log** : silent debug nightmare during live. +- **Total duration > 10 min without transition** : auditory fatigue. +- **Mutations without `~reload.value`** : Pdef stays stale, audible disconnect. +- **Reusing an A-W letter** : will overwrite an existing track. diff --git a/sound_algo/.claude/skills/validating-scd-files/SKILL.md b/sound_algo/.claude/skills/validating-scd-files/SKILL.md new file mode 100644 index 0000000..6034746 --- /dev/null +++ b/sound_algo/.claude/skills/validating-scd-files/SKILL.md @@ -0,0 +1,76 @@ +--- +name: validating-scd-files +description: Use when editing or creating any `.scd` file in the sound_algo project. Verifies that parentheses and square brackets are balanced (the project hard-requires P:0 B:0) and, for files loaded via `.load` (00_load.scd, live/_load.scd, palette/*/index.scd, engine.scd, palette/scales.scd), that there is exactly one top-level `(...)` block (TLB:1). The CLAUDE.md mandates this check after every modification — sclang gives parse errors at runtime that are far harder to diagnose than a quick awk balance. +--- + +# Validating `.scd` files + +## When to run + +Run after every edit to a `.scd` file. Mandatory before claiming a task is done. + +## Quick check (one file) + +```bash +awk ' +{ + for (i = 1; i <= length($0); i++) { + c = substr($0, i, 1) + if (c == "(") p++; else if (c == ")") p-- + if (c == "[") b++; else if (c == "]") b-- + # detect top-level "(" at column 1 + if (i == 1 && c == "(") tlb++ + } +} +END { printf "P:%d B:%d TLB:%d\n", p, b, tlb } +' path/to/file.scd +``` + +Acceptance : + +- `P:0 B:0` for **all** `.scd` files +- `TLB:1` **only for files loaded via `.load`** (entry-point files). Multi-block files (tracks/*.scd, examples/*.scd, 01_live.scd) are IDE-only and `TLB:N` is fine there. + +## Files that MUST have TLB:1 + +| File | Reason | +| --- | --- | +| `engine.scd` | Loaded via `00_load.scd` | +| `palette/scales.scd` | Same | +| `palette/melodies/index.scd` | Same | +| `palette/harmonics/index.scd` | Same | +| `palette/rhythm/fills.scd` | Same | +| `live/_load.scd` | Loaded by `01_live.scd` block [0] | +| Any other file referenced by `.load(...)` | + +## Files where TLB:N is OK + +- `tracks/*.scd` (Cmd+Entree per block during live play) +- `examples/*.scd` (tutorials) +- `01_live.scd` (live dashboard, blocks evaluated independently) +- `live/*.scd` except `_load.scd` (SETUP + examples in same file) + +## Whole-project sweep + +```bash +cd /Users/electron/Documents/Projets_Creatifs/sound_algo +for f in $(find . -name '*.scd' -not -path './_archive/*'); do + awk -v f="$f" ' + { for (i=1;i<=length($0);i++) { c=substr($0,i,1) + if (c=="(") p++; else if (c==")") p-- + if (c=="[") b++; else if (c=="]") b-- }} + END { if (p!=0 || b!=0) printf "%s P:%d B:%d\n", f, p, b } + ' "$f" +done +``` + +Output should be empty. Any line printed = file with unbalanced parens/brackets. + +## What this skill does NOT check + +- Semantic correctness (does the code work?) → run `tests/run_all.sh` +- SynthDef compilation → `e2e_04_synthdef_compile.scd` +- Pdef behavior → `e2e_03_reload_guards.scd` +- Notation pseudo-method `~dict.key.()` traps → see `live/CLAUDE.md` + +This skill is **purely lexical**. Pass = parser will at least try to compile. diff --git a/sound_algo/.gitignore b/sound_algo/.gitignore new file mode 100644 index 0000000..959a898 --- /dev/null +++ b/sound_algo/.gitignore @@ -0,0 +1,40 @@ +# Archives historiques (exclues du repo) +_archive/ + +# Caches +.ruff_cache/ +.claude/cache/ + +# Node.js +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.env +.env.local + +# Logs de tests +tests/.logs/ + +# macOS +.DS_Store +.AppleDouble +.LSOverride +._* + +# Editeurs +*.swp +*.swo +*~ +.vscode/ +.idea/ + +# SuperCollider artefacts +*.scsyndef +*.scd~ + +# Debug probes (temporaires, snapshots OSC) +_debug/ + +# Settings Claude Code locaux +.claude/settings.json diff --git a/sound_algo/00_load.scd b/sound_algo/00_load.scd new file mode 100644 index 0000000..5d781af --- /dev/null +++ b/sound_algo/00_load.scd @@ -0,0 +1,320 @@ +// ===================================================================== +// 00_load.scd -- Loader / index du projet +// +// STRUCTURE +// +// setup.scd Verification + init complete +// (~check / ~setupAll / ~setupLive / +// ~ensureLive / ~teardown) +// engine.scd Moteur (SynthDef base + Pdef + sidechain bus) +// synth/ SynthDef instruments (auto-loader _index.scd) +// drums/, bass/, lead/, pad/, world/, master/ +// fx/ SynthDef effets (auto-loader _index.scd) +// bus/, insert/, trick/ +// palette/ +// scales.scd Scales (mineur/dorian/.../hijaz/vietnam) + +// helpers genMelody/mutate/octavate/transpose/ +// retrograde/densify/sparsify/jitter/ +// genAcidNotes/Accents/Slides/genKickPattern/ +// randomTweak (SOURCE UNIQUE) +// melodies/ MODULE melodies (loader = melodies/index.scd) +// helpers.scd stretch/chain/mirror/sequenceUp/callResponse/... +// short.scd ~m1..~m78 (32 pas) +// long.scd ~ml1..~ml30 (64 pas) +// xlong.scd ~mxl1..~mxl15(96 pas) +// epic.scd ~mepic1..~mepic10 (128 pas) +// bank.scd ~melodyBank par genre + selecteurs +// tracks.scd multi-pistes melodiques (~melTrackAdd/On/...) +// harmonics/ MODULE harmonie (loader = harmonics/index.scd) +// helpers.scd genThirdHarmony / genFifthHarmony / genCounter / ... +// presets.scd ~enableHarmony.(\preset) -- 10 presets (SOURCE UNIQUE) +// rhythm/ MODULE rythmes / kicks / percussions +// _index.scd Auto-loader (charge fills/ + sequences/) +// kicks/ 25 patterns + 12 timbres kick (1 fichier/preset) +// percussions/ ~25 patterns clap/perc (1 fichier/preset) +// drum_kits/ 21 kits complets (1 fichier/kit) +// patterns_genre/ 40 patterns signature par genre (1 fichier/preset) +// sequences/ Macros de sequences (~seqIntro/Buildup/Drop...) +// fills/ Snare fill / tom fill +// timbres.scd 26 timbres melodie (L1-L26) +// styles.scd 5 styles complets (Acid Rave, Dub, Hard...) +// chords_progressions.scd ~35 progressions d'accords (auto + ~progXxx) +// fx.scd Riser/sweep/impact/crash/vinyl +// fx_genre.scd Combos FX prets a l'emploi par genre +// tweaks_template.scd Templates de tweaks par genre +// live/ +// _load.scd Mini-loader API live (charge les 5 wrappers) +// kicks.scd WRAPPER ~k / ~kk -- combos kick (pattern+timbre) +// melodies.scd WRAPPER ~m / ~mm -- short/long/xlong/epic + harmonie +// fx.scd WRAPPER ~fx / ~ff -- presets / drop / VCF / LFO +// chains.scd WRAPPER ~ch / ~cc -- intro/drop/breakdown/loops +// patterns.scd WRAPPER ~p -- kits + presets de genre rythmiques +// live.scd Boite a outils live (LFO, VCF, drops, tricks) +// mixer.scd Faders / mute / solo par voie + master +// loops.scd Gestionnaire de boucles / pistes (live) +// fx_bus.scd 9 bus FX reverb/delay/chorus/... + presets +// live_fx_panel.scd PANNEAU FX LIVE tout-en-un (Cmd+Entree par bloc) +// scenes.scd Save / recall etat global (snapshot) +// tweaks.scd Tweaks live (cutoff, drive, mute, sidechain...) +// control/ +// midi.scd Mapping controller MIDI (CC + notes) +// playlist.scd 11 playlists prefefinies + auto-fade +// jump.scd Lance n'importe quelle section de track directement +// tracks/ +// A_acid_journey.scd ... W_dub_techno.scd (23 tracks A->W) +// examples/ Mini-tutoriels Cmd+Entree pas-a-pas (16 fichiers) +// 00_index.scd Catalogue + parcours recommande +// 01_quickstart.scd Premier "Hello, sound_algo" +// 02_first_track.scd Lancer une track autonome +// ... voir examples/00_index.scd +// +// WORKFLOW +// 1. Cmd+Entree sur "CHARGER TOUT" -> tout est charge automatiquement +// (engine + synthdefs + scales + melodies + harmonics + setup +// helpers + boot serveur + live/* + rhythm/fills + sequences + +// jump). Le bloc affiche un ~check.() final pour voir l'etat. +// 2. Lance une track (tracks/*.scd) ou les Pdef (PLAY VIDE / PLAY KICK +// / PLAY DEFAULT plus bas dans ce fichier). +// 3. Cmd+Entree sur ( ~check.() ) a tout moment pour voir l'etat. +// 4. ( ~teardown.() ) pour stopper et liberer proprement. +// +// Pour decouvrir le projet : ouvre examples/00_index.scd et suis le +// parcours pas-a-pas. +// ===================================================================== + + + +// --- BASE PATH (set ~base sans rien charger -- optionnel) ------------ +// Utile si tu veux juste set le chemin avant de Cmd+Entree sur un +// autre bloc. CHARGER TOUT et CHARGER MINIMAL le font deja. +( +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +"~base = ".post; ~base.postln; +) + + +// --- CHARGER TOUT (charge TOUT en un seul Cmd+Entree) ---------------- +// engine + synthdefs + scales + melodies + harmonics + setup helpers, +// puis ~setupAll.() qui charge fx_bus + live + mixer + scenes + loops +// + fills + sequences + jump apres boot serveur, puis ~check.() final. +// +// Ce bloc est AUTONOME : pas besoin d'evaluer BASE PATH avant. +( +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +(~base ++ "engine.scd").load; +(~base ++ "synth/_index.scd").load; +(~base ++ "fx/_index.scd").load; +(~base ++ "palette/scales.scd").load; +(~base ++ "palette/melodies/index.scd").load; +(~base ++ "palette/harmonics/index.scd").load; +(~base ++ "setup.scd").load; // ~check / ~setupAll / ~setupLive / ~teardown +// NOTE : ~setupAll.() est appele par live/_load.scd ci-dessous (qui gere +// l'idempotence via ~setupAll_done). L'appeler ici en plus declenchait +// un DOUBLE BOOT : 1er ~setupAll lance s.waitForBoot async, puis le +// .load de live/_load.scd voit ~setupAll_done = nil et relance ~setupAll +// -> "address in use" + zombie scsynth. Fix : un seul appel via _load. +(~base ++ "live/_load.scd").load; // boot + tous modules + wrappers API live +) + + +// --- CHARGER MINIMAL (engine + synthdefs + scales seulement) --------- +// Pour debugger ou demarrer sans live/mixer/fx. Pas de boot serveur +// automatique, pas de helpers ~check / ~setupAll. +( +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +(~base ++ "engine.scd").load; +(~base ++ "synth/_index.scd").load; +(~base ++ "fx/_index.scd").load; +(~base ++ "palette/scales.scd").load; +) + + +// --- CHARGER ENGINE SEUL (minimum vital) ----------------------------- +( +(~base ++ "engine.scd").load; +) + + +// --- CHARGER SYNTH (tous les SynthDef instruments) ------------------- +( +(~base ++ "synth/_index.scd").load; +) + + +// --- CHARGER FX (tous les SynthDef effets) --------------------------- +( +(~base ++ "fx/_index.scd").load; +) + + +// --- OUVRIR FICHIERS dans l'IDE ------------------------------------- +// Plusieurs blocs cibles : choisis celui dont tu as besoin (Cmd+Entree). +// NB : les fichiers charges via CHARGER TOUT (engine, synthdefs, scales, +// melodies/, harmonics/, rhythm/fills) ne sont PAS proposes ici -- +// leur contenu est interne et tu n'as pas a les editer en live. +// -------------------------------------------------------------------- + +// --- OUVRIR ESSENTIEL LIVE (outils performance + entree examples) ---- +( +var root = if (thisProcess.nowExecutingPath.notNil) { thisProcess.nowExecutingPath.dirname } { "/Users/electron/Documents/Projets_Creatifs/sound_algo" }; +[ + "setup.scd", // ~check / ~setupAll / ~teardown + "live/tweaks.scd", // tweaks live (cutoff/drive/mute/SC) + "live/live_fx_panel.scd", // PANNEAU FX tout-en-un + "live/mixer.scd", // faders / mute / solo / master + "live/scenes.scd", // save / recall snapshots + "palette/rhythm/_index.scd", // ~snareFill / ~tomFill / ~seqPlay (auto) + "control/jump.scd", // sauter dans une section + "examples/00_index.scd", // catalogue tutoriels +].do { |p| Document.open(root +/+ p) }; +) + + +// --- OUVRIR OUTILS LIVE AVANCES (LFO/VCF/loops/FX bus/MIDI) ---------- +( +var root = if (thisProcess.nowExecutingPath.notNil) { thisProcess.nowExecutingPath.dirname } { "/Users/electron/Documents/Projets_Creatifs/sound_algo" }; +[ + "live/live.scd", // LFO / VCF / drops / tricks + "live/loops.scd", // gestionnaire de boucles + "live/fx_bus.scd", // 9 bus FX + presets + tap tempo + "control/midi.scd", // mapping MIDI controller + "control/playlist.scd", // playlists auto-fade +].do { |p| Document.open(root +/+ p) }; +) + + +// --- OUVRIR PALETTES PRESETS (Cmd+Entree sur un preset) -------------- +( +var root = if (thisProcess.nowExecutingPath.notNil) { thisProcess.nowExecutingPath.dirname } { "/Users/electron/Documents/Projets_Creatifs/sound_algo" }; +[ + "palette/styles.scd", + "palette/timbres.scd", + "palette/chords_progressions.scd", + "palette/fx_genre.scd", + "palette/tweaks_template.scd", + "palette/rhythm/_index.scd", // loader recursif fills+sequences + // NB : les presets rythmiques sont eclates en sous-dossiers + // palette/rhythm/{drum_kits,patterns_genre,kicks,percussions,sequences,fills}/ + // 1 fichier = 1 preset Cmd+Entree. Ouvre-les a la demande dans l'IDE. +].do { |p| Document.open(root +/+ p) }; +) + + +// --- OUVRIR TRACKS (23 tracks A->W) ---------------------------------- +( +var root = if (thisProcess.nowExecutingPath.notNil) { thisProcess.nowExecutingPath.dirname } { "/Users/electron/Documents/Projets_Creatifs/sound_algo" }; +PathName(root +/+ "tracks").files + .select { |f| f.extension == "scd" } + .sort { |a, b| a.fileName < b.fileName } + .do { |f| Document.open(f.fullPath) }; +) + + +// --- OUVRIR EXAMPLES (16 tutoriels Cmd+Entree pas-a-pas) ------------- +( +var root = if (thisProcess.nowExecutingPath.notNil) { thisProcess.nowExecutingPath.dirname } { "/Users/electron/Documents/Projets_Creatifs/sound_algo" }; +PathName(root +/+ "examples").files + .select { |f| f.extension == "scd" } + .sort { |a, b| a.fileName < b.fileName } + .do { |f| Document.open(f.fullPath) }; +) + + +// --- OUVRIR TOUT (ancien comportement -- ~60 onglets, lourd) --------- +// A eviter au quotidien -- prefere les blocs cibles ci-dessus. +( +var root = if (thisProcess.nowExecutingPath.notNil) { thisProcess.nowExecutingPath.dirname } { "/Users/electron/Documents/Projets_Creatifs/sound_algo" }; +[ + "engine.scd", + "synth/_index.scd", "fx/_index.scd", + "palette/scales.scd", + "palette/melodies/helpers.scd", "palette/melodies/short.scd", + "palette/melodies/long.scd", "palette/melodies/xlong.scd", + "palette/melodies/epic.scd", "palette/melodies/bank.scd", + "palette/melodies/tracks.scd", + "palette/harmonics/helpers.scd","palette/harmonics/presets.scd", + "palette/rhythm/_index.scd", "palette/fx.scd", +].do { |p| Document.open(root +/+ p) }; +) + + +// --- PLAY VIDE -- demarre les sequencers en silence ------------------ +// Tous les patterns sont vides : tu construis au fur et a mesure. +// Ex : ( ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~reload.value; ) +( +TempoClock.default.tempo = ~bpm / 60; +~kickSteps = (0 ! 16); +~hatSteps = (0 ! 16); +~snareSteps = (0 ! 16); +~clapSteps = (0 ! 16); +~percSteps = (0 ! 16); +~acidNotes = (0 ! 16); +~acidAccents = (0 ! 16); +~acidSlides = (0 ! 16); +~melodyNotes = (0 ! 32); +~harmonyNotes = (0 ! 32); +~reload.value; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).play }; +"=== PLAY VIDE -- ajoute des steps puis ~reload.value ===".postln; +) + + +// --- PLAY KICK -- demarre avec juste un kick 4/4 --------------------- +// Ajoute hat/snare/melody en tweakant les ~xxxSteps puis ~reload.value +( +TempoClock.default.tempo = ~bpm / 60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; +~hatSteps = (0 ! 16); +~snareSteps = (0 ! 16); +~clapSteps = (0 ! 16); +~percSteps = (0 ! 16); +~acidNotes = (0 ! 16); +~acidAccents = (0 ! 16); +~acidSlides = (0 ! 16); +~melodyNotes = (0 ! 32); +~harmonyNotes = (0 ! 32); +~reload.value; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).play }; +"=== PLAY KICK 4/4 ===".postln; +) + + +// --- PLAY DEFAULT -- ancien comportement (kick + hat + snare + acid) - +// Lance avec les patterns par defaut definis dans engine.scd +( +TempoClock.default.tempo = ~bpm / 60; +~reload.value; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).play }; +"=== PLAY DEFAULT ===".postln; +) + + +// --- STOP -- coupe les sequencers (garde le master limiter) ---------- +( +~track !? { ~track.stop }; +~filterSweep !? { ~filterSweep.stop }; +~randomLoop !? { ~randomLoop.stop }; +~melodyEvolve !? { ~melodyEvolve.stop }; +~lRotate !? { ~lRotate.stop }; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) + + +// --- ARRET TOTAL (libere bus + master) ------------------------------- +( +~track !? { ~track.stop }; +~filterSweep !? { ~filterSweep.stop }; +~randomLoop !? { ~randomLoop.stop }; +~melodyEvolve !? { ~melodyEvolve.stop }; +~lRotate !? { ~lRotate.stop }; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; +~masterLim !? { ~masterLim.free; ~masterLim = nil }; +~scBus !? { ~scBus.free; ~scBus = nil }; +"=== ARRET TOTAL ===".postln; +) diff --git a/sound_algo/01_live.scd b/sound_algo/01_live.scd new file mode 100644 index 0000000..81fd72b --- /dev/null +++ b/sound_algo/01_live.scd @@ -0,0 +1,397 @@ +// ===================================================================== +// 01_live.scd -- TABLEAU DE BORD LIVE (Cmd+Entree par bloc) +// +// PREREQUIS : +// 1. 00_load.scd > Cmd+Entree sur "CHARGER TOUT" +// 2. Attends le boot serveur + ~check OK +// 3. Reviens ici, Cmd+Entree sur n'importe quel bloc +// +// API LIVE (wrappers env directs ~xxx -- jamais ~dict.key.()) : +// ~kk kicks ~kk.(\techno) ~kPat / ~kTim / ~kList +// ~mm melodies ~mm.(50) ~mLong / ~mXlong / ~mEpic / ~mRnd / ~mGen +// ~ff fx presets ~ff.(\dub) ~fxDrop / ~fxVcfOn / ~fxLfo / ~fxCut +// ~cc chains ~chDrop.() ~chIntro / ~chBuildup / ~chIntro2drop +// ~p patterns ~pKit.(\dub) ~pGenre.(\trance138) / ~pHat / ~pClap +// +// IMPORTANT : la notation `~dict.key.(args)` NE MARCHE PAS en SC -- +// SC passe l'event ~dict comme 1er arg et perd les vrais args (test +// empirique sur SC 3.14.1, cf Dictionary.sc:549). De plus certaines +// cles courtes ou collisionnant avec methodes Object/Server (s/t/p/e/l, +// set/send/next/prev/tap...) plantent carrement. +// Solutions : wrappers env directs (~kPat, ~mLong...) ou notation +// indexee (~k[\pat].(\amen), ~m[\long].(15)). +// Renommages internes : .p -> .pat, .t -> .tim, .s -> .short, +// .l -> .long, .x -> .xlong, .e -> .epic, .r -> .rnd, .next -> .nx, +// .prev -> .pv, .send -> .snd, .set -> .st, .tap -> .tp. +// ===================================================================== + + +// ===================================================================== +// [0] CHARGEMENT COMPLET (1 seul Cmd+Entree -- engine + boot + live) +// Auto-detecte ~base depuis le chemin de ce fichier. +// ===================================================================== +( +~base = if (thisProcess.nowExecutingPath.notNil) { + thisProcess.nowExecutingPath.dirname ++ "/" +} { + "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/" +}; +(~base ++ "live/_load.scd").load; +) + + +// ===================================================================== +// [1] KICKS -- ~kk +// ===================================================================== +( ~kk.(\techno); ) // 4/4 + rond +( ~kk.(\gabber); ) // dense + distordu +( ~kk.(\dub); ) // one-drop + sub +( ~kk.(\dubstep); ) // half-time + 808 +( ~kk.(\trance); ) // 4/4 punchy +( ~kk.(\hardstyle); ) // hardstyle distordu +( ~kk.(\amen); ) // amen break +( ~kk.(\dnb); ) // drum'n'bass +( ~kk.(\jungle); ) // jungle rapid +( ~kk.(\house); ) // house 4/4 + 909 +( ~kk.(\detroit); ) // detroit + 909 +( ~kk.(\phonk); ) // half-time + 808 +( ~kk.(\afro); ) // afrobeat +( ~kk.(\garage); ) // 2-step +( ~kk.(\triphop); ) // lazy boomy +( ~kk.(\footwork); ) // 160 BPM triple +( ~kk.(\minimal); ) // 1 kick / mesure +( ~kk.(\electro); ) // electro syncope + +// patterns / timbres seuls (variables env directes, pas ~k.pat !) +( ~kPat.(\amen); ) +( ~kPat.(\dense); ) +( ~kPat.(\off); ) // silence kick +( ~kTim.(\808); ) +( ~kTim.(\909); ) +( ~kTim.(\distorded); ) +( ~kList.(); ) + + +// ===================================================================== +// [2] MELODIES -- ~mm + wrappers env directs ~mXxx +// ===================================================================== +// short (32 steps, 78 dispos) +( ~mm.(1); ) // applique m1 +( ~mm.(50); ) // applique m50 +( ~mRnd.(); ) // random short + +// long (64 steps, 30 dispos) +( ~mLong.(1); ) +( ~mLong.(15); ) +( ~mRndLong.(); ) + +// xlong (96 steps, 15 dispos) +( ~mXlong.(1); ) +( ~mRndXlong.(); ) + +// epic (128 steps, 10 dispos) +( ~mEpic.(2); ) +( ~mRndEpic.(); ) + +// par genre +( ~mGen.(\acid); ) +( ~mGen.(\trance); ) +( ~mGen.(\detroit); ) +( ~mGen.(\dnb); ) +( ~mGen.(\dub); ) +( ~mGen.(\oriental); ) +( ~mGen.(\synthwave); ) +( ~mGen.(\phonk); ) + +// navigation +( ~mNx.(); ) // melodie suivante +( ~mPv.(); ) // precedente + +// instrument melody +( ~mInst.(\warmPad); ) +( ~mInst.(\pluck); ) +( ~mInst.(\stab); ) +( ~mInst.(\saw3); ) +( ~mInst.(\fmBell); ) +( ~mInst.(\supersaw); ) +( ~mInst.(\rhodes); ) +( ~mInst.(\guzheng); ) +( ~mInst.(\koto); ) +( ~mInst.(\handpan); ) + +// harmonie +( ~mHarm.(\third); ) // tierce automatique +( ~mHarm.(\fifth); ) +( ~mHarm.(\counter); ) +( ~mHarm.(\bassline); ) +( ~mHarm.(\dubBass); ) +( ~mHarm.(\arp); ) +( ~mHarm.(\chord); ) +( ~mHarm.(\tranceLayer); ) +( ~mHarm.(\cinematic); ) +( ~mHarm.(\off); ) + +( ~mHarmInst.(\subBoom); ) +( ~mHarmInst.(\warmPad); ) + +// tweaks rapides +( ~mAmp.(0.18); ) +( ~mCut.(2500); ) +( ~mCut.(8000); ) +( ~mDrive.(2.5); ) +( ~mOff.(); ) // melody muette +( ~mList.(); ) + + +// ===================================================================== +// [3] FX -- ~ff + wrappers env directs ~fxXxx +// ===================================================================== +// presets (10) +( ~ff.(\dub); ) +( ~ff.(\space); ) +( ~ff.(\trance); ) +( ~ff.(\dubstep); ) +( ~ff.(\retro); ) +( ~ff.(\industrial); ) +( ~ff.(\dream); ) +( ~ff.(\cosmic); ) +( ~ff.(\drone); ) +( ~ff.(\dry); ) + +// sends individuels +( ~fxSnd.(\rev, 0.4); ) +( ~fxSnd.(\dly, 0.3); ) +( ~fxSnd.(\shim, 0.5); ) +( ~fxSt.(\rev, \mix, 0.7); ) +( ~fxSt.(\dly, \delayTime, 0.5); ) + +// freeze reverb +( ~fxFreeze.(1); ) +( ~fxFreeze.(0); ) + +// tricks scéniques +( ~fxDrop.(); ) // build silence -> snareFill -> blast +( ~fxBreakdown.(8); ) // kill rythmique progressif sur dur s +( ~fxBuildup.(8); ) // crescendo (riser + fade in + sweep up) +( ~fxGlitch.(2); ) // bitcrush + stutter + delay courte +( ~fxStutter.(8, 1); ) // gate amp à rateHz pendant dur s +( ~fxFreezeR.(4); ) // reverb freeze + cut sec, retour apres dur +( ~fxTapeStop.(2); ) // ralenti tempo expo -> stop Pdef (dur s) +( ~fxTapeStart.(2); ) // RELANCE apres tapeStop : tempo 0.01 -> courant +( ~fxTapeStart.(2, 2.8); ) // idem mais cible 150 BPM (TempoClock = BPM/60) +( ~fxPlayAll.(); ) // relance instantanee de tous les Pdef sequenceurs +( ~fxTapeRev.(4); ) // riser inverse + filter sweep + freeze rev +( ~fxHandsUp.(); ) // mute kick + boost lead + delay courte + clap +( ~fxJumpCut.(0.5); ) // silence sec dur s puis reprend tout +( ~fxBitCrush.(6, 6000, 1); ) // bitcrush master (bits, sr, dur) +( ~fxRing.(200, 1); ) // ring modulator master (freq, dur) +( ~fxShift.(100, 1); ) // freq shifter master (hz, dur) +( ~fxGran.(2); ) // freeze granulaire master pendant dur s + +// VCF master +( ~fxVcfOn.(\moog, 800, 0.5); ) +( ~fxVcfOn.(\ladder, 1500, 0.7); ) +( ~fxVcfOn.(\formant, 1, 0.3); ) // voyelle 'a' +( ~fxVcfFreq.(2000); ) +( ~fxVcfQ.(0.6); ) +( ~fxVcfSweep.(8000, 200, 8); ) +( ~fxVcfPreset.(\acid); ) +( ~fxVcfOff.(); ) + +// LFO +( ~fxLfo.(\melodyCutoff, 0.5, 1500); ) +( ~fxLfo.(\acidAmp, 4, 0.4); ) +( ~fxLfo.(\kickAmp, 0.3, 0.3); ) +( ~fxLfoStop.(\melodyCutoff); ) +( ~fxLfoStopAll.(); ) + +// shortcuts cutoff/RQ/drive par voie +( ~fxCut.(\mel, 5000); ) +( ~fxCut.(\acid, 1500); ) +( ~fxRq.(\mel, 0.4); ) +( ~fxDrive.(\mel, 2.0); ) + +// master comp / saturation +( ~fxComp.(\glue); ) +( ~fxComp.(\punch); ) +( ~fxComp.(\pump); ) +( ~fxCompOff.(); ) +( ~fxSat.(\tanh, 1.5); ) +( ~fxSat.(\softclip, 1.2); ) +( ~fxSatOff.(); ) + +( ~fxList.(); ) + + +// ===================================================================== +// [4] CHAINS -- wrappers env directs ~chXxx (jamais ~cc.key.()!) +// ===================================================================== +( ~chIntro.(); ) // sequence intro montante +( ~chDrop.(); ) // drop sec +( ~chBreakdown.(); ) +( ~chBuildup.(8); ) // crescendo trance 8 mesures +( ~chOutro.(); ) + +// loops par genre +( ~chTechno.(4); ) +( ~chAcid.(); ) +( ~chDubstep.(); ) +( ~chTrance.(); ) +( ~chDnb.(4); ) +( ~chHiphop.(8); ) +( ~chWorld.(); ) + +// combos prêts +( ~chIntro2drop.(4, 4); ) // intro -> buildup -> drop +( ~chDropToBreak.(8); ) // drop -> breakdown -> drop +( ~chOutroFade.(12); ) // outro + masterFadeOut + +// stop chain en cours +( ~chStop.(); ) +( ~chList.(); ) + + +// ===================================================================== +// [5] PATTERNS rythmiques -- wrappers env directs ~pXxx +// ===================================================================== +// kits complets (16 dispos) +( ~pKit.(\techno); ) +( ~pKit.(\dubstep); ) +( ~pKit.(\dnb); ) +( ~pKit.(\trap); ) +( ~pKit.(\house); ) +( ~pKit.(\hardstyle); ) +( ~pKit.(\jungle); ) +( ~pKit.(\phonk); ) +( ~pKit.(\industrial); ) +( ~pKit.(\hardcore); ) +( ~pKit.(\detroitDeep); ) +( ~pKit.(\lofiHipHop); ) +( ~pKit.(\tribalWorld); ) + +// genres rythmiques (20 dispos) +( ~pGenre.(\hardTechno); ) +( ~pGenre.(\acidHouse); ) +( ~pGenre.(\trance138); ) +( ~pGenre.(\psyTrance); ) +( ~pGenre.(\liquidDnB); ) +( ~pGenre.(\neurofunk); ) +( ~pGenre.(\jungle165); ) +( ~pGenre.(\futureBass); ) +( ~pGenre.(\deepHouse); ) +( ~pGenre.(\techHouse); ) +( ~pGenre.(\industrialV2); ) +( ~pGenre.(\breakcore); ) +( ~pGenre.(\footwork); ) +( ~pGenre.(\idm); ) +( ~pGenre.(\glitchHop); ) + +// elements isoles (noms reels : voir ~pList.()) +( ~pHat.(\off2); ) // offbeat 8th +( ~pHat.(\eighth); ) +( ~pHat.(\sixteen); ) +( ~pHat.(\shuffle); ) +( ~pHat.(\off); ) +( ~pSnare.(\two4); ) +( ~pSnare.(\ghost); ) +( ~pSnare.(\roll); ) +( ~pSnare.(\off); ) +( ~pClap.(\two4); ) +( ~pClap.(\offbeat); ) +( ~pClap.(\trance); ) +( ~pClap.(\dub); ) +( ~pClap.(\off); ) +( ~pPerc.(\rim); ) +( ~pPerc.(\tom); ) +( ~pPerc.(\cowbell); ) +( ~pPerc.(\openHat); ) +( ~pPerc.(\off); ) + +( ~pList.(); ) + + +// ===================================================================== +// [6] MIXER -- ~setVol / ~mute / ~mixPreset +// ===================================================================== +( ~setVol.(\kick, 1.0); ) +( ~setVol.(\acid, 0.7); ) +( ~setVol.(\melody, 0.5); ) +( ~masterVol.(0.5); ) // multiplicateur global +( ~masterVol.(1.0); ) // retour normal +( ~masterFade.(0.3, 4); ) // fade master vers 0.3 en 4s +( ~masterFadeOut.(8); ) // fade out + stop Pdef + +( ~mute.(\acid); ) +( ~unmute.(\acid); ) +( ~solo.(\melody); ) +( ~unsolo.(); ) +( ~mixReset.(); ) + +( ~mixPreset.(\drumsHeavy); ) +( ~mixPreset.(\melodicLead); ) +( ~mixPreset.(\acidFocus); ) +( ~mixPreset.(\breakdown); ) +( ~mixPreset.(\drop); ) +( ~mixPreset.(\dub); ) +( ~mixPreset.(\trance); ) +( ~mixPreset.(\hardcore); ) + +( ~saveMix.(\verseA); ) +( ~loadMix.(\verseA); ) +( ~mixShow.(); ) + + +// ===================================================================== +// [7] SCENES -- snapshot / recall +// ===================================================================== +( ~saveScene.(\drop1); ) +( ~saveScene.(\verseA); ) +( ~saveScene.(\breakdown); ) +( ~loadScene.(\drop1); ) +( ~listScenes.(); ) + + +// ===================================================================== +// [8] JUMP -- ~jumpTo dans n'importe quelle section +// ===================================================================== +( ~jumpTo.('A', 'minimal_kick_t5_sub_melody_pad'); ) +( ~jumpTo.('A', 'acid_rave_kick_t1_melody_lead_variations'); ) +( ~jumpTo.('B', 'kick_4_4_acid_ouvre_kick_t1_melody_pluck'); ) +( ~jumpTo.('E', 'drop_1_growl_dubstep'); ) +( ~jumpTo.('F', 'trance_uplifter_138_bpm'); ) +( ~jumpTo.('W', 'dub_techno_120_bpm'); ) + + +// ===================================================================== +// [9] STATUS / TEARDOWN +// ===================================================================== +( ~check.(); ) // rapport detaille +( ~teardown.(); ) // arret propre + free + + +// ===================================================================== +// [10] PLAY -- demarrer les sequenceurs +// ===================================================================== +( +TempoClock.default.tempo = (~bpm ? 128) / 60; +~kickSteps = (~kickSteps ? (1!16)); +~hatSteps = (~hatSteps ? (0!16)); +~snareSteps = (~snareSteps ? (0!16)); +~clapSteps = (~clapSteps ? (0!16)); +~percSteps = (~percSteps ? (0!16)); +~acidNotes = (~acidNotes ? (0!16)); +~melodyNotes = (~melodyNotes ? (0!32)); +~harmonyNotes = (~harmonyNotes ? (0!32)); +~reload.value; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; +"=== PLAY ===".postln; +) + + +// --- STOP -- coupe les Pdef (garde l'engine) ------------------------- +( +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) diff --git a/sound_algo/CLAUDE.md b/sound_algo/CLAUDE.md new file mode 100644 index 0000000..12d8f53 --- /dev/null +++ b/sound_algo/CLAUDE.md @@ -0,0 +1,41 @@ +# sound_algo — Project Instructions + +Live-coding SuperCollider system. Always communicate in French with the user. + +## Conventions + +- Variables d'environnement `~xxx` minuscules (sinon SC parse comme CLASSNAME) +- Fichiers `.load` doivent avoir UN SEUL bloc top-level `(...)`. Multi-blocs OK pour les fichiers ouverts manuellement dans l'IDE. +- Code commenté en français +- Pas d'emojis sauf demande explicite + +## Architecture + +Voir `README.md` pour l'arborescence et les helpers principaux. + +## Validation + +Après toute modification : + +- `awk` balance des parens/brackets : doit être P:0 B:0 +- Pour les fichiers `.load`-compatibles : un seul bloc top-level (TLB:1) + +## Live Performance Workflow + +1. CHARGER TOUT (00_load.scd) ou bloc [0] de `01_live.scd` +2. **Tableau de bord = `01_live.scd`** (Cmd+Entree par bloc, API ~kk/~mm/~ff/~cc/~p) +3. Lancer une track (tracks/*.scd) ou les Pdef (bloc [10] PLAY) +4. Tweak via `01_live.scd`, `live/tweaks.scd` ou `live/live_fx_panel.scd` +5. Jump entre sections via `control/jump.scd` +6. Sauvegarder l'état avec `~saveScene` (live/scenes.scd) + +## Note sur `-> nil` + +Chaque bloc `( ~xxx.(...); )` retourne nil (le `;` final supprime la valeur). +Une cascade de `-> nil` = evaluation reussie de plusieurs blocs, pas un bug. + +## Tests E2E + +```bash +cd tests && bash run_all.sh +``` diff --git a/sound_algo/README.md b/sound_algo/README.md new file mode 100644 index 0000000..81a7899 --- /dev/null +++ b/sound_algo/README.md @@ -0,0 +1,80 @@ +# sound_algo — SuperCollider Live Coding System + +Generative techno/electronic live performance engine. +90 SynthDefs, 23 playable tracks (A-W), 130+ melodies, 8-voice sequencer with sidechain, FX bus, LFO automation, mixer, loops manager. + +## Quick Start + +1. Open `00_load.scd` in SuperCollider IDE +2. Cmd+Enter on "CHARGER TOUT" block (boots server + loads engine) +3. Open any `tracks/*.scd`, Cmd+Enter to launch +4. Open `live/tweaks.scd` or `live/live_fx_panel.scd` for live tweaks + +## Architecture + +| Path | Contenu | +|---|---| +| `00_load.scd` | Loader + index (entry point) | +| `engine.scd` | Core SynthDefs + Pdef sequencer + ~reload | +| `synth/` | SynthDef instruments (drums/bass/lead/pad/world/master), auto-loaded via `_index.scd` | +| `fx/` | SynthDef effets (bus/insert/trick), auto-loaded via `_index.scd` | +| `palette/scales.scd` | Scales + melody generation helpers | +| `palette/melodies/` | 130+ melody presets + multi-track | +| `palette/harmonics/` | Harmony generators + ~enableHarmony | +| `palette/rhythm/` | Kicks, percussions, drum kits, patterns, sequences, fills | +| `palette/` | timbres, styles, fx_genre, chords_progressions, tweaks_template | +| `live/` | live.scd, mixer.scd, loops.scd, fx_bus.scd, live_fx_panel.scd, scenes.scd, tweaks.scd | +| `control/` | midi.scd, playlist.scd, jump.scd | +| `tracks/` | 23 autonomous tracks (A-W) | +| `examples/` | 16 step-by-step tutorials | +| `tests/` | E2E test suite | + +## Load Order + +CHARGER TOUT charge automatiquement dans l'ordre : +1. engine.scd +2. synth/_index.scd + fx/_index.scd (auto-loaders recursifs) +3. palette/scales.scd (scales + helpers melodiques) +4. palette/melodies/index.scd (130+ melodies + multi-track) +5. palette/harmonics/index.scd (~enableHarmony + helpers) +6. palette/rhythm/fills.scd (snareFill, tomFill) + +À évaluer manuellement (Cmd+Entrée bloc par bloc) : +- live/live.scd SETUP (LFO, VCF, tricks) +- live/mixer.scd SETUP (faders, mute, solo, master) +- live/fx_bus.scd SETUP (FX bus, presets) +- live/loops.scd SETUP (loops manager) +- live/scenes.scd SETUP (snapshot/recall) +- control/midi.scd INIT + MAPPING DEFAULT +- control/jump.scd SETUP JUMP + +## Key Helpers + +| Helper | Fichier | Usage | +|---|---|---| +| `~reload.value` | engine.scd | Rebuild Pdef depuis ~xxx vars | +| `~enableHarmony.(\preset)` | palette/harmonics/presets.scd | 10 presets harmonie | +| `~genMelody.(density, scale, len)` | palette/scales.scd | Generateur melodie aleatoire | +| `~lfoTo.(\param, rate, depth)` | live/live.scd | LFO assignable a toute var | +| `~vcfOn.(\type, freq, q)` | live/live.scd | VCF master (8 types) | +| `~drop`, `~breakdown`, `~buildup` | live/live.scd | Tricks sceniques | +| `~send.(\voie, \fx, amount)` | live/fx_bus.scd | Routing audio vers FX | +| `~fxPreset.(\preset)` | live/fx_bus.scd | 10 combos FX | +| `~loopOn.(\name, source)` | live/loops.scd | Loop manager | +| `~setVol/mute/solo` | live/mixer.scd | Mixer 8 voies | +| `~useMelody.(\m50)` | palette/melodies/bank.scd | Charger melodie nommee | +| `~melodyByGenre.(\acid)` | palette/melodies/bank.scd | Random melodie par genre | +| `~jumpTo.(\letter, \slug)` | control/jump.scd | Saut direct dans une track | +| `~playPlaylist.([...])` | control/playlist.scd | Playlist auto-fade | + +## Running Tests + +```bash +cd tests && bash run_all.sh +``` + +## Requirements + +- SuperCollider 3.13+ +- macOS / Linux (testé sur Darwin) +- Pas de Quarks externes requis (toute la synthèse est en UGens natifs) diff --git a/sound_algo/_migrate/extract_synthdef.py b/sound_algo/_migrate/extract_synthdef.py new file mode 100644 index 0000000..444c42a --- /dev/null +++ b/sound_algo/_migrate/extract_synthdef.py @@ -0,0 +1,140 @@ +""" +Extract SynthDef(\name, { ... }).add; blocks from .scd source files +and route them into synth/ or fx/ subdirectories per classify(). +""" +import re, sys +from pathlib import Path + +CAMEL_TO_SNAKE = re.compile(r'(?<!^)(?=[A-Z])') + +def to_snake(name: str) -> str: + return CAMEL_TO_SNAKE.sub('_', name).lower() + +def classify(name): + # Master / utility + if name in {'masterLim','masterComp','masterSat','vinyl'}: return 'synth/master' + # Trick (FX oneshot) — includes master-bus trick FX + if name in {'riser','sweep','impact','crash','scratch', + 'fxMasterPitch','fxMasterRing','fxMasterFreqShift', + 'fxMasterBitcrush','fxMasterGran'}: return 'fx/trick' + # Drums + if name in {'kick','kickGabber','hat','openHat','snare','snareGated', + 'clap','perc','rim','cowbell','tom','kick808'}: return 'synth/drums' + # Bass + if name in {'acid','reese','reeseDnB','reeseHard','subBoom','fmBass', + 'hooverbass','didgeridoo','bass808'}: return 'synth/bass' + # Pad + if name in {'pad','warmPad','vocalPad','drone','choir','strings'}: return 'synth/pad' + # World + if name in {'koto','erhu','pipa','gong','handpan','guzheng','growl', + 'taiko','tabla','shakuhachi'}: return 'synth/world' + # Lead + if name in {'saw3','lead','squareLead','fmLead','organLead','hardLead', + 'supersaw','stab','pluck','fmBell','rhodes','flute'}: return 'synth/lead' + return None + +# Source-driven fallback +SOURCE_FALLBACK = { + 'live/fx_bus.scd': 'fx/bus', + 'live/live.scd': 'fx/insert', + 'synthdefs/asia.scd': 'synth/world', +} + +def find_synthdefs(src: str): + results = [] + i = 0 + n = len(src) + while i < n: + m = re.search(r'SynthDef\(\\(\w+),', src[i:]) + if not m: + break + name = m.group(1) + start = i + m.start() + depth = 0 + j = start + in_string = False + in_block_comment = False + in_line_comment = False + found = False + while j < n: + ch = src[j] + ch2 = src[j:j+2] + if in_line_comment: + if ch == '\n': in_line_comment = False + elif in_block_comment: + if ch2 == '*/': in_block_comment = False; j += 1 + elif in_string: + if ch == '"' and src[j-1] != '\\': in_string = False + elif ch2 == '//': in_line_comment = True; j += 1 + elif ch2 == '/*': in_block_comment = True; j += 1 + elif ch == '"': in_string = True + elif ch == '{': depth += 1 + elif ch == '}': + depth -= 1 + if depth == 0: + rest = src[j+1:j+30] + add_m = re.match(r'\s*\)\.add\s*;', rest) + if add_m: + end = j + 1 + add_m.end() + block = src[start:end] + results.append((name, block)) + i = end + found = True + break + j += 1 + if not found: + break + return results + + +def route(source_files): + base = Path(".") + for src_path in source_files: + src = Path(src_path).read_text() + blocks = find_synthdefs(src) + print(f"-- {src_path}: {len(blocks)} SynthDef") + for name, block in blocks: + target = classify(name) + if target is None: + # Source-driven fallback + target = SOURCE_FALLBACK.get(src_path) + if target is None: + print(f" [FAIL] no route for \\{name} from {src_path}") + sys.exit(1) + target_dir = base / target + target_dir.mkdir(parents=True, exist_ok=True) + out = target_dir / f"{to_snake(name)}.scd" + wrapped = ( + f"// =====================================================================\n" + f"// {target}/{out.name} -- SynthDef \\{name}\n" + f"// Extracted from {Path(src_path).name} during v2 reorganization.\n" + f"// =====================================================================\n" + f"(\n{block}\n)\n" + ) + out.write_text(wrapped) + print(f" \\{name:25s} -> {out}") + + +def strip(path): + src = Path(path).read_text() + blocks = find_synthdefs(src) + if not blocks: + return + for name, block in reversed(blocks): + idx = src.find(block) + if idx >= 0: + src = src[:idx] + src[idx + len(block):] + Path(path).write_text(src) + print(f" stripped {len(blocks)} SynthDef from {path}") + + +if __name__ == "__main__": + cmd = sys.argv[1] + if cmd == "route": + route(sys.argv[2:]) + elif cmd == "strip": + for p in sys.argv[2:]: + strip(p) + else: + print("Usage: extract_synthdef.py {route|strip} <files...>") + sys.exit(1) diff --git a/sound_algo/_migrate/generate_synthdefs.py b/sound_algo/_migrate/generate_synthdefs.py new file mode 100644 index 0000000..53881e9 --- /dev/null +++ b/sound_algo/_migrate/generate_synthdefs.py @@ -0,0 +1,1687 @@ +#!/usr/bin/env python3 +# coding: utf-8 +""" +generate_synthdefs.py +===================== + +Genere ~19 variants de SynthDef par original sound_algo, repartis dans +synth/{drums,bass,lead,pad,world,master}/. Cible totale : ~1007 nouveaux +fichiers. + +Strategie : templates SuperCollider parametres en chaines Python avec +placeholders {nom}. Pour chaque original, on selectionne un ensemble de +templates + grilles de parametres et on genere des variants. + +Convention sound_algo (stricte) : +- UN SEUL bloc top-level (...) +- Variables minuscules +- Commentaires francais +- Signature standard : freq/gate/attack/decay/sustain/release/amp/pan/scBus/scAmt +- EnvGen.kr(env, gate, doneAction: 2) obligatoire +- Pan2.ar (ou Balance2.ar) en sortie +- LeakDC.ar apres feedback / oscillateurs lourds +- clip sur freq, tanh saturation pattern +- Validation : balance parens P:0 B:0 +""" + +import os +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +SYNTH_DIR = ROOT / "synth" + +# --------------------------------------------------------------------------- +# Validation balance (re-implemente le awk du projet) +# --------------------------------------------------------------------------- +def balance_check(text): + """Retourne (parens, brackets) -- doivent etre 0,0.""" + p = 0 + b = 0 + in_str = False + in_sym_str = False + in_line_comment = False + in_block_comment = 0 + i = 0 + while i < len(text): + c = text[i] + n = text[i + 1] if i + 1 < len(text) else "" + if in_line_comment: + if c == "\n": + in_line_comment = False + i += 1 + continue + if in_block_comment: + if c == "*" and n == "/": + in_block_comment -= 1 + i += 2 + continue + if c == "/" and n == "*": + in_block_comment += 1 + i += 2 + continue + i += 1 + continue + if in_str: + if c == "\\": + i += 2 + continue + if c == '"': + in_str = False + i += 1 + continue + if c == "/" and n == "/": + in_line_comment = True + i += 2 + continue + if c == "/" and n == "*": + in_block_comment = 1 + i += 2 + continue + if c == '"': + in_str = True + i += 1 + continue + if c == "(": + p += 1 + elif c == ")": + p -= 1 + elif c == "[": + b += 1 + elif c == "]": + b -= 1 + i += 1 + return p, b + + +# --------------------------------------------------------------------------- +# Templates SC (chaines avec placeholders {param}) +# --------------------------------------------------------------------------- + +# --- DRUMS ----------------------------------------------------------------- + +KICK_BASIC = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, pitchAmt = {pitch_amt}, pitchTime = {pitch_time}, + decay = {decay}, drive = {drive}, click = {click}, + amp = {amp}, pan = 0, + scBus = 0, scShape = {sc_shape}; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], {curve})); + body = {body_ugen}.ar(pEnv); + sub = SinOsc.ar(freq * {sub_ratio}); + clickSig = HPF.ar(WhiteNoise.ar, {click_hpf}) * + EnvGen.kr(Env.perc(0.0005, {click_decay})); + sig = body + (sub * {sub_amp}) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: {amp_curve}), doneAction: 2); + sig = (sig * drive).{sat}; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}}).add; +) +""" + +KICK_FM = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, ratio = {ratio}, modIndex = {mod_index}, + decay = {decay}, drive = {drive}, click = {click}, + amp = {amp}, pan = 0, + scBus = 0, scShape = {sc_shape}; + var pEnv, mod, car, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * {pitch_amt}, freq], [{pitch_time}], -3)); + mod = SinOsc.ar(pEnv * ratio) * pEnv * modIndex; + car = SinOsc.ar(pEnv + mod); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.005)); + sig = car + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).{sat}; + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}}).add; +) +""" + +KICK_DISTORTED = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, decay = {decay}, drive = {drive}, + fold = {fold}, amp = {amp}, pan = 0, + scBus = 0, scShape = {sc_shape}; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = {body_ugen}.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).{sat}; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}}).add; +) +""" + +SNARE_TPL = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, decay = {decay}, tone = {tone}, noise = {noise}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, {hpf}); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: {curve}), doneAction: 2); + sig = (sig * drive).{sat}; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}}).add; +) +""" + +CLAP_TPL = r"""// {comment} +( +SynthDef(\{name}, {{ + arg decay = {decay}, hpf = {hpf}, drive = {drive}, + amp = {amp}, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, {curve}]), + doneAction: 2); + sig = (n * env * drive).{sat}; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}}).add; +) +""" + +HAT_TPL = r"""// {comment} +( +SynthDef(\{name}, {{ + arg decay = {decay}, hpf = {hpf}, bpf = {bpf}, rq = {rq}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: {curve}), doneAction: 2); + sig = (n * env * drive).{sat}; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}}).add; +) +""" + +TOM_TPL = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, decay = {decay}, drive = {drive}, + amp = {amp}, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * {pitch_amt}, freq], [{pitch_time}], -3)); + sig = {body_ugen}.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).{sat}; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}}).add; +) +""" + +PERC_METALLIC = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, decay = {decay}, ratio = {ratio}, + amp = {amp}, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, {{ |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }}); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}}).add; +) +""" + +# --- BASS ------------------------------------------------------------------ + +BASS_ACID_TB303 = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, accent = 0, slideTime = {slide_time}, + cutoff = {cutoff}, cutoffEnv = {cutoff_env}, rq = {rq}, + envDecay = {env_decay}, ampDecay = {amp_decay}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = {osc_ugen}.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).{sat} / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}}).add; +) +""" + +BASS_FM = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, ratio = {ratio}, modIndex = {mod_index}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat} / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +BASS_REESE = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, detune = {detune}, + cutoff = {cutoff}, rq = {rq}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * {third_factor}))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat} / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +BASS_SUB = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = {osc_ugen}.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat}; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +BASS_WOBBLE = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, lfoRate = {lfo_rate}, lfoDepth = {lfo_depth}, + cutoff = {cutoff}, rq = {rq}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat} / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +# --- LEAD ------------------------------------------------------------------ + +LEAD_SUPERSAW = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, detune = {detune}, mix = {mix}, + cutoff = {cutoff}, rq = {rq}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ({voice_range}).collect {{ |i| + Saw.ar(freq * (1 + (i * detune))) + }}; + center = voices[{center_idx}]; + sides = voices.removeAt({center_idx}); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).{sat} / drive.sqrt, (sig[1] * drive).{sat} / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}}).add; +) +""" + +LEAD_FM = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, ratio = {ratio}, modIndex = {mod_index}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, {mod_decay})); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat} / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +LEAD_PLUCK_KS = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, decayTime = {decay_time}, + cutoff = {cutoff}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, {exciter_decay})); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).{sat}; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +LEAD_PULSE_PWM = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, pwmRate = {pwm_rate}, pwmDepth = {pwm_depth}, + cutoff = {cutoff}, rq = {rq}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat} / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +LEAD_BELL = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill({n_partials}, {{ |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, {bell_decay} * (1 / (i * 0.3 + 1)))) + }}); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat}; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +LEAD_STAB = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, + cutoff = {cutoff}, cutoffEnv = {cutoff_env}, rq = {rq}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([{osc_ugen}.ar(freq), {osc_ugen}.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, {f_env_decay}), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat} / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +# --- PAD ------------------------------------------------------------------- + +PAD_STRING = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, detune = {detune}, + cutoff = {cutoff}, rq = {rq}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill({n_voices}, {{ |i| + Saw.ar(freq * (1 + ((i - {center}) * detune))) + }}) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr({chorus_rate}, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat} / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +PAD_BELL = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 4000); + parts = Mix.fill({n_partials}, {{ |i| + SinOsc.ar(f * (i + 1) * {ratio_step}) * (1 / (i + 1)) * + SinOsc.kr({lfo_rate} + (i * 0.13), i * 0.5).range(0.4, 1.0) + }}); + sig = parts * 0.2; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat}; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +PAD_DRONE = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, detune = {detune}, + cutoff = {cutoff}, rq = {rq}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr({lfo_rate}).range(1 - detune, 1 + detune); + sig = {osc_ugen}.ar(freq * lfo) + + {osc_ugen}.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat} / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +PAD_CHOIR = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, detune = {detune}, + formant1 = {formant1}, formant2 = {formant2}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill({n_voices}, {{ |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }}) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat}; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +# --- WORLD ----------------------------------------------------------------- + +WORLD_PLUCK = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, bendAmt = {bend_amt}, bendTime = {bend_time}, + cutoff = {cutoff}, rq = {rq}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, {exciter_decay})); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, {ks_decay})); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).{sat}; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +WORLD_DRUM_PITCHED = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, + decayTime = {decay_time}, noiseAmt = {noise_amt}, + attack = 0.001, decay = {decay}, sustain = 0, release = 0.05, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * {pitch_amt}, freq], [{pitch_time}], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat}; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}}).add; +) +""" + +WORLD_GONG = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, + attack = 0.005, decay = {decay}, sustain = 0.3, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill({n_partials}, {{ |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, {partial_decay} * (1 + (i * 0.4)))) + }}); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat}; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +WORLD_FLUTE = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, breath = {breath}, + cutoff = {cutoff}, rq = {rq}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr({vib_rate}, 0, {vib_depth}, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat}; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +WORLD_DRONE = r"""// {comment} +( +SynthDef(\{name}, {{ + arg freq = {freq}, gate = 1, formantFreq = {formant_freq}, + attack = {attack}, decay = {decay}, sustain = {sustain}, release = {release}, + drive = {drive}, amp = {amp}, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr({lfo_rate}).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, {lpf_cutoff}); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).{sat}; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}}).add; +) +""" + +# --- MASTER ---------------------------------------------------------------- + +MASTER_COMP = r"""// {comment} +( +SynthDef(\{name}, {{ + arg threshold = {threshold}, ratio = {ratio}, attack = {attack}, release = {release}, + makeup = {makeup}; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}}).add; +) +""" + +MASTER_LIM = r"""// {comment} +( +SynthDef(\{name}, {{ + arg threshold = {threshold}, lookAhead = {look_ahead}, makeup = {makeup}; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}}).add; +) +""" + +MASTER_SAT = r"""// {comment} +( +SynthDef(\{name}, {{ + arg drive = {drive}, mix = {mix}, makeup = {makeup}; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).{sat} / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}}).add; +) +""" + +MASTER_EQ = r"""// {comment} +( +SynthDef(\{name}, {{ + arg lowCut = {low_cut}, highShelfFreq = {high_shelf_freq}, + highShelfGain = {high_shelf_gain}, makeup = {makeup}; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}}).add; +) +""" + +MASTER_WIDEN = r"""// {comment} +( +SynthDef(\{name}, {{ + arg width = {width}, delay = {delay}, makeup = {makeup}; + var sig, l, r, mid, side; + sig = In.ar(0, 2); + mid = (sig[0] + sig[1]) * 0.5; + side = (sig[0] - sig[1]) * 0.5 * width; + side = DelayC.ar(side, 0.01, delay); + l = mid + side; + r = mid - side; + sig = [l, r] * makeup; + ReplaceOut.ar(0, sig); +}}).add; +) +""" + + +# --------------------------------------------------------------------------- +# Recettes par categorie -- dictionnaires (template, base_params, comment) +# --------------------------------------------------------------------------- + +# Helper pour generer N variants d'un original via grille de parametres. +def grid(params_list): + """params_list: liste de dicts. Retourne la liste telle quelle, max N=19.""" + return params_list[:19] + + +# Helper saturation choices +SAT_CHOICES = ["tanh", "softclip", "tanh", "tanh", "softclip"] + +def sat_for(i): + return SAT_CHOICES[i % len(SAT_CHOICES)] + + +# ============================================================================ +# DRUMS (11 originaux) +# ============================================================================ + +def drums_recipes(): + """Pour chaque original drum, 19 variants.""" + out = {} + + # --- kick ------------------------------------------------------------ + kick_variants = [] + freqs = [40, 45, 50, 55, 60, 65, 70, 80] + for i in range(7): + kick_variants.append((KICK_BASIC, { + "freq": freqs[i % len(freqs)], + "pitch_amt": [2.5, 3.0, 3.5, 4.0, 5.0, 2.0, 6.0][i], + "pitch_time": [0.025, 0.035, 0.045, 0.055, 0.02, 0.04, 0.06][i], + "decay": [0.25, 0.3, 0.35, 0.4, 0.5, 0.6, 0.28][i], + "drive": [1.1, 1.3, 1.5, 1.8, 2.0, 1.2, 1.6][i], + "click": [0.15, 0.2, 0.25, 0.3, 0.1, 0.4, 0.18][i], + "amp": 0.5, + "sc_shape": [0.15, 0.18, 0.22, 0.2, 0.16, 0.25, 0.18][i], + "curve": [-2, -3, -4, -3, -2, -5, -3][i], + "body_ugen": ["SinOsc", "SinOsc", "LFTri", "SinOsc", "SinOsc", "LFTri", "SinOsc"][i], + "sub_ratio": [0.5, 0.5, 0.5, 0.25, 0.5, 0.5, 0.33][i], + "sub_amp": [0.3, 0.3, 0.4, 0.5, 0.2, 0.3, 0.35][i], + "click_hpf": [3000, 3500, 4000, 2500, 5000, 2000, 3000][i], + "click_decay": 0.004, + "amp_curve": -3, + "sat": sat_for(i), + }, "variation kick basique")) + fm_drives = [1.0, 1.5, 2.0, 2.5, 1.2, 3.0] + fm_ratios = [0.5, 1.0, 1.5, 2.0, 2.5, 3.0] + fm_indices = [200, 400, 800, 1200, 600, 300] + for i in range(6): + kick_variants.append((KICK_FM, { + "freq": [55, 60, 50, 45, 65, 70][i], + "ratio": fm_ratios[i], + "mod_index": fm_indices[i], + "decay": [0.3, 0.4, 0.35, 0.5, 0.25, 0.6][i], + "drive": fm_drives[i], + "click": [0.2, 0.3, 0.15, 0.25, 0.1, 0.35][i], + "amp": 0.5, + "sc_shape": 0.18, + "pitch_amt": [3.0, 4.0, 2.5, 5.0, 3.5, 6.0][i], + "pitch_time": [0.04, 0.05, 0.03, 0.045, 0.06, 0.035][i], + "sat": sat_for(i), + }, "variation kick FM 2-op")) + for i in range(6): + kick_variants.append((KICK_DISTORTED, { + "freq": [55, 60, 50, 45, 65, 70][i], + "decay": [0.3, 0.35, 0.4, 0.5, 0.25, 0.45][i], + "drive": [3.0, 5.0, 8.0, 12.0, 4.0, 6.0][i], + "fold": [0.6, 0.7, 0.8, 0.9, 0.5, 0.85][i], + "amp": 0.45, + "sc_shape": 0.18, + "body_ugen": ["SinOsc", "LFTri", "Saw", "Pulse", "SinOsc", "LFTri"][i], + "sat": ["tanh", "tanh", "softclip", "tanh", "tanh", "softclip"][i], + }, "variation kick distordu / gabber")) + out["kick"] = kick_variants[:19] + + # --- kick808 --------------------------------------------------------- + k808 = [] + for i in range(19): + k808.append((KICK_BASIC, { + "freq": [35, 40, 45, 50, 55, 60, 38, 42, 48, 52, 36, 44, 46, 54, 58, 62, 39, 41, 43][i], + "pitch_amt": [1.5, 2.0, 2.5, 3.0][i % 4], + "pitch_time": [0.04, 0.05, 0.06, 0.07, 0.08][i % 5], + "decay": [0.4, 0.5, 0.6, 0.8, 1.0, 0.7, 0.9][i % 7], + "drive": [1.0, 1.2, 1.4, 1.6][i % 4], + "click": [0.05, 0.1, 0.15, 0.2][i % 4], + "amp": 0.5, + "sc_shape": 0.22, + "curve": -3, + "body_ugen": "SinOsc", + "sub_ratio": [0.5, 0.5, 0.25, 0.5][i % 4], + "sub_amp": [0.5, 0.6, 0.4, 0.7][i % 4], + "click_hpf": [2500, 3000, 3500][i % 3], + "click_decay": 0.003, + "amp_curve": -4, + "sat": sat_for(i), + }, "variation kick 808 sub deep")) + out["kick808"] = k808 + + # --- kick_gabber ----------------------------------------------------- + kg = [] + for i in range(19): + kg.append((KICK_DISTORTED, { + "freq": [50, 55, 60, 65, 70, 75, 80, 45, 85, 90][i % 10], + "decay": [0.2, 0.25, 0.3, 0.35][i % 4], + "drive": [4, 6, 8, 10, 12, 16, 20][i % 7], + "fold": [0.7, 0.8, 0.9, 0.95][i % 4], + "amp": 0.4, + "sc_shape": 0.16, + "body_ugen": ["LFTri", "Saw", "Pulse", "SinOsc"][i % 4], + "sat": ["tanh", "softclip"][i % 2], + }, "variation gabber stomp distordu")) + out["kick_gabber"] = kg + + # --- snare ----------------------------------------------------------- + sn = [] + for i in range(19): + sn.append((SNARE_TPL, { + "freq": [180, 200, 220, 240, 260, 160, 280, 300][i % 8], + "decay": [0.1, 0.15, 0.2, 0.25, 0.3][i % 5], + "tone": [0.3, 0.4, 0.5, 0.6, 0.2][i % 5], + "noise": [0.5, 0.6, 0.7, 0.8, 0.4][i % 5], + "drive": [1.2, 1.5, 2.0, 2.5][i % 4], + "amp": 0.35, + "hpf": [800, 1000, 1500, 2000, 600][i % 5], + "curve": [-3, -4, -5, -2][i % 4], + "sat": sat_for(i), + }, "variation snare standard")) + out["snare"] = sn + + # --- snare_gated ----------------------------------------------------- + sg = [] + for i in range(19): + sg.append((SNARE_TPL, { + "freq": [200, 220, 240][i % 3], + "decay": [0.05, 0.07, 0.09, 0.11][i % 4], + "tone": [0.4, 0.5][i % 2], + "noise": [0.7, 0.8, 0.9][i % 3], + "drive": [2.0, 3.0, 4.0, 5.0][i % 4], + "amp": 0.4, + "hpf": [1500, 2000, 2500][i % 3], + "curve": [-6, -8, -10][i % 3], + "sat": "tanh", + }, "variation snare gated punchy")) + out["snare_gated"] = sg + + # --- clap ------------------------------------------------------------ + cl = [] + for i in range(19): + cl.append((CLAP_TPL, { + "decay": [0.1, 0.15, 0.2, 0.25, 0.3][i % 5], + "hpf": [800, 1000, 1500, 2000, 1200][i % 5], + "drive": [1.0, 1.3, 1.6, 2.0][i % 4], + "amp": 0.3, + "curve": [-3, -4, -5, -6][i % 4], + "sat": sat_for(i), + }, "variation clap multi-transient")) + out["clap"] = cl + + # --- hat ------------------------------------------------------------- + ht = [] + for i in range(19): + ht.append((HAT_TPL, { + "decay": [0.04, 0.05, 0.06, 0.08, 0.1, 0.07][i % 6], + "hpf": [6000, 7000, 8000, 9000, 10000, 5000][i % 6], + "bpf": [10000, 11000, 12000, 9000, 8000, 13000][i % 6], + "rq": [0.4, 0.5, 0.6, 0.3][i % 4], + "drive": [1.0, 1.2, 1.4][i % 3], + "amp": 0.2, + "curve": [-3, -4, -5, -6][i % 4], + "sat": sat_for(i), + }, "variation hat closed")) + out["hat"] = ht + + # --- open_hat -------------------------------------------------------- + oh = [] + for i in range(19): + oh.append((HAT_TPL, { + "decay": [0.2, 0.3, 0.4, 0.5, 0.25, 0.35][i % 6], + "hpf": [5000, 6000, 7000, 8000][i % 4], + "bpf": [8000, 9000, 10000, 11000][i % 4], + "rq": [0.5, 0.6, 0.7][i % 3], + "drive": [1.0, 1.2][i % 2], + "amp": 0.18, + "curve": [-2, -3, -4][i % 3], + "sat": sat_for(i), + }, "variation open hat plus long")) + out["open_hat"] = oh + + # --- rim ------------------------------------------------------------- + rm = [] + for i in range(19): + rm.append((PERC_METALLIC, { + "freq": [800, 1000, 1200, 1500, 2000, 900, 1100][i % 7], + "decay": [0.03, 0.05, 0.07, 0.04, 0.06][i % 5], + "ratio": [0.4, 0.5, 0.6, 0.7, 0.3][i % 5], + "amp": 0.25, + }, "variation rim shot metallique")) + out["rim"] = rm + + # --- tom ------------------------------------------------------------- + tm = [] + for i in range(19): + tm.append((TOM_TPL, { + "freq": [80, 100, 120, 140, 160, 180, 200, 220, 70, 90][i % 10], + "decay": [0.2, 0.3, 0.4, 0.5][i % 4], + "drive": [1.0, 1.3, 1.6, 2.0][i % 4], + "amp": 0.4, + "pitch_amt": [2.0, 2.5, 3.0, 3.5, 4.0][i % 5], + "pitch_time": [0.03, 0.04, 0.05, 0.06][i % 4], + "body_ugen": ["SinOsc", "LFTri"][i % 2], + "sat": sat_for(i), + }, "variation tom pitched")) + out["tom"] = tm + + # --- cowbell --------------------------------------------------------- + cb = [] + for i in range(19): + cb.append((PERC_METALLIC, { + "freq": [540, 560, 580, 600, 620, 640, 660, 500, 700][i % 9], + "decay": [0.1, 0.15, 0.2, 0.25, 0.3][i % 5], + "ratio": [0.485, 0.5, 0.515, 0.47, 0.53][i % 5], + "amp": 0.25, + }, "variation cowbell partials")) + out["cowbell"] = cb + + return out + + +# ============================================================================ +# BASS (9 originaux) +# ============================================================================ + +def bass_recipes(): + out = {} + + # --- acid ------------------------------------------------------------ + ac = [] + for i in range(19): + ac.append((BASS_ACID_TB303, { + "freq": 110, + "slide_time": [0.005, 0.01, 0.02, 0.04][i % 4], + "cutoff": [400, 600, 800, 1000, 1200, 1500, 500, 700][i % 8], + "cutoff_env": [2000, 2500, 3000, 3500, 4000, 5000, 6000][i % 7], + "rq": [0.1, 0.15, 0.2, 0.25, 0.3, 0.08][i % 6], + "env_decay": [0.2, 0.3, 0.4, 0.5, 0.25, 0.35][i % 6], + "amp_decay": [0.2, 0.25, 0.3, 0.35, 0.4][i % 5], + "drive": [1.5, 2.0, 2.5, 3.0, 3.5, 4.0][i % 6], + "amp": 0.32, + "osc_ugen": ["Saw", "Pulse", "Saw", "Saw"][i % 4], + "sat": sat_for(i), + }, "variation acid TB-303")) + out["acid"] = ac + + # --- bass808 --------------------------------------------------------- + b8 = [] + for i in range(19): + b8.append((BASS_SUB, { + "freq": [40, 45, 50, 55, 60][i % 5], + "attack": [0.001, 0.002, 0.005][i % 3], + "decay": [0.5, 0.8, 1.0, 1.5, 2.0][i % 5], + "sustain": [0.0, 0.1, 0.2][i % 3], + "release": [0.1, 0.3, 0.5, 1.0][i % 4], + "drive": [1.0, 1.2, 1.5, 2.0][i % 4], + "amp": 0.4, + "osc_ugen": ["SinOsc", "LFTri", "SinOsc"][i % 3], + "sat": sat_for(i), + }, "variation 808 bass sub long")) + out["bass808"] = b8 + + # --- fm_bass --------------------------------------------------------- + fmb = [] + for i in range(19): + fmb.append((BASS_FM, { + "freq": 110, + "ratio": [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 0.25][i % 7], + "mod_index": [50, 100, 200, 400, 600, 800, 1000][i % 7], + "attack": 0.003, + "decay": [0.2, 0.3, 0.4, 0.5][i % 4], + "sustain": [0.4, 0.5, 0.6][i % 3], + "release": [0.1, 0.2, 0.3][i % 3], + "drive": [1.2, 1.5, 2.0, 2.5][i % 4], + "amp": 0.3, + "sat": sat_for(i), + }, "variation FM bass 2-op")) + out["fm_bass"] = fmb + + # --- reese ----------------------------------------------------------- + rs = [] + for i in range(19): + rs.append((BASS_REESE, { + "freq": 80, + "detune": [0.005, 0.01, 0.015, 0.02, 0.025, 0.03][i % 6], + "cutoff": [600, 800, 1000, 1200, 1500, 2000][i % 6], + "rq": [0.5, 0.6, 0.7, 0.8][i % 4], + "attack": 0.01, + "decay": [0.2, 0.3, 0.4][i % 3], + "sustain": [0.6, 0.7, 0.8][i % 3], + "release": [0.3, 0.5, 0.8][i % 3], + "drive": [1.5, 2.0, 2.5][i % 3], + "amp": 0.3, + "third_factor": [2.0, 1.5, 2.5, 3.0][i % 4], + "sat": sat_for(i), + }, "variation reese 3 saws detunees")) + out["reese"] = rs + + # --- reese_dn_b ------------------------------------------------------ + rdb = [] + for i in range(19): + rdb.append((BASS_REESE, { + "freq": [55, 60, 65, 70, 75][i % 5], + "detune": [0.015, 0.02, 0.025, 0.03][i % 4], + "cutoff": [400, 500, 600, 800, 1000][i % 5], + "rq": [0.4, 0.5, 0.6][i % 3], + "attack": 0.005, + "decay": [0.15, 0.2, 0.25][i % 3], + "sustain": [0.7, 0.8, 0.9][i % 3], + "release": [0.2, 0.3][i % 2], + "drive": [2.0, 2.5, 3.0, 3.5][i % 4], + "amp": 0.32, + "third_factor": 2.0, + "sat": "tanh", + }, "variation reese DnB neuro")) + out["reese_dn_b"] = rdb + + # --- reese_hard ----------------------------------------------------- + rh = [] + for i in range(19): + rh.append((BASS_REESE, { + "freq": [50, 55, 60, 65][i % 4], + "detune": [0.02, 0.025, 0.03, 0.035][i % 4], + "cutoff": [350, 450, 600, 800][i % 4], + "rq": [0.3, 0.4, 0.5][i % 3], + "attack": 0.003, + "decay": [0.1, 0.15, 0.2][i % 3], + "sustain": [0.8, 0.9][i % 2], + "release": 0.15, + "drive": [3.0, 4.0, 5.0, 6.0][i % 4], + "amp": 0.35, + "third_factor": 2.5, + "sat": "tanh", + }, "variation reese hard distordu")) + out["reese_hard"] = rh + + # --- hooverbass ----------------------------------------------------- + hv = [] + for i in range(19): + hv.append((BASS_REESE, { + "freq": [80, 90, 100, 110][i % 4], + "detune": [0.015, 0.02, 0.025][i % 3], + "cutoff": [800, 1200, 1600, 2000][i % 4], + "rq": [0.5, 0.6, 0.7, 0.8][i % 4], + "attack": 0.005, + "decay": [0.2, 0.3, 0.4][i % 3], + "sustain": [0.7, 0.8, 0.9][i % 3], + "release": [0.3, 0.5][i % 2], + "drive": [1.5, 2.0, 2.5][i % 3], + "amp": 0.28, + "third_factor": [1.5, 2.0, 2.5, 3.0][i % 4], + "sat": sat_for(i), + }, "variation hoover bass")) + out["hooverbass"] = hv + + # --- sub_boom ------------------------------------------------------- + sb = [] + for i in range(19): + sb.append((BASS_SUB, { + "freq": [30, 35, 40, 45, 50][i % 5], + "attack": [0.005, 0.01, 0.02][i % 3], + "decay": [1.0, 1.5, 2.0, 3.0][i % 4], + "sustain": [0.0, 0.1][i % 2], + "release": [0.5, 1.0, 2.0][i % 3], + "drive": [1.0, 1.2, 1.5][i % 3], + "amp": 0.4, + "osc_ugen": ["SinOsc", "LFTri"][i % 2], + "sat": sat_for(i), + }, "variation sub boom long")) + out["sub_boom"] = sb + + # --- didgeridoo ----------------------------------------------------- + dd = [] + for i in range(19): + dd.append((BASS_WOBBLE, { + "freq": [55, 60, 65, 70, 75, 80][i % 6], + "lfo_rate": [3, 4, 5, 6, 8, 10, 12][i % 7], + "lfo_depth": [0.4, 0.5, 0.6, 0.7][i % 4], + "cutoff": [600, 800, 1000, 1200][i % 4], + "rq": [0.4, 0.5, 0.6][i % 3], + "attack": 0.05, + "decay": [0.3, 0.5, 0.8][i % 3], + "sustain": [0.7, 0.8, 0.9][i % 3], + "release": [0.5, 0.8, 1.2][i % 3], + "drive": [1.5, 2.0, 2.5][i % 3], + "amp": 0.3, + "sat": sat_for(i), + }, "variation didgeridoo wobble")) + out["didgeridoo"] = dd + + return out + + +# ============================================================================ +# LEAD (12 originaux) +# ============================================================================ + +def lead_recipes(): + out = {} + + def supersaw_set(label, base_freq=220): + v = [] + ranges = ["(-2..2)", "(-3..3)", "(-4..4)"] + centers = [2, 3, 4] + for i in range(19): + ridx = i % 3 + v.append((LEAD_SUPERSAW, { + "freq": base_freq, + "detune": [0.008, 0.012, 0.016, 0.02, 0.024, 0.028][i % 6], + "mix": [0.3, 0.4, 0.5, 0.6, 0.7][i % 5], + "cutoff": [3000, 4000, 5000, 6000, 7000, 8000][i % 6], + "rq": [0.4, 0.5, 0.6, 0.7][i % 4], + "attack": [0.005, 0.01, 0.02][i % 3], + "decay": [0.1, 0.15, 0.2][i % 3], + "sustain": [0.5, 0.6, 0.7][i % 3], + "release": [0.3, 0.4, 0.5][i % 3], + "drive": [1.0, 1.2, 1.4, 1.6][i % 4], + "amp": 0.16, + "voice_range": ranges[ridx], + "center_idx": centers[ridx], + "sat": sat_for(i), + }, f"variation {label} supersaw")) + return v + + def fm_set(label, base_freq=220): + v = [] + for i in range(19): + v.append((LEAD_FM, { + "freq": base_freq, + "ratio": [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 0.25][i % 8], + "mod_index": [50, 100, 200, 300, 500, 700, 1000][i % 7], + "mod_decay": [0.05, 0.1, 0.2, 0.5, 1.0][i % 5], + "attack": [0.005, 0.01, 0.02][i % 3], + "decay": [0.1, 0.2, 0.3][i % 3], + "sustain": [0.4, 0.5, 0.6][i % 3], + "release": [0.2, 0.3, 0.5][i % 3], + "drive": [1.0, 1.2, 1.5][i % 3], + "amp": 0.18, + "sat": sat_for(i), + }, f"variation {label} FM 2-op")) + return v + + def pluck_set(label, base_freq=220): + v = [] + for i in range(19): + v.append((LEAD_PLUCK_KS, { + "freq": base_freq, + "decay_time": [0.5, 1.0, 1.5, 2.0, 2.5, 3.0][i % 6], + "exciter_decay": [0.003, 0.005, 0.008, 0.01][i % 4], + "cutoff": [3000, 4000, 5000, 6000][i % 4], + "attack": 0.001, + "decay": [0.1, 0.2, 0.3][i % 3], + "sustain": [0.0, 0.1][i % 2], + "release": [0.3, 0.5, 0.8][i % 3], + "drive": [1.0, 1.2, 1.5, 2.0][i % 4], + "amp": 0.22, + "sat": sat_for(i), + }, f"variation {label} pluck Karplus-Strong")) + return v + + def pulse_set(label, base_freq=220): + v = [] + for i in range(19): + v.append((LEAD_PULSE_PWM, { + "freq": base_freq, + "pwm_rate": [0.5, 1.0, 2.0, 3.0, 4.0, 6.0][i % 6], + "pwm_depth": [0.1, 0.2, 0.3, 0.4][i % 4], + "cutoff": [3000, 4000, 5000, 6000][i % 4], + "rq": [0.4, 0.5, 0.6][i % 3], + "attack": [0.005, 0.01][i % 2], + "decay": [0.1, 0.2, 0.3][i % 3], + "sustain": [0.5, 0.6, 0.7][i % 3], + "release": [0.3, 0.5][i % 2], + "drive": [1.0, 1.2, 1.5][i % 3], + "amp": 0.18, + "sat": sat_for(i), + }, f"variation {label} pulse PWM")) + return v + + def bell_set(label, base_freq=220): + v = [] + for i in range(19): + v.append((LEAD_BELL, { + "freq": base_freq, + "n_partials": [3, 4, 5, 6, 7][i % 5], + "bell_decay": [0.5, 1.0, 1.5, 2.0, 2.5][i % 5], + "attack": [0.005, 0.01][i % 2], + "decay": [0.2, 0.3, 0.5][i % 3], + "sustain": [0.0, 0.2][i % 2], + "release": [0.5, 1.0, 1.5][i % 3], + "drive": [1.0, 1.2][i % 2], + "amp": 0.2, + "sat": sat_for(i), + }, f"variation {label} bell-like modal")) + return v + + def stab_set(label, base_freq=220): + v = [] + for i in range(19): + v.append((LEAD_STAB, { + "freq": base_freq, + "cutoff": [400, 600, 800, 1000][i % 4], + "cutoff_env": [2000, 3000, 4000, 5000][i % 4], + "f_env_decay": [0.05, 0.1, 0.15, 0.2][i % 4], + "rq": [0.3, 0.4, 0.5][i % 3], + "attack": 0.001, + "decay": [0.05, 0.1, 0.15][i % 3], + "sustain": [0.0, 0.1][i % 2], + "release": [0.1, 0.2][i % 2], + "drive": [1.5, 2.0, 2.5, 3.0][i % 4], + "amp": 0.22, + "osc_ugen": ["Saw", "Pulse"][i % 2], + "sat": sat_for(i), + }, f"variation {label} stab court")) + return v + + out["supersaw"] = supersaw_set("supersaw") + out["saw3"] = supersaw_set("saw3", base_freq=200) + out["lead"] = supersaw_set("lead", base_freq=440) + out["hard_lead"] = supersaw_set("hard_lead", base_freq=330) + out["fm_lead"] = fm_set("fm_lead") + out["fm_bell"] = bell_set("fm_bell", base_freq=440) + out["pluck"] = pluck_set("pluck") + out["square_lead"] = pulse_set("square_lead") + out["organ_lead"] = bell_set("organ_lead", base_freq=220) + out["rhodes"] = bell_set("rhodes", base_freq=330) + out["flute"] = pluck_set("flute_lead", base_freq=440) + out["stab"] = stab_set("stab") + + return out + + +# ============================================================================ +# PAD (6 originaux) +# ============================================================================ + +def pad_recipes(): + out = {} + + def string_set(label, base_freq=220): + v = [] + for i in range(19): + n = [3, 5, 7][i % 3] + v.append((PAD_STRING, { + "freq": base_freq, + "detune": [0.006, 0.01, 0.014, 0.018, 0.022][i % 5], + "cutoff": [1200, 1800, 2400, 3000, 3600][i % 5], + "rq": [0.4, 0.5, 0.6, 0.7][i % 4], + "attack": [0.2, 0.4, 0.6, 0.8, 1.0][i % 5], + "decay": [0.2, 0.3, 0.4][i % 3], + "sustain": [0.6, 0.7, 0.8][i % 3], + "release": [1.0, 1.5, 2.0, 2.5][i % 4], + "drive": [1.0, 1.1, 1.2][i % 3], + "amp": 0.15, + "n_voices": n, + "center": n // 2, + "chorus_rate": [0.2, 0.3, 0.4, 0.5][i % 4], + "sat": sat_for(i), + }, f"variation {label} string saws")) + return v + + def bell_set(label, base_freq=220): + v = [] + for i in range(19): + v.append((PAD_BELL, { + "freq": base_freq, + "n_partials": [4, 5, 6, 7, 8][i % 5], + "ratio_step": [0.97, 0.99, 1.0, 1.01, 1.03][i % 5], + "lfo_rate": [0.1, 0.2, 0.3, 0.5][i % 4], + "attack": [0.3, 0.5, 0.8][i % 3], + "decay": [0.5, 0.8, 1.0][i % 3], + "sustain": [0.6, 0.7][i % 2], + "release": [1.5, 2.0, 3.0][i % 3], + "drive": [1.0, 1.1][i % 2], + "amp": 0.16, + "sat": sat_for(i), + }, f"variation {label} bell pad")) + return v + + def drone_set(label, base_freq=110): + v = [] + for i in range(19): + v.append((PAD_DRONE, { + "freq": base_freq, + "detune": [0.005, 0.01, 0.015, 0.02][i % 4], + "cutoff": [800, 1200, 1600, 2000, 2500][i % 5], + "rq": [0.4, 0.5, 0.6, 0.7, 0.8][i % 5], + "attack": [0.5, 1.0, 1.5, 2.0][i % 4], + "decay": [0.5, 1.0, 1.5][i % 3], + "sustain": [0.7, 0.8, 0.9][i % 3], + "release": [2.0, 3.0, 4.0, 5.0][i % 4], + "drive": [1.0, 1.2, 1.4][i % 3], + "amp": 0.18, + "lfo_rate": [0.1, 0.15, 0.2, 0.25][i % 4], + "osc_ugen": ["Saw", "Pulse", "LFTri"][i % 3], + "sat": sat_for(i), + }, f"variation {label} drone slow")) + return v + + def choir_set(label, base_freq=220): + v = [] + for i in range(19): + v.append((PAD_CHOIR, { + "freq": base_freq, + "detune": [0.01, 0.014, 0.018, 0.022][i % 4], + "formant1": [600, 700, 800, 900, 1000][i % 5], + "formant2": [1800, 2000, 2200, 2400, 2600][i % 5], + "attack": [0.4, 0.6, 0.8, 1.0][i % 4], + "decay": [0.3, 0.5, 0.7][i % 3], + "sustain": [0.6, 0.7, 0.8][i % 3], + "release": [1.5, 2.0, 2.5, 3.0][i % 4], + "drive": [1.0, 1.1, 1.2][i % 3], + "amp": 0.15, + "n_voices": [3, 4, 5][i % 3], + "sat": sat_for(i), + }, f"variation {label} choir formant")) + return v + + out["pad"] = string_set("pad") + out["strings"] = string_set("strings", base_freq=330) + out["warm_pad"] = string_set("warm_pad", base_freq=220) + out["choir"] = choir_set("choir") + out["vocal_pad"] = choir_set("vocal_pad", base_freq=330) + out["drone"] = drone_set("drone") + + return out + + +# ============================================================================ +# WORLD (10 originaux) +# ============================================================================ + +def world_recipes(): + out = {} + + def pluck_world(label, base_freq=330): + v = [] + for i in range(19): + v.append((WORLD_PLUCK, { + "freq": base_freq, + "bend_amt": [0.02, 0.03, 0.04, 0.05, 0.06][i % 5], + "bend_time": [0.05, 0.08, 0.1, 0.12][i % 4], + "cutoff": [3000, 4000, 5000, 6000][i % 4], + "rq": [0.3, 0.4, 0.5][i % 3], + "attack": 0.001, + "decay": [0.05, 0.08, 0.1][i % 3], + "sustain": [0.0, 0.1][i % 2], + "release": [0.3, 0.5, 0.8][i % 3], + "drive": [1.0, 1.3, 1.6, 2.0][i % 4], + "amp": 0.22, + "exciter_decay": [0.003, 0.005, 0.007][i % 3], + "ks_decay": [1.5, 1.8, 2.0, 2.5, 3.0][i % 5], + "sat": sat_for(i), + }, f"variation {label} pluck Karplus")) + return v + + def drum_world(label, base_freq=120): + v = [] + for i in range(19): + v.append((WORLD_DRUM_PITCHED, { + "freq": base_freq, + "decay_time": [0.2, 0.3, 0.4][i % 3], + "noise_amt": [0.2, 0.3, 0.4, 0.5][i % 4], + "decay": [0.2, 0.3, 0.4, 0.5][i % 4], + "drive": [1.0, 1.3, 1.6][i % 3], + "amp": 0.32, + "pitch_amt": [2.0, 3.0, 4.0, 5.0][i % 4], + "pitch_time": [0.03, 0.05, 0.07, 0.1][i % 4], + "sat": sat_for(i), + }, f"variation {label} drum pitched")) + return v + + def gong_world(label, base_freq=80): + v = [] + for i in range(19): + v.append((WORLD_GONG, { + "freq": base_freq, + "n_partials": [4, 5, 6, 7, 8][i % 5], + "partial_decay": [0.5, 1.0, 1.5, 2.0, 3.0][i % 5], + "decay": [0.5, 1.0, 1.5][i % 3], + "release": [2.0, 3.0, 4.0][i % 3], + "drive": [1.0, 1.2, 1.4][i % 3], + "amp": 0.25, + "sat": sat_for(i), + }, f"variation {label} gong modal")) + return v + + def flute_world(label, base_freq=440): + v = [] + for i in range(19): + v.append((WORLD_FLUTE, { + "freq": base_freq, + "breath": [0.05, 0.1, 0.15, 0.2][i % 4], + "cutoff": [3000, 4000, 5000][i % 3], + "rq": [0.3, 0.5, 0.7][i % 3], + "attack": [0.05, 0.1, 0.2][i % 3], + "decay": [0.1, 0.2, 0.3][i % 3], + "sustain": [0.6, 0.7, 0.8][i % 3], + "release": [0.3, 0.5, 0.8][i % 3], + "drive": [1.0, 1.2][i % 2], + "amp": 0.2, + "vib_rate": [4, 5, 6, 7][i % 4], + "vib_depth": [0.005, 0.01, 0.015][i % 3], + "sat": sat_for(i), + }, f"variation {label} flute")) + return v + + def drone_world(label, base_freq=80): + v = [] + for i in range(19): + v.append((WORLD_DRONE, { + "freq": base_freq, + "formant_freq": [200, 300, 400, 500, 600][i % 5], + "lpf_cutoff": [800, 1200, 1600, 2000][i % 4], + "lfo_rate": [3, 5, 7, 9, 12][i % 5], + "attack": [0.05, 0.1, 0.2][i % 3], + "decay": [0.3, 0.5][i % 2], + "sustain": [0.7, 0.8, 0.9][i % 3], + "release": [0.5, 1.0, 1.5][i % 3], + "drive": [1.5, 2.0, 2.5][i % 3], + "amp": 0.28, + "sat": sat_for(i), + }, f"variation {label} drone formant")) + return v + + out["pipa"] = pluck_world("pipa", base_freq=330) + out["koto"] = pluck_world("koto", base_freq=330) + out["guzheng"] = pluck_world("guzheng", base_freq=330) + out["handpan"] = pluck_world("handpan", base_freq=220) + out["tabla"] = drum_world("tabla", base_freq=180) + out["taiko"] = drum_world("taiko", base_freq=80) + out["gong"] = gong_world("gong", base_freq=80) + out["growl"] = drone_world("growl", base_freq=60) + out["shakuhachi"] = flute_world("shakuhachi", base_freq=440) + out["erhu"] = flute_world("erhu", base_freq=440) + out["didgeridoo_world"] = drone_world("didgeridoo_world", base_freq=70) # not duplicated + + return out + + +# ============================================================================ +# MASTER (4 originaux) +# ============================================================================ + +def master_recipes(): + out = {} + + mc = [] + for i in range(19): + mc.append((MASTER_COMP, { + "threshold": [0.2, 0.3, 0.4, 0.5, 0.6][i % 5], + "ratio": [0.3, 0.4, 0.5, 0.6, 0.7][i % 5], + "attack": [0.005, 0.01, 0.02][i % 3], + "release": [0.05, 0.1, 0.2, 0.3][i % 4], + "makeup": [1.1, 1.2, 1.4, 1.6, 1.8][i % 5], + }, "variation master compressor")) + out["master_comp"] = mc + + ml = [] + for i in range(19): + ml.append((MASTER_LIM, { + "threshold": [0.7, 0.8, 0.9, 0.95, 0.99][i % 5], + "look_ahead": [0.005, 0.01, 0.02][i % 3], + "makeup": [1.0, 1.1, 1.2, 1.4][i % 4], + }, "variation master limiter")) + out["master_lim"] = ml + + ms = [] + for i in range(19): + # alterne saturator vs EQ vs widen + cat = i % 3 + if cat == 0: + ms.append((MASTER_SAT, { + "drive": [1.2, 1.5, 2.0, 3.0, 4.0][i % 5], + "mix": [0.3, 0.5, 0.7, 0.9][i % 4], + "makeup": [0.8, 0.9, 1.0][i % 3], + "sat": ["tanh", "softclip"][i % 2], + }, "variation master saturation")) + elif cat == 1: + ms.append((MASTER_EQ, { + "low_cut": [20, 30, 40, 50, 60][i % 5], + "high_shelf_freq": [4000, 6000, 8000, 10000][i % 4], + "high_shelf_gain": [0.5, 1.0, 1.5, 2.0][i % 4], + "makeup": [1.0, 1.1, 1.2][i % 3], + }, "variation master EQ")) + else: + ms.append((MASTER_WIDEN, { + "width": [0.8, 1.0, 1.2, 1.5, 2.0][i % 5], + "delay": [0.001, 0.003, 0.005, 0.008][i % 4], + "makeup": [0.95, 1.0, 1.05][i % 3], + }, "variation master stereo widener")) + out["master_sat"] = ms + + vn = [] + for i in range(19): + cat = i % 2 + if cat == 0: + vn.append((MASTER_SAT, { + "drive": [1.5, 2.0, 3.0][i % 3], + "mix": [0.4, 0.6, 0.8][i % 3], + "makeup": [0.85, 0.9, 0.95][i % 3], + "sat": "tanh", + }, "variation vinyl warmth saturation")) + else: + vn.append((MASTER_EQ, { + "low_cut": [60, 80, 100][i % 3], + "high_shelf_freq": [3000, 4000, 5000][i % 3], + "high_shelf_gain": [-2.0, -1.0, -0.5, 0.5][i % 4], + "makeup": [1.0, 1.05, 1.1][i % 3], + }, "variation vinyl tone shape")) + out["vinyl"] = vn + + return out + + +# --------------------------------------------------------------------------- +# Generation +# --------------------------------------------------------------------------- + +CATEGORIES = { + "drums": drums_recipes, + "bass": bass_recipes, + "lead": lead_recipes, + "pad": pad_recipes, + "world": world_recipes, + "master": master_recipes, +} + + +def render(template, params, name, comment): + p = dict(params) + p["name"] = name + p["comment"] = comment + return template.format(**p) + + +def main(): + written = 0 + failures = [] + seen_names = set() + duplicates = [] + counts = {} + + for cat, recipe_fn in CATEGORIES.items(): + recipes = recipe_fn() + cat_dir = SYNTH_DIR / cat + cat_dir.mkdir(parents=True, exist_ok=True) + cat_count = 0 + + for original_name, variants in recipes.items(): + for idx, (tpl, params, comment_base) in enumerate(variants, start=1): + vname = f"{original_name}_v{idx}" + fname = cat_dir / f"{vname}.scd" + full_comment = ( + f"synth/{cat}/{vname}.scd -- SynthDef \\{vname} " + f"// {comment_base}" + ) + content = render(tpl, params, vname, full_comment) + p, b = balance_check(content) + if (p, b) != (0, 0): + failures.append((str(fname), p, b)) + continue + if vname in seen_names: + duplicates.append(vname) + continue + seen_names.add(vname) + fname.write_text(content, encoding="utf-8") + written += 1 + cat_count += 1 + + counts[cat] = cat_count + + print("=" * 60) + print(f"Total nouveaux fichiers ecrits : {written}") + print("Repartition par categorie :") + for cat, n in counts.items(): + print(f" {cat:8s} : {n}") + print(f"Failures balance : {len(failures)}") + for f in failures[:10]: + print(f" KO {f}") + print(f"Duplicate names skipped : {len(duplicates)}") + if duplicates[:10]: + print(f" ex : {duplicates[:10]}") + return 0 if not failures else 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/sound_algo/_migrate/palette_melodies_epic.scd.bak b/sound_algo/_migrate/palette_melodies_epic.scd.bak new file mode 100644 index 0000000..82d9c66 --- /dev/null +++ b/sound_algo/_migrate/palette_melodies_epic.scd.bak @@ -0,0 +1,119 @@ +// ===================================================================== +// palette/melodies/epic.scd +// ~mepic1..~mepic10 -- 10 patterns melodiques de 128 pas (8 mesures) +// +// Charge par palette/melodies/index.scd. Un seul bloc top-level. +// ===================================================================== +( +~mepic1 = [ + 60, 0, 0, 0, 67, 0, 0, 0, 72, 0, 0, 0, 70, 0, 0, 0, + 60, 0, 0, 0, 67, 0, 70, 0, 72, 0, 75, 0, 72, 0, 70, 67, + 60, 67, 72, 67, 65, 67, 70, 72, 75, 72, 70, 67, 70, 72, 75, 79, + 60, 67, 72, 75, 72, 67, 60, 67, 65, 72, 77, 79, 77, 72, 65, 72, + 79, 77, 75, 72, 79, 77, 75, 72, 82, 79, 77, 75, 84, 82, 79, 77, + 84, 82, 79, 77, 84, 82, 79, 84, 87, 84, 82, 79, 89, 87, 84, 82, + 79, 0, 77, 0, 75, 0, 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, + 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic2 = [ + 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 63, 0, 67, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 63, 67, 70, 72, 70, 67, 63, 65, 67, 70, 72, 75, 72, 70, 67, + 65, 70, 72, 75, 77, 75, 72, 70, 72, 75, 77, 79, 82, 79, 77, 75, + 72, 75, 77, 79, 82, 79, 77, 79, 84, 82, 79, 77, 79, 82, 84, 87, + 79, 82, 84, 87, 84, 82, 79, 77, 75, 77, 79, 82, 79, 77, 75, 72, + 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic3 = [ + 63, 0, 70, 0, 65, 0, 72, 0, 63, 0, 70, 0, 65, 0, 72, 75, + 65, 0, 72, 0, 67, 0, 75, 0, 65, 0, 72, 0, 67, 0, 75, 79, + 63, 70, 65, 72, 67, 75, 70, 77, 72, 79, 75, 82, 77, 84, 79, 86, + 65, 72, 67, 75, 70, 77, 72, 79, 75, 82, 77, 84, 79, 86, 82, 89, + 79, 86, 82, 89, 84, 91, 86, 93, 82, 89, 84, 91, 86, 93, 88, 95, + 84, 0, 82, 0, 79, 0, 77, 0, 75, 0, 72, 0, 70, 0, 67, 0, + 65, 0, 63, 0, 60, 0, 65, 0, 67, 0, 63, 0, 65, 0, 60, 0, + 63, 0, 65, 67, 65, 63, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic4 = [ + 60, 61, 0, 64, 65, 0, 67, 68, 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 68, 71, 72, 71, 68, 67, 65, 64, 61, 60, 0, + 63, 64, 67, 68, 70, 71, 0, 73, 75, 73, 71, 70, 68, 67, 64, 63, + 60, 61, 64, 65, 67, 68, 71, 72, 75, 72, 71, 68, 67, 64, 61, 60, + 65, 67, 68, 71, 72, 73, 76, 75, 76, 75, 73, 72, 71, 68, 67, 65, + 72, 73, 76, 75, 73, 72, 71, 68, 76, 79, 80, 83, 84, 83, 80, 79, + 79, 80, 83, 84, 87, 84, 83, 80, 76, 75, 73, 72, 71, 68, 67, 65, + 72, 71, 68, 67, 65, 64, 61, 60, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic5 = [ + 36, 0, 48, 0, 36, 39, 0, 48, 36, 0, 51, 39, 0, 36, 48, 0, + 36, 0, 48, 51, 36, 39, 48, 51, 39, 0, 36, 48, 0, 39, 0, 36, + 36, 51, 48, 36, 39, 0, 51, 48, 36, 0, 51, 53, 39, 36, 48, 0, + 36, 53, 51, 48, 39, 0, 36, 48, 36, 0, 51, 0, 48, 39, 36, 0, + 39, 0, 51, 0, 39, 41, 0, 51, 39, 0, 53, 41, 0, 39, 51, 0, + 36, 39, 41, 43, 41, 39, 36, 0, 41, 39, 36, 0, 39, 36, 0, 0, + 48, 0, 60, 0, 48, 51, 0, 60, 48, 0, 63, 51, 0, 48, 60, 0, + 36, 39, 41, 43, 46, 43, 41, 39, 36, 0, 48, 0, 36, 0, 0, 0 +]; + +~mepic6 = [ + 72, 0, 70, 0, 67, 70, 0, 65, 63, 0, 65, 67, 70, 0, 72, 75, + 77, 0, 75, 0, 72, 75, 0, 70, 67, 0, 70, 72, 75, 0, 77, 79, + 75, 0, 77, 0, 75, 72, 0, 70, 67, 0, 65, 67, 70, 0, 75, 72, + 79, 0, 82, 0, 79, 77, 0, 75, 72, 0, 70, 75, 77, 0, 82, 79, + 84, 0, 87, 0, 84, 82, 0, 79, 77, 0, 79, 82, 84, 0, 87, 89, + 87, 0, 84, 0, 82, 0, 79, 0, 77, 0, 75, 0, 72, 0, 70, 0, + 75, 0, 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 65, 67, + 65, 0, 63, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic7 = [ + 60, 0, 0, 0, 60, 0, 60, 0, 73, 0, 0, 0, 73, 0, 73, 0, + 60, 60, 0, 73, 73, 0, 60, 73, 79, 0, 73, 0, 60, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 65, 0, 78, 0, 0, 0, 78, 0, 78, 0, + 65, 65, 0, 78, 78, 0, 65, 78, 84, 0, 78, 0, 65, 0, 0, 0, + 67, 0, 0, 0, 67, 0, 80, 0, 80, 67, 80, 67, 80, 84, 80, 67, + 72, 84, 72, 84, 72, 84, 72, 84, 85, 0, 0, 0, 85, 0, 97, 0, + 85, 97, 85, 97, 85, 97, 85, 97, 84, 96, 84, 96, 84, 96, 84, 96, + 72, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic8 = [ + 60, 61, 63, 0, 65, 63, 61, 60, 0, 67, 65, 0, 68, 67, 65, 63, + 60, 61, 63, 0, 65, 63, 61, 60, 67, 65, 63, 61, 60, 0, 0, 0, + 63, 65, 67, 0, 68, 67, 65, 63, 0, 70, 68, 0, 72, 70, 68, 67, + 65, 67, 68, 0, 70, 68, 67, 65, 0, 72, 70, 0, 73, 72, 70, 68, + 67, 68, 70, 0, 72, 70, 68, 67, 72, 73, 75, 0, 77, 75, 73, 72, + 73, 75, 77, 0, 79, 77, 75, 73, 75, 77, 79, 0, 80, 79, 77, 75, + 73, 72, 70, 68, 67, 65, 63, 61, 60, 0, 67, 0, 65, 0, 63, 0, + 61, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic9 = [ + 72, 0, 0, 67, 0, 65, 0, 62, 60, 0, 62, 0, 65, 0, 67, 72, + 74, 0, 0, 69, 0, 67, 0, 65, 62, 0, 65, 0, 67, 0, 72, 0, + 74, 0, 77, 0, 79, 0, 77, 74, 72, 0, 69, 0, 67, 0, 65, 62, + 77, 0, 79, 0, 81, 0, 79, 77, 74, 0, 72, 0, 69, 0, 67, 65, + 79, 81, 84, 86, 84, 81, 79, 77, 74, 72, 69, 67, 65, 62, 60, 0, + 81, 84, 86, 89, 91, 89, 86, 84, 81, 79, 77, 74, 72, 69, 67, 65, + 72, 0, 74, 0, 77, 0, 79, 0, 77, 0, 74, 0, 72, 0, 69, 0, + 67, 0, 65, 0, 62, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic10 = [ + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, + 48, 0, 51, 0, 55, 0, 58, 0, 60, 0, 0, 0, 0, 0, 0, 0, + 60, 63, 67, 70, 72, 70, 67, 63, 65, 67, 70, 72, 75, 72, 70, 67, + 65, 70, 72, 75, 77, 75, 72, 70, 72, 75, 77, 79, 82, 79, 77, 75, + 79, 82, 84, 87, 89, 87, 84, 82, 84, 87, 89, 91, 94, 91, 89, 87, + 91, 89, 87, 84, 82, 79, 77, 75, 72, 70, 67, 65, 63, 60, 58, 55, + 51, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +"[melodies/epic] mepic1..mepic10 (128 steps) prets".postln; +) diff --git a/sound_algo/_migrate/palette_melodies_long.scd.bak b/sound_algo/_migrate/palette_melodies_long.scd.bak new file mode 100644 index 0000000..7b32812 --- /dev/null +++ b/sound_algo/_migrate/palette_melodies_long.scd.bak @@ -0,0 +1,219 @@ +// ===================================================================== +// palette/melodies/long.scd +// ~ml1..~ml30 -- 30 patterns melodiques de 64 pas (4 mesures) +// +// Charge par palette/melodies/index.scd. Un seul bloc top-level. +// ===================================================================== +( +~ml1 = [ + 36, 0, 48, 0, 36, 39, 0, 48, 36, 0, 51, 39, 0, 36, 48, 0, + 36, 0, 48, 51, 36, 39, 48, 51, 39, 0, 36, 48, 0, 39, 0, 36, + 36, 51, 48, 36, 39, 0, 51, 48, 36, 0, 51, 53, 39, 36, 48, 0, + 36, 53, 51, 48, 39, 0, 36, 48, 36, 0, 51, 0, 48, 39, 36, 0 +]; + +~ml2 = [ + 60, 0, 0, 0, 67, 0, 0, 0, 72, 0, 0, 0, 70, 0, 0, 0, + 60, 67, 72, 67, 65, 67, 70, 72, 75, 72, 70, 67, 70, 72, 75, 79, + 60, 67, 72, 75, 72, 67, 60, 67, 65, 72, 77, 79, 77, 72, 65, 72, + 79, 77, 75, 72, 70, 67, 65, 63, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml3 = [ + 63, 0, 70, 0, 65, 0, 72, 0, 63, 0, 70, 0, 65, 0, 72, 75, + 65, 0, 72, 0, 67, 0, 75, 0, 65, 0, 72, 0, 67, 0, 75, 79, + 63, 70, 65, 72, 67, 75, 70, 77, 72, 79, 75, 82, 77, 84, 79, 86, + 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 65, 0, 67, 0 +]; + +~ml4 = [ + 36, 0, 0, 36, 0, 39, 0, 36, 41, 0, 0, 36, 0, 41, 0, 39, + 36, 0, 0, 41, 0, 39, 0, 36, 43, 0, 0, 41, 0, 36, 0, 39, + 34, 0, 0, 36, 0, 39, 0, 41, 36, 0, 0, 39, 0, 41, 0, 43, + 36, 0, 39, 0, 41, 0, 39, 0, 36, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml5 = [ + 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 70, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml6 = [ + 60, 61, 0, 64, 65, 0, 67, 68, 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 68, 71, 72, 71, 68, 67, 65, 64, 61, 60, 0, + 63, 64, 67, 68, 70, 71, 0, 73, 75, 73, 71, 70, 68, 67, 64, 63, + 60, 61, 64, 65, 67, 68, 71, 72, 75, 72, 71, 68, 67, 64, 61, 60 +]; + +~ml7 = [ + 67, 0, 72, 0, 70, 0, 67, 65, 63, 0, 67, 0, 70, 0, 72, 75, + 75, 0, 72, 0, 70, 0, 67, 65, 63, 0, 60, 0, 65, 0, 67, 70, + 72, 0, 75, 0, 79, 0, 75, 72, 70, 0, 75, 0, 72, 0, 70, 67, + 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0, 0 +]; + +~ml8 = [ + 60, 61, 63, 0, 65, 63, 61, 60, 0, 67, 65, 0, 68, 67, 65, 63, + 60, 61, 63, 0, 65, 63, 61, 60, 67, 65, 63, 61, 60, 0, 0, 0, + 63, 65, 67, 0, 68, 67, 65, 63, 0, 70, 68, 0, 72, 70, 68, 67, + 65, 0, 63, 0, 61, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml9 = [ + 72, 0, 0, 67, 0, 65, 0, 62, 60, 0, 62, 0, 65, 0, 67, 72, + 74, 0, 0, 69, 0, 67, 0, 65, 62, 0, 65, 0, 67, 0, 72, 0, + 74, 0, 77, 0, 79, 0, 77, 74, 72, 0, 69, 0, 67, 0, 65, 62, + 60, 62, 65, 67, 69, 72, 74, 77, 74, 72, 69, 67, 65, 62, 60, 0 +]; + +~ml10 = [ + 48, 0, 54, 0, 48, 0, 54, 0, 60, 0, 54, 0, 48, 0, 54, 0, + 48, 54, 60, 54, 48, 0, 54, 0, 60, 54, 48, 54, 60, 54, 48, 0, + 36, 0, 42, 0, 36, 0, 42, 0, 48, 0, 42, 0, 36, 0, 42, 0, + 48, 54, 60, 66, 60, 54, 48, 42, 36, 42, 48, 54, 60, 54, 48, 36 +]; + +~ml11 = [ + 36, 0, 36, 0, 36, 0, 36, 0, 39, 0, 39, 0, 39, 0, 39, 0, + 36, 0, 36, 39, 36, 0, 39, 0, 41, 0, 39, 0, 36, 0, 41, 0, + 34, 0, 34, 0, 36, 0, 39, 0, 41, 0, 39, 36, 41, 39, 36, 0, + 36, 39, 41, 43, 41, 39, 36, 34, 36, 0, 39, 0, 41, 0, 0, 0 +]; + +~ml12 = [ + 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 0, + 60, 67, 65, 70, 60, 67, 65, 0, 60, 67, 65, 70, 60, 67, 65, 72, + 63, 70, 67, 0, 63, 70, 67, 0, 63, 70, 67, 72, 63, 70, 67, 75, + 65, 72, 70, 0, 65, 72, 70, 75, 65, 72, 70, 77, 60, 67, 65, 0 +]; + +~ml13 = [ + 60, 60, 67, 60, 65, 60, 67, 60, 62, 62, 69, 62, 67, 62, 69, 62, + 63, 63, 70, 63, 68, 63, 70, 63, 65, 65, 72, 65, 70, 65, 72, 65, + 67, 67, 74, 67, 72, 67, 74, 67, 65, 65, 72, 65, 70, 65, 72, 65, + 63, 63, 70, 63, 68, 63, 70, 63, 60, 60, 67, 60, 65, 60, 67, 60 +]; + +~ml14 = [ + 67, 67, 0, 70, 72, 0, 70, 67, 65, 0, 67, 0, 0, 0, 0, 0, + 67, 67, 0, 70, 72, 0, 75, 72, 70, 0, 67, 0, 0, 0, 0, 0, + 72, 75, 0, 77, 79, 0, 77, 75, 72, 0, 70, 0, 67, 0, 65, 0, + 67, 0, 70, 0, 72, 0, 75, 0, 72, 70, 67, 65, 67, 0, 0, 0 +]; + +~ml15 = [ + 72, 0, 70, 0, 67, 70, 0, 65, 63, 0, 65, 67, 70, 0, 72, 75, + 77, 0, 75, 0, 72, 75, 0, 70, 67, 0, 70, 72, 75, 0, 77, 79, + 75, 0, 77, 0, 75, 72, 0, 70, 67, 0, 65, 67, 70, 0, 75, 72, + 70, 0, 67, 0, 65, 67, 0, 63, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml16 = [ + 60, 62, 0, 65, 67, 0, 69, 70, 67, 65, 62, 60, 0, 65, 67, 70, + 62, 0, 65, 67, 69, 0, 70, 72, 69, 67, 65, 62, 0, 60, 65, 67, + 65, 67, 69, 70, 72, 70, 69, 67, 65, 62, 60, 0, 62, 65, 67, 69, + 72, 70, 69, 67, 65, 62, 60, 0, 65, 67, 69, 70, 72, 0, 70, 0 +]; + +~ml17 = [ + 60, 61, 0, 64, 65, 0, 67, 68, 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 0, 68, 71, 72, 71, 68, 67, 65, 64, 61, 60, + 65, 67, 0, 68, 71, 0, 72, 73, 76, 0, 73, 72, 71, 68, 0, 67, + 72, 73, 76, 73, 72, 71, 68, 67, 65, 64, 61, 60, 64, 65, 67, 68 +]; + +~ml18 = [ + 60, 0, 0, 0, 63, 0, 0, 0, 65, 0, 0, 0, 67, 0, 0, 0, + 60, 0, 0, 0, 67, 0, 0, 0, 60, 0, 0, 0, 65, 0, 0, 0, + 63, 0, 0, 0, 67, 0, 0, 0, 65, 0, 0, 0, 70, 0, 0, 0, + 60, 0, 67, 0, 63, 0, 70, 0, 65, 0, 67, 0, 60, 0, 0, 0 +]; + +~ml19 = [ + 48, 0, 51, 0, 53, 0, 48, 0, 46, 0, 51, 0, 53, 0, 55, 0, + 48, 0, 51, 53, 51, 0, 48, 0, 46, 0, 53, 0, 55, 0, 51, 48, + 44, 0, 48, 0, 51, 0, 48, 0, 53, 0, 55, 0, 51, 0, 48, 0, + 48, 51, 53, 51, 48, 0, 46, 48, 55, 53, 51, 48, 46, 44, 0, 0 +]; + +~ml20 = [ + 60, 64, 67, 72, 60, 64, 67, 72, 62, 65, 69, 74, 62, 65, 69, 74, + 63, 67, 70, 75, 63, 67, 70, 75, 60, 64, 67, 72, 65, 67, 70, 72, + 65, 69, 72, 77, 65, 69, 72, 77, 67, 71, 74, 79, 67, 71, 74, 79, + 72, 76, 79, 84, 72, 76, 79, 84, 60, 64, 67, 72, 60, 64, 67, 72 +]; + +~ml21 = [ + 60, 0, 0, 63, 0, 65, 0, 67, 0, 70, 0, 67, 65, 63, 0, 60, + 0, 65, 0, 67, 0, 70, 0, 72, 0, 70, 0, 67, 0, 65, 0, 63, + 65, 0, 0, 67, 0, 70, 0, 72, 0, 75, 0, 72, 70, 67, 0, 65, + 0, 67, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0 +]; + +~ml22 = [ + 36, 0, 0, 0, 39, 0, 36, 0, 41, 0, 0, 0, 39, 0, 41, 36, + 34, 0, 0, 0, 39, 0, 41, 0, 43, 0, 41, 0, 39, 0, 36, 0, + 36, 0, 41, 0, 43, 0, 41, 0, 46, 0, 43, 0, 41, 0, 39, 0, + 36, 39, 41, 43, 46, 43, 41, 39, 36, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml23 = [ + 67, 0, 70, 0, 0, 67, 0, 65, 67, 0, 70, 72, 0, 70, 0, 67, + 65, 0, 67, 0, 0, 65, 0, 63, 65, 0, 67, 70, 0, 72, 0, 70, + 72, 0, 75, 0, 0, 72, 0, 70, 72, 0, 75, 77, 0, 75, 0, 72, + 70, 0, 72, 0, 0, 70, 0, 67, 65, 0, 67, 0, 70, 0, 72, 0 +]; + +~ml24 = [ + 60, 0, 0, 0, 60, 0, 60, 0, 73, 0, 0, 0, 73, 0, 73, 0, + 60, 60, 0, 73, 73, 0, 60, 73, 79, 0, 73, 0, 60, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 65, 0, 78, 0, 0, 0, 78, 0, 78, 0, + 65, 65, 0, 78, 78, 0, 65, 78, 84, 0, 78, 0, 65, 0, 0, 0 +]; + +~ml25 = [ + 60, 67, 72, 64, 67, 71, 60, 67, 62, 65, 69, 62, 65, 69, 60, 67, + 64, 67, 71, 64, 67, 71, 60, 67, 65, 69, 72, 65, 69, 72, 60, 67, + 67, 72, 76, 67, 71, 74, 60, 67, 65, 69, 72, 65, 69, 76, 65, 67, + 64, 67, 71, 64, 67, 71, 62, 65, 60, 67, 72, 64, 60, 64, 67, 60 +]; + +~ml26 = [ + 0, 67, 0, 70, 0, 67, 0, 65, 0, 67, 0, 72, 0, 70, 0, 67, + 0, 70, 0, 72, 0, 70, 0, 67, 0, 65, 0, 67, 0, 70, 0, 72, + 0, 72, 0, 75, 0, 72, 0, 70, 0, 72, 0, 77, 0, 75, 0, 72, + 0, 75, 0, 77, 0, 75, 0, 72, 0, 70, 0, 67, 0, 70, 0, 72 +]; + +~ml27 = [ + 36, 0, 38, 0, 39, 0, 41, 0, 43, 0, 44, 0, 43, 0, 41, 0, + 39, 0, 41, 0, 43, 0, 44, 0, 46, 0, 48, 0, 46, 0, 43, 0, + 44, 0, 46, 0, 48, 0, 50, 0, 51, 0, 50, 0, 48, 0, 46, 0, + 43, 0, 46, 0, 48, 0, 51, 0, 46, 0, 43, 0, 41, 0, 39, 36 +]; + +~ml28 = [ + 60, 61, 0, 70, 0, 73, 0, 67, 61, 0, 73, 0, 67, 70, 0, 76, + 60, 61, 0, 70, 0, 73, 0, 67, 73, 76, 0, 70, 67, 61, 60, 0, + 63, 64, 0, 73, 0, 76, 0, 70, 64, 0, 76, 0, 70, 73, 0, 79, + 63, 64, 73, 76, 79, 76, 73, 70, 67, 64, 63, 61, 60, 0, 0, 0 +]; + +~ml29 = [ + 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 0, 0, 0, + 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 75, 73, 71, 69, 67, 65, 63, 61, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml30 = [ + 60, 0, 62, 0, 64, 0, 66, 0, 68, 0, 70, 0, 72, 0, 0, 0, + 72, 0, 70, 0, 68, 0, 66, 0, 64, 0, 62, 0, 60, 0, 0, 0, + 66, 0, 68, 0, 70, 0, 72, 0, 74, 0, 76, 0, 78, 0, 0, 0, + 78, 0, 76, 0, 74, 0, 72, 0, 70, 0, 68, 0, 66, 0, 0, 0 +]; + +"[melodies/long] ml1..ml30 (64 steps) prets".postln; +) diff --git a/sound_algo/_migrate/palette_melodies_short.scd.bak b/sound_algo/_migrate/palette_melodies_short.scd.bak new file mode 100644 index 0000000..2cdfc4d --- /dev/null +++ b/sound_algo/_migrate/palette_melodies_short.scd.bak @@ -0,0 +1,91 @@ +// ===================================================================== +// palette/melodies/short.scd +// ~m1..~m78 -- 78 patterns melodiques de 32 pas +// +// Charge par palette/melodies/index.scd. Un seul bloc top-level. +// ===================================================================== +( +// ---------- M1-M28 (premiere serie historique) ---------------------- +~m1 = [60,0,67,0,70,0,67,65, 63,0,60,0,0,67,70,72, 75,0,72,70,67,0,0,65, 63,60,0,67,70,0,72,0]; +~m2 = [60,0,0,67,0,70,0,67, 60,0,0,67,0,70,0,72, 60,0,0,67,0,70,0,67, 63,0,0,70,0,72,0,75]; +~m3 = [63,0,0,0,70,0,67,0, 65,0,0,0,70,0,72,0, 63,0,0,0,67,0,70,0, 65,0,60,0,67,0,0,0]; +~m4 = [60,63,67,70,72,70,67,63, 60,63,67,70,75,72,70,67, 65,67,70,72,75,72,70,65, 63,67,70,75,79,75,70,63]; +~m5 = [60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0, 60,0,0,0,0,0,0,0, 65,0,0,0,0,0,0,0]; +~m6 = [60,0,63,0,65,67,0,70, 72,0,75,79,0,75,72,70, 67,0,65,63,0,60,0,63, 65,0,67,0,70,0,72,0]; +~m7 = [36,0,36,39,0,41,36,0, 38,0,36,39,0,43,41,0, 36,0,36,39,0,41,36,0, 38,0,41,39,36,0,41,0]; +~m8 = [60,67,72,67,60,67,72,75, 60,67,72,67,65,72,77,72, 60,67,72,67,60,67,72,79, 65,72,77,72,60,67,72,67]; +~m9 = [60,0,63,0,67,0,0,0, 0,0,0,0,0,0,0,0, 65,0,67,0,70,0,72,0, 0,0,0,0,0,0,0,0]; +~m10 = [60,0,63,0,67,0,70,0, 66,0,69,0,73,0,76,0, 60,0,63,0,67,0,70,0, 66,0,69,0,76,0,73,0]; +~m11 = [60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0, 60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0]; +~m12 = [60,63,67,70,60,63,67,70, 60,63,67,72,60,63,67,75, 60,63,67,72,65,67,70,75, 65,70,72,79,67,72,75,79]; +~m13 = [60,0,63,65,0,67,0,69, 0,65,0,63,65,0,60,0, 67,0,65,63,0,67,69,0, 65,63,0,60,0,63,65,67]; +~m14 = [60,61,63,0,65,63,61,60, 0,67,65,0,68,67,65,63, 60,61,63,0,65,63,61,60, 67,65,63,61,60,0,0,0]; +~m15 = [60,0,63,0,65,0,68,71, 72,0,71,0,68,65,63,0, 60,0,63,65,0,68,71,0, 72,0,68,65,63,60,0,0]; +~m16 = [48,0,51,53,54,0,55,0, 58,0,55,0,53,51,48,0, 48,0,51,53,54,0,55,58, 60,0,58,55,53,51,48,0]; +~m17 = [72,0,0,67,0,65,0,62, 60,0,62,0,65,0,67,72, 74,0,0,69,0,67,0,65, 62,0,65,0,67,0,72,0]; +~m18 = [60,0,67,0,70,67,60,0, 67,0,70,60,0,67,70,75, 60,0,67,0,70,67,60,65, 67,0,70,0,75,70,67,60]; +~m19 = [60,63,65,67,70,67,65,63, 60,63,67,70,72,70,67,63, 65,67,70,72,75,72,70,67, 65,70,72,75,77,75,72,70, 63,65,67,70,72,70,67,65, 63,67,70,72,75,72,70,67, 60,63,67,70,72,75,72,70, 67,65,63,67,65,63,60,0]; +~m20 = [60,0,61,0,63,65,0,67, 68,0,67,65,63,61,0,60, 63,0,65,0,67,68,0,70, 72,0,70,68,67,65,0,63, 65,0,67,0,68,70,0,72, 74,0,72,70,68,67,0,65, 72,0,70,68,67,65,63,61, 60,65,63,65,61,60,0,0]; +~m21 = [60,62,0,65,67,0,69,70, 67,65,62,60,0,65,67,70, 62,0,65,67,69,0,70,72, 69,67,65,62,0,60,65,67, 65,67,69,70,72,70,69,67, 65,62,60,0,62,65,67,69, 72,70,69,67,65,62,60,0, 65,67,69,70,72,0,70,0]; +~m22 = [60,63,65,67,70,67,65,63, 60,67,65,63,65,70,65,67, 63,65,67,70,72,70,67,65, 63,70,67,65,67,72,67,70, 65,67,68,70,72,70,68,67, 65,72,70,67,70,72,70,72, 67,68,70,72,74,72,70,68, 67,74,72,70,72,75,72,75]; +~m23 = [63,70,67,70,65,72,70,72, 63,70,67,70,65,72,75,72, 65,72,70,72,67,75,72,75, 65,72,70,72,60,67,65,67, 63,70,67,70,65,72,70,72, 63,67,65,67,65,72,75,79, 65,72,70,72,67,75,72,75, 60,67,65,67,63,70,67,70]; +~m24 = [60,67,72,75,72,67,60,67, 63,70,75,77,75,70,63,70, 65,72,77,79,77,72,65,72, 67,74,79,82,79,74,67,74, 79,77,75,72,70,67,65,63, 72,75,77,79,82,79,77,75, 65,72,77,79,84,82,79,77, 72,70,67,65,63,60,0,0]; +~m25 = [72,0,70,0,67,0,65,0, 63,0,65,0,67,0,70,0, 72,0,75,0,77,0,75,0, 72,0,70,0,67,0,65,0, 77,0,75,0,72,0,70,0, 67,0,65,0,63,0,65,0, 79,0,77,0,75,0,72,0, 77,0,75,0,70,0,67,0]; +~m26 = [60,63,67,70,72,75,79,82, 79,75,72,70,67,63,60,63, 67,70,72,75,79,82,84,87, 84,82,79,75,72,70,67,63, 65,67,70,72,75,79,82,84, 82,79,75,72,70,67,65,67, 63,65,67,70,72,75,77,79, 77,75,72,70,67,65,63,60]; +~m27 = [60,0,67,0,70,0,67,60, 60,0,67,0,70,0,72,75, 63,0,70,0,72,0,70,63, 63,0,70,0,72,0,75,77, 65,0,72,0,75,0,72,65, 65,0,72,0,75,0,77,79, 63,0,70,0,72,0,70,63, 60,0,67,0,65,0,63,60]; +~m28 = [72,0,70,0,67,70,0,65, 63,0,65,67,70,0,72,75, 77,0,75,0,72,75,0,70, 67,0,70,72,75,0,77,79, 75,0,77,0,75,72,0,70, 67,0,65,67,70,0,75,72, 70,0,67,0,65,67,0,63, 60,0,0,0,0,0,0,0]; + +// ---------- M29-M78 (genres et timbres varies) ---------------------- +~m29 = [36,0,48,0,36,39,0,48, 36,0,51,39,0,36,48,0, 36,0,48,0,36,39,0,51, 39,0,36,48,0,39,0,36]; +~m30 = [36,36,48,0,36,0,39,48, 36,51,0,36,39,0,48,0, 36,0,48,51,36,0,39,48, 36,36,51,0,36,48,39,0]; +~m31 = [36,0,0,0,39,0,0,0, 41,0,0,0,36,0,0,0, 34,0,0,0,39,0,0,0, 41,0,0,0,43,0,0,0]; +~m32 = [72,0,75,0,72,0,70,0, 67,0,70,0,72,0,75,0, 77,0,75,0,72,0,70,0, 75,0,72,0,70,0,67,0]; +~m33 = [60,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 63,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; +~m34 = [60,0,0,0,67,0,0,0, 70,0,0,0,0,0,0,0, 63,0,0,0,70,0,0,0, 72,0,0,0,0,0,0,0]; +~m35 = [67,67,0,70,72,0,70,67, 65,0,67,0,0,0,0,0, 67,67,0,70,72,0,75,72, 70,0,67,0,0,0,0,0]; +~m36 = [60,0,67,0,70,0,72,0, 72,70,67,70,72,0,0,0, 60,0,67,0,70,0,75,0, 75,72,70,72,75,0,0,0]; +~m37 = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; +~m38 = [48,0,0,0,0,0,0,0, 54,0,0,0,0,0,0,0, 48,0,0,0,0,0,0,0, 54,0,0,0,0,0,0,0]; +~m39 = [60,61,0,64,65,0,67,68, 71,0,68,67,65,64,0,61, 60,0,64,65,67,0,68,71, 72,71,68,67,65,64,61,60]; +~m40 = [60,0,62,0,63,0,67,0, 68,0,67,63,0,62,60,0, 60,0,63,0,67,0,68,0, 72,0,68,67,63,62,60,0]; +~m41 = [60,0,65,0,67,0,70,0, 72,0,70,67,65,0,60,0, 65,0,67,0,70,0,72,0, 74,0,72,70,67,65,60,0]; +~m42 = [64,65,67,65,64,0,60,0, 64,65,67,68,67,65,64,0, 67,68,70,68,67,0,64,0, 67,68,70,72,70,68,67,65]; +~m43 = [60,61,64,65,67,65,64,61, 60,0,64,65,67,68,67,65, 64,61,60,61,64,65,67,68, 70,68,67,65,64,61,60,0]; +~m44 = [60,0,63,65,67,0,68,71, 72,71,68,67,65,63,0,60, 63,65,67,68,71,72,71,68, 67,65,63,60,63,65,67,68]; +~m45 = [48,0,54,0,48,0,54,0, 60,0,54,0,48,0,54,0, 48,54,60,54,48,0,54,0, 60,54,48,54,60,54,48,0]; +~m46 = [36,0,41,0,43,0,41,0, 36,0,43,41,36,0,41,0, 36,41,43,41,48,0,43,41, 36,0,43,41,36,41,36,0]; +~m47 = [60,0,63,64,65,67,0,70, 67,65,64,63,60,0,67,70, 63,0,65,67,70,0,67,65, 63,60,63,65,67,65,60,0]; +~m48 = [60,0,62,0,64,0,67,0, 69,0,67,64,62,60,0,0, 62,0,64,0,67,0,69,0, 72,0,69,67,64,62,60,0]; +~m49 = [60,0,64,0,67,0,0,0, 67,0,71,0,74,0,0,0, 69,0,72,0,76,0,0,0, 65,0,69,0,72,0,0,0]; +~m50 = [69,0,72,76,72,0,69,0, 65,0,69,72,69,0,65,0, 60,0,64,67,64,0,60,0, 67,0,71,74,71,0,67,0]; +~m51 = [36,0,38,0,39,0,41,0, 43,0,44,0,43,0,41,0, 39,0,41,0,43,0,44,0, 46,0,48,0,46,0,43,0]; +~m52 = [38,41,45,41,38,0,45,41, 43,47,50,47,43,0,50,47, 48,52,55,52,48,0,55,52, 50,47,43,41,38,0,0,0]; +~m53 = [60,61,0,70,0,73,0,67, 61,0,73,0,67,70,0,76, 60,61,0,70,0,73,0,67, 73,76,0,70,67,61,60,0]; +~m54 = [60,67,65,0,60,67,65,0, 60,67,65,0,60,67,65,0, 63,70,67,0,63,70,67,0, 60,67,65,0,60,67,65,0]; +~m55 = [60,63,67,70,60,63,67,70, 60,63,67,70,60,63,67,70, 60,63,67,72,60,63,67,72, 60,63,67,75,60,63,67,70]; +~m56 = [60,67,60,67,60,67,60,67, 60,67,60,67,60,67,60,67, 60,65,60,65,60,65,60,65, 60,67,60,67,60,70,60,70]; +~m57 = [72,71,70,69,68,67,66,65, 64,63,62,61,60,0,0,0, 72,71,70,69,68,67,66,65, 64,63,62,61,60,59,58,57]; +~m58 = [60,0,62,0,64,0,66,0, 68,0,70,0,72,0,0,0, 72,0,70,0,68,0,66,0, 64,0,62,0,60,0,0,0]; +~m59 = [60,0,66,0,60,0,66,0, 72,0,66,0,60,0,66,0, 60,66,60,66,72,66,72,66, 60,0,66,0,72,0,66,60]; +~m60 = [60,61,60,64,65,64,67,68, 67,65,64,61,60,64,65,0, 67,68,67,71,72,71,68,67, 65,64,61,60,61,64,65,67]; +~m61 = [67,0,72,0,70,0,67,65, 63,0,67,0,70,0,72,75, 75,0,72,0,70,0,67,65, 63,0,60,0,65,0,67,70]; +~m62 = [60,64,67,72,60,64,67,72, 62,65,69,74,62,65,69,74, 63,67,70,75,63,67,70,75, 60,64,67,72,65,67,70,72]; +~m63 = [36,0,36,0,39,0,36,0, 41,0,36,0,39,0,41,0, 34,0,34,0,39,0,41,0, 43,0,41,0,39,0,36,0]; +~m64 = [67,0,70,0,0,67,0,65, 67,0,70,72,0,70,0,67, 65,0,67,0,0,65,0,63, 65,0,67,70,0,72,0,70]; +~m65 = [0,67,0,70,0,67,0,65, 0,67,0,72,0,70,0,67, 0,70,0,72,0,70,0,67, 0,65,0,67,0,70,0,72]; +~m66 = [48,0,51,0,53,0,48,0, 46,0,51,0,53,0,55,0, 48,0,51,53,51,0,48,0, 46,0,53,0,55,0,51,48]; +~m67 = [60,0,0,0,60,0,60,0, 73,0,0,0,73,0,73,0, 60,60,0,73,73,0,60,73, 79,0,73,0,60,0,0,0]; +~m68 = [36,0,36,0,36,0,36,0, 39,0,39,0,39,0,39,0, 36,0,36,39,36,0,39,0, 41,0,39,0,36,0,41,0]; +~m69 = [60,0,0,0,0,0,0,0, 63,0,0,0,0,0,0,0, 65,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0]; +~m70 = [36,0,39,36,48,0,36,39, 41,0,39,36,48,0,41,39, 36,39,41,39,36,0,48,36, 43,41,39,36,39,0,41,39]; +~m71 = [60,63,67,70,0,0,0,0, 60,63,67,70,0,0,0,0, 58,62,65,68,0,0,0,0, 60,63,67,70,0,0,0,0]; +~m72 = [60,0,0,63,0,0,67,0, 0,70,0,0,0,67,0,0, 65,0,0,67,0,0,70,0, 0,72,0,0,0,70,0,0]; +~m73 = [72,0,0,0,0,0,70,0, 0,0,67,0,0,0,65,0, 0,0,67,0,0,0,70,0, 0,0,72,0,0,0,75,0]; +~m74 = [60,67,72,64,67,71,60,67, 62,65,69,62,65,69,60,67, 64,67,71,64,67,71,60,67, 65,69,72,65,69,72,60,67]; +~m75 = [72,75,79,75,72,75,79,84, 79,75,72,75,72,70,67,65, 67,70,72,75,79,75,72,70, 67,65,67,70,72,70,67,60]; +~m76 = [67,0,70,67,0,65,67,0, 63,0,67,0,70,65,67,0, 75,0,72,70,0,67,65,0, 67,0,70,0,72,75,70,67]; +~m77 = [60,60,67,60,65,60,67,60, 62,62,69,62,67,62,69,62, 63,63,70,63,68,63,70,63, 65,65,72,65,70,65,72,65]; +~m78 = [0,67,0,70,67,0,70,0, 72,0,70,0,67,70,0,65, 0,67,0,70,67,0,75,0, 72,70,0,67,65,0,70,0]; + +"[melodies/short] m1..m78 (32 steps) prets".postln; +) diff --git a/sound_algo/_migrate/palette_melodies_xlong.scd.bak b/sound_algo/_migrate/palette_melodies_xlong.scd.bak new file mode 100644 index 0000000..744e1f3 --- /dev/null +++ b/sound_algo/_migrate/palette_melodies_xlong.scd.bak @@ -0,0 +1,144 @@ +// ===================================================================== +// palette/melodies/xlong.scd +// ~mxl1..~mxl15 -- 15 patterns melodiques de 96 pas (6 mesures, AABA) +// +// Charge par palette/melodies/index.scd. Un seul bloc top-level. +// ===================================================================== +( +~mxl1 = [ + 60, 0, 0, 0, 67, 0, 0, 0, 72, 0, 0, 0, 70, 0, 0, 0, + 60, 0, 0, 0, 67, 0, 70, 0, 72, 0, 0, 0, 75, 0, 72, 70, + 60, 67, 72, 67, 65, 67, 70, 72, 75, 72, 70, 67, 70, 72, 75, 79, + 60, 67, 72, 75, 72, 67, 60, 67, 65, 72, 77, 79, 77, 72, 65, 72, + 79, 77, 75, 72, 79, 77, 75, 72, 82, 79, 77, 75, 84, 82, 79, 77, + 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0, 0 +]; + +~mxl2 = [ + 63, 0, 70, 0, 65, 0, 72, 0, 63, 0, 70, 0, 65, 0, 72, 75, + 65, 0, 72, 0, 67, 0, 75, 0, 65, 0, 72, 0, 67, 0, 75, 79, + 63, 70, 65, 72, 67, 75, 70, 77, 72, 79, 75, 82, 77, 84, 79, 86, + 65, 72, 67, 75, 70, 77, 72, 79, 75, 82, 77, 84, 79, 86, 82, 89, + 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 65, 0, 67, 0, + 65, 67, 63, 65, 60, 63, 65, 67, 63, 65, 60, 63, 0, 0, 0, 0 +]; + +~mxl3 = [ + 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 70, 0, 0, 0, 72, 0, 0, 0, 75, 0, 0, 0, + 77, 0, 0, 0, 75, 0, 0, 0, 72, 0, 0, 0, 70, 0, 0, 0, + 67, 0, 0, 0, 65, 0, 0, 0, 63, 0, 0, 0, 60, 0, 0, 0 +]; + +~mxl4 = [ + 60, 61, 0, 64, 65, 0, 67, 68, 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 68, 71, 72, 71, 68, 67, 65, 64, 61, 60, 0, + 63, 64, 67, 68, 70, 71, 0, 73, 75, 73, 71, 70, 68, 67, 64, 63, + 60, 61, 64, 65, 67, 68, 71, 72, 75, 72, 71, 68, 67, 64, 61, 60, + 65, 67, 68, 71, 72, 73, 76, 75, 76, 75, 73, 72, 71, 68, 67, 65, + 72, 73, 76, 75, 73, 72, 71, 68, 67, 65, 64, 61, 60, 0, 0, 0 +]; + +~mxl5 = [ + 36, 0, 48, 0, 36, 39, 0, 48, 36, 0, 51, 39, 0, 36, 48, 0, + 36, 0, 48, 51, 36, 39, 48, 51, 39, 0, 36, 48, 0, 39, 0, 36, + 36, 51, 48, 36, 39, 0, 51, 48, 36, 0, 51, 53, 39, 36, 48, 0, + 36, 53, 51, 48, 39, 0, 36, 48, 36, 0, 51, 0, 48, 39, 36, 0, + 39, 0, 51, 0, 39, 41, 0, 51, 39, 0, 53, 41, 0, 39, 51, 0, + 36, 39, 41, 43, 41, 39, 36, 0, 36, 0, 48, 0, 36, 0, 0, 0 +]; + +~mxl6 = [ + 67, 0, 72, 0, 70, 0, 67, 65, 63, 0, 67, 0, 70, 0, 72, 75, + 75, 0, 72, 0, 70, 0, 67, 65, 63, 0, 60, 0, 65, 0, 67, 70, + 72, 0, 75, 0, 79, 0, 75, 72, 70, 0, 75, 0, 72, 0, 70, 67, + 72, 0, 75, 0, 79, 0, 82, 79, 75, 0, 79, 0, 75, 0, 72, 70, + 79, 0, 75, 0, 72, 0, 70, 67, 65, 0, 67, 0, 70, 0, 72, 75, + 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0, 0 +]; + +~mxl7 = [ + 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 0, + 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 70, + 63, 70, 67, 0, 63, 70, 67, 0, 65, 72, 70, 0, 65, 72, 70, 75, + 67, 74, 72, 0, 67, 74, 72, 77, 70, 77, 75, 0, 72, 79, 77, 82, + 63, 70, 67, 0, 63, 70, 67, 0, 60, 67, 65, 70, 60, 67, 65, 70, + 60, 67, 65, 0, 60, 67, 65, 0, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~mxl8 = [ + 60, 61, 63, 0, 65, 63, 61, 60, 0, 67, 65, 0, 68, 67, 65, 63, + 60, 61, 63, 0, 65, 63, 61, 60, 67, 65, 63, 61, 60, 0, 0, 0, + 63, 65, 67, 0, 68, 67, 65, 63, 0, 70, 68, 0, 72, 70, 68, 67, + 65, 67, 68, 0, 70, 68, 67, 65, 0, 72, 70, 0, 73, 72, 70, 68, + 67, 68, 70, 0, 72, 70, 68, 67, 65, 63, 61, 60, 61, 63, 65, 67, + 65, 0, 63, 0, 61, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mxl9 = [ + 60, 0, 0, 0, 60, 0, 60, 0, 73, 0, 0, 0, 73, 0, 73, 0, + 60, 60, 0, 73, 73, 0, 60, 73, 79, 0, 73, 0, 60, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 65, 0, 78, 0, 0, 0, 78, 0, 78, 0, + 65, 65, 0, 78, 78, 0, 65, 78, 84, 0, 78, 0, 65, 0, 0, 0, + 67, 0, 0, 0, 67, 0, 80, 0, 80, 67, 80, 67, 80, 84, 80, 67, + 72, 84, 72, 84, 72, 84, 72, 84, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~mxl10 = [ + 67, 67, 0, 70, 72, 0, 70, 67, 65, 0, 67, 0, 0, 0, 0, 0, + 67, 67, 0, 70, 72, 0, 75, 72, 70, 0, 67, 0, 0, 0, 0, 0, + 72, 75, 0, 77, 79, 0, 77, 75, 72, 0, 70, 0, 67, 0, 65, 0, + 77, 79, 0, 80, 79, 0, 77, 75, 72, 0, 75, 0, 77, 0, 79, 0, + 72, 75, 0, 77, 79, 0, 84, 79, 77, 0, 75, 0, 72, 0, 70, 0, + 67, 0, 70, 0, 72, 0, 75, 0, 72, 70, 67, 65, 67, 0, 0, 0 +]; + +~mxl11 = [ + 72, 0, 0, 67, 0, 65, 0, 62, 60, 0, 62, 0, 65, 0, 67, 72, + 74, 0, 0, 69, 0, 67, 0, 65, 62, 0, 65, 0, 67, 0, 72, 0, + 74, 0, 77, 0, 79, 0, 77, 74, 72, 0, 69, 0, 67, 0, 65, 62, + 77, 0, 79, 0, 81, 0, 79, 77, 74, 0, 72, 0, 69, 0, 67, 65, + 79, 81, 84, 86, 84, 81, 79, 77, 74, 72, 69, 67, 65, 62, 60, 0, + 72, 0, 67, 0, 65, 0, 62, 0, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~mxl12 = [ + 48, 0, 54, 0, 48, 0, 54, 0, 60, 0, 54, 0, 48, 0, 54, 0, + 48, 54, 60, 54, 48, 0, 54, 0, 60, 54, 48, 54, 60, 54, 48, 0, + 36, 0, 42, 0, 36, 0, 42, 0, 48, 0, 42, 0, 36, 0, 42, 0, + 48, 54, 60, 66, 60, 54, 48, 42, 36, 42, 48, 54, 60, 54, 48, 36, + 48, 54, 60, 66, 72, 66, 60, 54, 48, 42, 36, 42, 48, 54, 60, 66, + 72, 0, 66, 0, 60, 0, 54, 0, 48, 0, 36, 0, 0, 0, 0, 0 +]; + +~mxl13 = [ + 60, 64, 67, 72, 60, 64, 67, 72, 62, 65, 69, 74, 62, 65, 69, 74, + 63, 67, 70, 75, 63, 67, 70, 75, 60, 64, 67, 72, 65, 67, 70, 72, + 65, 69, 72, 77, 65, 69, 72, 77, 67, 71, 74, 79, 67, 71, 74, 79, + 72, 76, 79, 84, 72, 76, 79, 84, 75, 79, 82, 87, 75, 79, 82, 87, + 79, 83, 86, 91, 79, 83, 86, 91, 77, 81, 84, 89, 77, 81, 84, 89, + 72, 76, 79, 84, 65, 69, 72, 77, 60, 64, 67, 72, 60, 64, 67, 72 +]; + +~mxl14 = [ + 60, 61, 0, 64, 65, 0, 67, 68, 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 0, 68, 71, 72, 71, 68, 67, 65, 64, 61, 60, + 65, 67, 0, 68, 71, 0, 72, 73, 76, 0, 73, 72, 71, 68, 0, 67, + 72, 73, 76, 73, 72, 71, 68, 67, 65, 64, 61, 60, 64, 65, 67, 68, + 71, 72, 73, 76, 79, 76, 73, 72, 71, 68, 67, 65, 64, 61, 60, 61, + 65, 67, 71, 72, 73, 76, 73, 72, 71, 68, 67, 65, 61, 60, 0, 0 +]; + +~mxl15 = [ + 72, 0, 70, 0, 67, 70, 0, 65, 63, 0, 65, 67, 70, 0, 72, 75, + 77, 0, 75, 0, 72, 75, 0, 70, 67, 0, 70, 72, 75, 0, 77, 79, + 75, 0, 77, 0, 75, 72, 0, 70, 67, 0, 65, 67, 70, 0, 75, 72, + 79, 0, 82, 0, 79, 77, 0, 75, 72, 0, 70, 75, 77, 0, 82, 79, + 75, 0, 72, 0, 70, 67, 0, 65, 63, 0, 60, 0, 65, 0, 67, 0, + 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +"[melodies/xlong] mxl1..mxl15 (96 steps) prets".postln; +) diff --git a/sound_algo/_migrate/palette_rhythm_drum_kits.scd.bak b/sound_algo/_migrate/palette_rhythm_drum_kits.scd.bak new file mode 100644 index 0000000..dd1d37f --- /dev/null +++ b/sound_algo/_migrate/palette_rhythm_drum_kits.scd.bak @@ -0,0 +1,268 @@ +// ===================================================================== +// drum_kits.scd +// 21 drum kits complets : +// Originaux : TECHNO / DUBSTEP / DnB / TRAP / HOUSE / BREAKBEAT +// Nouveaux : HARDSTYLE / DRUM'N'BASS / JUNGLE / GARAGE 2-STEP / +// TRAP808 / PHONK / FOOTWORK / LIQUID DnB / SYNTHWAVE / +// INDUSTRIAL / TRIBAL WORLD / HARDCORE / LO-FI HIP-HOP / +// FUTURE GARAGE / DETROIT DEEP +// +// PREREQUIS : engine.scd evalue. Cmd+Entree sur un bloc pour l'appliquer. +// ===================================================================== + + + +// ===================================================================== +// KITS ORIGINAUX (conserves) +// ===================================================================== + +// --- KIT TECHNO ----------------------------------------------------- +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickDrive = 1.3; ~kickClick = 0.2; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; +~snareSteps = (0 ! 16); ~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT TECHNO ===".postln; +) + +// --- KIT DUBSTEP ---------------------------------------------------- +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.6; +~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.5; ~kickDrive = 1.5; ~kickClick = 0.15; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~snareFreq = 220; ~snareNoiseAmt = 0.65; ~snareDecay = 0.16; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT DUBSTEP ===".postln; +) + +// --- KIT DRUM'N'BASS ----------------------------------------------- +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; ~kickDrive = 1.5; ~kickClick = 0.3; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.5; +~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.12; +~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT DnB ===".postln; +) + +// --- KIT TRAP ------------------------------------------------------ +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq = 42; ~kickPitchAmt = 2.5; ~kickDecay = 0.6; ~kickDrive = 1.2; ~kickClick = 0.08; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.10; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,1,0,0, 1,0,1,0, 0,1,0,1]; ~percAmp = 0.2; +~snareSteps = (0 ! 16); +~reload.value; "=== KIT TRAP ===".postln; +) + +// --- KIT HOUSE ------------------------------------------------------ +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.35; ~kickDrive = 1.2; ~kickClick = 0.12; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; +~snareSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT HOUSE ===".postln; +) + +// --- KIT BREAKBEAT -------------------------------------------------- +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,1, 0,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; ~kickDrive = 1.3; ~kickClick = 0.25; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.45; +~snareFreq = 200; ~snareNoiseAmt = 0.6; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.10; +~percInst = \openHat; ~percSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,0]; ~percAmp = 0.22; +~clapSteps = (0 ! 16); +~reload.value; "=== KIT BREAKBEAT ===".postln; +) + + + +// ===================================================================== +// NOUVEAUX KITS +// ===================================================================== + +// --- KIT HARDSTYLE -- kick gabber + clap large + tail "reverse" ----- +( +~kickSteps = [1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0]; ~kickAmp = 0.65; +~kickFreq = 62; ~kickPitchAmt = 5.5; ~kickDecay = 0.30; ~kickDrive = 4.0; ~kickClick = 0.45; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~snareFreq = 230; ~snareNoiseAmt = 0.7; ~snareDecay = 0.18; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.12; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.45; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,1]; ~percAmp = 0.22; +~reload.value; "=== KIT HARDSTYLE ===".postln; +) + +// --- KIT DRUM'N'BASS PUNCHY (alt) -- kick punchy + amen + hat fast -- +( +~kickSteps = [1,0,0,1, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq = 58; ~kickPitchAmt = 4.5; ~kickDecay = 0.16; ~kickDrive = 1.8; ~kickClick = 0.4; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,1]; ~snareAmp = 0.55; +~snareFreq = 250; ~snareNoiseAmt = 0.75; ~snareDecay = 0.09; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.13; +~clapSteps = (0 ! 16); +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== KIT DRUM'N'BASS PUNCHY ===".postln; +) + +// --- KIT JUNGLE -- chopped breakbeat + ragga rim -------------------- +( +~kickSteps = [1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.20; ~kickDrive = 1.6; ~kickClick = 0.32; +~snareSteps = [0,0,0,0, 1,0,1,0, 0,0,0,1, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq = 220; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; +~hatSteps = [1,1,0,1, 1,0,1,1, 1,1,0,1, 1,0,1,1]; ~hatAmp = 0.12; +~clapSteps = (0 ! 16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.30; +~reload.value; "=== KIT JUNGLE ===".postln; +) + +// --- KIT GARAGE 2-STEP -- clap shuffled + snare pad ----------------- +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.35; ~kickDrive = 1.2; ~kickClick = 0.15; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 0,1,0,0]; ~snareAmp = 0.4; +~snareFreq = 200; ~snareNoiseAmt = 0.55; ~snareDecay = 0.20; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.11; +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = (0 ! 16); +~reload.value; "=== KIT GARAGE 2-STEP ===".postln; +) + +// --- KIT TRAP808 -- 808 boom + clap + hi-hat trap rolls ------------- +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.6; +~kickFreq = 38; ~kickPitchAmt = 1.8; ~kickDecay = 0.85; ~kickDrive = 1.0; ~kickClick = 0.05; +~snareSteps = (0 ! 16); +~hatSteps = [1,1,1,0, 1,1,1,1, 1,1,1,0, 1,1,1,1]; ~hatAmp = 0.09; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; +~percInst = \rim; ~percSteps = [0,0,1,1, 0,1,0,0, 1,0,1,0, 0,1,1,0]; ~percAmp = 0.18; +~reload.value; "=== KIT TRAP808 ===".postln; +) + +// --- KIT PHONK -- cowbell + 808 + pitched snare -------------------- +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.6; +~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.7; ~kickDrive = 1.2; ~kickClick = 0.08; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; +~snareFreq = 280; ~snareNoiseAmt = 0.65; ~snareDecay = 0.14; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.11; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percInst = \cowbell; ~cowbellFreq = 800; +~percSteps = [0,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.32; +~reload.value; "=== KIT PHONK ===".postln; +) + +// --- KIT FOOTWORK -- rapid hat + 808 + clap stutter ----------------- +( +~kickSteps = [1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0]; ~kickAmp = 0.55; +~kickFreq = 42; ~kickPitchAmt = 2.4; ~kickDecay = 0.5; ~kickDrive = 1.3; ~kickClick = 0.10; +~snareSteps = (0 ! 16); +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~clapSteps = [0,0,0,1, 1,0,0,0, 0,0,0,1, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = [0,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,0,1]; ~percAmp = 0.22; +~reload.value; "=== KIT FOOTWORK ===".postln; +) + +// --- KIT LIQUID DnB -- subtle kick + breakbeat + smooth hat --------- +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq = 50; ~kickPitchAmt = 3.0; ~kickDecay = 0.28; ~kickDrive = 1.2; ~kickClick = 0.18; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.42; +~snareFreq = 220; ~snareNoiseAmt = 0.55; ~snareDecay = 0.14; +~hatSteps = [1,0,1,1, 0,1,0,1, 1,0,1,1, 0,1,0,1]; ~hatAmp = 0.09; +~clapSteps = (0 ! 16); +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== KIT LIQUID DnB ===".postln; +) + +// --- KIT SYNTHWAVE -- kick 80s + reverb snare + hat soft ------------ +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.30; ~kickDrive = 1.2; ~kickClick = 0.18; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~snareFreq = 180; ~snareNoiseAmt = 0.55; ~snareDecay = 0.22; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percSteps = (0 ! 16); +~reload.value; "=== KIT SYNTHWAVE ===".postln; +) + +// --- KIT INDUSTRIAL -- kick metal + snare reverse + perc clang ------ +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; ~kickDrive = 3.5; ~kickClick = 0.4; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~snareFreq = 260; ~snareNoiseAmt = 0.8; ~snareDecay = 0.10; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.13; +~clapSteps = (0 ! 16); +~percInst = \rim; ~percSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,1]; ~percAmp = 0.4; +~reload.value; "=== KIT INDUSTRIAL ===".postln; +) + +// --- KIT TRIBAL WORLD -- perc layered + kick small + shaker --------- +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.4; +~kickFreq = 48; ~kickPitchAmt = 2.2; ~kickDecay = 0.4; ~kickDrive = 1.0; ~kickClick = 0.06; +~snareSteps = (0 ! 16); +~hatSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,0,1,1]; ~hatAmp = 0.08; +~clapSteps = (0 ! 16); +~percInst = \tom; ~tomFreq = 95; +~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; ~percAmp = 0.4; +~reload.value; "=== KIT TRIBAL WORLD ===".postln; +) + +// --- KIT HARDCORE -- kick sature + snare 909 distordu + claps ------- +( +~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.65; +~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.20; ~kickDrive = 4.0; ~kickClick = 0.35; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq = 240; ~snareNoiseAmt = 0.85; ~snareDecay = 0.10; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.12; +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.42; +~percSteps = (0 ! 16); +~reload.value; "=== KIT HARDCORE ===".postln; +) + +// --- KIT LO-FI HIP-HOP -- kick muted + snare vinyl + perc dust ------ +( +~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~kickAmp = 0.45; +~kickFreq = 45; ~kickPitchAmt = 2.0; ~kickDecay = 0.55; ~kickDrive = 1.0; ~kickClick = 0.04; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.40; +~snareFreq = 190; ~snareNoiseAmt = 0.45; ~snareDecay = 0.15; +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.08; +~clapSteps = (0 ! 16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.14; +~reload.value; "=== KIT LO-FI HIP-HOP ===".postln; +) + +// --- KIT FUTURE GARAGE -- kick rolling + snare ghost + 16th hat ----- +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.5; ~kickDrive = 1.2; ~kickClick = 0.10; +~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,1,0,0]; ~snareAmp = 0.30; +~snareFreq = 210; ~snareNoiseAmt = 0.5; ~snareDecay = 0.15; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.10; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.32; +~percSteps = (0 ! 16); +~reload.value; "=== KIT FUTURE GARAGE ===".postln; +) + +// --- KIT DETROIT DEEP -- kick 909 + clap warm + perc minimal -------- +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.32; ~kickDrive = 1.3; ~kickClick = 0.16; +~snareSteps = (0 ! 16); +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.13; +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== KIT DETROIT DEEP ===".postln; +) + + + diff --git a/sound_algo/_migrate/palette_rhythm_fills.scd.bak b/sound_algo/_migrate/palette_rhythm_fills.scd.bak new file mode 100644 index 0000000..ba60fda --- /dev/null +++ b/sound_algo/_migrate/palette_rhythm_fills.scd.bak @@ -0,0 +1,37 @@ +// ===================================================================== +// fills.scd +// Helpers rythmiques : ~snareFill / ~tomFill +// +// PREREQUIS : engine.scd evalue. Cmd+Entree sur le bloc pour l'appliquer. +// Compatible avec .load (un seul bloc top-level). +// ===================================================================== + +( +// --- Snare fill (8 hits sur 1s, accelerando d'amp) ----------------- +~snareFill = { |hits = 8, dur = 1, ampStart = 0.3, ampEnd = 0.5| + Routine({ + hits.do { |k| + var a = ampStart + ((ampEnd - ampStart) * (k / hits.max(1))); + Synth(\snare, [\amp, a, \decay, 0.06, \freq, 200 + (k * 10)]); + (dur / hits).wait; + }; + }).play; +}; + +// --- Tom fill (descente sur 4 toms) ------------------------------- +~tomFill = { + Routine({ + [180, 140, 110, 85].do { |f| + Synth(\tom, [\freq, f, \decay, 0.25, \amp, 0.5]); + 0.15.wait; + }; + }).play; +}; + +"helpers ~snareFill / ~tomFill prets".postln; +) + +// Exemples manuels (Cmd+Entree, ne PAS evaluer au .load) : + ( ~snareFill.value; ) // fill standard 8 hits / 1s + ( ~snareFill.(16, 2, 0.2, 0.55); ) // fill long accelerando + ( ~tomFill.value; ) // descente 4 toms diff --git a/sound_algo/_migrate/palette_rhythm_kicks.scd.bak b/sound_algo/_migrate/palette_rhythm_kicks.scd.bak new file mode 100644 index 0000000..2a12ba3 --- /dev/null +++ b/sound_algo/_migrate/palette_rhythm_kicks.scd.bak @@ -0,0 +1,223 @@ +// ===================================================================== +// kicks.scd +// ~25 patterns kick (K1-K25) + ~12 timbres kick (T1-T12) +// +// PREREQUIS : engine.scd evalue. Cmd+Entree sur un bloc pour l'appliquer. +// +// En plus des blocs auto-applicants, chaque pattern est stocke dans +// ~kK1..~kK25 (tableau 16 steps brut, sans appliquer). Util pour +// ~seqPlay.([[16, { ~kickSteps = ~kK3; ~reload.value }], ...]) +// cf. palette/sequences.scd. +// ===================================================================== + + + +// ===================================================================== +// STOCKAGE (variables ~kK1..~kK25) -- evaluer ce bloc une fois pour +// enregistrer tous les patterns sous forme de variables reutilisables +// par sequences.scd. +// ===================================================================== +( +// --- 4-on-floor classique ------------------------------------------- +~kK1 = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; +// --- techno syncope (8th deplaces) ---------------------------------- +~kK2 = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; +// --- gabber double-temps (toutes 8th notes) ------------------------- +~kK3 = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; +// --- dembow / latin (1 + 1+e + 3 + 3+e) ----------------------------- +~kK4 = [ 1,0,0,1, 0,0,1,0, 1,0,0,1, 0,0,1,0 ]; +// --- half-time (1 et 9 -- dubstep / phonk / hip-hop) ---------------- +~kK5 = [ 1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; +// --- breakbeat amen-like -------------------------------------------- +~kK6 = [ 1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0 ]; +// --- techno triplet feel (3 over 4) --------------------------------- +~kK7 = [ 1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,1 ]; +// --- minimal -- 1 kick par mesure (downtempo) ----------------------- +~kK8 = [ 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ]; + +// --- 4-on-floor + ghost offbeat (techno minimal) -------------------- +~kK9 = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; +// --- 4-on-floor syncope avancee ------------------------------------- +~kK10 = [ 1,0,1,0, 1,0,0,1, 1,0,1,0, 1,0,1,1 ]; +// --- double-time (1, 5, 9, 13 + 3, 7, 11, 15) ----------------------- +~kK11 = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; +// --- breakbeat (drum'n'bass / jungle base) -------------------------- +~kK12 = [ 1,0,0,1, 0,0,0,0, 0,0,1,0, 0,0,1,0 ]; +// --- amen break kick pattern (jungle origine) ----------------------- +~kK13 = [ 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 ]; +// --- gabber dense (kick sur tous 16th) ------------------------------ +~kK14 = [ 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1 ]; +// --- hardstyle (kick + reverse + tail simulee) ---------------------- +~kK15 = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0 ]; +// --- techno minimal kick fantome ------------------------------------ +~kK16 = [ 1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0 ]; +// --- trance gros kick (4/4 punchy + ghost 16) ----------------------- +~kK17 = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,1 ]; +// --- house classique (kick 4/4 + offbeat hat impl) ------------------ +~kK18 = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; +// --- electro syncope ------------------------------------------------ +~kK19 = [ 1,0,0,1, 0,0,0,0, 1,0,0,0, 0,0,1,0 ]; +// --- trip-hop lazy -------------------------------------------------- +~kK20 = [ 1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0 ]; +// --- jungle rapid breakbeat ----------------------------------------- +~kK21 = [ 1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0 ]; +// --- reggae / dub one-drop (kick sur 3) ----------------------------- +~kK22 = [ 0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; +// --- afrobeat (kick polyrhythmique) --------------------------------- +~kK23 = [ 1,0,0,1, 0,1,0,0, 1,0,1,0, 0,1,0,0 ]; +// --- garage 2-step -------------------------------------------------- +~kK24 = [ 1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0 ]; +// --- footwork / juke (160 BPM, kick triple) ------------------------- +~kK25 = [ 1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0 ]; +"=== kicks : 25 patterns stockes dans ~kK1..~kK25 ===".postln; +) + + + +// ===================================================================== +// PATTERNS RYTHMIQUES (blocs auto-applicants) +// ===================================================================== + +// --- K1 : 4-on-the-floor (defaut) ----------------------------------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; ~reload.value; "K1 4/4".postln; ) + +// --- K2 : techno syncope (8th notes deplaces) ----------------------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; ~reload.value; "K2 syncope".postln; ) + +// --- K3 : gabber double-temps (toutes les 2 doubles-croches) -------- +( ~kickSteps = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; ~reload.value; "K3 gabber".postln; ) + +// --- K4 : dembow / latin (1 + 1+e + 3 + 3+e) ------------------------ +( ~kickSteps = [ 1,0,0,1, 0,0,1,0, 1,0,0,1, 0,0,1,0 ]; ~reload.value; "K4 dembow".postln; ) + +// --- K5 : half-time (kick 1 et 9 -- dubstep/phonk/hip-hop) ---------- +( ~kickSteps = [ 1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; ~reload.value; "K5 half-time".postln; ) + +// --- K6 : breakbeat (Amen-like) ------------------------------------- +( ~kickSteps = [ 1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0 ]; ~reload.value; "K6 breakbeat".postln; ) + +// --- K7 : techno triplet feel (3 over 4) ---------------------------- +( ~kickSteps = [ 1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,1 ]; ~reload.value; "K7 triplet feel".postln; ) + +// --- K8 : minimal -- 1 kick par mesure (downtempo) ----------------- +( ~kickSteps = [ 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ]; ~reload.value; "K8 minimal".postln; ) + +// --- K9 : 4-on-floor + ghost offbeat (techno minimaliste) ---------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; ~reload.value; "K9 minimal ghost".postln; ) + +// --- K10 : 4-on-floor syncope avance (drive +) --------------------- +( ~kickSteps = [ 1,0,1,0, 1,0,0,1, 1,0,1,0, 1,0,1,1 ]; ~reload.value; "K10 syncope avance".postln; ) + +// --- K11 : double-time (8th sur tous les temps) -------------------- +( ~kickSteps = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; ~reload.value; "K11 double-time".postln; ) + +// --- K12 : breakbeat irregulier (DnB / jungle) --------------------- +( ~kickSteps = [ 1,0,0,1, 0,0,0,0, 0,0,1,0, 0,0,1,0 ]; ~reload.value; "K12 breakbeat irreg".postln; ) + +// --- K13 : amen break kick pattern (jungle classique) -------------- +( ~kickSteps = [ 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 ]; ~reload.value; "K13 amen break".postln; ) + +// --- K14 : gabber tres dense (kick partout) ------------------------ +( ~kickSteps = [ 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1 ]; ~reload.value; "K14 gabber dense".postln; ) + +// --- K15 : hardstyle (kick + reverse + tail simulee) --------------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0 ]; ~reload.value; "K15 hardstyle".postln; ) + +// --- K16 : techno minimaliste avec kick fantome -------------------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0 ]; ~reload.value; "K16 techno minimal".postln; ) + +// --- K17 : trance kick gros + ghost 16 ------------------------------ +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,1 ]; ~reload.value; "K17 trance".postln; ) + +// --- K18 : house 4/4 classique -------------------------------------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; ~reload.value; "K18 house".postln; ) + +// --- K19 : electro syncope ------------------------------------------ +( ~kickSteps = [ 1,0,0,1, 0,0,0,0, 1,0,0,0, 0,0,1,0 ]; ~reload.value; "K19 electro".postln; ) + +// --- K20 : trip-hop lazy kick --------------------------------------- +( ~kickSteps = [ 1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0 ]; ~reload.value; "K20 trip-hop".postln; ) + +// --- K21 : jungle rapid breakbeat ----------------------------------- +( ~kickSteps = [ 1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0 ]; ~reload.value; "K21 jungle".postln; ) + +// --- K22 : reggae / dub one-drop (kick sur 3) ----------------------- +( ~kickSteps = [ 0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; ~reload.value; "K22 one-drop".postln; ) + +// --- K23 : afrobeat polyrythmique ----------------------------------- +( ~kickSteps = [ 1,0,0,1, 0,1,0,0, 1,0,1,0, 0,1,0,0 ]; ~reload.value; "K23 afrobeat".postln; ) + +// --- K24 : garage 2-step -------------------------------------------- +( ~kickSteps = [ 1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0 ]; ~reload.value; "K24 2-step".postln; ) + +// --- K25 : footwork / juke (160 BPM, kick triple) ------------------- +( ~kickSteps = [ 1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0 ]; ~reload.value; "K25 footwork".postln; ) + + + +// ===================================================================== +// VARIATIONS DE TIMBRE (T1..T12) +// ===================================================================== + +// --- T1 : kick rond (defaut) -- techno classique -------------------- +( ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.3; ~kickClick = 0.2; + ~reload.value; "T1 rond".postln; ) + +// --- T2 : kick claquant -- snare-like, drive plus haut -------------- +( ~kickFreq = 65; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.45; + ~reload.value; "T2 claquant".postln; ) + +// --- T3 : kick boomy -- queue longue, sub fort, peu de click -------- +( ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.6; + ~kickDrive = 1.2; ~kickClick = 0.08; + ~reload.value; "T3 boomy".postln; ) + +// --- T4 : kick distordu -- gabber/hardcore -------------------------- +( ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~reload.value; "T4 distordu".postln; ) + +// --- T5 : kick sub deep -- pour dub / techno minimal ---------------- +( ~kickFreq = 42; ~kickPitchAmt = 2.0; ~kickDecay = 0.5; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~reload.value; "T5 sub deep".postln; ) + +// --- T6 : kick punchy -- tres tight, snappy attack ------------------ +( ~kickFreq = 70; ~kickPitchAmt = 3.5; ~kickDecay = 0.22; + ~kickDrive = 2.0; ~kickClick = 0.35; + ~reload.value; "T6 punchy".postln; ) + +// --- T7 : clap-style (melange kick + snare body) ------------------- +( ~kickFreq = 75; ~kickPitchAmt = 4.5; ~kickDecay = 0.16; + ~kickDrive = 1.5; ~kickClick = 0.55; + ~reload.value; "T7 clap-style".postln; ) + +// --- T8 : 909 vintage (long decay, soft click) --------------------- +( ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.45; + ~kickDrive = 1.1; ~kickClick = 0.12; + ~reload.value; "T8 909 vintage".postln; ) + +// --- T9 : 808 boom (ultra sub, decay tres long) -------------------- +( ~kickFreq = 38; ~kickPitchAmt = 1.8; ~kickDecay = 0.85; + ~kickDrive = 1.0; ~kickClick = 0.04; + ~reload.value; "T9 808 boom".postln; ) + +// --- T10 : gabber distorded (drive max + click) -------------------- +( ~kickFreq = 62; ~kickPitchAmt = 5.5; ~kickDecay = 0.22; + ~kickDrive = 4.5; ~kickClick = 0.5; + ~reload.value; "T10 gabber distorded".postln; ) + +// --- T11 : breakcore (tres court, metallique) --------------------- +( ~kickFreq = 80; ~kickPitchAmt = 4.0; ~kickDecay = 0.10; + ~kickDrive = 2.5; ~kickClick = 0.6; + ~reload.value; "T11 breakcore".postln; ) + +// --- T12 : dub kick (long sub tail, peu de click) ------------------ +( ~kickFreq = 40; ~kickPitchAmt = 1.5; ~kickDecay = 0.95; + ~kickDrive = 1.0; ~kickClick = 0.03; + ~reload.value; "T12 dub kick".postln; ) + + + diff --git a/sound_algo/_migrate/palette_rhythm_patterns_genre.scd.bak b/sound_algo/_migrate/palette_rhythm_patterns_genre.scd.bak new file mode 100644 index 0000000..bd363b2 --- /dev/null +++ b/sound_algo/_migrate/palette_rhythm_patterns_genre.scd.bak @@ -0,0 +1,579 @@ +// ===================================================================== +// patterns_genre.scd -- Patterns rythmiques signature par genre +// (issus de la deep recherche musicologique) +// +// Chaque preset charge kick/hat/snare/clap/perc en alignement +// authentique au genre. Cmd+Entree = applique le pattern complet. +// ===================================================================== + + + +// ===================================================================== +// ACID TECHNO (135-150) -- 4-on-floor + hihat shuffle 16ths +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=55;~kickPitchAmt=3.0;~kickDecay=0.32;~kickDrive=1.4;~kickClick=0.22; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.13; // shuffle +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.35; // discret +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percSteps = (0!16); +~reload.value; "=== ACID TECHNO 135-150 BPM ===".postln; +) + +// ===================================================================== +// HARD TECHNO (140-148) -- kick punchy distorted + hat 16ths rapide +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=60;~kickPitchAmt=4.5;~kickDecay=0.28;~kickDrive=3.0;~kickClick=0.32; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.14; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.5; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.4; +~percSteps = (0!16); +~reload.value; "=== HARD TECHNO 140-148 BPM ===".postln; +) + +// ===================================================================== +// HYPNOTIC TECHNO (128-135) -- kick discret + ghost snare lointain +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq=50;~kickPitchAmt=2.5;~kickDecay=0.35;~kickDrive=1.0;~kickClick=0.08; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; // tres discret +~snareSteps = (0!16); +~clapSteps = (0!16); +~percSteps = [0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,1,0]; ~percAmp = 0.15; // ghost +~reload.value; "=== HYPNOTIC TECHNO 128-135 BPM ===".postln; +) + +// ===================================================================== +// DUBSTEP (140 half-time) -- kick on 1, snare on 3 (ressenti 70 BPM) +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.6; +~kickFreq=48;~kickPitchAmt=3.5;~kickDecay=0.5;~kickDrive=1.5;~kickClick=0.15; +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.10; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~snareFreq=220;~snareNoiseAmt=0.7;~snareDecay=0.18; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== DUBSTEP 140 BPM half-time ===".postln; +) + +// ===================================================================== +// UPLIFTING TRANCE (138) -- kick 4/4 + offbeat bass + clap 2&4 +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=55;~kickPitchAmt=3.2;~kickDecay=0.28;~kickDrive=1.5;~kickClick=0.20; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; +~percSteps = (0!16); +~reload.value; "=== UPLIFTING TRANCE 138 BPM ===".postln; +) + +// ===================================================================== +// DETROIT TECHNO (124) -- 909 swing 56% + ghost notes +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0]; ~kickAmp = 0.5; // ghost +~kickFreq=52;~kickPitchAmt=2.8;~kickDecay=0.32;~kickDrive=1.3;~kickClick=0.16; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.13; // shuffle +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.32; // ghost claps +~percSteps = (0!16); +~reload.value; "=== DETROIT TECHNO 124 BPM swing ===".postln; +) + +// ===================================================================== +// LIQUID DNB (174) -- amen feel + ghost notes +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=55;~kickPitchAmt=4.0;~kickDecay=0.18;~kickDrive=1.5;~kickClick=0.30; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq=240;~snareNoiseAmt=0.7;~snareDecay=0.10; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== LIQUID DNB 174 BPM amen ===".postln; +) + +// ===================================================================== +// NEUROFUNK (174) -- breakbeat complex + 32th rolls +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,1]; ~kickAmp = 0.55; +~kickFreq=58;~kickPitchAmt=4.5;~kickDecay=0.15;~kickDrive=2.0;~kickClick=0.4; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.14; +~snareSteps = [0,0,0,1, 1,0,0,0, 0,1,0,0, 1,0,1,1]; ~snareAmp = 0.55; +~snareFreq=260;~snareNoiseAmt=0.75;~snareDecay=0.08; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== NEUROFUNK DNB 174 BPM ===".postln; +) + +// ===================================================================== +// FUTURE GARAGE (130-140) -- 2-step syncope, kick irregulier +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=48;~kickPitchAmt=2.5;~kickDecay=0.5;~kickDrive=1.2;~kickClick=0.10; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.10; // skippy +~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,1,0,0]; ~snareAmp = 0.3; // sparse +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.32; +~percSteps = (0!16); +~reload.value; "=== FUTURE GARAGE 2-STEP ===".postln; +) + +// ===================================================================== +// HARDCORE GABBER (180) -- kick gabber distorted intense, hihat absent +// ===================================================================== +( +~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.65; +~kickFreq=60;~kickPitchAmt=5.0;~kickDecay=0.18;~kickDrive=4.0;~kickClick=0.35; +~hatSteps = (0!16); ~hatAmp = 0; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== HARDCORE GABBER 180 BPM ===".postln; +) + +// ===================================================================== +// PHONK (130 half-time) -- cowbell Memphis + 808 + trap hats +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=42;~kickPitchAmt=2.5;~kickDecay=0.6;~kickDrive=1.3;~kickClick=0.10; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.10; // trap triplets +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; +~percInst = \cowbell; ~cowbellFreq = 800; +~percSteps = [0,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.32; +~reload.value; "=== PHONK 130 BPM ===".postln; +) + +// ===================================================================== +// TRIBAL ETHNO (100-128) -- toms polyrhythm 3:4 +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.45; +~kickFreq=48;~kickPitchAmt=2.2;~kickDecay=0.4;~kickDrive=1.1;~kickClick=0.08; +~hatSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,1,0,0]; ~hatAmp = 0.08; // organique +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 90; +~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; ~percAmp = 0.4; +~reload.value; "=== TRIBAL ETHNO 100 BPM ===".postln; +) + +// ===================================================================== +// AMBIENT CINEMATIC (60-80) -- percussions ultra rares + tom solitaire +// ===================================================================== +( +~kickSteps = (0!16); ~kickAmp = 0; +~hatSteps = (0!16); +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 60; +~percSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~percAmp = 0.3; +~reload.value; "=== AMBIENT CINEMATIC -- pas de kick ===".postln; +) + +// ===================================================================== +// CHIPTUNE 8-BIT (150) -- kick triangle sharp, noise burst +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq=80;~kickPitchAmt=4.5;~kickDecay=0.12;~kickDrive=1.4;~kickClick=0.5; // chip kick +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.12; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.40; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== CHIPTUNE 8-BIT 150 BPM ===".postln; +) + +// ===================================================================== +// SYNTHWAVE 80s (100) -- kick + LinnDrum gated snare + hat 8ths +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=55;~kickPitchAmt=3.0;~kickDecay=0.3;~kickDrive=1.2;~kickClick=0.18; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; // gated +~snareFreq=180;~snareNoiseAmt=0.55;~snareDecay=0.20; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; // doubl +~percSteps = (0!16); +~reload.value; "=== SYNTHWAVE 100 BPM ===".postln; +) + +// ===================================================================== +// INDUSTRIAL TECHNO (140-160) -- kick hard distorded + metal hits +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=60;~kickPitchAmt=5.0;~kickDecay=0.28;~kickDrive=3.5;~kickClick=0.4; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.13; // breakbeat +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.4; +~reload.value; "=== INDUSTRIAL TECHNO ===".postln; +) + +// ===================================================================== +// DUB TECHNO (126-130) -- kick muffle + clap echo dub +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq=48;~kickPitchAmt=2.3;~kickDecay=0.45;~kickDrive=1.0;~kickClick=0.06; // muffled +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 0,1,0,0, 0,0,0,0, 0,1,0,0]; ~clapAmp = 0.25; // delay +~percSteps = (0!16); +~reload.value; "=== DUB TECHNO 126 BPM ===".postln; +) + +// ===================================================================== +// GLITCH IDM (variable) -- patterns generes aleatoires +// ===================================================================== +( +~kickSteps = ~genKickPattern.(0.4); +~snareSteps = ~genKickPattern.(0.3); +~hatSteps = ~genKickPattern.(0.7); +~clapSteps = ~genKickPattern.(0.2); +~percSteps = ~genKickPattern.(0.4); +~kickFreq=55;~kickPitchAmt=3.5;~kickDecay=0.18;~kickDrive=2.0;~kickClick=0.3; +~kickAmp = 0.5; ~hatAmp = 0.12; ~snareAmp = 0.45; ~clapAmp = 0.3; ~percAmp = 0.3; +~reload.value; "=== GLITCH IDM random ===".postln; +) + +// ===================================================================== +// DRONE DOOM (60) -- kick massif espace + crash long +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~kickAmp = 0.6; +~kickFreq=40;~kickPitchAmt=2.0;~kickDecay=0.8;~kickDrive=2.0;~kickClick=0.04; +~hatSteps = (0!16); +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 50; +~percSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~percAmp = 0.4; +~reload.value; "=== DRONE DOOM 60 BPM ===".postln; +) + + + +// ===================================================================== +// ===== 21 GENRES SUPPLEMENTAIRES (deuxieme batch) ================= +// ===================================================================== + + + +// ===================================================================== +// HARD TECHNO BERLIN (140-145) -- 4/4 hard kick + open hat sustain +// ===================================================================== +( +~bpm = 142; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.62; +~kickFreq=62;~kickPitchAmt=4.8;~kickDecay=0.26;~kickDrive=3.2;~kickClick=0.36; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.5; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.40; +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.20; +~reload.value; "=== HARD TECHNO BERLIN 142 BPM ===".postln; +) + +// ===================================================================== +// ACID HOUSE 88 BPM (Chicago classique) +// ===================================================================== +( +~bpm = 88; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; +~kickFreq=50;~kickPitchAmt=2.8;~kickDecay=0.38;~kickDrive=1.2;~kickClick=0.10; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.12; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.34; +~percSteps = (0!16); +~reload.value; "=== ACID HOUSE 88 BPM ===".postln; +) + +// ===================================================================== +// TRANCE 138 UPLIFTING (variation grand kick + clap reverb) +// ===================================================================== +( +~bpm = 138; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.58; +~kickFreq=55;~kickPitchAmt=3.5;~kickDecay=0.30;~kickDrive=1.6;~kickClick=0.22; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.42; +~percSteps = [0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,0,1]; ~percAmp = 0.18; +~percInst = \rim; +~reload.value; "=== TRANCE 138 UPLIFTING (V2) ===".postln; +) + +// ===================================================================== +// PSY TRANCE 145 (basse offbeat + kick punchy + hat dense) +// ===================================================================== +( +~bpm = 145; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=58;~kickPitchAmt=4.0;~kickDecay=0.22;~kickDrive=1.8;~kickClick=0.28; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.16; +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.25; +~reload.value; "=== PSY TRANCE 145 BPM ===".postln; +) + +// ===================================================================== +// GOA TRANCE 145 (psy roots, 16th notes acid) +// ===================================================================== +( +~bpm = 145; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=56;~kickPitchAmt=3.5;~kickDecay=0.25;~kickDrive=1.5;~kickClick=0.22; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 100; +~percSteps = [0,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.30; +~reload.value; "=== GOA TRANCE 145 BPM ===".postln; +) + +// ===================================================================== +// HARDSTYLE 150 (kick gabber + reverse kick simulee + clap large) +// ===================================================================== +( +~bpm = 150; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0]; ~kickAmp = 0.65; +~kickFreq=62;~kickPitchAmt=5.5;~kickDecay=0.30;~kickDrive=4.0;~kickClick=0.45; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.45; +~percSteps = (0!16); +~reload.value; "=== HARDSTYLE 150 BPM ===".postln; +) + +// ===================================================================== +// HANDS UP TRANCE 150 (eurodance moderne, clap large) +// ===================================================================== +( +~bpm = 150; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=58;~kickPitchAmt=3.8;~kickDecay=0.26;~kickDrive=1.6;~kickClick=0.25; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.20; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.45; +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.22; +~reload.value; "=== HANDS UP TRANCE 150 BPM ===".postln; +) + +// ===================================================================== +// LIQUID DNB 174 (alt) -- amen smooth + ghost note + open hat +// ===================================================================== +( +~bpm = 174; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=52;~kickPitchAmt=3.5;~kickDecay=0.20;~kickDrive=1.3;~kickClick=0.25; +~hatSteps = [1,0,1,1, 0,1,0,1, 1,0,1,1, 0,1,0,1]; ~hatAmp = 0.11; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; +~snareFreq=220;~snareNoiseAmt=0.55;~snareDecay=0.13; +~clapSteps = (0!16); +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== LIQUID DNB 174 BPM (V2) ===".postln; +) + +// ===================================================================== +// NEUROFUNK DNB 174 (alt) -- snare reese + breakbeat hard +// ===================================================================== +( +~bpm = 174; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,1, 0,0,1,0, 0,0,1,1, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=60;~kickPitchAmt=4.8;~kickDecay=0.14;~kickDrive=2.2;~kickClick=0.42; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,0,1, 1,1,1,0]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,1, 1,0,0,0, 0,1,0,0, 1,0,1,1]; ~snareAmp = 0.6; +~snareFreq=270;~snareNoiseAmt=0.8;~snareDecay=0.07; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== NEUROFUNK DNB 174 BPM (V2) ===".postln; +) + +// ===================================================================== +// JUNGLE 165 (chopped breakbeat + ragga rim) +// ===================================================================== +( +~bpm = 165; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=55;~kickPitchAmt=3.5;~kickDecay=0.20;~kickDrive=1.6;~kickClick=0.32; +~hatSteps = [1,1,0,1, 1,0,1,1, 1,1,0,1, 1,0,1,1]; ~hatAmp = 0.12; +~snareSteps = [0,0,0,0, 1,0,1,0, 0,0,0,1, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq=220;~snareNoiseAmt=0.7;~snareDecay=0.10; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.30; +~reload.value; "=== JUNGLE 165 BPM ===".postln; +) + +// ===================================================================== +// DRUM & BASS JUMP-UP 174 (kick funky + snare bouncy) +// ===================================================================== +( +~bpm = 174; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,1,1,0, 0,0,1,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=58;~kickPitchAmt=4.2;~kickDecay=0.18;~kickDrive=1.8;~kickClick=0.35; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~snareFreq=240;~snareNoiseAmt=0.7;~snareDecay=0.10; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== DNB JUMP-UP 174 BPM ===".postln; +) + +// ===================================================================== +// FUTURE BASS 150 (half-time, snare large, hat trap) +// ===================================================================== +( +~bpm = 150; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.55; +~kickFreq=48;~kickPitchAmt=3.0;~kickDecay=0.45;~kickDrive=1.4;~kickClick=0.15; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.10; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~snareFreq=210;~snareNoiseAmt=0.6;~snareDecay=0.20; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,0,0,1]; ~percAmp = 0.18; +~reload.value; "=== FUTURE BASS 150 BPM ===".postln; +) + +// ===================================================================== +// DEEP HOUSE 122 (kick warm + clap soft + hat shuffled) +// ===================================================================== +( +~bpm = 122; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; +~kickFreq=48;~kickPitchAmt=2.5;~kickDecay=0.40;~kickDrive=1.1;~kickClick=0.10; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.16; +~reload.value; "=== DEEP HOUSE 122 BPM ===".postln; +) + +// ===================================================================== +// TECH HOUSE 126 (groove tight + hat 16th + clap tight) +// ===================================================================== +( +~bpm = 126; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=52;~kickPitchAmt=2.8;~kickDecay=0.32;~kickDrive=1.3;~kickClick=0.18; +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.15; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.34; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,0,0,1]; ~percAmp = 0.22; +~reload.value; "=== TECH HOUSE 126 BPM ===".postln; +) + +// ===================================================================== +// PROGRESSIVE HOUSE 124 (kick pad + clap echo + hat air) +// ===================================================================== +( +~bpm = 124; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.52; +~kickFreq=50;~kickPitchAmt=2.6;~kickDecay=0.36;~kickDrive=1.2;~kickClick=0.12; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.20; +~reload.value; "=== PROGRESSIVE HOUSE 124 BPM ===".postln; +) + +// ===================================================================== +// TRIBAL TECHNO 130 (toms layered + kick warm + percussions dense) +// ===================================================================== +( +~bpm = 130; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; +~kickFreq=50;~kickPitchAmt=2.6;~kickDecay=0.34;~kickDrive=1.2;~kickClick=0.12; +~hatSteps = [0,0,1,0, 0,1,0,1, 0,0,1,0, 0,1,0,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 95; +~percSteps = [1,0,0,1, 0,1,1,0, 1,0,0,1, 0,1,1,0]; ~percAmp = 0.40; +~reload.value; "=== TRIBAL TECHNO 130 BPM ===".postln; +) + +// ===================================================================== +// INDUSTRIAL 145 (alt sombre, perc clang) +// ===================================================================== +( +~bpm = 145; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,1,0, 1,0,0,0, 1,0,1,0]; ~kickAmp = 0.62; +~kickFreq=62;~kickPitchAmt=5.2;~kickDecay=0.28;~kickDrive=3.8;~kickClick=0.42; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~snareFreq=270;~snareNoiseAmt=0.85;~snareDecay=0.08; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [1,0,0,1, 1,0,1,0, 1,0,0,1, 1,0,1,1]; ~percAmp = 0.45; +~reload.value; "=== INDUSTRIAL 145 BPM (V2) ===".postln; +) + +// ===================================================================== +// BREAKCORE 200+ (kick hyperdense + breakbeat + snare metallic) +// ===================================================================== +( +~bpm = 200; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,1,0,1]; ~kickAmp = 0.55; +~kickFreq=80;~kickPitchAmt=4.0;~kickDecay=0.10;~kickDrive=2.5;~kickClick=0.6; +~hatSteps = [1,1,1,1, 1,0,1,1, 1,1,0,1, 1,1,1,1]; ~hatAmp = 0.12; +~snareSteps = [0,1,0,1, 0,0,1,1, 1,0,0,1, 0,1,1,0]; ~snareAmp = 0.55; +~snareFreq=290;~snareNoiseAmt=0.85;~snareDecay=0.06; +~clapSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~clapAmp = 0.30; +~percSteps = (0!16); +~reload.value; "=== BREAKCORE 200 BPM ===".postln; +) + +// ===================================================================== +// FOOTWORK 160 (juke triplet kick + clap stutter) +// ===================================================================== +( +~bpm = 160; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0]; ~kickAmp = 0.55; +~kickFreq=42;~kickPitchAmt=2.4;~kickDecay=0.50;~kickDrive=1.3;~kickClick=0.10; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = [0,0,0,1, 1,0,0,0, 0,0,0,1, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = [0,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,0,1]; ~percAmp = 0.22; +~reload.value; "=== FOOTWORK 160 BPM ===".postln; +) + +// ===================================================================== +// IDM (intelligent dance music, variable, glitchy random) +// ===================================================================== +( +~bpm = 130; TempoClock.default.tempo = ~bpm/60; +~kickSteps = ~genKickPattern.(0.35); +~snareSteps = ~genKickPattern.(0.25); +~hatSteps = ~genKickPattern.(0.65); +~clapSteps = ~genKickPattern.(0.18); +~percSteps = ~genKickPattern.(0.40); +~kickFreq=55;~kickPitchAmt=3.2;~kickDecay=0.22;~kickDrive=1.8;~kickClick=0.28; +~kickAmp = 0.5; ~hatAmp = 0.12; ~snareAmp = 0.45; ~clapAmp = 0.28; ~percAmp = 0.30; +~reload.value; "=== IDM (random) ===".postln; +) + +// ===================================================================== +// GLITCH HOP 110 (half-time hip-hop + glitch perc) +// ===================================================================== +( +~bpm = 110; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,0,0,1, 0,0,1,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=45;~kickPitchAmt=2.5;~kickDecay=0.45;~kickDrive=1.3;~kickClick=0.15; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.11; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.50; +~snareFreq=220;~snareNoiseAmt=0.6;~snareDecay=0.12; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = ~genKickPattern.(0.5); ~percAmp = 0.25; +~reload.value; "=== GLITCH HOP 110 BPM ===".postln; +) + diff --git a/sound_algo/_migrate/palette_rhythm_percussions.scd.bak b/sound_algo/_migrate/palette_rhythm_percussions.scd.bak new file mode 100644 index 0000000..0e60e0c --- /dev/null +++ b/sound_algo/_migrate/palette_rhythm_percussions.scd.bak @@ -0,0 +1,194 @@ +// ===================================================================== +// percussions.scd +// ~25 patterns clap + perc + ~12 timbres perc selectionnable +// +// PREREQUIS : engine.scd evalue. Cmd+Entree sur un bloc pour l'appliquer. +// +// SynthDef percussion disponibles dans engine.scd : +// \rim, \cowbell, \tom, \openHat +// (\crash existe aussi mais hors selecteur ~percInst standard) +// SynthDef percussion bonus dans synth/_index.scd : +// \taiko, \tabla (utilisable via ~percInst = \taiko;) +// +// Storage : +// ~clC1..~clC12 = patterns clap +// ~pcP1..~pcP15 = patterns perc generale +// Util par sequences.scd pour sequencer les changements automatiques. +// ===================================================================== + + + +// ===================================================================== +// STOCKAGE -- evaluer ce bloc une fois pour enregistrer toutes les +// variables reutilisables. +// ===================================================================== +( +// --- Patterns clap (~clC1..~clC12) ---------------------------------- +~clC1 = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; // backbeat 2 et 4 +~clC2 = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,0,0,0]; // techno minimal : 4 seul +~clC3 = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; // offbeat (entre beats) +~clC4 = [1,1,1,0, 0,0,0,0, 1,1,1,0, 0,0,0,0]; // roll/flam (3 claps) +~clC5 = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,1]; // house ghost +~clC6 = [0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; // dubstep gros (sur 3) +~clC7 = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; // trance fort 2/4 +~clC8 = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; // reggae 1 et 3 +~clC9 = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,0,0]; // garage shuffled +~clC10 = [0,0,1,0, 1,0,0,1, 0,0,1,0, 1,0,0,1]; // dense funk +~clC11 = [0,0,0,1, 1,0,0,0, 0,0,0,1, 1,0,0,0]; // stutter trap +~clC12 = (0 ! 16); // mute + +// --- Patterns perc generale (~pcP1..~pcP15) ------------------------- +~pcP1 = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; // offbeat techno +~pcP2 = [1,0,1,1, 0,0,1,0, 1,1,0,1, 0,1,1,0]; // trap ghosts +~pcP3 = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; // tribal congas +~pcP4 = [1,0,0,1, 0,0,1,0, 0,0,1,0, 0,0,0,0]; // clave 3-2 +~pcP5 = [0,0,1,0, 0,0,1,0, 1,0,0,1, 0,0,1,0]; // clave 2-3 +~pcP6 = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; // tambourine 8th +~pcP7 = [1,0,0,0, 0,1,0,0, 1,0,0,1, 0,1,0,0]; // cowbell tribal +~pcP8 = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; // rim shot offbeat +~pcP9 = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; // open hat techno +~pcP10 = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; // closed hat 16th +~pcP11 = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,1,0,1]; // shaker rapide +~pcP12 = [1,0,1,0, 0,1,0,1, 1,0,0,1, 0,1,0,1]; // bongo polyrythme +~pcP13 = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,1,1,1]; // tom roll fill +~pcP14 = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; // perc sur le beat +~pcP15 = (0 ! 16); // mute +"=== percussions : 12 claps + 15 perc patterns stockes ===".postln; +) + + + +// ===================================================================== +// CLAP PATTERNS (blocs auto-applicants) +// ===================================================================== + +// --- C1 : clap backbeat (5+13) ---- classique ------------------------ +( ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~reload.value; "C1 clap backbeat 2/4".postln; ) + +// --- C2 : clap techno minimal (sur 4 seul) -------------------------- +( ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.4; + ~reload.value; "C2 clap minimal sur 4".postln; ) + +// --- C3 : clap offbeat (entre les beats) ---------------------------- +( ~clapSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~clapAmp = 0.3; + ~reload.value; "C3 clap offbeat".postln; ) + +// --- C4 : clap roll/flam (3 claps rapides) -------------------------- +( ~clapSteps = [1,1,1,0, 0,0,0,0, 1,1,1,0, 0,0,0,0]; ~clapAmp = 0.32; + ~reload.value; "C4 clap roll/flam".postln; ) + +// --- C5 : clap house ghost (2/4 + ghost) ---------------------------- +( ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.34; + ~reload.value; "C5 clap house".postln; ) + +// --- C6 : clap dubstep (sur 3, gros) -------------------------------- +( ~clapSteps = [0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~clapAmp = 0.5; + ~reload.value; "C6 clap dubstep".postln; ) + +// --- C7 : clap trance (fort 2 et 4) --------------------------------- +( ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.42; + ~reload.value; "C7 clap trance".postln; ) + +// --- C8 : clap reggae (sur 1 et 3) ---------------------------------- +( ~clapSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~clapAmp = 0.30; + ~reload.value; "C8 clap reggae".postln; ) + +// --- Clap mute ------------------------------------------------------ +( ~clapSteps = (0 ! 16); ~reload.value; "clap mute".postln; ) + + + +// ===================================================================== +// SELECTEUR D'INSTRUMENT PERC (~percInst) +// SynthDef disponibles : \rim \cowbell \tom \openHat +// Bonus si authentic.scd charge : \taiko, \tabla +// ===================================================================== + +( ~percInst = \rim; ~reload.value; "perc = rim".postln; ) +( ~percInst = \cowbell; ~reload.value; "perc = cowbell".postln; ) +( ~percInst = \tom; ~reload.value; "perc = tom".postln; ) +( ~percInst = \openHat; ~reload.value; "perc = openHat".postln; ) +// --- Bonus (si synth/_index.scd evalue) ------------------------------ +( ~percInst = \taiko; ~reload.value; "perc = taiko (authentic)".postln; ) +( ~percInst = \tabla; ~reload.value; "perc = tabla (authentic)".postln; ) + + + +// ===================================================================== +// PATTERNS PERCUSSION GENERALE (utilise ~percInst courant) +// ===================================================================== + +// --- P1 : offbeat techno (defaut) ----------------------------------- +( ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.25; + ~reload.value; "P1 perc offbeat".postln; ) + +// --- P2 : trap ghosts ---------------------------------------------- +( ~percSteps = [1,0,1,1, 0,0,1,0, 1,1,0,1, 0,1,1,0]; ~percAmp = 0.18; + ~reload.value; "P2 perc trap ghosts".postln; ) + +// --- P3 : tribal congas (utiliser ~percInst = \tom) ---------------- +( ~percInst = \tom; ~tomFreq = 90; + ~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; ~percAmp = 0.4; + ~reload.value; "P3 tribal congas (tom)".postln; ) + +// --- P4 : clave 3-2 (afro-cubain classique) ------------------------ +( ~percInst = \rim; + ~percSteps = [1,0,0,1, 0,0,1,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.35; + ~reload.value; "P4 clave 3-2 (rim)".postln; ) + +// --- P5 : clave 2-3 (variation) ------------------------------------ +( ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.35; + ~reload.value; "P5 clave 2-3 (rim)".postln; ) + +// --- P6 : tambourine sur 8th notes --------------------------------- +( ~percInst = \rim; + ~percSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~percAmp = 0.22; + ~reload.value; "P6 tambourine 8th".postln; ) + +// --- P7 : cowbell tribal ------------------------------------------- +( ~percInst = \cowbell; ~cowbellFreq = 800; + ~percSteps = [1,0,0,0, 0,1,0,0, 1,0,0,1, 0,1,0,0]; ~percAmp = 0.32; + ~reload.value; "P7 cowbell tribal".postln; ) + +// --- P8 : rim shot offbeat ----------------------------------------- +( ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.30; + ~reload.value; "P8 rim offbeat".postln; ) + +// --- P9 : open hat sur offbeat (techno) ---------------------------- +( ~percInst = \openHat; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.25; + ~reload.value; "P9 openHat offbeat".postln; ) + +// --- P10 : closed hat 16th (perc layer) ---------------------------- +( ~percInst = \rim; + ~percSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~percAmp = 0.12; + ~reload.value; "P10 hat 16th (rim layer)".postln; ) + +// --- P11 : shaker rapide ------------------------------------------- +( ~percInst = \rim; + ~percSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,1,0,1]; ~percAmp = 0.15; + ~reload.value; "P11 shaker rapide (rim)".postln; ) + +// --- P12 : bongo polyrythme (3:4 contre kick) ---------------------- +( ~percInst = \tom; ~tomFreq = 110; + ~percSteps = [1,0,1,0, 0,1,0,1, 1,0,0,1, 0,1,0,1]; ~percAmp = 0.32; + ~reload.value; "P12 bongo polyrythme (tom)".postln; ) + +// --- P13 : tom roll fill (4 dernieres steps) ----------------------- +( ~percInst = \tom; ~tomFreq = 100; + ~percSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,1,1,1]; ~percAmp = 0.45; + ~reload.value; "P13 tom roll fill".postln; ) + +// --- P14 : perc sur le beat (renforce kick) ------------------------ +( ~percInst = \cowbell; ~cowbellFreq = 600; + ~percSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~percAmp = 0.20; + ~reload.value; "P14 perc on beat".postln; ) + +// --- Perc mute ----------------------------------------------------- +( ~percSteps = (0 ! 16); ~reload.value; "perc mute".postln; ) + + + diff --git a/sound_algo/_migrate/palette_rhythm_sequences.scd.bak b/sound_algo/_migrate/palette_rhythm_sequences.scd.bak new file mode 100644 index 0000000..47928e6 --- /dev/null +++ b/sound_algo/_migrate/palette_rhythm_sequences.scd.bak @@ -0,0 +1,578 @@ +// ===================================================================== +// sequences.scd -- Sequences de patterns automatiques (macros temps) +// +// CONCEPT +// Une sequence est une Routine qui change ~kickSteps / ~melodyNotes / +// etc. a intervalles reguliers. 1 step = ~stepDur (defaut 0.25 = 1/16). +// Donc 16 steps = 1 mesure 4/4 a 0.25 dur. +// +// PREREQUIS +// engine.scd evalue (definit ~kickSteps, ~reload, etc.). +// palette/kicks.scd evalue le bloc STOCKAGE pour avoir ~kK1..~kK25. +// palette/percussions.scd evalue le bloc STOCKAGE pour ~clC*, ~pcP*. +// +// HELPERS exposes +// ~seqPlay.(actions) joue [[steps, action], ...] +// ~seqStop.() stoppe la sequence courante +// ~seqLoop.(actions, repeats) enchaine actions en boucle N fois +// ~seqEvolve.(steps, mutator) mute progressivement toutes N steps +// ~beatChainPlay.(presets) enchaine plusieurs presets nommes +// ~stepDur duree d'un step (defaut 0.25) +// +// SEQUENCES PRE-CONSTRUITES (~seqXxx.()) +// seqIntro seqBuildup seqBreakdown seqDrop +// seqOutro seqTechnoLoop seqAcidEvolve seqDubstepDrop +// seqTrance16 seqDnBSwitch seqHipHopLoop seqWorldEvolve +// ===================================================================== + + + +// ===================================================================== +// HELPERS DE BASE -- evaluer ce bloc une fois pour exposer les helpers +// ===================================================================== +( +~stepDur = 0.25; // duree d'un step en battement (1/16 a 4/4) +~currentSeq = nil; // Routine en cours + + +// --- ~seqPlay.([[steps, action], ...]) ------------------------------ +// Joue une suite d'actions a intervalles donnes en steps. +// Stoppe toute sequence precedente avant de demarrer. +~seqPlay = { |actions| + ~seqStop.value; + ~currentSeq = Routine({ + actions.do { |entry| + var steps = entry[0]; + var action = entry[1]; + action.value; + (steps * ~stepDur).wait; + }; + ~currentSeq = nil; + }).play(TempoClock.default); + "=== seqPlay : % steps en cours ===".format(actions.collect(_[0]).sum).postln; +}; + + +// --- ~seqStop.() ---------------------------------------------------- +~seqStop = { + ~currentSeq !? { ~currentSeq.stop; ~currentSeq = nil; "=== seqStop ===".postln }; +}; + + +// --- ~seqLoop.(actions, repeats) ------------------------------------ +// Enchaine la liste d'actions en boucle N fois (defaut 1). +~seqLoop = { |actions, repeats = 1| + var expanded = Array.new(actions.size * repeats); + repeats.do { actions.do { |a| expanded.add(a) } }; + ~seqPlay.value(expanded); + "=== seqLoop : % cycles ===".format(repeats).postln; +}; + + +// --- ~seqEvolve.(steps, mutator) ------------------------------------ +// Appelle 'mutator' en boucle toutes les 'steps' steps. La routine +// tourne jusqu'a seqStop. +~seqEvolve = { |stepsBetween = 16, mutator| + ~seqStop.value; + ~currentSeq = Routine({ + inf.do { |i| + mutator.value(i); + (stepsBetween * ~stepDur).wait; + }; + }).play(TempoClock.default); + "=== seqEvolve : mutator chaque % steps ===".format(stepsBetween).postln; +}; + + +// --- ~beatChainPlay.(presets) --------------------------------------- +// Enchaine plusieurs presets sous forme de [stepsToHold, action]. +// Equivalent a ~seqPlay mais sucre syntaxique pour chains de drumkits. +~beatChainPlay = { |presets| + ~seqPlay.value(presets); +}; + +"=== sequences helpers : ~seqPlay ~seqStop ~seqLoop ~seqEvolve ~beatChainPlay ===".postln; +) + + + +// ===================================================================== +// SEQUENCES PRE-CONSTRUITES +// Evaluer chaque bloc pour DEFINIR la sequence (variable ~seqXxx). +// Ensuite l'invoquer : ~seqIntro.value +// ===================================================================== + + + +// ===================================================================== +// ~seqIntro -- monte progressive sur 64 steps (4 mesures) +// mesure 1 : kick seul +// mesure 2 : kick + hat +// mesure 3 : kick + hat + clap +// mesure 4 : tout (kick + hat + clap + perc) +// ===================================================================== +( +~seqIntro = { + ~seqPlay.value([ + [16, { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~reload.value; + "intro 1/4 : kick seul".postln; + }], + [16, { + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~reload.value; + "intro 2/4 : + hat".postln; + }], + [16, { + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.35; + ~reload.value; + "intro 3/4 : + clap".postln; + }], + [16, { + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~percAmp = 0.25; + ~reload.value; + "intro 4/4 : tout".postln; + }], + ]); +}; +"=== ~seqIntro defini ===".postln; +) + + +// ===================================================================== +// ~seqBuildup -- crescendo trance (riser + cutoff sweep + clap denser) +// Argument optionnel : duree totale en mesures (defaut 4) +// ===================================================================== +( +~seqBuildup = { |bars = 4| + var stepsPerBar = 16; + ~seqPlay.value([ + [stepsPerBar, { + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.30; + ~reload.value; + "buildup 1: hat + clap".postln; + }], + [stepsPerBar, { + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,1,0, 1,0,0,0]; + ~clapAmp = 0.36; + ~reload.value; + "buildup 2: hat 8th + clap dense".postln; + }], + [stepsPerBar, { + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~clapSteps = [0,0,1,0, 1,0,1,0, 0,1,0,1, 1,0,1,0]; + ~clapAmp = 0.40; + ~reload.value; + "buildup 3: hat 16th + clap dense".postln; + }], + [stepsPerBar * (bars - 3).max(1), { + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareAmp = 0.5; + ~reload.value; + "buildup 4: snare roll TENSION".postln; + }], + ]); +}; +"=== ~seqBuildup defini ===".postln; +) + + +// ===================================================================== +// ~seqBreakdown -- reduit a melody seule, puis revient +// ===================================================================== +( +~seqBreakdown = { + var saveKick, saveHat, saveClap, savePerc, saveSnare; + saveKick = ~kickSteps.copy; + saveHat = ~hatSteps.copy; + saveClap = ~clapSteps.copy; + savePerc = ~percSteps.copy; + saveSnare = ~snareSteps.copy; + ~seqPlay.value([ + [32, { + ~kickSteps = (0!16); + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~snareSteps = (0!16); + ~reload.value; + "breakdown : melody seule".postln; + }], + [16, { + ~kickSteps = saveKick; + ~hatSteps = saveHat; + ~clapSteps = saveClap; + ~percSteps = savePerc; + ~snareSteps = saveSnare; + ~reload.value; + "breakdown : retour".postln; + }], + ]); +}; +"=== ~seqBreakdown defini ===".postln; +) + + +// ===================================================================== +// ~seqDrop -- 4 steps silence + 1 step impact + reprise +// ===================================================================== +( +~seqDrop = { + var saveKick, saveHat, saveClap, savePerc, saveSnare; + saveKick = ~kickSteps.copy; + saveHat = ~hatSteps.copy; + saveClap = ~clapSteps.copy; + savePerc = ~percSteps.copy; + saveSnare = ~snareSteps.copy; + ~seqPlay.value([ + [4, { + ~kickSteps = (0!16); + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~snareSteps = (0!16); + ~reload.value; + "drop : SILENCE".postln; + }], + [1, { + // impact one-shot via clap fort + ~clapSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapAmp = 0.7; + ~reload.value; + "drop : IMPACT".postln; + }], + [16, { + ~kickSteps = saveKick; + ~hatSteps = saveHat; + ~clapSteps = saveClap; ~clapAmp = 0.35; + ~percSteps = savePerc; + ~snareSteps = saveSnare; + ~reload.value; + "drop : DROP !!!".postln; + }], + ]); +}; +"=== ~seqDrop defini ===".postln; +) + + +// ===================================================================== +// ~seqOutro -- fade-out progressif sur 32 steps (2 mesures) +// ===================================================================== +( +~seqOutro = { + ~seqPlay.value([ + [8, { + ~percSteps = (0!16); + ~reload.value; + "outro 1 : perc out".postln; + }], + [8, { + ~clapSteps = (0!16); + ~reload.value; + "outro 2 : clap out".postln; + }], + [8, { + ~hatSteps = (0!16); + ~snareSteps = (0!16); + ~reload.value; + "outro 3 : hat + snare out".postln; + }], + [8, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~reload.value; + "outro 4 : kick minimal".postln; + }], + ]); +}; +"=== ~seqOutro defini ===".postln; +) + + +// ===================================================================== +// ~seqTechnoLoop.(repeats) -- enchaine 4 patterns techno mute par mesure +// Necessite kicks.scd STOCKAGE evalue (~kK1..~kK25 dispo) +// ===================================================================== +( +~seqTechnoLoop = { |repeats = 4| + ~seqLoop.value([ + [16, { + ~kickSteps = ~kK1 ? [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~reload.value; "techno A : 4/4".postln; + }], + [16, { + ~kickSteps = ~kK9 ? [1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0]; + ~reload.value; "techno B : ghost".postln; + }], + [16, { + ~kickSteps = ~kK16 ? [1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0]; + ~reload.value; "techno C : minimal".postln; + }], + [16, { + ~kickSteps = ~kK10 ? [1,0,1,0, 1,0,0,1, 1,0,1,0, 1,0,1,1]; + ~reload.value; "techno D : syncope".postln; + }], + ], repeats); +}; +"=== ~seqTechnoLoop defini ===".postln; +) + + +// ===================================================================== +// ~seqAcidEvolve -- acid pattern qui mute progressivement +// Note: lit ~acidNotes / ~acidAccents / ~acidSlides du moteur +// ===================================================================== +( +~seqAcidEvolve = { + ~seqPlay.value([ + [16, { + ~acidNotes = [36,36,36,36, 36,36,36,36, 36,36,36,36, 36,36,36,36]; + ~acidAccents = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~acidSlides = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~reload.value; "acid 1: drone tonic".postln; + }], + [16, { + ~acidNotes = [36,0,39,0, 36,0,43,0, 36,0,39,0, 36,0,43,0]; + ~acidAccents = [1,0,0,0, 1,0,1,0, 1,0,0,0, 1,0,1,0]; + ~reload.value; "acid 2: minor 3rd".postln; + }], + [16, { + ~acidNotes = [36,39,43,36, 39,43,48,43, 36,39,43,48, 43,39,36,43]; + ~acidAccents = [1,0,0,1, 0,1,0,0, 1,0,0,1, 0,0,1,0]; + ~acidSlides = [0,1,0,0, 1,0,1,0, 0,0,1,0, 1,1,0,0]; + ~reload.value; "acid 3: arpege".postln; + }], + [16, { + ~acidNotes = [36,43,39,48, 36,46,43,48, 39,43,48,46, 43,39,48,36]; + ~acidAccents = [1,0,1,1, 0,1,0,1, 1,0,1,0, 0,1,1,0]; + ~acidSlides = [1,1,0,1, 0,0,1,1, 0,1,0,1, 1,0,1,0]; + ~reload.value; "acid 4: full chaos".postln; + }], + ]); +}; +"=== ~seqAcidEvolve defini ===".postln; +) + + +// ===================================================================== +// ~seqDubstepDrop -- pre-drop / drop / breakdown +// ===================================================================== +( +~seqDubstepDrop = { + ~seqPlay.value([ + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~hatAmp = 0.06; + ~kickAmp = 0.4; ~snareAmp = 0.35; + ~reload.value; "dubstep 1: pre-drop tension".postln; + }], + [4, { + ~kickSteps = (0!16); ~snareSteps = (0!16); ~hatSteps = (0!16); + ~reload.value; "dubstep 2: SILENCE".postln; + }], + [32, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~kickAmp = 0.65; ~snareAmp = 0.55; ~hatAmp = 0.10; + ~reload.value; "dubstep 3: DROP !!!".postln; + }], + [16, { + ~kickSteps = (0!16); ~hatSteps = (0!16); + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~snareAmp = 0.4; + ~reload.value; "dubstep 4: breakdown".postln; + }], + ]); +}; +"=== ~seqDubstepDrop defini ===".postln; +) + + +// ===================================================================== +// ~seqTrance16 -- 16 mesures de trance avec build implicite +// ===================================================================== +( +~seqTrance16 = { + ~seqPlay.value([ + [64, { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~clapSteps = (0!16); + ~reload.value; "trance 1-4 : kick + offbeat hat".postln; + }], + [64, { + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.35; + ~reload.value; "trance 5-8 : + clap 2/4".postln; + }], + [64, { + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~percAmp = 0.20; + ~reload.value; "trance 9-12 : + hat 8th + perc".postln; + }], + [64, { + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareAmp = 0.45; + ~reload.value; "trance 13-16 : SNARE ROLL final".postln; + }], + ]); +}; +"=== ~seqTrance16 defini ===".postln; +) + + +// ===================================================================== +// ~seqDnBSwitch -- alterne 4 patterns DnB toutes les 32 steps +// ===================================================================== +( +~seqDnBSwitch = { |repeats = 2| + ~seqLoop.value([ + [32, { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; + ~kickAmp = 0.55; ~snareAmp = 0.5; ~hatAmp = 0.12; + ~reload.value; "DnB A: amen".postln; + }], + [32, { + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,1]; + ~hatSteps = [1,1,0,1, 1,0,1,1, 1,1,0,1, 1,0,1,1]; + ~reload.value; "DnB B: jungle".postln; + }], + [32, { + ~kickSteps = [1,0,0,0, 0,1,1,0, 0,0,1,0, 0,1,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~reload.value; "DnB C: jump-up".postln; + }], + [32, { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,0,1,1, 0,1,0,1, 1,0,1,1, 0,1,0,1]; + ~reload.value; "DnB D: liquid".postln; + }], + ], repeats); +}; +"=== ~seqDnBSwitch defini ===".postln; +) + + +// ===================================================================== +// ~seqHipHopLoop -- 8 mesures de hip-hop avec petites variations +// ===================================================================== +( +~seqHipHopLoop = { |repeats = 1| + ~seqLoop.value([ + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~kickAmp = 0.5; ~snareAmp = 0.4; ~hatAmp = 0.10; + ~reload.value; "hip-hop 1: classic".postln; + }], + [16, { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 0,0,0,0]; + ~hatSteps = [1,0,1,1, 1,0,1,0, 1,0,1,1, 1,0,1,0]; + ~reload.value; "hip-hop 2: ghost kick".postln; + }], + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~reload.value; "hip-hop 3: trap shift".postln; + }], + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~hatSteps = [1,0,1,0, 1,0,1,1, 1,0,1,0, 1,0,1,1]; + ~reload.value; "hip-hop 4: ghost snare".postln; + }], + ], repeats); +}; +"=== ~seqHipHopLoop defini ===".postln; +) + + +// ===================================================================== +// ~seqWorldEvolve -- ajout progressif de couches ethno world +// ===================================================================== +( +~seqWorldEvolve = { + ~seqPlay.value([ + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~snareSteps = (0!16); + ~kickAmp = 0.4; + ~reload.value; "world 1: kick base".postln; + }], + [16, { + ~percInst = \tom; ~tomFreq = 95; + ~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; + ~percAmp = 0.4; + ~reload.value; "world 2: + congas".postln; + }], + [16, { + ~hatSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,0,1,1]; + ~hatAmp = 0.08; + ~reload.value; "world 3: + shaker".postln; + }], + [16, { + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.30; + ~reload.value; "world 4: + clap".postln; + }], + [16, { + ~kickSteps = [1,0,0,1, 0,1,0,0, 1,0,1,0, 0,1,0,0]; + ~kickAmp = 0.5; + ~reload.value; "world 5: kick afrobeat".postln; + }], + ]); +}; +"=== ~seqWorldEvolve defini ===".postln; +) + + + +// ===================================================================== +// EXEMPLES D'INVOCATION (a evaluer manuellement) +// ===================================================================== + +// Lance l'intro : + ~seqIntro.value +// Buildup 4 mesures : + ~seqBuildup.value(4) +// Drop dubstep complet : + ~seqDubstepDrop.value +// Stop la sequence en cours : +// ~seqStop.value + +// --- Chaine plusieurs sections via beatChainPlay -------------------- + ~beatChainPlay.value([ + [64, { ~seqIntro.value }], // ne marche PAS dans une seq + [64, { ~kickSteps = ~kK1; ~reload.value }], + ]); + +// Note : ne pas imbriquer ~seqXxx.value dans une sequence. Pour chainer +// des sections complexes, utilise des Routine externes ou enchaine +// plusieurs ~seqLoop.value successifs apres un ~seqStop.value. + + + diff --git a/sound_algo/_migrate/split_and_generate_melodies.py b/sound_algo/_migrate/split_and_generate_melodies.py new file mode 100644 index 0000000..31da8c6 --- /dev/null +++ b/sound_algo/_migrate/split_and_generate_melodies.py @@ -0,0 +1,537 @@ +#!/usr/bin/env python3 +"""Split palette/melodies/{short,long,xlong,epic}.scd in one file per melody, +then generate ~20x new idiomatic melodies per genre. + +Convention finale (decision projet) : camelCase pour nouvelles vars +(~mAcid100, ~mlTrance100, ~mxlAmbient100, ~mepicCinematic100). Les vars +historiques ~m1..~m78 / ~ml1..~ml30 / ~mxl1..~mxl15 / ~mepic1..~mepic10 +sont conservees telles quelles. +""" +from __future__ import annotations +import re +import shutil +import random +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +MEL = ROOT / "palette" / "melodies" +MIG = ROOT / "_migrate" + +SOURCES = { + "short": (MEL / "short.scd", "m", 32), + "long": (MEL / "long.scd", "ml", 64), + "xlong": (MEL / "xlong.scd", "mxl", 96), + "epic": (MEL / "epic.scd", "mepic", 128), +} + +# --------------------------------------------------------------------------- +# 1. PARSE EXISTING FILES +# --------------------------------------------------------------------------- + +VAR_RE = re.compile( + r"~(m|ml|mxl|mepic)(\d+)\s*=\s*\[([^\]]+)\]\s*;", + re.DOTALL, +) + + +def parse_source(path: Path) -> dict[str, list[int]]: + text = path.read_text() + found = {} + for m in VAR_RE.finditer(text): + prefix, num, body = m.group(1), m.group(2), m.group(3) + ints = [int(x) for x in re.findall(r"-?\d+", body)] + found[f"{prefix}{num}"] = ints + return found + + +def write_one(path: Path, var: str, length_label: str, genre_hint: str, notes: list[int]) -> None: + # Pretty-format : 8 ints par ligne, 4 lignes pour 32, 8 lignes pour 64, etc. + chunks = [notes[i:i + 8] for i in range(0, len(notes), 8)] + body_lines = [] + for ch in chunks: + body_lines.append(" " + ", ".join(f"{n:>2}" for n in ch) + ",") + if body_lines: + # supprime virgule finale du dernier element + body_lines[-1] = body_lines[-1].rstrip(",") + content = ( + "// =====================================================================\n" + f"// ~{var} -- {length_label} melody ({len(notes)} steps), genre: {genre_hint}\n" + "// =====================================================================\n" + "(\n" + f"~{var} = [\n" + + "\n".join(body_lines) + "\n" + "];\n" + ")\n" + ) + path.write_text(content) + + +# --------------------------------------------------------------------------- +# 2. GENRE SPECS +# --------------------------------------------------------------------------- + +# scales (intervals from root, semitones) +SCALES = { + "minor": [0, 2, 3, 5, 7, 8, 10], + "natural_minor": [0, 2, 3, 5, 7, 8, 10], + "harmonic_minor": [0, 2, 3, 5, 7, 8, 11], + "phrygian": [0, 1, 3, 5, 7, 8, 10], + "dorian": [0, 2, 3, 5, 7, 9, 10], + "mixolydian": [0, 2, 4, 5, 7, 9, 10], + "ionian": [0, 2, 4, 5, 7, 9, 11], + "lydian": [0, 2, 4, 6, 7, 9, 11], + "locrian": [0, 1, 3, 5, 6, 8, 10], + "major": [0, 2, 4, 5, 7, 9, 11], + "minor_pent": [0, 3, 5, 7, 10], + "major_pent": [0, 2, 4, 7, 9], + "blues": [0, 3, 5, 6, 7, 10], + "hirajoshi": [0, 2, 3, 7, 8], # E,F#,G,B,C (transpose root) + "iwato": [0, 1, 5, 6, 10], + "hijaz": [0, 1, 4, 5, 7, 8, 10], + "altered": [0, 1, 3, 4, 6, 8, 10], + "diminished": [0, 2, 3, 5, 6, 8, 9, 11], + "chromatic": list(range(12)), +} + +# genre -> dict(roots, scales, range, density, motif, struct_weights) +GENRES = { + "acid": dict(roots=[40, 42], scales=["phrygian", "minor"], lo=36, hi=60, + density=(0.6, 0.8), motif="acid"), + "dub": dict(roots=[40, 36], scales=["minor_pent"], lo=36, hi=60, + density=(0.3, 0.5), motif="dub"), + "trance": dict(roots=[42, 45], scales=["minor", "harmonic_minor"], lo=60, hi=84, + density=(0.7, 0.9), motif="trance"), + "detroit": dict(roots=[36, 41], scales=["dorian"], lo=48, hi=72, + density=(0.5, 0.7), motif="detroit"), + "dnb": dict(roots=[40, 43], scales=["natural_minor"], lo=36, hi=72, + density=(0.4, 0.6), motif="dnb"), + "ambient": dict(roots=[60, 65], scales=["ionian", "lydian"], lo=60, hi=84, + density=(0.2, 0.4), motif="ambient"), + "world": dict(roots=[50, 55], scales=["dorian", "mixolydian"], lo=60, hi=84, + density=(0.6, 0.8), motif="modal"), + "retro": dict(roots=[60, 67], scales=["major", "lydian"], lo=60, hi=84, + density=(0.6, 0.8), motif="diatonic"), + "dark": dict(roots=[40, 43], scales=["locrian", "harmonic_minor"], lo=36, hi=60, + density=(0.5, 0.7), motif="dark"), + "asian": dict(roots=[52, 57], scales=["hirajoshi", "iwato"], lo=52, hi=76, + density=(0.5, 0.7), motif="asian"), + "oriental": dict(roots=[50, 55], scales=["hijaz"], lo=50, hi=74, + density=(0.6, 0.8), motif="oriental"), + "tribal": dict(roots=[45, 50], scales=["minor_pent"], lo=36, hi=60, + density=(0.7, 0.9), motif="tribal"), + "industrial": dict(roots=[40, 43], scales=["chromatic", "minor"], lo=36, hi=60, + density=(0.7, 0.9), motif="industrial"), + "synthwave": dict(roots=[57, 62], scales=["minor"], lo=48, hi=84, + density=(0.6, 0.8), motif="synthwave"), + "chiptune": dict(roots=[60, 67], scales=["major", "mixolydian"], lo=60, hi=96, + density=(0.7, 0.9), motif="chiptune"), + "phonk": dict(roots=[40, 45], scales=["minor_pent"], lo=36, hi=60, + density=(0.3, 0.5), motif="phonk"), + "hardcore": dict(roots=[40, 41], scales=["locrian", "chromatic"], lo=36, hi=60, + density=(0.8, 1.0), motif="hardcore"), + "pop": dict(roots=[60, 67], scales=["major"], lo=60, hi=84, + density=(0.5, 0.7), motif="pop"), + "jazz": dict(roots=[60, 65], scales=["dorian", "mixolydian", "altered"], lo=48, hi=84, + density=(0.6, 0.8), motif="jazz"), + "blues": dict(roots=[45, 52], scales=["blues"], lo=45, hi=72, + density=(0.5, 0.7), motif="blues"), + "hypnotic": dict(roots=[60], scales=["minor_pent"], lo=60, hi=72, + density=(0.3, 0.5), motif="hypnotic"), + "pad": dict(roots=[60, 65], scales=["major", "dorian"], lo=60, hi=84, + density=(0.2, 0.4), motif="pad"), + "pluck": dict(roots=[60, 67], scales=["major_pent"], lo=60, hi=84, + density=(0.4, 0.6), motif="pluck"), + "sub": dict(roots=[24, 28], scales=["minor_pent"], lo=24, hi=48, + density=(0.3, 0.5), motif="sub"), + "drone": dict(roots=[24, 29], scales=["minor_pent"], lo=24, hi=48, + density=(0.1, 0.3), motif="drone"), + "tension": dict(roots=[40, 47], scales=["locrian", "diminished"], lo=36, hi=60, + density=(0.6, 0.8), motif="tension"), + "chromatic": dict(roots=[60], scales=["chromatic"], lo=48, hi=84, + density=(0.7, 0.9), motif="chromatic"), + "cinematic": dict(roots=[48, 53], scales=["minor", "harmonic_minor"], lo=36, hi=84, + density=(0.4, 0.7), motif="cinematic"), +} + + +def palette_for(root: int, scale: list[int], lo: int, hi: int) -> list[int]: + pal = [] + for octv in range(-2, 4): + for d in scale: + n = root + d + 12 * octv + if lo <= n <= hi: + pal.append(n) + return sorted(set(pal)) + + +def is_strong_beat(i: int, length: int) -> bool: + if length == 32: + return i % 4 == 0 + if length == 64: + return i % 4 == 0 + if length == 96: + return i % 4 == 0 + return i % 4 == 0 + + +def pick_note(rng: random.Random, pal: list[int], strong: bool, root: int) -> int: + if not pal: + return 0 + if strong and rng.random() < 0.55: + # bias toward root + fifth + candidates = [n for n in pal if (n - root) % 12 in (0, 7, 3, 4)] + if candidates: + return rng.choice(candidates) + # bias to mid range : note proche de la mediane palette + return rng.choice(pal) + + +def apply_motif(rng: random.Random, motif: str, notes: list[int], pal: list[int], root: int) -> list[int]: + L = len(notes) + if motif == "acid": + # slides + octave jumps : add lowest+12 sometimes + for i in range(0, L, 4): + if rng.random() < 0.4 and notes[i] > 0: + if i + 1 < L and notes[i + 1] == 0: + notes[i + 1] = max(min(notes[i] + 12, max(pal)), min(pal)) + if rng.random() < 0.25 and notes[i] > 0 and i + 2 < L: + # ghost slide + notes[i + 2] = notes[i] + rng.choice([-2, -1, 1, 2]) + elif motif == "trance": + # arpege ascendant 4 notes consecutives + for i in range(0, L - 3, 8): + if rng.random() < 0.7: + base_idx = pal.index(rng.choice(pal[: max(1, len(pal) // 2)])) if pal else 0 + for k in range(4): + if base_idx + k < len(pal): + notes[i + k] = pal[base_idx + k] + elif motif == "ambient" or motif == "pad" or motif == "drone": + # etire les notes : silence apres une note frappee + for i in range(L): + if notes[i] > 0 and rng.random() < 0.7: + for j in range(1, rng.randint(2, 5)): + if i + j < L: + notes[i + j] = 0 + elif motif == "chiptune": + # arpeges rapides 1-3-5 + for i in range(0, L - 2, 6): + if rng.random() < 0.5 and pal: + a = rng.choice(pal[: len(pal) // 2 or 1]) + # 1-3-5 over scale (find in palette) + third = a + 4 if a + 4 in pal else (a + 3 if a + 3 in pal else a + 5) + fifth = a + 7 if a + 7 in pal else a + 5 + notes[i] = a + if i + 1 < L: + notes[i + 1] = third + if i + 2 < L: + notes[i + 2] = fifth + elif motif == "dub": + # sub bass tenue + offbeat stab + sub = root + for i in range(L): + notes[i] = 0 + for i in range(0, L, 8): + notes[i] = sub + if i + 4 < L and rng.random() < 0.6: + notes[i + 4] = rng.choice(pal) if pal else 0 + elif motif == "tribal": + # repetitions hypnotiques : pattern court repete + if pal: + cell = [rng.choice(pal) if rng.random() < 0.7 else 0 for _ in range(8)] + for i in range(L): + notes[i] = cell[i % 8] + elif motif == "hypnotic": + # 2-3 notes repetees + if pal: + cell = [rng.choice(pal) if rng.random() < 0.5 else 0 for _ in range(4)] + for i in range(L): + if rng.random() < 0.7: + notes[i] = cell[i % 4] + elif motif == "sub": + # sub bass espace + for i in range(L): + notes[i] = 0 + for i in range(0, L, 8): + if rng.random() < 0.6 and pal: + notes[i] = rng.choice([n for n in pal if n <= root + 12] or pal) + elif motif == "hardcore": + # tres dense : moins de 0 + for i in range(L): + if notes[i] == 0 and rng.random() < 0.6 and pal: + notes[i] = rng.choice(pal) + elif motif == "industrial": + # patterns mecaniques (repetition stricte 4-step) + if pal: + cell = [rng.choice(pal) if rng.random() < 0.8 else 0 for _ in range(4)] + for i in range(L): + notes[i] = cell[i % 4] + elif motif == "asian" or motif == "oriental": + # ornements descendants apres note forte + for i in range(0, L - 2, 4): + if notes[i] > 0 and rng.random() < 0.4 and pal: + idx = pal.index(notes[i]) if notes[i] in pal else 0 + if idx > 0 and i + 1 < L: + notes[i + 1] = pal[idx - 1] + elif motif == "phonk": + # half-time : double les silences sur off-beats + for i in range(L): + if i % 2 == 1 and rng.random() < 0.7: + notes[i] = 0 + elif motif == "cinematic": + # crescendo : densifie progressivement + for i in range(L): + ratio = i / max(1, L - 1) + if notes[i] == 0 and rng.random() < ratio * 0.5 and pal: + notes[i] = rng.choice(pal) + elif motif == "jazz": + # chromatic approaches + for i in range(0, L - 1): + if notes[i] > 0 and notes[i + 1] > 0 and rng.random() < 0.2: + if abs(notes[i] - notes[i + 1]) > 2: + notes[i] = notes[i + 1] - rng.choice([-1, 1]) + elif motif == "blues": + # bend implicite : note repetee + for i in range(0, L - 1): + if notes[i] > 0 and rng.random() < 0.3 and i + 1 < L: + notes[i + 1] = notes[i] + return notes + + +def generate(rng: random.Random, genre: str, length: int) -> list[int]: + spec = GENRES[genre] + root = rng.choice(spec["roots"]) + scale_name = rng.choice(spec["scales"]) + scale = SCALES[scale_name] + pal = palette_for(root, scale, spec["lo"], spec["hi"]) + if not pal: + pal = [root] + dlow, dhigh = spec["density"] + density = rng.uniform(dlow, dhigh) + notes = [] + for i in range(length): + if rng.random() < density: + notes.append(pick_note(rng, pal, is_strong_beat(i, length), root)) + else: + notes.append(0) + notes = apply_motif(rng, spec["motif"], notes, pal, root) + + # AABA / ABCA structuring pour longs formats + if length >= 64: + section_len = length // 4 + if rng.random() < 0.5: + # AABA + a = notes[:section_len] + b = notes[section_len * 2:section_len * 3] + notes = a + a + b + a + # else garde la generation lineaire + if length >= 96 and rng.random() < 0.4: + # last section : variation + section_len = length // 6 + last = notes[-section_len:] + last = [(n + rng.choice([-2, -1, 0, 1, 2])) if n > 0 else 0 for n in last] + notes = notes[:-section_len] + last + + # clamp + out = [] + for n in notes: + if n == 0: + out.append(0) + else: + out.append(max(24, min(96, n))) + # ensure exact length + if len(out) < length: + out += [0] * (length - len(out)) + return out[:length] + + +# --------------------------------------------------------------------------- +# 3. GENRE -> SIZE FROM melodyBank +# --------------------------------------------------------------------------- + +# transcrit depuis bank.scd (entries originales par genre) +ORIGINAL_BANK = { + "acid": ["m29", "m30", "m70", "ml1", "mxl5", "mepic5"], + "dub": ["m65", "ml26"], + "trance": ["m8", "m24", "m28", "ml2", "mxl1", "mepic1", "mxl15", "mepic6", "ml15"], + "detroit": ["m3", "m23", "m69", "m71", "ml3", "ml18", "mxl2", "mepic3"], + "dnb": ["m63", "ml4", "ml22"], + "ambient": ["m33", "m34", "m72", "m73", "ml5", "mxl3"], + "world": ["m17", "m48", "m74", "ml9", "ml25", "mxl11", "mepic9"], + "retro": ["m61", "m75", "m77", "ml7", "ml13", "mxl6"], + "dark": ["m14", "m38", "m53", "ml8", "ml28", "mxl8", "mepic8"], + "asian": ["m17", "m40", "m48", "m74", "ml9", "ml25", "mxl11", "mepic9"], + "oriental": ["m15", "m20", "m39", "m41", "m44", "m60", "ml6", "ml17", "mxl4", "mxl14", "mepic4"], + "tribal": ["m45", "m46", "ml10", "mxl12"], + "industrial": ["m67", "m68", "ml11", "ml24", "mxl9", "mepic7"], + "synthwave": ["m61", "ml7", "mxl6"], + "chiptune": ["m62", "ml20", "mxl13"], + "phonk": ["m66", "ml19"], + "hardcore": ["m67", "ml24", "mxl9", "mepic7"], + "pop": ["m35", "m36", "m49", "m50", "ml14", "mxl10"], + "jazz": ["m51", "m52", "ml16", "ml27"], + "blues": ["m16", "m47"], + "hypnotic": ["m2", "m11", "m27", "m54", "m55", "m56", "ml12", "mxl7"], + "pad": ["m33", "m34", "ml5", "mxl3"], + "pluck": ["m32"], + "sub": ["m5", "m31", "m37", "m63", "ml4"], + "drone": ["m37", "m38"], + "tension": ["m53", "m59", "ml28", "m58", "ml30"], + "chromatic": ["m57", "ml29"], + "cinematic": ["m73", "mxl3", "mepic2", "mepic10"], +} + + +def length_split(n: int) -> tuple[int, int, int, int]: + """70% short, 20% long, 8% xlong, 2% epic; ensure at least 1 each.""" + s = max(1, round(n * 0.70)) + l = max(1, round(n * 0.20)) + x = max(1, round(n * 0.08)) + e = max(1, round(n * 0.02)) + return s, l, x, e + + +# --------------------------------------------------------------------------- +# 4. MAIN +# --------------------------------------------------------------------------- + +def main() -> None: + rng = random.Random(42) + + # 4.1 Backups (skip if exists) + for name, (path, _, _) in SOURCES.items(): + bak = MIG / f"palette_melodies_{name}.scd.bak" + if not bak.exists() and path.exists(): + shutil.copy2(path, bak) + print(f"backup {bak.name}") + + # 4.2 Parse + create dirs + write per-melody files + parsed: dict[str, dict[str, list[int]]] = {} + for name, (path, prefix, length) in SOURCES.items(): + sub = MEL / name + sub.mkdir(exist_ok=True) + parsed[name] = parse_source(path) + # write per-var files + for var, notes in parsed[name].items(): + # detect genre hint via reverse lookup in ORIGINAL_BANK + hint = "various" + for g, vlist in ORIGINAL_BANK.items(): + if var in vlist: + hint = g + break + out = sub / f"{var}.scd" + write_one(out, var, name, hint, notes) + print(f"{name}: {len(parsed[name])} fichiers individuels ecrits dans {sub}") + + # 4.3 Generate new melodies, count per genre per length-bucket + new_bank: dict[str, list[str]] = {g: [] for g in ORIGINAL_BANK} + stats = {} + for genre, originals in ORIGINAL_BANK.items(): + target = max(1, len(originals)) * 20 + s, l, x, e = length_split(target) + stats[genre] = dict(orig=len(originals), target=target, s=s, l=l, x=x, e=e) + # camelCase: m + Genre + N (capitalize first letter only) + g_cap = genre[0].upper() + genre[1:] + # numbering starts at 100 for safety + for i, length in [(s, 32), (l, 64), (x, 96), (e, 128)]: + pass # placeholder + configs = [ + ("short", "m", 32, s), + ("long", "ml", 64, l), + ("xlong", "mxl", 96, x), + ("epic", "mepic", 128, e), + ] + for sub_name, prefix, length, count in configs: + sub = MEL / sub_name + for n in range(count): + var = f"{prefix}{g_cap}{100 + n}" + notes = generate(rng, genre, length) + out = sub / f"{var}.scd" + write_one(out, var, sub_name, genre, notes) + new_bank[genre].append(var) + + # 4.4 stats summary + total_orig = sum(len(v) for v in parsed.values()) + total_new = sum(len(v) for v in new_bank.values()) + print(f"\n=== STATS ===") + for g, st in stats.items(): + print(f" {g:12s}: {st['orig']:3d} originales x 20 = {st['target']:3d} nouvelles " + f"(s={st['s']} l={st['l']} x={st['x']} e={st['e']})") + print(f"\nTotal original : {total_orig}") + print(f"Total nouvelles : {total_new}") + print(f"Total fichiers : {total_orig + total_new}") + + # 4.5 update bank.scd : append new vars to each genre + bank_path = MEL / "bank.scd" + bank_text = bank_path.read_text() + # remplace la table ~melodyBank en ajoutant les nouvelles entries + new_block_lines = ["~melodyBank = ("] + items = list(ORIGINAL_BANK.items()) + for i, (g, originals) in enumerate(items): + all_keys = originals + new_bank[g] + keys_fmt = ", ".join(f"\\{k}" for k in all_keys) + suffix = "," if i < len(items) - 1 else "" + new_block_lines.append(f" \\{g}: [{keys_fmt}]{suffix}") + new_block_lines.append(");") + new_block = "\n".join(new_block_lines) + # split par ligne et trouve le bloc ~melodyBank = ( ... ); + # on cherche la ligne qui commence par ~melodyBank et on remplace + # jusqu'a la ligne qui contient "); " seul (fin du dict) + lines = bank_text.split("\n") + start_idx = None + end_idx = None + for i, ln in enumerate(lines): + if start_idx is None and ln.strip().startswith("~melodyBank"): + start_idx = i + elif start_idx is not None and ln.strip() == ");": + end_idx = i + break + if start_idx is None or end_idx is None: + raise RuntimeError("bloc ~melodyBank introuvable dans bank.scd") + bank_text_new = "\n".join( + lines[:start_idx] + [new_block] + lines[end_idx + 1:] + ) + bank_path.write_text(bank_text_new) + print(f"\nbank.scd mis a jour ({len(new_block)} chars dans le bloc melodyBank)") + + # 4.6 update index.scd : recursive load via PathName + index_path = MEL / "index.scd" + index_content = ( + "// =====================================================================\n" + "// palette/melodies/index.scd -- loader recursif (post-split v2)\n" + "//\n" + "// Charge :\n" + "// helpers.scd (helpers melodiques)\n" + "// short/<*.scd> ~m1..~m78 + ~m{Genre}100..\n" + "// long/<*.scd> ~ml1..~ml30 + ~ml{Genre}100..\n" + "// xlong/<*.scd> ~mxl1..~mxl15 + ~mxl{Genre}100..\n" + "// epic/<*.scd> ~mepic1..~mepic10 + ~mepic{Genre}100..\n" + "// bank.scd ~melodyBank + selecteurs\n" + "// tracks.scd systeme multi-pistes\n" + "//\n" + "// Un seul bloc top-level (compatible .load).\n" + "// =====================================================================\n" + "(\n" + "var dir = thisProcess.nowExecutingPath.dirname;\n" + "(dir +/+ \"helpers.scd\").load;\n" + "[\"short\", \"long\", \"xlong\", \"epic\"].do { |sub|\n" + " PathName(dir +/+ sub).files.do { |f|\n" + " if (f.extension == \"scd\") { f.fullPath.load };\n" + " };\n" + "};\n" + "(dir +/+ \"bank.scd\").load;\n" + "(dir +/+ \"tracks.scd\").load;\n" + "\"=== melodies module loaded (recursive) ===\".postln;\n" + ")\n" + ) + index_path.write_text(index_content) + print("index.scd mis a jour (loader recursif)") + + # 4.7 supprime les 4 sources monolithiques (backups deja faits) + for name, (path, _, _) in SOURCES.items(): + if path.exists(): + path.unlink() + print(f"supprime {path.name}") + + +if __name__ == "__main__": + main() diff --git a/sound_algo/_migrate/split_palette.py b/sound_algo/_migrate/split_palette.py new file mode 100644 index 0000000..98d3ae0 --- /dev/null +++ b/sound_algo/_migrate/split_palette.py @@ -0,0 +1,461 @@ +#!/usr/bin/env python3 +"""Split monolithic palette/melodies/*.scd and palette/rhythm/*.scd files +into one-file-per-unit structure. + +Strategy A (melodies short/long/xlong/epic, kicks STOCKAGE bloc): + Each top-level `~varname = ...;` (statement) becomes its own file. + +Strategy B (rhythm drum_kits, patterns_genre, percussions, sequences, fills): + Each top-level `(...)` block becomes its own file. Filename derived from + the closest preceding `// === NAME ===` header comment. +""" + +from __future__ import annotations +import os +import re +import shutil +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +PAL = ROOT / "palette" + + +# --------------------------------------------------------------------------- +# Tokenizer-aware bracket scanner. Tracks (), [], strings, line/block comments. +# Returns the list of top-level statements/blocks with character positions. +# --------------------------------------------------------------------------- + +def scan_top_level(src: str): + """Yield (start, end, kind) for each top-level item. + + kind = 'block' if the item is a `(...)` paren block at depth 0 + 'stmt' if it's a top-level statement (ends at `;` at depth 0) + Whitespace and comments between items are skipped (start points at first + non-ws char of the item). + """ + i = 0 + n = len(src) + items = [] + + def skip_ws_and_comments(j): + while j < n: + c = src[j] + if c in " \t\r\n": + j += 1 + elif src.startswith("//", j): + # line comment + k = src.find("\n", j) + j = n if k == -1 else k + 1 + elif src.startswith("/*", j): + k = src.find("*/", j + 2) + j = n if k == -1 else k + 2 + else: + return j + return j + + while i < n: + i = skip_ws_and_comments(i) + if i >= n: + break + + start = i + c = src[i] + if c == "(": + # consume balanced paren block + depth = 0 + in_str = False + in_sym = False + j = i + while j < n: + ch = src[j] + if in_str: + if ch == "\\": + j += 2 + continue + if ch == '"': + in_str = False + j += 1 + continue + if in_sym: + # symbol literal: 'foo bar' + if ch == "\\": + j += 2 + continue + if ch == "'": + in_sym = False + j += 1 + continue + if ch == '"': + in_str = True + j += 1 + continue + if ch == "'": + in_sym = True + j += 1 + continue + if src.startswith("//", j): + k = src.find("\n", j) + j = n if k == -1 else k + 1 + continue + if src.startswith("/*", j): + k = src.find("*/", j + 2) + j = n if k == -1 else k + 2 + continue + if ch == "(": + depth += 1 + elif ch == ")": + depth -= 1 + if depth == 0: + j += 1 + # consume optional trailing `;` + k = j + while k < n and src[k] in " \t": + k += 1 + if k < n and src[k] == ";": + j = k + 1 + items.append((start, j, "block")) + i = j + break + j += 1 + else: + raise ValueError(f"unbalanced ( at offset {start}") + else: + # top-level statement -> read until `;` at depth 0 of [] and () + depth_p = 0 + depth_b = 0 + in_str = False + in_sym = False + j = i + while j < n: + ch = src[j] + if in_str: + if ch == "\\": + j += 2 + continue + if ch == '"': + in_str = False + j += 1 + continue + if in_sym: + if ch == "\\": + j += 2 + continue + if ch == "'": + in_sym = False + j += 1 + continue + if ch == '"': + in_str = True + j += 1 + continue + if ch == "'": + in_sym = True + j += 1 + continue + if src.startswith("//", j): + k = src.find("\n", j) + j = n if k == -1 else k + 1 + continue + if src.startswith("/*", j): + k = src.find("*/", j + 2) + j = n if k == -1 else k + 2 + continue + if ch == "(": + depth_p += 1 + elif ch == ")": + depth_p -= 1 + elif ch == "[": + depth_b += 1 + elif ch == "]": + depth_b -= 1 + elif ch == ";" and depth_p == 0 and depth_b == 0: + j += 1 + items.append((start, j, "stmt")) + i = j + break + j += 1 + else: + # EOF without `;` -- emit rest as stmt + items.append((start, n, "stmt")) + i = n + return items + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + +def slugify(s: str) -> str: + s = s.lower().strip() + s = re.sub(r"[\(\)\[\]\{\}]", " ", s) + s = re.sub(r"[^a-z0-9_\- ]+", "", s) + s = re.sub(r"\s+", "_", s) + s = re.sub(r"_+", "_", s).strip("_-") + return s or "block" + + +def find_block_header(src: str, block_start: int) -> str | None: + """Look immediately before block_start for the closest header comment. + + Walks backward over whitespace/blank lines, then tries to identify the + nearest comment header preceding the block. Recognized forms: + + // === NAME === + // ----- NAME ----- + // ===================== + // NAME + // ===================== + // ---- NAME (extra) ---- + """ + # Walk back, collecting at most ~12 preceding non-empty comment lines + # (skipping blank lines). + end = block_start + # find start of the line containing block_start + while end > 0 and src[end - 1] != "\n": + end -= 1 + # collect lines going backward + lines = [] + pos = end + while pos > 0: + # back up one line + line_end = pos - 1 # the \n + line_start = src.rfind("\n", 0, line_end) + line_start = 0 if line_start == -1 else line_start + 1 + line = src[line_start:line_end] + stripped = line.strip() + if stripped == "": + # blank line: only allowed BEFORE we have any header line + if lines: + break + pos = line_start + continue + if not stripped.startswith("//"): + break + lines.append(stripped) + pos = line_start + if len(lines) >= 12: + break + if not lines: + return None + # lines is in reverse order: lines[0] is the line directly above the block + # Look at lines[0] first + def extract(comment_line: str) -> str | None: + s = comment_line.lstrip("/").strip() + # strip leading/trailing runs of = or - + s = re.sub(r"^[=\-\s]+", "", s) + s = re.sub(r"[=\-\s]+$", "", s) + # Remove any "(extra)" trailing parens content + s = re.sub(r"\([^)]*\)\s*$", "", s).strip() + if not s: + return None + # Reject if pure separators leftover + if re.fullmatch(r"[=\-\s]+", s): + return None + return s + + # Form A: line 0 is `// === NAME ===` or `// ---- NAME ----` + # Some lines could be just `// =====` (separator). Detect those. + def is_separator(line: str) -> bool: + s = line.lstrip("/").strip() + return bool(re.fullmatch(r"[=\-\s]+", s)) + + # If lines[0] is a NAME-bearing line: + if not is_separator(lines[0]): + cand = extract(lines[0]) + if cand: + return cand + # Otherwise lines[0] is a separator -> look for `// NAME` between two separators + if is_separator(lines[0]) and len(lines) >= 3 and is_separator(lines[2]): + cand = extract(lines[1]) + if cand: + return cand + # Try lines[1] anyway + if len(lines) >= 2: + cand = extract(lines[1]) + if cand: + return cand + return None + + +VAR_RE = re.compile(r"^\s*~([a-zA-Z][a-zA-Z0-9_]*)\s*=", re.MULTILINE) + + +def find_stmt_var(src: str, start: int, end: int) -> str | None: + m = VAR_RE.search(src, start, end) + return m.group(1) if m else None + + +def find_inner_var_in_block(src: str, start: int, end: int) -> str | None: + """For kicks-style: a block contains a list of `~kK1 = ...; ~kK2 = ...;`. + But strategy B treats the whole block as one unit. Fallback for naming + when no header found. + """ + m = VAR_RE.search(src, start, end) + return m.group(1) if m else None + + +# --------------------------------------------------------------------------- +# Splitting drivers +# --------------------------------------------------------------------------- + +def write_unit(out_path: Path, header_comment: str, body: str): + out_path.parent.mkdir(parents=True, exist_ok=True) + txt = f"// =========================================================\n// {header_comment}\n// =========================================================\n{body}\n" + out_path.write_text(txt, encoding="utf-8") + + +def split_strategy_A(src_path: Path, out_dir: Path, prefix_filter: str | None = None): + """Each top-level statement `~var = ...;` -> file <var>.scd wrapped in + `(...)` block. + + If the source file is a single big `(...)` block wrapping many + `~var = ...;` statements (cas: short.scd, long.scd, ...), unwrap the + outer block and split the inner statements. + """ + src = src_path.read_text(encoding="utf-8") + items = scan_top_level(src) + + # Detect "single big block" pattern: only one top-level item which is a block. + # In that case, descend into the block content. + if len(items) == 1 and items[0][2] == "block": + s, e, _ = items[0] + # strip outer ( ... ) (and optional trailing ;) + text = src[s:e].rstrip() + if text.endswith(";"): + text = text[:-1].rstrip() + # text looks like "( ... )" + assert text[0] == "(" and text[-1] == ")" + inner = text[1:-1] + # parse inner as top-level statements + inner_items = scan_top_level(inner) + count = 0 + for (s2, e2, kind) in inner_items: + if kind != "stmt": + continue + var = find_stmt_var(inner, s2, e2) + if var is None: + continue + if prefix_filter and not var.startswith(prefix_filter): + continue + body_raw = inner[s2:e2].strip() + wrapped = f"(\n{body_raw}\n)" + header = f"~{var} -- extrait de {src_path.name}" + write_unit(out_dir / f"{var}.scd", header, wrapped) + count += 1 + return count + + count = 0 + for (s, e, kind) in items: + if kind != "stmt": + continue + var = find_stmt_var(src, s, e) + if var is None: + continue + if prefix_filter and not var.startswith(prefix_filter): + continue + body_raw = src[s:e].strip() + # wrap in single top-level (...) block + wrapped = f"(\n{body_raw}\n)" + header = f"~{var} -- extrait de {src_path.name}" + write_unit(out_dir / f"{var}.scd", header, wrapped) + count += 1 + return count + + +def split_strategy_B(src_path: Path, out_dir: Path): + """Each top-level `(...)` block -> file. Naming = slug of preceding header.""" + src = src_path.read_text(encoding="utf-8") + items = scan_top_level(src) + count = 0 + used_slugs: dict[str, int] = {} + # also pick up top-level statements (assignations directes ~xxx = ...;) + blocks_only = [it for it in items if it[2] == "block"] + stmts_only = [it for it in items if it[2] == "stmt"] + + for (s, e, _kind) in blocks_only: + body_raw = src[s:e].rstrip() + # strip trailing `;` if present (we re-add as bare block) + if body_raw.endswith(";"): + body_raw = body_raw[:-1].rstrip() + header_text = find_block_header(src, s) + if not header_text: + inner = find_inner_var_in_block(src, s, e) + header_text = inner if inner else "block" + slug = slugify(header_text) + n = used_slugs.get(slug, 0) + 1 + used_slugs[slug] = n + fname_slug = slug if n == 1 else f"{slug}_{n}" + write_unit(out_dir / f"{fname_slug}.scd", + f"{header_text} -- extrait de {src_path.name}", + body_raw) + count += 1 + + # Strategy A fallback for top-level `~xx = ...;` statements + for (s, e, _kind) in stmts_only: + var = find_stmt_var(src, s, e) + if var is None: + continue + body_raw = src[s:e].strip() + wrapped = f"(\n{body_raw}\n)" + header = f"~{var} -- extrait de {src_path.name}" + write_unit(out_dir / f"{var}.scd", header, wrapped) + count += 1 + + return count + + +def backup(src_path: Path): + rel = src_path.relative_to(ROOT) + dst = ROOT / "_migrate" / (str(rel).replace("/", "_") + ".bak") + dst.parent.mkdir(parents=True, exist_ok=True) + if not dst.exists(): + shutil.copy2(src_path, dst) + return dst + + +# --------------------------------------------------------------------------- +# Main +# --------------------------------------------------------------------------- + +def main(): + summary = [] + + melodies_jobs = [ + ("short.scd", "short", "m"), + ("long.scd", "long", "ml"), + ("xlong.scd", "xlong", "mxl"), + ("epic.scd", "epic", "mepic"), + ] + for fname, subdir, prefix in melodies_jobs: + src = PAL / "melodies" / fname + if not src.exists(): + print(f"skip (missing): {src}") + continue + backup(src) + out_dir = PAL / "melodies" / subdir + n = split_strategy_A(src, out_dir, prefix_filter=prefix) + summary.append((str(src.relative_to(ROOT)), n, "A")) + + rhythm_files = ["drum_kits.scd", "patterns_genre.scd", "kicks.scd", + "percussions.scd", "sequences.scd", "fills.scd"] + for fname in rhythm_files: + src = PAL / "rhythm" / fname + if not src.exists(): + print(f"skip (missing): {src}") + continue + backup(src) + out_dir = PAL / "rhythm" / fname.removesuffix(".scd") + n = split_strategy_B(src, out_dir) + summary.append((str(src.relative_to(ROOT)), n, "B")) + + print("\n=== SPLIT SUMMARY ===") + total = 0 + for path, n, strat in summary: + print(f" [{strat}] {path}: {n} unites") + total += n + print(f" TOTAL: {total} fichiers generes") + + +if __name__ == "__main__": + main() diff --git a/sound_algo/control/CLAUDE.md b/sound_algo/control/CLAUDE.md new file mode 100644 index 0000000..1d04193 --- /dev/null +++ b/sound_algo/control/CLAUDE.md @@ -0,0 +1,55 @@ +# control/ — MIDI, jump, playlist + +Outils de pilotage : controleur MIDI, saut direct dans une track, +playlist auto-fade. SETUP manuel apres `00_load.scd`. + +## Fichiers + +| Fichier | Role | +| --- | --- | +| `midi.scd` | INIT MIDIClient + MAPPING DEFAULT (CC + Notes) | +| `jump.scd` | `~jumpTo.(\X, \section_slug)` | +| `playlist.scd` | `~playPlaylist.([...])` avec fades | + +## Pattern SETUP + +Chaque fichier expose un bloc SETUP (a evaluer 1x) puis des +helpers `~xxx`. Bloc SETUP enrobe en `(...)` pour eval atomique. + +```supercollider +( // SETUP JUMP +~sections = (); +~jumpTo = { |trackLetter, sectionSlug| ... }; +"[OK] SETUP JUMP".postln; +) +``` + +## Jump : invariants + +`~jumpTo` doit : +1. Stopper toutes les Routines actives (`~track`, `~filterSweep`, ...) +2. Appliquer la section (mute `~xxx` vars) +3. `~reload.value` pour rebuild Pdef +4. Relancer les Pdef principaux (`\kickSeq`, `\hatSeq`, ...) + +Sections enregistrees par chaque track via : +```supercollider +~sections[\A] = ( + \intro: { ~bpm = 124; ~melodyInst = \pad; ... }, + \drop: { ~bpm = 132; ~melodyInst = \lead; ... } +); +``` + +## MIDI + +- `MIDIClient.init` puis `MIDIIn.connectAll` une seule fois +- `MIDIdef.cc(\name, { |val, num, chan, src| ... }, ccNum, chan)` +- Toujours `MIDIdef.freeAll` avant un re-mapping pour eviter les doublons + +## Anti-patterns + +- Ne pas evaluer SETUP plusieurs fois sans `MIDIdef.freeAll` -> CC empiles +- Ne pas oublier de stopper les Routines dans `~jumpTo` -> superposition +- Ne pas hardcoder un device MIDI (utiliser device index ou nom) +- Ne pas mapper sur `~xxx` sans `~reload.value` derriere si Pdef-related +- Ne pas appeler `~jumpTo` sur une section non enregistree (silencieux mais inutile) diff --git a/sound_algo/control/jump.scd b/sound_algo/control/jump.scd new file mode 100644 index 0000000..cb5c0b1 --- /dev/null +++ b/sound_algo/control/jump.scd @@ -0,0 +1,2225 @@ +// ===================================================================== +// jump.scd -- Lance n'importe quelle section d'une track +// +// USAGE : +// 1. Charger 00_load.scd +// 2. Cmd+Entree sur SETUP JUMP (1 fois) +// 3. Cmd+Entree sur ~jumpTo.(\X, \section_slug) au choix +// ===================================================================== + +( // SETUP JUMP +~sections = (); +~jumpTo = { |trackLetter, sectionSlug| + var trackSec = ~sections[trackLetter.asSymbol]; + var section = trackSec !? { trackSec[sectionSlug.asSymbol] }; + if (section.isNil) { + ("!! [" ++ trackLetter ++ " " ++ sectionSlug ++ "] inexistante").postln; + } { + // Stoppe la Routine track en cours pour eviter qu'elle ecrase la section + ~track !? { ~track.stop; ~track = nil }; + ~filterSweep !? { ~filterSweep.stop; ~filterSweep = nil }; + ~randomLoop !? { ~randomLoop.stop; ~randomLoop = nil }; + ~melodyEvolve !? { ~melodyEvolve.stop; ~melodyEvolve = nil }; + ~lRotate !? { ~lRotate.stop; ~lRotate = nil }; + // Applique la section, recharge les Pdef, relance + section.value; + ~reload.value; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; + ("[JUMP] [" ++ trackLetter ++ " " ++ sectionSlug ++ "]").postln; + }; +}; +"=== ~jumpTo pret ===".postln; +) + + + +// ===================================================================== +// TRACK A -- 5 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['A'] = ( + // [0:00] minimal -- kick T5 sub + melody PAD... + minimal_kick_t5_sub_melody_pad: { + ~bpm = 124; ~acidCutoff = 500; ~acidRq = 0.25; ~acidDrive = 1.5; ~acidAmp = 0.3; + ~kickAmp = 0.5; ~hatAmp = 0.08; ~melodyAmp = 0.14; + ~kickFreq = 42; ~kickPitchAmt = 2.0; ~kickDecay = 0.5; + ~kickDrive = 1.0; ~kickClick = 0.05; // T5 sub deep + ~melodyInst = \pad; // PAD pour l'intro + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 1500; + ~melodyNotes = [60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0, + 60,0,0,0,0,0,0,0, 65,0,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + ~enableHarmony.(\third); + }, + // [2:00] acid rave -- kick T1 + melody LEAD + variations... + acid_rave_kick_t1_melody_lead_variations: { + ~bpm = 132; ~acidCutoff = 800; ~acidRq = 0.15; ~acidDrive = 2.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.3; ~kickClick = 0.2; + ~melodyInst = \lead; // LEAD pour le drop + ~melodyAttack = 0.012; ~melodyRelease = 0.25; ~melodyCutoff = 2400; + ~melodyAmp = 0.16; + ~acidNotes = [36,36,48,36,39,36,43,39, 36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~melodyNotes = [60,0,67,0,70,0,67,65, 63,0,60,0,0,67,70,72, + 75,0,72,70,67,0,0,65, 63,60,0,67,70,0,72,0]; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + // 120s avec micro-variations toutes les 4s + }, + // [4:00] detroit stabs -- kick T2 + melody STAB... + detroit_stabs_kick_t2_melody_stab: { + ~bpm = 128; ~acidCutoff = 700; ~acidDrive = 2.2; + ~kickFreq = 65; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.45; + ~melodyInst = \stab; // STAB style Detroit + ~melodyDrive = 2.8; ~melodyCutoff = 1500; + ~melodyNotes = [63,0,0,0,70,0,67,0, 65,0,0,0,70,0,72,0, + 63,0,0,0,67,0,70,0, 65,0,60,0,67,0,0,0]; + ~melodyAttack = 0.001; ~melodyRelease = 0.06; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + // 90s avec stabs qui mutent (Detroit = Cm avec variations chromatiques) + }, + // [5:30] hard push -- kick T4 distordu... + hard_push_kick_t4_distordu: { + ~bpm = 140; ~acidCutoff = 1500; ~acidRq = 0.08; ~acidDrive = 3.8; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; // T4 distordu + ~melodyAmp = 0; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + }, + // [6:30] outro -- melody PAD qui s'efface... + outro_melody_pad_qui_s_efface: { + ~melodyInst = \pad; // PAD doux pour finir + ~melodyAttack = 0.5; ~melodyRelease = 2.0; ~melodyAmp = 0.12; + ~reload.value; + }, +); +"=== sections A chargees : ".post; ~sections['A'].keys.asArray.postln; +) + +// --- Lancer une section TRACK A --- +( ~jumpTo.('A', 'minimal_kick_t5_sub_melody_pad'); ) // [0:00] minimal -- kick T5 sub + melody PAD... +( ~jumpTo.('A', 'acid_rave_kick_t1_melody_lead_variations'); ) // [2:00] acid rave -- kick T1 + melody LEAD + variations... +( ~jumpTo.('A', 'detroit_stabs_kick_t2_melody_stab'); ) // [4:00] detroit stabs -- kick T2 + melody STAB... +( ~jumpTo.('A', 'hard_push_kick_t4_distordu'); ) // [5:30] hard push -- kick T4 distordu... +( ~jumpTo.('A', 'outro_melody_pad_qui_s_efface'); ) // [6:30] outro -- melody PAD qui s'efface... + + +// ===================================================================== +// TRACK B -- 6 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['B'] = ( + // [0:00] dub start -- kick T3 boomy + melody PAD... + dub_start_kick_t3_boomy_melody_pad: { + ~bpm = 110; ~acidCutoff = 400; ~acidRq = 0.2; ~acidDrive = 1.6; ~acidAmp = 0.22; + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~kickAmp = 0.45; ~hatAmp = 0.08; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.6; + ~kickDrive = 1.2; ~kickClick = 0.08; + ~melodyInst = \pad; // PAD pour dub + ~hatSteps = [0,0,0,0, 0,0,1,0, 0,0,0,0, 0,0,1,0]; + ~melodyNotes = [60,0,0,0,63,0,0,0, 67,0,0,0,70,0,0,0, + 72,0,0,0,70,0,0,0, 67,0,0,0,63,0,0,0]; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyAmp = 0.14; + ~melodyCutoff = 1500; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + ~enableHarmony.(\bassline); + // 150s de dub avec nappes qui mutent doucement + }, + // [2:30] tempo monte 110->125 -- melody SAW3 (epaissit)... + tempo_monte_110_125_melody_saw3_epaissit: { + ~melodyInst = \saw3; // SAW3 pour epaisseur + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyDrive = 1.4; + ~reload.value; + // 3:30 + }, + // [3:30] kick 4/4 + acid ouvre -- kick T1 + melody PLUCK... + kick_4_4_acid_ouvre_kick_t1_melody_pluck: { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~kickAmp = 0.5; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.3; ~kickClick = 0.2; + ~melodyInst = \pluck; // PLUCK pour la transition + ~melodyAttack = 0.001; ~melodyRelease = 0.5; ~melodyCutoff = 5000; + ~acidCutoff = 900; ~acidDrive = 2.2; ~acidAmp = 0.28; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~hatAmp = 0.14; + ~reload.value; + // 90s avec acid qui mute progressivement + // remettre kick 4/4 propre avant la suite + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~reload.value; + }, + // [5:00] tempo monte 125->140... + tempo_monte_125_140: { + // 6:00 + }, + // [6:00] hard push -- kick T4 distordu... + hard_push_kick_t4_distordu: { + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; // T4 distordu + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; + ~hatAmp = 0.15; + ~acidCutoff = 1500; ~acidRq = 0.08; ~acidDrive = 3.5; + ~melodyAmp = 0; + ~reload.value; + }, + // [7:30] outro -- melody PAD qui revient... + outro_melody_pad_qui_revient: { + ~melodyInst = \pad; // PAD pour finir + ~melodyAttack = 0.5; ~melodyRelease = 2.0; ~melodyAmp = 0.10; + ~reload.value; + }, +); +"=== sections B chargees : ".post; ~sections['B'].keys.asArray.postln; +) + +// --- Lancer une section TRACK B --- +( ~jumpTo.('B', 'dub_start_kick_t3_boomy_melody_pad'); ) // [0:00] dub start -- kick T3 boomy + melody PAD... +( ~jumpTo.('B', 'tempo_monte_110_125_melody_saw3_epaissit'); ) // [2:30] tempo monte 110->125 -- melody SAW3 (epaissit)... +( ~jumpTo.('B', 'kick_4_4_acid_ouvre_kick_t1_melody_pluck'); ) // [3:30] kick 4/4 + acid ouvre -- kick T1 + melody PLUCK... +( ~jumpTo.('B', 'tempo_monte_125_140'); ) // [5:00] tempo monte 125->140... +( ~jumpTo.('B', 'hard_push_kick_t4_distordu'); ) // [6:00] hard push -- kick T4 distordu... +( ~jumpTo.('B', 'outro_melody_pad_qui_revient'); ) // [7:30] outro -- melody PAD qui revient... + + +// ===================================================================== +// TRACK C -- 6 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['C'] = ( + // [0:00] hypnotic -- kick T6 + fmBell DUBSTEP wobble... + hypnotic_kick_t6_fmbell_dubstep_wobble: { + ~bpm = 126; ~acidCutoff = 600; ~acidRq = 0.2; ~acidDrive = 1.8; ~acidAmp = 0.26; + ~kickFreq = 70; ~kickPitchAmt = 3.5; ~kickDecay = 0.22; + ~kickDrive = 2.0; ~kickClick = 0.35; + ~melodyInst = \fmBell; // FM Bell dubstep + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 400; + ~melodyDrive = 3.5; + ~melodyWobbleRate = 4; + ~melodyWobbleDepth = 1800; + ~melodyWobbleShape = 0; + ~melodySubAmt = 0.9; // SUB MASSIF dubstep + ~acidNotes = [36,0,36,0,36,0,41,0, 36,0,36,0,36,0,39,0]; + ~acidAccents = [1,0,0,0,1,0,0,0, 1,0,0,0,1,0,0,0]; + ~acidSlides = [0,0,0,0,0,0,1,0, 0,0,0,0,0,0,1,0]; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~hatAmp = 0.10; + ~melodyNotes = [60,0,0,67,0,70,0,67, 60,0,0,67,0,70,0,72, + 60,0,0,67,0,70,0,67, 63,0,0,70,0,72,0,75]; + ~melodyAmp = 0.13; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + ~enableHarmony.(\arp); + // 120s avec ostinato qui mute lentement (mutations + scales variees) + }, + // [2:00] cutoff up doucement... + cutoff_up_doucement: { + // 4:00 + }, + // [4:00] hat 16ths -- kick T1 + melody SAW3 + variations... + hat_16ths_kick_t1_melody_saw3_variations: { + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~hatAmp = 0.08; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.3; ~kickClick = 0.2; + ~melodyInst = \saw3; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 2200; + ~melodyDrive = 1.4; + ~reload.value; + // 120s avec melodie qui se transforme (mutate + transpose + scales) + }, + // [6:00] resonance push -- kick T2 + melody mute progressivement... + resonance_push_kick_t2_melody_mute_progressivement: { + ~kickFreq = 65; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.45; + // 7:00 + }, + // [7:00] full ressu + chaos + rotation timbres + wobble dubstep... + full_ressu_chaos_rotation_timbres_wobble_dubstep: { + }, + // [9:00] outro long -- melody PAD qui s'efface lentement... + outro_long_melody_pad_qui_s_efface_lentement: { + ~melodyInst = \pad; // PAD pour finir + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + }, +); +"=== sections C chargees : ".post; ~sections['C'].keys.asArray.postln; +) + +// --- Lancer une section TRACK C --- +( ~jumpTo.('C', 'hypnotic_kick_t6_fmbell_dubstep_wobble'); ) // [0:00] hypnotic -- kick T6 + fmBell DUBSTEP wobble... +( ~jumpTo.('C', 'cutoff_up_doucement'); ) // [2:00] cutoff up doucement... +( ~jumpTo.('C', 'hat_16ths_kick_t1_melody_saw3_variations'); ) // [4:00] hat 16ths -- kick T1 + melody SAW3 + variations... +( ~jumpTo.('C', 'resonance_push_kick_t2_melody_mute_progressivement'); ) // [6:00] resonance push -- kick T2 + melody mute progressivement... +( ~jumpTo.('C', 'full_ressu_chaos_rotation_timbres_wobble_dubstep'); ) // [7:00] full ressu + chaos + rotation timbres + wobble dubstep... +( ~jumpTo.('C', 'outro_long_melody_pad_qui_s_efface_lentement'); ) // [9:00] outro long -- melody PAD qui s'efface lentement... + + +// ===================================================================== +// TRACK D -- 9 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['D'] = ( + // [0:00] === WOBBLE DROP -- 7 minutes 140 BPM === + wobble_drop_7_minutes_140_bpm: { + TempoClock.default.tempo = 140 / 60; + + // ------ 0:00 INTRO -- pad atmospherique seul ------ + }, + // [0:00] intro pad sombre... + intro_pad_sombre: { + ~melodyInst = \pad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; ~melodyCutoff = 1200; + ~melodyAmp = 0.18; + ~melodyNotes = [60, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0]; + ~kickSteps = (0 ! 16); ~snareSteps = (0 ! 16); + ~hatSteps = (0 ! 16); ~acidAmp = 0; + ~reload.value; + ~enableHarmony.(\dubBass); + + // ------ 0:30 DRUM ENTRY -- kick + snare half-time ------ + }, + // [0:30] drum entry half-time... + drum_entry_half_time: { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.5; + ~kickDrive = 1.5; ~kickClick = 0.15; ~kickAmp = 0.6; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~snareAmp = 0.45; ~snareFreq = 220; ~snareNoiseAmt = 0.65; ~snareDecay = 0.16; + ~reload.value; + + // ------ 1:00 BUILD -- hat 16ths + riser ------ + }, + // [1:00] build avec hat 16ths + riser... + build_avec_hat_16ths_riser: { + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; + ~reload.value; + Synth(\riser, [\dur, 12, \startCutoff, 200, \endCutoff, 8000, \amp, 0.25]); + + // ------ 1:12 IMPACT + DROP 1 ------ + }, + // [1:12] === IMPACT + DROP 1 wobble dubstep === + impact_drop_1_wobble_dubstep: { + Synth(\impact, [\freq, 45, \decay, 1.8, \amp, 0.7]); + ~melodyInst = \fmBell; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; + ~melodyCutoff = 350; ~melodyDrive = 4.0; + ~melodyWobbleRate = 4; ~melodyWobbleDepth = 2200; + ~melodyWobbleShape = 0; ~melodySubAmt = 0.95; + ~melodyAmp = 0.20; ~melodyBoost = 1.8; + ~melodyNotes = [36, 0, 0, 0, 36, 0, 0, 0, + 39, 0, 0, 0, 39, 0, 0, 0, + 36, 0, 0, 0, 36, 0, 0, 0, + 41, 0, 0, 0, 39, 0, 0, 0]; + ~hatAmp = 0.08; + ~reload.value; + // 2:42 + + // ------ 2:42 MID BREAKDOWN ------ + }, + // [2:42] mid breakdown -- pad seul... + mid_breakdown_pad_seul: { + ~kickSteps = (0 ! 16); ~snareSteps = (0 ! 16); + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~melodyInst = \pad; + ~melodyAttack = 0.6; ~melodyRelease = 2.0; ~melodyCutoff = 1500; + ~melodyAmp = 0.16; + ~melodyNotes = [60, 0, 0, 0, 63, 0, 0, 0, 65, 0, 0, 0, 67, 0, 0, 0, + 65, 0, 0, 0, 63, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0]; + ~reload.value; + + // ------ 3:12 BUILD 2 -- snare roll + riser ------ + }, + // [3:12] build 2 avec snare roll... + build_2_avec_snare_roll: { + Synth(\riser, [\dur, 16, \startCutoff, 400, \endCutoff, 9000, \amp, 0.3]); + // 3:28 + + // ------ 3:28 IMPACT + DROP 2 -- wobble CHOP ------ + }, + // [3:28] === IMPACT + DROP 2 wobble chop === + impact_drop_2_wobble_chop: { + Synth(\impact, [\freq, 40, \decay, 2.0, \amp, 0.75]); + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \fmBell; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; + ~melodyCutoff = 300; ~melodyDrive = 4.5; + ~melodyWobbleRate = 8; ~melodyWobbleDepth = 2800; + ~melodyWobbleShape = 1; // CHOP square wobble + ~melodySubAmt = 1.0; + ~melodyAmp = 0.22; + ~melodyNotes = [36, 0, 39, 0, 36, 0, 0, 41, + 36, 0, 39, 41, 0, 0, 36, 0, + 36, 0, 39, 0, 36, 0, 43, 41, + 39, 0, 0, 36, 0, 41, 39, 0]; + ~reload.value; + // 5:08 + + // ------ 5:08 OUTRO -- fade out ------ + }, + // [5:08] outro fade... + outro_fade: { + ~melodyInst = \pad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; ~melodyCutoff = 800; + ~reload.value; + // 7:08 + }, +); +"=== sections D chargees : ".post; ~sections['D'].keys.asArray.postln; +) + +// --- Lancer une section TRACK D --- +( ~jumpTo.('D', 'wobble_drop_7_minutes_140_bpm'); ) // [0:00] === WOBBLE DROP -- 7 minutes 140 BPM === +( ~jumpTo.('D', 'intro_pad_sombre'); ) // [0:00] intro pad sombre... +( ~jumpTo.('D', 'drum_entry_half_time'); ) // [0:30] drum entry half-time... +( ~jumpTo.('D', 'build_avec_hat_16ths_riser'); ) // [1:00] build avec hat 16ths + riser... +( ~jumpTo.('D', 'impact_drop_1_wobble_dubstep'); ) // [1:12] === IMPACT + DROP 1 wobble dubstep === +( ~jumpTo.('D', 'mid_breakdown_pad_seul'); ) // [2:42] mid breakdown -- pad seul... +( ~jumpTo.('D', 'build_2_avec_snare_roll'); ) // [3:12] build 2 avec snare roll... +( ~jumpTo.('D', 'impact_drop_2_wobble_chop'); ) // [3:28] === IMPACT + DROP 2 wobble chop === +( ~jumpTo.('D', 'outro_fade'); ) // [5:08] outro fade... + + +// ===================================================================== +// TRACK E -- 11 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['E'] = ( + // [0:00] === HARD DUBSTEP VIETNAM -- 8 min 150 BPM === + hard_dubstep_vietnam_8_min_150_bpm: { + TempoClock.default.tempo = 150 / 60; + + // ------ 0:00 INTRO -- gong + pipa solo (melodie vietnamienne) ---- + }, + // [0:00] intro gong + pipa... + intro_gong_pipa: { + Synth(\gong, [\freq, 55, \decay, 6, \amp, 0.55]); + ~melodyInst = \pipa; + ~melodyAttack = 0.001; ~melodyRelease = 0.6; + ~melodyCutoff = 4000; ~melodyDrive = 1.4; + ~melodyAmp = 0.24; ~melodyBoost = 1.8; + // Phrase pent vietnamienne -- mineur ascendant (si bemol est la couleur asiatique) + ~melodyNotes = [ 60, 0, 63, 0, 65, 67, 70, 0, + 72, 0, 0, 70, 67, 0, 63, 60, + 63, 0, 65, 0, 67, 70, 72, 75, + 70, 67, 0, 65, 67, 0, 63, 60 ]; + ~kickSteps = (0 ! 16); ~snareSteps = (0 ! 16); + ~hatSteps = (0 ! 16); ~clapSteps = (0 ! 16); + ~percSteps = (0 ! 16); ~acidAmp = 0; + ~reload.value; + ~enableHarmony.(\dubBass); + + // ------ 0:20 ERHU vibrato par-dessus pipa ------------------------ + }, + // [0:20] passage erhu (violon chinois)... + passage_erhu_violon_chinois: { + ~melodyInst = \erhu; + ~melodyAttack = 0.05; ~melodyRelease = 0.4; + ~melodyCutoff = 2200; + ~reload.value; + + // ------ 0:40 KICK + HAT entrent (montee) ------------------------ + }, + // [0:40] kick T4 + hat 16ths... + kick_t4_hat_16ths: { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; ~kickAmp = 0.55; // T4 distordu + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~snareAmp = 0.5; ~snareFreq = 230; ~snareNoiseAmt = 0.7; ~snareDecay = 0.13; + ~reload.value; + + // ------ 1:05 RISER + IMPACT vers DROP 1 ------------------------ + }, + // [1:05] build vers DROP... + build_vers_drop: { + Synth(\riser, [\dur, 8, \startCutoff, 300, \endCutoff, 10000, \amp, 0.25]); + Synth(\impact, [\freq, 38, \decay, 2.0, \amp, 0.5]); // moins fort + + // ------ 1:13 DROP 1 -- GROWL hard dubstep + melodie pipa --------- + }, + // [1:13] === DROP 1 GROWL DUBSTEP === + drop_1_growl_dubstep: { + ~melodyInst = \growl; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; + ~melodyCutoff = 250; ~melodyDrive = 3.0; // moins violent + ~melodyWobbleRate = 4; ~melodyWobbleDepth = 2500; ~melodyWobbleShape = 0; + ~melodySubAmt = 0.7; // sub modere + ~melodyAmp = 0.16; ~melodyBoost = 1.4; + // Notes graves vietnamiennes (pentatonique mineure, octave -2) + ~melodyNotes = [ 36, 0, 0, 0, 36, 0, 0, 39, + 36, 0, 0, 0, 41, 0, 0, 0, + 36, 0, 0, 39, 36, 0, 0, 41, + 43, 0, 41, 0, 39, 0, 36, 0 ]; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.4; + ~reload.value; + // 90s de drop avec wobble qui mute + // 2:43 + + // ------ 2:43 BREAKDOWN -- erhu solo + gong -------------------- + }, + // [2:43] breakdown erhu + gong vietnamien... + breakdown_erhu_gong_vietnamien: { + Synth(\gong, [\freq, 70, \decay, 5, \amp, 0.5]); + ~melodyInst = \erhu; + ~melodyAttack = 0.05; ~melodyRelease = 0.5; + ~melodyCutoff = 2000; ~melodyAmp = 0.22; + ~kickSteps = (0 ! 16); ~snareSteps = (0 ! 16); + ~clapSteps = (0 ! 16); ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~hatAmp = 0.06; + // Melodie expressive pentatonique majeure + ~melodyNotes = [ 60, 0, 65, 0, 67, 0, 69, 0, + 72, 0, 69, 67, 0, 65, 0, 60, + 65, 0, 69, 0, 72, 0, 74, 0, + 69, 67, 0, 65, 67, 0, 60, 0 ]; + ~reload.value; + // Breakdown 30s avec mutations subtiles + // 3:13 + + // ------ 3:13 BUILD 2 -- snare roll + riser long -------------- + }, + // [3:13] build 2 -- snare roll + riser... + build_2_snare_roll_riser: { + Synth(\riser, [\dur, 16, \startCutoff, 400, \endCutoff, 12000, \amp, 0.4]); + // Snare roll qui s'accelere + // 3:29 + + // ------ 3:29 DROP 2 -- GROWL CHOP + melodie hard --------------- + }, + // [3:29] === DROP 2 GROWL CHOP + Vietnam melody === + drop_2_growl_chop_vietnam_melody: { + Synth(\impact, [\freq, 32, \decay, 2.5, \amp, 0.55]); + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.55; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.5; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~melodyInst = \growl; + ~melodyCutoff = 220; ~melodyDrive = 3.5; + ~melodyWobbleRate = 8; ~melodyWobbleDepth = 3000; + ~melodyWobbleShape = 1; // CHOP + ~melodySubAmt = 0.7; + ~melodyAmp = 0.16; + // Pattern hard syncope avec Bb (couleur asiatique) + ~melodyNotes = [ 36, 0, 39, 0, 36, 0, 41, 0, + 36, 39, 0, 41, 0, 0, 36, 0, + 36, 0, 39, 41, 0, 43, 0, 41, + 39, 0, 0, 36, 41, 0, 39, 36 ]; + ~reload.value; + // 90s avec variations rapides + // 4:59 + + // ------ 4:59 SECOND BREAKDOWN -- pipa + erhu duo --------------- + }, + // [4:59] duo pipa + erhu... + duo_pipa_erhu: { + Synth(\gong, [\freq, 60, \decay, 5, \amp, 0.45]); + ~melodyInst = \pipa; + ~melodyAttack = 0.001; ~melodyRelease = 0.5; + ~melodyCutoff = 4500; ~melodyAmp = 0.22; + ~kickSteps = (0 ! 16); ~snareSteps = (0 ! 16); + ~clapSteps = (0 ! 16); ~hatSteps = (0 ! 16); + ~melodyNotes = [ 72, 70, 67, 65, 63, 60, 0, 0, + 65, 67, 70, 72, 75, 0, 0, 0, + 72, 70, 67, 65, 67, 70, 72, 0, + 75, 72, 70, 67, 65, 63, 60, 0 ]; + ~reload.value; + + // ------ 5:24 DROP 3 FINAL -- combo growl + reese hard --------- + }, + // [6:34] outro gong + erhu fade... + outro_gong_erhu_fade: { + Synth(\gong, [\freq, 50, \decay, 8, \amp, 0.6]); + ~melodyInst = \erhu; + ~melodyAttack = 0.06; ~melodyRelease = 0.6; + ~melodyCutoff = 1800; ~melodyAmp = 0.22; + ~melodyNotes = [ 60, 0, 0, 0, 65, 0, 0, 0, + 67, 0, 0, 0, 70, 0, 0, 0, + 67, 0, 0, 0, 65, 0, 0, 0, + 63, 0, 0, 0, 60, 0, 0, 0 ]; + ~reload.value; + // 90s d'outro avec fade lent + // 8:04 + Synth(\gong, [\freq, 40, \decay, 10, \amp, 0.7]); + }, +); +"=== sections E chargees : ".post; ~sections['E'].keys.asArray.postln; +) + +// --- Lancer une section TRACK E --- +( ~jumpTo.('E', 'hard_dubstep_vietnam_8_min_150_bpm'); ) // [0:00] === HARD DUBSTEP VIETNAM -- 8 min 150 BPM === +( ~jumpTo.('E', 'intro_gong_pipa'); ) // [0:00] intro gong + pipa... +( ~jumpTo.('E', 'passage_erhu_violon_chinois'); ) // [0:20] passage erhu (violon chinois)... +( ~jumpTo.('E', 'kick_t4_hat_16ths'); ) // [0:40] kick T4 + hat 16ths... +( ~jumpTo.('E', 'build_vers_drop'); ) // [1:05] build vers DROP... +( ~jumpTo.('E', 'drop_1_growl_dubstep'); ) // [1:13] === DROP 1 GROWL DUBSTEP === +( ~jumpTo.('E', 'breakdown_erhu_gong_vietnamien'); ) // [2:43] breakdown erhu + gong vietnamien... +( ~jumpTo.('E', 'build_2_snare_roll_riser'); ) // [3:13] build 2 -- snare roll + riser... +( ~jumpTo.('E', 'drop_2_growl_chop_vietnam_melody'); ) // [3:29] === DROP 2 GROWL CHOP + Vietnam melody === +( ~jumpTo.('E', 'duo_pipa_erhu'); ) // [4:59] duo pipa + erhu... +( ~jumpTo.('E', 'outro_gong_erhu_fade'); ) // [6:34] outro gong + erhu fade... + + +// ===================================================================== +// TRACK F -- 10 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['F'] = ( + // [0:00] === TRANCE UPLIFTER 138 BPM === + trance_uplifter_138_bpm: { + TempoClock.default.tempo = 138 / 60; + }, + // [0:00] intro warmPad... + intro_warmpad: { + ~melodyInst = \warmPad; ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~melodyCutoff = 1800; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0,67,0,0,0, 70,0,0,0,72,0,0,0, + 72,0,0,0,70,0,0,0, 67,0,0,0,63,0,0,0]; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~snareSteps = (0!16); + ~clapSteps = (0!16); ~percSteps = (0!16); ~acidAmp = 0; + ~reload.value; + ~enableHarmony.(\tranceLayer); + }, + // [0:45] kick 4/4 + hat offbeat... + kick_4_4_hat_offbeat: { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.32; ~kickClick = 0.15; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~reload.value; + }, + // [1:30] arp squareLead entre... + arp_squarelead_entre: { + ~melodyInst = \squareLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.2; ~melodyCutoff = 5000; + ~melodyAmp = 0.16; + ~melodyNotes = [60, 67, 70, 72, 70, 67, 60, 67, + 63, 70, 72, 75, 72, 70, 63, 70, + 65, 72, 75, 77, 75, 72, 65, 72, + 63, 70, 72, 75, 72, 70, 63, 60]; + ~reload.value; + }, + // [2:30] BUILD vers DROP... + build_vers_drop: { + Synth(\riser, [\dur, 16, \startCutoff, 400, \endCutoff, 11000, \amp, 0.3]); + Synth(\impact, [\freq, 45, \decay, 2.5, \amp, 0.6]); + }, + // [2:46] === DROP organLead trance === + drop_organlead_trance: { + ~melodyInst = \organLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.15; ~melodyCutoff = 4500; + ~melodyAmp = 0.20; + ~kickAmp = 0.55; + ~reload.value; + }, + // [4:16] verse hardLead... + verse_hardlead: { + ~melodyInst = \hardLead; + ~melodyAttack = 0.002; ~melodyRelease = 0.25; ~melodyCutoff = 5500; + ~reload.value; + }, + // [5:16] breakdown choir + strings... + breakdown_choir_strings: { + ~kickSteps = (0!16); ~hatAmp = 0.06; ~clapSteps = (0!16); + ~melodyInst = \choir; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2500; + ~melodyAmp = 0.18; + ~melodyNotes = [60, 0, 0, 0, 63, 0, 0, 0, 67, 0, 0, 0, 70, 0, 0, 0, + 72, 0, 0, 0, 70, 0, 0, 0, 67, 0, 0, 0, 63, 0, 0, 0]; + ~reload.value; + }, + // [6:01] BUILD 2 + impact final... + build_2_impact_final: { + Synth(\riser, [\dur, 16, \startCutoff, 500, \endCutoff, 12000, \amp, 0.4]); + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + Synth(\impact, [\freq, 38, \decay, 3, \amp, 0.7]); + Synth(\crash, [\decay, 4, \amp, 0.4]); + }, + // [8:47] outro warmPad fade... + outro_warmpad_fade: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~reload.value; + }, +); +"=== sections F chargees : ".post; ~sections['F'].keys.asArray.postln; +) + +// --- Lancer une section TRACK F --- +( ~jumpTo.('F', 'trance_uplifter_138_bpm'); ) // [0:00] === TRANCE UPLIFTER 138 BPM === +( ~jumpTo.('F', 'intro_warmpad'); ) // [0:00] intro warmPad... +( ~jumpTo.('F', 'kick_4_4_hat_offbeat'); ) // [0:45] kick 4/4 + hat offbeat... +( ~jumpTo.('F', 'arp_squarelead_entre'); ) // [1:30] arp squareLead entre... +( ~jumpTo.('F', 'build_vers_drop'); ) // [2:30] BUILD vers DROP... +( ~jumpTo.('F', 'drop_organlead_trance'); ) // [2:46] === DROP organLead trance === +( ~jumpTo.('F', 'verse_hardlead'); ) // [4:16] verse hardLead... +( ~jumpTo.('F', 'breakdown_choir_strings'); ) // [5:16] breakdown choir + strings... +( ~jumpTo.('F', 'build_2_impact_final'); ) // [6:01] BUILD 2 + impact final... +( ~jumpTo.('F', 'outro_warmpad_fade'); ) // [8:47] outro warmPad fade... + + +// ===================================================================== +// TRACK G -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['G'] = ( + // [0:00] === DETROIT SOULFUL 124 BPM === + detroit_soulful_124_bpm: { + TempoClock.default.tempo = 124 / 60; + }, + // [0:00] intro warmPad accords... + intro_warmpad_accords: { + ~melodyInst = \warmPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 1800; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0, 63,0,0,0, 67,0,0,0, 70,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 63,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\chord); + }, + // [0:30] kick 4/4 + clap... + kick_4_4_clap: { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.35; ~kickClick = 0.12; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~reload.value; + }, + // [1:00] organ stabs Detroit... + organ_stabs_detroit: { + ~melodyInst = \organLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.15; ~melodyCutoff = 4500; + ~melodyAmp = 0.18; + ~melodyNotes = [63,0,0,0, 67,0,70,0, 65,0,0,0, 70,0,72,0, + 63,0,0,0, 67,0,70,0, 60,0,67,0, 63,0,0,0]; + ~reload.value; + }, + // [2:00] verse hardLead phrase... + verse_hardlead_phrase: { + ~melodyInst = \hardLead; + ~melodyAttack = 0.003; ~melodyRelease = 0.25; ~melodyCutoff = 5000; + ~melodyNotes = [60,67,72,75, 70,67,63,60, 65,70,75,77, 72,70,67,63, + 63,70,75,79, 75,72,70,67, 60,65,70,75, 67,63,60,0]; + ~reload.value; + }, + // [3:00] breakdown strings + choir... + breakdown_strings_choir: { + ~kickSteps=(0!16); ~hatAmp=0.06; ~clapSteps=(0!16); + ~melodyInst = \strings; + ~melodyAttack = 0.3; ~melodyRelease = 1.2; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 70,0,0,0, 72,0,0,0, + 70,0,0,0, 67,0,0,0, 63,0,0,0, 60,0,0,0]; + ~reload.value; + }, + // [3:45] DROP retour + organ... + drop_retour_organ: { + Synth(\impact, [\freq, 45, \decay, 2, \amp, 0.5]); + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~melodyInst = \organLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.15; ~melodyCutoff = 5500; + ~reload.value; + }, + // [5:45] outro warmPad fade... + outro_warmpad_fade: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; ~melodyCutoff = 1500; + ~reload.value; + }, +); +"=== sections G chargees : ".post; ~sections['G'].keys.asArray.postln; +) + +// --- Lancer une section TRACK G --- +( ~jumpTo.('G', 'detroit_soulful_124_bpm'); ) // [0:00] === DETROIT SOULFUL 124 BPM === +( ~jumpTo.('G', 'intro_warmpad_accords'); ) // [0:00] intro warmPad accords... +( ~jumpTo.('G', 'kick_4_4_clap'); ) // [0:30] kick 4/4 + clap... +( ~jumpTo.('G', 'organ_stabs_detroit'); ) // [1:00] organ stabs Detroit... +( ~jumpTo.('G', 'verse_hardlead_phrase'); ) // [2:00] verse hardLead phrase... +( ~jumpTo.('G', 'breakdown_strings_choir'); ) // [3:00] breakdown strings + choir... +( ~jumpTo.('G', 'drop_retour_organ'); ) // [3:45] DROP retour + organ... +( ~jumpTo.('G', 'outro_warmpad_fade'); ) // [5:45] outro warmPad fade... + + +// ===================================================================== +// TRACK H -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['H'] = ( + // [0:00] === ACID TRANCE 145 BPM === + acid_trance_145_bpm: { + TempoClock.default.tempo = 145 / 60; + }, + // [0:00] intro pad... + intro_pad: { + ~melodyInst = \warmPad; ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0, + 63,0,0,0,0,0,0,0, 70,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); + ~acidNotes = [36,36,48,36,39,36,43,39, 36,41,36,39,43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 600; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0; + ~reload.value; + ~enableHarmony.(\tranceLayer); + }, + // [0:30] kick 4/4 trance + acid entre... + kick_4_4_trance_acid_entre: { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.2; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~acidAmp = 0.28; + ~reload.value; + }, + // [1:15] BUILD long vers DROP acid... + build_long_vers_drop_acid: { + Synth(\riser, [\dur, 16, \startCutoff, 400, \endCutoff, 12000, \amp, 0.35]); + Synth(\impact, [\freq, 45, \decay, 2.5, \amp, 0.6]); + }, + // [1:31] === DROP ACID + lead arp === + drop_acid_lead_arp: { + ~melodyInst = \squareLead; + ~melodyAttack = 0.003; ~melodyRelease = 0.15; ~melodyCutoff = 6000; + ~melodyAmp = 0.16; + ~melodyNotes = [60, 67, 72, 75, 70, 67, 60, 67, + 63, 70, 75, 77, 72, 70, 63, 67, + 65, 72, 75, 79, 75, 72, 65, 67, + 60, 67, 72, 75, 70, 67, 63, 60]; + ~reload.value; + }, + // [3:01] breakdown choir + acid mute... + breakdown_choir_acid_mute: { + ~kickSteps=(0!16); ~hatAmp=0.05; ~clapSteps=(0!16); + ~acidAmp = 0; + ~melodyInst = \choir; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2500; + ~melodyAmp = 0.20; + ~reload.value; + }, + // [3:46] BUILD 2 + DROP FINAL... + build_2_drop_final: { + Synth(\riser, [\dur, 16, \startCutoff, 400, \endCutoff, 13000, \amp, 0.4]); + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + Synth(\impact, [\freq, 38, \decay, 3, \amp, 0.7]); + Synth(\crash, [\decay, 4, \amp, 0.4]); + }, + // [6:32] outro fade... + outro_fade: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + }, +); +"=== sections H chargees : ".post; ~sections['H'].keys.asArray.postln; +) + +// --- Lancer une section TRACK H --- +( ~jumpTo.('H', 'acid_trance_145_bpm'); ) // [0:00] === ACID TRANCE 145 BPM === +( ~jumpTo.('H', 'intro_pad'); ) // [0:00] intro pad... +( ~jumpTo.('H', 'kick_4_4_trance_acid_entre'); ) // [0:30] kick 4/4 trance + acid entre... +( ~jumpTo.('H', 'build_long_vers_drop_acid'); ) // [1:15] BUILD long vers DROP acid... +( ~jumpTo.('H', 'drop_acid_lead_arp'); ) // [1:31] === DROP ACID + lead arp === +( ~jumpTo.('H', 'breakdown_choir_acid_mute'); ) // [3:01] breakdown choir + acid mute... +( ~jumpTo.('H', 'build_2_drop_final'); ) // [3:46] BUILD 2 + DROP FINAL... +( ~jumpTo.('H', 'outro_fade'); ) // [6:32] outro fade... + + +// ===================================================================== +// TRACK I -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['I'] = ( + // [0:00] === LIQUID DNB 174 BPM === + liquid_dnb_174_bpm: { + TempoClock.default.tempo = 174 / 60; + }, + // [0:00] intro warmPad... + intro_warmpad: { + ~melodyInst = \warmPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 2000; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0, + 63,0,0,0,0,0,0,0, 70,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\bassline); + }, + // [0:20] amen break entre... + amen_break_entre: { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.5; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; ~kickClick = 0.3; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.5; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.12; + ~reload.value; + }, + // [1:00] smooth lead par-dessus... + smooth_lead_par_dessus: { + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.16; + ~melodyNotes = [60,0,67,0,70,0,67,65, 63,0,60,0,0,67,70,72, + 75,0,72,70,67,0,0,65, 63,60,0,67,70,0,72,0]; + ~reload.value; + }, + // [2:20] reese sub bass entre... + reese_sub_bass_entre: { + ~acidAmp = 0; + ~kickAmp = 0.55; + // sub bass via melody 2eme couche par modification + ~melodyInst = \subBoom; + ~melodyAttack = 0.005; ~melodyRelease = 0.6; + ~melodyAmp = 0.30; + ~melodyNotes = [36,0,0,0, 36,0,0,0, 39,0,0,0, 41,0,0,0, + 36,0,0,0, 36,0,0,0, 41,0,0,0, 39,0,0,0]; + ~reload.value; + }, + // [3:20] breakdown smooth choir... + breakdown_smooth_choir: { + ~kickSteps=(0!16); ~snareSteps=(0!16); ~hatAmp=0.06; + ~melodyInst = \choir; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2800; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0,67,0,0,0, 70,0,0,0,72,0,0,0, + 70,0,0,0,67,0,0,0, 63,0,0,0,60,0,0,0]; + ~reload.value; + }, + // [4:00] DROP retour amen + lead... + drop_retour_amen_lead: { + Synth(\impact, [\freq, 45, \decay, 2, \amp, 0.5]); + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5500; + ~melodyAmp = 0.18; + ~melodyNotes = [60,67,72,75, 70,67,63,60, 65,70,75,77, 72,70,67,63, + 63,70,75,79, 75,72,70,67, 60,65,70,75, 67,63,60,0]; + ~reload.value; + }, + // [6:00] outro pad fade... + outro_pad_fade: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + }, +); +"=== sections I chargees : ".post; ~sections['I'].keys.asArray.postln; +) + +// --- Lancer une section TRACK I --- +( ~jumpTo.('I', 'liquid_dnb_174_bpm'); ) // [0:00] === LIQUID DNB 174 BPM === +( ~jumpTo.('I', 'intro_warmpad'); ) // [0:00] intro warmPad... +( ~jumpTo.('I', 'amen_break_entre'); ) // [0:20] amen break entre... +( ~jumpTo.('I', 'smooth_lead_par_dessus'); ) // [1:00] smooth lead par-dessus... +( ~jumpTo.('I', 'reese_sub_bass_entre'); ) // [2:20] reese sub bass entre... +( ~jumpTo.('I', 'breakdown_smooth_choir'); ) // [3:20] breakdown smooth choir... +( ~jumpTo.('I', 'drop_retour_amen_lead'); ) // [4:00] DROP retour amen + lead... +( ~jumpTo.('I', 'outro_pad_fade'); ) // [6:00] outro pad fade... + + +// ===================================================================== +// TRACK J -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['J'] = ( + // [0:00] === AMBIENT CINEMATIQUE 80 BPM === + ambient_cinematique_80_bpm: { + TempoClock.default.tempo = 80 / 60; + }, + // [0:00] drone seul... + drone_seul: { + ~melodyInst = \drone; + ~melodyAttack = 1.5; ~melodyRelease = 3.0; ~melodyCutoff = 1500; + ~melodyAmp = 0.20; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 50, \decay, 8, \amp, 0.5]); + }, + // [1:00] strings entrent... + strings_entrent: { + ~melodyInst = \strings; + ~melodyAttack = 0.4; ~melodyRelease = 1.2; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 63,0,0,0, 67,0,0,0, 70,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 63,0,0,0]; + ~reload.value; + }, + // [2:30] choir mystique... + choir_mystique: { + Synth(\gong, [\freq, 60, \decay, 10, \amp, 0.4]); + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; ~melodyCutoff = 2800; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,0,0,67,0,0, 70,0,0,0,72,0,0,0, + 75,0,0,0,72,0,0,0, 70,0,0,0,67,0,0,0]; + ~reload.value; + }, + // [4:30] handpan emerge (rythme doux)... + handpan_emerge_rythme_doux: { + ~percInst = \tom; + ~percSteps = [1,0,0,0, 0,0,0,1, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; + ~tomFreq = 70; + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 1.8; ~melodyCutoff = 5000; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,67,0,70,0,72,0, 75,0,72,70,67,0,63,60, + 63,0,67,0,70,0,75,0, 79,0,75,72,70,0,65,60]; + ~reload.value; + }, + // [6:30] flute melodique... + flute_melodique: { + ~melodyInst = \flute; + ~melodyAttack = 0.08; ~melodyRelease = 0.5; ~melodyCutoff = 4000; + ~melodyAmp = 0.20; + ~melodyNotes = [72,0,75,0,77,0,75,72, 70,0,72,75,72,70,67,0, + 77,0,79,0,82,0,79,77, 75,0,77,0,72,0,70,0]; + ~reload.value; + }, + // [9:00] retour drone profond... + retour_drone_profond: { + Synth(\gong, [\freq, 40, \decay, 12, \amp, 0.6]); + ~percSteps = (0!16); + ~melodyInst = \drone; + ~melodyAttack = 1.5; ~melodyRelease = 3.0; ~melodyCutoff = 1200; + ~melodyAmp = 0.18; + ~melodyNotes = [36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~reload.value; + }, + // [10:30] outro lent... + outro_lent: { + Synth(\gong, [\freq, 35, \decay, 15, \amp, 0.7]); + }, +); +"=== sections J chargees : ".post; ~sections['J'].keys.asArray.postln; +) + +// --- Lancer une section TRACK J --- +( ~jumpTo.('J', 'ambient_cinematique_80_bpm'); ) // [0:00] === AMBIENT CINEMATIQUE 80 BPM === +( ~jumpTo.('J', 'drone_seul'); ) // [0:00] drone seul... +( ~jumpTo.('J', 'strings_entrent'); ) // [1:00] strings entrent... +( ~jumpTo.('J', 'choir_mystique'); ) // [2:30] choir mystique... +( ~jumpTo.('J', 'handpan_emerge_rythme_doux'); ) // [4:30] handpan emerge (rythme doux)... +( ~jumpTo.('J', 'flute_melodique'); ) // [6:30] flute melodique... +( ~jumpTo.('J', 'retour_drone_profond'); ) // [9:00] retour drone profond... +( ~jumpTo.('J', 'outro_lent'); ) // [10:30] outro lent... + + +// ===================================================================== +// TRACK K -- 9 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['K'] = ( + // [0:00] === TRIBAL ETHNO 100 BPM === + tribal_ethno_100_bpm: { + TempoClock.default.tempo = 100 / 60; + }, + // [0:00] tom + handpan intro... + tom_handpan_intro: { + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 1.5; ~melodyCutoff = 5000; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,67,0,70,0,72,0, 70,67,0,63,0,0,60,0, + 63,0,67,0,70,0,75,0, 70,0,67,0,63,0,60,0]; + ~percInst = \tom; ~tomFreq = 90; + ~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; ~percAmp = 0.4; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); ~clapSteps=(0!16); + ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\fifth); + }, + // [0:45] kick lent + tom plus dense... + kick_lent_tom_plus_dense: { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.5; + ~kickFreq = 50; ~kickPitchAmt = 2.5; ~kickDecay = 0.4; ~kickClick = 0.1; + ~percSteps = [1,0,1,1, 0,1,0,1, 1,0,1,0, 0,1,1,0]; ~percAmp = 0.35; + ~reload.value; + }, + // [1:30] flute chante par-dessus... + flute_chante_par_dessus: { + ~melodyInst = \flute; + ~melodyAttack = 0.08; ~melodyRelease = 0.4; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = [72,0,75,0,77,75,72,0, 70,0,72,0,75,0,77,0, + 79,0,77,75,72,0,70,0, 72,0,75,0,77,0,79,0]; + ~reload.value; + }, + // [2:30] hat secondaire entre... + hat_secondaire_entre: { + ~percInst = \openHat; + ~hatSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,1,0,0]; ~hatAmp = 0.10; + ~percSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,0]; ~percAmp = 0.18; + ~reload.value; + }, + // [3:30] handpan duo avec flute... + handpan_duo_avec_flute: { + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 1.2; ~melodyCutoff = 4500; + ~melodyAmp = 0.22; + ~melodyNotes = [72,0,79,0,75,72,67,0, 70,0,72,0,77,0,75,0, + 79,0,82,79,77,72,67,0, 75,0,77,0,79,0,82,0]; + ~reload.value; + }, + // [4:30] section dense full ensemble... + section_dense_full_ensemble: { + ~percInst = \tom; ~tomFreq = 90; + ~percSteps = [1,0,1,0, 0,1,1,0, 1,0,0,1, 0,1,0,1]; ~percAmp = 0.38; + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.10; + ~kickSteps = [1,0,0,0, 0,0,1,0, 1,0,0,0, 0,0,1,0]; + ~reload.value; + }, + // [6:00] descente, juste flute + drone... + descente_juste_flute_drone: { + Synth(\gong, [\freq, 60, \decay, 6, \amp, 0.4]); + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.4; + ~percSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 0,0,0,0]; ~percAmp = 0.25; + ~hatAmp = 0.06; + ~melodyInst = \flute; + ~melodyAttack = 0.1; ~melodyRelease = 0.6; + ~melodyAmp = 0.18; + ~reload.value; + }, + // [7:00] outro fade... + outro_fade: { + Synth(\gong, [\freq, 45, \decay, 8, \amp, 0.5]); + }, +); +"=== sections K chargees : ".post; ~sections['K'].keys.asArray.postln; +) + +// --- Lancer une section TRACK K --- +( ~jumpTo.('K', 'tribal_ethno_100_bpm'); ) // [0:00] === TRIBAL ETHNO 100 BPM === +( ~jumpTo.('K', 'tom_handpan_intro'); ) // [0:00] tom + handpan intro... +( ~jumpTo.('K', 'kick_lent_tom_plus_dense'); ) // [0:45] kick lent + tom plus dense... +( ~jumpTo.('K', 'flute_chante_par_dessus'); ) // [1:30] flute chante par-dessus... +( ~jumpTo.('K', 'hat_secondaire_entre'); ) // [2:30] hat secondaire entre... +( ~jumpTo.('K', 'handpan_duo_avec_flute'); ) // [3:30] handpan duo avec flute... +( ~jumpTo.('K', 'section_dense_full_ensemble'); ) // [4:30] section dense full ensemble... +( ~jumpTo.('K', 'descente_juste_flute_drone'); ) // [6:00] descente, juste flute + drone... +( ~jumpTo.('K', 'outro_fade'); ) // [7:00] outro fade... + + +// ===================================================================== +// TRACK L -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['L'] = ( + // [0:00] === FUTURE GARAGE 130 BPM === + future_garage_130_bpm: { + TempoClock.default.tempo = 130 / 60; + }, + // [0:00] intro warmPad atmospherique... + intro_warmpad_atmospherique: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.7; ~melodyRelease = 2.0; ~melodyCutoff = 1500; + ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0,67,0,0,0, 70,0,0,0,72,0,0,0, + 72,0,0,0,70,0,0,0, 67,0,0,0,63,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\dubBass); + }, + // [0:25] beat 2-step + clap... + beat_2_step_clap: { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.5; ~kickClick = 0.1; + ~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.10; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,1,0,0]; ~snareAmp = 0.3; + ~snareFreq = 220; ~snareNoiseAmt = 0.7; + ~reload.value; + }, + // [1:00] subBoom 808 entre... + subboom_808_entre: { + ~melodyInst = \subBoom; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; ~melodyAmp = 0.32; + ~melodyNotes = [36,0,0,0, 36,0,0,0, 0,0,41,0, 39,0,0,0, + 36,0,0,0, 38,0,0,0, 0,0,41,0, 39,0,0,0]; + ~reload.value; + }, + // [2:00] section : warmPad lead par-dessus... + section_warmpad_lead_par_dessus: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.3; ~melodyRelease = 1.2; ~melodyCutoff = 2200; + ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,67, 0,70,0,72, 70,0,67,0, 63,0,0,60, + 65,0,0,72, 0,75,0,77, 75,0,72,0, 67,0,0,60]; + ~reload.value; + }, + // [3:20] breakdown reverb-like... + breakdown_reverb_like: { + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~kickAmp = 0.4; + ~hatAmp = 0.05; ~clapAmp = 0; + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 1.5; ~melodyCutoff = 2500; + ~melodyAmp = 0.20; + ~reload.value; + }, + // [4:00] retour beat + sub massif... + retour_beat_sub_massif: { + Synth(\impact, [\freq, 35, \decay, 2.5, \amp, 0.55]); + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.12; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.35; + ~melodyInst = \subBoom; + ~melodyAttack = 0.005; ~melodyRelease = 0.6; ~melodyAmp = 0.36; + ~melodyNotes = [36,0,0,0, 36,0,0,0, 0,0,41,0, 39,0,0,0, + 36,0,0,0, 38,0,0,0, 0,0,41,0, 36,0,0,0]; + ~reload.value; + }, + // [5:40] outro pad fade... + outro_pad_fade: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.7; ~melodyRelease = 2.0; ~melodyCutoff = 1200; + ~melodyAmp = 0.18; + ~reload.value; + }, +); +"=== sections L chargees : ".post; ~sections['L'].keys.asArray.postln; +) + +// --- Lancer une section TRACK L --- +( ~jumpTo.('L', 'future_garage_130_bpm'); ) // [0:00] === FUTURE GARAGE 130 BPM === +( ~jumpTo.('L', 'intro_warmpad_atmospherique'); ) // [0:00] intro warmPad atmospherique... +( ~jumpTo.('L', 'beat_2_step_clap'); ) // [0:25] beat 2-step + clap... +( ~jumpTo.('L', 'subboom_808_entre'); ) // [1:00] subBoom 808 entre... +( ~jumpTo.('L', 'section_warmpad_lead_par_dessus'); ) // [2:00] section : warmPad lead par-dessus... +( ~jumpTo.('L', 'breakdown_reverb_like'); ) // [3:20] breakdown reverb-like... +( ~jumpTo.('L', 'retour_beat_sub_massif'); ) // [4:00] retour beat + sub massif... +( ~jumpTo.('L', 'outro_pad_fade'); ) // [5:40] outro pad fade... + + +// ===================================================================== +// TRACK M -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['M'] = ( + // [0:00] === CHIPTUNE MADNESS 150 BPM === + chiptune_madness_150_bpm: { + TempoClock.default.tempo = 150 / 60; + }, + // [0:00] intro arp seul... + intro_arp_seul: { + ~melodyInst = \squareLead; + ~melodyAttack = 0.003; ~melodyRelease = 0.15; ~melodyCutoff = 5500; + ~melodyAmp = 0.18; + ~melodyNotes = [60,67,72,67, 60,65,72,65, 63,70,75,70, 63,67,72,67, + 60,67,72,79, 75,72,67,60, 63,67,75,79, 75,72,67,63]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\arp); + }, + // [0:20] kick chip + hat fast... + kick_chip_hat_fast: { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~kickFreq = 70; ~kickPitchAmt = 4.0; ~kickDecay = 0.15; ~kickClick = 0.4; + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.12; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~snareFreq = 280; + ~reload.value; + }, + // [1:00] arp variations... + arp_variations: { + ~melodyNotes = [60,67,72,75, 70,67,60,67, 63,70,75,77, 72,70,63,70, + 65,72,77,79, 75,72,65,72, 60,67,72,79, 75,72,67,60]; + ~reload.value; + }, + // [1:50] DROP square + sub punchy... + drop_square_sub_punchy: { + ~melodyInst = \squareLead; + ~melodyCutoff = 6500; ~melodyAmp = 0.20; + ~kickAmp = 0.5; + Synth(\impact, [\freq, 50, \decay, 1.5, \amp, 0.4]); + ~melodyNotes = [60, 0, 67, 60, 72, 67, 60, 67, + 63, 0, 70, 63, 75, 70, 63, 70, + 65, 0, 72, 65, 77, 72, 65, 72, + 63, 0, 70, 63, 75, 70, 67, 60]; + ~reload.value; + }, + // [3:00] breakdown handpan asiatique... + breakdown_handpan_asiatique: { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~hatAmp = 0.06; + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 1.0; ~melodyCutoff = 4500; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,67,0,72,0,67,0, 65,0,70,0,75,0,70,0, + 63,0,70,0,75,0,79,0, 75,0,72,0,67,0,60,0]; + ~reload.value; + }, + // [3:30] DROP FINAL chip arp + tom rolls... + drop_final_chip_arp_tom_rolls: { + Synth(\impact, [\freq, 45, \decay, 1.5, \amp, 0.4]); + Synth(\crash, [\decay, 2, \amp, 0.3]); + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [1,1,1,0, 1,1,1,0, 1,1,1,0, 1,1,1,0]; ~hatAmp = 0.13; + ~melodyInst = \squareLead; + ~melodyAttack = 0.002; ~melodyRelease = 0.12; ~melodyCutoff = 7000; + ~melodyAmp = 0.22; + ~melodyNotes = [60,67,72,79, 75,72,67,72, 63,70,75,82, 79,75,70,75, + 65,72,77,84, 79,77,72,77, 60,67,72,79, 75,72,67,60]; + ~percInst = \tom; ~tomFreq = 140; + ~percSteps = [0,0,0,0, 0,0,0,0, 0,0,0,1, 0,1,0,1]; ~percAmp = 0.3; + ~reload.value; + }, + // [5:10] outro chip degrade... + outro_chip_degrade: { + }, +); +"=== sections M chargees : ".post; ~sections['M'].keys.asArray.postln; +) + +// --- Lancer une section TRACK M --- +( ~jumpTo.('M', 'chiptune_madness_150_bpm'); ) // [0:00] === CHIPTUNE MADNESS 150 BPM === +( ~jumpTo.('M', 'intro_arp_seul'); ) // [0:00] intro arp seul... +( ~jumpTo.('M', 'kick_chip_hat_fast'); ) // [0:20] kick chip + hat fast... +( ~jumpTo.('M', 'arp_variations'); ) // [1:00] arp variations... +( ~jumpTo.('M', 'drop_square_sub_punchy'); ) // [1:50] DROP square + sub punchy... +( ~jumpTo.('M', 'breakdown_handpan_asiatique'); ) // [3:00] breakdown handpan asiatique... +( ~jumpTo.('M', 'drop_final_chip_arp_tom_rolls'); ) // [3:30] DROP FINAL chip arp + tom rolls... +( ~jumpTo.('M', 'outro_chip_degrade'); ) // [5:10] outro chip degrade... + + +// ===================================================================== +// TRACK N -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['N'] = ( + // [0:00] === PHONK 130 BPM === + phonk_130_bpm: { + TempoClock.default.tempo = 130 / 60; + }, + // [0:00] cowbell + dark pad... + cowbell_dark_pad: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 1.5; ~melodyCutoff = 1200; + ~melodyAmp = 0.16; + ~melodyNotes = [48,0,0,0,0,0,0,0, 51,0,0,0,53,0,0,0, + 48,0,0,0,0,0,0,0, 51,0,0,0,55,0,0,0]; + ~percInst = \cowbell; ~cowbellFreq = 800; + ~percSteps = [0,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.3; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\bassline); + }, + // [0:20] kick + hi-hats triplets... + kick_hi_hats_triplets: { + ~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.55; + ~kickFreq = 45; ~kickPitchAmt = 2.5; ~kickDecay = 0.5; ~kickClick = 0.1; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.10; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~reload.value; + }, + // [0:50] sub 808 entre... + sub_808_entre: { + ~melodyInst = \subBoom; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; ~melodyAmp = 0.36; + ~melodyNotes = [36,0,0,0, 0,0,0,36, 39,0,0,0, 0,41,0,0, + 36,0,0,0, 0,0,0,38, 41,0,0,0, 0,39,0,0]; + ~reload.value; + }, + // [1:50] section dark fmBass... + section_dark_fmbass: { + ~melodyInst = \fmBass; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; ~melodyCutoff = 1500; + ~melodyAmp = 0.32; + ~melodyNotes = [36,0,39,0, 36,0,0,41, 39,0,36,0, 41,0,43,0, + 36,0,39,0, 41,0,43,0, 39,0,36,0, 41,39,36,0]; + ~reload.value; + }, + // [2:50] breakdown atmosphere + cowbell solo... + breakdown_atmosphere_cowbell_solo: { + ~kickSteps=(0!16); ~hatAmp=0.05; ~clapSteps=(0!16); + ~percAmp = 0.4; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; ~melodyCutoff = 1500; + ~melodyAmp = 0.18; + ~reload.value; + }, + // [3:15] DROP retour + sub massif... + drop_retour_sub_massif: { + Synth(\impact, [\freq, 30, \decay, 2.5, \amp, 0.6]); + ~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.11; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~melodyInst = \subBoom; + ~melodyAmp = 0.40; + ~melodyNotes = [36,0,0,0, 39,0,0,0, 36,0,0,41, 39,0,0,0, + 36,0,38,0, 39,0,0,41, 43,0,41,0, 39,0,36,0]; + ~reload.value; + }, + // [4:30] outro fade... + outro_fade: { + }, +); +"=== sections N chargees : ".post; ~sections['N'].keys.asArray.postln; +) + +// --- Lancer une section TRACK N --- +( ~jumpTo.('N', 'phonk_130_bpm'); ) // [0:00] === PHONK 130 BPM === +( ~jumpTo.('N', 'cowbell_dark_pad'); ) // [0:00] cowbell + dark pad... +( ~jumpTo.('N', 'kick_hi_hats_triplets'); ) // [0:20] kick + hi-hats triplets... +( ~jumpTo.('N', 'sub_808_entre'); ) // [0:50] sub 808 entre... +( ~jumpTo.('N', 'section_dark_fmbass'); ) // [1:50] section dark fmBass... +( ~jumpTo.('N', 'breakdown_atmosphere_cowbell_solo'); ) // [2:50] breakdown atmosphere + cowbell solo... +( ~jumpTo.('N', 'drop_retour_sub_massif'); ) // [3:15] DROP retour + sub massif... +( ~jumpTo.('N', 'outro_fade'); ) // [4:30] outro fade... + + +// ===================================================================== +// TRACK O -- 9 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['O'] = ( + // [0:00] === ASIAN CINEMATIC 92 BPM === + asian_cinematic_92_bpm: { + TempoClock.default.tempo = 92 / 60; + }, + // [0:00] gong puis koto solo... + gong_puis_koto_solo: { + Synth(\gong, [\freq, 60, \decay, 8, \amp, 0.6]); + ~melodyInst = \koto; + ~melodyAttack = 0.001; ~melodyRelease = 0.6; ~melodyCutoff = 6000; + ~melodyAmp = 0.24; + ~melodyNotes = [60,0,67,0,72,0,67,65, 63,0,60,0,0,67,70,72, + 65,0,72,0,67,0,72,75, 70,0,67,0,65,0,60,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\counter); + }, + // [1:00] erhu chante par-dessus... + erhu_chante_par_dessus: { + ~melodyInst = \erhu; + ~melodyAttack = 0.05; ~melodyRelease = 0.5; ~melodyCutoff = 2500; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,65,67,0,69,0, 72,0,69,67,65,0,60,0, + 65,0,0,69,72,0,74,0, 77,0,74,72,69,0,65,0]; + ~reload.value; + }, + // [2:30] tom doux entre (rythme tres lent)... + tom_doux_entre_rythme_tres_lent: { + ~percInst = \tom; ~tomFreq = 80; + ~percSteps = [1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.3; + ~reload.value; + }, + // [3:30] pipa solo expressif... + pipa_solo_expressif: { + Synth(\gong, [\freq, 70, \decay, 7, \amp, 0.4]); + ~melodyInst = \pipa; + ~melodyAttack = 0.001; ~melodyRelease = 0.6; ~melodyCutoff = 4500; + ~melodyAmp = 0.24; + ~melodyNotes = [72,0,75,77,79,0,77,75, 72,0,69,0,67,0,65,0, + 77,0,79,82,84,0,82,79, 77,0,72,0,69,0,67,0]; + ~reload.value; + }, + // [5:00] section ample : strings + flute layered... + section_ample_strings_flute_layered: { + ~melodyInst = \strings; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0,67,0,0,0, 70,0,0,0,72,0,0,0, + 72,0,0,0,70,0,0,0, 65,0,0,0,60,0,0,0]; + ~percSteps = [1,0,0,1, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~percAmp = 0.32; + ~reload.value; + }, + // [6:30] flute melodique aerienne... + flute_melodique_aerienne: { + ~melodyInst = \flute; + ~melodyAttack = 0.1; ~melodyRelease = 0.6; ~melodyCutoff = 4000; + ~melodyAmp = 0.22; + ~melodyNotes = [72,0,77,0,79,77,72,0, 70,0,72,77,75,72,67,0, + 77,0,82,0,84,82,79,0, 77,0,79,82,77,72,69,0]; + ~reload.value; + }, + // [8:00] retour koto + erhu duo descente... + retour_koto_erhu_duo_descente: { + Synth(\gong, [\freq, 50, \decay, 10, \amp, 0.55]); + ~percSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~percAmp = 0.2; + ~melodyInst = \erhu; + ~melodyAttack = 0.06; ~melodyRelease = 0.6; ~melodyCutoff = 2000; + ~melodyAmp = 0.20; + ~melodyNotes = [72,0,0,0,69,0,0,0, 67,0,0,0,65,0,0,0, + 63,0,0,0,60,0,0,0, 65,0,0,0,60,0,0,0]; + ~reload.value; + }, + // [9:00] outro long, gong final... + outro_long_gong_final: { + Synth(\gong, [\freq, 40, \decay, 15, \amp, 0.7]); + }, +); +"=== sections O chargees : ".post; ~sections['O'].keys.asArray.postln; +) + +// --- Lancer une section TRACK O --- +( ~jumpTo.('O', 'asian_cinematic_92_bpm'); ) // [0:00] === ASIAN CINEMATIC 92 BPM === +( ~jumpTo.('O', 'gong_puis_koto_solo'); ) // [0:00] gong puis koto solo... +( ~jumpTo.('O', 'erhu_chante_par_dessus'); ) // [1:00] erhu chante par-dessus... +( ~jumpTo.('O', 'tom_doux_entre_rythme_tres_lent'); ) // [2:30] tom doux entre (rythme tres lent)... +( ~jumpTo.('O', 'pipa_solo_expressif'); ) // [3:30] pipa solo expressif... +( ~jumpTo.('O', 'section_ample_strings_flute_layered'); ) // [5:00] section ample : strings + flute layered... +( ~jumpTo.('O', 'flute_melodique_aerienne'); ) // [6:30] flute melodique aerienne... +( ~jumpTo.('O', 'retour_koto_erhu_duo_descente'); ) // [8:00] retour koto + erhu duo descente... +( ~jumpTo.('O', 'outro_long_gong_final'); ) // [9:00] outro long, gong final... + + +// ===================================================================== +// TRACK P -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['P'] = ( + // [0:00] === INDUSTRIAL 130 BPM === + industrial_130_bpm: { + TempoClock.default.tempo = 130 / 60; + }, + // [0:00] drone tendu + metal hits... + drone_tendu_metal_hits: { + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.18; + ~melodyNotes = [36,0,0,0,0,0,0,0, 36,0,0,0,39,0,0,0, + 36,0,0,0,0,0,0,0, 41,0,0,0,39,0,0,0]; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.35; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\bassline); + }, + // [0:25] kick distordu T4 + clap heavy... + kick_distordu_t4_clap_heavy: { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.10; + ~reload.value; + }, + // [1:00] reeseHard menacant entre... + reesehard_menacant_entre: { + ~melodyInst = \reeseHard; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; ~melodyCutoff = 700; + ~melodyDrive = 4.0; ~melodyAmp = 0.25; + ~melodyNotes = [36,0,0,0, 39,0,0,0, 36,0,0,0, 41,0,0,0, + 36,0,0,0, 38,0,0,0, 41,0,0,0, 39,0,0,0]; + ~reload.value; + }, + // [2:00] section growl + drum hard... + section_growl_drum_hard: { + Synth(\impact, [\freq, 35, \decay, 2, \amp, 0.55]); + ~kickSteps = [1,0,1,0, 0,0,0,0, 1,0,0,1, 0,0,0,0]; ~kickAmp = 0.55; + ~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.5; + ~snareFreq = 240; ~snareNoiseAmt = 0.75; + ~melodyInst = \growl; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; + ~melodyCutoff = 350; ~melodyDrive = 3.5; + ~melodyWobbleRate = 4; ~melodyWobbleDepth = 2200; ~melodyWobbleShape = 0; + ~melodySubAmt = 0.7; ~melodyAmp = 0.20; + ~reload.value; + }, + // [3:30] tension : drum cuts, drone seul... + tension_drum_cuts_drone_seul: { + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~kickAmp = 0.5; + ~snareSteps = (0!16); ~clapSteps = (0!16); ~hatAmp = 0.05; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1200; + ~melodyAmp = 0.20; + ~percSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 0,1,0,0]; ~percAmp = 0.35; + ~reload.value; + Synth(\gong, [\freq, 80, \decay, 6, \amp, 0.5]); + }, + // [4:15] DROP final hard growl + kick double... + drop_final_hard_growl_kick_double: { + Synth(\impact, [\freq, 30, \decay, 3, \amp, 0.65]); + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.5; + ~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.5; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.4; + ~melodyInst = \growl; + ~melodyCutoff = 280; ~melodyDrive = 3.8; + ~melodyWobbleRate = 8; ~melodyWobbleShape = 1; ~melodyAmp = 0.22; + ~reload.value; + }, + // [6:45] outro mecanique... + outro_mecanique: { + Synth(\sweep, [\dur, 8, \startCutoff, 6000, \endCutoff, 200, \amp, 0.3]); + }, +); +"=== sections P chargees : ".post; ~sections['P'].keys.asArray.postln; +) + +// --- Lancer une section TRACK P --- +( ~jumpTo.('P', 'industrial_130_bpm'); ) // [0:00] === INDUSTRIAL 130 BPM === +( ~jumpTo.('P', 'drone_tendu_metal_hits'); ) // [0:00] drone tendu + metal hits... +( ~jumpTo.('P', 'kick_distordu_t4_clap_heavy'); ) // [0:25] kick distordu T4 + clap heavy... +( ~jumpTo.('P', 'reesehard_menacant_entre'); ) // [1:00] reeseHard menacant entre... +( ~jumpTo.('P', 'section_growl_drum_hard'); ) // [2:00] section growl + drum hard... +( ~jumpTo.('P', 'tension_drum_cuts_drone_seul'); ) // [3:30] tension : drum cuts, drone seul... +( ~jumpTo.('P', 'drop_final_hard_growl_kick_double'); ) // [4:15] DROP final hard growl + kick double... +( ~jumpTo.('P', 'outro_mecanique'); ) // [6:45] outro mecanique... + + +// ===================================================================== +// TRACK Q -- 9 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['Q'] = ( + // [0:00] === NEUROFUNK DNB 174 BPM === + neurofunk_dnb_174_bpm: { + TempoClock.default.tempo = 174 / 60; + }, + // [0:00] intro pad sombre... + intro_pad_sombre: { + ~melodyInst = \drone; + ~melodyAttack = 0.8; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.18; + ~melodyNotes = [36,0,0,0,0,0,0,0, 39,0,0,0,0,0,0,0, + 36,0,0,0,0,0,0,0, 41,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\bassline); + }, + // [0:20] amen syncope entre... + amen_syncope_entre: { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~reload.value; + }, + // [0:45] BUILD vers DROP reese... + build_vers_drop_reese: { + Synth(\riser, [\dur, 8, \startCutoff, 400, \endCutoff, 11000, \amp, 0.35]); + Synth(\impact, [\freq, 40, \decay, 2, \amp, 0.6]); + }, + // [0:53] === DROP reeseHard menacant === + drop_reesehard_menacant: { + ~melodyInst = \reeseHard; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 600; + ~melodyDrive = 4.0; ~melodyAmp = 0.28; + ~melodyNotes = [36,0,0,0, 39,0,41,0, 36,0,0,0, 41,0,0,43, + 36,0,38,0, 39,0,41,0, 41,0,43,0, 39,0,36,0]; + ~reload.value; + }, + // [2:33] section : variations bass + acid stabs... + section_variations_bass_acid_stabs: { + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,0]; + ~acidSlides = [0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~acidCutoff = 1500; ~acidRq = 0.10; ~acidDrive = 3.0; ~acidAmp = 0.25; + ~reload.value; + }, + // [3:53] breakdown atmospheric... + breakdown_atmospheric: { + ~kickSteps = (0!16); ~snareSteps = (0!16); + ~hatAmp = 0.06; ~acidAmp = 0; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; ~melodyCutoff = 2200; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0,63,0,0,0, 67,0,0,0,70,0,0,0, + 72,0,0,0,70,0,0,0, 65,0,0,0,60,0,0,0]; + ~reload.value; + }, + // [4:28] DROP 2 hard reese + amen full... + drop_2_hard_reese_amen_full: { + Synth(\impact, [\freq, 32, \decay, 3, \amp, 0.7]); + Synth(\crash, [\decay, 3, \amp, 0.4]); + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,1]; ~snareAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.14; + ~melodyInst = \reeseHard; + ~melodyCutoff = 700; ~melodyDrive = 4.5; ~melodyAmp = 0.30; + ~acidAmp = 0.28; ~acidCutoff = 1800; ~acidDrive = 3.5; + ~reload.value; + }, + // [6:08] outro fade... + outro_fade: { + Synth(\sweep, [\dur, 6, \startCutoff, 8000, \endCutoff, 200, \amp, 0.3]); + }, +); +"=== sections Q chargees : ".post; ~sections['Q'].keys.asArray.postln; +) + +// --- Lancer une section TRACK Q --- +( ~jumpTo.('Q', 'neurofunk_dnb_174_bpm'); ) // [0:00] === NEUROFUNK DNB 174 BPM === +( ~jumpTo.('Q', 'intro_pad_sombre'); ) // [0:00] intro pad sombre... +( ~jumpTo.('Q', 'amen_syncope_entre'); ) // [0:20] amen syncope entre... +( ~jumpTo.('Q', 'build_vers_drop_reese'); ) // [0:45] BUILD vers DROP reese... +( ~jumpTo.('Q', 'drop_reesehard_menacant'); ) // [0:53] === DROP reeseHard menacant === +( ~jumpTo.('Q', 'section_variations_bass_acid_stabs'); ) // [2:33] section : variations bass + acid stabs... +( ~jumpTo.('Q', 'breakdown_atmospheric'); ) // [3:53] breakdown atmospheric... +( ~jumpTo.('Q', 'drop_2_hard_reese_amen_full'); ) // [4:28] DROP 2 hard reese + amen full... +( ~jumpTo.('Q', 'outro_fade'); ) // [6:08] outro fade... + + +// ===================================================================== +// TRACK R -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['R'] = ( + // [0:00] === SYNTHWAVE 100 BPM === + synthwave_100_bpm: { + TempoClock.default.tempo = 100 / 60; + }, + // [0:00] intro warmPad atmospherique... + intro_warmpad_atmospherique: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; ~melodyCutoff = 1800; + ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0,63,0,0,0, 67,0,0,0,70,0,0,0, + 72,0,0,0,70,0,0,0, 67,0,0,0,63,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\fifth); + }, + // [0:25] beat 80s : kick + snare 1-2-3-4... + beat_80s_kick_snare_1_2_3_4: { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.18; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~snareFreq = 220; ~snareNoiseAmt = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~reload.value; + }, + // [1:00] saw3 lead retro entre... + saw3_lead_retro_entre: { + ~melodyInst = \saw3; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; ~melodyCutoff = 3000; + ~melodyDrive = 1.6; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,67,0,70,0,72,0, 70,67,0,63,0,67,70,0, + 72,0,75,0,77,0,75,72, 70,67,0,63,0,60,0,0]; + ~reload.value; + }, + // [2:20] verse fmLead solo... + verse_fmlead_solo: { + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5500; + ~melodyAmp = 0.18; + ~melodyNotes = [72,0,75,0,77,75,72,0, 70,0,72,75,72,70,67,0, + 77,0,79,0,82,79,77,75, 72,0,70,67,65,0,60,0]; + ~reload.value; + }, + // [3:40] breakdown choir + saw lead duo... + breakdown_choir_saw_lead_duo: { + ~kickSteps = (0!16); ~snareSteps = (0!16); ~hatAmp = 0.06; + ~melodyInst = \choir; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2500; + ~melodyAmp = 0.20; + ~reload.value; + }, + // [4:15] DROP 2 chord stabs + lead duo... + drop_2_chord_stabs_lead_duo: { + Synth(\impact, [\freq, 45, \decay, 2, \amp, 0.45]); + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~melodyInst = \saw3; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; ~melodyCutoff = 3500; + ~melodyAmp = 0.18; + ~melodyNotes = [60,0,67,72, 70,0,67,63, 65,0,72,75, 72,0,70,65, + 60,0,67,72, 70,0,67,63, 65,0,72,77, 75,0,70,65]; + ~reload.value; + }, + // [6:15] outro pad fade... + outro_pad_fade: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~melodyAmp = 0.18; + ~reload.value; + }, +); +"=== sections R chargees : ".post; ~sections['R'].keys.asArray.postln; +) + +// --- Lancer une section TRACK R --- +( ~jumpTo.('R', 'synthwave_100_bpm'); ) // [0:00] === SYNTHWAVE 100 BPM === +( ~jumpTo.('R', 'intro_warmpad_atmospherique'); ) // [0:00] intro warmPad atmospherique... +( ~jumpTo.('R', 'beat_80s_kick_snare_1_2_3_4'); ) // [0:25] beat 80s : kick + snare 1-2-3-4... +( ~jumpTo.('R', 'saw3_lead_retro_entre'); ) // [1:00] saw3 lead retro entre... +( ~jumpTo.('R', 'verse_fmlead_solo'); ) // [2:20] verse fmLead solo... +( ~jumpTo.('R', 'breakdown_choir_saw_lead_duo'); ) // [3:40] breakdown choir + saw lead duo... +( ~jumpTo.('R', 'drop_2_chord_stabs_lead_duo'); ) // [4:15] DROP 2 chord stabs + lead duo... +( ~jumpTo.('R', 'outro_pad_fade'); ) // [6:15] outro pad fade... + + +// ===================================================================== +// TRACK S -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['S'] = ( + // [0:00] === DRONE DOOM 60 BPM === + drone_doom_60_bpm: { + TempoClock.default.tempo = 60 / 60; + }, + // [0:00] gong + drone profond... + gong_drone_profond: { + Synth(\gong, [\freq, 35, \decay, 20, \amp, 0.7]); + ~melodyInst = \drone; + ~melodyAttack = 3.0; ~melodyRelease = 4.0; ~melodyCutoff = 1000; + ~melodyAmp = 0.22; + ~melodyNotes = [36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\fifth); + }, + // [2:00] couches drone evolutives... + couches_drone_evolutives: { + ~melodyNotes = [36,0,0,0,39,0,0,0, 0,0,0,0,0,0,0,0, + 36,0,0,0,41,0,0,0, 0,0,0,0,0,0,0,0]; + ~melodyCutoff = 1500; + ~reload.value; + }, + // [4:00] handpan emerge tres lent... + handpan_emerge_tres_lent: { + Synth(\gong, [\freq, 50, \decay, 15, \amp, 0.5]); + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 3.0; ~melodyCutoff = 4000; + ~melodyAmp = 0.22; + ~melodyNotes = [48,0,0,0,55,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,60,0,0,0, 0,0,0,0,0,0,0,0]; + ~reload.value; + }, + // [6:30] flute solitaire... + flute_solitaire: { + ~melodyInst = \flute; + ~melodyAttack = 0.2; ~melodyRelease = 1.0; ~melodyCutoff = 3500; + ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0,65,0,0,0, 0,67,0,0,0,0,0,0, + 65,0,0,60,0,0,0,0, 67,0,0,0,72,0,0,0]; + ~reload.value; + }, + // [8:30] retour drone + pulsation tres lente... + retour_drone_pulsation_tres_lente: { + Synth(\gong, [\freq, 30, \decay, 25, \amp, 0.8]); + ~percInst = \tom; ~tomFreq = 60; + ~percSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~percAmp = 0.35; + ~melodyInst = \drone; + ~melodyAttack = 2.5; ~melodyRelease = 4.0; ~melodyCutoff = 800; + ~melodyAmp = 0.20; + ~melodyNotes = [36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~reload.value; + }, + // [11:00] choir mystique... + choir_mystique: { + ~melodyInst = \choir; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.18; + ~melodyNotes = [48,0,0,0,55,0,0,0, 60,0,0,0,55,0,0,0, + 48,0,0,0,55,0,0,0, 63,0,0,0,55,0,0,0]; + ~reload.value; + }, + // [13:00] outro tres lent fade... + outro_tres_lent_fade: { + Synth(\gong, [\freq, 25, \decay, 30, \amp, 0.9]); + ~percSteps = (0!16); + }, +); +"=== sections S chargees : ".post; ~sections['S'].keys.asArray.postln; +) + +// --- Lancer une section TRACK S --- +( ~jumpTo.('S', 'drone_doom_60_bpm'); ) // [0:00] === DRONE DOOM 60 BPM === +( ~jumpTo.('S', 'gong_drone_profond'); ) // [0:00] gong + drone profond... +( ~jumpTo.('S', 'couches_drone_evolutives'); ) // [2:00] couches drone evolutives... +( ~jumpTo.('S', 'handpan_emerge_tres_lent'); ) // [4:00] handpan emerge tres lent... +( ~jumpTo.('S', 'flute_solitaire'); ) // [6:30] flute solitaire... +( ~jumpTo.('S', 'retour_drone_pulsation_tres_lente'); ) // [8:30] retour drone + pulsation tres lente... +( ~jumpTo.('S', 'choir_mystique'); ) // [11:00] choir mystique... +( ~jumpTo.('S', 'outro_tres_lent_fade'); ) // [13:00] outro tres lent fade... + + +// ===================================================================== +// TRACK T -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['T'] = ( + // [0:00] === HARDCORE GABBER 180 BPM === + hardcore_gabber_180_bpm: { + TempoClock.default.tempo = 180 / 60; + }, + // [0:00] intro pad menacant... + intro_pad_menacant: { + ~melodyInst = \drone; + ~melodyAttack = 0.6; ~melodyRelease = 2.0; ~melodyCutoff = 1500; + ~melodyAmp = 0.18; + ~melodyNotes = [36,0,0,0,0,0,0,0, 39,0,0,0,0,0,0,0, + 36,0,0,0,0,0,0,0, 41,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); + ~acidNotes = [36,39,48,36,41,39,43,36, 39,41,36,48,39,36,41,39]; + ~acidAccents = [1,0,1,0,0,1,0,1, 0,0,1,0,1,0,0,1]; + ~acidSlides = [1,0,0,1,0,0,1,0, 0,1,0,1,0,1,0,0]; + ~acidCutoff = 1200; ~acidRq = 0.10; ~acidDrive = 3.5; ~acidAmp = 0; + ~reload.value; + ~enableHarmony.(\dubBass); + }, + // [0:15] kick double gabber + acid... + kick_double_gabber_acid: { + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~acidAmp = 0.30; ~acidCutoff = 1500; + ~reload.value; + }, + // [1:00] BUILD vers DROP hardcore... + build_vers_drop_hardcore: { + Synth(\riser, [\dur, 8, \startCutoff, 500, \endCutoff, 13000, \amp, 0.4]); + Synth(\impact, [\freq, 35, \decay, 2, \amp, 0.6]); + Synth(\crash, [\decay, 2, \amp, 0.4]); + }, + // [1:08] === DROP gabber + acid push === + drop_gabber_acid_push: { + ~acidCutoff = 2500; ~acidRq = 0.06; ~acidDrive = 4.0; ~acidAmp = 0.32; + ~melodyInst = \growl; + ~melodyAttack = 0.005; ~melodyRelease = 0.2; + ~melodyCutoff = 300; ~melodyDrive = 3.5; + ~melodyWobbleRate = 8; ~melodyWobbleDepth = 2800; + ~melodyWobbleShape = 1; ~melodySubAmt = 0.7; + ~melodyAmp = 0.18; + ~melodyNotes = [36,0,0,0, 36,0,39,0, 36,0,0,0, 41,0,0,0, + 36,0,38,0, 36,0,39,0, 41,0,43,0, 39,0,36,0]; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~reload.value; + }, + // [2:38] breakdown atmospheric... + breakdown_atmospheric: { + ~kickSteps = (0!16); ~clapSteps = (0!16); ~acidAmp = 0; + ~hatAmp = 0.06; + ~melodyInst = \drone; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; ~melodyCutoff = 1200; + ~melodyAmp = 0.20; + ~reload.value; + Synth(\gong, [\freq, 65, \decay, 5, \amp, 0.5]); + }, + // [3:03] DROP FINAL chaos kick double... + drop_final_chaos_kick_double: { + Synth(\impact, [\freq, 30, \decay, 3, \amp, 0.7]); + Synth(\crash, [\decay, 3, \amp, 0.5]); + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.14; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,1]; + ~acidAmp = 0.35; ~acidCutoff = 2800; ~acidRq = 0.05; ~acidDrive = 4.5; + ~melodyInst = \growl; + ~melodyCutoff = 250; ~melodyDrive = 4.0; + ~melodyWobbleShape = 1; ~melodySubAmt = 0.8; ~melodyAmp = 0.20; + ~reload.value; + }, + // [4:43] outro accelerando descend... + outro_accelerando_descend: { + Synth(\sweep, [\dur, 10, \startCutoff, 12000, \endCutoff, 200, \amp, 0.4]); + }, +); +"=== sections T chargees : ".post; ~sections['T'].keys.asArray.postln; +) + +// --- Lancer une section TRACK T --- +( ~jumpTo.('T', 'hardcore_gabber_180_bpm'); ) // [0:00] === HARDCORE GABBER 180 BPM === +( ~jumpTo.('T', 'intro_pad_menacant'); ) // [0:00] intro pad menacant... +( ~jumpTo.('T', 'kick_double_gabber_acid'); ) // [0:15] kick double gabber + acid... +( ~jumpTo.('T', 'build_vers_drop_hardcore'); ) // [1:00] BUILD vers DROP hardcore... +( ~jumpTo.('T', 'drop_gabber_acid_push'); ) // [1:08] === DROP gabber + acid push === +( ~jumpTo.('T', 'breakdown_atmospheric'); ) // [2:38] breakdown atmospheric... +( ~jumpTo.('T', 'drop_final_chaos_kick_double'); ) // [3:03] DROP FINAL chaos kick double... +( ~jumpTo.('T', 'outro_accelerando_descend'); ) // [4:43] outro accelerando descend... + + +// ===================================================================== +// TRACK U -- 9 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['U'] = ( + // [0:00] === VOCAL TRANCE 140 BPM === + vocal_trance_140_bpm: { + TempoClock.default.tempo = 140 / 60; + }, + // [0:00] choir intro etheree... + choir_intro_etheree: { + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; ~melodyCutoff = 2500; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0,67,0,0,0, 70,0,0,0,72,0,0,0, + 72,0,0,0,70,0,0,0, 67,0,0,0,63,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\third); + }, + // [0:40] kick + clap trance... + kick_clap_trance: { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.18; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~reload.value; + }, + // [1:30] arp warmPad par-dessus choir... + arp_warmpad_par_dessus_choir: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2500; + ~melodyAmp = 0.18; + ~melodyNotes = [60,67,70,67, 63,67,70,72, 65,67,72,75, 70,72,75,77, + 63,67,70,75, 65,70,72,77, 67,72,75,79, 70,75,77,72]; + ~reload.value; + }, + // [2:50] BUILD vers DROP epic... + build_vers_drop_epic: { + Synth(\riser, [\dur, 12, \startCutoff, 400, \endCutoff, 11000, \amp, 0.35]); + Synth(\impact, [\freq, 40, \decay, 2.5, \amp, 0.6]); + }, + // [3:02] === DROP fmLead epic === + drop_fmlead_epic: { + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 6000; + ~melodyAmp = 0.20; + ~melodyNotes = [60,67,72,75, 70,67,63,67, 65,72,77,79, 75,72,67,72, + 63,70,75,82, 79,75,72,75, 65,72,77,84, 79,75,70,72]; + ~reload.value; + }, + // [5:02] breakdown choir solo (vocal moment)... + breakdown_choir_solo_vocal_moment: { + ~kickSteps = (0!16); ~clapSteps = (0!16); ~hatAmp = 0.06; + ~melodyInst = \choir; + ~melodyAttack = 0.4; ~melodyRelease = 2.0; ~melodyCutoff = 2200; + ~melodyAmp = 0.24; + ~melodyNotes = [60,0,67,0,72,0,70,0, 67,0,63,0,60,0,0,0, + 63,0,70,0,75,0,72,0, 70,0,65,0,63,0,0,0]; + ~reload.value; + Synth(\gong, [\freq, 60, \decay, 8, \amp, 0.4]); + }, + // [5:52] BUILD 2 + DROP FINAL... + build_2_drop_final: { + Synth(\riser, [\dur, 16, \startCutoff, 500, \endCutoff, 12500, \amp, 0.4]); + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + Synth(\impact, [\freq, 35, \decay, 3, \amp, 0.7]); + Synth(\crash, [\decay, 4, \amp, 0.45]); + }, + // [8:38] outro pad fade... + outro_pad_fade: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + }, +); +"=== sections U chargees : ".post; ~sections['U'].keys.asArray.postln; +) + +// --- Lancer une section TRACK U --- +( ~jumpTo.('U', 'vocal_trance_140_bpm'); ) // [0:00] === VOCAL TRANCE 140 BPM === +( ~jumpTo.('U', 'choir_intro_etheree'); ) // [0:00] choir intro etheree... +( ~jumpTo.('U', 'kick_clap_trance'); ) // [0:40] kick + clap trance... +( ~jumpTo.('U', 'arp_warmpad_par_dessus_choir'); ) // [1:30] arp warmPad par-dessus choir... +( ~jumpTo.('U', 'build_vers_drop_epic'); ) // [2:50] BUILD vers DROP epic... +( ~jumpTo.('U', 'drop_fmlead_epic'); ) // [3:02] === DROP fmLead epic === +( ~jumpTo.('U', 'breakdown_choir_solo_vocal_moment'); ) // [5:02] breakdown choir solo (vocal moment)... +( ~jumpTo.('U', 'build_2_drop_final'); ) // [5:52] BUILD 2 + DROP FINAL... +( ~jumpTo.('U', 'outro_pad_fade'); ) // [8:38] outro pad fade... + + +// ===================================================================== +// TRACK V -- 8 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['V'] = ( + // [0:00] === GLITCH IDM 130 BPM === + glitch_idm_130_bpm: { + TempoClock.default.tempo = 130 / 60; + }, + // [0:00] intro pluck random + drone... + intro_pluck_random_drone: { + ~melodyInst = \pluck; + ~melodyAttack = 0.001; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.7, ~scaleMinorPent); + ~percInst = \rim; + ~percSteps = ~genKickPattern.(0.4); ~percAmp = 0.25; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\counter); + }, + // [0:20] beat hache random... + beat_hache_random: { + ~kickSteps = ~genKickPattern.(0.35); ~kickAmp = 0.5; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.3; + ~snareSteps = [0,0,1,0, 1,0,0,0, 0,1,0,0, 0,0,0,1]; ~snareAmp = 0.35; + ~snareFreq = 220; ~snareNoiseAmt = 0.65; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 1,0,1,0]; ~hatAmp = 0.10; + ~reload.value; + }, + // [0:40] section : mutations toutes les 4s... + section_mutations_toutes_les_4s: { + // 2:00 + }, + // [2:00] DROP -- chaos contraste avec acid drone... + drop_chaos_contraste_avec_acid_drone: { + Synth(\impact, [\freq, 40, \decay, 1.5, \amp, 0.5]); + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 1.5; ~melodyCutoff = 5500; + ~melodyAmp = 0.22; + ~kickSteps = [1,0,0,0, 0,0,1,1, 0,0,1,0, 1,0,0,1]; + ~snareSteps = [0,0,0,1, 1,0,0,0, 0,1,0,0, 0,0,1,1]; + ~hatSteps = [1,0,1,0, 1,1,0,1, 0,1,1,0, 1,0,1,1]; + ~melodyNotes = ~genMelody.(0.7, ~scaleMinorPent); + ~reload.value; + // Continue mutation + // 3:15 + }, + // [3:15] breakdown atmospheric pluck... + breakdown_atmospheric_pluck: { + ~kickSteps = (0!16); ~snareSteps = (0!16); ~hatAmp = 0.05; + ~melodyInst = \pluck; + ~melodyAttack = 0.001; ~melodyRelease = 0.6; ~melodyCutoff = 4500; + ~melodyAmp = 0.22; + ~reload.value; + }, + // [3:45] retour glitch + mutations frenetiques... + retour_glitch_mutations_frenetiques: { + Synth(\impact, [\freq, 35, \decay, 2, \amp, 0.55]); + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,1, 0,0,0,0]; + ~snareSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 1,0,1,0]; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,0,1]; ~hatAmp = 0.13; + ~reload.value; + // Chaos final + // 5:45 + }, + // [5:45] outro fade chaos progressif... + outro_fade_chaos_progressif: { + }, +); +"=== sections V chargees : ".post; ~sections['V'].keys.asArray.postln; +) + +// --- Lancer une section TRACK V --- +( ~jumpTo.('V', 'glitch_idm_130_bpm'); ) // [0:00] === GLITCH IDM 130 BPM === +( ~jumpTo.('V', 'intro_pluck_random_drone'); ) // [0:00] intro pluck random + drone... +( ~jumpTo.('V', 'beat_hache_random'); ) // [0:20] beat hache random... +( ~jumpTo.('V', 'section_mutations_toutes_les_4s'); ) // [0:40] section : mutations toutes les 4s... +( ~jumpTo.('V', 'drop_chaos_contraste_avec_acid_drone'); ) // [2:00] DROP -- chaos contraste avec acid drone... +( ~jumpTo.('V', 'breakdown_atmospheric_pluck'); ) // [3:15] breakdown atmospheric pluck... +( ~jumpTo.('V', 'retour_glitch_mutations_frenetiques'); ) // [3:45] retour glitch + mutations frenetiques... +( ~jumpTo.('V', 'outro_fade_chaos_progressif'); ) // [5:45] outro fade chaos progressif... + + +// ===================================================================== +// TRACK W -- 9 sections (auto-extraites des postln) +// ===================================================================== +( +~sections['W'] = ( + // [0:00] === DUB TECHNO 120 BPM === + dub_techno_120_bpm: { + TempoClock.default.tempo = 120 / 60; + }, + // [0:00] intro drone... + intro_drone: { + ~melodyInst = \drone; + ~melodyAttack = 1.5; ~melodyRelease = 3.0; ~melodyCutoff = 1200; + ~melodyAmp = 0.18; + ~melodyNotes = [36,0,0,0,0,0,0,0, 0,0,0,0,39,0,0,0, + 36,0,0,0,0,0,0,0, 0,0,0,0,41,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~reload.value; + ~enableHarmony.(\dubBass); + }, + // [0:45] kick minimal 4/4 + hat tres discret... + kick_minimal_4_4_hat_tres_discret: { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.45; ~kickClick = 0.08; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~reload.value; + }, + // [1:30] chord stabs warmPad avec long release... + chord_stabs_warmpad_avec_long_release: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 1.8; ~melodyCutoff = 2000; + ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0,0,0,0,0, 0,0,0,0,67,0,0,0, + 63,0,0,0,0,0,0,0, 0,0,0,0,70,0,0,0]; + ~reload.value; + }, + // [3:00] sub bass profond... + sub_bass_profond: { + Synth(\gong, [\freq, 50, \decay, 5, \amp, 0.4]); + ~melodyInst = \subBoom; + ~melodyAttack = 0.005; ~melodyRelease = 0.7; ~melodyAmp = 0.30; + ~melodyNotes = [36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 39,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~reload.value; + }, + // [4:30] section accord stabs evolutifs... + section_accord_stabs_evolutifs: { + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 2.0; ~melodyCutoff = 1800; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,67, 0,0,70,0, 0,0,72,0, 67,0,0,0, + 63,0,0,70, 0,0,72,0, 0,0,75,0, 70,0,0,0]; + ~reload.value; + }, + // [6:10] cutoff sweep tres lent (caracteristique dub)... + cutoff_sweep_tres_lent_caracteristique_dub: { + // 7:10 + }, + // [7:10] retour drone + gong... + retour_drone_gong: { + Synth(\gong, [\freq, 45, \decay, 8, \amp, 0.5]); + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.20; + ~melodyNotes = [36,0,0,0,0,0,0,0, 0,0,0,0,39,0,0,0, + 36,0,0,0,0,0,0,0, 0,0,0,0,41,0,0,0]; + ~reload.value; + }, + // [8:40] outro long fade tres dub... + outro_long_fade_tres_dub: { + Synth(\gong, [\freq, 35, \decay, 12, \amp, 0.6]); + ~hatAmp = 0.04; + }, +); +"=== sections W chargees : ".post; ~sections['W'].keys.asArray.postln; +) + +// --- Lancer une section TRACK W --- +( ~jumpTo.('W', 'dub_techno_120_bpm'); ) // [0:00] === DUB TECHNO 120 BPM === +( ~jumpTo.('W', 'intro_drone'); ) // [0:00] intro drone... +( ~jumpTo.('W', 'kick_minimal_4_4_hat_tres_discret'); ) // [0:45] kick minimal 4/4 + hat tres discret... +( ~jumpTo.('W', 'chord_stabs_warmpad_avec_long_release'); ) // [1:30] chord stabs warmPad avec long release... +( ~jumpTo.('W', 'sub_bass_profond'); ) // [3:00] sub bass profond... +( ~jumpTo.('W', 'section_accord_stabs_evolutifs'); ) // [4:30] section accord stabs evolutifs... +( ~jumpTo.('W', 'cutoff_sweep_tres_lent_caracteristique_dub'); ) // [6:10] cutoff sweep tres lent (caracteristique dub)... +( ~jumpTo.('W', 'retour_drone_gong'); ) // [7:10] retour drone + gong... +( ~jumpTo.('W', 'outro_long_fade_tres_dub'); ) // [8:40] outro long fade tres dub... + diff --git a/sound_algo/control/midi.scd b/sound_algo/control/midi.scd new file mode 100644 index 0000000..6ce4a85 --- /dev/null +++ b/sound_algo/control/midi.scd @@ -0,0 +1,119 @@ +// ===================================================================== +// midi.scd -- Mapping MIDI controller (CC + Notes) +// +// Branche un controller (Launch Control, BCR2000, Midi Fighter, etc.) +// et map les CC sur les parametres essentiels du moteur. +// +// USAGE : +// 1. Cmd+Entree sur INIT MIDI (initialise + liste devices) +// 2. Cmd+Entree sur MAPPING DEFAULT (ou copier-coller pour customiser) +// 3. Tweak en temps reel via le controller MIDI +// ===================================================================== + + +// --- INIT MIDI -- liste les devices disponibles -------------------- +( +MIDIClient.init; +"=== MIDI sources disponibles ===".postln; +MIDIClient.sources.do { |src, i| + (" [" ++ i ++ "] " ++ src.device ++ " : " ++ src.name).postln; +}; +"=== MIDI destinations ===".postln; +MIDIClient.destinations.do { |dst, i| + (" [" ++ i ++ "] " ++ dst.device ++ " : " ++ dst.name).postln; +}; +MIDIIn.connectAll; +"=== MIDIIn.connectAll OK ===".postln; +) + + +// --- MAPPING DEFAULT (16 CC standard) ------------------------------ +// Adapte les numeros CC selon ton controller (ici : Launch Control XL like) +( +~midiFuncs !? { ~midiFuncs.do { |f| f.free } }; +~midiFuncs = List.new; + +// Debounce ~reload pour eviter le spam (~reload reconstruit 8 Pdef !) +~reloadPending = ~reloadPending ?? false; +~debouncedReload = { + if (~reloadPending.not) { + ~reloadPending = true; + AppClock.sched(0.05, { ~reloadPending = false; ~reload.value; nil }); + }; +}; + +// CC 13-20 = potards rangée 1 (volumes par voix) +~midiFuncs.add(MIDIFunc.cc({ |val| ~kickAmp = val.linlin(0,127, 0,1); ~debouncedReload.() }, 13)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~hatAmp = val.linlin(0,127, 0,0.4); ~debouncedReload.() }, 14)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~snareAmp = val.linlin(0,127, 0,0.8); ~debouncedReload.() }, 15)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~clapAmp = val.linlin(0,127, 0,0.6); ~debouncedReload.() }, 16)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~percAmp = val.linlin(0,127, 0,0.5); ~debouncedReload.() }, 17)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~acidAmp = val.linlin(0,127, 0,0.5); ~debouncedReload.() }, 18)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~melodyAmp = val.linlin(0,127, 0,0.4); ~debouncedReload.() }, 19)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~harmonyAmp = val.linlin(0,127, 0,0.4); ~debouncedReload.() }, 20)); + +// CC 29-36 = potards rangée 2 (cutoffs / filtres) +~midiFuncs.add(MIDIFunc.cc({ |val| ~melodyCutoff = val.linexp(0,127, 100,12000); ~debouncedReload.() }, 29)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~melodyRq = val.linlin(0,127, 0.05,0.8); ~debouncedReload.() }, 30)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~acidCutoff = val.linexp(0,127, 100,8000); ~debouncedReload.() }, 31)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~acidRq = val.linlin(0,127, 0.05,0.5); ~debouncedReload.() }, 32)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~melodyDrive = val.linlin(0,127, 0.5,5.0); ~debouncedReload.() }, 33)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~acidDrive = val.linlin(0,127, 0.5,5.0); ~debouncedReload.() }, 34)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~melodyBoost = val.linlin(0,127, 0.5,3.0); ~debouncedReload.() }, 35)); +~midiFuncs.add(MIDIFunc.cc({ |val| TempoClock.default.tempo = val.linlin(0,127, 60,200) / 60 }, 36)); + +// CC 49-56 = potards rangée 3 (wobble / sidechain) +~midiFuncs.add(MIDIFunc.cc({ |val| ~melodyWobbleRate = val.linexp(0,127, 0.5,32); ~debouncedReload.() }, 49)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~melodyWobbleDepth = val.linlin(0,127, 0,4500); ~debouncedReload.() }, 50)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~melodySubAmt = val.linlin(0,127, 0,1.5); ~debouncedReload.() }, 51)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~acidScAmt = val.linlin(0,127, 0,1); ~debouncedReload.() }, 52)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~leadScAmt = val.linlin(0,127, 0,1); ~debouncedReload.() }, 53)); +~midiFuncs.add(MIDIFunc.cc({ |val| ~kickScShape = val.linlin(0,127, 0.05,0.5); ~debouncedReload.() }, 54)); +~midiFuncs.add(MIDIFunc.cc({ |val| + ~fxFx !? { ~fxFx[\rev] !? { |s| s.set(\mix, val.linlin(0,127, 0,1)) } }; +}, 55)); +~midiFuncs.add(MIDIFunc.cc({ |val| + ~fxFx !? { ~fxFx[\dly] !? { |s| s.set(\feedback, val.linlin(0,127, 0,0.95)) } }; +}, 56)); + +// NOTES MIDI : 36-51 = pads de declenchement FX / fills +~midiFuncs.add(MIDIFunc.noteOn({ Synth(\impact, [\freq, 40, \decay, 2, \amp, 0.6]) }, 36)); +~midiFuncs.add(MIDIFunc.noteOn({ Synth(\riser, [\dur, 4, \startCutoff, 400, \endCutoff, 11000, \amp, 0.3]) }, 37)); +~midiFuncs.add(MIDIFunc.noteOn({ Synth(\sweep, [\dur, 4, \startCutoff, 8000, \endCutoff, 200, \amp, 0.3]) }, 38)); +~midiFuncs.add(MIDIFunc.noteOn({ Synth(\crash, [\decay, 3, \amp, 0.4]) }, 39)); +~midiFuncs.add(MIDIFunc.noteOn({ Synth(\gong, [\freq, 50, \decay, 8, \amp, 0.5]) }, 40)); +~midiFuncs.add(MIDIFunc.noteOn({ ~snareFill !? { ~snareFill.value } }, 41)); +~midiFuncs.add(MIDIFunc.noteOn({ ~tomFill !? { ~tomFill.value } }, 42)); + +// NOTES 48-59 = recall scenes (si scenes definies) +12.do { |i| + var name = ("scene_" ++ (i + 1)).asSymbol; + ~midiFuncs.add(MIDIFunc.noteOn({ + ~loadScene !? { ~loadScene.(name) }; + }, 48 + i)); +}; + +"=== MIDI MAPPING ACTIF ===".postln; +" CC 13-20 : volumes par voix".postln; +" CC 29-36 : cutoffs / drive / bpm".postln; +" CC 49-56 : wobble / sidechain / FX".postln; +" Notes 36-42 : FX oneshot (impact/riser/sweep/crash/gong/fills)".postln; +" Notes 48-59 : recall scene_1 a scene_12".postln; +) + + +// --- DEBUG -- print tous les MIDI in entrants ---------------------- +( +~midiDebug = MIDIFunc.cc({ |val, num, chan| + ("[CC] " ++ num ++ " = " ++ val ++ " ch" ++ chan).postln; +}); +) +( ~midiDebug !? { ~midiDebug.free; ~midiDebug = nil }; "MIDI debug OFF".postln; ) + + +// --- STOP MIDI (libere tous les mappings) -------------------------- +( +~midiFuncs !? { ~midiFuncs.do { |f| f.free }; ~midiFuncs = nil }; +~midiDebug !? { ~midiDebug.free; ~midiDebug = nil }; +"=== MIDI STOPPED ===".postln; +) diff --git a/sound_algo/control/playlist.scd b/sound_algo/control/playlist.scd new file mode 100644 index 0000000..b41074f --- /dev/null +++ b/sound_algo/control/playlist.scd @@ -0,0 +1,279 @@ +// ===================================================================== +// playlist.scd -- Lance les tracks les unes apres les autres +// +// PREREQUIS : engine + synthdefs (charger d'abord 00_load.scd) +// USAGE : Cmd+Entree sur une playlist (au choix), elle s'enchaine +// automatiquement. +// Pour stopper : evaluer le bloc STOP PLAYLIST +// ===================================================================== + + +// --- HELPER ~playPlaylist ------------------------------------------- +// trackList = [[ "filename.scd", duration_seconds ], ...] +( +~playPlaylist = { |trackList, fadeOut = 4| + ~playlist !? { ~playlist.stop }; + ~playlist = Routine({ + var total = trackList.collect { |item| item[1] }.sum; + ("=== PLAYLIST -- " ++ trackList.size ++ " tracks, " ++ + (total / 60).round(0.1) ++ " min total ===").postln; + trackList.do { |item, idx| + var path = item[0]; var dur = item[1]; + ("[" ++ (idx + 1) ++ "/" ++ trackList.size ++ "] " ++ path ++ + " (" ++ (dur/60).round(0.1) ++ " min)").postln; + ~fading = false; + (~base ++ "tracks/" ++ path).load; + (dur - fadeOut).wait; + // FIX RACE : stopper la Routine track AVANT le fade pour qu'elle + // n'ecrase pas les amps qu'on baisse + ~track !? { ~track.stop }; + ~fading = true; + ("[fade out " ++ fadeOut ++ "s]").postln; + (fadeOut * 4).do { |k| + ~melodyAmp = ~melodyAmp * 0.92; + ~harmonyAmp = ~harmonyAmp * 0.92; + ~kickAmp = ~kickAmp * 0.92; + ~hatAmp = ~hatAmp * 0.92; + ~snareAmp = ~snareAmp * 0.92; + ~clapAmp = ~clapAmp * 0.92; + ~percAmp = ~percAmp * 0.92; + ~acidAmp = ~acidAmp * 0.92; // FIX : acid line absente du fade + ~reload.value; + 0.25.wait; + }; + ~fading = false; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + 2.wait; + }; + "=== PLAYLIST TERMINEE ===".postln; + }).play; +}; +"=== ~playPlaylist pret ===".postln; +) + + +// --- STOP PLAYLIST --------------------------------------------------- +( +~playlist !? { ~playlist.stop; ~playlist = nil }; +~track !? { ~track.stop; ~track = nil }; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== PLAYLIST ARRETEE ===".postln; +) + + + +// ===================================================================== +// PLAYLISTS PREDEFINIES (Cmd+Entree sur celle qu'on veut) +// ===================================================================== + + +// --- PLAYLIST FULL : toutes les 23 tracks (~3h12) --------------------- +( +~playPlaylist.([ + ["A_acid_journey.scd", 420], // 7 min + ["B_deep_to_hard.scd", 480], // 8 min + ["C_hypnotic_loop.scd", 600], // 10 min + ["D_wobble_drop.scd", 420], // 7 min + ["E_vietnam_hard.scd", 480], // 8 min + ["F_trance_uplifter.scd", 600], // 10 min + ["G_detroit_soulful.scd", 480], // 8 min + ["H_acid_trance.scd", 480], // 8 min + ["I_liquid_dnb.scd", 420], // 7 min + ["J_ambient_cinematic.scd",720], // 12 min + ["K_tribal_ethno.scd", 480], // 8 min + ["L_future_garage.scd", 420], // 7 min + ["M_chiptune_madness.scd", 360], // 6 min + ["N_phonk.scd", 300], // 5 min + ["O_asian_cinematic.scd", 600], // 10 min + ["P_industrial.scd", 480], // 8 min + ["Q_neurofunk_dnb.scd", 420], // 7 min + ["R_synthwave.scd", 480], // 8 min + ["S_drone_doom.scd", 900], // 15 min + ["T_hardcore_gabber.scd", 360], // 6 min + ["U_vocal_trance.scd", 600], // 10 min + ["V_glitch_idm.scd", 480], // 8 min + ["W_dub_techno.scd", 600], // 10 min +]); +) + + +// --- PLAYLIST DANCE FLOOR : tracks dansantes (~1h30) ------------------ +( +~playPlaylist.([ + ["A_acid_journey.scd", 420], + ["F_trance_uplifter.scd", 600], + ["G_detroit_soulful.scd", 480], + ["H_acid_trance.scd", 480], + ["I_liquid_dnb.scd", 420], + ["L_future_garage.scd", 420], + ["U_vocal_trance.scd", 600], + ["W_dub_techno.scd", 600], +]); +) + + +// --- PLAYLIST CHILL / AMBIENT : tracks calmes (~1h) ------------------ +( +~playPlaylist.([ + ["J_ambient_cinematic.scd",720], + ["O_asian_cinematic.scd", 600], + ["K_tribal_ethno.scd", 480], + ["S_drone_doom.scd", 900], + ["W_dub_techno.scd", 600], +]); +) + + +// --- PLAYLIST BASS MUSIC : dubstep + dnb + bass-heavy (~1h) ---------- +( +~playPlaylist.([ + ["D_wobble_drop.scd", 420], + ["E_vietnam_hard.scd", 480], + ["L_future_garage.scd", 420], + ["I_liquid_dnb.scd", 420], + ["Q_neurofunk_dnb.scd", 420], + ["N_phonk.scd", 300], + ["P_industrial.scd", 480], +]); +) + + +// --- PLAYLIST HARD : techno hard / hardcore / industrial (~50 min) --- +( +~playPlaylist.([ + ["B_deep_to_hard.scd", 480], + ["P_industrial.scd", 480], + ["T_hardcore_gabber.scd", 360], + ["E_vietnam_hard.scd", 480], + ["Q_neurofunk_dnb.scd", 420], +]); +) + + +// --- PLAYLIST WORLD MUSIC : asia + tribal + cinematic (~50 min) ------ +( +~playPlaylist.([ + ["O_asian_cinematic.scd", 600], + ["K_tribal_ethno.scd", 480], + ["E_vietnam_hard.scd", 480], + ["J_ambient_cinematic.scd",720], +]); +) + + +// --- PLAYLIST RETRO : synthwave + chiptune + house (~30 min) --------- +( +~playPlaylist.([ + ["R_synthwave.scd", 480], + ["M_chiptune_madness.scd", 360], + ["G_detroit_soulful.scd", 480], +]); +) + + +// --- PLAYLIST EXPERIMENTAL : glitch + drone + ambient (~38 min) ------ +( +~playPlaylist.([ + ["V_glitch_idm.scd", 480], + ["S_drone_doom.scd", 900], + ["C_hypnotic_loop.scd", 600], +]); +) + + +// --- PLAYLIST SHORT (5 tracks, ~35 min) ------------------------------- +( +~playPlaylist.([ + ["A_acid_journey.scd", 420], + ["F_trance_uplifter.scd", 600], + ["I_liquid_dnb.scd", 420], + ["E_vietnam_hard.scd", 480], + ["W_dub_techno.scd", 600], +]); +) + + +// --- PLAYLIST DEMO (durees reduites a 90s par track, ~35 min) -------- +// Pour tester rapidement la palette sans attendre 3h +( +~playPlaylist.([ + ["A_acid_journey.scd", 90], ["B_deep_to_hard.scd", 90], + ["C_hypnotic_loop.scd",90], ["D_wobble_drop.scd", 90], + ["E_vietnam_hard.scd", 90], ["F_trance_uplifter.scd",90], + ["G_detroit_soulful.scd",90],["H_acid_trance.scd",90], + ["I_liquid_dnb.scd", 90], ["J_ambient_cinematic.scd",90], + ["K_tribal_ethno.scd",90], ["L_future_garage.scd",90], + ["M_chiptune_madness.scd",90],["N_phonk.scd",90], + ["O_asian_cinematic.scd",90],["P_industrial.scd",90], + ["Q_neurofunk_dnb.scd",90], ["R_synthwave.scd",90], + ["S_drone_doom.scd", 90], ["T_hardcore_gabber.scd",90], + ["U_vocal_trance.scd",90], ["V_glitch_idm.scd",90], + ["W_dub_techno.scd", 90], +]); +) + + +// --- PLAYLIST RANDOM (toutes les tracks dans un ordre aleatoire) ----- +( +~playPlaylist.( + [ + "A_acid_journey.scd", "B_deep_to_hard.scd", "C_hypnotic_loop.scd", + "D_wobble_drop.scd", "E_vietnam_hard.scd", "F_trance_uplifter.scd", + "G_detroit_soulful.scd", "H_acid_trance.scd", "I_liquid_dnb.scd", + "J_ambient_cinematic.scd", "K_tribal_ethno.scd", "L_future_garage.scd", + "M_chiptune_madness.scd", "N_phonk.scd", "O_asian_cinematic.scd", + "P_industrial.scd", "Q_neurofunk_dnb.scd", "R_synthwave.scd", + "S_drone_doom.scd", "T_hardcore_gabber.scd", "U_vocal_trance.scd", + "V_glitch_idm.scd", "W_dub_techno.scd" + ].scramble.collect { |fn| + var dur = ( + "A_acid_journey": 420, "B_deep_to_hard": 480, "C_hypnotic_loop": 600, + "D_wobble_drop": 420, "E_vietnam_hard": 480, "F_trance_uplifter": 600, + "G_detroit_soulful": 480, "H_acid_trance": 480, "I_liquid_dnb": 420, + "J_ambient_cinematic": 720, "K_tribal_ethno": 480, "L_future_garage": 420, + "M_chiptune_madness": 360, "N_phonk": 300, "O_asian_cinematic": 600, + "P_industrial": 480, "Q_neurofunk_dnb": 420, "R_synthwave": 480, + "S_drone_doom": 900, "T_hardcore_gabber": 360, "U_vocal_trance": 600, + "V_glitch_idm": 480, "W_dub_techno": 600 + )[fn.replace(".scd","").asSymbol] ?? 420; + [fn, dur]; + } +); +) + + + +// ===================================================================== +// PLAYLIST CUSTOM -- copier ce template et editer la liste +// ===================================================================== +( +~playPlaylist.([ + // [filename, duree_secondes], + ["F_trance_uplifter.scd", 300], // 5 min seulement + ["U_vocal_trance.scd", 300], + ["H_acid_trance.scd", 300], +]); +) + + + +// ===================================================================== +// CONTROLES PENDANT LA PLAYLIST +// ===================================================================== + +// --- SKIP TRACK (passe a la suivante immediatement) ------------------ +( +~track !? { ~track.stop }; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"[SKIP] passage a la track suivante".postln; +) + +// --- PAUSE / RESUME (toggle mute global via master limiter) --------- +( ~masterLim !? { ~masterLim.run(false) }; "[PAUSE]".postln; ) +( ~masterLim !? { ~masterLim.run(true) }; "[RESUME]".postln; ) + +// --- INFO -- track en cours ------------------------------------------ +( ("synths actifs: " ++ s.numSynths ++ " | CPU: " ++ s.avgCPU.round(0.1) ++ "%").postln; ) diff --git a/sound_algo/docs/superpowers/plans/2026-05-04-refonte-organisation.md b/sound_algo/docs/superpowers/plans/2026-05-04-refonte-organisation.md new file mode 100644 index 0000000..87f6118 --- /dev/null +++ b/sound_algo/docs/superpowers/plans/2026-05-04-refonte-organisation.md @@ -0,0 +1,1935 @@ +# sound_algo v2 Reorganization Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Migrate sound_algo from a mixed structure (38 SynthDef across 6 files, 133 melodies bundled in 4 files, 23 monolithic tracks) to atomic granularity (1 file = 1 unit) organized by musical genre, with auto-discovery via `_index.scd` and a new live API by genre that replaces `~kk/~mm/~ff/~cc/~p`. + +**Architecture:** 7-phase migration. Each phase ends with all 10 E2E tests green and a single commit. Phases 1-2 are mechanical relocations. Phases 3-4 use Python migration scripts (the source files have predictable structure — `~m{N}` per line). Phase 5 splits each track Routine into autonomous section files. Phase 6 generates wrappers dynamically from the directory structure. Phase 7 is cleanup + docs. + +**Tech Stack:** SuperCollider sclang/scsynth (audio), Python 3.14 (migration scripts), bash (test runner), Node 25/Express 5 (web bridge — only Phase 6 touches it), git (1 commit per phase). + +**Reference spec:** `docs/superpowers/specs/2026-05-04-refonte-organisation-design.md` (commit `9d4483b`). + +--- + +## Pre-flight + +### Task 0: Verify clean starting state + +**Files:** none modified — pre-flight check only. + +- [ ] **Step 1: Verify on `main` and clean working tree** + +```bash +cd /Users/electron/Documents/Projets_Creatifs/sound_algo +git status --short +git branch --show-current +``` + +Expected: empty `git status`, branch = `main`. + +- [ ] **Step 2: Run baseline E2E suite** + +```bash +bash tests/run_all.sh 2>&1 | tail -16 +``` + +Expected: `Tests OK : 10 / FAIL : 0 / SKIP : 0`. If a test SKIPs, re-run once (sclang has intermittent libc++abi issue at exit). If consistent fail, STOP and fix before migration. + +- [ ] **Step 3: Snapshot SynthDef count** + +```bash +grep -rE 'SynthDef\(\\\\' --include='*.scd' . 2>/dev/null | grep -v _archive | grep -v node_modules | wc -l +``` + +Expected: 38 (the post-refactor structure must produce the same count — invariant). + +- [ ] **Step 4: Snapshot melody count** + +```bash +grep -cE '^~m(epic|xl|l)?[0-9]+ = ' palette/melodies/*.scd | awk -F: '{s+=$2} END {print s}' +``` + +Expected: 133 (78 short + 30 long + 15 xlong + 10 epic). + +- [ ] **Step 5: Snapshot pattern count (kicks + percussions + kits + genres)** + +```bash +grep -cE '^~(kK|p[A-Z])[A-Za-z0-9]+ = ' palette/rhythm/{kicks,percussions,drum_kits,patterns_genre}.scd | awk -F: '{s+=$2} END {print s}' +``` + +Expected: ~120+ (record exact count for invariant). + +--- + +## Phase 1: Extract SynthDef → `synth/` and `fx/` + +**Goal:** All 38 SynthDef live under `synth/{drums,bass,lead,pad,world,master}/` and all 30 FX SynthDef under `fx/{bus,insert,trick}/`. `engine.scd` keeps Pdef + `~reload` + `~scBus` only. Auto-glob loaders. + +### Task 1.1: Create `synth/` skeleton + `_index.scd` + +**Files:** +- Create: `synth/_index.scd` +- Create: `synth/{drums,bass,lead,pad,world,master}/` (empty dirs) + +- [ ] **Step 1: Make directories** + +```bash +mkdir -p synth/{drums,bass,lead,pad,world,master} +``` + +- [ ] **Step 2: Write `synth/_index.scd`** + +```supercollider +// ===================================================================== +// synth/_index.scd -- Auto-glob loader pour tous les SynthDef +// +// Charge recursivement chaque .scd des sous-dossiers (drums/, bass/, +// lead/, pad/, world/, master/). Ajouter un nouveau Synth = juste +// creer le fichier, pas besoin de modifier ce loader. +// ===================================================================== +( +PathName(thisProcess.nowExecutingPath.dirname).deepFiles + .select { |f| f.extension == "scd" + and: { f.fileName != "_index.scd" } } + .sort { |a, b| a.fullPath < b.fullPath } + .do { |f| f.fullPath.load }; +"=== synth/ loaded ===".postln; +) +``` + +- [ ] **Step 3: Validate balance** + +```bash +awk '{ for (i=1;i<=length($0);i++) { c=substr($0,i,1); if (c=="(") p++; else if (c==")") p--; if (c=="[") b++; else if (c=="]") b-- }} END { printf "P:%d B:%d\n", p, b }' synth/_index.scd +``` + +Expected: `P:0 B:0`. + +### Task 1.2: Create `fx/` skeleton + `_index.scd` + +**Files:** +- Create: `fx/_index.scd` +- Create: `fx/{bus,insert,trick}/` + +- [ ] **Step 1: Make directories + index** + +```bash +mkdir -p fx/{bus,insert,trick} +``` + +- [ ] **Step 2: Write `fx/_index.scd`** + +Identical structure to `synth/_index.scd` but logs `=== fx/ loaded ===`. + +```supercollider +// ===================================================================== +// fx/_index.scd -- Auto-glob loader pour tous les FX SynthDef +// ===================================================================== +( +PathName(thisProcess.nowExecutingPath.dirname).deepFiles + .select { |f| f.extension == "scd" + and: { f.fileName != "_index.scd" } } + .sort { |a, b| a.fullPath < b.fullPath } + .do { |f| f.fullPath.load }; +"=== fx/ loaded ===".postln; +) +``` + +- [ ] **Step 3: Validate balance** + +```bash +awk '{ for (i=1;i<=length($0);i++) { c=substr($0,i,1); if (c=="(") p++; else if (c==")") p--; if (c=="[") b++; else if (c=="]") b-- }} END { printf "P:%d B:%d\n", p, b }' fx/_index.scd +``` + +Expected: `P:0 B:0`. + +### Task 1.3: Write extraction script for `engine.scd` SynthDef + +**Files:** +- Create: `_migrate/extract_synthdef.py` (temporary, deleted after Phase 7) + +- [ ] **Step 1: Write Python extraction script** + +```python +# _migrate/extract_synthdef.py +""" +Extract each SynthDef(\name, { ... }).add; from a source .scd file +into individual files in a target directory. + +Usage: + python3 _migrate/extract_synthdef.py <source.scd> <target_dir> + +Each output file <target_dir>/<snake_name>.scd contains: + ( + SynthDef(\name, { + ... + }).add; + ) + +The wrapping `(` / `)` block makes each file .load-compatible (TLB:1). +""" +import re, sys, os +from pathlib import Path + +CAMEL_TO_SNAKE = re.compile(r'(?<!^)(?=[A-Z])') + +def to_snake(name: str) -> str: + """vcfMoog -> vcf_moog ; subBoom -> sub_boom ; kick -> kick""" + return CAMEL_TO_SNAKE.sub('_', name).lower() + +def find_synthdefs(src: str): + """Find all SynthDef(\name, { ... }).add; blocks. Returns list of (name, block).""" + results = [] + i = 0 + n = len(src) + while i < n: + m = re.search(r'SynthDef\(\\(\w+),', src[i:]) + if not m: + break + name = m.group(1) + start = i + m.start() + # Find matching }) + depth = 0 + j = start + in_string = False + in_block_comment = False + in_line_comment = False + while j < n: + ch = src[j] + ch2 = src[j:j+2] + if in_line_comment: + if ch == '\n': in_line_comment = False + elif in_block_comment: + if ch2 == '*/': in_block_comment = False; j += 1 + elif in_string: + if ch == '"' and src[j-1] != '\\': in_string = False + elif ch2 == '//': in_line_comment = True; j += 1 + elif ch2 == '/*': in_block_comment = True; j += 1 + elif ch == '"': in_string = True + elif ch == '{': depth += 1 + elif ch == '}': + depth -= 1 + if depth == 0: + # Find ).add following the } + rest = src[j+1:j+30] + add_m = re.match(r'\s*\)\.add\s*;', rest) + if add_m: + end = j + 1 + add_m.end() + block = src[start:end] + results.append((name, block)) + i = end + break + j += 1 + else: + break + if depth != 0: + break + return results + +def main(): + src_path = Path(sys.argv[1]) + target_dir = Path(sys.argv[2]) + target_dir.mkdir(parents=True, exist_ok=True) + + src = src_path.read_text() + synthdefs = find_synthdefs(src) + print(f"Found {len(synthdefs)} SynthDef in {src_path}") + + for name, block in synthdefs: + snake = to_snake(name) + out_path = target_dir / f"{snake}.scd" + # Wrap in single top-level (...) for .load compatibility + wrapped = f"// =====================================================================\n" + wrapped += f"// synth/{out_path.relative_to(target_dir.parent.parent)} -- SynthDef \\{name}\n" + wrapped += f"// Extracted from {src_path.name} during v2 reorganization.\n" + wrapped += f"// =====================================================================\n" + wrapped += "(\n" + wrapped += block + wrapped += "\n)\n" + out_path.write_text(wrapped) + print(f" -> {out_path}") + +if __name__ == "__main__": + main() +``` + +- [ ] **Step 2: Test the script on a single SynthDef before bulk run** + +```bash +mkdir -p /tmp/synthdef_test +python3 _migrate/extract_synthdef.py engine.scd /tmp/synthdef_test +ls /tmp/synthdef_test | head -5 +cat /tmp/synthdef_test/kick.scd | head -20 +``` + +Expected: kick.scd, hat.scd, snare.scd, ... created. `kick.scd` starts with header comment + `(` + `SynthDef(\kick, {`. + +- [ ] **Step 3: Verify a sample file parses** + +```bash +/Applications/SuperCollider.app/Contents/MacOS/sclang -i 1 -e '"/tmp/synthdef_test/kick.scd".load; 0.exit;' 2>&1 | tail -5 +``` + +Expected: no parse error. The SynthDef adds to the server. + +### Task 1.4: Define routing manifest (which SynthDef → which subdir) + +**Files:** +- Create: `_migrate/synth_routing.json` + +- [ ] **Step 1: Map every existing SynthDef name to its target subdirectory** + +```json +{ + "drums": ["kick", "kickGabber", "hat", "snare", "snareGated", + "clap", "perc", "rim", "cowbell", "tom"], + "bass": ["acid", "reese", "reeseDnB", "reeseHard", "subBoom", + "fmBass", "hooverbass", "didgeridoo"], + "lead": ["saw3", "lead", "squareLead", "fmLead", "organLead", + "hardLead", "supersaw", "stab", "pluck", "fmBell", "rhodes"], + "pad": ["pad", "warmPad", "vocalPad", "drone"], + "world": ["koto", "erhu", "pipa", "gong", "handpan", "guzheng", "growl"], + "master": ["masterLim", "masterComp", "masterSat", "vinyl"], + "fx_bus": ["fxReverb", "fxDelay", "fxChorus", "fxPhaser", "fxFlanger", + "fxBitcrush", "fxTape", "fxShimmer", "fxDist", "fxSend"], + "fx_insert": ["vcfMoog", "vcfMs20", "vcfLadder", "vcfFormant", "vcfComb", + "vcfHpf", "vcfBpf", "vcfNotch", "fxRingMod", "fxFreqShift", + "fxGran", "fxComb", "fxFormant", "fxAutoFilter", "fxTremolo", + "fxAutopan", "fxStutter", "fxResonator", "fxSpringRev", "fxPlate"], + "fx_trick": ["riser", "sweep", "impact", "crash"] +} +``` + +- [ ] **Step 2: Write router script that reads manifest + extracts to right subdir** + +Create `_migrate/route_synthdef.py`: + +```python +# _migrate/route_synthdef.py +"""Routes extracted SynthDef files to their target subdirectories per manifest.""" +import json, sys, shutil +from pathlib import Path +from extract_synthdef import find_synthdefs, to_snake + +ROUTING = json.loads(Path("_migrate/synth_routing.json").read_text()) + +# Reverse index: synthdef_name -> target_subdir +NAME_TO_DIR = {} +for subdir, names in ROUTING.items(): + for n in names: + NAME_TO_DIR[n] = subdir + +def route(source_files): + for src_path in source_files: + src = Path(src_path).read_text() + for name, block in find_synthdefs(src): + sub = NAME_TO_DIR.get(name) + if sub is None: + print(f" [WARN] unknown SynthDef \\{name} (skipped)") + continue + # Map subdir to actual path + if sub.startswith("fx_"): + target = Path("fx") / sub[3:] # fx_bus -> fx/bus + else: + target = Path("synth") / sub + target.mkdir(parents=True, exist_ok=True) + out = target / f"{to_snake(name)}.scd" + wrapped = ( + f"// =====================================================================\n" + f"// {out} -- SynthDef \\{name}\n" + f"// Extracted from {Path(src_path).name} during v2 reorganization.\n" + f"// =====================================================================\n" + f"(\n{block}\n)\n" + ) + out.write_text(wrapped) + print(f" \\{name:20s} -> {out}") + +if __name__ == "__main__": + route(sys.argv[1:]) +``` + +### Task 1.5: Run extraction on all 6 source files + +**Files:** +- Modified (extracted from): `engine.scd`, `synthdefs/asia.scd`, `synthdefs/extra.scd`, `synthdefs/authentic.scd`, `live/live.scd`, `live/fx_bus.scd` +- Created: ~68 new files in `synth/` and `fx/` + +- [ ] **Step 1: Run the router on all 6 sources** + +```bash +cd /Users/electron/Documents/Projets_Creatifs/sound_algo +python3 _migrate/route_synthdef.py \ + engine.scd \ + synthdefs/asia.scd synthdefs/extra.scd synthdefs/authentic.scd \ + live/live.scd live/fx_bus.scd +``` + +Expected output: 68 lines `\name -> path`. No `[WARN] unknown` (would mean the manifest is incomplete). + +- [ ] **Step 2: Verify counts** + +```bash +ls synth/drums/ synth/bass/ synth/lead/ synth/pad/ synth/world/ synth/master/ | grep -c '\.scd$' +ls fx/bus/ fx/insert/ fx/trick/ | grep -c '\.scd$' +``` + +Expected: 38 + 30 = 68 total. + +- [ ] **Step 3: Validate balance for ALL extracted files** + +```bash +for f in synth/**/*.scd fx/**/*.scd; do + awk -v f="$f" '{ for (i=1;i<=length($0);i++) { c=substr($0,i,1); if (c=="(") p++; else if (c==")") p--; if (c=="[") b++; else if (c=="]") b-- }} END { if (p!=0||b!=0) printf "%s P:%d B:%d\n", f, p, b }' "$f" +done +``` + +Expected: empty output (all balanced). + +### Task 1.6: Remove SynthDef from source files + +**Files:** +- Modify: `engine.scd` (remove all `SynthDef(...).add;` blocks) +- Delete: `synthdefs/asia.scd`, `synthdefs/extra.scd`, `synthdefs/authentic.scd` +- Delete: `synthdefs/` directory +- Modify: `live/live.scd` (remove all SynthDef blocks) +- Modify: `live/fx_bus.scd` (remove all SynthDef blocks) + +- [ ] **Step 1: Write a stripper script** + +Create `_migrate/strip_synthdef.py`: + +```python +# _migrate/strip_synthdef.py +"""Removes all SynthDef(...).add; blocks from a source file, leaving the rest intact.""" +import sys +from pathlib import Path +from extract_synthdef import find_synthdefs + +def strip(path): + src = Path(path).read_text() + blocks = find_synthdefs(src) + if not blocks: + return + # Remove blocks in reverse order to keep offsets stable + for name, block in reversed(blocks): + idx = src.find(block) + if idx >= 0: + # Also drop trailing whitespace + comment line above if it's a section comment + src = src[:idx] + src[idx + len(block):] + Path(path).write_text(src) + print(f" stripped {len(blocks)} SynthDef from {path}") + +if __name__ == "__main__": + for p in sys.argv[1:]: + strip(p) +``` + +- [ ] **Step 2: Run on engine.scd, live/live.scd, live/fx_bus.scd** + +```bash +python3 _migrate/strip_synthdef.py engine.scd live/live.scd live/fx_bus.scd +``` + +- [ ] **Step 3: Delete `synthdefs/` entirely (now empty of useful content)** + +```bash +git rm -r synthdefs/ +``` + +- [ ] **Step 4: Validate balance on stripped files** + +```bash +for f in engine.scd live/live.scd live/fx_bus.scd; do + printf "%-25s " "$f" + awk '{ for (i=1;i<=length($0);i++) { c=substr($0,i,1); if (c=="(") p++; else if (c==")") p--; if (c=="[") b++; else if (c=="]") b-- }} END { printf "P:%d B:%d\n", p, b }' "$f" +done +``` + +Expected: `P:0 B:0` on all three. + +### Task 1.7: Update loaders to source `synth/` and `fx/` + +**Files:** +- Modify: `00_load.scd` (replace `synthdefs/asia.scd` etc. by `synth/_index.scd` and `fx/_index.scd`) +- Modify: `setup.scd` (`~setupAll` body — replace synthdefs paths) +- Modify: `live/_load.scd` (replace synthdefs paths) +- Modify: `tests/e2e_01_syntax.scd` (file list) +- Modify: `tests/e2e_02_load.scd` (load expectations) +- Modify: `tests/e2e_04_synthdef_compile.scd` (file list) + +- [ ] **Step 1: Update `00_load.scd` CHARGER TOUT block** + +Find the lines: + +```supercollider +(~base ++ "synthdefs/asia.scd").load; +(~base ++ "synthdefs/extra.scd").load; +(~base ++ "synthdefs/authentic.scd").load; +``` + +Replace with: + +```supercollider +(~base ++ "synth/_index.scd").load; +(~base ++ "fx/_index.scd").load; +``` + +(Order: synth before fx — fx insert may reference master synths in some defs.) + +- [ ] **Step 2: Update `setup.scd ~setupAll` body** + +Find lines `(~base ++ "synthdefs/asia.scd").load;` etc. and replace with the same two lines as above. Same for `~setupLive` and `~ensureLive` (3 places total in setup.scd). + +- [ ] **Step 3: Update `live/_load.scd`** + +Same replacement pattern. + +- [ ] **Step 4: Update test file lists** + +In `tests/e2e_01_syntax.scd` and `tests/e2e_04_synthdef_compile.scd`, replace the hard-coded list of `synthdefs/*.scd` with: + +```supercollider +~scanFiles = { |dir| + PathName(~base ++ dir).deepFiles + .select { |f| f.extension == "scd" and: { f.fileName != "_index.scd" } } + .collect { |f| f.fullPath }; +}; +~synthFiles = ~scanFiles.("synth/"); +~fxFiles = ~scanFiles.("fx/"); +``` + +Then iterate `~synthFiles ++ ~fxFiles` instead of the hard-coded list. + +- [ ] **Step 5: Run full E2E** + +```bash +bash tests/run_all.sh 2>&1 | tail -16 +``` + +Expected: `Tests OK : 10 / FAIL : 0`. If `04_synthdef_compile` reports a different count, the migration lost or duplicated a SynthDef. Check `_migrate/synth_routing.json` for completeness. + +### Task 1.8: Commit Phase 1 + +- [ ] **Step 1: Stage** + +```bash +git add synth/ fx/ engine.scd live/live.scd live/fx_bus.scd \ + 00_load.scd setup.scd live/_load.scd \ + tests/e2e_01_syntax.scd tests/e2e_04_synthdef_compile.scd \ + _migrate/ +git rm -r --cached synthdefs/ 2>/dev/null || true +``` + +- [ ] **Step 2: Commit** + +```bash +git -c user.email="108685187+electron-rare@users.noreply.github.com" \ + -c user.name="electron-rare" commit -m "$(cat <<'EOF' +Phase 1: extract 38 SynthDef + 30 FX into synth/ and fx/ + +Move all SynthDef definitions from engine.scd, synthdefs/, live/live.scd +and live/fx_bus.scd into atomic per-file structure: +- synth/{drums,bass,lead,pad,world,master}/ (38 files) +- fx/{bus,insert,trick}/ (30 files) + +Each file has a single top-level () block with one SynthDef.add. +Auto-glob loaders synth/_index.scd and fx/_index.scd discover and +load all .scd recursively at boot. + +engine.scd retains Pdef + ~reload + ~scBus only. live/live.scd and +live/fx_bus.scd retain helpers only (~vcfOn, ~addFx, ~send, ~setFx, +~lfoTo, etc.). + +setup.scd, 00_load.scd, live/_load.scd updated to load synth/_index.scd +and fx/_index.scd in place of synthdefs/. + +Tests adapted: e2e_01_syntax + e2e_04_synthdef_compile now scan +synth/ and fx/ recursively instead of hardcoded synthdefs/ list. +All 10 E2E suites pass. + +_migrate/ contains the migration scripts (route_synthdef.py, +strip_synthdef.py, synth_routing.json) — temporary, removed Phase 7. +EOF +)" +git push +``` + +- [ ] **Step 3: Verify push** + +```bash +git log --oneline -1 +``` + +Expected: shows the new commit. + +--- + +## Phase 2: Rename `live/` → `audio/` + relocate `palette/rhythm/{fills,sequences}` → `palette/` + +**Goal:** `live/` becomes `audio/` (more accurate — these are audio infrastructure helpers, not music). `palette/rhythm/{fills,sequences}.scd` move up to `palette/` (they're compositional helpers, not pattern banks). + +### Task 2.1: Rename `live/` → `audio/` + +**Files:** +- Rename: `live/` → `audio/` (whole directory) +- Modify: every file referencing `live/...` paths + +- [ ] **Step 1: Rename via git** + +```bash +git mv live audio +``` + +- [ ] **Step 2: Find all references to `live/` paths** + +```bash +grep -rln 'live/[a-z_]*\.scd' --include='*.scd' --include='*.sh' --include='*.md' --include='*.js' . 2>/dev/null | grep -v _archive | grep -v node_modules +``` + +Expected list (approximate): `00_load.scd`, `01_live.scd`, `setup.scd`, `audio/_load.scd`, `web_bridge.scd`, `tests/e2e_*.scd`, `tests/run_all.sh`, `CLAUDE.md`, `audio/CLAUDE.md`, `tracks/*.scd` (some reference `live/tweaks.scd`), `web/server.js`, `web/README.md`. + +- [ ] **Step 3: Bulk replace `live/` → `audio/` in those files** + +```bash +find . -type f \( -name '*.scd' -o -name '*.sh' -o -name '*.md' -o -name '*.js' \) \ + -not -path './_archive/*' -not -path './node_modules/*' -not -path './web/node_modules/*' \ + -not -path './.git/*' \ + -exec grep -l 'live/' {} \; | \ +while read f; do + sed -i '' 's|live/|audio/|g' "$f" +done +``` + +- [ ] **Step 4: Manually fix any false positives** + +Search for occurrences where `live/` was substituted incorrectly (e.g., comments, English text): + +```bash +grep -rn 'audio/' --include='*.md' . 2>/dev/null | grep -v _archive | grep -i 'audio/quality\|audio/file\|audio/track\|audio/recording' || echo "no false positives" +``` + +Expected: empty / "no false positives". + +- [ ] **Step 5: Rename `audio/_load.scd` to keep purpose clear** + +It's loaded once at boot — keep filename. No rename needed. + +### Task 2.2: Move `palette/rhythm/{fills,sequences}.scd` to `palette/` + +**Files:** +- Rename: `palette/rhythm/fills.scd` → `palette/fills.scd` +- Rename: `palette/rhythm/sequences.scd` → `palette/sequences.scd` +- Modify: `setup.scd`, `00_load.scd`, references in tracks + +- [ ] **Step 1: Move files via git** + +```bash +git mv palette/rhythm/fills.scd palette/fills.scd +git mv palette/rhythm/sequences.scd palette/sequences.scd +``` + +- [ ] **Step 2: Replace path references** + +```bash +find . -type f -name '*.scd' \ + -not -path './_archive/*' \ + -exec grep -l 'palette/rhythm/fills\|palette/rhythm/sequences' {} \; | \ +while read f; do + sed -i '' \ + -e 's|palette/rhythm/fills|palette/fills|g' \ + -e 's|palette/rhythm/sequences|palette/sequences|g' "$f" +done +``` + +### Task 2.3: Validate Phase 2 + +- [ ] **Step 1: Run E2E** + +```bash +bash tests/run_all.sh 2>&1 | tail -16 +``` + +Expected: 10/10 PASS. + +- [ ] **Step 2: Quick smoke check that web bridge still loads** + +```bash +node -e "console.log(require.resolve('./web/server.js'))" || echo "web ok" +``` + +Expected: prints the path. + +### Task 2.4: Commit Phase 2 + +- [ ] **Step 1: Stage + commit + push** + +```bash +git add -A +git -c user.email="108685187+electron-rare@users.noreply.github.com" \ + -c user.name="electron-rare" commit -m "Phase 2: rename live/ -> audio/ + relocate palette/rhythm/{fills,sequences}" +git push +``` + +--- + +## Phase 3: Eclater 133 melodies → `melodies/<genre>/m{N}.scd` + +**Goal:** Each of the 133 melodies becomes its own file under `melodies/<genre>/`. Variables renamed to `~m{Genre}{N}` (e.g., `~mAcid1`). + +### Task 3.1: Build the genre mapping from `~melodyBank` + +**Files:** +- Create: `_migrate/melody_bank_to_genre.py` + +- [ ] **Step 1: Inspect current `~melodyBank` definition** + +```bash +sed -n '/~melodyBank = /,/^);$/p' palette/melodies/bank.scd | head -80 +``` + +This shows the dict mapping `\genre -> [m1, m5, ml3, mxl2, ...]`. Each genre key lists which melody variables belong to that genre. + +- [ ] **Step 2: Write a Python script that parses `~melodyBank` and produces a JSON mapping** + +```python +# _migrate/melody_bank_to_genre.py +"""Parse palette/melodies/bank.scd and produce a JSON mapping + melody_var -> [list of genres it appears in].""" +import re, json +from pathlib import Path + +src = Path("palette/melodies/bank.scd").read_text() + +# Extract the ~melodyBank = ( ... ); block +m = re.search(r'~melodyBank\s*=\s*\((.*?)\n\s*\);', src, re.DOTALL) +if not m: + raise SystemExit("~melodyBank not found") + +bank_body = m.group(1) + +# Match \genre: [vars] +mapping = {} # melody_var -> [genres] +for entry in re.finditer(r'\\(\w+)\s*:\s*\[([^\]]+)\]', bank_body): + genre = entry.group(1) + vars_str = entry.group(2) + vars_list = [v.strip().lstrip('~') for v in vars_str.split(',') if v.strip()] + for v in vars_list: + mapping.setdefault(v, []).append(genre) + +# Pick dominant genre (first listed) for each melody +dominant = {v: gs[0] for v, gs in mapping.items()} + +# Variables not in any genre go to \other +all_vars = set() +for f in ['short.scd', 'long.scd', 'xlong.scd', 'epic.scd']: + s = Path(f"palette/melodies/{f}").read_text() + all_vars.update(re.findall(r'^~(\w+)\s*=\s*\[', s, re.MULTILINE)) + +for v in all_vars - mapping.keys(): + dominant[v] = "other" + +Path("_migrate/melody_genres.json").write_text(json.dumps(dominant, indent=2, sort_keys=True)) +print(f"Mapped {len(dominant)} melodies; genres: {sorted(set(dominant.values()))}") +``` + +- [ ] **Step 3: Run it** + +```bash +python3 _migrate/melody_bank_to_genre.py +cat _migrate/melody_genres.json | head -20 +``` + +Expected: outputs e.g. `{"m1": "acid", "m2": "acid", "m5": "trance", ...}`. Total entries: 133. + +### Task 3.2: Extract melodies into `melodies/<genre>/` + +**Files:** +- Create: `_migrate/extract_melodies.py` +- Create: ~133 files in `melodies/<genre>/m{N}.scd` + +- [ ] **Step 1: Write extractor** + +```python +# _migrate/extract_melodies.py +"""Extract every ~m{N}, ~ml{N}, ~mxl{N}, ~mepic{N} from palette/melodies/*.scd + into melodies/<genre>/m{i}.scd with renamed variable ~m{Genre}{i}. + + Within each genre, melodies are renumbered 1..N preserving the original + order (which roughly tracks musical similarity).""" +import re, json +from pathlib import Path + +genres = json.loads(Path("_migrate/melody_genres.json").read_text()) + +# Read all source melody files; preserve original order +sources = ['short.scd', 'long.scd', 'xlong.scd', 'epic.scd'] +all_melodies = [] # list of (orig_var, value_str) +for sf in sources: + src = Path(f"palette/melodies/{sf}").read_text() + for m in re.finditer(r'^~(\w+)\s*=\s*(\[[^\]]+\]);', src, re.MULTILINE): + all_melodies.append((m.group(1), m.group(2))) + +# Group by dominant genre +by_genre = {} +for var, val in all_melodies: + g = genres.get(var, "other") + by_genre.setdefault(g, []).append((var, val)) + +# Write files +for genre, items in by_genre.items(): + target = Path("melodies") / genre + target.mkdir(parents=True, exist_ok=True) + for i, (orig_var, val) in enumerate(items, start=1): + new_var = f"m{genre.capitalize()}{i}" + out = target / f"m{i}.scd" + content = ( + f"// =====================================================================\n" + f"// melodies/{genre}/m{i}.scd -- ~{new_var} (was ~{orig_var})\n" + f"// =====================================================================\n" + f"( ~{new_var} = {val}; )\n" + ) + out.write_text(content) + print(f" {genre:12s} -> {len(items):3d} melodies") + +# Write index +index_path = Path("melodies/_index.scd") +index_path.write_text( + "// =====================================================================\n" + "// melodies/_index.scd -- Auto-glob loader\n" + "// =====================================================================\n" + "(\n" + "PathName(thisProcess.nowExecutingPath.dirname).deepFiles\n" + " .select { |f| f.extension == \"scd\"\n" + " and: { f.fileName != \"_index.scd\" } }\n" + " .sort { |a, b| a.fullPath < b.fullPath }\n" + " .do { |f| f.fullPath.load };\n" + "\"=== melodies/ loaded ===\".postln;\n" + ")\n" +) +``` + +- [ ] **Step 2: Run + verify counts** + +```bash +python3 _migrate/extract_melodies.py +find melodies -name '*.scd' -not -name '_index.scd' | wc -l +``` + +Expected: 133. + +- [ ] **Step 3: Validate balance on all extracted melodies** + +```bash +for f in melodies/**/*.scd; do + [ "$(basename "$f")" = "_index.scd" ] && continue + awk -v f="$f" '{ for (i=1;i<=length($0);i++) { c=substr($0,i,1); if (c=="(") p++; else if (c==")") p--; if (c=="[") b++; else if (c=="]") b-- }} END { if (p!=0||b!=0) printf "%s P:%d B:%d\n", f, p, b }' "$f" +done +``` + +Expected: empty. + +### Task 3.3: Remove old melody files + update loaders + +**Files:** +- Delete: `palette/melodies/{short,long,xlong,epic,bank}.scd` +- Modify: `palette/melodies/index.scd` — either delete or replace with redirect to `melodies/_index.scd` +- Modify: `00_load.scd`, `setup.scd`, `audio/_load.scd` to load `melodies/_index.scd` +- Modify: any code referencing `~m{N}`, `~ml{N}`, `~mxl{N}`, `~mepic{N}` directly + +- [ ] **Step 1: Find all references to old melody variables** + +```bash +grep -rn '~m[0-9]\|~ml[0-9]\|~mxl[0-9]\|~mepic[0-9]' --include='*.scd' . 2>/dev/null | grep -v _archive | grep -v palette/melodies +``` + +Expected: a list of references in `tracks/*.scd`, `01_live.scd`, `audio/melodies.scd` (the wrapper), `tests/e2e_05_melodies.scd`. + +- [ ] **Step 2: Build a substitution table** + +```bash +python3 -c " +import json +genres = json.loads(open('_migrate/melody_genres.json').read()) +# Group by genre, preserving original order +order = [] +for f in ['short.scd', 'long.scd', 'xlong.scd', 'epic.scd']: + import re + src = open(f'palette/melodies/{f}').read() + for m in re.finditer(r'^~(\w+)\s*=', src, re.M): + order.append(m.group(1)) +by_genre = {} +for v in order: + g = genres.get(v, 'other') + by_genre.setdefault(g, []).append(v) +table = {} +for g, vs in by_genre.items(): + for i, v in enumerate(vs, 1): + table[v] = f'm{g.capitalize()}{i}' +open('_migrate/melody_rename.json', 'w').write(json.dumps(table, indent=2, sort_keys=True)) +print(f'Built rename table: {len(table)} entries') +" +``` + +- [ ] **Step 3: Apply substitutions** + +```python +# _migrate/apply_melody_rename.py +import json, re, sys +from pathlib import Path + +table = json.loads(Path("_migrate/melody_rename.json").read_text()) +# Sort by length desc to avoid partial matches (e.g., m1 inside m10) +keys = sorted(table.keys(), key=lambda k: -len(k)) + +files = [ + "01_live.scd", + "audio/melodies.scd", + "tests/e2e_05_melodies.scd", +] + [str(p) for p in Path("tracks").glob("*.scd")] + +for fp in files: + if not Path(fp).exists(): + continue + src = Path(fp).read_text() + orig = src + for k in keys: + src = re.sub(rf'~{k}\b', f'~{table[k]}', src) + if src != orig: + Path(fp).write_text(src) + print(f" updated {fp}") +``` + +```bash +python3 _migrate/apply_melody_rename.py +``` + +- [ ] **Step 4: Delete old melody source files** + +```bash +git rm palette/melodies/short.scd \ + palette/melodies/long.scd \ + palette/melodies/xlong.scd \ + palette/melodies/epic.scd \ + palette/melodies/bank.scd \ + palette/melodies/helpers.scd \ + palette/melodies/tracks.scd \ + palette/melodies/index.scd +git rm -r --cached palette/melodies/ 2>/dev/null || rmdir palette/melodies +``` + +- [ ] **Step 5: Update loaders** + +In `00_load.scd`, `setup.scd`, `audio/_load.scd`, replace: + +```supercollider +(~base ++ "palette/melodies/index.scd").load; +``` + +with: + +```supercollider +(~base ++ "melodies/_index.scd").load; +``` + +- [ ] **Step 6: Adapt `tests/e2e_05_melodies.scd`** + +Replace assertions like `~assert.("m1 exists", ~m1.notNil)` with iteration over the new structure: + +```supercollider +PathName(~base ++ "melodies/").folders.do { |gFolder| + var genre = gFolder.folderName; + var count = gFolder.files.select { |f| f.extension == "scd" }.size; + ~assert.("genre " ++ genre ++ " has melodies", count > 0, + "got " ++ count); +}; +~assert.("total melody count == 133", + PathName(~base ++ "melodies/").deepFiles + .reject { |f| f.fileName == "_index.scd" } + .size == 133); +``` + +### Task 3.4: Validate Phase 3 + commit + +- [ ] **Step 1: Run E2E** + +```bash +bash tests/run_all.sh 2>&1 | tail -16 +``` + +Expected: 10/10 PASS. + +- [ ] **Step 2: Commit** + +```bash +git add melodies/ palette/ tracks/ 01_live.scd audio/ tests/ \ + 00_load.scd setup.scd _migrate/ +git -c user.email="108685187+electron-rare@users.noreply.github.com" \ + -c user.name="electron-rare" commit -m "Phase 3: split 133 melodies into melodies/<genre>/m{N}.scd" +git push +``` + +--- + +## Phase 4: Eclater 120+ patterns → `patterns/<dir>/<name>.scd` + +**Goal:** Same approach as Phase 3 but for patterns. Symmetrical structure: `patterns/{kick,hat,snare,clap,perc}/<name>.scd` for instrument patterns and `patterns/genre/<genre>/<name>.scd` for multi-instrument kits/genres. + +### Task 4.1: Define pattern routing manifest + +**Files:** +- Create: `_migrate/pattern_routing.json` + +- [ ] **Step 1: Inspect current pattern files** + +```bash +for f in palette/rhythm/{kicks,percussions,drum_kits,patterns_genre}.scd; do + echo "=== $f ===" + grep -E '^~[a-zA-Z]+ = ' "$f" | head -30 +done +``` + +This produces the list of variable names and their structure (single Array vs. Event with multiple instruments). + +- [ ] **Step 2: Build the routing JSON** + +Create `_migrate/pattern_routing.json` mapping each variable to: + +```json +{ + "kK1": { "dir": "kick", "name": "k1", "kind": "array" }, + "kK2": { "dir": "kick", "name": "k2", "kind": "array" }, + "...": "...", + "pHatOff2": { "dir": "hat", "name": "off2", "kind": "array" }, + "pSnareTwo4": { "dir": "snare", "name": "two4", "kind": "array" }, + "...": "...", + "kitTechno": { "dir": "genre/techno", "name": "techno", "kind": "event" }, + "kitDubstep": { "dir": "genre/dubstep", "name": "dubstep", "kind": "event" }, + "...": "..." +} +``` + +(The exact mapping is derived from `palette/rhythm/*.scd` — produce manually by reading those files. ~120 entries.) + +### Task 4.2: Run pattern extraction + +**Files:** +- Create: `_migrate/extract_patterns.py` +- Create: ~120 files under `patterns/` + +- [ ] **Step 1: Write the extractor** + +```python +# _migrate/extract_patterns.py +"""Extract patterns from palette/rhythm/*.scd into patterns/<dir>/<name>.scd + per the routing manifest.""" +import re, json +from pathlib import Path + +routing = json.loads(Path("_migrate/pattern_routing.json").read_text()) +sources = ["kicks.scd", "percussions.scd", "drum_kits.scd", "patterns_genre.scd"] + +# Read all source content +all_src = "" +for sf in sources: + p = Path(f"palette/rhythm/{sf}") + if p.exists(): + all_src += p.read_text() + "\n" + +# Patterns can be Array literals OR Event literals +# ~varName = [...] OR ~varName = (key: val, ...); +def find_var_definition(src, var): + """Find ~var = ...; returning the value string.""" + pattern = rf'^~{var}\s*=\s*' + m = re.search(pattern, src, re.MULTILINE) + if not m: + return None + start = m.end() + # Determine bracket type + if src[start] == '[': + depth = 0 + i = start + while i < len(src): + if src[i] == '[': depth += 1 + elif src[i] == ']': + depth -= 1 + if depth == 0: + return src[start:i+1] + i += 1 + elif src[start] == '(': + depth = 0 + i = start + while i < len(src): + if src[i] == '(': depth += 1 + elif src[i] == ')': + depth -= 1 + if depth == 0: + return src[start:i+1] + i += 1 + else: + # Simple value + end = src.find(';', start) + return src[start:end] + return None + +for var, info in routing.items(): + val = find_var_definition(all_src, var) + if val is None: + print(f" [WARN] not found: ~{var}") + continue + target_dir = Path("patterns") / info["dir"] + target_dir.mkdir(parents=True, exist_ok=True) + out = target_dir / f"{info['name']}.scd" + # Determine new variable name + if info["dir"].startswith("genre/"): + # patterns/genre/techno/techno.scd -> ~pTechno + # patterns/genre/dubstep/classic.scd -> ~pDubstepClassic + prefix = info["dir"].split("/")[1].capitalize() + new_var = f"p{prefix}{info['name'].capitalize()}" if info["name"] != prefix.lower() else f"p{prefix}" + else: + # patterns/kick/k1.scd -> ~pKickK1 + new_var = f"p{info['dir'].capitalize()}{info['name'].capitalize()}" + content = ( + f"// =====================================================================\n" + f"// patterns/{info['dir']}/{info['name']}.scd -- ~{new_var} (was ~{var})\n" + f"// =====================================================================\n" + f"( ~{new_var} = {val}; )\n" + ) + out.write_text(content) + print(f" ~{var:25s} -> ~{new_var:30s} -> {out}") +``` + +- [ ] **Step 2: Run + verify** + +```bash +python3 _migrate/extract_patterns.py +find patterns -name '*.scd' | wc -l +``` + +Expected: matches the count from Pre-flight Step 5. + +- [ ] **Step 3: Validate balance** + +```bash +for f in $(find patterns -name '*.scd' -not -name '_index.scd'); do + awk -v f="$f" '{ for (i=1;i<=length($0);i++) { c=substr($0,i,1); if (c=="(") p++; else if (c==")") p--; if (c=="[") b++; else if (c=="]") b-- }} END { if (p!=0||b!=0) printf "%s P:%d B:%d\n", f, p, b }' "$f" +done +``` + +Expected: empty. + +### Task 4.3: Write `patterns/_index.scd` + +- [ ] **Step 1: Write the loader** + +```supercollider +// patterns/_index.scd +( +PathName(thisProcess.nowExecutingPath.dirname).deepFiles + .select { |f| f.extension == "scd" + and: { f.fileName != "_index.scd" } } + .sort { |a, b| a.fullPath < b.fullPath } + .do { |f| f.fullPath.load }; +"=== patterns/ loaded ===".postln; +) +``` + +### Task 4.4: Remove old + adapt + commit + +- [ ] **Step 1: Delete old pattern files** + +```bash +git rm palette/rhythm/kicks.scd \ + palette/rhythm/percussions.scd \ + palette/rhythm/drum_kits.scd \ + palette/rhythm/patterns_genre.scd +# Note: fills.scd and sequences.scd already moved in Phase 2 +rmdir palette/rhythm 2>/dev/null || true +``` + +- [ ] **Step 2: Update loaders** + +In `00_load.scd`, `setup.scd`, `audio/_load.scd`, add: + +```supercollider +(~base ++ "patterns/_index.scd").load; +``` + +(Place after `melodies/_index.scd`.) + +- [ ] **Step 3: Apply rename in consumer files** + +Build a rename table similar to Phase 3, applied to `01_live.scd`, `audio/patterns.scd` (the wrapper, soon obsolete), `tracks/*.scd`, `web_bridge.scd`, `web/public/control/app.js`. + +- [ ] **Step 4: Run E2E + commit** + +```bash +bash tests/run_all.sh 2>&1 | tail -16 +git add -A +git -c user.email="108685187+electron-rare@users.noreply.github.com" \ + -c user.name="electron-rare" commit -m "Phase 4: split 120+ patterns into patterns/<dir>/<name>.scd" +git push +``` + +--- + +## Phase 5: Eclater 23 tracks → `tracks/<X>_<slug>/{_track.scd, NN_section.scd}` + +**Goal:** Each track A-W becomes a directory. Each section becomes an autonomous `.scd` file (Cmd+Enter applies all params + reload, no Routine, no .wait). The orchestrator `_track.scd` schedules them via `.load` + `.wait`. + +### Task 5.1: Write the track-splitter script + +**Files:** +- Create: `_migrate/split_track.py` + +- [ ] **Step 1: Inspect current track structure** + +```bash +sed -n '8,40p' tracks/A_acid_journey.scd +``` + +Notice the pattern: +```supercollider +( +~track !? { ~track.stop }; +~track = Routine({ + "[A 0:00] minimal -- ...".postln; + ~bpm = 124; ...; + ~reload.value; + [\kickSeq, ...].do { |k| Pdef(k).play }; + 120.wait; + + "[A 2:00] acid rave -- ...".postln; + ~bpm = 132; ...; + ~reload.value; + 120.wait; + + // ... etc +}).play; +) +``` + +Each section is delimited by a `.postln` with timestamp + the next `.wait`. + +- [ ] **Step 2: Write the splitter** + +```python +# _migrate/split_track.py +"""Splits a track .scd file into: + - tracks/<name>/_track.scd (orchestrator Routine) + - tracks/<name>/NN_<slug>.scd (autonomous section files) + +Each section file is idempotent: applies all mutations + ~reload + Pdef.play +without any .wait or Routine. The orchestrator loads them in order. +""" +import re, sys +from pathlib import Path + +def slugify(text): + """[A 2:00] acid rave -- kick T1 + melody LEAD + variations + -> 'acid_rave_kick_t1_melody_lead_variations'""" + text = re.sub(r'^\[[A-Z]\s+[\d:]+\]\s*', '', text) + text = text.replace('...', '').strip() + text = re.sub(r'[^a-zA-Z0-9]+', '_', text).lower().strip('_') + return text or "section" + +def split_track(track_path): + name = track_path.stem # "A_acid_journey" + src = track_path.read_text() + + # Find the Routine body + m = re.search(r'~track\s*=\s*Routine\s*\(\s*\{(.*?)\}\)\.play', src, re.DOTALL) + if not m: + print(f" [SKIP] {track_path.name} : no Routine found") + return + body = m.group(1) + + # Split body by `.postln;` timestamps + sections = [] + cursor = 0 + for log_match in re.finditer(r'"(\[[A-Z]\s+\d+:\d+\][^"]+)"\.postln;', body): + if sections: + sections[-1]["body_end"] = log_match.start() + sections.append({ + "log": log_match.group(1), + "body_start": log_match.end(), + "body_end": len(body), + }) + + # For each section, body = body[body_start:body_end] minus the trailing .wait + target_dir = Path("tracks") / name + target_dir.mkdir(parents=True, exist_ok=True) + + for i, sec in enumerate(sections, start=1): + section_body = body[sec["body_start"]:sec["body_end"]] + # Drop trailing N.wait; + section_body = re.sub(r'\d[\d.]*\.wait\s*;\s*$', '', section_body, flags=re.MULTILINE).rstrip() + + slug = slugify(sec["log"]) + out_path = target_dir / f"{i:02d}_{slug}.scd" + content = ( + f"// =====================================================================\n" + f"// {out_path}\n" + f"// Section autonome : Cmd+Enter pour appliquer\n" + f"// =====================================================================\n" + f"(\n" + f"\"{sec['log']}\".postln;\n" + f"{section_body}\n" + f")\n" + ) + out_path.write_text(content) + + # Build orchestrator that re-creates the Routine via .load + orch = ( + f"// =====================================================================\n" + f"// tracks/{name}/_track.scd -- Orchestrateur\n" + f"// Cmd+Enter pour jouer la track entiere.\n" + f"// =====================================================================\n" + f"(\n" + f"~track !? {{ ~track.stop }};\n" + f"~track = Routine({{\n" + f" var dir = thisProcess.nowExecutingPath.dirname;\n" + ) + # Reconstruct the original wait values + for i, sec in enumerate(sections, start=1): + section_body = body[sec["body_start"]:sec["body_end"]] + wait_match = re.search(r'(\d[\d.]*)\.wait\s*;', section_body) + wait_dur = wait_match.group(1) if wait_match else "0" + slug = slugify(sec["log"]) + orch += f" (dir +/+ \"{i:02d}_{slug}.scd\").load;\n" + if i < len(sections): + orch += f" {wait_dur}.wait;\n" + orch += ( + f" \"[{name[0]}] === fin {name[2:].upper()} ===\".postln;\n" + f" ~masterFadeOut !? {{ ~masterFadeOut.(8) }};\n" + f"}}).play;\n" + f")\n" + ) + (target_dir / "_track.scd").write_text(orch) + print(f" {track_path.name} -> {len(sections)} sections") + +if __name__ == "__main__": + for f in sys.argv[1:]: + split_track(Path(f)) +``` + +- [ ] **Step 3: Test on track A only first** + +```bash +python3 _migrate/split_track.py tracks/A_acid_journey.scd +ls tracks/A_acid_journey/ +``` + +Expected: `_track.scd` + several `NN_<slug>.scd` files. + +- [ ] **Step 4: Verify balance + sample content** + +```bash +for f in tracks/A_acid_journey/*.scd; do + awk -v f="$f" '{ for (i=1;i<=length($0);i++) { c=substr($0,i,1); if (c=="(") p++; else if (c==")") p--; if (c=="[") b++; else if (c=="]") b-- }} END { if (p!=0||b!=0) printf "%s P:%d B:%d\n", f, p, b }' "$f" +done +cat tracks/A_acid_journey/01_*.scd | head -20 +``` + +Expected: balance OK; section file applies mutations + reload + Pdef.play. + +### Task 5.2: Run on all 23 tracks + remove old files + +- [ ] **Step 1: Bulk run** + +```bash +python3 _migrate/split_track.py tracks/*.scd +``` + +Expected: 23 lines `name -> N sections` (total ~120-150 sections). + +- [ ] **Step 2: Delete the old single-file tracks (now superseded by `<X>/` dirs)** + +```bash +for f in tracks/[A-W]_*.scd; do + [ -d "${f%.scd}" ] && git rm "$f" +done +``` + +### Task 5.3: Adapt `~jumpTo` to load section files + +**Files:** +- Modify: `control/jump.scd` + +- [ ] **Step 1: Replace closure-based jump with file-based jump** + +Replace the body of `~jumpTo`: + +```supercollider +~jumpTo = { |trackLetter, slug| + var letter = trackLetter.asString.toUpper; + var dir = PathName(~base ++ "tracks").folders + .detect { |f| f.folderName.beginsWith(letter ++ "_") }; + if (dir.isNil) { + ("!! [jumpTo] track " ++ letter ++ " inexistante").postln; + } { + var slugStr = slug.asString.toLower; + var matches = dir.files + .select { |f| f.fileName.contains(slugStr) + and: { f.extension == "scd" } + and: { f.fileName != "_track.scd" } }; + if (matches.isEmpty) { + ("!! [jumpTo] section '" ++ slugStr ++ "' inexistante dans " ++ letter).postln; + } { + ~track !? { ~track.stop; ~track = nil }; + ~filterSweep !? { ~filterSweep.stop; ~filterSweep = nil }; + ~randomLoop !? { ~randomLoop.stop; ~randomLoop = nil }; + ~melodyEvolve !? { ~melodyEvolve.stop; ~melodyEvolve = nil }; + matches.first.fullPath.load; + ("[JUMP] " ++ letter ++ " " ++ slugStr).postln; + }; + }; +}; +``` + +- [ ] **Step 2: Remove the now-obsolete `~sections` dictionary registration** + +Delete the `~sections[\A] = (...)` blocks in `control/jump.scd` — superseded by the file-based system. + +### Task 5.4: Adapt tests + commit + +- [ ] **Step 1: Adapt `tests/e2e_07_jump.scd`** + +Replace assertions like `~assert.("section A:minimal exists", ~sections[\A][\minimal].notNil)` with file existence checks: + +```supercollider +~assert.("track A has _track.scd", + File.exists(~base ++ "tracks/A_acid_journey/_track.scd")); +~assert.("track A section 01 exists", + PathName(~base ++ "tracks/A_acid_journey/").files + .select { |f| f.fileName.beginsWith("01_") }.size == 1); +``` + +- [ ] **Step 2: Adapt `tests/e2e_09_tracks.scd` to scan track DIRS instead of FILES** + +```supercollider +PathName(~base ++ "tracks/").folders.do { |trackDir| + var orchestrator = trackDir.fullPath +/+ "_track.scd"; + ~assert.(trackDir.folderName ++ " orchestrator exists", + File.exists(orchestrator)); + var sections = trackDir.files.select { |f| f.fileName.beginsWith(/\d/) }; + ~assert.(trackDir.folderName ++ " has at least 2 sections", + sections.size >= 2); +}; +``` + +- [ ] **Step 3: Adapt `tests/e2e_10_timestamps.scd`** + +The test parses `[X M:SS]` from `.postln` lines. Now those are in section files, not track files. Update to scan section files in each track directory. + +- [ ] **Step 4: Run E2E + commit** + +```bash +bash tests/run_all.sh 2>&1 | tail -16 +git add -A +git -c user.email="108685187+electron-rare@users.noreply.github.com" \ + -c user.name="electron-rare" commit -m "Phase 5: split 23 tracks into <track>/{_track,NN_section}.scd" +git push +``` + +--- + +## Phase 6: Nouvelle API live (~mAcid, ~pAcid, ~fx) + +**Goal:** Replace `~kk/~mm/~ff/~cc/~p` and all per-genre/per-length wrappers with a unified API generated dynamically from the directory structure. Update `01_live.scd`, `web_bridge.scd`, and `web/public/control/app.js`. + +### Task 6.1: Write `audio/wrappers.scd` (dynamic API generator) + +**Files:** +- Create: `audio/wrappers.scd` +- Delete: `audio/{melodies,patterns,kicks,fx,chains}.scd` (the legacy wrappers) + +- [ ] **Step 1: Write the wrapper generator** + +```supercollider +// ===================================================================== +// audio/wrappers.scd -- Generates ~mGenre, ~pGenre, ~fx, ~synth +// helpers dynamically from directory structure. +// ===================================================================== +( +~melodyCurrentGenre = ~melodyCurrentGenre ?? { \acid }; + +// ---------- ~mGenre.(N | nil) + ~mList.(genre | nil) ------------ +PathName(~base ++ "melodies").folders.do { |gFolder| + var genre = gFolder.folderName.asSymbol; + var helperName = ("m" ++ genre.asString.capitalize).asSymbol; + currentEnvironment[helperName] = { |n| + var prefix = "m" ++ genre.asString.capitalize; + var sym, mel; + if (n.isNil) { + // Random : list ~m{Prefix}{i} variables defined + var avail = currentEnvironment.keys.asArray + .select { |k| k.asString.beginsWith(prefix) + and: { k.asString.size > prefix.size + and: { (k.asString[prefix.size].asInteger >= $0.asInteger) + and: { k.asString[prefix.size].asInteger <= $9.asInteger }}}}; + sym = avail.choose; + } { sym = (prefix ++ n).asSymbol }; + mel = currentEnvironment[sym]; + if (mel.notNil) { + ~melodyNotes = mel; + ~melodyCurrentGenre = genre; + ~reload.value; + ("[m" ++ genre ++ "] -> ~" ++ sym).postln; + } { ("!! [m" ++ genre ++ "] -> ~" ++ sym ++ " inexistant").postln }; + }; +}; + +~mList = { |genre| + if (genre.isNil) { + // List all genres + counts + PathName(~base ++ "melodies").folders.do { |f| + var n = f.files.select { |x| x.extension == "scd" }.size; + (" " ++ f.folderName.padRight(15) ++ n).postln; + }; + } { + var dir = PathName(~base ++ "melodies/" ++ genre.asString); + if (dir.isFolder) { + dir.files.select { |f| f.extension == "scd" }.do { |f| + (" " ++ f.fileName).postln; + }; + }; + }; +}; + +~mNext = { /* uses ~melodyCurrentGenre + last index, advances by 1 */ }; +~mPrev = { /* same, decrements */ }; +~mInst = { |inst| ~melodyInst = inst.asSymbol; ~reload.value }; + +// ---------- ~pGenre.(\name | nil) ---------------------------------- +// Similar pattern: scans patterns/<g>/, exposes ~pAcid, ~pTrance, etc. +// For multi-instrument patterns (Event), applies all keys (~kickSteps, +// ~hatSteps, ~bpm, ~melodyNotes, ...). +PathName(~base ++ "patterns/genre").folders.do { |gFolder| + var genre = gFolder.folderName.asSymbol; + var helperName = ("p" ++ genre.asString.capitalize).asSymbol; + currentEnvironment[helperName] = { |name| + var prefix = "p" ++ genre.asString.capitalize; + var sym, pat; + if (name.isNil) { + sym = currentEnvironment.keys.asArray + .select { |k| k.asString.beginsWith(prefix) } + .choose; + } { sym = (prefix ++ name.asString.capitalize).asSymbol }; + pat = currentEnvironment[sym]; + if (pat.isKindOf(Event)) { + // Multi-instrument: apply all keys + pat.keysValuesDo { |k, v| + if (#[\kick, \hat, \snare, \clap, \perc].includes(k)) { + currentEnvironment[(k.asString ++ "Steps").asSymbol] = v; + } { if (k == \bpm) { + ~bpm = v; TempoClock.default.tempo = v / 60; + } { if (k == \bassline) { + ~acidNotes = v; + } { if (k == \melody) { + ~melodyNotes = v; + }}}}; + }; + ~reload.value; + } { if (pat.isKindOf(Array)) { + // Single instrument (kick/hat/snare/...) — caller infers from helper name + ("!! [p" ++ genre ++ "] " ++ sym ++ " is array — use ~pKick/~pHat/etc instead").postln; + }}; + ("[p" ++ genre ++ "] -> ~" ++ sym).postln; + }; +}; + +// Per-instrument helpers ~pKick.(\techno), ~pHat.(\offbeat), etc. +[\kick, \hat, \snare, \clap, \perc].do { |inst| + var helperName = ("p" ++ inst.asString.capitalize).asSymbol; + currentEnvironment[helperName] = { |name| + var prefix = "p" ++ inst.asString.capitalize; + var sym = (prefix ++ name.asString.capitalize).asSymbol; + var pat = currentEnvironment[sym]; + if (pat.isKindOf(Array)) { + currentEnvironment[(inst.asString ++ "Steps").asSymbol] = pat; + ~reload.value; + ("[p" ++ inst ++ "] -> ~" ++ sym).postln; + } { ("!! ~" ++ sym ++ " inexistant").postln }; + }; +}; + +// ---------- ~fx.(\type, \name, ...) --------------------------------- +~fx = { |type, name ... args| + case + { type == \bus } { ~send.(name, *args) } + { type == \insert } { ~vcfOn.(name, *args) } + { type == \trick } { Synth(name.asSymbol, args) } + { ("!! [fx] type " ++ type ++ " unknown").postln }; +}; + +// ---------- ~synth.(\group, \name) ---------------------------------- +~synth = { |group, name| + var path = ~base ++ "synth/" ++ group.asString ++ "/" + ++ name.asString.toLower.replace("_", "_") ++ ".scd"; + if (File.exists(path)) { + ("[synth] " ++ group ++ "/" ++ name ++ " : " ++ path).postln; + } { ("!! [synth] " ++ path ++ " inexistant").postln }; +}; + +~synthList = { |group| + var dir = PathName(~base ++ "synth/" ++ group.asString); + if (dir.isFolder) { + dir.files.select { |f| f.extension == "scd" }.do { |f| + (" " ++ f.fileName).postln; + }; + }; +}; + +"=== audio/wrappers.scd loaded ===".postln; +" Melody : ~mAcid.(1) ~mTrance.() ~mList.()".postln; +" Pattern: ~pAcid.(\\house) ~pKick.(\\techno) ~pHat.(\\offbeat)".postln; +" FX : ~fx.(\\bus, \\rev, 0.4) ~fx.(\\insert, \\vcfMoog, 1500, 0.6)".postln; +" Synth : ~synth.(\\drums, \\kick) ~synthList.(\\drums)".postln; +) +``` + +- [ ] **Step 2: Add to `~setupAll`** + +In `setup.scd`, append `~loadFirstBlock.(~base ++ "audio/wrappers.scd");` to the `liveSetup` body — after the wrappers' source files are loaded. Also add to `~setupLive` and `~ensureLive`. + +- [ ] **Step 3: Delete the legacy wrapper files** + +```bash +git rm audio/melodies.scd audio/patterns.scd audio/kicks.scd audio/fx.scd audio/chains.scd +``` + +(`chains.scd` is replaced by a new `audio/chains.scd` rewritten in Task 6.2 below — keep the file but rewrite it. Skip the rm for chains.scd.) + +```bash +git rm audio/melodies.scd audio/patterns.scd audio/kicks.scd audio/fx.scd +``` + +### Task 6.2: Rewrite `audio/chains.scd` with new `~ch.(\name, ...)` API + +**Files:** +- Modify: `audio/chains.scd` + +- [ ] **Step 1: Replace dict-based API with single `~ch` dispatch** + +```supercollider +// audio/chains.scd +( +~chainRoutine = ~chainRoutine ?? { nil }; + +~ch = { |name ... args| + ~chainRoutine !? { ~chainRoutine.stop; ~chainRoutine = nil }; + switch (name.asSymbol, + \intro, { ~seqIntro !? { ~seqIntro.() } }, + \drop, { ~seqDrop !? { ~seqDrop.() } }, + \breakdown, { ~seqBreakdown !? { ~seqBreakdown.() } }, + \buildup, { ~seqBuildup !? { ~seqBuildup.(args[0] ? 8) } }, + \outro, { ~seqOutro !? { ~seqOutro.() } }, + \intro2drop, { + var introDur = args[0] ? 4, buildDur = args[1] ? 4; + ~chainRoutine = Routine({ + ~seqIntro !? { ~seqIntro.() }; + introDur.wait; + ~seqBuildup !? { ~seqBuildup.(buildDur) }; + (buildDur * (~stepDur ? 0.25)).wait; + ~seqDrop !? { ~seqDrop.() }; + ~chainRoutine = nil; + }).play(TempoClock.default); + }, + \dropToBreak, { + var breakDur = args[0] ? 8; + ~chainRoutine = Routine({ + ~seqDrop !? { ~seqDrop.() }; + 4.wait; + ~seqBreakdown !? { ~seqBreakdown.() }; + breakDur.wait; + ~seqDrop !? { ~seqDrop.() }; + ~chainRoutine = nil; + }).play(TempoClock.default); + }, + \outroFade, { + var dur = args[0] ? 12; + ~seqOutro !? { ~seqOutro.() }; + ~masterFadeOut !? { ~masterFadeOut.(dur) }; + }, + { ("!! [ch] action " ++ name ++ " unknown").postln } + ); +}; + +~chStop = { + ~chainRoutine !? { ~chainRoutine.stop; ~chainRoutine = nil }; + ~seqStop !? { ~seqStop.() }; + "[ch] stopped".postln; +}; +) +``` + +### Task 6.3: Rewrite `01_live.scd` with new API + +**Files:** +- Modify: `01_live.scd` + +- [ ] **Step 1: Update each block of 01_live.scd** + +Each section needs new syntax: +- `[1] KICKS`: replace `~kk.(\techno)` with `~pKick.(\techno)` (instrument-only) or `~pAcid.(\house)` (multi-instr) +- `[2] MELODIES`: replace `~mm.(50)` with `~mAcid.(1)` etc. +- `[3] FX`: replace `~ff.(\dub)` with `~fx.(\preset, \dub)` — note presets need migration in fx_bus.scd or a new ~fxPreset still works +- `[4] CHAINS`: replace `~chDrop.()` with `~ch.(\drop)` +- `[5] PATTERNS`: replace `~pKit.(\techno)` with `~pAcid.(\house)` or per-instrument `~pKick.(\techno)` +- `[6-9] MIXER, SCENES, JUMP, STATUS`: unchanged +- `[10] PLAY` and STOP blocks: unchanged + +Detailed substitutions are extensive. Rewrite the entire file. The cheat-sheet header at top should be updated to reflect the new API. + +### Task 6.4: Rewrite `web_bridge.scd` and web client for new API + +**Files:** +- Modify: `web_bridge.scd` +- Modify: `web/server.js` (add `/api/genres` endpoint) +- Modify: `web/public/control/app.js` + +- [ ] **Step 1: Replace OSC route handlers in web_bridge.scd** + +Old: +```supercollider +~webBridgeAdd.("/control/kk", { |msg| ~kk.(msg[1].asString.asSymbol) }); +~webBridgeAdd.("/control/mm", { |msg| ~mm.(msg[1].asInteger) }); +~webBridgeAdd.("/control/ff", { |msg| ~ff.(msg[1].asString.asSymbol) }); +``` + +New (more dynamic): +```supercollider +~webBridgeAdd.("/control/melody", { |msg| + // /control/melody acid 1 + var genre = msg[1].asString.asSymbol; + var n = msg[2]; + var helperName = ("m" ++ genre.asString.capitalize).asSymbol; + currentEnvironment[helperName] !? { |fn| fn.value(n) }; +}); + +~webBridgeAdd.("/control/pattern", { |msg| + // /control/pattern acid house + var genre = msg[1].asString.asSymbol; + var name = msg[2].asString.asSymbol; + var helperName = ("p" ++ genre.asString.capitalize).asSymbol; + currentEnvironment[helperName] !? { |fn| fn.value(name) }; +}); + +~webBridgeAdd.("/control/fx", { |msg| + var type = msg[1].asString.asSymbol; + var name = msg[2].asString.asSymbol; + var args = msg.copyToEnd(3); + ~fx.(type, name, *args); +}); +``` + +- [ ] **Step 2: Add `/api/genres` endpoint in `web/server.js`** + +```javascript +import { readdirSync, statSync } from "node:fs"; + +app.get("/api/genres", (_req, res) => { + const root = "/Users/electron/Documents/Projets_Creatifs/sound_algo"; + function listGenres(subdir) { + const path = `${root}/${subdir}`; + try { + return readdirSync(path) + .filter((d) => statSync(`${path}/${d}`).isDirectory()) + .filter((d) => !d.startsWith("_") && !d.startsWith(".")); + } catch { return []; } + } + res.json({ + melodies: listGenres("melodies"), + patterns: listGenres("patterns/genre"), + synth: listGenres("synth"), + fx: listGenres("fx"), + }); +}); +``` + +- [ ] **Step 3: Update `web/public/control/app.js`** + +Replace hardcoded `KICKS`, `PKITS`, `PGENRES`, `FF` arrays with a fetch on load: + +```javascript +const genres = await fetch("/api/genres").then(r => r.json()); + +// Render melody chips dynamically per genre +genres.melodies.forEach((genre) => { + const section = document.querySelector("#melodies"); + // ... build chip group for each genre +}); +``` + +(The detailed JS rewrite is extensive — see web client for full structure.) + +### Task 6.5: Validate Phase 6 + commit + +- [ ] **Step 1: Run E2E** + +```bash +bash tests/run_all.sh 2>&1 | tail -16 +``` + +Expected: 10/10 PASS. `e2e_08_live` likely needs adapting to test new wrappers. + +- [ ] **Step 2: Smoke test the web bridge** + +```bash +cd web && node server.js > /tmp/web.log 2>&1 & +sleep 2 +curl -s http://localhost:3000/api/genres | python3 -m json.tool +kill %1 +``` + +Expected: JSON with `melodies`, `patterns`, `synth`, `fx` keys, each populated. + +- [ ] **Step 3: Commit** + +```bash +git add -A +git -c user.email="108685187+electron-rare@users.noreply.github.com" \ + -c user.name="electron-rare" commit -m "Phase 6: new live API by genre (~mAcid, ~pAcid, ~fx)" +git push +``` + +--- + +## Phase 7: Cleanup + docs + +### Task 7.1: Remove `_migrate/` + +- [ ] **Step 1: Delete migration scripts** + +```bash +git rm -r _migrate/ +``` + +### Task 7.2: Update root `CLAUDE.md` + +- [ ] **Step 1: Rewrite the `## Live Performance Workflow` section to reflect the new API** + +Replace `~kk/~mm/~ff/~cc/~p` with `~mGenre/~pGenre/~fx`. Update the "Tableau de bord" pointer. + +### Task 7.3: Add nested CLAUDE.md in new directories + +- [ ] **Step 1: Create `synth/CLAUDE.md`** + +Short doc (30-50 lines): convention 1 fichier = 1 SynthDef, sous-dossiers par rôle, doneAction:2 invariant. + +- [ ] **Step 2: Create `fx/CLAUDE.md`** + +Short doc: bus/ vs insert/ vs trick/ distinction, `~fxBuses` allocation pattern. + +- [ ] **Step 3: Create `melodies/CLAUDE.md`** + +Convention 1 fichier = 1 mélodie, sous-dossiers par genre, ~m{Genre}{N} naming. + +- [ ] **Step 4: Create `patterns/CLAUDE.md`** + +Conventions instrument/ vs genre/. + +- [ ] **Step 5: Update existing `tracks/CLAUDE.md`** + +Reflect the new sous-dossier + section autonome structure. + +- [ ] **Step 6: Create `audio/CLAUDE.md`** + +Replaces the current `live/CLAUDE.md`. Refresh wrappers list. + +### Task 7.4: Update `tests/CLAUDE.md` and skills + +- [ ] **Step 1: Update `tests/CLAUDE.md`** — file list now mentions adapted tests + +- [ ] **Step 2: Update `.claude/skills/scaffolding-track/SKILL.md`** — new scaffold creates a directory, not a file + +- [ ] **Step 3: Update `.claude/skills/adding-synthdef/SKILL.md`** — target is `synth/<role>/` + +- [ ] **Step 4: Update `.claude/skills/registering-jump-section/SKILL.md`** — section is a file, not a closure in jump.scd + +- [ ] **Step 5: Update `.claude/skills/generating-live-wrappers/SKILL.md`** — explain the new dynamic wrapper system + +### Task 7.5: Update `README.md` + +- [ ] **Step 1: Rewrite the Architecture table to match the new top-level structure** + +### Task 7.6: Final validation + tag v2.0 + +- [ ] **Step 1: Run full E2E** + +```bash +bash tests/run_all.sh 2>&1 | tail -16 +``` + +Expected: 10/10 PASS. + +- [ ] **Step 2: Snapshot file counts (regression check)** + +```bash +echo "SynthDef: $(grep -rE 'SynthDef\(\\\\' --include='*.scd' . 2>/dev/null | grep -v _archive | grep -v node_modules | wc -l) / 38 expected" +echo "Melodies: $(find melodies -name '*.scd' -not -name '_index.scd' | wc -l) / 133 expected" +echo "Tracks : $(ls -d tracks/[A-W]_*/ 2>/dev/null | wc -l) / 23 expected" +``` + +Expected: 38, 133, 23. + +- [ ] **Step 3: Smoke test from a fresh sclang process** + +Create `_smoke/v2_smoke.scd`: + +```supercollider +"=== v2 smoke test ===".postln; + +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo/"; +(~base ++ "00_load.scd").load; + +// Wait for setup to finish +fork { + while { ~setupAll_done.isNil } { 0.5.wait }; + s.sync; + + // Verify new API works + ~mList.(); + ~mAcid.(1); + ~pAcid.(\house); + ~fx.(\bus, \rev, 0.4); + ~ch.(\intro); + + "=== v2 smoke OK ===".postln; + 0.exit; +}; +``` + +```bash +/Applications/SuperCollider.app/Contents/MacOS/sclang _smoke/v2_smoke.scd 2>&1 | tail -10 +``` + +Expected: `=== v2 smoke OK ===` printed. + +- [ ] **Step 4: Commit + tag** + +```bash +git add -A +git -c user.email="108685187+electron-rare@users.noreply.github.com" \ + -c user.name="electron-rare" commit -m "Phase 7: cleanup, docs, v2.0" +git tag -a v2.0 -m "v2.0 atomic granularity reorganization" +git push --tags +git push +``` + +--- + +## Self-Review Notes + +**Spec coverage** : every section of the spec has at least one task in this plan. Architecture cible (synth/, fx/, melodies/, patterns/, tracks/, audio/, palette/, control/) → Phases 1-7 collectively. Nouvelle API live → Phase 6. Plan migration 7 phases → mapped 1:1. Acceptance criteria → final smoke test (Task 7.6). + +**Placeholder scan** : detailed code snippets present at every concrete step. Pattern-routing tables for melodies and patterns marked as "produce manually by reading those files" — this is the only place where the engineer must do interpretive work; the scripts handle the rest mechanically. + +**Type consistency** : helper names consistent across phases (`~mAcid` Phase 3 + Phase 6; `~ch` Phase 6.2 matches Phase 6.3 invocations; `~fx` signature `(type, name, ...args)` consistent). + +**Risks called out** : RAM fixes (Pfunc, ~trickRoutines, ~chainRoutine, ~crossfadeFxRoutine) preserved by the plan structure (audio/tricks.scd, audio/chains.scd, audio/fx_bus.scd retain their bodies; only SynthDef definitions are extracted). + +--- + +**End of plan.** diff --git a/sound_algo/docs/superpowers/specs/2026-05-04-refonte-organisation-design.md b/sound_algo/docs/superpowers/specs/2026-05-04-refonte-organisation-design.md new file mode 100644 index 0000000..effac50 --- /dev/null +++ b/sound_algo/docs/superpowers/specs/2026-05-04-refonte-organisation-design.md @@ -0,0 +1,504 @@ +# Refonte complète de l'organisation du code et des fichiers + +**Date** : 2026-05-04 +**Statut** : Design approuvé, en attente de plan d'implémentation +**Cible** : passage à une organisation atomique granulaire (1 fichier = 1 unité) + +--- + +## Contexte + +Le projet `sound_algo` a actuellement une structure mixte : + +- 6 fichiers contenant 38 SynthDef éparpillés (engine.scd + synthdefs/{asia,extra,authentic}.scd + live/{live,fx_bus}.scd) +- 4 fichiers groupés contenant 133 mélodies (`palette/melodies/{short,long,xlong,epic}.scd`) +- 6 fichiers contenant 120+ patterns rythmiques (`palette/rhythm/`) +- 23 fichiers track monolithiques où chaque section est imbriquée dans une `Routine` +- API live `~kk/~mm/~ff/~cc/~p` classifiée par technique (longueur de mélodie, type de FX) plutôt que par genre musical + +**Limites observées** : +- Difficile d'ajouter une mélodie / pattern / SynthDef sans toucher un gros fichier multi-blocs +- Impossible d'exécuter une section de track isolément (tout est dans la Routine parente) +- Classification par technique sépare les mélodies d'un même genre dans 4 fichiers différents +- L'API live force à connaître la longueur (`~mShort/~mLong`) plutôt que l'intention musicale + +## Objectif + +Refondre l'organisation pour atteindre : + +1. **Granularité atomique** : 1 fichier = 1 SynthDef, 1 FX, 1 mélodie, 1 pattern, 1 section de track +2. **Classification par genre musical** (pas par technique) pour mélodies et patterns +3. **Auto-discovery** : ajouter un nouveau fichier suffit (pas de mise à jour d'index manuel) +4. **Sections de track exécutables** Cmd+Enter individuellement, sans dépendre du Routine parent +5. **Nouvelle API live** par genre, l'ancienne disparaît complètement (pas de double maintenance) + +## Contraintes + +- Les 10 tests E2E doivent rester verts à chaque phase de migration +- Convention SC : variables `~xxx` minuscules ; un seul bloc top-level dans les fichiers `.load`-compatibles ; balance parens P:0 B:0 +- `web_bridge.scd` doit continuer à fonctionner (le bridge OSC alimenté par la web surface) +- Les 23 tracks A-W doivent rester jouables (boutons jump, chains, web surface) +- Repo GitHub privé déjà push, branche `main` protégée par convention + +--- + +## Architecture cible + +### Structure top-level + +``` +sound_algo/ +├── 00_load.scd # loader / index — entry point +├── 01_live.scd # tableau de bord live, Cmd+Enter par bloc +├── engine.scd # Pdef + ~reload + helpers (plus de SynthDef) +├── setup.scd # ~check / ~setupAll / ~teardown +├── web_bridge.scd # OSC bridge SC ↔ web +│ +├── synth/ # 1 fichier = 1 SynthDef, sous-dossiers par rôle +├── fx/ # 1 fichier = 1 FX, sous-dossiers par routage +├── melodies/ # 1 fichier = 1 mélodie, sous-dossiers par genre +├── patterns/ # 1 fichier = 1 pattern, sous-dossiers par genre +├── tracks/ # 1 sous-dossier par track, 1 fichier par section +│ +├── palette/ # banques compositionnelles (scales, chords, ...) +├── audio/ # ce qui était live/ sans les SynthDef +├── control/ # jump, midi, playlist +│ +├── tests/ # E2E +├── examples/ # tutoriels +├── web/ # Node bridge + UI +├── _archive/ # legacy (ignoré) +└── docs/ + └── superpowers/specs/ +``` + +### `synth/` — 38 SynthDef en sous-dossiers par rôle + +``` +synth/ +├── _index.scd +├── drums/ kick.scd, kick_gabber.scd, hat.scd, snare.scd, snare_gated.scd, +│ clap.scd, perc.scd, rim.scd, cowbell.scd, tom.scd +├── bass/ acid.scd, reese.scd, reese_dnb.scd, reese_hard.scd, sub_boom.scd, +│ fm_bass.scd, hooverbass.scd, didgeridoo.scd +├── lead/ saw3.scd, lead.scd, square_lead.scd, fm_lead.scd, organ_lead.scd, +│ hard_lead.scd, supersaw.scd, stab.scd, pluck.scd, fm_bell.scd, rhodes.scd +├── pad/ pad.scd, warm_pad.scd, vocal_pad.scd, drone.scd +├── world/ koto.scd, erhu.scd, pipa.scd, gong.scd, handpan.scd, guzheng.scd, growl.scd +└── master/ master_lim.scd, master_comp.scd, master_sat.scd, vinyl.scd +``` + +**Convention par fichier** : + +```supercollider +// synth/drums/kick.scd +( +SynthDef(\kick, { + arg freq = 55, pitchAmt = 3.0, ...; + ... +}).add; +) +``` + +Un seul bloc top-level, **uniquement** un `SynthDef.add`. Pas de variable `~xxx`, pas de helpers. + +### `fx/` — ~30 FX en sous-dossiers par routage + +``` +fx/ +├── _index.scd +├── bus/ # FX wet send, lus depuis ~fxBuses +│ reverb.scd, delay.scd, chorus.scd, phaser.scd, flanger.scd, +│ bitcrush.scd, tape.scd, shimmer.scd, dist.scd, send.scd +├── insert/ # FX en chaîne avant masterLim +│ vcf_moog.scd, vcf_ms20.scd, vcf_ladder.scd, vcf_formant.scd, +│ vcf_comb.scd, vcf_hpf.scd, vcf_bpf.scd, vcf_notch.scd, +│ ringmod.scd, freq_shift.scd, gran.scd, comb.scd, formant.scd, +│ auto_filter.scd, tremolo.scd, autopan.scd, stutter.scd, +│ resonator.scd, spring_rev.scd, plate.scd +└── trick/ # FX oneshot + riser.scd, sweep.scd, impact.scd, crash.scd +``` + +### Auto-glob index + +Chaque dossier (sauf `tracks/`) a un `_index.scd` qui scanne récursivement et charge : + +```supercollider +// synth/_index.scd +( +PathName(thisProcess.nowExecutingPath.dirname).deepFiles + .select { |f| f.extension == "scd" + and: { f.fileName != "_index.scd" } } + .sort { |a, b| a.fullPath < b.fullPath } + .do { |f| f.fullPath.load }; +) +``` + +`tracks/_index.scd` ne charge PAS les tracks au boot — elles sont lazy, on charge à la demande via `~jumpTo` ou Cmd+Enter manuel sur `_track.scd`. + +### `melodies/` — 133 fichiers en sous-dossiers par genre + +Mapping inverse depuis `~melodyBank` (palette/melodies/bank.scd actuel) → genre dominant pour chaque mélodie. Une mélodie présente dans plusieurs genres reste dans son genre principal (pas de duplication). + +``` +melodies/ +├── _index.scd +├── acid/ m1.scd ... m12.scd # ~mAcid1..~mAcid12 +├── trance/ m1.scd ... m{N}.scd # ~mTrance1.. +├── detroit/ ... # ~mDetroit* +├── dnb/ ... # ~mDnb* +├── dub/ ... # ~mDub* +├── dubstep/ ... # ~mDubstep* +├── house/ ... # ~mHouse* +├── hardstyle/ ... # ~mHardstyle* +├── phonk/ ... # ~mPhonk* +├── synthwave/ ... # ~mSynthwave* +├── oriental/ ... # ~mOriental* +├── world/ ... # ~mWorld* +├── ambient/ ... # ~mAmbient* +└── industrial/ ... # ~mIndustrial* +``` + +**Convention par fichier mélodie** : + +```supercollider +// melodies/acid/m1.scd +( +~mAcid1 = [36, 0, 36, 0, 39, 36, 41, 36, + 36, 0, 36, 39, 41, 0, 43, 39]; +) +``` + +La longueur (32/64/96/128 pas) est détectée via `.size` à l'usage — pas de classification technique séparée. + +### `patterns/` — 120+ fichiers en sous-dossiers + +``` +patterns/ +├── _index.scd +├── kick/ techno.scd, gabber.scd, dub.scd, ... # ~pKickTechno, ... +├── hat/ offbeat.scd, eighth.scd, sixteen.scd, ... +├── snare/ two4.scd, ghost.scd, ... +├── clap/ ... +├── perc/ ... +└── genre/ # patterns multi-instrument complets + ├── _index.scd + ├── acid/ house.scd, hard_techno.scd, ... + ├── trance/ trance138.scd, psy_trance.scd, ... + ├── dnb/ liquid.scd, neurofunk.scd, jungle.scd, ... + ├── dubstep/ ... + ├── house/ deep.scd, tech.scd, ... + ├── hardstyle/ ... + ├── phonk/ ... + ├── industrial/ ... + ├── breakcore/ ... + ├── footwork/ ... + ├── idm/ ... + └── glitch_hop/ ... +``` + +**Pattern simple** (1 instrument) : + +```supercollider +// patterns/kick/techno.scd +( ~pKickTechno = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ) +``` + +**Pattern multi-instrument** (`genre/`) : + +```supercollider +// patterns/genre/acid/house.scd +( +~pAcidHouse = ( + kick: [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0], + hat: [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0], + snare: [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0], + clap: [0!16], + perc: [0!16], + bpm: 125, + bassline: [36, 0, 36, 0, 39, 36, 41, 36, 36, 0, 36, 39, 41, 0, 43, 39], + style: \acid_house +); +) +``` + +### `tracks/` — sous-dossier par track + sections autonomes + +``` +tracks/ +├── _index.scd # ne charge PAS les tracks au boot +├── A_acid_journey/ +│ ├── _track.scd # orchestrateur Routine +│ ├── 01_minimal.scd # Cmd+Enter pour appliquer la section +│ ├── 02_acid_rave.scd +│ ├── 03_detroit.scd +│ ├── 04_hard_push.scd +│ ├── 05_supersaw_dub.scd +│ ├── 06_guzheng_acid.scd +│ ├── 07_outro.scd +│ └── README.md # timeline, BPM, style — optionnel +├── B_deep_to_hard/ +│ ├── _track.scd +│ └── ... +└── ... (W tracks, soit 23 dossiers) +``` + +**Section autonome** : + +```supercollider +// tracks/A_acid_journey/02_acid_rave.scd +// Section [A 2:00] : acid rave -- kick T1 + melody LEAD + variations +( +"[A 2:00] acid rave -- kick T1 + melody LEAD + variations".postln; + +~bpm = 132; TempoClock.default.tempo = ~bpm/60; +~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; +~kickDrive = 1.3; ~kickClick = 0.2; + +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; +~melodyInst = \lead; +~melodyAttack = 0.012; ~melodyRelease = 0.25; ~melodyCutoff = 2400; +~melodyAmp = 0.16; + +~acidNotes = [36,36,48,36,39,36,43,39, 36,41,36,39,43,36,36,41]; +~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; +~melodyNotes = ~mAcid1; // nouvelle API par genre + +~reload.value; + +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; +) +``` + +**Section idempotente** : un Cmd+Enter applique tous les paramètres + reload, ne lance PAS de Routine, ne fait PAS de `.wait`. + +**Orchestrateur `_track.scd`** : + +```supercollider +// tracks/A_acid_journey/_track.scd +( +~track !? { ~track.stop }; +~track = Routine({ + var dir = thisProcess.nowExecutingPath.dirname; + (dir +/+ "01_minimal.scd").load; + 120.wait; + (dir +/+ "02_acid_rave.scd").load; + 120.wait; + (dir +/+ "03_detroit.scd").load; + 90.wait; + // ... + "[A] === fin ACID JOURNEY ===".postln; + ~masterFadeOut.(8); +}).play; +) +``` + +### `audio/` — ce qui était `live/` sans les SynthDef + +``` +audio/ +├── _index.scd +├── fx_bus.scd # ~fxBuses + ~send + ~setFx + ~fxPreset + ~addFx + +│ # ~lfo / ~lfoStop / ~tap (LFO sur params FX) +├── insert.scd # ~vcfOn / ~vcfOff / ~vcfSweep / ~vcfPreset +├── tricks.scd # ~drop, ~breakdown, ~buildup, ~stutter, ~glitch, +│ # ~freeze, ~tapeStop, ~tapeReverse, ~jumpCut, +│ # ~bitCrushNow, ~ringMod, ~freqShift, ~granFreeze, +│ # ~scratch, ~repeat, ~swap, ~reverbTail, ~handsUp, +│ # ~chokePerc, ~chokeLead +│ # + ~trickRoutines, ~trickStop, ~trickStopAll +├── lfo.scd # ~lfoTo, ~lfoSync, ~lfoStopVar, ~lfoStopAllVars, +│ # ~lfos dict, ~setVar, ~getVar, ~envSweep, ~envs +├── mixer.scd # ~setVol, ~mute, ~solo, ~mixPreset, ~saveMix, +│ # ~masterVol, ~masterFade, ~masterFadeOut, ~xfade +├── scenes.scd # ~saveScene, ~loadScene, ~listScenes, ~deleteScene +├── loops.scd # ~loopOn, ~loopOff, ~loopChain, ~loopFade +├── chains.scd # ~ch dict + ~chainRoutine + ~chStop + helpers +├── wrappers.scd # ~mAcid, ~mTrance, ~pAcid, ~fx, ~synth (généré +│ # dynamiquement depuis melodies/ patterns/ synth/ fx/) +└── panel.scd # ex live_fx_panel — IDE-only +``` + +**`engine.scd`** ne contient plus de SynthDef. Il garde uniquement `~reload`, les Pdef (avec Pfunc déjà appliqué post-fix RAM), `~scBus`, `~melodyBoost`. + +### `palette/` — banques compositionnelles + +``` +palette/ +├── _index.scd +├── scales.scd # 16 ~scaleXxx + ~genMelody + ~mutate +├── harmonics/ +│ ├── _index.scd +│ ├── helpers.scd # ~genThirdHarmony, ~genCounterMelody, ... +│ └── presets.scd # ~enableHarmony.(\third) -- 10 presets +├── chords_progressions.scd # ~progDetroit, ~progTrance, ... +├── timbres.scd # 26 ~timbreXxx -- L1-L26 +├── styles.scd # 5 ~styleXxx complets +├── fx_genre.scd # combos FX par genre +├── fills.scd # ex palette/rhythm/fills.scd +├── sequences.scd # ex palette/rhythm/sequences.scd +└── tweaks_template.scd +``` + +### `control/` (chemins jump.scd ajustés) + +``` +control/ +├── _index.scd +├── midi.scd # MIDIClient.init + mapping +├── jump.scd # ~jumpTo charge tracks/<X>/NN_section.scd +└── playlist.scd +``` + +`~jumpTo.(\A, \acid_rave)` ne contient plus une closure inline. Il fait : + +```supercollider +~jumpTo = { |trackLetter, slug| + var dir = ~base ++ "tracks/" ++ ~trackDir.(trackLetter); + var matches = PathName(dir).files + .select { |f| f.fileName.contains(slug.asString) }; + if (matches.notEmpty) { + ~track !? { ~track.stop; ~track = nil }; + matches.first.fullPath.load; // applique la section + } { "[JUMP] " ++ slug ++ " inexistante".postln }; +}; +``` + +## Nouvelle API live + +Les wrappers actuels `~kk/~mm/~ff/~cc/~p` et tous les sous-wrappers (`~mShort, ~mGen, ~kPat, ~fxDrop, ~chIntro, ~pKit`...) sont **supprimés**. Nouvelle API par genre, plus orthogonale. + +### Mélodies — `~mGenre.(N | nil | rnd)` + +```supercollider +~mAcid.(1) # applique ~mAcid1 -> ~melodyNotes + reload +~mAcid.() # random dans le dossier acid/ +~mTrance.(3) # applique ~mTrance3 +~mDnb.() # random dnb +~mList.(\acid) # liste les mélodies du genre acid +~mList.() # liste tous les genres et leurs counts +~mNext.() # mélodie suivante (dans le genre courant) +~mPrev.() # précédente +~mInst.(\warmPad) # change l'instrument melody +~mHarm.(\third) # 10 presets harmonie (\off \third \fifth ...) +``` + +### Patterns — `~pGenre.(\name)` + +```supercollider +~pAcid.(\house) # applique ~pAcidHouse (kick + hat + snare + bpm) +~pAcid.() # random dans patterns/genre/acid/ +~pTrance.(\trance138) +~pDubstep.(\classic) +~pKick.(\techno) # pattern kick seul +~pHat.(\offbeat) +~pSnare.(\two4) +~pList.(\acid) +``` + +### Synth — `~synth.(\group, \name)` + +```supercollider +~synth.(\drums, \kick) # info SynthDef +~melodyInst = \warmPad # change l'instrument actif +~kickInst = \kickGabber # change le kick (re-route Pdef) +~synthList.(\drums) # liste tous les drums +``` + +### FX — `~fx.(\type, \name, ...args)` + +```supercollider +~fx.(\bus, \rev, 0.4) # ~send vers reverb wet 0.4 +~fx.(\insert, \vcfMoog, 1500, 0.6) # active VCF Moog en chain +~fx.(\trick, \riser, 4) # oneshot riser dur=4s + +# Tricks scéniques (inchangés) +~drop.() +~breakdown.(8) +~buildup.(8) +~glitch.(2) +~stutter.(8, 1) +~freeze.() +~tapeStop.(2) +~tapeReverse.(4) +~jumpCut.(0.5) +``` + +### Chains — `~ch.(\name, ...args)` + +```supercollider +~ch.(\intro) +~ch.(\drop) +~ch.(\breakdown) +~ch.(\buildup, 8) +~ch.(\intro2drop, 4, 4) +~ch.(\dropToBreak, 8) +~ch.(\outroFade, 12) +~chStop.() +``` + +### Mixer / Scenes / Jump (inchangés) + +```supercollider +~setVol.(\kick, 0.8) +~mute.(\acid) ; ~solo.(\melody) +~mixPreset.(\drumsHeavy) +~masterVol.(0.7) ; ~masterFadeOut.(8) +~saveMix.(\verseA) +~saveScene.(\drop1) ; ~loadScene.(\drop1) +~jumpTo.(\A, \acid_rave) +``` + +### Génération dynamique des wrappers + +`audio/wrappers.scd` introspect les dossiers `melodies/`, `patterns/`, `synth/`, `fx/` au boot pour générer les helpers `~mAcid`, `~pTrance`, etc. Ajouter un nouveau genre = créer un dossier + un fichier dedans, l'API est mise à jour automatiquement au prochain `~setupAll`. + +## Plan de migration (7 phases) + +Chaque phase = 1 commit propre, testé, pushé. Si une phase fail, rollback de ce commit sans casser les précédents. + +| # | Phase | Risque | Tests E2E | +|---|---|---|---| +| 1 | **Extract SynthDef** : créer `synth/` et `fx/`, déplacer les 38+30 SynthDef. `engine.scd` perd ses SynthDef mais garde Pdef. Auto-glob `_index.scd`. | Bas | Tous doivent passer | +| 2 | **Renommer `live/` → `audio/`** + déplacer `palette/rhythm/{fills,sequences}.scd` → `palette/`. Ajuster `setup.scd`, `00_load.scd`, `_load.scd`, `web_bridge.scd`. | Moyen | Tous doivent passer | +| 3 | **Éclater mélodies** : `melodies/<genre>/m{N}.scd`. Mapping inverse depuis `~melodyBank`. Variables `~m{Genre}{N}`. Supprimer `palette/melodies/`. | Élevé | `e2e_05_melodies` réécrit | +| 4 | **Éclater patterns** : `patterns/<genre>/<name>.scd`. Variables `~p{Genre}{Name}`. Supprimer `palette/rhythm/{kicks,percussions,drum_kits,patterns_genre}.scd`. | Élevé | tests adaptés | +| 5 | **Éclater tracks** : 23 dossiers `tracks/<X>_<slug>/{_track.scd, NN_section.scd}`. Section files autonomes. `_track.scd` orchestrateur. | Élevé | `e2e_09_tracks` adapté + `e2e_10_timestamps` adapté | +| 6 | **Nouvelle API live** : `audio/wrappers.scd` génère `~mAcid/~pAcid/~fx/~synth` dynamiquement. Réécrit `01_live.scd` + `web_bridge.scd` + `web/public/control/app.js` (chips dynamiques via `/api/genres`). Supprime ancienne API. | Très élevé | `e2e_08_live` réécrit | +| 7 | **Nettoyage** : suppression `_archive/` legacy, mise à jour `CLAUDE.md`, `README.md`, skills, `tests/CLAUDE.md`. Commit final tag `v2.0`. | Bas | Tous doivent passer | + +## Acceptance criteria + +- `bash tests/run_all.sh` retourne 10/10 PASS +- `awk balance` P:0 B:0 sur tous les `.scd` +- Boot complet via `(~base ++ "00_load.scd").load` → `~check.value` reporte tout `[OK]` +- `01_live.scd` Cmd+Enter sur chaque bloc fonctionne (transport, mixer, mélodies, patterns, FX, tricks, chains, scenes, jump) +- Web surface : sliders/chips fonctionnent (genres dynamiques chargés depuis `/api/genres`) +- Track A `_track.scd` Cmd+Enter joue l'intégralité, ET chaque section individuelle Cmd+Enter applique ses params +- `~jumpTo.(\A, \acid_rave)` charge `tracks/A_acid_journey/02_acid_rave.scd` au runtime +- Aucune fuite RAM scsynth/sclang après 30 min de session +- Documentation : root CLAUDE.md + nested CLAUDE.md dans chaque nouveau dossier + +## Risques identifiés et mitigation + +| Risque | Mitigation | +|---|---| +| Mélodie présente dans plusieurs genres → mauvais classement | Mapping inverse depuis `~melodyBank` actuel + arbitre par genre dominant ; possibilité de la dupliquer manuellement après si dissonance | +| Web surface (`web/public/control/app.js`) hardcoded sur l'ancienne API | Phase 6 inclut endpoint `GET /api/genres` qui scanne `melodies/` et `patterns/` ; les chips JS sont rendues dynamiquement | +| Tests E2E qui hardcodent les anciens chemins (`palette/melodies/short.scd`) | Adapter chaque test E2E dans la phase qui change ses chemins. `e2e_05`, `e2e_09`, `e2e_10` impactés | +| `~jumpTo` actuel utilise des closures inline dans `control/jump.scd` | Phase 5 réécrit `~jumpTo` pour `.load` dynamique d'un fichier section | +| Boot lent à cause de 200+ `.load` séquentiels | Mesurer après phase 1. Si > 5s, batcher ou paralléliser via `Task` | +| Dépendances non triviales entre `synth/` et `palette/` (ex: scales lues par certains SynthDef) | Aucune actuellement (les SynthDef sont autonomes), mais à valider phase 1 | + +## Notes complémentaires + +- Le pattern `Pfunc { ~xxx }` introduit en commit `62e10b3` (fix RAM LFO+VCF) reste appliqué — la migration ne le touche pas +- Le pattern `~trickRoutines` introduit en commit `c4f17fd` reste appliqué dans `audio/tricks.scd` +- `~crossfadeFxRoutine` et `~chainRoutine` (commit `5f96d57`) restent appliqués dans `audio/fx_bus.scd` et `audio/chains.scd` +- L'auto-launch web (commit `afaa072`) reste dans `web_bridge.scd` + +--- + +**Statut** : design approuvé section par section. Prochaine étape : génération du plan d'implémentation détaillé via la skill `superpowers:writing-plans`. diff --git a/sound_algo/engine.scd b/sound_algo/engine.scd new file mode 100644 index 0000000..00cd301 --- /dev/null +++ b/sound_algo/engine.scd @@ -0,0 +1,280 @@ +// ===================================================================== +// engine.scd -- Moteur (SynthDef + helpers + Pdef + master limiter) +// +// USAGE +// 1. Cmd+Entree sur le bloc SETUP (une fois par session) +// 2. Cmd+Entree sur le bloc PLAY pour lancer le beat +// 3. Charger separement : presets.scd, tweaks.scd, tracks/*.scd +// 4. Cmd+Entree sur STOP en bas pour couper +// ===================================================================== + +// 1. SETUP -- evalue UNE FOIS au demarrage de la session +// ===================================================================== +( +s.waitForBoot { + + // ----- Acid 303 ----- + // Env ADSR sur l'amp avec doneAction:2 -- garanti pas de fuite + // memoire meme si on l'utilise dans un Pbind classique. Avec + // PmonoArtic legato<1, le release (50ms) ne finit jamais avant + // le retrigger -> le synth reste vivant et le slide fonctionne. + + + // ----- Kick (rond, sub-charge, click discret + sidechain out) ----- + + + // ----- Hi-hat ----- + + + // ----- Lead melody (saw+pulse detunes + chorus stereo + LPF) ----- + + + // ----- Pad (super-saw 5 voix detunes + chorus + LPF) ----- + + + // ----- Pluck (Karplus-Strong, decay naturel) ----- + + + // ----- FM Bell DUBSTEP -- wobble + sub + detune + saturation ----- + // Inspire des growl/wobble dubstep : RLPF resonant module par LFTri + // (wobble), 2 voix detunees, sub-bass parallele, distortion lourde. + + + // ----- Stab (court, saw + saturation pour Detroit) ----- + + + // ----- Saw3 (3 saws empilees, octaves -1/0/+1) ----- + + + // ----- Snare (tone + bruit blanc filtre) ----- + + + // ----- Clap (4 attaques rapides puis tail) ----- + + + // ----- Riser (bruit qui monte sur N secondes) ----- + // Courbe \sin (qui supporte zero) -- \exp + valeur 0 = NaN + // qui silenciait tout le bus. + + + // ----- Impact (boom + reverse hit, marque les drops) ----- + + + // ----- Open hat (cymbale ouverte, decay long) ----- + + + // ----- Crash cymbal ----- + + + // ----- Tom (drum tone melodique) ----- + + + // ----- Rim shot (clic metallique court) ----- + + + // ----- Cowbell ----- + + + // ----- Reese bass (2 saws detunes filtres -- DnB / dubstep) ----- + + + // ----- 808 bass (trap-style sub avec pitch glide) ----- + + + // ----- Sweep down (l'inverse du riser, descend) ----- + + + // ----- Vinyl noise (texture continue, ambiance) ----- + + + // ----- Master limiter ----- + + + s.sync; + + // ----- Bus de sidechain (control) ---------------------------- + // Le kick ecrit son enveloppe sur ce bus, acid + lead lisent et + // duckent leur sortie -> mix techno qui pompe sur le kick. + ~scBus !? { ~scBus.free }; + ~scBus = Bus.control(s, 1); + + // ----- Master limiter en queue de groupe --------------------- + ~masterLim !? { ~masterLim.free }; + ~masterLim = Synth.tail(s.defaultGroup, \masterLim); + + // ----- Patterns par defaut ----------------------------------- + ~bpm = 132; + ~acidNotes = [ 36, 36, 48, 36, 39, 36, 43, 39, + 36, 41, 36, 39, 43, 36, 36, 41 ]; + ~acidAccents = [ 1, 0, 0, 0, 1, 0, 1, 0, + 0, 1, 0, 0, 1, 0, 0, 1 ]; + ~acidSlides = [ 0, 0, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0 ]; + ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; + ~hatSteps = [ 0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0 ]; + ~snareSteps = (0 ! 16); + ~snareAmp = 0.45; + ~snareFreq = 200; ~snareNoiseAmt = 0.6; ~snareDecay = 0.13; + // Percussions secondaires + ~clapSteps = (0 ! 16); ~clapAmp = 0.35; + ~percSteps = (0 ! 16); ~percAmp = 0.25; ~percInst = \rim; // \rim | \cowbell | \tom | \openHat + ~tomFreq = 110; ~cowbellFreq = 800; + ~melodyNotes = [ + 60, 0, 67, 0, 70, 0, 67, 65, + 63, 0, 60, 0, 0, 67, 70, 72, + 75, 0, 72, 70, 67, 0, 0, 65, + 63, 60, 0, 67, 70, 0, 72, 0 + ]; + + // ----- Parametres de timbre ---------------------------------- + ~acidCutoff = 800; ~acidRq = 0.15; ~acidCutoffEnv = 3500; + ~acidDrive = 2.5; ~acidAmp = 0.32; + ~kickAmp = 0.5; + ~kickFreq = 55; // frequence fondamentale (45=sub, 55=normal, 70=punchy) + ~kickPitchAmt = 3.0; // ratio du drop initial (2=soft, 3=normal, 5=snappy) + ~kickDecay = 0.32; // duree (0.18=tight, 0.32=normal, 0.6=boomy) + ~kickDrive = 1.3; // saturation (1.0=clean, 1.5=normal, 3.0=distort) + ~kickClick = 0.2; // amplitude du click HF (0=rond, 0.4=claquant) + ~hatAmp = 0.18; + ~melodyInst = \lead; // \lead | \pad | \pluck | \fmBell | \stab | \saw3 + ~melodyBoost = 1.6; // multiplicateur global du volume melodie + ~melodyCutoff = 2400; ~melodyRq = 0.5; ~melodyAmp = 0.16; + ~melodyDrive = 1.2; ~melodyAttack = 0.012; ~melodyRelease = 0.25; + ~melodySawAmt = 0.6; ~melodyDetune = 0.006; + // Specifique fmBell dubstep + ~melodyWobbleRate = 4; // Hz (4=1/8 a 120BPM, 8=1/16, 2=1/4) + ~melodyWobbleDepth = 1800; // ouverture du wobble en Hz + ~melodyWobbleShape = 0; // 0 = LFTri smooth, 1 = LFPulse chop + ~melodySubAmt = 0.85; // sub fmBell (0.85 = MASSIF) + + // ----- 2e voix melodique (harmony / counter-melody) ---------- + ~harmonyInst = \pad; // synth pour la 2e voix + ~harmonyNotes = (0 ! 32); // muet par defaut + ~harmonyCutoff = 1800; ~harmonyRq = 0.6; + ~harmonyAttack = 0.05; ~harmonyDecay = 0.15; + ~harmonySustain = 0.6; ~harmonyRelease = 0.5; + ~harmonyDrive = 1.2; ~harmonyAmp = 0.14; + ~harmonyDur = 0.25; // 0.25 = 1/16 ; 0.5 = 1/8 ; 0.125 = 1/32 + ~harmonyDetune = 0.006; ~harmonySawAmt = 0.6; + + // Sidechain : amount par voix (0 = pas de duck, 1 = mute total sur kick) + ~acidScAmt = 0.7; // l'acid pompe fort sur le kick + ~leadScAmt = 0.5; // le lead pompe modere + ~kickScShape = 0.18; // duree de l'env sidechain (s) + + // ----- Reload : reconstruit les 4 Pdef depuis les variables -- + ~reload = { + // Guards : les Pseq plantent si on leur passe nil/array vide. + // On force une valeur par defaut pour chaque variable de pattern. + if (~kickSteps.isNil or: { ~kickSteps.isEmpty }) { ~kickSteps = (0 ! 16) }; + if (~hatSteps.isNil or: { ~hatSteps.isEmpty }) { ~hatSteps = (0 ! 16) }; + if (~snareSteps.isNil or: { ~snareSteps.isEmpty }) { ~snareSteps = (0 ! 16) }; + if (~clapSteps.isNil or: { ~clapSteps.isEmpty }) { ~clapSteps = (0 ! 16) }; + if (~percSteps.isNil or: { ~percSteps.isEmpty }) { ~percSteps = (0 ! 16) }; + if (~acidNotes.isNil or: { ~acidNotes.isEmpty }) { ~acidNotes = [36] }; + if (~acidAccents.isNil or: { ~acidAccents.isEmpty }) { ~acidAccents = [0] }; + if (~acidSlides.isNil or: { ~acidSlides.isEmpty }) { ~acidSlides = [0] }; + if (~melodyNotes.isNil or: { ~melodyNotes.isEmpty }) { ~melodyNotes = (0 ! 32) }; + if (~harmonyNotes.isNil or: { ~harmonyNotes.isEmpty }) { ~harmonyNotes = (0 ! 32) }; + // Amps / params scalaires : default 0 evite NaN + ~kickAmp = ~kickAmp ? 0; ~hatAmp = ~hatAmp ? 0; + ~snareAmp = ~snareAmp ? 0; ~clapAmp = ~clapAmp ? 0; + ~percAmp = ~percAmp ? 0; ~acidAmp = ~acidAmp ? 0; + ~melodyAmp = ~melodyAmp ? 0; ~harmonyAmp = ~harmonyAmp ? 0; + ~melodyBoost = ~melodyBoost ? 1; ~harmonyDur = ~harmonyDur ? 0.25; + // Pan defaults (utilises par ~autoPan -- Pfunc dynamique ci-dessous) + ~acidPan = ~acidPan ? 0; + ~melodyPan = ~melodyPan ? 0; + ~harmonyPan = ~harmonyPan ? 0; + Pdef(\kickSeq, Pbind( + \instrument, \kick, \dur, 0.25, + \amp, Pseq(~kickSteps.collect { |s| s * ~kickAmp }, inf), + \freq, Pfunc { ~kickFreq }, \pitchAmt, Pfunc { ~kickPitchAmt }, + \decay, Pfunc { ~kickDecay }, \drive, Pfunc { ~kickDrive }, \click, Pfunc { ~kickClick }, + \scBus, ~scBus.index, \scShape, Pfunc { ~kickScShape }, + )); + Pdef(\hatSeq, Pbind( + \instrument, \hat, \dur, 0.25, + \amp, Pseq(~hatSteps.collect { |s| s * ~hatAmp }, inf), + )); + Pdef(\snareSeq, Pbind( + \instrument, \snare, \dur, 0.25, + \amp, Pseq(~snareSteps.collect { |s| s * ~snareAmp }, inf), + \freq, Pfunc { ~snareFreq }, \noiseAmt, Pfunc { ~snareNoiseAmt }, \decay, Pfunc { ~snareDecay }, + )); + Pdef(\clapSeq, Pbind( + \instrument, \clap, \dur, 0.25, + \amp, Pseq(~clapSteps.collect { |s| s * ~clapAmp }, inf), + )); + Pdef(\percSeq, Pbind( + \instrument, ~percInst, \dur, 0.25, + \amp, Pseq(~percSteps.collect { |s| s * ~percAmp }, inf), + \freq, Pfunc { if (~percInst == \tom) { ~tomFreq } { ~cowbellFreq } }, + )); + Pdef(\acidSeq, PmonoArtic(\acid, + \dur, 0.25, + \legato, 0.85, + \midinote, Pseq(~acidNotes, inf), + \accent, Pseq(~acidAccents, inf), + \slideTime, Pseq(~acidSlides.collect { |s| if(s == 1) {0.12} {0.005} }, inf), + \cutoff, Pfunc { ~acidCutoff }, + \cutoffEnv, Pfunc { ~acidCutoffEnv }, + \rq, Pfunc { ~acidRq }, + \drive, Pfunc { ~acidDrive }, + \amp, Pfunc { ~acidAmp }, + \pan, Pfunc { ~acidPan ? 0 }, + \scBus, ~scBus.index, // lit le sidechain + \scAmt, Pfunc { ~acidScAmt }, + )); + Pdef(\melodySeq, Pbind( + \instrument, ~melodyInst, \dur, 0.25, + \legato, 0.9, + \type, Pseq(~melodyNotes.collect { |n| if(n > 0) { \note } { \rest } }, inf), + \midinote, Pseq(~melodyNotes.collect { |n| if(n > 0) { n } { 60 } }, inf), + \cutoff, Pfunc { ~melodyCutoff }, + \rq, Pfunc { ~melodyRq }, + \attack, Pfunc { ~melodyAttack }, + \release, Pfunc { ~melodyRelease }, + \drive, Pfunc { ~melodyDrive }, + \sawAmt, Pfunc { ~melodySawAmt }, + \detune, Pfunc { ~melodyDetune }, + \wobbleRate, Pfunc { ~melodyWobbleRate }, // pour fmBell + \wobbleDepth, Pfunc { ~melodyWobbleDepth }, + \wobbleShape, Pfunc { ~melodyWobbleShape }, + \subAmt, Pfunc { ~melodySubAmt }, + \amp, Pfunc { ~melodyAmp * ~melodyBoost }, + \pan, Pfunc { ~melodyPan ? 0 }, + \scBus, ~scBus.index, + \scAmt, Pfunc { ~leadScAmt }, + )); + // 2e voix : peut tourner en parallele avec une duree differente + // (32th, 16th, 8th) pour creer du contrepoint / phasing + Pdef(\harmonySeq, Pbind( + \instrument, ~harmonyInst, \dur, Pfunc { ~harmonyDur }, + \legato, 0.9, + \type, Pseq(~harmonyNotes.collect { |n| if(n > 0) { \note } { \rest } }, inf), + \midinote, Pseq(~harmonyNotes.collect { |n| if(n > 0) { n } { 60 } }, inf), + \cutoff, Pfunc { ~harmonyCutoff }, + \rq, Pfunc { ~harmonyRq }, + \attack, Pfunc { ~harmonyAttack }, + \decay, Pfunc { ~harmonyDecay }, + \sustain, Pfunc { ~harmonySustain }, + \release, Pfunc { ~harmonyRelease }, + \drive, Pfunc { ~harmonyDrive }, + \detune, Pfunc { ~harmonyDetune }, + \sawAmt, Pfunc { ~harmonySawAmt }, + \amp, Pfunc { ~harmonyAmp * ~melodyBoost }, + \pan, Pfunc { ~harmonyPan ? 0 }, + \scBus, ~scBus.index, + \scAmt, Pfunc { ~leadScAmt }, + )); + }; + + // ----- ~enableHarmony : voir palette/harmonics/presets.scd --- + // ----- Scales + helpers : voir palette/scales.scd ------------ + // (charges automatiquement par 00_load.scd > CHARGER TOUT) + + "=== setup OK -- lance le bloc PLAY ===".postln; +}; +) + diff --git a/sound_algo/examples/00_index.scd b/sound_algo/examples/00_index.scd new file mode 100644 index 0000000..2358de9 --- /dev/null +++ b/sound_algo/examples/00_index.scd @@ -0,0 +1,60 @@ +// ===================================================================== +// examples/00_index.scd -- Index des exemples de workflow +// +// CONVENTION +// Chaque fichier de ce dossier est un mini-tutoriel a executer +// bloc par bloc dans l'IDE SuperCollider (Cmd+Entree sur chaque +// parenthese top-level). Il N'EST PAS charge via .load -- on +// avance manuellement, en lisant les commentaires. +// +// PARCOURS RECOMMANDE pour decouvrir le projet +// 01_quickstart.scd Premier "Hello world" sonore (debutant) +// 02_first_track.scd Lancer une track autonome (debutant) +// 04_filter_lfo_vcf.scd LFO + VCF -- la base du modular live +// 06_drum_kits_sequences.scd Macros rapides pour kits + sequences +// 07_loops_manager.scd Gestionnaire de boucles propre +// 09_scenes_recall.scd Save / recall snapshots +// 11_playlist_auto.scd Lancer une session sans rien faire +// +// CATALOGUE COMPLET +// 01_quickstart.scd (debutant) Premier demarrage +// 02_first_track.scd (debutant) Track autonome A +// 03_multi_melody_tracks.scd (intermediaire) Multi-pistes melodiques +// 04_filter_lfo_vcf.scd (intermediaire) LFO + VCF master +// 05_drops_breakdowns_buildups (intermediaire) Tricks scéniques +// 06_drum_kits_sequences.scd (debutant) Drum kits + sequences pretes +// 07_loops_manager.scd (intermediaire) loops.scd workflow +// 08_jump_sections.scd (intermediaire) Naviguer dans les tracks +// 09_scenes_recall.scd (intermediaire) Snapshot / recall +// 10_midi_controller.scd (avance) Setup controller MIDI +// 11_playlist_auto.scd (debutant) Playlist auto + controles +// 12_chord_progressions.scd (intermediaire) ~progXxx + chordsToMelody +// 13_world_ethno.scd (intermediaire) Workflow oriental/asia +// 14_fx_chains_dynamic.scd (avance) FX bus + LFO sur params FX +// 15_full_live_set.scd (avance) Set live 30 minutes complet +// ===================================================================== + + +// --- Ouvrir tous les exemples dans l'IDE ----------------------------- +( +var root = if (thisProcess.nowExecutingPath.notNil) { thisProcess.nowExecutingPath.dirname } { "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/examples" }; +[ + "01_quickstart.scd", + "02_first_track.scd", + "03_multi_melody_tracks.scd", + "04_filter_lfo_vcf.scd", + "05_drops_breakdowns_buildups.scd", + "06_drum_kits_sequences.scd", + "07_loops_manager.scd", + "08_jump_sections.scd", + "09_scenes_recall.scd", + "10_midi_controller.scd", + "11_playlist_auto.scd", + "12_chord_progressions.scd", + "13_world_ethno.scd", + "14_fx_chains_dynamic.scd", + "15_full_live_set.scd", +].do { |path| + Document.open(root +/+ path); +}; +) diff --git a/sound_algo/examples/01_quickstart.scd b/sound_algo/examples/01_quickstart.scd new file mode 100644 index 0000000..44fb89d --- /dev/null +++ b/sound_algo/examples/01_quickstart.scd @@ -0,0 +1,92 @@ +// ===================================================================== +// examples/01_quickstart.scd -- Premier demarrage +// +// TITRE : Hello, sound_algo +// DUREE : ~2 minutes +// NIVEAU : debutant +// PREREQUIS : aucun (on charge tout depuis ce fichier) +// +// BUT +// - Lancer le moteur complet (engine + synthdefs + helpers + live/*) +// - Demarrer un beat techno minimal (kick + hat + acid) +// - Modifier 2-3 parametres en live +// - Stopper proprement +// +// Chaque parenthese (...) ci-dessous est un bloc independant. Pose +// ton curseur dedans, Cmd+Entree pour evaluer. Avance bloc par bloc. +// ===================================================================== + + +// --- [etape 1] CHARGER TOUT (~5s, attend que le serveur boote) ------ +// Reproduit exactement le bloc CHARGER TOUT de 00_load.scd : charge +// engine + synthdefs + scales + melodies + harmonics + setup, puis +// appelle ~setupAll.() qui boote le serveur et charge fx_bus + live +// + mixer + scenes + loops + fills + sequences + jump. Termine par +// un ~check.() qui rapporte l'etat de chaque module. +( +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +(~base ++ "engine.scd").load; +(~base ++ "synth/_index.scd").load; +(~base ++ "fx/_index.scd").load; +(~base ++ "palette/scales.scd").load; +(~base ++ "palette/melodies/index.scd").load; +(~base ++ "palette/harmonics/index.scd").load; +(~base ++ "setup.scd").load; +~setupAll.(); +"=== CHARGEMENT EN COURS -- attendre la fin du boot et le ~check final ===".postln; +) + + +// --- [etape 2] PLAY -- lance les 8 sequenceurs Pdef ------------------- +// Reproduit le bloc PLAY DEFAULT de 00_load.scd. +// Attendre que le bloc precedent ait fini son boot (3-5s) et que tu +// voies "=== setupAll DONE ===" dans le post window. +( +TempoClock.default.tempo = ~bpm / 60; +~reload.value; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; +"=== PLAY ===".postln; +) +// >> Tu dois entendre kick + hat + acid 303. Laisse tourner 30s. + + +// --- [etape 3] TWEAK 1 : monter le volume du kick -------------------- +// ~kickAmp est une variable globale. Apres modif, ~reload.value +// reconstruit les Pdef avec la nouvelle valeur. +( +~kickAmp = 0.7; // defaut 0.5 +~reload.value; +("kickAmp = " ++ ~kickAmp).postln; +) + + +// --- [etape 4] TWEAK 2 : ouvrir le filtre de la melodie ------------- +// ~melodyCutoff = frequence de coupure du LPF de la voix melody. +( +~melodyCutoff = 5000; // defaut 2400, plus haut = plus brillant +~reload.value; +("melodyCutoff = " ++ ~melodyCutoff).postln; +) + + +// --- [etape 5] TWEAK 3 : changer le BPM ------------------------------- +( +~bpm = 140; +TempoClock.default.tempo = ~bpm / 60; +("bpm = " ++ ~bpm).postln; +) + + +// --- [etape 6] STOP -- coupe les sequenceurs -------------------------- +( +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) + + +// --- [etape 7] ARRET TOTAL (libere tout proprement) ------------------- +// ~teardown.() vient de setup.scd : stop tous les Pdef/routines/LFO, +// libere ~masterLim + ~scBus + bus FX. A faire quand tu veux quitter. +( ~teardown.(); ) diff --git a/sound_algo/examples/02_first_track.scd b/sound_algo/examples/02_first_track.scd new file mode 100644 index 0000000..f350ffc --- /dev/null +++ b/sound_algo/examples/02_first_track.scd @@ -0,0 +1,76 @@ +// ===================================================================== +// examples/02_first_track.scd -- Lancer ta premiere track +// +// TITRE : Track A "Acid Journey" en autopilot +// DUREE : ~7 minutes (la duree complete de la track) +// NIVEAU : debutant +// PREREQUIS : evaluer CHARGER TOUT dans 00_load.scd +// +// BUT +// - Charger une track autonome (tracks/A_acid_journey.scd) +// - La lancer via le bloc principal de la track +// - Tweaker quelques params pendant qu'elle joue +// - Stop avec ~track.stop +// ===================================================================== + + +// --- [etape 1] Verifier que le moteur est charge -------------------- +// Si tu vois "engine pas charge", retourne dans 00_load.scd et +// evalue CHARGER TOUT. +( +if (~reload.isNil) { + "!!! engine pas charge -- evalue CHARGER TOUT dans 00_load.scd".postln; +} { + "engine OK -- pret a lancer la track".postln; +}; +) + + +// --- [etape 2] Charger le fichier de la track ----------------------- +// .load ne fait QUE definir ~track (Routine), il ne lance rien. +// Ouvre tracks/A_acid_journey.scd dans l'IDE pour voir le code. +( +(~base ++ "tracks/A_acid_journey.scd").load; +) +// -- attendre le post "[A 0:00]" : il indique que la track a demarre. +// ATTENTION : load() execute le contenu, donc la Routine .play est +// declenche. La track joue maintenant. + + +// --- [etape 3] (optionnel) Si tu prefere demarrer manuellement ------ +// Ouvre tracks/A_acid_journey.scd, place ton curseur dans le bloc +// commencant par "( ~track !? { ~track.stop }; ~track = Routine({" +// et fais Cmd+Entree. C'est exactement ce que .load fait. + + +// --- [etape 4] TWEAK pendant que la track joue ----------------------- +// La track a sa propre logique, mais tu peux toujours surcharger +// les variables globales. Ton override tient jusqu'au prochain +// "passage" interne de la track qui les reecrit. + +// Boost le volume kick pendant la section acid rave +( ~kickAmp = 0.75; ~reload.value; "kickAmp boost".postln; ) + +// Casser la melodie : nouveau pattern aleatoire dans une scale +( ~melodyNotes = ~genMelody.(0.6, ~scaleMinorPent); ~reload.value; ) + +// Ajouter une harmonie a la tierce par-dessus +( ~enableHarmony.(\third); ) + +// Acidifier le filtre acid (resonance up) +( ~acidRq = 0.08; ~acidCutoffEnv = 5500; ~reload.value; ) + + +// --- [etape 5] STOP de la track -------------------------------------- +// ~track.stop arrete la Routine ; les Pdef continuent de jouer +// le dernier etat. Pour TOUT couper, voir [etape 6]. +( ~track !? { ~track.stop; "track stoppee".postln }; ) + + +// --- [etape 6] STOP complet (sequenceurs + track) ------------------- +( +~track !? { ~track.stop }; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP COMPLET ===".postln; +) diff --git a/sound_algo/examples/03_multi_melody_tracks.scd b/sound_algo/examples/03_multi_melody_tracks.scd new file mode 100644 index 0000000..5498d43 --- /dev/null +++ b/sound_algo/examples/03_multi_melody_tracks.scd @@ -0,0 +1,102 @@ +// ===================================================================== +// examples/03_multi_melody_tracks.scd -- Multi-pistes melodiques +// +// TITRE : Plusieurs voix melodiques en parallele +// DUREE : ~5 minutes +// NIVEAU : intermediaire +// PREREQUIS : CHARGER TOUT dans 00_load.scd (charge melodies/index.scd +// qui charge tracks.scd avec ses 3 pistes par defaut) +// +// BUT +// Le moteur a UNE voix melody (\melodySeq). Ce systeme s'AJOUTE +// en parallele : chaque piste \m1, \m2, \m3 a son propre Pdef +// independant + Event de parametres dans ~mel[\name]. +// +// Helpers : ~melTrackOn / Off / Set / Solo / Harm / List +// ===================================================================== + + +// --- [etape 1] Setup de base -- demarrer la rythmique -------------- +// On garde le kick + hat du moteur, on coupe la melodie LEGACY (\melodySeq) +// pour que les nouvelles pistes soient seules a faire de la melodie. +( +~kickAmp = 0.55; ~hatAmp = 0.18; +~melodyAmp = 0; // mute la melodie legacy +~reload.value; +[\kickSeq, \hatSeq].do { |k| Pdef(k).play }; +"rythmique en place -- prochaine etape : ~melTrackOn".postln; +) + + +// --- [etape 2] Lancer la piste m1 (lead pad par defaut) ------------- +// m1 est preconfigure avec ~m1 (32 notes, scale minor pent). +( ~melTrackOn.(\m1); ) + + +// --- [etape 3] Changer l'instrument de m1 -- warmPad --------------- +// ~melTrackSet rebuild le Pdef automatiquement. +( ~melTrackSet.(\m1, \inst, \warmPad); ) + + +// --- [etape 4] Changer la melodie de m1 -- on prend ml5 (64 pas) --- +// ml5 est une melodie longue de 64 pas (palette/melodies/long.scd). +// .copy car on ne veut pas que les futures mutations modifient ~ml5. +( ~melTrackSet.(\m1, \notes, ~ml5.copy); ) + + +// --- [etape 5] Lancer la piste m2 (counter pluck) ------------------- +// m2 est preconfiguree pluck pan -0.3 (cote gauche). +( ~melTrackOn.(\m2); ) + + +// --- [etape 6] Changer m2 en pluck rapide -------------------------- +// On peut empiler les ~melTrackSet. +( +~melTrackSet.(\m2, \inst, \pluck); +~melTrackSet.(\m2, \dur, 0.125); // 1/32 (rapide) +~melTrackSet.(\m2, \pan, -0.5); +) + + +// --- [etape 7] Generer une harmonie automatique sur m1 ------------- +// ~melTrackHarm.(source, dest, preset) cree une nouvelle piste +// "harm1" derivee de m1, harmonisee a la tierce. +// Presets : \third \fifth \counter \arp \chord \tranceLayer ... +( ~melTrackHarm.(\m1, \harm1, \third); ) + +// (variante) harmonie a la quinte au lieu de la tierce +// ( ~melTrackHarm.(\m1, \harm1, \fifth); ) + + +// --- [etape 8] Solo / Unsolo (mute toutes sauf une) ----------------- +( ~melTrackSolo.(\m1); ) // seule m1 est audible +// -- attendre 8 secondes +( ~melTrackUnsolo.(); ) + + +// --- [etape 9] Lister toutes les pistes actives --------------------- +( ~melTrackList.(); ) + + +// --- [etape 10] Tirer une melodie aleatoire par genre -------------- +// Exemple : trance pour m1, oriental pour m2. +( ~melTrackByGenre.(\m1, \trance); ) +( ~melTrackByGenre.(\m2, \oriental); ) + + +// --- [etape 11] Stop des pistes melodiques -------------------------- +( +~melTrackOff.(\m1); +~melTrackOff.(\m2); +~melTrackOff.(\harm1); +"melodic tracks OFF".postln; +) + + +// --- [etape 12] STOP complet (rythmique aussi) --------------------- +( +~melTrackChoke.(); // stop TOUTES les pistes melodiques +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP COMPLET ===".postln; +) diff --git a/sound_algo/examples/04_filter_lfo_vcf.scd b/sound_algo/examples/04_filter_lfo_vcf.scd new file mode 100644 index 0000000..1f4182d --- /dev/null +++ b/sound_algo/examples/04_filter_lfo_vcf.scd @@ -0,0 +1,117 @@ +// ===================================================================== +// examples/04_filter_lfo_vcf.scd -- Filtres et modulations +// +// TITRE : LFO sur variables + VCF master en chaine +// DUREE : ~5 minutes +// NIVEAU : intermediaire +// PREREQUIS : CHARGER TOUT (00_load.scd) PUIS evaluer le SETUP +// de live.scd (premier bloc top-level "(...)" du fichier) +// +// CONCEPTS +// - ~lfoTo modulation par LFO d'une variable d'environnement +// (rebuild les Pdef en boucle) +// - VCF master : un Synth qui filtre tout le bus 0 avant le +// master limiter. Reproduit un SH-101, MS-20, Moog, formant... +// +// Si tu vois "~lfoTo is not defined", c'est que live.scd n'a pas +// ete charge -- ouvre live.scd et evalue son SETUP. +// ===================================================================== + + +// --- [etape 0] Verification ---------------------------------------- +( +if (~lfoTo.isNil) { + "!!! live.scd pas charge -- ouvre live.scd et evalue son SETUP".postln; +} { + "live.scd OK".postln; +}; +) + + +// --- [etape 1] Demarrer un beat techno minimal --------------------- +( +~kickAmp = 0.55; ~hatAmp = 0.18; ~acidAmp = 0.32; ~melodyAmp = 0.16; +~melodyInst = \saw3; +~reload.value; +[\kickSeq, \hatSeq, \acidSeq, \melodySeq].do { |k| Pdef(k).play }; +"beat lance -- pret pour les LFO".postln; +) + + +// --- [etape 2] LFO sin sur le cutoff de la melodie ------------------ +// ~lfoTo.(\param, rateHz, depth, shape, center) +// param = nom de variable d'environnement (sans tilde) +// rate = Hz (0.5 = lent, 4 = rapide) +// depth = amplitude de modulation (additionnee a center) +// shape = \sin \tri \saw \sqr \rand \smoothRand \drunk \noise +// center = valeur centrale (autour de laquelle le LFO oscille) +( ~lfoTo.(\melodyCutoff, 0.5, 1500, \sin, 2500); ) +// -- la melodie respire (cutoff oscille entre 1000 et 4000 Hz). +// Laisser tourner 30s. + + +// --- [etape 3] LFO sqr sur l'ampli acid (gate rythmique) ------------ +// shape \sqr cree un gate on/off rapide => effet trance gate. +( ~lfoTo.(\acidAmp, 4, 0.4, \sqr, 0.5); ) + + +// --- [etape 4] LFO drunk sur le BPM (subtile derive) ---------------- +// shape \drunk fait un random walk lent (jamais de saut brutal). +( ~lfoTo.(\bpm, 0.1, 8, \drunk, 132); ) +// -- BPM oscille entre 124 et 140 lentement. + + +// --- [etape 5] STOP les LFO un par un ------------------------------ +( ~lfoStopVar.(\melodyCutoff); ) +( ~lfoStopVar.(\acidAmp); ) +( ~lfoStopVar.(\bpm); ) +// ou TOUT couper d'un coup : +// ( ~lfoStopAllVars.(); ) + + +// --- [etape 6] VCF master Moog -- filtre tout le mix ---------------- +// ~vcfOn.(\type, freq, q) +// types : \moog \ms20 \ladder \formant \comb \hpf \bpf \notch +( ~vcfOn.(\moog, 800, 0.4); ) +// -- on entend une coupure douce ; tout le mix est plus sombre. + + +// --- [etape 7] Sweep automatique du cutoff (8s) -------------------- +// ~vcfSweep.(fromHz, toHz, dur, curve) +( ~vcfSweep.(8000, 200, 8); ) +// -- fait une descente filtre 8000 -> 200 Hz sur 8s. Effet "filter close". + + +// --- [etape 8] Couper le VCF (signal redevient brillant) ------------ +( ~vcfOff.(); ) + + +// --- [etape 9] VCF formant -- voyelle 'a' -------------------------- +// Pour le formant, freq = INDICE de voyelle (0=a 1=e 2=i 3=o 4=u), +// q = resonance (0.05 a 1). +( ~vcfOn.(\formant, 0, 0.3); ) // 'a' large + +// changer en voyelle 'i' (plus aigue) +( ~vcfSet.(\vowel, 2); ) + +// arreter +( ~vcfOff.(); ) + + +// --- [etape 10] Preset VCF acid (Moog 600Hz, q tres haute) --------- +( ~vcfPreset.(\acid); ) + +// preset deep, dub, bright, dark, formantA-U +( ~vcfPreset.(\dub); ) +( ~vcfPreset.(\bright); ) +( ~vcfOff.(); ) + + +// --- [etape 11] STOP global ----------------------------------------- +( +~lfoStopAllVars.(); +~vcfOff.(); +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) diff --git a/sound_algo/examples/05_drops_breakdowns_buildups.scd b/sound_algo/examples/05_drops_breakdowns_buildups.scd new file mode 100644 index 0000000..8271737 --- /dev/null +++ b/sound_algo/examples/05_drops_breakdowns_buildups.scd @@ -0,0 +1,132 @@ +// ===================================================================== +// examples/05_drops_breakdowns_buildups.scd -- Tricks scéniques +// +// TITRE : Les "tricks" classiques d'une perf live +// DUREE : ~10 minutes (en testant tout) +// NIVEAU : intermediaire +// PREREQUIS : CHARGER TOUT (00_load.scd) + SETUP de live.scd +// +// BUT +// Helpers ergonomiques de live.scd pour les transitions : +// drop, breakdown, buildup, tape stop, freeze, glitch, stutter... +// +// Tous ces helpers sont des Routines : ils tournent jusqu'a la +// fin de la duree donnee, puis restaurent l'etat precedent +// automatiquement. +// ===================================================================== + + +// --- [etape 0] Verification ---------------------------------------- +( +if (~drop.isNil) { + "!!! live.scd pas charge -- ouvre live.scd et evalue son SETUP".postln; +} { + "live.scd OK".postln; +}; +) + + +// --- [etape 1] Demarrer un beat de base ---------------------------- +( +~kickAmp = 0.55; ~hatAmp = 0.18; ~melodyAmp = 0.18; ~acidAmp = 0.3; +~melodyInst = \lead; +~reload.value; +[\kickSeq, \hatSeq, \acidSeq, \melodySeq].do { |k| Pdef(k).play }; +"beat lance -- pret pour les tricks".postln; +) +// -- laisse tourner 16-32 beats avant de tenter un drop. + + +// --- [etape 2] DROP -- silence sec puis blast (4s de buildup) ------- +// ~drop.(buildDur) +// Coupe tout, monte un riser, puis re-explose la rythmique a fond. +( ~drop.(4); ) +// -- attendre 8s, le drop fait son cycle complet. + + +// --- [etape 3] BREAKDOWN -- mute drums, garde melodie + reverb ------ +// ~breakdown.(dur) +// Coupe kick + hat, ajoute reverb sur la melodie, restaure apres dur. +( ~breakdown.(8); ) +// -- attendre 8s. + + +// --- [etape 4] BUILDUP -- crescendo qui monte sur dur secondes ------ +// ~buildup.(dur) +// Snare roll + filtre qui s'ouvre + amp qui monte. +( ~buildup.(8); ) + + +// --- [etape 5] HANDS UP -- cut sub + boost lead -------------------- +// Effet typique festival : on enleve le bas + clap et on pousse le lead. +( ~handsUp.(); ) +// -- attendre 4s. + + +// --- [etape 6] TAPE STOP -- ralentissement du tempo (2s) ----------- +// ~tapeStop.(dur) +// Tempo descend a 0 sur dur secondes ; effet bande magnetique. +( ~tapeStop.(2); ) + + +// --- [etape 7] FREEZE -- gel tout en reverb (4s) ------------------- +// Reverb saturee + master mute = effet "vide aspirant" puis retour. +( ~freeze.(4); ) + + +// --- [etape 8] GLITCH -- bitcrush + rate variations sur 2s ---------- +( ~glitch.(2); ) + + +// --- [etape 9] STUTTER -- repete tres vite a 8Hz pendant 1s -------- +// ~stutter.(rateHz, dur) +( ~stutter.(8, 1); ) +// -- on entend un effet "bbbbbbbb" tres serre. + + +// --- [etape 10] JUMP CUT -- silence sec de 0.5s -------------------- +// Effet "pause" tres courte, comme une coupe au montage video. +( ~jumpCut.(0.5); ) + + +// --- [etape 11] REVERB TAIL -- queue de reverb 4s ------------------ +// Mute la rythmique, garde uniquement la queue de reverb. +( ~reverbTail.(4); ) + + +// --- [etape 12] BIT CRUSH NOW -- bitcrush sur 1s ------------------ +// ~bitCrushNow.(bits, sr, dur) +( ~bitCrushNow.(6, 6000, 1); ) + + +// --- [etape 13] RING MOD -- mod en anneau a 200Hz pendant 1s ------ +( ~ringMod.(200, 1); ) + + +// --- [etape 14] TAPE REVERSE -- inverse la lecture 2s ------------- +( ~tapeReverse.(2); ) + + +// --- [etape 15] COMBO classique : breakdown -> buildup -> drop ----- +// Chaine 3 helpers en sequence (separes par .wait). +// Ce bloc est un Routine asynchrone qui dure ~24 secondes au total. +( +Routine({ + "[combo] BREAKDOWN".postln; + ~breakdown.(8); + 8.wait; + "[combo] BUILDUP".postln; + ~buildup.(8); + 8.wait; + "[combo] DROP".postln; + ~drop.(4); +}).play; +) + + +// --- [etape 16] STOP global ---------------------------------------- +( +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) diff --git a/sound_algo/examples/06_drum_kits_sequences.scd b/sound_algo/examples/06_drum_kits_sequences.scd new file mode 100644 index 0000000..6588637 --- /dev/null +++ b/sound_algo/examples/06_drum_kits_sequences.scd @@ -0,0 +1,129 @@ +// ===================================================================== +// examples/06_drum_kits_sequences.scd -- Kits + sequences +// +// TITRE : Macros pour swap de kit + sequences scenaristiques +// DUREE : ~6 minutes +// NIVEAU : debutant +// PREREQUIS : CHARGER TOUT (00_load.scd) +// +// BUT +// palette/rhythm/drum_kits/ : 21 kits complets (Techno, DnB, Phonk, ...) +// -- chaque kit est un fichier qui set ~kickSteps + ~hatSteps + ... +// et appelle ~reload.value +// palette/rhythm/sequences/ : macros de sequences pretes a l'emploi +// -- chaque seq est une Routine qui orchestre transitions + tempo +// +// Le _index.scd charge fills + sequences. Les drum_kits restent +// evalues a la demande (Cmd+Entree sur le fichier d'un kit). +// ===================================================================== + + +// --- [etape 1] Charger sequences + un kit au choix ----------------- +( +(~base ++ "palette/rhythm/_index.scd").load; // fills + sequences +(~base ++ "palette/rhythm/drum_kits/kit_techno.scd").load; // exemple kit +"sequences + kit techno charges".postln; +) + + +// --- [etape 2] Lancer le moteur ----------------------------------- +( +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; +"PLAY".postln; +) + + +// --- [etape 3] KIT TECHNO -- 4/4 classique ------------------------- +// Le kit set kickSteps + hatSteps + amp, puis ~reload.value. +// On entend tout de suite la diff. +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; +~kickDrive = 1.3; ~kickClick = 0.2; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; +~snareSteps = (0 ! 16); ~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT TECHNO ===".postln; +) +// -- ecouter 16 beats puis passer au kit suivant. + + +// --- [etape 4] KIT DUBSTEP -- kick lourd + snare backbeat ---------- +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.6; +~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.5; +~kickDrive = 1.5; ~kickClick = 0.15; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~snareFreq = 220; ~snareNoiseAmt = 0.65; ~snareDecay = 0.16; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT DUBSTEP ===".postln; +) + + +// --- [etape 5] KIT PHONK -- cowbell + 808 + pitched snare ---------- +// Ce kit existe dans drum_kits.scd ; on peut aussi recharger +// directement le fichier et evaluer le bloc dedie. +( +~kickSteps = [1,0,0,0, 0,0,1,0, 1,0,0,0, 0,0,1,0]; ~kickAmp = 0.55; +~kickFreq = 42; ~kickPitchAmt = 2.5; ~kickDecay = 0.6; +~kickDrive = 1.2; ~kickClick = 0.05; // 808 boomy +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.5; +~snareFreq = 280; ~snareNoiseAmt = 0.4; ~snareDecay = 0.08; +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.12; +~percInst = \cowbell; +~percSteps = [0,0,0,1, 0,0,0,0, 0,0,0,1, 0,0,1,0]; ~percAmp = 0.2; +~clapSteps = (0 ! 16); +~reload.value; "=== KIT PHONK ===".postln; +) + + +// --- [etape 6] Couper le moteur avant de tester les sequences ----- +// Les ~seqXxx prennent le controle ; on coupe les Pdef pour eviter +// les conflits avec leur orchestration interne. +( +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"sequenceurs stoppes -- pret pour ~seqXxx".postln; +) + + +// --- [etape 7] ~seqIntro -- montee progressive (~30s) -------------- +( ~seqIntro.(); ) +// -- la sequence dure ~30 secondes ; attendre la fin. + + +// --- [etape 8] ~seqBuildup.(bars) -- crescendo trance -------------- +// .(8) = 8 mesures. Snare roll + filtre qui s'ouvre + amp up. +( ~seqBuildup.(8); ) + + +// --- [etape 9] ~seqDrop -- drop techno (silence sec + blast) ------- +( ~seqDrop.(); ) + + +// --- [etape 10] ~seqTechnoLoop.(repeats) -- N pattern techno ------- +( ~seqTechnoLoop.(4); ) +// -- joue 4 iterations d'un pattern techno classique. + + +// --- [etape 11] ~seqDubstepDrop -- drop dubstep --------------------- +( ~seqDubstepDrop.(); ) + + +// --- [etape 12] ~seqAcidEvolve -- acid qui mute progressivement ---- +// Genere ~30s d'acid avec mutations toutes les 4 mesures. +( ~seqAcidEvolve.(); ) + + +// --- [etape 13] STOP la sequence en cours -------------------------- +( ~seqStop.(); ) + + +// --- [etape 14] STOP global ---------------------------------------- +( +~seqStop.(); +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) diff --git a/sound_algo/examples/07_loops_manager.scd b/sound_algo/examples/07_loops_manager.scd new file mode 100644 index 0000000..bb968d5 --- /dev/null +++ b/sound_algo/examples/07_loops_manager.scd @@ -0,0 +1,118 @@ +// ===================================================================== +// examples/07_loops_manager.scd -- Gestionnaire de boucles +// +// TITRE : Demarrer/stopper des Pdef en boucles propres +// DUREE : ~6 minutes +// NIVEAU : intermediaire +// PREREQUIS : CHARGER TOUT (00_load.scd) +// + ouvrir loops.scd et evaluer son SETUP (1er bloc top-level) +// +// CONCEPTS +// Le moteur expose 8 Pdef (~kickSeq ... ~harmonySeq) que l'on lance +// classiquement avec Pdef(\xxx).play. loops.scd est une sur-couche +// qui te permet de : +// - Nommer chaque boucle (\kick1, \hat1, \verse, \drop ...) +// - Limiter la duree (en beats / bars / repetitions) +// - Chainer / parall des boucles +// - Snapshot l'etat des params au moment du lancement +// - Fade in / out + countdown +// ===================================================================== + + +// --- [etape 0] Verification ---------------------------------------- +( +if (~loopOn.isNil) { + "!!! loops.scd pas charge -- ouvre loops.scd et evalue son SETUP".postln; +} { + "loops.scd OK".postln; +}; +) + + +// --- [etape 1] Demarrer kick + hat en boucle ---------------------- +// ~loopOn.(name, source) ; source = symbol Pdef ou Function +( +~kickAmp = 0.55; ~hatAmp = 0.18; ~reload.value; +~loopOn.(\kick1, \kickSeq); +~loopOn.(\hat1, \hatSeq); +) + + +// --- [etape 2] Lister les boucles actives -------------------------- +( ~loopList.(); ) + + +// --- [etape 3] Repeat snare 4 fois sur 4 secondes chacune ---------- +// ~loopRepeat.(name, source, n, dur) +// Demarre snareSeq, joue 4 cycles de 4s, puis stop auto. +( +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~reload.value; +~loopRepeat.(\snare1, \snareSeq, 4, 4); +) +// -- attendre 16s. Apres, le snare s'arrete tout seul. + + +// --- [etape 4] Acid sur 32 beats puis stop -------------------------- +// ~loopBeats.(name, source, beats) +( ~loopBeats.(\acid1, \acidSeq, 32); ) +// -- 32 beats = 8 mesures 4/4. Stop automatique. + + +// --- [etape 5] Lancer m1 avec un countdown 4 beats ----------------- +// ~loopWithCountdown.(name, source, beats, max) +// Affiche "4...3...2...1..." dans la console puis lance le Pdef. +// max = inf -> boucle infinie apres le countdown. +( ~loopWithCountdown.(\m1main, \melodySeq, 4, inf); ) + + +// --- [etape 6] Fade-out de la kick sur 4 secondes ------------------ +( ~loopFade.(\kick1, 4); ) +// -- la kick descend lineairement vers 0 et se libere. + + +// --- [etape 7] Chainer 3 boucles dans l'ordre ---------------------- +// ~loopChain.([[name, source, beats], ...]) +// -- chaque entry joue beats puis declenche la suivante. +// Avant : on coupe ce qui tourne pour avoir un demarrage propre. +( ~loopOffAll.(); ) +( +~loopChain.([ + [\a, \kickSeq, 8], // 8 beats kick seul + [\b, \melodySeq, 16], // 16 beats melodie + [\c, \hatSeq, 8], // 8 beats hat +]); +) +// -- duree totale = 32 beats. Suivre dans la console. + + +// --- [etape 8] Boucles paralleles (toutes en meme temps) ---------- +( ~loopOffAll.(); ) +( +~loopParallel.([ + [\k, \kickSeq], + [\h, \hatSeq], + [\m, \melodySeq], +]); +) + + +// --- [etape 9] Voir la progression en temps reel ------------------- +// Utile quand tu as des ~loopBeats / ~loopRepeat en cours. +( ~loopProgress.(); ) + + +// --- [etape 10] ~allOn / ~allOff -- les 8 voies du moteur ---------- +( ~loopOffAll.(); ) +( ~allOn.(); ) // les 8 Pdef du moteur en boucle +// -- attendre 8s +( ~allOff.(); ) // les 8 stop + + +// --- [etape 11] STOP global ---------------------------------------- +( +~loopOffAll.(); +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) diff --git a/sound_algo/examples/08_jump_sections.scd b/sound_algo/examples/08_jump_sections.scd new file mode 100644 index 0000000..940b8c4 --- /dev/null +++ b/sound_algo/examples/08_jump_sections.scd @@ -0,0 +1,96 @@ +// ===================================================================== +// examples/08_jump_sections.scd -- Naviguer dans les tracks +// +// TITRE : ~jumpTo -- aller direct a une section de track +// DUREE : ~5 minutes +// NIVEAU : intermediaire +// PREREQUIS : CHARGER TOUT (00_load.scd) +// + ouvrir jump.scd, evaluer SETUP JUMP (1er bloc) et +// evaluer le bloc ~sections['A'] = (...) pour A +// +// CONCEPTS +// jump.scd indexe ~sections[trackLetter][slug] -> { ...code... } +// pour chaque section de chaque track. Utile pour : +// - Tester rapidement le drop d'une track sans attendre 4 minutes +// - Faire un medley en alternant les sections de plusieurs tracks +// - Skip-mode pendant une perf live +// ===================================================================== + + +// --- [etape 0] Verification ---------------------------------------- +( +if (~jumpTo.isNil) { + "!!! jump.scd pas charge -- ouvre jump.scd et evalue SETUP JUMP".postln; +} { + if (~sections['A'].isNil) { + "!!! ~sections['A'] vide -- evalue le bloc 'TRACK A' de jump.scd".postln; + } { + "jump.scd + sections A OK".postln; + }; +}; +) + + +// --- [etape 1] Saut direct sur l'intro de A ------------------------ +// ~jumpTo.(letter, slug) -- letter = 'A' (string char) ou \A +// Le slug doit correspondre a une cle de ~sections['A']. +( ~jumpTo.('A', 'minimal_kick_t5_sub_melody_pad'); ) +// -- on entend immediatement le 1er moment de A (intro pad lent). +// Laisser tourner ~30s. + + +// --- [etape 2] Saut direct sur l'acid rave (drop de A) ------------- +( ~jumpTo.('A', 'acid_rave_kick_t1_melody_lead_variations'); ) +// -- le drop arrive instantanement, sans attendre les 2 minutes +// d'intro normale. + + +// --- [etape 3] Detroit stabs (3e section) -------------------------- +( ~jumpTo.('A', 'detroit_stabs_kick_t2_melody_stab'); ) + + +// --- [etape 4] Hard push (4e section) ------------------------------ +( ~jumpTo.('A', 'hard_push_kick_t4_distordu'); ) + + +// --- [etape 5] Outro ----------------------------------------------- +( ~jumpTo.('A', 'outro_melody_pad_qui_s_efface'); ) + + +// --- [etape 6] MEDLEY -- comparer des sections rapidement ---------- +// On joue 4 sections, ~10s chacune, dans une Routine. +// Utile pour audition rapide. +( +Routine({ + "[medley] intro".postln; + ~jumpTo.('A', 'minimal_kick_t5_sub_melody_pad'); + 10.wait; + "[medley] acid rave".postln; + ~jumpTo.('A', 'acid_rave_kick_t1_melody_lead_variations'); + 10.wait; + "[medley] detroit".postln; + ~jumpTo.('A', 'detroit_stabs_kick_t2_melody_stab'); + 10.wait; + "[medley] hard push".postln; + ~jumpTo.('A', 'hard_push_kick_t4_distordu'); + 10.wait; + "[medley] OUTRO".postln; + ~jumpTo.('A', 'outro_melody_pad_qui_s_efface'); +}).play; +) + + +// --- [etape 7] (bonus) Comparer la meme section de plusieurs tracks +// Ouvre jump.scd, evalue le bloc ~sections['B'] et ~sections['F']. +// Puis : +// ( ~jumpTo.('B', 'dub_start_kick_t3_boomy_melody_pad'); ) +// ( ~jumpTo.('F', '...'); ) +// (les slugs disponibles sont commentes en bas de chaque bloc de jump.scd) + + +// --- [etape 8] STOP ------------------------------------------------ +( +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) diff --git a/sound_algo/examples/09_scenes_recall.scd b/sound_algo/examples/09_scenes_recall.scd new file mode 100644 index 0000000..9948bcb --- /dev/null +++ b/sound_algo/examples/09_scenes_recall.scd @@ -0,0 +1,88 @@ +// ===================================================================== +// examples/09_scenes_recall.scd -- Save / recall scenes +// +// TITRE : Snapshot / restore de l'etat global +// DUREE : ~5 minutes +// NIVEAU : intermediaire +// PREREQUIS : CHARGER TOUT (00_load.scd) +// + ouvrir scenes.scd, evaluer son SETUP (1er bloc) +// +// CONCEPTS +// Une "scene" est un snapshot de TOUTES les variables d'environnement +// listees dans ~sceneKeys (kickAmp, melodyNotes, melodyCutoff...). +// Tu peux la sauvegarder avec ~saveScene.(\nom), la rappeler avec +// ~loadScene.(\nom), et persister le tout sur disque. +// ===================================================================== + + +// --- [etape 0] Verification ---------------------------------------- +( +if (~saveScene.isNil) { + "!!! scenes.scd pas charge -- ouvre scenes.scd et evalue son SETUP".postln; +} { + "scenes.scd OK".postln; +}; +) + + +// --- [etape 1] Lancer une track A pour avoir un point de depart ---- +// Charge tracks/A_acid_journey.scd qui set tous les params ET +// demarre les Pdef. La track passe en "minimal" pour les ~30 1eres s. +( +(~base ++ "tracks/A_acid_journey.scd").load; +) +// -- attendre 5s que les params soient stables. + + +// --- [etape 2] SAVE l'etat actuel comme \verseA -------------------- +( ~saveScene.(\verseA); ) + + +// --- [etape 3] Modifier les params (kick + cutoff + melodie) ------- +( +~kickAmp = 0.8; +~melodyCutoff = 6500; +~melodyNotes = ~genMelody.(0.7, ~scaleMinor); +~reload.value; +"params modifies".postln; +) + + +// --- [etape 4] SAVE cet etat comme \verseAvariant ------------------ +( ~saveScene.(\verseAvariant); ) + + +// --- [etape 5] LOAD \verseA -- on revient a l'etat initial --------- +( ~loadScene.(\verseA); ) +// -- on entend les params revenir : kick 0.5, cutoff 1500, etc. + + +// --- [etape 6] LOAD \verseAvariant -- retour a la variante -------- +( ~loadScene.(\verseAvariant); ) + + +// --- [etape 7] Lister les scenes sauvegardees ---------------------- +( ~listScenes.value; ) + + +// --- [etape 8] Supprimer une scene --------------------------------- +( ~deleteScene.(\verseAvariant); ) +( ~listScenes.value; ) + + +// --- [etape 9] Persistence sur disque ------------------------------ +// ~saveScenesToDisk ecrit dans scenes_saved.scd a la racine du projet. +// ~loadScenesFromDisk recharge depuis ce fichier. +( ~saveScenesToDisk.value; ) +// -- on peut quitter SuperCollider, relancer la session, recharger +// CHARGER TOUT + scenes.scd, puis : +( ~loadScenesFromDisk.value; ) + + +// --- [etape 10] STOP ----------------------------------------------- +( +~track !? { ~track.stop }; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) diff --git a/sound_algo/examples/10_midi_controller.scd b/sound_algo/examples/10_midi_controller.scd new file mode 100644 index 0000000..224c882 --- /dev/null +++ b/sound_algo/examples/10_midi_controller.scd @@ -0,0 +1,95 @@ +// ===================================================================== +// examples/10_midi_controller.scd -- Setup MIDI +// +// TITRE : Mapper un controller MIDI sur les variables +// DUREE : ~3 minutes +// NIVEAU : avance +// PREREQUIS : CHARGER TOUT (00_load.scd) +// + un controller MIDI USB branche +// +// CONCEPTS +// midi.scd cree des MIDIFunc.cc(...) qui : +// 1. Recoivent un CC du controller +// 2. Mappent la valeur 0-127 sur une plage utile (linlin / linexp) +// 3. Set la variable d'environnement (~kickAmp, ~melodyCutoff, ...) +// 4. Appellent ~debouncedReload (50ms debounce -> evite le spam) +// +// Le mapping de defaut cible un Launch Control XL (8 fad + 8 pots), +// adapte les numeros CC selon ton controller. +// ===================================================================== + + +// --- [etape 0] Verification ---------------------------------------- +( +if (~reload.isNil) { + "!!! engine pas charge -- evalue CHARGER TOUT dans 00_load.scd".postln; +} { + "engine OK".postln; +}; +) + + +// --- [etape 1] INIT MIDI -- lister les devices -------------------- +// Reproduit le 1er bloc de control/midi.scd. La console affiche les sources +// et destinations. Si tu vois ton controller, c'est OK. +( +MIDIClient.init; +"=== MIDI sources disponibles ===".postln; +MIDIClient.sources.do { |src, i| + (" [" ++ i ++ "] " ++ src.device ++ " : " ++ src.name).postln; +}; +"=== MIDI destinations ===".postln; +MIDIClient.destinations.do { |dst, i| + (" [" ++ i ++ "] " ++ dst.device ++ " : " ++ dst.name).postln; +}; +MIDIIn.connectAll; +"=== MIDIIn.connectAll OK ===".postln; +) + + +// --- [etape 2] MAPPING DEFAULT -- charger control/midi.scd -------- +// .load execute le 2e bloc de control/midi.scd qui cree ~midiFuncs +// avec les 16 mappings standards (CC 13-20 = volumes, CC 29-36 = +// filtres, CC 49-56 = wobble/sidechain, notes 36-42 = oneshot FX). +( +(~base ++ "control/midi.scd").load; +) +// -- la console doit afficher "=== MIDI MAPPING ACTIF ===". + + +// --- [etape 3] Demarrer un beat pour entendre les changements ----- +( +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; +) +// -- bouge tes potards : CC 13 = kickAmp, CC 29 = melodyCutoff, etc. + + +// --- [etape 4] DEBUG -- afficher tous les CC recus ---------------- +// Utile pour decouvrir les numeros CC envoyes par TON controller. +( +~midiDebug = MIDIFunc.cc({ |val, num, chan| + ("[CC] " ++ num ++ " = " ++ val ++ " ch" ++ chan).postln; +}); +"MIDI debug ON -- bouge un potard".postln; +) + + +// --- [etape 5] Couper le debug ------------------------------------- +( ~midiDebug !? { ~midiDebug.free; ~midiDebug = nil }; "MIDI debug OFF".postln; ) + + +// --- [etape 6] STOP MIDI -- libere tous les MIDIFunc -------------- +( +~midiFuncs !? { ~midiFuncs.do { |f| f.free }; ~midiFuncs = nil }; +~midiDebug !? { ~midiDebug.free; ~midiDebug = nil }; +"=== MIDI STOPPED ===".postln; +) + + +// --- [etape 7] STOP global ---------------------------------------- +( +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) diff --git a/sound_algo/examples/11_playlist_auto.scd b/sound_algo/examples/11_playlist_auto.scd new file mode 100644 index 0000000..ebad003 --- /dev/null +++ b/sound_algo/examples/11_playlist_auto.scd @@ -0,0 +1,87 @@ +// ===================================================================== +// examples/11_playlist_auto.scd -- Session auto playlist +// +// TITRE : Lancer plusieurs tracks d'affilee sans rien faire +// DUREE : variable (selon la playlist choisie) +// NIVEAU : debutant +// PREREQUIS : CHARGER TOUT (00_load.scd) +// + ouvrir playlist.scd, evaluer son SETUP (1er bloc) +// +// CONCEPTS +// ~playPlaylist.([[file, dur], ...]) joue chaque track pendant +// "dur" secondes, puis crossfade vers la suivante. +// Pendant que ca tourne, tu peux SKIP, PAUSE, RESUME. +// ===================================================================== + + +// --- [etape 0] Verification ---------------------------------------- +( +if (~playPlaylist.isNil) { + "!!! playlist.scd pas charge -- ouvre playlist.scd et evalue son SETUP".postln; +} { + "playlist.scd OK".postln; +}; +) + + +// --- [etape 1] PLAYLIST DEMO -- 4 tracks de 90s chacune (6 min) ---- +// Custom playlist courte pour tester. Pour les playlists 1h+ voir +// playlist.scd (PLAYLIST INTEGRALE, DANCE FLOOR, CHILL, ...). +( +~playPlaylist.([ + ["A_acid_journey.scd", 90], + ["F_trance_uplifter.scd", 90], + ["G_detroit_soulful.scd", 90], + ["W_dub_techno.scd", 90], +]); +) +// -- la 1ere track demarre. Toutes les 90s, on enchaine la suivante +// avec un crossfade. + + +// --- [etape 2] INFO -- combien de synths actifs / CPU -------------- +// A relancer ponctuellement pendant la playlist. +( ("synths actifs: " ++ s.numSynths ++ " | CPU: " ++ s.avgCPU.round(0.1) ++ "%").postln; ) + + +// --- [etape 3] PAUSE -- mute le master limiter --------------------- +// Pratique pour repondre a un appel sans tout couper. +( ~masterLim !? { ~masterLim.run(false) }; "[PAUSE]".postln; ) + + +// --- [etape 4] RESUME --------------------------------------------- +( ~masterLim !? { ~masterLim.run(true) }; "[RESUME]".postln; ) + + +// --- [etape 5] SKIP TRACK -- passe a la suivante immediatement ----- +// Stop la track + tous les Pdef ; la playlist reprend le controle +// et lance la track suivante au prochain tick. +( +~track !? { ~track.stop }; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"[SKIP] passage a la track suivante".postln; +) + + +// --- [etape 6] STOP PLAYLIST --------------------------------------- +// Stoppe la playlist, la track en cours, et les Pdef. +( +~playlist !? { ~playlist.stop; ~playlist = nil }; +~track !? { ~track.stop; ~track = nil }; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== PLAYLIST STOPPED ===".postln; +) + + +// --- [etape 7] (variantes) Lancer une playlist deja definie ------- +// Ouvre playlist.scd et evalue le bloc qui te plait : +// - PLAYLIST INTEGRALE (~1h30 de tout) +// - PLAYLIST DANCE FLOOR (~1h30 dansant) +// - PLAYLIST CHILL (~1h ambient) +// - PLAYLIST BASS MUSIC (~1h dubstep + dnb) +// - PLAYLIST HARD (~50 min hardcore) +// - PLAYLIST WORLD (~50 min asia + tribal) +// - PLAYLIST RETRO (~30 min synthwave) +// - PLAYLIST EXPERIMENTAL (~38 min glitch + drone) diff --git a/sound_algo/examples/12_chord_progressions.scd b/sound_algo/examples/12_chord_progressions.scd new file mode 100644 index 0000000..d9f4a85 --- /dev/null +++ b/sound_algo/examples/12_chord_progressions.scd @@ -0,0 +1,126 @@ +// ===================================================================== +// examples/12_chord_progressions.scd -- Progressions d'accords +// +// TITRE : Generer melodie/harmonie depuis ~progXxx +// DUREE : ~5 minutes +// NIVEAU : intermediaire +// PREREQUIS : CHARGER TOUT (00_load.scd) -- charge automatiquement +// palette/chords_progressions.scd via melodies/index.scd ? +// NON -- il faut le charger separement : +( +(~base ++ "palette/chords_progressions.scd").load; +) +// +// CONCEPTS +// ~progXxx = [[c1n1, c1n2, c1n3], [c2n1, c2n2, c2n3], ...] +// -- tableau d'accords, chaque accord = liste de notes MIDI +// ~chordsToMelody.(prog, stepsPerChord) deroule la prog en melodie +// ~chordsToHarmony.(prog, stepsPerChord) deroule la prog en harmony +// +// PROGRESSIONS DISPO : ~progIIVI ~progPop ~progSadPop ~progEpicMin +// ~progAndalou ~progFlamenco ~progPhrygien ~progLydien ~progDorien +// ~progHungar ~progHijaz ~progVietnam ~progHirajoshi ~progDetroit +// ~progTrance ~progDnB ~progDubstep ~progSynthwave ~progAmbient +// (voir palette/chords_progressions.scd pour la liste complete) +// ===================================================================== + + +// --- [etape 1] Demarrer un beat de base ------------------------- +( +~kickAmp = 0.55; ~hatAmp = 0.18; ~melodyAmp = 0.18; +~melodyInst = \warmPad; +~melodyAttack = 0.4; ~melodyRelease = 1.5; +~reload.value; +[\kickSeq, \hatSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; +) + + +// --- [etape 2] Detroit prog -- soulful Cm-Eb-Ab-Bb ----------------- +( +~melodyNotes = ~chordsToMelody.(~progDetroit); +~reload.value; +"=== prog DETROIT ===".postln; +) +// -- on entend la melodie deroulee depuis la prog. Laisser 16-32 beats. + + +// --- [etape 3] Trance prog (i-VII-VI-VII) -------------------------- +( +~melodyNotes = ~chordsToMelody.(~progTrance); +~reload.value; +"=== prog TRANCE ===".postln; +) + + +// --- [etape 4] Pop prog (axis of awesome : I-V-vi-IV) ------------- +( +~melodyNotes = ~chordsToMelody.(~progPop); +~reload.value; +"=== prog POP ===".postln; +) + + +// --- [etape 5] Andalouse prog (i-VI-III-VII en Am) ----------------- +( +~melodyNotes = ~chordsToMelody.(~progAndalou); +~reload.value; +"=== prog ANDALOU ===".postln; +) + + +// --- [etape 6] Hijaz prog (gamme arabe) ---------------------------- +( +~melodyNotes = ~chordsToMelody.(~progHijaz); +~reload.value; +"=== prog HIJAZ ===".postln; +) + + +// --- [etape 7] Synthwave prog (Am-F-G-Am 80s) ---------------------- +( +~melodyNotes = ~chordsToMelody.(~progSynthwave); +~reload.value; +"=== prog SYNTHWAVE ===".postln; +) + + +// --- [etape 8] DnB prog (Em melodique) ----------------------------- +( +~melodyNotes = ~chordsToMelody.(~progDnB); +~reload.value; +"=== prog DnB ===".postln; +) + + +// --- [etape 9] Empiler une harmonie en plus (depuis la meme prog) -- +// ~chordsToHarmony empile toutes les notes de chaque accord => +// genere des "stabs" d'accords joues a 1/4, par dessus la melodie. +( +~harmonyInst = \pad; +~harmonyAmp = 0.16; +~harmonyDur = 1.0; // 1 noir = 1 stab par beat +~harmonyNotes = ~chordsToHarmony.(~progSynthwave); +~reload.value; +"=== harmony SYNTHWAVE empilee ===".postln; +) + + +// --- [etape 10] Trance + Trance harmony (full layered) ------------- +( +~melodyNotes = ~chordsToMelody.(~progTrance); +~harmonyNotes = ~chordsToHarmony.(~progTrance); +~reload.value; +"=== prog TRANCE full layered ===".postln; +) + + +// --- [etape 11] Couper l'harmonie ---------------------------------- +( ~harmonyAmp = 0; ~reload.value; "harmony OFF".postln; ) + + +// --- [etape 12] STOP global ----------------------------------------- +( +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) diff --git a/sound_algo/examples/13_world_ethno.scd b/sound_algo/examples/13_world_ethno.scd new file mode 100644 index 0000000..495ad52 --- /dev/null +++ b/sound_algo/examples/13_world_ethno.scd @@ -0,0 +1,128 @@ +// ===================================================================== +// examples/13_world_ethno.scd -- Workflow oriental / world / asia +// +// TITRE : Construire un morceau ethnique +// DUREE : ~6 minutes +// NIVEAU : intermediaire +// PREREQUIS : CHARGER TOUT (00_load.scd) charge synth/_index.scd +// qui inclut taiko, didgeridoo, guzheng, shakuhachi, tabla +// ainsi que toute la palette asia (koto, erhu, pipa, ...) +// + palette/chords_progressions.scd pour ~progHijaz + +// ~progVietnam (a charger separement) : +( +(~base ++ "palette/chords_progressions.scd").load; +(~base ++ "palette/rhythm/_index.scd").load; +) +// +// PALETTE +// asia : \koto \erhu \pipa \gong \growl \reeseHard +// authentic : \didgeridoo \guzheng \shakuhachi \taiko \tabla +// progressions : ~progHijaz ~progVietnam ~progHirajoshi +// melodies : ~melodyByGenre.(\oriental | \asian | \tribal) +// ===================================================================== + + +// --- [etape 1] Demarrer un beat tribal de base -------------------- +// Kick lent + tabla sur les contre-temps. +( +~bpm = 92; +TempoClock.default.tempo = ~bpm / 60; +~kickAmp = 0.45; ~hatAmp = 0.0; +~kickFreq = 50; ~kickDecay = 0.5; +~percInst = \tabla; // tabla en lieu de rim/cowbell +~percSteps = [0,0,1,0, 1,0,1,0, 0,1,0,1, 1,0,0,1]; ~percAmp = 0.4; +~melodyAmp = 0.18; +~reload.value; +[\kickSeq, \percSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; +"beat tribal en place".postln; +) + + +// --- [etape 2] Melodie au koto + scale orientale ------------------ +// ~m17 est une melodie asian dans palette/melodies/short.scd. +( +~melodyInst = \koto; +~melodyAttack = 0.005; ~melodyRelease = 0.4; +~melodyCutoff = 5500; ~melodyAmp = 0.2; +~melodyNotes = ~m17.copy; +~reload.value; +"=== melodie KOTO -- ~m17 ===".postln; +) + + +// --- [etape 3] Tirer une melodie aleatoire dans le bank \oriental -- +// ~melodyByGenre.(\oriental) lit ~melodyBank[\oriental] (10 melodies) +// et applique une au hasard. +( ~melodyByGenre.(\oriental); ) +// -- relancer plusieurs fois pour decouvrir d'autres melodies. + + +// --- [etape 4] Couche basse au didgeridoo (drone bourdonnant) ----- +// On utilise la voix harmony : pose un drone profond sur la fond. +( +~harmonyInst = \didgeridoo; +~harmonyAttack = 0.05; ~harmonyRelease = 1.5; +~harmonyAmp = 0.22; +~harmonyDur = 1.0; +~enableHarmony.(\bassline); // genere une bassline depuis melody +~reload.value; +"=== didgeridoo bassline ===".postln; +) + + +// --- [etape 5] Reemplacer perc par taiko ------------------------- +// Le taiko sonne plus martial, parfait pour buildup. +( +~percInst = \taiko; +~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,1, 0,1,0,0]; ~percAmp = 0.5; +~reload.value; +"=== taiko perc ===".postln; +) + + +// --- [etape 6] Melodie depuis prog Hijaz (gamme arabe) ------------ +// chordsToMelody deroule les notes des accords sur 32 pas. +( +~melodyNotes = ~chordsToMelody.(~progHijaz); +~melodyInst = \shakuhachi; // flute japonaise +~reload.value; +"=== shakuhachi -- prog HIJAZ ===".postln; +) + + +// --- [etape 7] Melodie depuis prog Vietnam ------------------------ +( +~melodyNotes = ~chordsToMelody.(~progVietnam); +~melodyInst = \erhu; // violon chinois +~melodyAttack = 0.2; ~melodyRelease = 0.6; +~reload.value; +"=== erhu -- prog VIETNAM ===".postln; +) + + +// --- [etape 8] ~seqWorldEvolve -- sequence world toute prete ------ +// Avant : on coupe la rythmique, la sequence prend le controle. +( +[\kickSeq, \percSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +~seqWorldEvolve.(); +"=== seqWorldEvolve ===".postln; +) +// -- Routine de ~30s qui fait evoluer le mix world. + + +// --- [etape 9] VCF formant -- voyelles pour le coté incantatoire -- +// live.scd doit avoir ete setup avant cette etape (sinon ~vcfOn nil). +( ~vcfOn !? { ~vcfOn.(\formant, 0, 0.2) }; ) // 'a' large +// -- changer de voyelle avec ~vcfSet +( ~vcfSet !? { ~vcfSet.(\vowel, 2) }; ) // 'i' aigue +( ~vcfSet !? { ~vcfSet.(\vowel, 3) }; ) // 'o' rond +( ~vcfOff !? { ~vcfOff.() }; ) + + +// --- [etape 10] STOP global ---------------------------------------- +( +~seqStop !? { ~seqStop.() }; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) diff --git a/sound_algo/examples/14_fx_chains_dynamic.scd b/sound_algo/examples/14_fx_chains_dynamic.scd new file mode 100644 index 0000000..13da754 --- /dev/null +++ b/sound_algo/examples/14_fx_chains_dynamic.scd @@ -0,0 +1,114 @@ +// ===================================================================== +// examples/14_fx_chains_dynamic.scd -- FX bus dynamique +// +// TITRE : Bus FX en send + LFO sur params FX + presets +// DUREE : ~6 minutes +// NIVEAU : avance +// PREREQUIS : CHARGER TOUT (00_load.scd) +// + ouvrir fx_bus.scd, evaluer son SETUP (3 blocs en haut) +// +// ATTENTION +// fx_bus.scd a une signature different de live.scd : +// ~send.(fxName, amount) -- envoie LE BUS 0 ENTIER vers le FX +// (donc tout le mix passe dedans) +// ~setFx.(fxName, key, val) -- modifie un parametre du FX +// ~lfo.(fxName, key, rate, lo, hi, shape) -- LFO sur un param FX +// +// FX dispos : \rev \dly \chr \phs \flg \crsh \tape \shim \dist +// Presets : \dub \space \trance \dubstep \retro \industrial +// \dream \cosmic \drone \dry +// ===================================================================== + + +// --- [etape 0] Verification ---------------------------------------- +( +if (~send.isNil or: { ~fxFx.isNil }) { + "!!! fx_bus.scd pas charge -- ouvre fx_bus.scd et evalue ses 3 SETUP".postln; +} { + "fx_bus.scd OK".postln; +}; +) + + +// --- [etape 1] Demarrer un beat de base ---------------------------- +( +~kickAmp = 0.55; ~hatAmp = 0.18; ~melodyAmp = 0.18; ~acidAmp = 0.32; +~melodyInst = \lead; +~reload.value; +[\kickSeq, \hatSeq, \acidSeq, \melodySeq].do { |k| Pdef(k).play }; +"beat lance".postln; +) + + +// --- [etape 2] Preset DUB -- reverb hall + delay long + tape ------ +( ~fxPreset.(\dub); ) +// -- on entend tout le mix prendre une couleur dub. Laisser 16 beats. + + +// --- [etape 3] Reverb seule a 40% --------------------------------- +// ~send.(fxName, amount) avec amount = 0.4 -> 40% du mix part dans +// le bus reverb (reste 100% en dry). +( ~send.(\rev, 0.4); ) + +// Couper le delay du preset DUB (pour ne garder que la reverb) +( ~send.(\dly, 0); ) +( ~send.(\tape, 0); ) + + +// --- [etape 4] Delay 1/8 (375ms) avec feedback 50% --------------- +( +~send.(\dly, 0.3); +~setFx.(\dly, \delayTime, 0.375); // 1/8 a 120 BPM +~setFx.(\dly, \feedback, 0.5); +"delay 1/8 fb 50%".postln; +) + + +// --- [etape 5] LFO sur le feedback du delay ----------------------- +// ~lfo.(fxName, param, rateHz, lo, hi, shape) +// Le feedback oscille entre 30% et 80% a 0.2Hz (cycle 5s). +( ~lfo.(\dly, \feedback, 0.2, 0.3, 0.8, \sin); ) +// -- on entend le delay grossir/decroitre. Laisser tourner 30s. + + +// --- [etape 6] Stop le LFO sur ce param --------------------------- +( ~lfoStop.(\dly, \feedback); ) + + +// --- [etape 7] Reverb FREEZE -- nappe figee infinie --------------- +( ~setFx.(\rev, \freeze, 1); "REV FREEZE ON".postln; ) + +// ... ecoute la nappe, joue avec d'autres params + +( ~setFx.(\rev, \freeze, 0); "REV FREEZE OFF".postln; ) + + +// --- [etape 8] Tap tempo -- ajuste le delay au tempo qu'on tape --- +// Tape ~tap au moins 3 fois pour calibrer ; il calcule la moyenne +// des intervalles et ajuste ~setFx.(\dly, \delayTime, ...). +( ~tap.(); ) +( ~tap.(); ) +( ~tap.(); ) +( ~tap.(); ) + + +// --- [etape 9] Preset SPACE -- shimmer + reverb + chorus ---------- +( ~fxPreset.(\space); ) + + +// --- [etape 10] Preset INDUSTRIAL -- distortion + flanger ------- +( ~fxPreset.(\industrial); ) + + +// --- [etape 11] Preset DRY -- mute tous les sends ----------------- +( ~fxPreset.(\dry); ) + + +// --- [etape 12] STOP global ---------------------------------------- +( +~lfoStopAll !? { ~lfoStopAll.() }; +~fxPreset.(\dry); +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +"=== STOP ===".postln; +) diff --git a/sound_algo/examples/15_full_live_set.scd b/sound_algo/examples/15_full_live_set.scd new file mode 100644 index 0000000..2670732 --- /dev/null +++ b/sound_algo/examples/15_full_live_set.scd @@ -0,0 +1,274 @@ +// ===================================================================== +// examples/15_full_live_set.scd -- Set live complet 30 minutes +// +// TITRE : Performance live structuree avec tous les outils +// DUREE : ~30 minutes +// NIVEAU : avance +// PREREQUIS : CHARGER TOUT (00_load.scd) +// + SETUP de live.scd (~drop ~breakdown ~vcfOn ...) +// + SETUP de fx_bus.scd (~send ~fxPreset) +// + SETUP de mixer.scd (~mixPreset ~setVol ~mute) +// + SETUP de scenes.scd (~saveScene ~loadScene) +// +// STRUCTURE DU SET (timeline en minutes) +// 00:00 INTRO drone + ambient + buildup (4 min) +// 04:00 DROP 1 techno minimal (6 min) avec mute/solo/tweaks +// 10:00 ACID multi-mel + LFO cutoff + drop (6 min) +// 16:00 BREAKDOWN chord prog + reverb tail (4 min) +// 20:00 DROP 2 hard kit + bitcrush + glitch (4 min) +// 24:00 TRANCE seqBuildup + seqDrop final (3 min) +// 27:00 OUTRO masterFadeOut 4 min +// +// CONVENTION +// Tu evalues UN BLOC a chaque transition (les tags [00:00] etc. +// indiquent le temps suggere). Entre les blocs, tu fais des tweaks +// libres (changer ~melodyCutoff, lancer un ~drop, etc.). +// ===================================================================== + + +// --- [etape 0] VERIFICATIONS --------------------------------------- +( +var ok = true; +if (~reload.isNil) { "!!! engine pas charge".postln; ok = false }; +if (~drop.isNil) { "!!! live.scd SETUP manquant".postln; ok = false }; +if (~send.isNil) { "!!! fx_bus.scd SETUP manquant".postln; ok = false }; +if (~mixPreset.isNil) { "!!! mixer.scd SETUP manquant".postln; ok = false }; +if (~saveScene.isNil) { "!!! scenes.scd SETUP manquant".postln; ok = false }; +if (ok) { "=== TOUS LES MODULES SONT PRETS ===".postln }; +) + + +// --- [00:00] INTRO -- drone + ambient + buildup ------------------- +// On part d'un mix vide, on monte progressivement. +// masterVol bas + reverb saturee = ambiance ouverture. +( +~bpm = 124; TempoClock.default.tempo = ~bpm / 60; +~kickAmp = 0; ~hatAmp = 0; ~snareAmp = 0; ~clapAmp = 0; ~percAmp = 0; +~acidAmp = 0; ~melodyAmp = 0; ~harmonyAmp = 0; +~melodyInst = \warmPad; +~melodyAttack = 0.8; ~melodyRelease = 2.0; ~melodyCutoff = 1500; +~harmonyInst = \drone; +~harmonyAttack = 1.0; ~harmonyRelease = 3.0; ~harmonyAmp = 0.0; +~harmonyNotes = [36,0,0,0,0,0,0,0, 36,0,0,0,0,0,0,0, + 36,0,0,0,0,0,0,0, 36,0,0,0,0,0,0,0]; +~melodyNotes = ~m33.copy; // melodie ambient +~reload.value; +[\melodySeq, \harmonySeq].do { |k| Pdef(k).play }; +~fxPreset.(\space); // shimmer + reverb + chorus +"=== [00:00] INTRO -- drone + ambient ===".postln; +) +// -- monter doucement ~melodyAmp et ~harmonyAmp en quelques etapes : +// attendre 30s avant le bloc suivant. + +( ~melodyAmp = 0.10; ~harmonyAmp = 0.18; ~reload.value; ) // [00:30] +( ~melodyAmp = 0.16; ~harmonyAmp = 0.22; ~reload.value; ) // [01:30] + + +// --- [03:30] BUILDUP vers le drop techno -- 30s ------------------ +// Snare roll + filtre qui s'ouvre + masterFadeIn. +( +~buildup.(30); // helper de live.scd : snare roll + open filter +~saveScene.(\preDrop1); // au cas ou +"=== [03:30] BUILDUP -- 30s ===".postln; +) + + +// --- [04:00] DROP 1 -- TECHNO MINIMAL ----------------------------- +// Kit techno pur 4/4, melody en lead, ~mixPreset \drop. +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq = 55; ~kickDecay = 0.32; ~kickDrive = 1.3; ~kickClick = 0.2; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; +~snareSteps = (0 ! 16); ~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~melodyInst = \lead; +~melodyAttack = 0.012; ~melodyRelease = 0.25; ~melodyCutoff = 2400; +~melodyAmp = 0.18; +~melodyNotes = ~m1.copy; +~harmonyAmp = 0.10; +~reload.value; +[\kickSeq, \hatSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; +~fxPreset.(\trance); // rev + delay 1/8 + chorus +~mixPreset.(\drop); +~saveScene.(\drop1); +"=== [04:00] DROP 1 -- TECHNO MINIMAL ===".postln; +) +// -- laisser tourner 1 minute, puis tweaks libres : +// ( ~mute.(\hat); ) ;; couper le hat 16 beats +// ( ~unmute.(\hat); ) +// ( ~setVol.(\acid, 1.4); ) ;; pousser l'acid +// ( ~drop.(4); ) ;; mini-drop interne + + +// --- [07:00] VARIATIONS DROP 1 -- mute / solo -------------------- +( ~mute.(\hat); ) // hat coupee +// -- 8 beats +( ~unmute.(\hat); ) +( ~focus.(\melody, 0.4); ) // melodie en avant, autres a 40% +// -- 16 beats +( ~unfocus.(); ) + + +// --- [08:00] LFO sur le cutoff de la melodie --------------------- +( ~lfoTo.(\melodyCutoff, 0.25, 2000, \sin, 3500); ) +// -- la melodie respire lentement (cycle 4s). + + +// --- [09:30] mini drop interne avant la transition ACID ---------- +( ~drop.(4); ) + + +// --- [10:00] TRANSITION VERS ACID -------------------------------- +// On stoppe le LFO, on bascule sur \saw3 + acid, on enclenche +// le systeme multi-pistes melodiques. +( +~lfoStopVar.(\melodyCutoff); +~melodyInst = \saw3; ~melodyAmp = 0.18; +~acidAmp = 0.32; +~acidNotes = [36,36,48,36,39,36,43,39, 36,41,36,39,43,36,36,41]; +~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; +~melodyNotes = ~m29.copy; // melodie acid +~reload.value; +Pdef(\acidSeq).play; +~mixPreset.(\acidFocus); +"=== [10:00] ACID JOURNEY ===".postln; +) + + +// --- [11:00] Multi-piste : ajouter m2 en pluck contrer la mel ---- +// m2 est preconfiguree dans melodies/tracks.scd ; on la lance et +// on lui colle une counter-melody. +( +~melTrackSet.(\m2, \inst, \pluck); +~melTrackSet.(\m2, \notes, ~m25.copy); +~melTrackSet.(\m2, \pan, -0.4); +~melTrackOn.(\m2); +"=== m2 counter pluck ON ===".postln; +) + + +// --- [12:00] LFO drunk sur le BPM -- subtile derive -------------- +( ~lfoTo.(\bpm, 0.05, 6, \drunk, 132); ) + + +// --- [14:00] Drop interne (acid section) ------------------------- +( ~drop.(4); ) + + +// --- [15:30] BREAKDOWN -- chord prog + reverb tail --------------- +// On stoppe le LFO + acid + m2, on fait un breakdown. +( +~lfoStopVar.(\bpm); +TempoClock.default.tempo = 124 / 60; ~bpm = 124; +~melTrackOff.(\m2); +Pdef(\acidSeq).stop; +Pdef(\hatSeq).stop; +~breakdown.(8); +"=== [15:30] BREAKDOWN ===".postln; +) + + +// --- [16:00] CHORDS PROGRESSION -- Synthwave + harmony ---------- +// chordsToMelody + chordsToHarmony pour empiler une nappe. +( +~melodyInst = \warmPad; +~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 3500; +~melodyAmp = 0.16; +~melodyNotes = ~chordsToMelody.(~progSynthwave); +~harmonyInst = \strings; +~harmonyAttack = 0.5; ~harmonyRelease = 2.0; ~harmonyAmp = 0.16; +~harmonyDur = 1.0; +~harmonyNotes = ~chordsToHarmony.(~progSynthwave); +~kickAmp = 0; // pas de kick pendant le breakdown +~reload.value; +~fxPreset.(\dream); +~mixPreset.(\breakdown); +"=== [16:00] CHORDS SYNTHWAVE ===".postln; +) + + +// --- [18:00] REVERB TAIL puis BUILDUP final -------------------- +( ~reverbTail.(8); ) // [18:00] tail 8s +( ~buildup.(30); ~saveScene.(\preDrop2); ) // [18:30] buildup 30s + + +// --- [20:00] DROP 2 -- HARD kit + bitcrush ----------------------- +// Kit hardcore + bitcrush en send + masterSat. +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.7; +~kickFreq = 60; ~kickDecay = 0.25; ~kickDrive = 3.0; ~kickClick = 0.3; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.4; +~melodyInst = \hardLead; ~melodyAmp = 0.22; ~melodyDrive = 3.0; +~melodyNotes = ~m67.copy; // melodie hardcore +~harmonyAmp = 0.0; +~reload.value; +[\kickSeq, \hatSeq, \clapSeq, \melodySeq].do { |k| Pdef(k).play }; +~fxPreset.(\industrial); +~satOn !? { ~satOn.(0.4) }; // master saturation legere +~mixPreset.(\hardcore); +~saveScene.(\drop2); +"=== [20:00] DROP 2 -- HARD ===".postln; +) + + +// --- [22:00] GLITCH + bitcrush moments --------------------------- +( ~glitch.(2); ) +// -- 8 beats +( ~bitCrushNow.(6, 8000, 1); ) +// -- 8 beats +( ~stutter.(8, 1); ) +// -- 8 beats +( ~freeze.(4); ) + + +// --- [24:00] TRANSITION TRANCE -- seqBuildup + seqDrop ----------- +// On stoppe les Pdef pour laisser ~seqXxx prendre le controle. +( +~satOff !? { ~satOff.() }; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +~bpm = 138; TempoClock.default.tempo = ~bpm / 60; +~melodyInst = \supersaw; +~melodyNotes = ~chordsToMelody.(~progTrance); +~reload.value; +~fxPreset.(\trance); +"=== [24:00] TRANCE -- seqBuildup ===".postln; +) +( ~seqBuildup.(16); ) // 16 mesures crescendo + + +// --- [26:00] DROP TRANCE FINAL ----------------------------------- +( ~seqDrop.(); ) +// -- attendre la fin de la sequence puis relancer un beat. +( +[\kickSeq, \hatSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; +~mixPreset.(\trance); +~saveScene.(\dropFinal); +"=== [26:00] TRANCE FINAL ===".postln; +) + + +// --- [27:00] OUTRO -- masterFadeOut 4 minutes ------------------- +// ~masterFadeOut diminue masterVol vers 0 sur dur secondes. +// On laisse les Pdef tourner ; le silence vient progressivement. +( +~masterFadeOut.(240); +"=== [27:00] OUTRO -- fade-out 4 min ===".postln; +) +// -- patience : 4 minutes pour atteindre 0. Tu peux profiter. + + +// --- [31:00] STOP TOTAL ----------------------------------------- +// Apres le fade, libere tout proprement. +( +~lfoStopAllVars !? { ~lfoStopAllVars.() }; +~lfoStopAll !? { ~lfoStopAll.() }; +~vcfOff !? { ~vcfOff.() }; +~melTrackChoke !? { ~melTrackChoke.() }; +[\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; +~track !? { ~track.stop }; +~masterLim !? { ~masterLim.free; ~masterLim = nil }; +~scBus !? { ~scBus.free; ~scBus = nil }; +"=== SET TERMINE -- merci ===".postln; +) diff --git a/sound_algo/fx/_index.scd b/sound_algo/fx/_index.scd new file mode 100644 index 0000000..552ed45 --- /dev/null +++ b/sound_algo/fx/_index.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// fx/_index.scd -- Auto-glob loader pour tous les FX SynthDef +// +// Charge recursivement chaque .scd des sous-dossiers (bus/, insert/, +// trick/). Ajouter un nouveau FX = juste creer le fichier, pas besoin +// de modifier ce loader. +// ===================================================================== +( +PathName(thisProcess.nowExecutingPath.dirname).deepFiles + .select { |f| f.extension == "scd" + and: { f.fileName != "_index.scd" } } + .sort { |a, b| a.fullPath < b.fullPath } + .do { |f| f.fullPath.load }; +"=== fx/ loaded ===".postln; +) diff --git a/sound_algo/fx/bus/fx_bitcrush.scd b/sound_algo/fx/bus/fx_bitcrush.scd new file mode 100644 index 0000000..fe8f88c --- /dev/null +++ b/sound_algo/fx/bus/fx_bitcrush.scd @@ -0,0 +1,16 @@ +// ===================================================================== +// fx/bus/fx_bitcrush.scd -- SynthDef \fxBitcrush +// Extracted from fx_bus.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxBitcrush, { + arg in, out = 0, bits = 8, sampleRate = 8000, + mix = 0.6, amp = 1.0; + var dry = In.ar(in, 2); + // Bit reduction native (sans Decimator de sc3-plugins) + var step = 2.pow(bits - 1); + var crushed = (dry * step).round / step; + var sig = Latch.ar(crushed, Impulse.ar(sampleRate)); + Out.ar(out, ((dry * (1 - mix)) + (sig * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/bus/fx_chorus.scd b/sound_algo/fx/bus/fx_chorus.scd new file mode 100644 index 0000000..bd3f183 --- /dev/null +++ b/sound_algo/fx/bus/fx_chorus.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// fx/bus/fx_chorus.scd -- SynthDef \fxChorus +// Extracted from fx_bus.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxChorus, { + arg in, out = 0, rate = 0.4, depth = 0.005, + mix = 0.5, amp = 1.0; + var sig = In.ar(in, 2); + var l = DelayC.ar(sig[0], 0.05, SinOsc.kr(rate, 0).range(0.005, 0.005 + depth)); + var r = DelayC.ar(sig[1], 0.05, SinOsc.kr(rate, pi).range(0.005, 0.005 + depth)); + var wet = [l, r]; + Out.ar(out, ((sig * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/bus/fx_delay.scd b/sound_algo/fx/bus/fx_delay.scd new file mode 100644 index 0000000..07c399c --- /dev/null +++ b/sound_algo/fx/bus/fx_delay.scd @@ -0,0 +1,21 @@ +// ===================================================================== +// fx/bus/fx_delay.scd -- SynthDef \fxDelay +// Extracted from fx_bus.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxDelay, { + arg in, out = 0, delayTime = 0.375, feedback = 0.5, + mix = 0.5, color = 0.3, amp = 1.0; + var dry, wet, l, r, fb; + dry = In.ar(in, 2); + fb = LocalIn.ar(2); // vrai feedback stereo + l = DelayC.ar(fb[1] + dry[0], 2.0, delayTime) * feedback; // ping + r = DelayC.ar(fb[0] + dry[1], 2.0, delayTime) * feedback; // pong + // Color : LPF pour effet tape vintage + l = LPF.ar(l, color.linexp(0, 1, 800, 16000)); + r = LPF.ar(r, color.linexp(0, 1, 800, 16000)); + LocalOut.ar([l, r]); + wet = [l, r]; + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/bus/fx_dist.scd b/sound_algo/fx/bus/fx_dist.scd new file mode 100644 index 0000000..e28eaeb --- /dev/null +++ b/sound_algo/fx/bus/fx_dist.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// fx/bus/fx_dist.scd -- SynthDef \fxDist +// Extracted from fx_bus.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxDist, { + arg in, out = 0, drive = 3.0, tone = 0.5, + mix = 1.0, amp = 1.0; + var dry = In.ar(in, 2); + var sig = (dry * drive).tanh; + sig = (sig * 1.5).tanh; + sig = MoogFF.ar(sig, tone.linexp(0, 1, 500, 12000), 1.5); + Out.ar(out, ((dry * (1 - mix)) + (sig * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/bus/fx_flanger.scd b/sound_algo/fx/bus/fx_flanger.scd new file mode 100644 index 0000000..01e6c12 --- /dev/null +++ b/sound_algo/fx/bus/fx_flanger.scd @@ -0,0 +1,16 @@ +// ===================================================================== +// fx/bus/fx_flanger.scd -- SynthDef \fxFlanger +// Extracted from fx_bus.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxFlanger, { + arg in, out = 0, rate = 0.2, depth = 0.003, feedback = 0.6, + mix = 0.5, amp = 1.0; + var dry = In.ar(in, 2); + var lfo = SinOsc.kr(rate).range(0.0005, 0.0005 + depth); + var fb = LocalIn.ar(2) * feedback; + var sig = DelayC.ar(dry + fb, 0.02, lfo); + LocalOut.ar(sig); + Out.ar(out, ((dry * (1 - mix)) + (sig * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/bus/fx_phaser.scd b/sound_algo/fx/bus/fx_phaser.scd new file mode 100644 index 0000000..fa85c64 --- /dev/null +++ b/sound_algo/fx/bus/fx_phaser.scd @@ -0,0 +1,18 @@ +// ===================================================================== +// fx/bus/fx_phaser.scd -- SynthDef \fxPhaser +// Extracted from fx_bus.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxPhaser, { + arg in, out = 0, rate = 0.3, depth = 0.7, feedback = 0.4, + mix = 0.5, amp = 1.0; + var dry = In.ar(in, 2); + var lfo = SinOsc.kr(rate).range(200, 200 + (3000 * depth)); + var sig = AllpassN.ar(dry, 0.01, lfo.reciprocal, 0.05); + sig = AllpassN.ar(sig, 0.01, (lfo * 1.3).reciprocal, 0.05); + sig = AllpassN.ar(sig, 0.01, (lfo * 1.7).reciprocal, 0.05); + sig = AllpassN.ar(sig + (LocalIn.ar(2) * feedback), 0.01, (lfo * 2.1).reciprocal, 0.05); + LocalOut.ar(sig); + Out.ar(out, ((dry * (1 - mix)) + (sig * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/bus/fx_reverb.scd b/sound_algo/fx/bus/fx_reverb.scd new file mode 100644 index 0000000..4c01dc6 --- /dev/null +++ b/sound_algo/fx/bus/fx_reverb.scd @@ -0,0 +1,16 @@ +// ===================================================================== +// fx/bus/fx_reverb.scd -- SynthDef \fxReverb +// Extracted from fx_bus.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxReverb, { + arg in, out = 0, mix = 0.4, room = 0.85, damp = 0.4, + freeze = 0, amp = 1.0; + var sig = In.ar(in, 2); + sig = FreeVerb2.ar(sig[0], sig[1], + Select.kr(freeze, [mix, 1.0]), + Select.kr(freeze, [room, 0.999]), + Select.kr(freeze, [damp, 0.001])); + Out.ar(out, sig * amp); +}).add; +) diff --git a/sound_algo/fx/bus/fx_send.scd b/sound_algo/fx/bus/fx_send.scd new file mode 100644 index 0000000..2858cec --- /dev/null +++ b/sound_algo/fx/bus/fx_send.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// fx/bus/fx_send.scd -- SynthDef \fxSend +// Extracted from fx_bus.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxSend, { + arg srcBus = 0, dstBus, amount = 0.3; + var sig = In.ar(srcBus, 2); + Out.ar(dstBus, sig * amount); +}).add; +) diff --git a/sound_algo/fx/bus/fx_shimmer.scd b/sound_algo/fx/bus/fx_shimmer.scd new file mode 100644 index 0000000..9b680ef --- /dev/null +++ b/sound_algo/fx/bus/fx_shimmer.scd @@ -0,0 +1,14 @@ +// ===================================================================== +// fx/bus/fx_shimmer.scd -- SynthDef \fxShimmer +// Extracted from fx_bus.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxShimmer, { + arg in, out = 0, mix = 0.5, room = 0.92, shimmer = 0.5, amp = 1.0; + var dry = In.ar(in, 2); + var pitched = PitchShift.ar(dry, 0.2, 2, 0.01, 0.005) * shimmer; + var sig = FreeVerb2.ar(dry[0] + pitched[0], dry[1] + pitched[1], + 1.0, room, 0.3); + Out.ar(out, ((dry * (1 - mix)) + (sig * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/bus/fx_tape.scd b/sound_algo/fx/bus/fx_tape.scd new file mode 100644 index 0000000..96d98b1 --- /dev/null +++ b/sound_algo/fx/bus/fx_tape.scd @@ -0,0 +1,18 @@ +// ===================================================================== +// fx/bus/fx_tape.scd -- SynthDef \fxTape +// Extracted from fx_bus.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxTape, { + arg in, out = 0, drive = 1.5, wow = 0.0015, flutter = 0.0008, + mix = 1.0, amp = 1.0; + var dry = In.ar(in, 2); + var modL = SinOsc.kr(0.3).range(0, wow) + LFNoise2.kr(8).range(0, flutter); + var modR = SinOsc.kr(0.31).range(0, wow) + LFNoise2.kr(8).range(0, flutter); + var sig = [DelayC.ar(dry[0], 0.02, 0.005 + modL), + DelayC.ar(dry[1], 0.02, 0.005 + modR)]; + sig = (sig * drive).tanh / drive.sqrt; + sig = LPF.ar(sig, 12000); // EQ tape rolloff aigu + Out.ar(out, ((dry * (1 - mix)) + (sig * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_auto_filter.scd b/sound_algo/fx/insert/fx_auto_filter.scd new file mode 100644 index 0000000..b03bc62 --- /dev/null +++ b/sound_algo/fx/insert/fx_auto_filter.scd @@ -0,0 +1,14 @@ +// ===================================================================== +// fx/insert/fx_auto_filter.scd -- SynthDef \fxAutoFilter +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxAutoFilter, { + arg in, out = 0, rate = 0.5, lo = 200, hi = 4000, q = 0.4, + mix = 0.7, amp = 1.0; + var dry = In.ar(in, 2); + var lfo = SinOsc.kr(rate).range(lo, hi); + var wet = RLPF.ar(dry, lfo, q.clip(0.05, 1.5)); + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_autopan.scd b/sound_algo/fx/insert/fx_autopan.scd new file mode 100644 index 0000000..07db994 --- /dev/null +++ b/sound_algo/fx/insert/fx_autopan.scd @@ -0,0 +1,13 @@ +// ===================================================================== +// fx/insert/fx_autopan.scd -- SynthDef \fxAutopan +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxAutopan, { + arg in, out = 0, rate = 0.3, depth = 1.0, mix = 1.0, amp = 1.0; + var dry = In.ar(in, 2); + var p = SinOsc.kr(rate) * depth; + var wet = Balance2.ar(dry[0], dry[1], p); + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_comb.scd b/sound_algo/fx/insert/fx_comb.scd new file mode 100644 index 0000000..2c23a5e --- /dev/null +++ b/sound_algo/fx/insert/fx_comb.scd @@ -0,0 +1,12 @@ +// ===================================================================== +// fx/insert/fx_comb.scd -- SynthDef \fxComb +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxComb, { + arg in, out = 0, freq = 220, decay = 1.0, mix = 0.5, amp = 1.0; + var dry = In.ar(in, 2); + var wet = CombC.ar(dry, 0.05, freq.reciprocal.clip(0.0001, 0.05), decay); + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_formant.scd b/sound_algo/fx/insert/fx_formant.scd new file mode 100644 index 0000000..00bd94c --- /dev/null +++ b/sound_algo/fx/insert/fx_formant.scd @@ -0,0 +1,18 @@ +// ===================================================================== +// fx/insert/fx_formant.scd -- SynthDef \fxFormant +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxFormant, { + arg in, out = 0, vowel = 0, q = 0.15, mix = 0.5, amp = 1.0; + var dry = In.ar(in, 2); + var f1 = Select.kr(vowel, [800, 400, 350, 450, 325]); + var f2 = Select.kr(vowel, [1150, 1700, 1900, 800, 700]); + var f3 = Select.kr(vowel, [2900, 2600, 2500, 2830, 2530]); + var wet = BPF.ar(dry, f1, q) + + BPF.ar(dry, f2, q) * 0.7 + + BPF.ar(dry, f3, q) * 0.4; + wet = wet * 1.5; + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_freq_shift.scd b/sound_algo/fx/insert/fx_freq_shift.scd new file mode 100644 index 0000000..681f679 --- /dev/null +++ b/sound_algo/fx/insert/fx_freq_shift.scd @@ -0,0 +1,12 @@ +// ===================================================================== +// fx/insert/fx_freq_shift.scd -- SynthDef \fxFreqShift +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxFreqShift, { + arg in, out = 0, shift = 100, mix = 0.5, amp = 1.0; + var dry = In.ar(in, 2); + var wet = FreqShift.ar(dry, shift); + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_gran.scd b/sound_algo/fx/insert/fx_gran.scd new file mode 100644 index 0000000..2f35ac6 --- /dev/null +++ b/sound_algo/fx/insert/fx_gran.scd @@ -0,0 +1,13 @@ +// ===================================================================== +// fx/insert/fx_gran.scd -- SynthDef \fxGran +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxGran, { + arg in, out = 0, grainDur = 0.1, density = 30, pitch = 1.0, + mix = 0.5, amp = 1.0; + var dry = In.ar(in, 2); + var wet = PitchShift.ar(dry, grainDur, pitch, 0.05, 0.05); + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_plate.scd b/sound_algo/fx/insert/fx_plate.scd new file mode 100644 index 0000000..9e8debe --- /dev/null +++ b/sound_algo/fx/insert/fx_plate.scd @@ -0,0 +1,14 @@ +// ===================================================================== +// fx/insert/fx_plate.scd -- SynthDef \fxPlate +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxPlate, { + arg in, out = 0, decay = 2.5, damp = 0.3, mix = 0.4, amp = 1.0; + var dry = In.ar(in, 2); + var wet = FreeVerb2.ar(dry[0], dry[1], 1.0, + decay.linlin(0.5, 5.0, 0.7, 0.95), damp); + wet = HPF.ar(wet, 80); + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_resonator.scd b/sound_algo/fx/insert/fx_resonator.scd new file mode 100644 index 0000000..03bac7d --- /dev/null +++ b/sound_algo/fx/insert/fx_resonator.scd @@ -0,0 +1,18 @@ +// ===================================================================== +// fx/insert/fx_resonator.scd -- SynthDef \fxResonator +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxResonator, { + arg in, out = 0, freq = 220, decay = 2.0, mix = 0.4, amp = 1.0; + var dry = In.ar(in, 2); + var ratios = [1, 1.5, 2.01, 2.5, 3.01]; + var amps = [1, 0.6, 0.4, 0.3, 0.2]; + var ringL = Klank.ar(`[ratios * freq, amps, ratios.collect { decay }], + dry[0] * 0.1); + var ringR = Klank.ar(`[ratios * freq, amps, ratios.collect { decay }], + dry[1] * 0.1); + var wet = [ringL, ringR]; + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_ring_mod.scd b/sound_algo/fx/insert/fx_ring_mod.scd new file mode 100644 index 0000000..99b7255 --- /dev/null +++ b/sound_algo/fx/insert/fx_ring_mod.scd @@ -0,0 +1,12 @@ +// ===================================================================== +// fx/insert/fx_ring_mod.scd -- SynthDef \fxRingMod +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxRingMod, { + arg in, out = 0, freq = 200, modAmt = 1.0, mix = 0.5, amp = 1.0; + var dry = In.ar(in, 2); + var wet = dry * SinOsc.ar(freq) * modAmt; + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_spring_rev.scd b/sound_algo/fx/insert/fx_spring_rev.scd new file mode 100644 index 0000000..6958b89 --- /dev/null +++ b/sound_algo/fx/insert/fx_spring_rev.scd @@ -0,0 +1,18 @@ +// ===================================================================== +// fx/insert/fx_spring_rev.scd -- SynthDef \fxSpringRev +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxSpringRev, { + arg in, out = 0, decay = 1.5, mix = 0.4, amp = 1.0; + var dry = In.ar(in, 2); + var wet = dry; + // chaine d'allpass typique d'un spring tank + [0.013, 0.029, 0.041, 0.067, 0.089].do { |t| + wet = AllpassN.ar(wet, 0.1, t, decay); + }; + wet = HPF.ar(wet, 200); // pas de basses dans un spring + wet = LPF.ar(wet, 4500); + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_stutter.scd b/sound_algo/fx/insert/fx_stutter.scd new file mode 100644 index 0000000..4b3f675 --- /dev/null +++ b/sound_algo/fx/insert/fx_stutter.scd @@ -0,0 +1,13 @@ +// ===================================================================== +// fx/insert/fx_stutter.scd -- SynthDef \fxStutter +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxStutter, { + arg in, out = 0, rate = 8, dutyCycle = 0.5, mix = 1.0, amp = 1.0; + var dry = In.ar(in, 2); + var gate = LFPulse.kr(rate, 0, dutyCycle); + var wet = dry * gate; + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/fx_tremolo.scd b/sound_algo/fx/insert/fx_tremolo.scd new file mode 100644 index 0000000..7977422 --- /dev/null +++ b/sound_algo/fx/insert/fx_tremolo.scd @@ -0,0 +1,13 @@ +// ===================================================================== +// fx/insert/fx_tremolo.scd -- SynthDef \fxTremolo +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxTremolo, { + arg in, out = 0, rate = 5, depth = 0.7, mix = 1.0, amp = 1.0; + var dry = In.ar(in, 2); + var lfo = SinOsc.kr(rate).range(1 - depth, 1); + var wet = dry * lfo; + Out.ar(out, ((dry * (1 - mix)) + (wet * mix)) * amp); +}).add; +) diff --git a/sound_algo/fx/insert/vcf_bpf.scd b/sound_algo/fx/insert/vcf_bpf.scd new file mode 100644 index 0000000..cf776cd --- /dev/null +++ b/sound_algo/fx/insert/vcf_bpf.scd @@ -0,0 +1,12 @@ +// ===================================================================== +// fx/insert/vcf_bpf.scd -- SynthDef \vcfBpf +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\vcfBpf, { + arg busIn = 0, freq = 1000, q = 0.3, mix = 1.0; + var sig = In.ar(busIn, 2); + var wet = BPF.ar(sig, freq.clip(40, 18000), q.clip(0.05, 2)) * 1.5; + ReplaceOut.ar(busIn, (sig * (1 - mix)) + (wet * mix)); +}).add; +) diff --git a/sound_algo/fx/insert/vcf_comb.scd b/sound_algo/fx/insert/vcf_comb.scd new file mode 100644 index 0000000..2c0a6f4 --- /dev/null +++ b/sound_algo/fx/insert/vcf_comb.scd @@ -0,0 +1,12 @@ +// ===================================================================== +// fx/insert/vcf_comb.scd -- SynthDef \vcfComb +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\vcfComb, { + arg busIn = 0, freq = 220, decay = 1.0, mix = 0.6; + var sig = In.ar(busIn, 2); + var wet = CombC.ar(sig, 0.05, freq.reciprocal.clip(0.0001, 0.05), decay); + ReplaceOut.ar(busIn, (sig * (1 - mix)) + (wet * mix)); +}).add; +) diff --git a/sound_algo/fx/insert/vcf_formant.scd b/sound_algo/fx/insert/vcf_formant.scd new file mode 100644 index 0000000..6c0cfd2 --- /dev/null +++ b/sound_algo/fx/insert/vcf_formant.scd @@ -0,0 +1,18 @@ +// ===================================================================== +// fx/insert/vcf_formant.scd -- SynthDef \vcfFormant +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\vcfFormant, { + arg busIn = 0, vowel = 0, q = 0.15, mix = 1.0; + var sig = In.ar(busIn, 2); + var f1 = Select.kr(vowel, [800, 400, 350, 450, 325]); + var f2 = Select.kr(vowel, [1150, 1700, 1900, 800, 700]); + var f3 = Select.kr(vowel, [2900, 2600, 2500, 2830, 2530]); + var wet = BPF.ar(sig, f1, q) * 1.0 + + BPF.ar(sig, f2, q) * 0.7 + + BPF.ar(sig, f3, q) * 0.4; + wet = wet * 1.5; + ReplaceOut.ar(busIn, (sig * (1 - mix)) + (wet * mix)); +}).add; +) diff --git a/sound_algo/fx/insert/vcf_hpf.scd b/sound_algo/fx/insert/vcf_hpf.scd new file mode 100644 index 0000000..5901fe7 --- /dev/null +++ b/sound_algo/fx/insert/vcf_hpf.scd @@ -0,0 +1,12 @@ +// ===================================================================== +// fx/insert/vcf_hpf.scd -- SynthDef \vcfHpf +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\vcfHpf, { + arg busIn = 0, freq = 200, q = 0.5, mix = 1.0; + var sig = In.ar(busIn, 2); + var wet = RHPF.ar(sig, freq.clip(20, 18000), q.clip(0.05, 2)); + ReplaceOut.ar(busIn, (sig * (1 - mix)) + (wet * mix)); +}).add; +) diff --git a/sound_algo/fx/insert/vcf_ladder.scd b/sound_algo/fx/insert/vcf_ladder.scd new file mode 100644 index 0000000..2535e76 --- /dev/null +++ b/sound_algo/fx/insert/vcf_ladder.scd @@ -0,0 +1,13 @@ +// ===================================================================== +// fx/insert/vcf_ladder.scd -- SynthDef \vcfLadder +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\vcfLadder, { + arg busIn = 0, freq = 1500, q = 1.0, mix = 1.0, drive = 1.0; + var sig = In.ar(busIn, 2); + var wet = LPF.ar(LPF.ar(sig * drive, freq), freq); + wet = wet + (RHPF.ar(wet, freq, q.reciprocal.clip(0.1, 2)) * (q * 0.3)); + ReplaceOut.ar(busIn, (sig * (1 - mix)) + (wet * mix)); +}).add; +) diff --git a/sound_algo/fx/insert/vcf_moog.scd b/sound_algo/fx/insert/vcf_moog.scd new file mode 100644 index 0000000..67839e8 --- /dev/null +++ b/sound_algo/fx/insert/vcf_moog.scd @@ -0,0 +1,12 @@ +// ===================================================================== +// fx/insert/vcf_moog.scd -- SynthDef \vcfMoog +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\vcfMoog, { + arg busIn = 0, freq = 1500, gain = 2.0, mix = 1.0, drive = 1.0; + var sig = In.ar(busIn, 2); + var wet = MoogFF.ar(sig * drive, freq.clip(40, 18000), gain.clip(0, 4)); + ReplaceOut.ar(busIn, (sig * (1 - mix)) + (wet * mix)); +}).add; +) diff --git a/sound_algo/fx/insert/vcf_ms20.scd b/sound_algo/fx/insert/vcf_ms20.scd new file mode 100644 index 0000000..f85769c --- /dev/null +++ b/sound_algo/fx/insert/vcf_ms20.scd @@ -0,0 +1,14 @@ +// ===================================================================== +// fx/insert/vcf_ms20.scd -- SynthDef \vcfMs20 +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\vcfMs20, { + arg busIn = 0, freq = 1500, q = 1.5, mix = 1.0, drive = 1.2; + var sig = In.ar(busIn, 2); + var wet = (sig * drive).tanh; + wet = RLPF.ar(wet, freq.clip(40, 18000), q.reciprocal.clip(0.05, 1.5)); + wet = (wet * 1.3).tanh; + ReplaceOut.ar(busIn, (sig * (1 - mix)) + (wet * mix)); +}).add; +) diff --git a/sound_algo/fx/insert/vcf_notch.scd b/sound_algo/fx/insert/vcf_notch.scd new file mode 100644 index 0000000..ab106bb --- /dev/null +++ b/sound_algo/fx/insert/vcf_notch.scd @@ -0,0 +1,12 @@ +// ===================================================================== +// fx/insert/vcf_notch.scd -- SynthDef \vcfNotch +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\vcfNotch, { + arg busIn = 0, freq = 1000, q = 0.3, mix = 1.0; + var sig = In.ar(busIn, 2); + var wet = BRF.ar(sig, freq.clip(40, 18000), q.clip(0.05, 2)); + ReplaceOut.ar(busIn, (sig * (1 - mix)) + (wet * mix)); +}).add; +) diff --git a/sound_algo/fx/trick/crash.scd b/sound_algo/fx/trick/crash.scd new file mode 100644 index 0000000..3101aa9 --- /dev/null +++ b/sound_algo/fx/trick/crash.scd @@ -0,0 +1,14 @@ +// ===================================================================== +// fx/trick/crash.scd -- SynthDef \crash +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\crash, { + arg hpf = 4000, decay = 1.5, amp = 0.3, pan = 0; + var sig, env; + sig = HPF.ar(WhiteNoise.ar + (PinkNoise.ar * 0.5), hpf); + sig = BPF.ar(sig, 7000, 0.4) + (sig * 0.3); + env = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + Out.ar(0, Pan2.ar(sig * env * amp, pan)); + }).add; +) diff --git a/sound_algo/fx/trick/fx_master_bitcrush.scd b/sound_algo/fx/trick/fx_master_bitcrush.scd new file mode 100644 index 0000000..eb21c5d --- /dev/null +++ b/sound_algo/fx/trick/fx_master_bitcrush.scd @@ -0,0 +1,17 @@ +// ===================================================================== +// fx/trick/fx_master_bitcrush.scd -- SynthDef \fxMasterBitcrush +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxMasterBitcrush, { + arg dur = 1, bits = 6, sr = 6000, mix = 0.7; + var sig = In.ar(0, 2); + // Bit + SR reduction native (sans Decimator de sc3-plugins) + var step = 2.pow(bits - 1); + var crushed = (sig * step).round / step; + var wet = Latch.ar(crushed, Impulse.ar(sr)); + var env = EnvGen.kr(Env.linen(0.01, dur, 0.05), doneAction: 2); + ReplaceOut.ar(0, ((sig * (1 - mix)) + (wet * mix)) * env + + (sig * (1 - env))); +}).add; +) diff --git a/sound_algo/fx/trick/fx_master_freq_shift.scd b/sound_algo/fx/trick/fx_master_freq_shift.scd new file mode 100644 index 0000000..056afeb --- /dev/null +++ b/sound_algo/fx/trick/fx_master_freq_shift.scd @@ -0,0 +1,13 @@ +// ===================================================================== +// fx/trick/fx_master_freq_shift.scd -- SynthDef \fxMasterFreqShift +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxMasterFreqShift, { + arg dur = 1, shift = 100; + var sig = In.ar(0, 2); + var wet = FreqShift.ar(sig, shift); + var env = EnvGen.kr(Env.linen(0.01, dur, 0.05), doneAction: 2); + ReplaceOut.ar(0, XFade2.ar(sig, wet, env.linlin(0, 1, -1, 1))); +}).add; +) diff --git a/sound_algo/fx/trick/fx_master_gran.scd b/sound_algo/fx/trick/fx_master_gran.scd new file mode 100644 index 0000000..4b36a71 --- /dev/null +++ b/sound_algo/fx/trick/fx_master_gran.scd @@ -0,0 +1,13 @@ +// ===================================================================== +// fx/trick/fx_master_gran.scd -- SynthDef \fxMasterGran +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxMasterGran, { + arg dur = 2, grainDur = 0.1, pitch = 1.0; + var sig = In.ar(0, 2); + var wet = PitchShift.ar(sig, grainDur, pitch, 0.05, 0.05); + var env = EnvGen.kr(Env.linen(0.01, dur, 0.05), doneAction: 2); + ReplaceOut.ar(0, XFade2.ar(sig, wet, env.linlin(0, 1, -1, 1))); +}).add; +) diff --git a/sound_algo/fx/trick/fx_master_pitch.scd b/sound_algo/fx/trick/fx_master_pitch.scd new file mode 100644 index 0000000..c513dce --- /dev/null +++ b/sound_algo/fx/trick/fx_master_pitch.scd @@ -0,0 +1,13 @@ +// ===================================================================== +// fx/trick/fx_master_pitch.scd -- SynthDef \fxMasterPitch +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxMasterPitch, { + arg dur = 2, pitch = 1.0, releaseTime = 0.05; + var sig = In.ar(0, 2); + var wet = PitchShift.ar(sig, 0.2, pitch, 0.01, 0.005); + var env = EnvGen.kr(Env.linen(0.01, dur, releaseTime), doneAction: 2); + ReplaceOut.ar(0, XFade2.ar(sig, wet, env.linlin(0, 1, -1, 1))); +}).add; +) diff --git a/sound_algo/fx/trick/fx_master_ring.scd b/sound_algo/fx/trick/fx_master_ring.scd new file mode 100644 index 0000000..f76e637 --- /dev/null +++ b/sound_algo/fx/trick/fx_master_ring.scd @@ -0,0 +1,14 @@ +// ===================================================================== +// fx/trick/fx_master_ring.scd -- SynthDef \fxMasterRing +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fxMasterRing, { + arg dur = 1, freq = 200, mix = 0.7; + var sig = In.ar(0, 2); + var wet = sig * SinOsc.ar(freq); + var env = EnvGen.kr(Env.linen(0.01, dur, 0.05), doneAction: 2); + ReplaceOut.ar(0, ((sig * (1 - mix)) + (wet * mix)) * env + + (sig * (1 - env))); +}).add; +) diff --git a/sound_algo/fx/trick/impact.scd b/sound_algo/fx/trick/impact.scd new file mode 100644 index 0000000..4e3b2ff --- /dev/null +++ b/sound_algo/fx/trick/impact.scd @@ -0,0 +1,20 @@ +// ===================================================================== +// fx/trick/impact.scd -- SynthDef \impact +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\impact, { + arg freq = 45, decay = 1.5, amp = 0.7, pan = 0; + var pitchEnv, body, noise, env, sig; + pitchEnv = EnvGen.kr(Env([freq * 5, freq * 0.5], [0.12], \exp)); + body = SinOsc.ar(pitchEnv); + noise = LPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.001, 0.4)); + sig = body + (noise * 0.5); + env = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = sig * env; + sig = (sig * 1.5).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); + }).add; +) diff --git a/sound_algo/fx/trick/riser.scd b/sound_algo/fx/trick/riser.scd new file mode 100644 index 0000000..669b723 --- /dev/null +++ b/sound_algo/fx/trick/riser.scd @@ -0,0 +1,21 @@ +// ===================================================================== +// fx/trick/riser.scd -- SynthDef \riser +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\riser, { + arg dur = 4, startCutoff = 300, endCutoff = 8000, + amp = 0.3, pan = 0; + var noise, cutoff, env, sig; + cutoff = Line.kr(startCutoff, endCutoff, dur).clip(20, 18000); + noise = (WhiteNoise.ar * 0.5) + (PinkNoise.ar * 0.3); + sig = HPF.ar(noise, cutoff); + sig = BPF.ar(sig, cutoff.min(15000), 0.4); + env = EnvGen.kr( + Env.new([0, 0.3, 1, 0], [dur * 0.5, dur * 0.45, dur * 0.05], \sin), + doneAction: 2 + ); + sig = LeakDC.ar(sig * env * amp); + Out.ar(0, Pan2.ar(sig, pan)); + }).add; +) diff --git a/sound_algo/fx/trick/scratch.scd b/sound_algo/fx/trick/scratch.scd new file mode 100644 index 0000000..bf3904a --- /dev/null +++ b/sound_algo/fx/trick/scratch.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// fx/trick/scratch.scd -- SynthDef \scratch +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\scratch, { + arg dur = 0.5, freq = 800, sweepDir = 1, amp = 0.3, pan = 0; + var sig, env, sweepFreq; + sweepFreq = Select.kr(sweepDir > 0, [ + Line.kr(freq * 2, freq * 0.5, dur), + Line.kr(freq * 0.5, freq * 2, dur) + ]); + sig = (SinOsc.ar(sweepFreq) * 0.5) + + (HPF.ar(WhiteNoise.ar, sweepFreq * 0.8) * 0.3); + sig = sig * LFPulse.kr(20).range(0.3, 1); // stutter + env = EnvGen.kr(Env.linen(0.005, dur, 0.02), doneAction: 2); + Out.ar(0, Pan2.ar(sig * env * amp, pan)); +}).add; +) diff --git a/sound_algo/fx/trick/sweep.scd b/sound_algo/fx/trick/sweep.scd new file mode 100644 index 0000000..ee3edd2 --- /dev/null +++ b/sound_algo/fx/trick/sweep.scd @@ -0,0 +1,17 @@ +// ===================================================================== +// fx/trick/sweep.scd -- SynthDef \sweep +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\sweep, { + arg dur = 4, startCutoff = 8000, endCutoff = 200, + amp = 0.25, pan = 0; + var noise, cutoff, env, sig; + cutoff = Line.kr(startCutoff, endCutoff, dur); + noise = WhiteNoise.ar + (PinkNoise.ar * 0.5); + sig = LPF.ar(noise, cutoff); + sig = BPF.ar(sig, cutoff * 1.2, 0.5); + env = EnvGen.kr(Env.linen(0.05, dur - 0.1, 0.05), doneAction: 2); + Out.ar(0, Pan2.ar(sig * env * amp, pan)); + }).add; +) diff --git a/sound_algo/live/CLAUDE.md b/sound_algo/live/CLAUDE.md new file mode 100644 index 0000000..c55006c --- /dev/null +++ b/sound_algo/live/CLAUDE.md @@ -0,0 +1,63 @@ +# live/ — API live performance + +Helpers pour mixer, FX, scenes, loops, tweaks, melodies live. +Charges via `00_load.scd` puis SETUP bloc par bloc. + +## Notation d'appel (CRITIQUE) + +SuperCollider Event pseudo-method ne passe PAS les args : + +```supercollider +~m.short.(50) // FAUX : ~m est passe comme 1er arg, 50 perdu +~m[\short].(50) // OK : notation indexee +~mShort.(50) // OK : variable env directe (alias prefere) +~mm.(50) // OK : alias court +``` + +Toute API exposee via `~xxx` doit avoir un wrapper env direct, +pas seulement une cle dans un dict. + +## Patterns + +- Chaque module expose un dict catalogue (`~m`, `~fx`, `~ch`, ...) + ET des wrappers env directs (`~mShort`, `~fxRev`, ...). +- SETUP en commentaire en haut du fichier, exemples en bas. +- VCF/FX inserent via `ReplaceOut.ar(busIn, ...)` (chain in-place). +- Sidechain : duck = `1 - (In.kr(scBus, 1) * scAmt)`. + +## 5 namespaces (cf `01_live.scd`) + +| Dict | Wrappers directs | Domaine | +| --- | --- | --- | +| `~kk.(\genre)` | `~kPat`, `~kTim`, `~kList` | Kicks (techno/gabber/dub/...) | +| `~mm.(N)` | `~mLong`, `~mXlong`, `~mEpic`, `~mRnd`, `~mGen`, `~mNx`, `~mPv`, `~mInst`, `~mHarm`, `~mAmp`, `~mCut`, `~mDrive`, `~mOff` | Melodies | +| `~ff.(\preset)` | `~fxSnd`, `~fxSt`, `~fxFreeze`, `~fxDrop`, `~fxBreakdown`, `~fxBuildup`, `~fxGlitch`, `~fxStutter`, `~fxVcfOn`, `~fxLfo`, `~fxCut`, `~fxRq`, `~fxDrive`, `~fxComp`, `~fxSat` | FX presets + tricks | +| `~cc` | `~chIntro`, `~chDrop`, `~chBreakdown`, `~chBuildup`, `~chTechno`, `~chDnb`, `~chOutroFade`, `~chStop` | Chains/sequences | +| `~p` | `~pKit`, `~pGenre`, `~pHat`, `~pSnare`, `~pClap`, `~pPerc`, `~pList` | Patterns rythmiques | + +Mixer : `~setVol`, `~mute`, `~solo`, `~mixPreset`, `~saveMix`, `~masterVol`, `~masterFade`. +LFO/VCF : `~lfoTo`, `~vcfOn`. Loops : `~loopOn`. Scenes : `~saveScene`, `~loadScene`. + +## Convention de renommage (clefs courtes = collisions Object/Server) + +Noms reserves SC (`s`=Server, `next`/`prev`/`set`/`send`/`tap`/`p`/`t`/`e`/`l`) +plantent comme cles d'Event. Renommages internes : + +| Ancien | Nouveau | +| --- | --- | +| `.p` | `.pat` | +| `.t` | `.tim` | +| `.s` | `.short` | +| `.l` | `.long` | +| `.x` | `.xlong` | +| `.e` | `.epic` | +| `.r` | `.rnd` | +| `.next` / `.prev` | `.nx` / `.pv` | +| `.send` / `.set` / `.tap` | `.snd` / `.st` / `.tp` | + +## Anti-patterns + +- Ne pas appeler `~dict.key.(args)` -- les args sont avales +- Ne pas oublier le wrapper env direct (`~mShort`) en plus de la cle +- Ne pas charger live/*.scd avant `engine.scd` + `fx_bus.scd` +- Ne pas mute un `~xxx` sans `~reload.value` si lie a un Pdef diff --git a/sound_algo/live/_load.scd b/sound_algo/live/_load.scd new file mode 100644 index 0000000..6aa2aab --- /dev/null +++ b/sound_algo/live/_load.scd @@ -0,0 +1,162 @@ +// ===================================================================== +// live/_load.scd -- CHARGEMENT COMPLET LIVE en un Cmd+Entree +// +// IDEMPOTENT : detecte si le bootstrap a deja tourne (via ~setupAll_done) +// et ne refait pas le travail inutilement. +// +// Fait : +// 1. Set ~base si nil +// 2. Si pas deja boote : charge engine + synthdefs + scales + melodies +// + harmonics + setup.scd, puis ~setupAll.() +// (~setupAll charge fx_bus / live / mixer / scenes / loops / fills / +// sequences / jump + les 5 wrappers ~kk/~mm/~ff/~cc/~p) +// 3. Polling sur ~kk (defini en DERNIER par liveSetup async) pour +// confirmer que tout est charge +// 4. Ouvre les fichiers essentiels dans l'editeur SC +// 5. Affiche "=== LIVE READY ===" +// +// Utilisation : +// (~base ++ "live/_load.scd").load; +// OU +// "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/live/_load.scd".load; +// ===================================================================== +( +~base = ~base ?? { "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/" }; + +Routine({ + var maxWait = 30, waited = 0; + + if (~setupAll_done == true and: { ~kk.notNil }) { + "[live/_load] bootstrap deja fait, skip".postln; + } { + // --- 1. Modules .load-compatibles ------------------------------- + "[live/_load] engine + synthdefs + palette ...".postln; + (~base ++ "engine.scd").load; + (~base ++ "synth/_index.scd").load; + (~base ++ "fx/_index.scd").load; + (~base ++ "palette/scales.scd").load; + (~base ++ "palette/melodies/index.scd").load; + (~base ++ "palette/harmonics/index.scd").load; + + // --- 2. setup.scd : definit ~check / ~setupAll / ~teardown ----- + "[live/_load] setup.scd ...".postln; + (~base ++ "setup.scd").load; + + // --- 3. ~setupAll : boot serveur + charge tous modules live + -- + // les 5 wrappers (~kk / ~mm / ~ff / ~cc / ~p) + // liveSetup tourne dans s.waitForBoot{}, donc async. + "[live/_load] ~setupAll (boot + modules live + wrappers) ...".postln; + ~setupAll.(); + + // --- 4. Polling : ~kk est defini en DERNIER par liveSetup ------ + // (apres tous les autres modules + apres ~loadFirstBlock kicks). + // Quand ~kk est non-nil, liveSetup a TOUT charge. + while { ~kk.isNil and: { waited < maxWait } } { + 0.2.wait; + waited = waited + 0.2; + }; + if (~kk.isNil) { + ("[live/_load] !! timeout " ++ maxWait + ++ "s sur ~kk. liveSetup a peut-etre echoue.").postln; + } { + ~setupAll_done = true; + }; + }; + + if (s.serverRunning) { s.sync }; + + // --- 4a. Albums (catalogue 23 albums × 15 tracks) ------------------- + "[live/_load] tracks/_index.scd ...".postln; + { + var path = ~base ++ "tracks/_index.scd"; + if (File.exists(path)) { + try { path.load } { |err| + ("[live/_load] !! erreur load tracks/_index: " ++ err.errorString).postln; + }; + } { ("[live/_load] !! manquant : " ++ path).postln }; + }.value; + + // --- 4b. Pont web (OSC bridge + serveur Node + UI control/hydra) ---- + "[live/_load] web_bridge ...".postln; + { + var path = ~base ++ "web_bridge.scd"; + if (File.exists(path)) { + try { path.load } { |err| + ("[live/_load] !! erreur load web_bridge: " ++ err.errorString).postln; + }; + // ~webStart est expose par web_bridge.scd : lance Node + ouvre les pages + currentEnvironment[\webStart] !? { ~webStart.value } ?? { + "[live/_load] !! ~webStart absent (web_bridge mal charge)".postln; + }; + } { ("[live/_load] !! manquant : " ++ path).postln }; + }.value; + + // --- 4c. Auto-PLAY : demarre les sequenceurs immediatement --------- + "[live/_load] auto-play sequenceurs ...".postln; + { + // Defaults pour les patterns si non definis (kicks 4/4 minimum) + ~kickSteps = ~kickSteps ? (1!16); + ~hatSteps = ~hatSteps ? (0!16); + ~snareSteps = ~snareSteps ? (0!16); + ~clapSteps = ~clapSteps ? (0!16); + ~percSteps = ~percSteps ? (0!16); + ~acidNotes = ~acidNotes ? (0!16); + ~melodyNotes = ~melodyNotes ? (0!32); + ~harmonyNotes = ~harmonyNotes ? (0!32); + TempoClock.default.tempo = (~bpm ? 128) / 60; + currentEnvironment[\reload] !? { ~reload.value }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play(quant: 4) }; + }.value; + + // --- 5. Ouvrir les fichiers essentiels dans l'editeur SC ------------ + // Document.open est IDE-only (ScIDE classique). En sclang CLI ou + // dans certaines extensions VSCode, la classe Document n'existe + // pas -> on skip silencieusement avec try{}. + // Ouvrir les fichiers essentiels dans l'editeur SC -- si Document + // est dispo. La classe Document n'existe pas en sclang CLI ni dans + // certaines extensions VSCode (pas de Qt charge) -> on skip. + { + var docClass = \Document.asClass; + if (docClass.notNil) { + "[live/_load] ouverture des fichiers essentiels dans l'IDE ...".postln; + [ + "01_live.scd", // tableau de bord live + "live/kicks.scd", // ~kk + "live/melodies.scd", // ~mm + "live/fx.scd", // ~ff + "live/chains.scd", // ~cc + "live/patterns.scd", // ~p + "live/live_fx_panel.scd", // panneau FX exhaustif + "live/mixer.scd", // ~setVol / ~mixPreset + "live/scenes.scd", // ~saveScene / ~loadScene + "live/tweaks.scd", // tweaks Cmd+Entree par bloc + "control/jump.scd", // ~jumpTo + "palette/rhythm/_index.scd", // ~snareFill / ~tomFill / ~seqPlay / ... + ].do { |path| + var full = ~base ++ path; + if (File.exists(full)) { + try { docClass.perform(\open, full) } { |err| + (" [skip Document.open] " ++ path).postln; + }; + } { (" [skip] " ++ path ++ " inexistant").postln }; + }; + } { + "[live/_load] Document indisponible (sclang CLI ou VSCode sans IDE) -- skip ouverture".postln; + }; + }.value; + + "".postln; + "=== LIVE READY ===".postln; + " Wrappers : ~kk(kicks) ~mm(melodies) ~ff(fx) ~cc(chains) ~p(patterns)".postln; + " Mixer : ~setVol ~mute ~solo ~mixPreset ~masterVol".postln; + " Live : ~lfoTo ~vcfOn ~drop ~breakdown ~buildup".postln; + " Guard : ~killAllOrphans ~memReport ~watchdogOn ~watchdogOff".postln; + " Scenes : ~saveScene ~loadScene ~listScenes".postln; + " Jump : ~jumpTo.(\\X, \\section_slug)".postln; + " Status : ~check.()".postln; + " Stop : ~teardown.()".postln; + " Web : http://localhost:3000/control/ (UI live)".postln; + " -> ouvre 01_live.scd pour les blocs Cmd+Entree prets a l'emploi".postln; +}).play(AppClock); +) diff --git a/sound_algo/live/chains.scd b/sound_algo/live/chains.scd new file mode 100644 index 0000000..c521c3a --- /dev/null +++ b/sound_algo/live/chains.scd @@ -0,0 +1,174 @@ +// ===================================================================== +// live/chains.scd -- CHAINS / SEQUENCES LIVE (API ultra-courte) +// +// ATTENTION SC -- noter la notation des appels : +// +// NE MARCHE PAS : ~ch.drop.() ou ~cc.drop.() +// -> SC passe l'event ~ch comme 1er arg, et les vrais args sont +// PERDUS (test empirique sur SC 3.14.1). +// -> Pour les fonctions sans args (~ch[\drop]), l'effet visible +// peut etre OK, MAIS pour celles avec args (~ch[\buildup].(8)) +// l'arg est silencieusement perdu. +// +// MARCHE BIEN : ~ch[\drop].() (notation indexee) +// ~chDrop.() (variable env directe) +// +// ~ch // dict catalogue +// ~ch[\intro], [\drop], [\breakdown], [\buildup], [\outro] +// ~ch[\techno], [\acid], [\dubstep], [\trance], [\dnb], [\hiphop], [\world] +// ~ch[\stop], [\custom] +// ~ch[\full][\intro2drop], [\dropToBreak], [\outroFade] +// ~ch[\list].() +// +// RACCOURCIS env (API utilisateur primaire) : +// ~chIntro, ~chDrop, ~chBreakdown, ~chBuildup, ~chOutro +// ~chTechno, ~chAcid, ~chDubstep, ~chTrance, ~chDnb, ~chHiphop, ~chWorld +// ~chStop, ~chCustom +// ~chIntro2drop, ~chDropToBreak, ~chOutroFade +// ~chList +// ~cc -- alias env directe vers le dict (toujours valable pour +// inspecter, mais pour APPELS utiliser les ~chXxx) +// +// Tous les wrappers gardes par ~helper !? { ... }. +// +// PREREQUIS : engine + palette/rhythm/sequences.scd + live/mixer.scd +// charges (ou setupAll). +// ===================================================================== + +( +~ch = (); + +// --- SECTIONS de track --------------------------------------------- +~ch[\intro] = { ~seqIntro !? { ~seqIntro.() } }; +~ch[\drop] = { ~seqDrop !? { ~seqDrop.() } }; +~ch[\breakdown] = { ~seqBreakdown !? { ~seqBreakdown.() } }; +~ch[\buildup] = { |bars = 8| ~seqBuildup !? { ~seqBuildup.(bars) } }; +~ch[\outro] = { ~seqOutro !? { ~seqOutro.() } }; + +// --- LOOPS / EVOLUTIONS par genre ---------------------------------- +~ch[\techno] = { |repeats = 4| ~seqTechnoLoop !? { ~seqTechnoLoop.(repeats) } }; +~ch[\acid] = { ~seqAcidEvolve !? { ~seqAcidEvolve.() } }; +~ch[\dubstep] = { ~seqDubstepDrop !? { ~seqDubstepDrop.() } }; +~ch[\trance] = { ~seqTrance16 !? { ~seqTrance16.() } }; +~ch[\dnb] = { |repeats = 4| ~seqDnBSwitch !? { ~seqDnBSwitch.(repeats) } }; +~ch[\hiphop] = { |repeats = 8| ~seqHipHopLoop !? { ~seqHipHopLoop.(repeats) } }; +~ch[\world] = { ~seqWorldEvolve !? { ~seqWorldEvolve.() } }; + +// --- STOP / CUSTOM -------------------------------------------------- +~chainRoutine = ~chainRoutine ?? { nil }; +~ch[\stop] = { + ~chainRoutine !? { ~chainRoutine.stop; ~chainRoutine = nil }; + ~seqStop !? { ~seqStop.() }; +}; +~ch[\custom] = { |actions| ~seqPlay !? { ~seqPlay.(actions) } }; + +// --- COMBOS pre-faits (enchaines) ----------------------------------- +~ch[\full] = (); + +~ch[\full][\intro2drop] = { |introDur = 4, buildDur = 4| + ~chainRoutine !? { ~chainRoutine.stop }; + ~chainRoutine = Routine({ + ~seqIntro !? { ~seqIntro.() }; + introDur.wait; + ~seqBuildup !? { ~seqBuildup.(buildDur) }; + (buildDur * ~stepDur ? 0.25).wait; + ~seqDrop !? { ~seqDrop.() }; + ~chainRoutine = nil; + }).play(TempoClock.default); + "[ch.full.intro2drop] intro -> buildup -> drop".postln; +}; + +~ch[\full][\dropToBreak] = { |breakDur = 8| + ~chainRoutine !? { ~chainRoutine.stop }; + ~chainRoutine = Routine({ + ~seqDrop !? { ~seqDrop.() }; + 4.wait; + ~seqBreakdown !? { ~seqBreakdown.() }; + breakDur.wait; + ~seqDrop !? { ~seqDrop.() }; + ~chainRoutine = nil; + }).play(TempoClock.default); + "[ch.full.dropToBreak] drop -> break -> drop".postln; +}; + +~ch[\full][\outroFade] = { |dur = 12| + ~seqOutro !? { ~seqOutro.() }; + ~masterFadeOut !? { ~masterFadeOut.(dur) }; + ("[ch.full.outroFade] outro + fade " ++ dur ++ "s").postln; +}; + +// --- LISTE ---------------------------------------------------------- +~ch[\list] = { + "=== ~ch -- CHAINS / SEQUENCES ===".postln; + " sections : ~chIntro / ~chDrop / ~chBreakdown / ~chBuildup / ~chOutro".postln; + " loops : ~chTechno / ~chAcid / ~chDubstep / ~chTrance / ~chDnb / ~chHiphop / ~chWorld".postln; + " stop : ~chStop.()".postln; + " custom : ~chCustom.([[N, action], ...])".postln; + " combos : ~chIntro2drop.(4,4) | ~chDropToBreak.() | ~chOutroFade.(12)".postln; +}; + +// --- API utilisateur : variables d'env top-level -------------------- +~chIntro = { ~ch[\intro].() }; +~chDrop = { ~ch[\drop].() }; +~chBreakdown = { ~ch[\breakdown].() }; +~chBuildup = { |bars = 8| ~ch[\buildup].(bars) }; +~chOutro = { ~ch[\outro].() }; +~chTechno = { |repeats = 4| ~ch[\techno].(repeats) }; +~chAcid = { ~ch[\acid].() }; +~chDubstep = { ~ch[\dubstep].() }; +~chTrance = { ~ch[\trance].() }; +~chDnb = { |repeats = 4| ~ch[\dnb].(repeats) }; +~chHiphop = { |repeats = 8| ~ch[\hiphop].(repeats) }; +~chWorld = { ~ch[\world].() }; +~chStop = { ~ch[\stop].() }; +~chCustom = { |actions| ~ch[\custom].(actions) }; +~chIntro2drop = { |introDur = 4, buildDur = 4| ~ch[\full][\intro2drop].(introDur, buildDur) }; +~chDropToBreak = { |breakDur = 8| ~ch[\full][\dropToBreak].(breakDur) }; +~chOutroFade = { |dur = 12| ~ch[\full][\outroFade].(dur) }; +~chList = { ~ch[\list].() }; + +// --- ALIAS court (catalogue, pour inspection) ----------------------- +~cc = ~ch; // ~cc[\drop].() encore valable, mais prefere ~chDrop.() + +"=== ~ch pret -- ~chDrop.() | ~chTechno.(4) | ~chIntro2drop.() | ~chList.() ===".postln; +) + + + +// ===================================================================== +// EXEMPLES (Cmd+Entree) +// ===================================================================== + +// --- sections --- +// ( ~chIntro.(); ) +// ( ~chDrop.(); ) +// ( ~chBreakdown.(); ) +// ( ~chBuildup.(8); ) +// ( ~chOutro.(); ) + +// --- loops par genre --- +// ( ~chTechno.(4); ) +// ( ~chAcid.(); ) +// ( ~chDubstep.(); ) +// ( ~chTrance.(); ) +// ( ~chDnb.(4); ) +// ( ~chHiphop.(8); ) +// ( ~chWorld.(); ) + +// --- stop --- +// ( ~chStop.(); ) + +// --- combos pré-faits --- +// ( ~chIntro2drop.(4, 4); ) +// ( ~chDropToBreak.(8); ) +// ( ~chOutroFade.(12); ) + +// --- custom (chaine arbitraire) --- +// ( ~chCustom.([ +// [ 16, { ~kickSteps = [1,0,0,0]!4.flat; ~reload.value } ], +// [ 16, { ~kickSteps = [1,0,1,0]!4.flat; ~reload.value } ], +// [ 16, { ~kickSteps = (0!16); ~reload.value } ] +// ]); ) + +// --- liste --- +// ( ~chList.(); ) diff --git a/sound_algo/live/fx.scd b/sound_algo/live/fx.scd new file mode 100644 index 0000000..4a55b01 --- /dev/null +++ b/sound_algo/live/fx.scd @@ -0,0 +1,291 @@ +// ===================================================================== +// live/fx.scd -- FX LIVE (API ultra-courte, wrappers consolides) +// +// ATTENTION SC -- noter la notation des appels : +// +// NE MARCHE PAS : ~fx.preset.(\dub) +// -> SC passe l'event ~fx comme 1er arg, et les vrais args sont +// PERDUS (test empirique sur SC 3.14.1). +// +// MARCHE BIEN : ~fx[\preset].(\dub) (notation indexee) +// ~fxPreset.(\dub) (variable env directe) +// ~ff.(\dub) (alias env direct) +// +// ~fx // dict catalogue +// ~fx[\preset].(\dub|\trance|...) +// ~fx[\snd].(\rev, 0.4) // ~send (.send reservee) +// ~fx[\st].(\dly, \delayTime, 0.5) // ~setFx (.set reservee) +// ~fx[\tp].() // tap tempo (.tap reservee) +// ~fx[\freeze].(0|1) +// ~fx[\drop] / [\breakdown] / [\buildup] +// ~fx[\glitch] / [\stutter] / [\freezeR] +// ~fx[\tapeStop] / [\tapeRev] / [\handsUp] / [\jumpCut] +// ~fx[\bitCrush] / [\ring] / [\shift] / [\gran] +// ~fx[\vcf][\on], [\off], [\freq], [\q], [\sweep], [\preset] +// ~fx[\lfo][\go] / [\stop][\go] / [\stop][\all] +// ~fx[\cut] / [\rq] / [\drive] +// ~fx[\comp][\go] / [\off] ~fx[\sat][\go] / [\off] +// ~fx[\list].() +// +// RACCOURCIS env (API utilisateur primaire) : +// ~fxPreset, ~fxSnd, ~fxSt, ~fxTp, ~fxFreeze +// ~fxDrop, ~fxBreakdown, ~fxBuildup +// ~fxGlitch, ~fxStutter, ~fxFreezeR +// ~fxTapeStop, ~fxTapeRev, ~fxHandsUp, ~fxJumpCut +// ~fxBitCrush, ~fxRing, ~fxShift, ~fxGran +// ~fxVcfOn, ~fxVcfOff, ~fxVcfFreq, ~fxVcfQ, ~fxVcfSweep, ~fxVcfPreset +// ~fxLfo, ~fxLfoStop, ~fxLfoStopAll +// ~fxCut, ~fxRq, ~fxDrive +// ~fxComp, ~fxCompOff, ~fxSat, ~fxSatOff +// ~fxList +// ~ff (= ~fxPreset) +// +// TOUS les wrappers gardes par ~helper !? { ... } pour ne pas planter +// si le helper sous-jacent n'est pas charge. +// +// PREREQUIS : engine + live/fx_bus.scd + live/live.scd charges. +// ===================================================================== + +( +~fx = (); + +// --- PRESETS FX (dub/space/trance/...) ------------------------------ +~fx[\preset] = { |name = \dry| + ~fxPreset !? { ~fxPreset.(name) }; +}; + +// --- SEND / SET sur un bus FX -------------------------------------- +~fx[\snd] = { |fxName, amount = 0.3| + ~send !? { ~send.(fxName, amount) }; +}; +~fx[\st] = { |fxName, param, value| + ~setFx !? { ~setFx.(fxName, param, value) }; +}; + +// --- FREEZE reverb permanent / TAP tempo --------------------------- +~fx[\freeze] = { |on = 1| + ~setFx !? { ~setFx.(\rev, \freeze, on) }; + ("[fx.freeze] " ++ on).postln; +}; +~fx[\tp] = { ~tap !? { ~tap.() } }; + +// --- DROP / BREAKDOWN / BUILDUP ------------------------------------ +~fx[\drop] = { |dur = 4| ~drop !? { ~drop.(dur) } }; +~fx[\breakdown] = { |dur = 8| ~breakdown !? { ~breakdown.(dur) } }; +~fx[\buildup] = { |dur = 8| ~buildup !? { ~buildup.(dur) } }; + +// --- TRICKS scéniques ---------------------------------------------- +~fx[\glitch] = { |dur = 2| ~glitch !? { ~glitch.(dur) } }; +~fx[\stutter] = { |rate = 8, dur = 1| ~stutter !? { ~stutter.(rate, dur) } }; +~fx[\freezeR] = { |dur = 4| ~freeze !? { ~freeze.(dur) } }; +~fx[\tapeStop] = { |dur = 2| ~tapeStop !? { ~tapeStop.(dur) } }; +~fx[\tapeStart] = { |dur = 2, t| ~tapeStart !? { ~tapeStart.(dur, t) } }; +~fx[\playAll] = { ~playAll !? { ~playAll.() } }; +~fx[\tapeRev] = { |dur = 4| ~tapeReverse!? { ~tapeReverse.(dur) } }; +~fx[\handsUp] = { ~handsUp !? { ~handsUp.() } }; +~fx[\jumpCut] = { |dur = 0.5| ~jumpCut !? { ~jumpCut.(dur) } }; +~fx[\bitCrush] = { |bits = 6, sr = 6000, dur = 1| ~bitCrushNow !? { ~bitCrushNow.(bits, sr, dur) } }; +~fx[\ring] = { |freq = 200, dur = 1| ~ringMod !? { ~ringMod.(freq, dur) } }; +~fx[\shift] = { |hz = 100, dur = 1| ~freqShift !? { ~freqShift.(hz, dur) } }; +~fx[\gran] = { |dur = 2| ~granFreeze!? { ~granFreeze.(dur) } }; + +// --- VCF (filtre live tout-source) --------------------------------- +~fx[\vcf] = (); +~fx[\vcf][\on] = { |type = \moog, freq = 1500, q = 0.5| + ~vcfOn !? { ~vcfOn.(type, freq, q) }; +}; +~fx[\vcf][\off] = { ~vcfOff !? { ~vcfOff.() } }; +~fx[\vcf][\freq] = { |hz = 1500| ~vcfSet !? { ~vcfSet.(\freq, hz) } }; +~fx[\vcf][\q] = { |val = 0.5| ~vcfSet !? { ~vcfSet.(\q, val) } }; +~fx[\vcf][\sweep] = { |from = 200, to = 5000, dur = 4| + ~vcfSweep !? { ~vcfSweep.(from, to, dur) }; +}; +~fx[\vcf][\preset] = { |preset = \acid| + ~vcfPreset !? { ~vcfPreset.(preset) }; +}; + +// --- LFO sur n'importe quelle variable ~xxx ------------------------ +~fx[\lfo] = (); +~fx[\lfo][\go] = { |paramName, rate = 0.5, depth = 0.3, shape = \sin, center = nil| + ~lfoTo !? { ~lfoTo.(paramName, rate, depth, shape, center) }; +}; +~fx[\lfo][\stop] = (); +~fx[\lfo][\stop][\go] = { |paramName| ~lfoStopVar !? { ~lfoStopVar.(paramName) } }; +~fx[\lfo][\stop][\all] = { ~lfoStopAllVars !? { ~lfoStopAllVars.() } }; + +// --- SHORTCUTS cutoff / rq / drive par voie ------------------------ +~fx[\cut] = { |voie = \mel, hz = 2000| + var v = voie.asSymbol; + if (v == \mel or: { v == \melody }) { + ~melodyCutoff = hz; ~reload !? { ~reload.value }; + ("[fx.cut] melody " ++ hz ++ "Hz").postln; + } { if (v == \acid) { + ~acidCutoff = hz; ~reload !? { ~reload.value }; + ("[fx.cut] acid " ++ hz ++ "Hz").postln; + } { ("[fx.cut] voie inconnue : " ++ v ++ " (utilise \\mel ou \\acid)").postln } }; +}; +~fx[\rq] = { |voie = \mel, val = 0.5| + var v = voie.asSymbol; + if (v == \mel or: { v == \melody }) { + ~melodyRq = val; ~reload !? { ~reload.value }; + ("[fx.rq] melody " ++ val).postln; + } { if (v == \acid) { + ~acidRq = val; ~reload !? { ~reload.value }; + ("[fx.rq] acid " ++ val).postln; + } { ("[fx.rq] voie inconnue : " ++ v).postln } }; +}; +~fx[\drive] = { |voie = \mel, val = 1.5| + var v = voie.asSymbol; + if (v == \mel or: { v == \melody }) { + ~melodyDrive = val; ~reload !? { ~reload.value }; + ("[fx.drive] melody " ++ val).postln; + } { if (v == \acid) { + ~acidDrive = val; ~reload !? { ~reload.value }; + ("[fx.drive] acid " ++ val).postln; + } { ("[fx.drive] voie inconnue : " ++ v).postln } }; +}; + +// --- COMP / SAT master --------------------------------------------- +~fx[\comp] = (); +~fx[\comp][\go] = { |preset = \glue| ~compOn !? { ~compOn.(preset) } }; +~fx[\comp][\off] = { ~compOff !? { ~compOff.() } }; +~fx[\sat] = (); +~fx[\sat][\go] = { |mode = \tanh, amount = 1.5| + var modeNum = switch (mode.asSymbol, \tanh, 0, \softclip, 1, \fold, 2, 0); + ~satOn !? { ~satOn.(amount, modeNum) }; +}; +~fx[\sat][\off] = { ~satOff !? { ~satOff.() } }; + +// --- LISTE ----------------------------------------------------------- +~fx[\list] = { + "=== ~fx -- FX LIVE ===".postln; + " presets : dry / dub / space / trance / dubstep / retro /".postln; + " industrial / dream / cosmic / drone".postln; + " bus : rev / dly / chr / phs / flg / crsh / tape / shim / dist".postln; + " tricks : drop / breakdown / buildup / glitch / stutter / freezeR /".postln; + " tapeStop / tapeRev / handsUp / jumpCut / bitCrush / ring /".postln; + " shift / gran".postln; + " vcf : on / off / freq / q / sweep / preset".postln; + " lfo : ~fxLfo.(\\param,rate,depth) | ~fxLfoStop.(\\p) | ~fxLfoStopAll.()".postln; + " voie cut : ~fxCut.(\\mel|\\acid, hz)".postln; + " comp/sat : ~fxComp.(\\glue) | ~fxSat.(\\tanh, 1.5)".postln; +}; + +// --- API utilisateur : variables d'env top-level -------------------- +// SUPPRIME : ~fxPreset etait redefinie ici en wrapper de ~fx[\preset], +// mais ~fx[\preset] appelle DEJA ~fxPreset -> RECURSION INFINIE. +// Cause de la fuite RAM 40GB+ historique. ~fxPreset reste celui de +// fx_bus.scd (vraie implementation). ~ff l'alias court reste plus bas. +// ~fxPreset = { |name = \dry| ~fx[\preset].(name) }; // SUPPRIME +~fxSnd = { |fxName, amount = 0.3| ~fx[\snd].(fxName, amount) }; +~fxSt = { |fxName, param, value| ~fx[\st].(fxName, param, value) }; +~fxTp = { ~fx[\tp].() }; +~fxFreeze = { |on = 1| ~fx[\freeze].(on) }; +~fxDrop = { |dur = 4| ~fx[\drop].(dur) }; +~fxBreakdown = { |dur = 8| ~fx[\breakdown].(dur) }; +~fxBuildup = { |dur = 8| ~fx[\buildup].(dur) }; +~fxGlitch = { |dur = 2| ~fx[\glitch].(dur) }; +~fxStutter = { |rate = 8, dur = 1| ~fx[\stutter].(rate, dur) }; +~fxFreezeR = { |dur = 4| ~fx[\freezeR].(dur) }; +~fxTapeStop = { |dur = 2| ~fx[\tapeStop].(dur) }; +~fxTapeStart = { |dur = 2, t| ~fx[\tapeStart].(dur, t) }; +~fxPlayAll = { ~fx[\playAll].() }; +~fxTapeRev = { |dur = 4| ~fx[\tapeRev].(dur) }; +~fxHandsUp = { ~fx[\handsUp].() }; +~fxJumpCut = { |dur = 0.5| ~fx[\jumpCut].(dur) }; +~fxBitCrush = { |bits = 6, sr = 6000, dur = 1| ~fx[\bitCrush].(bits, sr, dur) }; +~fxRing = { |freq = 200, dur = 1| ~fx[\ring].(freq, dur) }; +~fxShift = { |hz = 100, dur = 1| ~fx[\shift].(hz, dur) }; +~fxGran = { |dur = 2| ~fx[\gran].(dur) }; +~fxVcfOn = { |type = \moog, freq = 1500, q = 0.5| ~fx[\vcf][\on].(type, freq, q) }; +~fxVcfOff = { ~fx[\vcf][\off].() }; +~fxVcfFreq = { |hz = 1500| ~fx[\vcf][\freq].(hz) }; +~fxVcfQ = { |val = 0.5| ~fx[\vcf][\q].(val) }; +~fxVcfSweep = { |from = 200, to = 5000, dur = 4| ~fx[\vcf][\sweep].(from, to, dur) }; +~fxVcfPreset = { |preset = \acid| ~fx[\vcf][\preset].(preset) }; +~fxLfo = { |paramName, rate = 0.5, depth = 0.3, shape = \sin, center = nil| + ~fx[\lfo][\go].(paramName, rate, depth, shape, center) }; +~fxLfoStop = { |paramName| ~fx[\lfo][\stop][\go].(paramName) }; +~fxLfoStopAll = { ~fx[\lfo][\stop][\all].() }; +~fxCut = { |voie = \mel, hz = 2000| ~fx[\cut].(voie, hz) }; +~fxRq = { |voie = \mel, val = 0.5| ~fx[\rq].(voie, val) }; +~fxDrive = { |voie = \mel, val = 1.5| ~fx[\drive].(voie, val) }; +~fxComp = { |preset = \glue| ~fx[\comp][\go].(preset) }; +~fxCompOff = { ~fx[\comp][\off].() }; +~fxSat = { |mode = \tanh, amount = 1.5| ~fx[\sat][\go].(mode, amount) }; +~fxSatOff = { ~fx[\sat][\off].() }; +~fxList = { ~fx[\list].() }; +~ff = { |name = \dry| ~fxPreset.(name) }; // alias court + +"=== ~fx pret -- ~ff.(\\dub) | ~fxDrop.() | ~fxVcfPreset.(\\acid) | ~fxList.() ===".postln; +) + + + +// ===================================================================== +// EXEMPLES (Cmd+Entree) +// ===================================================================== + +// --- presets prets --- +// ( ~ff.(\dub); ) +// ( ~ff.(\trance); ) +// ( ~ff.(\dubstep); ) +// ( ~ff.(\space); ) +// ( ~ff.(\dry); ) + +// --- send / set manuel --- +// ( ~fxSnd.(\rev, 0.4); ) +// ( ~fxSnd.(\dly, 0.3); ) +// ( ~fxSt.(\dly, \delayTime, 0.375); ) +// ( ~fxSt.(\rev, \room, 0.95); ) + +// --- freeze reverb --- +// ( ~fxFreeze.(1); ~fxSnd.(\rev, 0.6); ) +// ( ~fxFreeze.(0); ) + +// --- drop / breakdown / buildup --- +// ( ~fxDrop.(); ) +// ( ~fxBreakdown.(8); ) +// ( ~fxBuildup.(8); ) + +// --- tricks scéniques --- +// ( ~fxGlitch.(2); ) +// ( ~fxStutter.(8, 1); ) +// ( ~fxFreezeR.(4); ) +// ( ~fxTapeStop.(2); ) +// ( ~fxTapeRev.(4); ) +// ( ~fxHandsUp.(); ) +// ( ~fxJumpCut.(0.5); ) +// ( ~fxBitCrush.(4, 4000, 1); ) +// ( ~fxRing.(200, 1); ) +// ( ~fxShift.(100, 1); ) +// ( ~fxGran.(2); ) + +// --- VCF live --- +// ( ~fxVcfPreset.(\acid); ) +// ( ~fxVcfPreset.(\dub); ) +// ( ~fxVcfOn.(\moog, 800, 0.7); ) +// ( ~fxVcfFreq.(1200); ) +// ( ~fxVcfQ.(0.6); ) +// ( ~fxVcfSweep.(200, 4000, 6); ) +// ( ~fxVcfOff.(); ) + +// --- LFO sur var --- +// ( ~fxLfo.(\melodyCutoff, 0.2, 800, \sin, 1500); ) +// ( ~fxLfoStop.(\melodyCutoff); ) +// ( ~fxLfoStopAll.(); ) + +// --- shortcuts par voie --- +// ( ~fxCut.(\mel, 1200); ) +// ( ~fxCut.(\acid, 600); ) +// ( ~fxRq.(\mel, 0.7); ) +// ( ~fxDrive.(\acid, 3.0); ) + +// --- comp / sat master --- +// ( ~fxComp.(\glue); ) +// ( ~fxCompOff.(); ) +// ( ~fxSat.(\tanh, 2.0); ) +// ( ~fxSatOff.(); ) + +// --- liste --- +// ( ~fxList.(); ) diff --git a/sound_algo/live/fx_bus.scd b/sound_algo/live/fx_bus.scd new file mode 100644 index 0000000..482afbf --- /dev/null +++ b/sound_algo/live/fx_bus.scd @@ -0,0 +1,340 @@ +// ===================================================================== +// live/fx_bus.scd -- Systeme FX live complet +// +// 9 bus FX : reverb / delay / chorus / phaser / flanger / bitcrush / +// tape / shimmer / distortion +// + helpers send / setFx +// + automation LFO sur tout param +// + presets / snapshots +// + tap tempo pour delay +// + freeze reverb (capture) +// + crossfade entre FX +// +// USAGE +// 1. SETUP FX -- charge SynthDefs + alloue les bus + lance les FX +// en queue + cree les helpers (~send / ~lfo / ~fxPreset / ~tap / +// ~crossfadeFx). Compatible .load (un seul bloc top-level). +// 2. Helpers ~sendXxx pour envoyer dans un FX (live) +// 3. Helpers ~lfoXxx pour automatiser un parametre (live) +// 4. Presets ~fxPreset.(\name) pour rappeler un combo (live) +// ===================================================================== + + +// ===================================================================== +// 1. SETUP FX (single-block) -- SynthDefs + bus + FX en queue + helpers +// ===================================================================== +( +// --- BUS allocation --- +~fxBuses !? { ~fxBuses.do(_.free) }; +~fxBuses = ( + rev: Bus.audio(s, 2), + dly: Bus.audio(s, 2), + chr: Bus.audio(s, 2), + phs: Bus.audio(s, 2), + flg: Bus.audio(s, 2), + crsh: Bus.audio(s, 2), + tape: Bus.audio(s, 2), + shim: Bus.audio(s, 2), + dist: Bus.audio(s, 2), +); + +// --- REVERB (FreeVerb stereo + freeze) --- + + +// --- DELAY ping-pong avec saturation tape --- + + +// --- CHORUS (modulation stereo) --- + + +// --- PHASER (4-stage allpass + LFO) --- + + +// --- FLANGER (court delay + LFO + feedback) --- + + +// --- BITCRUSHER (lo-fi sample rate + bit depth) --- + + +// --- TAPE (saturation analog + wow/flutter) --- + + +// --- SHIMMER REVERB (octave up + reverb hall) --- + + +// --- DISTORTION (overdrive + tone) --- + + +// --- SEND (copie audio vers un FX bus, ratio reglable) --- + + +s.sync; + +// --- INSTANCIER les 9 FX en queue + master limiter ---------------- +// .do sur Event : 1 arg = value. Le 2-arg form est |value, key| (synth d'abord). +~fxFx !? { ~fxFx.do { |syn| syn !? { syn.free } } }; +~fxFx = ( + rev: Synth.tail(s.defaultGroup, \fxReverb, [\in, ~fxBuses[\rev].index]), + dly: Synth.tail(s.defaultGroup, \fxDelay, [\in, ~fxBuses[\dly].index]), + chr: Synth.tail(s.defaultGroup, \fxChorus, [\in, ~fxBuses[\chr].index]), + phs: Synth.tail(s.defaultGroup, \fxPhaser, [\in, ~fxBuses[\phs].index]), + flg: Synth.tail(s.defaultGroup, \fxFlanger, [\in, ~fxBuses[\flg].index]), + crsh: Synth.tail(s.defaultGroup, \fxBitcrush,[\in, ~fxBuses[\crsh].index]), + tape: Synth.tail(s.defaultGroup, \fxTape, [\in, ~fxBuses[\tape].index]), + shim: Synth.tail(s.defaultGroup, \fxShimmer, [\in, ~fxBuses[\shim].index]), + dist: Synth.tail(s.defaultGroup, \fxDist, [\in, ~fxBuses[\dist].index, \mix, 0.5]), +); + +// Master limiter en queue absolue +~masterLim !? { ~masterLim.free }; +~masterLim = Synth.tail(s.defaultGroup, \masterLim); + +~fxSends = (); // dictionnaire des Synth de send actifs +~fxLfos = (); // dictionnaire des Routines LFO actives + +// ---------- HELPERS SEND --------------------------------------------- +~send = { |fxName, amount = 0.3| + var key = fxName.asSymbol; + ~fxSends[key] !? { ~fxSends[key].free }; + if (amount > 0) { + ~fxSends[key] = Synth.before(~masterLim, \fxSend, + [\srcBus, 0, \dstBus, ~fxBuses[key].index, \amount, amount]); + } { ~fxSends.removeAt(key) }; + ("send " ++ key ++ " = " ++ amount).postln; +}; + +// Raccourcis +~sendReverb = { |a = 0.3| ~send.(\rev, a) }; +~sendDelay = { |a = 0.3| ~send.(\dly, a) }; +~sendChorus = { |a = 0.3| ~send.(\chr, a) }; +~sendPhaser = { |a = 0.3| ~send.(\phs, a) }; +~sendFlanger = { |a = 0.3| ~send.(\flg, a) }; +~sendBitcrush = { |a = 0.3| ~send.(\crsh, a) }; +~sendTape = { |a = 1.0| ~send.(\tape, a) }; +~sendShimmer = { |a = 0.3| ~send.(\shim, a) }; +~sendDist = { |a = 0.3| ~send.(\dist, a) }; + +// Set un parametre de FX (~setFx.(\rev, \room, 0.95)) +~setFx = { |fxName, param, value| + ~fxFx[fxName.asSymbol] !? { ~fxFx[fxName.asSymbol].set(param, value) }; +}; + +// ---------- AUTOMATION LFO ------------------------------------------- +~lfo = { |fxName, param, rateHz = 0.5, lo = 0.0, hi = 1.0, shape = \sin| + var key = (fxName ++ "_" ++ param).asSymbol; + ~fxLfos[key] !? { ~fxLfos[key].stop }; + ~fxLfos[key] = Routine({ + var phase = 0; + inf.do { |i| + var x; + x = switch (shape, + \sin, { (phase * 2 * pi).sin * 0.5 + 0.5 }, + \tri, { (phase * 4 - 1).abs.linlin(0, 1, 1, 0) }, + \saw, { phase }, + \sqr, { if (phase < 0.5) {0} {1} }, + \rand, { 1.0.rand } + ); + ~setFx.(fxName, param, lo + (x * (hi - lo))); + phase = (phase + (rateHz * 0.05)).mod(1); + 0.05.wait; + }; + }).play; + ("LFO " ++ fxName ++ "." ++ param ++ " " ++ rateHz ++ "Hz " ++ shape).postln; +}; + +~lfoStop = { |fxName, param| + var key = (fxName ++ "_" ++ param).asSymbol; + ~fxLfos[key] !? { ~fxLfos[key].stop; ~fxLfos.removeAt(key) }; + ("LFO " ++ fxName ++ "." ++ param ++ " STOPPED").postln; +}; + +~lfoStopAll = { + ~fxLfos.do { |r| r.stop }; ~fxLfos = (); + "all LFOs stopped".postln; +}; + +// ---------- TAP TEMPO pour le delay ---------------------------------- +~tapTempo = (); +~tap = { + var now = SystemClock.seconds; + ~tapTempo[\last] !? { |last| + var interval = now - last; + if (interval < 2.0 and: { interval > 0.1 }) { + ~setFx.(\dly, \delayTime, interval); + ("TAP : " ++ interval.round(0.001) ++ "s = " ++ + (60 / interval).round(0.1) ++ " BPM").postln; + }; + }; + ~tapTempo[\last] = now; +}; + +// ---------- CROSSFADE entre 2 FX ------------------------------------- +~crossfadeFxRoutine = ~crossfadeFxRoutine ?? { nil }; +~crossfadeFx = { |fromFx, toFx, dur = 4| + ~crossfadeFxRoutine !? { ~crossfadeFxRoutine.stop }; + ~crossfadeFxRoutine = Routine({ + var steps = (dur * 20).asInteger; + steps.do { |i| + var x = (i + 1) / steps; + ~send.(fromFx, 0.3 * (1 - x)); + ~send.(toFx, 0.3 * x); + (dur / steps).wait; + }; + ~crossfadeFxRoutine = nil; + }).play; + ("crossfade " ++ fromFx ++ " -> " ++ toFx ++ " sur " ++ dur ++ "s").postln; +}; +~crossfadeFxStop = { + ~crossfadeFxRoutine !? { ~crossfadeFxRoutine.stop; ~crossfadeFxRoutine = nil }; + "crossfade stopped".postln; +}; + +// ---------- PRESETS FX (combos pret a l'emploi par genre) ------------ +// +// REVERT : ~fxPresetReset retiree car cause une fuite/crash explosive +// sclang quand combinee avec switch+sub-calls. La cascade des sends +// reste un probleme connu mais geree par ~ff.(\dry) explicit reset. +~fxPresetReset = nil; + +// Dispatch via dictionary pour eviter le bug de switch() qui crashe sclang +// avec 11 cases sur certaines versions SC. +~fxPresetTable = ( + dry: { + [\rev,\dly,\chr,\phs,\flg,\crsh,\tape,\shim,\dist] + .do { |k| ~send.(k, 0) }; + "preset DRY".postln; + }, + dub: { + ~sendReverb.(0.5); ~sendDelay.(0.6); ~sendTape.(0.7); + ~setFx.(\dly, \delayTime, 0.5); + ~setFx.(\dly, \feedback, 0.7); + ~setFx.(\rev, \room, 0.92); + "preset DUB (rev hall + delay long + tape)".postln; + }, + space: { + ~sendReverb.(0.55); ~sendShimmer.(0.4); ~sendChorus.(0.3); + ~setFx.(\rev, \room, 0.95); + "preset SPACE (shimmer + reverb + chorus)".postln; + }, + trance: { + ~sendReverb.(0.35); ~sendDelay.(0.4); ~sendChorus.(0.5); + ~setFx.(\dly, \delayTime, 0.375); + ~setFx.(\dly, \feedback, 0.5); + "preset TRANCE (rev + delay 1/8 + chorus)".postln; + }, + dubstep: { + ~sendReverb.(0.2); ~sendDist.(0.3); ~sendBitcrush.(0.2); + ~setFx.(\dist, \drive, 4); ~setFx.(\dist, \tone, 0.4); + ~setFx.(\crsh, \bits, 6); + "preset DUBSTEP (dist + bitcrush + reverb)".postln; + }, + retro: { + ~sendBitcrush.(0.4); ~sendTape.(1.0); ~sendChorus.(0.4); + ~setFx.(\crsh, \bits, 8); ~setFx.(\crsh, \sampleRate, 12000); + ~setFx.(\tape, \drive, 1.8); + "preset RETRO (bitcrush + tape + chorus)".postln; + }, + industrial: { + ~sendDist.(0.6); ~sendFlanger.(0.4); ~sendBitcrush.(0.3); + ~setFx.(\dist, \drive, 5); + ~setFx.(\flg, \rate, 0.15); ~setFx.(\flg, \feedback, 0.7); + "preset INDUSTRIAL (dist + flanger + bitcrush)".postln; + }, + dream: { + ~sendShimmer.(0.6); ~sendReverb.(0.5); ~sendChorus.(0.4); + ~setFx.(\shim, \shimmer, 0.7); + "preset DREAM (shimmer + reverb + chorus)".postln; + }, + cosmic: { + ~sendPhaser.(0.5); ~sendShimmer.(0.4); ~sendReverb.(0.4); + ~lfo.(\phs, \rate, 0.05, 0.1, 0.8); + "preset COSMIC (phaser LFO + shimmer + reverb)".postln; + }, + drone: { + ~sendReverb.(0.7); ~sendShimmer.(0.5); + ~setFx.(\rev, \freeze, 1); ~setFx.(\rev, \room, 0.99); + "preset DRONE (reverb FROZEN + shimmer)".postln; + } +); + +~fxPreset = { |name| + var fn = ~fxPresetTable[name.asSymbol]; + if (fn.notNil) { fn.value } { ("!! preset " ++ name ++ " inconnu").postln }; +}; + +"=== 9 FX BUSES + master limiter en queue ===".postln; +" bus dispos : rev / dly / chr / phs / flg / crsh / tape / shim / dist".postln; +"=== ~send / ~sendReverb / ~setFx / ~lfo / ~tap / ~crossfadeFx / ~fxPreset prets ===".postln; +"=== presets : dry / dub / space / trance / dubstep / retro / industrial / dream / cosmic / drone ===".postln; +) + + +// ===================================================================== +// 2. EXEMPLES / TWEAKS LIVE -- Cmd+Entree sur ligne pendant track +// (tout ce qui est en bas est interactif et NON .load -- garde +// du multi-bloc pour evaluer un effet a la fois) +// ===================================================================== + +// --- Send levels ---------------------------------------------------- +( ~sendReverb.(0.4); ~sendDelay.(0.3); ) +( ~sendReverb.(0); ~sendDelay.(0); ~sendChorus.(0); ) +( ~sendShimmer.(0.5); ~setFx.(\shim, \shimmer, 0.7); ) +( ~sendBitcrush.(0.5); ~setFx.(\crsh, \bits, 4); ) +( ~sendDist.(0.5); ~setFx.(\dist, \drive, 4); ~setFx.(\dist, \tone, 0.3); ) +( ~sendFlanger.(0.5); ~setFx.(\flg, \rate, 0.15); ) +( ~sendPhaser.(0.4); ~setFx.(\phs, \rate, 0.2); ~setFx.(\phs, \depth, 0.8); ) +( ~sendTape.(1.0); ~setFx.(\tape, \drive, 2.5); ) + +// --- Tempo synced delay --------------------------------------------- +( ~setFx.(\dly, \delayTime, 60 / TempoClock.default.tempo / 4); ) // 1/16 +( ~setFx.(\dly, \delayTime, 60 / TempoClock.default.tempo / 2); ) // 1/8 +( ~setFx.(\dly, \delayTime, 60 / TempoClock.default.tempo); ) // 1/4 +( ~setFx.(\dly, \delayTime, 60 / TempoClock.default.tempo * 0.75); ) // 1/4 dotted + +// --- Reverb size ---------------------------------------------------- +( ~setFx.(\rev, \room, 0.5); ~setFx.(\rev, \damp, 0.6); ) // room +( ~setFx.(\rev, \room, 0.85);~setFx.(\rev, \damp, 0.4); ) // hall +( ~setFx.(\rev, \room, 0.97);~setFx.(\rev, \damp, 0.1); ) // cathedral + +// --- LFO automation ------------------------------------------------- +( ~lfo.(\dly, \feedback, 0.1, 0.2, 0.85, \sin); ) // feedback qui pulse +( ~lfo.(\rev, \mix, 0.05, 0.1, 0.7, \tri); ) // wash de reverb +( ~lfo.(\crsh, \bits, 0.2, 4, 12, \sqr); ) // glitch lo-fi +( ~lfo.(\phs, \rate, 0.02, 0.1, 1.5, \sin); ) // phaser qui accelere +( ~lfo.(\shim, \shimmer, 0.1, 0.2, 0.8, \rand); ) // shimmer chaos +( ~lfoStopAll.value; ) + +// --- Tap tempo (au moins 2 fois pour calibrer) --------------------- +( ~tap.value; ) + +// --- Freeze reverb (drone infini) ----------------------------------- +( ~setFx.(\rev, \freeze, 1); ~sendReverb.(0.6); ) +( ~setFx.(\rev, \freeze, 0); ) + +// --- Crossfade entre FX -------------------------------------------- +( ~crossfadeFx.(\dly, \rev, 8); ) // delay -> reverb sur 8s +( ~crossfadeFx.(\dist, \shim, 4); ) // dist -> shimmer sur 4s + +// --- Presets -------------------------------------------------------- +( ~fxPreset.(\dry); ) // tout off +( ~fxPreset.(\dub); ) // dub techno +( ~fxPreset.(\trance); ) // uplifting trance +( ~fxPreset.(\dubstep); ) // dubstep dirty +( ~fxPreset.(\space); ) // space ambient +( ~fxPreset.(\retro); ) // 80s lo-fi +( ~fxPreset.(\industrial); ) // hard distorted +( ~fxPreset.(\dream); ) // dream pop +( ~fxPreset.(\cosmic); ) // psy cosmic + LFO phaser +( ~fxPreset.(\drone); ) // drone freeze infini + + +// ===================================================================== +// 3. STOP FX -- libere tout +// ===================================================================== +( +~lfoStopAll.value; +~fxSends.do { |s| s.free }; ~fxSends = (); +~fxFx.do { |s| s.free }; ~fxFx = (); +~fxBuses.do { |b| b.free }; ~fxBuses = (); +"=== ALL FX STOPPED ===".postln; +) diff --git a/sound_algo/live/kicks.scd b/sound_algo/live/kicks.scd new file mode 100644 index 0000000..452696c --- /dev/null +++ b/sound_algo/live/kicks.scd @@ -0,0 +1,199 @@ +// ===================================================================== +// live/kicks.scd -- KICKS LIVE (API ultra-courte) +// +// ATTENTION SC -- noter la notation des appels : +// +// NE MARCHE PAS : ~k.pat.(\amen) +// -> SC passe l'event ~k comme 1er arg, et les vrais args sont +// PERDUS (test empirique sur SC 3.14.1, cf Dictionary.sc:549). +// +// MARCHE BIEN : ~k[\pat].(\amen) (notation indexee) +// ~kPat.(\amen) (variable env directe) +// ~kk.(\techno) (alias env direct) +// +// ~k // dict : catalogue de toutes les +// // donnees + helpers +// ~k[\pat].(\name|N) // applique SEULEMENT un pattern +// ~k[\tim].(\name|N) // applique SEULEMENT un timbre +// ~k[\go].(\name) // pattern + timbre + reload +// ~k[\list].() // liste tout +// +// RACCOURCIS env (API utilisateur primaire) : +// ~kPat.(\amen) | ~kTim.(\808) | ~kk.(\techno) (combo) +// ~kList.() +// +// EXEMPLES : +// ~kk.(\techno) // 4/4 + rond +// ~kk.(\gabber) // dense + distordu +// ~kPat.(\amen) // juste le pattern amen-break +// ~kTim.(\808) // juste le timbre 808 boom +// ~kPat.(7) // pattern n°7 +// +// PREREQUIS : engine.scd evalue (defines ~kickSteps, ~kickFreq, etc.) +// ===================================================================== + +( +~k = (); + +// --- 25 patterns kick (16 steps chacun) ----------------------------- +~k[\patterns] = ( + \four: [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ], + \techno: [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ], + \gabber: [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ], + \dembow: [ 1,0,0,1, 0,0,1,0, 1,0,0,1, 0,0,1,0 ], + \half: [ 1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ], + \break: [ 1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0 ], + \triplet: [ 1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,1 ], + \minimal: [ 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ], + \ghost: [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ], + \synco: [ 1,0,1,0, 1,0,0,1, 1,0,1,0, 1,0,1,1 ], + \dnb: [ 1,0,0,1, 0,0,0,0, 0,0,1,0, 0,0,1,0 ], + \amen: [ 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 ], + \dense: [ 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1 ], + \hardstyle:[1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0 ], + \trance: [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,1 ], + \house: [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ], + \electro: [ 1,0,0,1, 0,0,0,0, 1,0,0,0, 0,0,1,0 ], + \triphop: [ 1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0 ], + \jungle: [ 1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0 ], + \dub: [ 0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ], + \afro: [ 1,0,0,1, 0,1,0,0, 1,0,1,0, 0,1,0,0 ], + \garage: [ 1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0 ], + \footwork:[ 1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0 ], + \off: (0 ! 16), +); + +// --- 12 timbres kick (params SynthDef) ------------------------------ +~k[\timbres] = ( + \rond: (freq: 55, pitchAmt: 3.0, decay: 0.32, drive: 1.3, click: 0.2), + \sub: (freq: 42, pitchAmt: 2.0, decay: 0.50, drive: 1.0, click: 0.05), + \punchy: (freq: 65, pitchAmt: 4.0, decay: 0.18, drive: 1.8, click: 0.45), + \distorded:(freq:60, pitchAmt: 5.0, decay: 0.28, drive: 3.5, click: 0.30), + \click: (freq: 70, pitchAmt: 2.5, decay: 0.10, drive: 1.0, click: 0.60), + \boomy: (freq: 50, pitchAmt: 6.0, decay: 0.40, drive: 1.5, click: 0.10), + \clap: (freq: 90, pitchAmt: 1.5, decay: 0.08, drive: 1.2, click: 0.50), + \909: (freq: 60, pitchAmt: 3.5, decay: 0.45, drive: 1.4, click: 0.15), + \808: (freq: 38, pitchAmt: 1.8, decay: 0.65, drive: 1.0, click: 0.05), + \gabberT: (freq: 65, pitchAmt: 5.5, decay: 0.22, drive: 4.5, click: 0.50), + \breakcore:(freq:80, pitchAmt: 2.0, decay: 0.06, drive: 2.5, click: 0.70), + \dubT: (freq: 40, pitchAmt: 1.5, decay: 0.80, drive: 1.0, click: 0.02), +); + +// --- Combos pre-mappes (1 nom = pattern + timbre + reload) ---------- +~k[\combos] = ( + \techno: [\techno, \rond], + \gabber: [\gabber, \gabberT], + \dub: [\dub, \dubT], + \dubstep: [\half, \808], + \trance: [\trance, \punchy], + \hardstyle: [\hardstyle, \distorded], + \dnb: [\dnb, \punchy], + \amen: [\amen, \punchy], + \jungle: [\jungle, \click], + \house: [\house, \909], + \electro: [\electro, \click], + \detroit: [\four, \909], + \minimal: [\minimal, \rond], + \phonk: [\half, \808], + \afro: [\afro, \rond], + \garage: [\garage, \rond], + \triphop: [\triphop, \boomy], + \footwork: [\footwork, \punchy], +); + +// --- Fonctions stockees dans le dict (appelees via ~k[\key].(args)) - +// Signatures normales (PAS de `self`) -- jamais appelees en pseudo- +// method (`.key`) sur l'event `~k`. + +~k[\pat] = { |name| + var p = if (name.isInteger) { + ~k[\patterns].values[(name - 1).clip(0, ~k[\patterns].size - 1)]; + } { ~k[\patterns][name] }; + if (p.isNil) { + ("[k] pattern '" ++ name ++ "' inconnu. Liste : " ++ ~k[\patterns].keys.asArray).postln; + } { + ~kickSteps = p.copy; + ~reload.value; + ("[k.pat] " ++ name).postln; + }; +}; + +~k[\tim] = { |name| + var t = if (name.isInteger) { + ~k[\timbres].values[(name - 1).clip(0, ~k[\timbres].size - 1)]; + } { ~k[\timbres][name] }; + if (t.isNil) { + ("[k] timbre '" ++ name ++ "' inconnu. Liste : " ++ ~k[\timbres].keys.asArray).postln; + } { + ~kickFreq = t[\freq]; + ~kickPitchAmt = t[\pitchAmt]; + ~kickDecay = t[\decay]; + ~kickDrive = t[\drive]; + ~kickClick = t[\click]; + ~reload.value; + ("[k.tim] " ++ name).postln; + }; +}; + +~k[\go] = { |name| + var c = ~k[\combos][name]; + if (c.isNil) { + ~k[\pat].(name); + } { + ~k[\pat].(c[0]); + ~k[\tim].(c[1]); + ("[k] combo " ++ name ++ " (" ++ c[0] ++ "+" ++ c[1] ++ ")").postln; + }; +}; + +~k[\list] = { + "=== ~k -- KICKS ===".postln; + " combos : ".post; ~k[\combos].keys.asArray.sort.postln; + " patterns : ".post; ~k[\patterns].keys.asArray.sort.postln; + " timbres : ".post; ~k[\timbres].keys.asArray.sort.postln; + " USAGE : ~kk.(\\techno) | ~kPat.(\\amen) | ~kTim.(\\808)".postln; +}; + +// --- API utilisateur : variables d'env top-level -------------------- +// Ces wrappers acceptent les vrais args correctement. +~kPat = { |name| ~k[\pat].(name) }; +~kTim = { |name| ~k[\tim].(name) }; +~kGo = { |name| ~k[\go].(name) }; +~kList = { ~k[\list].() }; +~kk = { |name| ~k[\go].(name) }; // alias court + +"=== ~k pret -- ~kk.(\\techno) | ~kPat.(\\amen) | ~kTim.(\\808) | ~kList.() ===".postln; +) + + +// ===================================================================== +// EXEMPLES (Cmd+Entree pour appliquer) +// ===================================================================== + +--- combos prets --- +( ~kk.(\techno); ) +( ~kk.(\gabber); ) +( ~kk.(\dub); ) +( ~kk.(\trance); ) +( ~kk.(\amen); ) +( ~kk.(\hardstyle); ) +( ~kk.(\dnb); ) +( ~kk.(\phonk); ) +( ~kk.(\detroit); ) + +--- pattern seul --- +( ~kPat.(\amen); ) +( ~kPat.(\dense); ) +( ~kPat.(\off); ) // silence + +--- timbre seul --- +( ~kTim.(\808); ) +( ~kTim.(\909); ) +( ~kTim.(\distorded); ) + +--- accès direct par index --- +( ~kPat.(7); ) // pattern n°7 +( ~kTim.(3); ) // timbre n°3 + +--- liste tout --- +( ~kList.(); ) diff --git a/sound_algo/live/live.scd b/sound_algo/live/live.scd new file mode 100644 index 0000000..bff10ba --- /dev/null +++ b/sound_algo/live/live.scd @@ -0,0 +1,1428 @@ +// ===================================================================== +// live.scd -- Boite a outils live performance +// +// Ce fichier ajoute par-dessus engine.scd + fx_bus.scd + tweaks.scd : +// +// 1. LFO assignables sur N'IMPORTE QUELLE variable globale (~xxx) +// 2. Envelopes one-shot assignables (attack/sustain/release, sweep, burst) +// 3. VCF master inseres en chaine (moog / ms20 / ladder / formant / +// comb / hpf / bpf / notch) avec presets et sweep auto +// 4. Tricks sceniques live : stutter, choke, drop, handsUp, breakdown, +// buildup, tapeStop, glitch, freeze, reverbTail, tapeReverse, +// swap (crossfade scenes), jumpCut +// 5. Sidechain dynamique entre N'IMPORTE QUELLE source et cible +// 6. Stuttering / glitch / pitch : slipTime, bitCrushNow, ringMod, +// freqShift, granFreeze, scratch, repeat +// 7. Auto-pan / tremolo / autopan par voix +// 8. FX additionnels (12 nouveaux SynthDef) +// 9. Master compresseur / saturation switchable +// +// PREREQUIS : engine.scd evalue + live/fx_bus.scd evalue + serveur boote. +// USAGE : `(~base ++ "live/live.scd").load` puis Cmd+Entree sur les +// exemples en commentaire en bas. +// +// Convention : helpers exposes en variables d'environnement ~xxx +// + UN SEUL bloc top-level (compatible .load) +// ===================================================================== + +( + +// ===================================================================== +// 0. SYNTHDEFS additionnels +// ===================================================================== + +// --- VCF Moog (filtre 4-pole, MoogFF) --------------------------------- + + +// --- VCF MS20 (Sallen-Key style, agressif) ---------------------------- + + +// --- VCF Ladder (24 dB/oct vintage) ----------------------------------- + + +// --- VCF Formant (voyelles a/e/i/o/u) --------------------------------- +// vowel : 0=a 1=e 2=i 3=o 4=u, mix entre crossfade + + +// --- VCF Comb (resonator) --------------------------------------------- + + +// --- VCF HPF resonant ------------------------------------------------- + + +// --- VCF BPF resonant ------------------------------------------------- + + +// --- VCF Notch (sweepable, supprime une bande) ------------------------ + + +// --- FX additionnels (lus depuis fxBuses[\xxx], compatibles fx_bus.scd) --- + +// Ring modulator avec freq mod + + +// Frequency shifter + + +// Granular freeze (simule un "grain hold" via PitchShift en boucle) + + +// Comb filter resonator + + +// Formant filter (Klank) - voyelle parametrable + + +// Auto-filter LFO sur cutoff + + +// Tremolo (amp LFO) + + +// Auto-pan + + +// Stutter rythmique (gate carre) + + +// Resonator Klank (pitched ringing) + + +// Reverb a ressort (allpass nested + filtre tonal) + + +// Plate reverb (court + brillant + dense) + + +// --- Master compresseur (insert avant masterLim) ---------------------- +// Compander : threshold, slopeBelow=1 (no expand), slopeAbove<1 (compress) + + +// --- Master saturation (tanh / softclip / fold) ----------------------- +// mode : 0=tanh, 1=softclip, 2=fold + + +// --- Bus master temporaire pour effets globaux serie ------------------- +// utilise par ~slipTime, ~ringMod momentanes : un Synth applique l'effet +// inline dans une chaine ReplaceOut sur le bus 0. + + + + + + + + + + +s.sync; + + +// ===================================================================== +// 1. LFO assignables sur N'IMPORTE QUELLE variable globale ~xxx +// ===================================================================== +// Stockage : ~lfos (different de ~fxLfos qui est reserve aux LFO FX) +~lfos !? { ~lfos.do(_.stop) }; +~lfos = (); + +// Helper interne : recupere une variable par symbol +~getVar = { |sym| + currentEnvironment[sym.asSymbol] +}; + +// Helper interne : assigne une variable par symbol +~setVar = { |sym, val| + currentEnvironment[sym.asSymbol] = val +}; + +// LFO continu : assigne une oscillation a ~paramName +// shape : \sin \tri \saw \sqr \rand \smoothRand \drunk \noise +// center : valeur centrale (par defaut = valeur courante de la var) +// doReload : si true, appelle ~reload a chaque step (utile pour les +// params lus dans Pdef -- pour des params pousses au Synth +// en live, mettre false) +// IMPORTANT : doReload est maintenant FALSE par defaut (depuis le +// refacto engine.scd avec Pfunc { ~xxx } sur les params scalaires). +// Les Pdef lisent les ~xxx dynamiquement a chaque event, donc plus +// besoin de rebuild les Pdef a chaque step LFO. Cela evitait une fuite +// scsynth massive quand un LFO actif rebuilait Pdef(\acidSeq) = +// PmonoArtic 20 fois/seconde. +~lfoTo = { |paramName, rate = 1.0, depth = 0.3, shape = \sin, + center = nil, doReload = false, pulseWidth = 0.5| + var sym = paramName.asSymbol; + var c = center ?? { ~getVar.(sym) ? 0 }; + var stepDur = 0.05; + ~lfos[sym] !? { ~lfos[sym].stop }; + ~lfos[sym] = Routine({ + var phase = 0; + var lastRand = 0; + var nextRand = 1.0.rand2; + var drunk = 0; + inf.do { |i| + var x; + x = switch (shape, + \sin, { (phase * 2 * pi).sin }, + \tri, { ((phase * 4 - 1).abs - 1).neg }, + \saw, { (phase * 2) - 1 }, + \sqr, { if (phase < pulseWidth) { 1 } { -1 } }, + \rand, { + if (i.even) { lastRand = 1.0.rand2 }; + lastRand + }, + \smoothRand, { + var p = (phase * 2); + if (p >= 1.0) { + lastRand = nextRand; + nextRand = 1.0.rand2; + phase = phase - 0.5; + p = phase * 2; + }; + lastRand + ((nextRand - lastRand) * p) + }, + \drunk, { + drunk = (drunk + (rrand(-0.15, 0.15))).clip(-1, 1); + drunk + }, + \noise, { 1.0.rand2 } + ); + ~setVar.(sym, c + (x * depth)); + if (doReload) { ~reload !? { ~reload.value } }; + phase = (phase + (rate * stepDur)).mod(1.0); + stepDur.wait; + }; + }).play; + ("LFO ~" ++ sym ++ " " ++ rate ++ "Hz depth=" ++ depth + ++ " " ++ shape ++ " center=" ++ c.round(0.01)).postln; +}; + +// LFO sync au tempo : beatsDiv = nombre de beats par cycle complet +// ex: 4 = un cycle sur 4 beats (ralenti), 0.25 = 4 cycles par beat +// FIX FUITE RAM : doReload defaut a false (etait true). Avec true, chaque +// tick LFO appelait ~reload.value qui recompile les 8 Pdef -> 5-40 +// recompilations/sec selon BPM, fuite client + server. Pfunc dans engine.scd +// lit deja les variables dynamiquement, doReload n'est plus necessaire. +~lfoSync = { |paramName, beatsDiv = 4, depth = 0.3, shape = \sin, + center = nil, doReload = false| + var bps = TempoClock.default.tempo; + var rate = bps / beatsDiv; + ~lfoTo.(paramName, rate, depth, shape, center, doReload); +}; + +// Stop un LFO sur une var precise +~lfoStopVar = { |paramName| + var sym = paramName.asSymbol; + ~lfos[sym] !? { ~lfos[sym].stop; ~lfos.removeAt(sym) }; + ("LFO ~" ++ sym ++ " STOPPED").postln; +}; + +// Stop tous les LFO de variables (different de ~lfoStopAll de fx_bus +// qui est pour les LFO FX). On garde un nom different pour ne pas +// ecraser ~lfoStopAll de fx_bus.scd. Voir aussi ~lfoStopEverything. +~lfoStopAllVars = { + ~lfos.do { |r| r.stop }; ~lfos = (); + "all variable LFOs stopped".postln; +}; + +// Stop tous les LFOs (FX + variables) +~lfoStopEverything = { + ~lfos.do { |r| r.stop }; ~lfos = (); + ~fxLfos !? { ~fxLfos.do { |r| r.stop }; ~fxLfos = () }; + "ALL LFOs stopped (vars + fx)".postln; +}; + +// Liste les LFO actifs +~lfoList = { + "=== LFO actifs ===".postln; + if (~lfos.size == 0) { + " (aucun LFO sur variable)".postln; + } { + ~lfos.keysValuesDo { |k, v| (" ~" ++ k ++ " -> Routine").postln }; + }; + if ((~fxLfos.notNil) and: { ~fxLfos.size > 0 }) { + "--- LFO FX ---".postln; + ~fxLfos.keysValuesDo { |k, v| (" " ++ k).postln }; + }; +}; + + +// ===================================================================== +// 2. Envelopes one-shot assignables +// ===================================================================== +// Stockage des envelopes en cours (Routines) +~envs !? { ~envs.do(_.stop) }; +~envs = (); + +// Env attack/sustain/release sur une var globale +// target : valeur de pic a la fin de l'attack +// returnTo : valeur retour apres release (par defaut = valeur initiale) +~envTo = { |paramName, attack = 0.1, sustain = 0.5, release = 0.5, + target = 1.0, returnTo = nil, doReload = true| + var sym = paramName.asSymbol; + var start = ~getVar.(sym) ? 0; + var end = returnTo ? start; + var stepDur = 0.02; + ~envs[sym] !? { ~envs[sym].stop }; + ~envs[sym] = Routine({ + // ATTACK : start -> target + var attackSteps = (attack / stepDur).max(1).asInteger; + attackSteps.do { |i| + var x = (i + 1) / attackSteps; + ~setVar.(sym, start + ((target - start) * x)); + if (doReload) { ~reload !? { ~reload.value } }; + stepDur.wait; + }; + // SUSTAIN : maintien + sustain.wait; + // RELEASE : target -> end + attackSteps = (release / stepDur).max(1).asInteger; + attackSteps.do { |i| + var x = (i + 1) / attackSteps; + ~setVar.(sym, target + ((end - target) * x)); + if (doReload) { ~reload !? { ~reload.value } }; + stepDur.wait; + }; + ~envs.removeAt(sym); + }).play; + ("ENV ~" ++ sym ++ " " ++ start.round(0.01) ++ " -> " + ++ target.round(0.01) ++ " -> " ++ end.round(0.01)).postln; +}; + +// Env percussive courte (linenv : attack rapide + decay) +~envBurst = { |paramName, target = 1.0, dur = 0.5, curve = -3, + doReload = true| + var sym = paramName.asSymbol; + var start = ~getVar.(sym) ? 0; + var stepDur = 0.02; + ~envs[sym] !? { ~envs[sym].stop }; + ~envs[sym] = Routine({ + var totalSteps = (dur / stepDur).max(2).asInteger; + var env = Env.perc(0.005, dur, target - start, curve); + // attack + ~setVar.(sym, target); + if (doReload) { ~reload !? { ~reload.value } }; + // release exponentiel approche + totalSteps.do { |i| + var x = (i + 1) / totalSteps; + // courbe approx exp negative + var v = target - ((target - start) * x.pow(0.5)); + ~setVar.(sym, v); + if (doReload) { ~reload !? { ~reload.value } }; + stepDur.wait; + }; + ~setVar.(sym, start); + if (doReload) { ~reload !? { ~reload.value } }; + ~envs.removeAt(sym); + }).play; +}; + +// Sweep lineaire / expo entre fromVal et toVal en dur secondes +// curve : \lin ou \exp +~envSweep = { |paramName, fromVal, toVal, dur = 4, curve = \lin, + doReload = true| + var sym = paramName.asSymbol; + var stepDur = 0.04; + ~envs[sym] !? { ~envs[sym].stop }; + ~envs[sym] = Routine({ + var steps = (dur / stepDur).max(2).asInteger; + steps.do { |i| + var x = (i + 1) / steps; + var v; + if (curve == \exp) { + v = fromVal * ((toVal / fromVal.max(0.0001)).pow(x)); + } { + v = fromVal + ((toVal - fromVal) * x); + }; + ~setVar.(sym, v); + if (doReload) { ~reload !? { ~reload.value } }; + stepDur.wait; + }; + ~envs.removeAt(sym); + }).play; + ("SWEEP ~" ++ sym ++ " " ++ fromVal ++ " -> " ++ toVal + ++ " sur " ++ dur ++ "s (" ++ curve ++ ")").postln; +}; + +// Variantes pratiques pour le filtre melody +~filterSweepUp = { |dur = 4| + ~envSweep.(\melodyCutoff, 200, 6000, dur, \exp); +}; +~filterSweepDown = { |dur = 4| + ~envSweep.(\melodyCutoff, 6000, 200, dur, \exp); +}; + +// Duck momentane sur l'amp master via masterAmp ou via tous les amps +~ampDuck = { |dur = 0.3, depth = 0.7| + // applique un dip sur kickAmp/melodyAmp/acidAmp/harmonyAmp + var startKick = ~kickAmp ? 0.5; + var startMel = ~melodyAmp ? 0.16; + var startAcid = ~acidAmp ? 0.32; + var startHarm = ~harmonyAmp ? 0.14; + Routine({ + ~kickAmp = startKick * (1 - depth); + ~melodyAmp = startMel * (1 - depth); + ~acidAmp = startAcid * (1 - depth); + ~harmonyAmp = startHarm * (1 - depth); + ~reload !? { ~reload.value }; + dur.wait; + ~kickAmp = startKick; + ~melodyAmp = startMel; + ~acidAmp = startAcid; + ~harmonyAmp = startHarm; + ~reload !? { ~reload.value }; + }).play; + ("AMP DUCK depth=" ++ depth ++ " dur=" ++ dur).postln; +}; + + +// ===================================================================== +// 3. VCF Master : insert filtre temps reel sur le master +// ===================================================================== +// Le VCF lit le bus 0 et ReplaceOut. +// IMPORTANT : insertion en `addBefore: ~masterLim` pour rester +// avant le limiter. Si masterLim n'existe pas, on l'ajoute en tail. +~vcfActive = nil; +~vcfActiveType = nil; + +~vcfOn = { |type = \moog, freq = 1500, q = 0.5| + var defName, args = [\busIn, 0, \freq, freq, \mix, 1.0]; + // map type -> nom complet de SynthDef + defName = switch (type.asSymbol, + \moog, \vcfMoog, + \ms20, \vcfMs20, + \ladder, \vcfLadder, + \formant, \vcfFormant, + \comb, \vcfComb, + \hpf, \vcfHpf, + \bpf, \vcfBpf, + \notch, \vcfNotch, + // default + \vcfMoog + ); + // Args adaptes par type + args = switch (defName, + \vcfMoog, [\busIn, 0, \freq, freq, \gain, q * 4, \mix, 1.0], + \vcfMs20, [\busIn, 0, \freq, freq, \q, q * 2, \mix, 1.0], + \vcfLadder, [\busIn, 0, \freq, freq, \q, q * 2, \mix, 1.0], + \vcfFormant, [\busIn, 0, \vowel, freq.asInteger.clip(0, 4), + \q, q.clip(0.05, 1), \mix, 1.0], + \vcfComb, [\busIn, 0, \freq, freq, \decay, q * 2, \mix, 0.6], + \vcfHpf, [\busIn, 0, \freq, freq, \q, q, \mix, 1.0], + \vcfBpf, [\busIn, 0, \freq, freq, \q, q, \mix, 1.0], + \vcfNotch, [\busIn, 0, \freq, freq, \q, q, \mix, 1.0] + ); + ~vcfActive !? { ~vcfActive.free }; + if (~masterLim.notNil) { + ~vcfActive = Synth.before(~masterLim, defName, args); + } { + ~vcfActive = Synth.tail(s.defaultGroup, defName, args); + }; + ~vcfActiveType = type; + ("VCF " ++ type ++ " ON freq=" ++ freq ++ " q=" ++ q).postln; +}; + +~vcfSet = { |param, value| + ~vcfActive !? { ~vcfActive.set(param.asSymbol, value) }; +}; + +// Sweep automatique du cutoff (ne touche pas le SynthDef, set en live). +// FIX FUITE RAM : Routine maintenant trackee dans ~vcfSweepRoutine (avant +// elle etait orpheline ; si l'utilisateur cancelait mid-sweep ou +// enchainait deux ~vcfSweep d'affilee, les anciennes Routines continuaient +// silencieusement). ~vcfOff et ~killAllOrphans la stoppent. +~vcfSweep = { |fromHz = 200, toHz = 5000, dur = 4, curve = \exp| + ~vcfSweepRoutine !? { try { ~vcfSweepRoutine.stop } }; + ~vcfSweepRoutine = Routine({ + var steps = (dur / 0.03).max(2).asInteger; + steps.do { |i| + var x = (i + 1) / steps; + var f; + if (curve == \exp) { + f = fromHz * ((toHz / fromHz.max(0.001)).pow(x)); + } { + f = fromHz + ((toHz - fromHz) * x); + }; + ~vcfSet.(\freq, f); + 0.03.wait; + }; + ~vcfSweepRoutine = nil; + }).play; + ("VCF SWEEP " ++ fromHz ++ " -> " ++ toHz ++ "Hz sur " ++ dur ++ "s").postln; +}; + +~vcfOff = { + ~vcfSweepRoutine !? { try { ~vcfSweepRoutine.stop }; ~vcfSweepRoutine = nil }; + ~vcfActive !? { ~vcfActive.free; ~vcfActive = nil; ~vcfActiveType = nil }; + "VCF OFF".postln; +}; + +// Presets prets a l'emploi +~vcfPreset = { |preset| + switch (preset.asSymbol, + \acid, { ~vcfOn.(\moog, 600, 0.85) }, + \dub, { ~vcfOn.(\ladder, 900, 0.5) }, + \deep, { ~vcfOn.(\moog, 400, 0.4) }, + \bright, { ~vcfOn.(\bpf, 3500, 0.4) }, + \dark, { ~vcfOn.(\moog, 250, 0.3) }, + \formantA, { ~vcfOn.(\formant, 0, 0.15) }, + \formantE, { ~vcfOn.(\formant, 1, 0.15) }, + \formantI, { ~vcfOn.(\formant, 2, 0.15) }, + \formantO, { ~vcfOn.(\formant, 3, 0.15) }, + \formantU, { ~vcfOn.(\formant, 4, 0.15) }, + // par defaut + { "preset VCF inconnu".postln } + ); +}; + + +// ===================================================================== +// 4. Tricks sceniques live (combos) +// ===================================================================== + +// --- Tracking des Routines de tricks (anti-spam / anti-fuite RAM) --- +// Au reload du fichier : stoppe et libere les anciennes Routines avant +// de re-creer le dict (sinon les anciennes continuent a tourner et +// accumulent des Synths cote scsynth). +~trickRoutines !? { + ~trickRoutines.keysValuesDo { |k, r| r !? { try { r.stop } } }; +}; +~trickRoutines = (); +~trickStop = { |key| + ~trickRoutines[key.asSymbol] !? { + ~trickRoutines[key.asSymbol].stop; + ~trickRoutines[key.asSymbol] = nil; + }; +}; +~trickStopAll = { + ~trickRoutines.keysValuesDo { |k, r| r !? { r.stop } }; + ~trickRoutines = (); + "TRICKS STOPPED ALL".postln; +}; + +// Stutter master via amp gate (modulation sur kick/mel/acid/harm) +~stutter = { |rateHz = 8, dur = 1.0| + ~trickStop.(\stutter); + ~trickRoutines[\stutter] = Routine({ + var n = (dur * rateHz).max(2).asInteger; + var period = 1.0 / rateHz; + var startK = ~kickAmp; var startM = ~melodyAmp; + var startA = ~acidAmp; var startH = ~harmonyAmp; + n.do { |i| + var on = i.even; + ~kickAmp = if (on) { startK } { 0 }; + ~melodyAmp = if (on) { startM } { 0 }; + ~acidAmp = if (on) { startA } { 0 }; + ~harmonyAmp = if (on) { startH } { 0 }; + ~reload !? { ~reload.value }; + period.wait; + }; + ~kickAmp = startK; ~melodyAmp = startM; + ~acidAmp = startA; ~harmonyAmp = startH; + ~reload !? { ~reload.value }; + ~trickRoutines[\stutter] = nil; + }).play; + ("STUTTER " ++ rateHz ++ "Hz " ++ dur ++ "s").postln; +}; + +// Coupe la rythmique +~chokePerc = { + ~kickAmp = 0; ~hatAmp = 0; + ~snareAmp !? { ~snareAmp = 0 }; + ~clapAmp !? { ~clapAmp = 0 }; + ~percAmp !? { ~percAmp = 0 }; + ~reload !? { ~reload.value }; + "CHOKE PERC".postln; +}; + +// Coupe melodies / lead / acid +~chokeLead = { + ~melodyAmp = 0; ~harmonyAmp = 0; ~acidAmp = 0; + ~reload !? { ~reload.value }; + "CHOKE LEAD".postln; +}; + +// Drop : silence -> snareFill -> reverb freeze -> blast +~drop = { |buildDur = 4| + var startK = ~kickAmp ? 0.5; + var startM = ~melodyAmp ? 0.16; + var startA = ~acidAmp ? 0.32; + var startH = ~harmonyAmp ? 0.14; + ~trickStop.(\drop); + ~trickRoutines[\drop] = Routine({ + // 1. fade out tout sur buildDur secondes + ~envSweep.(\kickAmp, startK, 0, buildDur, \lin, true); + ~envSweep.(\melodyAmp, startM, 0, buildDur, \lin, false); + ~envSweep.(\acidAmp, startA, 0, buildDur, \lin, false); + ~envSweep.(\harmonyAmp, startH, 0, buildDur, \lin, false); + // riser pendant le build + Synth(\riser, [\dur, buildDur, \amp, 0.4]); + buildDur.wait; + // 2. snare fill juste avant le drop + ~snareFill !? { ~snareFill.value }; + // 3. reverb freeze + delay 1/4 + ~setFx !? { + ~setFx.(\rev, \freeze, 1); + ~sendReverb !? { ~sendReverb.(0.6) }; + ~setFx.(\dly, \delayTime, 60 / TempoClock.default.tempo); + ~sendDelay !? { ~sendDelay.(0.5) }; + }; + 0.5.wait; + // 4. BLAST - on rebalance tout + ~kickAmp = startK; ~melodyAmp = startM; + ~acidAmp = startA; ~harmonyAmp = startH; + ~reload !? { ~reload.value }; + // impact + Synth(\impact, [\amp, 0.7]); + // unfreeze apres 1s + 1.0.wait; + ~setFx !? { ~setFx.(\rev, \freeze, 0) }; + ~trickRoutines[\drop] = nil; + }).play; + ("DROP build=" ++ buildDur ++ "s").postln; +}; + +// Hands up : sub kick mute + lead boost + delay courte + clap +~handsUp = { + ~kickAmp = 0; // pas de sub + ~melodyAmp = (~melodyAmp ? 0.16) * 1.6; + ~clapAmp !? { ~clapAmp = 0.5 }; + ~setFx !? { + ~setFx.(\dly, \delayTime, 60 / TempoClock.default.tempo / 4); + ~sendDelay !? { ~sendDelay.(0.5) }; + }; + ~reload !? { ~reload.value }; + "HANDS UP".postln; +}; + +// Breakdown : kill rythmique progressif puis melody seule + shimmer +~breakdown = { |dur = 8| + var startK = ~kickAmp ? 0.5; + var startA = ~acidAmp ? 0.32; + var startH = (~hatAmp ? 0.18); + ~trickStop.(\breakdown); + ~trickRoutines[\breakdown] = Routine({ + ~envSweep.(\kickAmp, startK, 0, dur * 0.4, \lin, true); + ~envSweep.(\acidAmp, startA, 0, dur * 0.4, \lin, false); + ~envSweep.(\hatAmp, startH, 0, dur * 0.4, \lin, false); + ~sendShimmer !? { ~sendShimmer.(0.5) }; + ~sendReverb !? { ~sendReverb.(0.5) }; + dur.wait; + ~trickRoutines[\breakdown] = nil; + }).play; + ("BREAKDOWN " ++ dur ++ "s").postln; +}; + +// Buildup : crescendo (riser + fadein de tout + filterSweepUp) +~buildup = { |dur = 8| + var endK = 0.5; var endM = 0.16; var endA = 0.32; + Synth(\riser, [\dur, dur, \amp, 0.45]); + ~envSweep.(\kickAmp, ~kickAmp ? 0, endK, dur, \lin, true); + ~envSweep.(\melodyAmp, ~melodyAmp ? 0, endM, dur, \lin, false); + ~envSweep.(\acidAmp, ~acidAmp ? 0, endA, dur, \lin, false); + ~filterSweepUp.(dur); + ("BUILDUP " ++ dur ++ "s").postln; +}; + +// Liste centralisee des Pdef sequenceurs (utilise par tapeStop / tapeStart +// / playAll). Si tu ajoutes une voix, mets a jour ici. +~allSeqs = [ + \kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq +]; + +// FIX FUITE RAM CLIENT : ~reload debounce. +// +// Probleme : les tracks appellent ~reload.value 5-10x par section (dans +// les `if (X.coin) { ...; ~reload.value }` loops). Chaque reload recompile +// 8 Pdef Pbind avec ~50 Pfunc closures qui retiennent currentEnvironment +// = ~10 KB sclang par reload. Sur une track de 5 min : ~250 reloads = +// 2.5 MB client memory pile. Sur un album : 50 MB. Sclang grossit jusqu'au +// crash. +// +// Solution : 1er appel fire IMMEDIAT + arme une fenetre 100 ms. Les appels +// pendant la fenetre sont coalesces en UN SEUL trailing call. Les variables +// ~xxx etant lues a l'execution du Pdef, le trailing call recupere +// automatiquement la valeur la plus recente. +// +// DEBOUNCING ~reload : 4-10 ~reload rapides -> 2 executions reelles. +// Reduit la pression sur le GC sclang (Pfunc closures). +// +// IMPORTANT : guard idempotent contre reload multiple de live.scd. +if (~reloadImmediate.isNil) { ~reloadImmediate = ~reload }; +~reloadPending = false; +~reloadDebouncer = nil; +~reloadWindow = 0.1; // 100 ms + +~reload = { + if (~reloadDebouncer.isNil) { + // Hors fenetre : execute tout de suite + ouvre fenetre + ~reloadImmediate.value; + ~reloadDebouncer = Routine({ + ~reloadWindow.wait; + if (~reloadPending) { + ~reloadImmediate.value; + ~reloadPending = false; + }; + ~reloadDebouncer = nil; + }).play; + } { + // Dans la fenetre : marque pending, le trailing call l'executera + ~reloadPending = true; + }; +}; + +~reloadNow = { ~reloadImmediate.value }; + +// FIX FUITE RAM SCSYNTH : ~playActive ne lance QUE les Pdef dont l'amp > 0. +// +// Probleme : la pluspart des tracks font +// [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).play }; +// meme quand snare/clap/perc/harmony ont amp=0. Resultat : 3-4 Pdef +// fantomes qui spawnent des Synths silencieux a 9/sec chacun = 30+ +// Synths/sec inutiles cote scsynth. Sur une track de 5 min = 9000+ +// Synth instantiations gachees + UGens correspondants alloues puis +// liberes (churn massif). +// +// Solution : verifier l'amp avant chaque .play. Les Pdef sans amp restent +// .stop. L'utilisateur peut les ramener vivant en setant ~xxxAmp > 0 +// puis appelant ~playActive.value de nouveau. +~allSeqsAmpKey = ( + kickSeq: \kickAmp, hatSeq: \hatAmp, snareSeq: \snareAmp, + clapSeq: \clapAmp, percSeq: \percAmp, acidSeq: \acidAmp, + melodySeq: \melodyAmp, harmonySeq: \harmonyAmp +); + +~playActive = { + var played = List.new, skipped = List.new; + ~allSeqsAmpKey.keysValuesDo { |seqKey, ampKey| + var amp = currentEnvironment[ampKey] ? 0; + if (amp > 0) { + Pdef(seqKey).play; + played.add(seqKey); + } { + Pdef(seqKey).stop; + skipped.add(seqKey); + }; + }; + ("[playActive] play=" ++ played.asArray + ++ " skip=" ++ skipped.asArray).postln; +}; + +// FIX FUITE RAM TRACK : helper a appeler en debut de chaque ~track Routine +// pour eviter que la track precedente survive en pieces detachees. +// +// Probleme : `~track !? { ~track.stop }` arretait la Routine principale +// MAIS pas les Pdef qu'elle avait .play() (kickSeq/melodySeq/etc.) ni les +// ~trickRoutines (stutter, drop), ~lfos, ~envs, ~fxLfos qu'elle avait +// declenches. Resultat : enchainer 3 tracks empilait 3 jeux complets -> +// 3x les Synths, 3x les Routines, fuite explosive. +// +// ~trackBegin fait le meme cleanup que ~killAllOrphans mais SANS stopper +// ~track lui-meme (sinon il s'auto-tuerait). +~trackBegin = { + // 1. Stop tous les Pdef sequenceurs + ~allSeqs.do { |k| Pdef(k).stop }; + // 2. Stop ~trickRoutines (stutter, drop, glitch, freeze, ...) + ~trickStopAll !? { ~trickStopAll.value }; + // 3. Stop ~lfos (params live) + ~lfos !? { + ~lfos.keysValuesDo { |k, v| try { v.stop } }; + ~lfos.clear; + }; + // 4. Stop ~envs (envelopes ponctuelles) + ~envs !? { + ~envs.keysValuesDo { |k, v| try { v.stop } }; + ~envs.clear; + }; + // 5. Stop ~fxLfos (LFO sur sends FX) + ~fxLfos !? { + ~fxLfos.keysValuesDo { |k, v| try { v.stop } }; + ~fxLfos.clear; + }; + // 6. Stop VCF sweep en cours + ~vcfSweepRoutine !? { try { ~vcfSweepRoutine.stop }; ~vcfSweepRoutine = nil }; + // 7. Stop auto-fx (panning/tremolo) sur les voix principales + ~stopAutoFx !? { + [\kick, \hat, \snare, \clap, \perc, \acid, \melody, \harmony] + .do { |v| try { ~stopAutoFx.(v) } }; + }; + "[trackBegin] cleanup OK".postln; +}; + +// Play All : relance instantanement tous les Pdef sequenceurs (pendant +// direct de ~tapeStop). N'altere ni tempo ni amp -- juste .play(). +~playAll = { + ~allSeqs.do { |k| Pdef(k).play }; + "PLAY ALL".postln; +}; + +// Tape start : symetrique de ~tapeStop. Relance les Pdef puis accelere +// le tempo de 0.01 jusqu'a startTempo (passe en argument ou actuel). +~tapeStart = { |dur = 2, targetTempo| + var endTempo = targetTempo ? TempoClock.default.tempo; + ~trickStop.(\tapeStart); + ~trickRoutines[\tapeStart] = Routine({ + var steps = (dur / 0.03).max(2).asInteger; + // relance les Pdef AU PLUS BAS tempo (ou ils repartent au ralenti) + TempoClock.default.tempo = 0.01; + ~allSeqs.do { |k| Pdef(k).play }; + steps.do { |i| + var x = (i + 1) / steps; + // courbe expo inverse (monte vite puis lentement) + var t = endTempo * x.sqrt; + TempoClock.default.tempo = t.max(0.01); + 0.03.wait; + }; + TempoClock.default.tempo = endTempo; + ~trickRoutines[\tapeStart] = nil; + }).play; + ("TAPE START " ++ dur ++ "s -> " ++ endTempo).postln; +}; + +// Tape stop : ralenti progressif du tempo puis stop +~tapeStop = { |dur = 2| + var startTempo = TempoClock.default.tempo; + ~trickStop.(\tapeStop); + ~trickRoutines[\tapeStop] = Routine({ + var steps = (dur / 0.03).max(2).asInteger; + steps.do { |i| + var x = (i + 1) / steps; + // courbe expo (descend lentement puis vite) + var t = startTempo * ((1 - x).pow(2)); + TempoClock.default.tempo = t.max(0.01); + 0.03.wait; + }; + // stop + ~allSeqs.do { |k| Pdef(k).stop }; + TempoClock.default.tempo = startTempo; + ~trickRoutines[\tapeStop] = nil; + }).play; + ("TAPE STOP " ++ dur ++ "s").postln; +}; + +// Glitch : bitcrush + stutter + delay courte momentanes +~glitch = { |dur = 2| + Synth(\fxMasterBitcrush, [\dur, dur, \bits, 5, \sr, 5000, \mix, 0.7]); + ~stutter.(16, dur); + ~setFx !? { + ~setFx.(\dly, \delayTime, 0.05); + ~sendDelay !? { ~sendDelay.(0.4) }; + }; + ~trickStop.(\glitch); + ~trickRoutines[\glitch] = Routine({ + dur.wait; + ~sendDelay !? { ~sendDelay.(0) }; + ~trickRoutines[\glitch] = nil; + }).play; + ("GLITCH " ++ dur ++ "s").postln; +}; + +// Freeze : reverb freeze + cut sec +~freeze = { |dur = 4| + var startK = ~kickAmp ? 0.5; + var startM = ~melodyAmp ? 0.16; + var startA = ~acidAmp ? 0.32; + ~trickStop.(\freeze); + ~trickRoutines[\freeze] = Routine({ + ~setFx !? { + ~setFx.(\rev, \freeze, 1); + ~sendReverb !? { ~sendReverb.(0.7) }; + }; + ~kickAmp = 0; ~melodyAmp = 0; ~acidAmp = 0; + ~reload !? { ~reload.value }; + dur.wait; + ~setFx !? { + ~setFx.(\rev, \freeze, 0); + ~sendReverb !? { ~sendReverb.(0.3) }; + }; + ~kickAmp = startK; ~melodyAmp = startM; ~acidAmp = startA; + ~reload !? { ~reload.value }; + ~trickRoutines[\freeze] = nil; + }).play; + ("FREEZE " ++ dur ++ "s").postln; +}; + +// Reverb tail : kill all + reverb send max + dur secondes de queue +~reverbTail = { |dur = 4| + var startK = ~kickAmp ? 0.5; + var startM = ~melodyAmp ? 0.16; + var startA = ~acidAmp ? 0.32; + var startH = ~harmonyAmp ? 0.14; + ~trickStop.(\reverbTail); + ~trickRoutines[\reverbTail] = Routine({ + ~sendReverb !? { ~sendReverb.(0.9) }; + ~setFx !? { ~setFx.(\rev, \room, 0.97); ~setFx.(\rev, \damp, 0.1) }; + ~kickAmp = 0; ~melodyAmp = 0; ~acidAmp = 0; ~harmonyAmp = 0; + ~reload !? { ~reload.value }; + dur.wait; + ~kickAmp = startK; ~melodyAmp = startM; + ~acidAmp = startA; ~harmonyAmp = startH; + ~reload !? { ~reload.value }; + ~sendReverb !? { ~sendReverb.(0.3) }; + ~trickRoutines[\reverbTail] = nil; + }).play; + ("REVERB TAIL " ++ dur ++ "s").postln; +}; + +// Tape reverse : effet inverse via riser cutoff inverse + freeze +~tapeReverse = { |dur = 2| + Synth(\sweep, [\dur, dur, \startCutoff, 200, \endCutoff, 8000, \amp, 0.3]); + ~filterSweepUp.(dur); + ~setFx !? { + ~setFx.(\rev, \freeze, 1); + ~sendReverb !? { ~sendReverb.(0.5) }; + }; + ~trickStop.(\tapeReverse); + ~trickRoutines[\tapeReverse] = Routine({ + dur.wait; + ~setFx !? { ~setFx.(\rev, \freeze, 0) }; + ~trickRoutines[\tapeReverse] = nil; + }).play; + ("TAPE REVERSE " ++ dur ++ "s").postln; +}; + +// Swap : crossfade entre deux scenes (utilise scenes.scd ~scenes ou +// simplement bascule deux preset par nom). Si ~scene helper existe. +~swap = { |sceneA, sceneB, dur = 4| + ~trickStop.(\swap); + ~trickRoutines[\swap] = Routine({ + if (~scene.notNil) { + // fade out current + ~envSweep.(\melodyAmp, ~melodyAmp, 0, dur * 0.5, \lin, false); + ~envSweep.(\acidAmp, ~acidAmp, 0, dur * 0.5, \lin, false); + (dur * 0.5).wait; + ~scene.(sceneB); + } { + ("swap : pas de helper ~scene -- swap " ++ sceneA + ++ " <-> " ++ sceneB ++ " (no-op)").postln; + }; + ~trickRoutines[\swap] = nil; + }).play; +}; + +// Jump cut : silence sec dur secondes puis reprend tout +~jumpCut = { |dur = 1| + var startK = ~kickAmp; var startM = ~melodyAmp; + var startA = ~acidAmp; var startH = ~harmonyAmp; + ~trickStop.(\jumpCut); + ~trickRoutines[\jumpCut] = Routine({ + ~kickAmp = 0; ~melodyAmp = 0; ~acidAmp = 0; ~harmonyAmp = 0; + ~reload !? { ~reload.value }; + dur.wait; + ~kickAmp = startK; ~melodyAmp = startM; + ~acidAmp = startA; ~harmonyAmp = startH; + ~reload !? { ~reload.value }; + ~trickRoutines[\jumpCut] = nil; + }).play; + ("JUMP CUT " ++ dur ++ "s").postln; +}; + + +// ===================================================================== +// 5. Sidechain dynamique (source -> target) +// ===================================================================== +// Le moteur a deja ~scBus utilise par kick. On etend pour permettre +// d'autres SC dynamiques en jouant simplement sur les ~xxxScAmt +// existants. Pour un vrai SC d'une voix arbitraire vers une autre +// arbitraire, on creerait un nouveau bus -- ici on offre une API +// qui module les SC amount existants en fonction d'une source. +~scTrigger = { |source = \kick, target = \acid, amount = 0.7, + attack = 0.005, release = 0.2| + // pour kick -> acid/lead : ce sont les SC built-in : on set juste les amounts + var key = (source.asString ++ "->" ++ target.asString).asSymbol; + if (source == \kick) { + switch (target.asSymbol, + \acid, { ~acidScAmt = amount; ~kickScShape = release }, + \melody, { ~leadScAmt = amount; ~kickScShape = release }, + \harmony, { ~leadScAmt = amount; ~kickScShape = release }, + \master, { + // duck global synthetique : ampDuck a chaque kick sans + // implementer un vrai bus de SC : on map kick.amp -> tous + // les amps via un helper Routine. Approche pragmatique. + ~scAuto.(amount); + }, + { "scTrigger : target inconnu".postln } + ); + ~reload !? { ~reload.value }; + } { + ("scTrigger : seule la source \\kick est cablee dans le moteur " + ++ "(snare/clap necessitent un bus dedie)").postln; + }; + ("SC " ++ key ++ " amount=" ++ amount).postln; +}; + +// SC auto sur tout le mix (fait pomper tout sur le kick) +~scAuto = { |amount = 0.6| + ~acidScAmt = amount; + ~leadScAmt = amount; + ~reload !? { ~reload.value }; + ("SC AUTO global = " ++ amount).postln; +}; + +~scOff = { + ~acidScAmt = 0; ~leadScAmt = 0; + ~reload !? { ~reload.value }; + "SC OFF".postln; +}; + + +// ===================================================================== +// 6. Stuttering / glitch / pitch momentanes +// ===================================================================== +// Tous via Synth a duree finie (doneAction:2) -> pas besoin de free. + +~slipTime = { |amount = 0.5, dur = 1| + // amount : 0.5 = -1 octave, 1.0 = identite, 2.0 = +1 octave + Synth(\fxMasterPitch, [\dur, dur, \pitch, amount.clip(0.25, 4.0)]); + ("SLIP TIME pitch=" ++ amount ++ " dur=" ++ dur).postln; +}; + +~bitCrushNow = { |bits = 6, sr = 6000, dur = 1| + Synth(\fxMasterBitcrush, [\dur, dur, \bits, bits, \sr, sr, \mix, 0.7]); + ("BITCRUSH bits=" ++ bits ++ " sr=" ++ sr).postln; +}; + +~ringMod = { |freq = 200, dur = 1| + Synth(\fxMasterRing, [\dur, dur, \freq, freq, \mix, 0.6]); + ("RING MOD " ++ freq ++ "Hz " ++ dur ++ "s").postln; +}; + +~freqShift = { |shift = 100, dur = 1| + Synth(\fxMasterFreqShift, [\dur, dur, \shift, shift]); + ("FREQ SHIFT " ++ shift ++ "Hz " ++ dur ++ "s").postln; +}; + +~granFreeze = { |dur = 2| + Synth(\fxMasterGran, [\dur, dur, \grainDur, 0.15, \pitch, 1.0]); + ("GRAN FREEZE " ++ dur ++ "s").postln; +}; + +// Utilise le SynthDef \scratch existant (synth/_index.scd) +~scratch = { |dir = 1, dur = 0.3| + Synth(\scratch, [\dur, dur, \freq, rrand(400, 1500), + \sweepDir, dir, \amp, 0.4]); + ("SCRATCH dir=" ++ dir ++ " dur=" ++ dur).postln; +}; + +// Beat repeat : on prend un snippet du bus 0 et on le loop pendant dur +// Approche pragmatique : on utilise fxStutter pour chopper le master en +// gates rythmiques pendant dur -- pas de capture/replay (necessiterait +// un buffer dedie). +~repeat = { |rate = 8, dur = 1| + // gate rythmique sur le master via stutter rapide + ~stutter.(rate, dur); + ("REPEAT " ++ rate ++ "Hz " ++ dur ++ "s").postln; +}; + + +// ===================================================================== +// 7. Auto-pan / tremolo / autopan par voix (via LFO sur amp/pan) +// ===================================================================== +// Comme les voix sont des Pdef avec amp dans l'event, on module les +// variables ~xxxAmp / ~xxxPan via les LFO existants. +~autoFx = (); // dictionnaire d'auto-fx par cible + +// FIX FUITE RAM : doReload force a false (etait true en 6e arg de ~lfoTo). +// A 5Hz un tremolo declenchait 100 recompils Pdef/sec -> Synths fuiteurs +// massifs. Pfunc { ~xxxAmp } dans engine.scd suffit a propager la valeur +// en live sans recompil. +~autoPan = { |target = \melody, rate = 0.5, depth = 0.8| + // on vise la variable ~xxxPan -- si elle n'existe pas, on la cree + var sym = (target.asString ++ "Pan").asSymbol; + ~setVar.(sym, 0); + ~lfoTo.(sym, rate, depth, \sin, 0, false); + ~autoFx[target.asSymbol] = sym; + ("AUTOPAN " ++ target ++ " rate=" ++ rate + ++ " depth=" ++ depth ++ " (sur ~" ++ sym ++ ")").postln; +}; + +~tremolo = { |target = \melody, rate = 5, depth = 0.5| + var sym = (target.asString ++ "Amp").asSymbol; + var center = ~getVar.(sym) ? 0.16; + ~lfoTo.(sym, rate, center * depth, \sin, center, false); + ~autoFx[target.asSymbol] = sym; + ("TREMOLO " ++ target ++ " rate=" ++ rate ++ "Hz depth=" ++ depth).postln; +}; + +~stopAutoFx = { |target = \melody| + var sym = ~autoFx[target.asSymbol]; + sym !? { ~lfoStopVar.(sym); ~autoFx.removeAt(target.asSymbol) }; + ("AUTO FX " ++ target ++ " STOPPED").postln; +}; + + +// ===================================================================== +// 8. FX additionnels : les nouveaux FX SynthDef sont definis plus haut. +// Helper pour les ajouter au bus FX (~fxFx) et permettre ~send dessus. +// ===================================================================== +// Les FX additionnels sont : ringmod, fshift, gran, comb, formant, +// autoflt, trem, autopan, stut, reson, spring, plate. +// Ils peuvent etre instancies en send avec ~addFx.(\name, args) +// qui cree un nouveau bus + un Synth de FX en queue avant le master. + +~addFx = { |name, args = #[], def = nil| + var key = name.asSymbol; + var defName = def ? switch (key, + \ringmod, \fxRingMod, + \fshift, \fxFreqShift, + \gran, \fxGran, + \comb, \fxComb, + \formant, \fxFormant, + \autoflt, \fxAutoFilter, + \trem, \fxTremolo, + \autopan, \fxAutopan, + \stut, \fxStutter, + \reson, \fxResonator, + \spring, \fxSpringRev, + \plate, \fxPlate, + \fxRingMod + ); + ~fxBuses !? { + // si le bus n'existe pas, on l'alloue (et on track pour cleanup + // ulterieur via ~freeDynFxBuses : les bus statiques de fx_bus.scd + // sont free par leur propre guard, mais ceux ajoutes a chaud par + // ~addFx etaient orphelins jusqu'ici -> fuite RAM serveur). + if (~fxBuses[key].isNil) { + ~fxBuses[key] = Bus.audio(s, 2); + ~fxBusesDyn = ~fxBusesDyn ?? { () }; + ~fxBusesDyn[key] = ~fxBuses[key]; + }; + ~fxFx[key] !? { ~fxFx[key].free }; + if (~masterLim.notNil) { + ~fxFx[key] = Synth.before(~masterLim, defName, + [\in, ~fxBuses[key].index] ++ args); + } { + ~fxFx[key] = Synth.tail(s.defaultGroup, defName, + [\in, ~fxBuses[key].index] ++ args); + }; + ("FX " ++ key ++ " (" ++ defName ++ ") ajoute -- ~send.(\\" + ++ key ++ ", amount) pour l'utiliser").postln; + }; +}; + + +// ===================================================================== +// 9. Master compresseur / saturation switchable +// ===================================================================== +~masterComp = nil; +~masterSatSyn = nil; + +~compOn = { |preset = \glue| + var args = switch (preset.asSymbol, + \soft, [\threshold, 0.5, \ratio, 0.7, \attack, 0.02, + \release, 0.2, \makeup, 1.2], + \glue, [\threshold, 0.4, \ratio, 0.5, \attack, 0.01, + \release, 0.15, \makeup, 1.4], + \punch, [\threshold, 0.3, \ratio, 0.4, \attack, 0.003, + \release, 0.05, \makeup, 1.6], + \pump, [\threshold, 0.25,\ratio, 0.25,\attack, 0.001, + \release, 0.25, \makeup, 1.8], + // default + [\threshold, 0.4, \ratio, 0.5, \attack, 0.01, + \release, 0.15, \makeup, 1.4] + ); + ~masterComp !? { ~masterComp.free }; + if (~masterLim.notNil) { + ~masterComp = Synth.before(~masterLim, \masterComp, args); + } { + ~masterComp = Synth.tail(s.defaultGroup, \masterComp, args); + }; + ("COMP " ++ preset ++ " ON").postln; +}; + +~compOff = { + ~masterComp !? { ~masterComp.free; ~masterComp = nil }; + "COMP OFF".postln; +}; + +~satOn = { |amount = 1.5, mode = 0| + ~masterSatSyn !? { ~masterSatSyn.free }; + if (~masterLim.notNil) { + ~masterSatSyn = Synth.before(~masterLim, \masterSat, + [\amount, amount, \mode, mode, \mix, 1.0]); + } { + ~masterSatSyn = Synth.tail(s.defaultGroup, \masterSat, + [\amount, amount, \mode, mode, \mix, 1.0]); + }; + ("SAT amount=" ++ amount ++ " mode=" ++ mode).postln; +}; + +~satOff = { + ~masterSatSyn !? { ~masterSatSyn.free; ~masterSatSyn = nil }; + "SAT OFF".postln; +}; + + +"=== live.scd CHARGE ===".postln; +" ~lfoTo / ~lfoSync / ~lfoStopVar / ~lfoStopAllVars / ~lfoList".postln; +" ~envTo / ~envBurst / ~envSweep / ~filterSweepUp/Down / ~ampDuck".postln; +" ~vcfOn / ~vcfSet / ~vcfSweep / ~vcfOff / ~vcfPreset".postln; +" ~stutter ~chokePerc ~chokeLead ~drop ~handsUp ~breakdown".postln; +" ~buildup ~tapeStop ~glitch ~freeze ~reverbTail ~tapeReverse".postln; +" ~swap ~jumpCut ~scTrigger ~scAuto ~scOff".postln; +" ~slipTime ~bitCrushNow ~ringMod ~freqShift ~granFreeze ~scratch ~repeat".postln; +" ~autoPan ~tremolo ~stopAutoFx ~addFx ~compOn/Off ~satOn/Off".postln; + +) + + +// ===================================================================== +// EXEMPLES D'USAGE -- Cmd+Entree sur un bloc pour l'executer +// PREREQUIS : avoir evalue le bloc SETUP en tete de fichier d'abord +// ===================================================================== + +// --- 1. LFO assignables ---------------------------------------------- + +// LFO sin 0.5Hz +/-1500 autour 2500 sur cutoff melody +( ~lfoTo.(\melodyCutoff, 0.5, 1500, \sin, 2500); ) + +// LFO triangle slow sur cutoff acid +( ~lfoTo.(\acidCutoff, 0.25, 800, \tri, 1000); ) + +// LFO sqr asymetrique (pulseWidth=0.3) sur kickAmp -> rythmique +( ~lfoTo.(\kickAmp, 2, 0.2, \sqr, 0.5, true, 0.3); ) + +// LFO smooth random sur amp harmony +( ~lfoTo.(\harmonyAmp, 0.3, 0.08, \smoothRand, 0.14); ) + +// LFO drunken walk sur drive melody +( ~lfoTo.(\melodyDrive, 0.1, 0.8, \drunk, 1.2); ) + +// LFO sync au tempo : 1 cycle complet sur 4 beats +( ~lfoSync.(\melodyCutoff, 4, 1500, \sin, 2500); ) + +// Stop un LFO precis +( ~lfoStopVar.(\melodyCutoff); ) + +// Stop tous les LFOs de variables +( ~lfoStopAllVars.(); ) + +// Liste les LFOs actifs +( ~lfoList.(); ) + + +// --- 2. Envelopes one-shot ------------------------------------------- + +// Envelope ASR (attack/sustain/release) sur cutoff melody : 1500 -> 6000 -> 1500 +( ~envTo.(\melodyCutoff, 0.5, 1.0, 2.0, 6000, 1500); ) + +// Burst percussif sur cutoff acid : pic a 4000 puis decay 0.3s +( ~envBurst.(\acidCutoff, 4000, 0.3); ) + +// Sweep expo sur cutoff melody : 200 -> 6000 en 4s +( ~envSweep.(\melodyCutoff, 200, 6000, 4, \exp); ) + +// Sweep filtre montant 4s +( ~filterSweepUp.(4); ) + +// Sweep filtre descendant 4s +( ~filterSweepDown.(4); ) + +// Duck momentane sur tous les amps (depth=0.7 pendant 0.3s) +( ~ampDuck.(0.3, 0.7); ) + + +// --- 3. VCF Master --------------------------------------------------- + +// VCF Moog 800Hz q=0.7 +( ~vcfOn.(\moog, 800, 0.7); ) + +// Set un parametre du VCF actif +( ~vcfSet.(\freq, 1500); ) + +// Sweep automatique du cutoff 200 -> 5000 en 4s +( ~vcfSweep.(200, 5000, 4); ) + +// VCF off +( ~vcfOff.(); ) + +// Preset acid (moog 600Hz q=0.85) +( ~vcfPreset.(\acid); ) + +// Preset formant voyelle A +( ~vcfPreset.(\formantA); ) + +// Preset dub (ladder 900Hz q=0.5) +( ~vcfPreset.(\dub); ) + + +// --- 4. Tricks sceniques --------------------------------------------- + +// Stutter master 8Hz pendant 1s +( ~stutter.(8, 1); ) + +// Coupe la rythmique (kick/hat/snare/clap/perc) +( ~chokePerc.(); ) + +// Coupe melody/lead/acid +( ~chokeLead.(); ) + +// Drop classique : build 4s + snare fill + freeze + blast +( ~drop.(4); ) + +// Hands up : mute kick, boost lead, delay courte +( ~handsUp.(); ) + +// Breakdown progressif sur 8s +( ~breakdown.(8); ) + +// Buildup crescendo sur 8s (riser + filterSweepUp) +( ~buildup.(8); ) + +// Tape stop : ralenti tempo puis stop sur 2s +( ~tapeStop.(2); ) + +// Glitch : bitcrush + stutter + delay courte pendant 2s +( ~glitch.(2); ) + +// Freeze : reverb freeze + cut sec pendant 4s +( ~freeze.(4); ) + +// Reverb tail : kill all + reverb send max + queue 4s +( ~reverbTail.(4); ) + +// Tape reverse : sweep + freeze pendant 2s +( ~tapeReverse.(2); ) + +// Jump cut : silence sec 0.5s puis reprend +( ~jumpCut.(0.5); ) + + +// --- 5. Sidechain ---------------------------------------------------- + +// Sidechain kick -> acid (amount 0.85) +( ~scTrigger.(\kick, \acid, 0.85); ) + +// Sidechain kick -> melody (amount 0.6) +( ~scTrigger.(\kick, \melody, 0.6); ) + +// Sidechain auto sur tout le mix (pompe global) +( ~scAuto.(0.7); ) + +// Stop tous les sidechains +( ~scOff.(); ) + + +// --- 6. Pitch / glitch ----------------------------------------------- + +// Slip time : pitch -1 octave pendant 1s +( ~slipTime.(0.5, 1); ) + +// Slip time : pitch +1 octave pendant 0.5s +( ~slipTime.(2.0, 0.5); ) + +// Bitcrush master 4 bits / 4kHz pendant 1s +( ~bitCrushNow.(4, 4000, 1); ) + +// Ring mod 150Hz pendant 1s +( ~ringMod.(150, 1); ) + +// Freq shift +50Hz pendant 1s +( ~freqShift.(50, 1); ) + +// Gran freeze pendant 2s +( ~granFreeze.(2); ) + +// Scratch up +( ~scratch.(1, 0.3); ) + +// Scratch down (plus long) +( ~scratch.(-1, 0.5); ) + +// Beat repeat 8Hz pendant 1s +( ~repeat.(8, 1); ) + + +// --- 7. Auto-pan / tremolo ------------------------------------------- + +// Auto-pan melody (rate 0.5Hz, depth 0.8) +( ~autoPan.(\melody, 0.5, 0.8); ) + +// Tremolo melody (rate 5Hz, depth 0.5) +( ~tremolo.(\melody, 5, 0.5); ) + +// Stop l'auto-fx d'une voie +( ~stopAutoFx.(\melody); ) + + +// --- 8. FX additionnels ---------------------------------------------- + +// Ring mod en send (200Hz, mix 0.5) +( ~addFx.(\ringmod, [\freq, 200, \mix, 0.5]); ~send.(\ringmod, 0.4); ) + +// Frequency shifter en send (+80Hz) +( ~addFx.(\fshift, [\shift, 80]); ~send.(\fshift, 0.3); ) + +// Granular freeze en send (pitch -1 oct) +( ~addFx.(\gran, [\grainDur, 0.15, \pitch, 0.5]); ~send.(\gran, 0.4); ) + +// Comb resonator en send (220Hz, decay 2s) +( ~addFx.(\comb, [\freq, 220, \decay, 2]); ~send.(\comb, 0.4); ) + +// Formant filter A en send +( ~addFx.(\formant, [\vowel, 0]); ~send.(\formant, 0.5); ) + +// Auto-filter LFO en send (sweep 200-4000Hz a 0.3Hz) +( ~addFx.(\autoflt, [\rate, 0.3, \lo, 200, \hi, 4000]); ~send.(\autoflt, 0.5); ) + +// Tremolo en send (6Hz, depth 0.7) +( ~addFx.(\trem, [\rate, 6, \depth, 0.7]); ~send.(\trem, 1.0); ) + +// Auto-pan en send +( ~addFx.(\autopan, [\rate, 0.5, \depth, 1]); ~send.(\autopan, 1.0); ) + +// Stutter en send (8Hz duty 0.5) +( ~addFx.(\stut, [\rate, 8, \dutyCycle, 0.5]); ~send.(\stut, 1.0); ) + +// Resonator pitched en send (220Hz, decay 3s) +( ~addFx.(\reson, [\freq, 220, \decay, 3]); ~send.(\reson, 0.5); ) + +// Spring reverb en send (decay 1.5s) +( ~addFx.(\spring, [\decay, 1.5]); ~send.(\spring, 0.4); ) + +// Plate reverb en send (decay 2.5s, damp 0.3) +( ~addFx.(\plate, [\decay, 2.5, \damp, 0.3]); ~send.(\plate, 0.4); ) + + +// --- 9. Master comp / sat -------------------------------------------- + +// Compresseur preset glue +( ~compOn.(\glue); ) + +// Compresseur preset punch +( ~compOn.(\punch); ) + +// Compresseur preset pump (sidechain-style) +( ~compOn.(\pump); ) + +// Compresseur off +( ~compOff.(); ) + +// Saturation tanh +( ~satOn.(1.5, 0); ) + +// Saturation softclip +( ~satOn.(2.0, 1); ) + +// Saturation fold (extreme) +( ~satOn.(1.8, 2); ) + +// Saturation off +( ~satOff.(); ) + + +// --- Combos sceniques en chaine -------------------------------------- + +// Drop classique +( ~drop.(4); ) + +// Sequence complete : breakdown + buildup + drop +( ~breakdown.(8); ~buildup.(8); ~drop.(2); ) + +// Acid focus : preset VCF + LFO sync sur cutoff +( ~vcfPreset.(\acid); ~lfoSync.(\acidCutoff, 8, 600, \sin, 800); ) + +// Mix punchy : SC auto + comp pump + saturation +( ~scAuto.(0.7); ~compOn.(\pump); ~satOn.(1.5); ) + +// Reset complet : stop tous les LFOs + VCF off + comp/sat off +( ~lfoStopEverything.(); ~vcfOff.(); ~compOff.(); ~satOff.(); ) diff --git a/sound_algo/live/live_fx_panel.scd b/sound_algo/live/live_fx_panel.scd new file mode 100644 index 0000000..0ff3764 --- /dev/null +++ b/sound_algo/live/live_fx_panel.scd @@ -0,0 +1,826 @@ +// ===================================================================== +// live_fx_panel.scd -- PANNEAU FX LIVE (tout-en-un) +// +// USAGE : +// 1. PREREQUIS -- evaluer les SETUP de : +// - engine.scd (charge avec CHARGER TOUT du 00_load.scd) +// - fx_bus.scd (Cmd+Entree sur le SETUP) +// - live.scd (Cmd+Entree sur le SETUP) +// 2. Lance une track ou les Pdef +// 3. Cmd+Entree sur n'importe quel bloc de ce panneau pour declencher l'effet +// +// Toutes les commandes sont protegees par garde `~helper !? { ... }` +// pour ne rien casser si un setup n'a pas ete evalue. +// +// CATEGORIES : +// [A] FX BUS DYNAMIQUE (send / setFx / preset / freeze) +// [B] LFO ASSIGNABLES (sur n'importe quelle variable) +// [C] VCF MASTER (8 types + presets) +// [D] TRICKS SCENIQUES (drop / breakdown / buildup / stutter ...) +// [E] FX MOMENTANES (bitcrush / ringmod / freqshift / granfreeze ...) +// [F] AUTO-PAN / TREMOLO +// [G] FX SYNTHS ONESHOT (riser / sweep / impact / crash / vinyl / gong ...) +// [H] FILLS RYTHMIQUES (snareFill / tomFill) +// [I] MASTER COMP / SAT +// [J] FX PAR GENRE (combos prets a l'emploi) +// [K] TAP TEMPO +// [L] FX BUS DETAIL (param par param par FX) +// [M] STOP ALL FX (reset global) +// ===================================================================== + + + +// ===================================================================== +// [A] FX BUS DYNAMIQUE +// ~send.(\fx, amount) | ~setFx.(\fx, key, val) | ~fxPreset.(\preset) +// ===================================================================== + +// --- Sends raccourcis (par bus) ----- +( ~sendReverb !? { ~sendReverb.(0.4) }; ) +( ~sendDelay !? { ~sendDelay.(0.3) }; ) +( ~sendChorus !? { ~sendChorus.(0.3) }; ) +( ~sendPhaser !? { ~sendPhaser.(0.4) }; ) +( ~sendFlanger !? { ~sendFlanger.(0.4) }; ) +( ~sendBitcrush !? { ~sendBitcrush.(0.4) }; ) +( ~sendTape !? { ~sendTape.(1.0) }; ) +( ~sendShimmer !? { ~sendShimmer.(0.5) }; ) +( ~sendDist !? { ~sendDist.(0.4) }; ) + +// --- Sends par FX/key (si tu veux varier) ----- +( ~send !? { ~send.(\rev, 0.4) }; ) +( ~send !? { ~send.(\dly, 0.3) }; ) +( ~send !? { ~send.(\chr, 0.3) }; ) +( ~send !? { ~send.(\phs, 0.4) }; ) +( ~send !? { ~send.(\flg, 0.4) }; ) +( ~send !? { ~send.(\crsh, 0.4) }; ) +( ~send !? { ~send.(\tape, 1.0) }; ) +( ~send !? { ~send.(\shim, 0.5) }; ) +( ~send !? { ~send.(\dist, 0.4) }; ) + +// --- Tout couper (sec) ----- +( ~send !? { + [\rev,\dly,\chr,\phs,\flg,\crsh,\tape,\shim,\dist].do { |k| ~send.(k, 0) }; +}; ) + +// --- Reverb : mix max + room cathedrale ----- +( ~setFx !? { ~setFx.(\rev, \mix, 0.7) }; ) +( ~setFx !? { ~setFx.(\rev, \room, 0.97); ~setFx.(\rev, \damp, 0.1) }; ) + +// --- Reverb FREEZE on / off (drone infini) ----- +( ~setFx !? { ~setFx.(\rev, \freeze, 1) }; ) +( ~setFx !? { ~setFx.(\rev, \freeze, 0) }; ) + +// --- Crossfade entre 2 FX ----- +( ~crossfadeFx !? { ~crossfadeFx.(\dly, \rev, 8) }; ) +( ~crossfadeFx !? { ~crossfadeFx.(\dist, \shim, 4) }; ) + +// --- PRESETS FX (combo predefini sur le bus FX) ----- +( ~fxPreset !? { ~fxPreset.(\dry) }; ) // tout off +( ~fxPreset !? { ~fxPreset.(\dub) }; ) // rev hall + delay long + tape +( ~fxPreset !? { ~fxPreset.(\space) }; ) // shimmer + reverb + chorus +( ~fxPreset !? { ~fxPreset.(\trance) }; ) // rev + delay 1/8 + chorus +( ~fxPreset !? { ~fxPreset.(\dubstep) }; ) // dist + bitcrush + reverb +( ~fxPreset !? { ~fxPreset.(\retro) }; ) // bitcrush + tape + chorus +( ~fxPreset !? { ~fxPreset.(\industrial) }; ) // dist + flanger + bitcrush +( ~fxPreset !? { ~fxPreset.(\dream) }; ) // shimmer + reverb + chorus +( ~fxPreset !? { ~fxPreset.(\cosmic) }; ) // phaser LFO + shimmer + reverb +( ~fxPreset !? { ~fxPreset.(\drone) }; ) // reverb FROZEN + shimmer + + + +// ===================================================================== +// [B] LFO ASSIGNABLES (~lfoTo / ~lfoSync) +// shape : \sin \tri \saw \sqr \rand \smoothRand \drunk \noise +// ===================================================================== + +// --- LFO sin sur cutoff melody (rate 0.5Hz, depth 1500, center 2500) ----- +( ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.5, 1500, \sin, 2500) }; ) + +// --- LFO triangle slow sur cutoff acid ----- +( ~lfoTo !? { ~lfoTo.(\acidCutoff, 0.25, 800, \tri, 1000) }; ) + +// --- LFO saw rising (montee progressive) sur cutoff melody ----- +( ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.2, 2500, \saw, 3000) }; ) + +// --- LFO sqr asymetrique (pulseWidth=0.3) sur kickAmp -> rythmique ----- +( ~lfoTo !? { ~lfoTo.(\kickAmp, 2, 0.2, \sqr, 0.5, true, 0.3) }; ) + +// --- LFO random (sample-and-hold) sur amp acid ----- +( ~lfoTo !? { ~lfoTo.(\acidAmp, 4, 0.15, \rand, 0.32) }; ) + +// --- LFO smooth random sur amp harmony ----- +( ~lfoTo !? { ~lfoTo.(\harmonyAmp, 0.3, 0.08, \smoothRand, 0.14) }; ) + +// --- LFO drunken walk sur drive melody ----- +( ~lfoTo !? { ~lfoTo.(\melodyDrive, 0.1, 0.8, \drunk, 1.2) }; ) + +// --- LFO noise pure (chaos) sur Rq melody ----- +( ~lfoTo !? { ~lfoTo.(\melodyRq, 5, 0.2, \noise, 0.3) }; ) + +// --- LFO sin sur wobbleRate (bass design en wobble) ----- +( ~lfoTo !? { ~lfoTo.(\melodyWobbleRate, 0.1, 4, \sin, 6) }; ) + +// --- LFO SYNC TEMPO : 1 cycle complet sur N beats ----- +( ~lfoSync !? { ~lfoSync.(\melodyCutoff, 4, 1500, \sin, 2500) }; ) // 4 beats +( ~lfoSync !? { ~lfoSync.(\acidCutoff, 8, 600, \sin, 800) }; ) // 8 beats +( ~lfoSync !? { ~lfoSync.(\melodyAmp, 0.25, 0.1, \tri, 0.16) }; ) // 1/4 beat = 16eme + +// --- Stop UN LFO precis ----- +( ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; ) +( ~lfoStopVar !? { ~lfoStopVar.(\acidCutoff) }; ) +( ~lfoStopVar !? { ~lfoStopVar.(\kickAmp) }; ) + +// --- Stop tous les LFO de variables (~xxx) ----- +( ~lfoStopAllVars !? { ~lfoStopAllVars.() }; ) + +// --- Stop TOUT (LFO vars + LFO FX) ----- +( ~lfoStopEverything !? { ~lfoStopEverything.() }; ) + +// --- Liste les LFO actifs ----- +( ~lfoList !? { ~lfoList.() }; ) + +// --- LFO sur PARAM FX (sur le bus FX, different de ~lfoTo) ----- +( ~lfo !? { ~lfo.(\dly, \feedback, 0.1, 0.2, 0.85, \sin) }; ) +( ~lfo !? { ~lfo.(\rev, \mix, 0.05, 0.1, 0.7, \tri) }; ) +( ~lfo !? { ~lfo.(\crsh, \bits, 0.2, 4, 12, \sqr) }; ) +( ~lfo !? { ~lfo.(\phs, \rate, 0.02, 0.1, 1.5, \sin) }; ) +( ~lfo !? { ~lfo.(\shim, \shimmer, 0.1, 0.2, 0.8, \rand) }; ) + +// --- Stop un LFO FX precis ----- +( ~lfoStop !? { ~lfoStop.(\dly, \feedback) }; ) + +// --- Stop tous les LFO FX (sans toucher aux LFO vars) ----- +( ~lfoStopAll !? { ~lfoStopAll.() }; ) + + + +// ===================================================================== +// [C] VCF MASTER (filtre insere sur tout le mix) +// types : \moog \ms20 \ladder \formant \comb \hpf \bpf \notch +// ===================================================================== + +// --- Activation par type ----- +( ~vcfOn !? { ~vcfOn.(\moog, 800, 0.7) }; ) // 4-pole vintage +( ~vcfOn !? { ~vcfOn.(\ms20, 900, 0.6) }; ) // Sallen-Key agressif +( ~vcfOn !? { ~vcfOn.(\ladder, 900, 0.5) }; ) // 24 dB/oct +( ~vcfOn !? { ~vcfOn.(\formant, 0, 0.15) }; ) // freq=vowel index 0..4 +( ~vcfOn !? { ~vcfOn.(\comb, 220, 1.5) }; ) // resonator +( ~vcfOn !? { ~vcfOn.(\hpf, 400, 0.5) }; ) // HPF resonant +( ~vcfOn !? { ~vcfOn.(\bpf, 1200, 0.4) }; ) // BPF resonant +( ~vcfOn !? { ~vcfOn.(\notch, 1000, 0.3) }; ) // BRF (anti-bande) + +// --- Set un parametre du VCF actif ----- +( ~vcfSet !? { ~vcfSet.(\freq, 1500) }; ) +( ~vcfSet !? { ~vcfSet.(\freq, 350) }; ) +( ~vcfSet !? { ~vcfSet.(\mix, 0.8) }; ) + +// --- Sweep automatique du cutoff ----- +( ~vcfSweep !? { ~vcfSweep.(200, 5000, 4) }; ) // up 4s +( ~vcfSweep !? { ~vcfSweep.(8000, 200, 4) }; ) // down 4s +( ~vcfSweep !? { ~vcfSweep.(400, 6000, 8, \exp) }; ) + +// --- PRESETS VCF ----- +( ~vcfPreset !? { ~vcfPreset.(\acid) }; ) // moog 600 q=0.85 +( ~vcfPreset !? { ~vcfPreset.(\dub) }; ) // ladder 900 q=0.5 +( ~vcfPreset !? { ~vcfPreset.(\deep) }; ) // moog 400 q=0.4 +( ~vcfPreset !? { ~vcfPreset.(\bright) }; ) // bpf 3500 q=0.4 +( ~vcfPreset !? { ~vcfPreset.(\dark) }; ) // moog 250 q=0.3 +( ~vcfPreset !? { ~vcfPreset.(\formantA) }; ) +( ~vcfPreset !? { ~vcfPreset.(\formantE) }; ) +( ~vcfPreset !? { ~vcfPreset.(\formantI) }; ) +( ~vcfPreset !? { ~vcfPreset.(\formantO) }; ) +( ~vcfPreset !? { ~vcfPreset.(\formantU) }; ) + +// --- VCF off ----- +( ~vcfOff !? { ~vcfOff.() }; ) + + + +// ===================================================================== +// [D] TRICKS SCENIQUES (~drop / ~breakdown / ~buildup / ~stutter ...) +// ===================================================================== + +// --- DROP : silence -> fill -> freeze -> blast ----- +( ~drop !? { ~drop.(4) }; ) // build 4s +( ~drop !? { ~drop.(8) }; ) // build 8s + +// --- BREAKDOWN progressif ----- +( ~breakdown !? { ~breakdown.(8) }; ) +( ~breakdown !? { ~breakdown.(16) }; ) + +// --- BUILDUP crescendo (riser + filterSweepUp) ----- +( ~buildup !? { ~buildup.(8) }; ) +( ~buildup !? { ~buildup.(16) }; ) + +// --- HANDS UP : sub mute + lead boost + delay courte ----- +( ~handsUp !? { ~handsUp.() }; ) + +// --- STUTTER master (gate rythmique sur amps) ----- +( ~stutter !? { ~stutter.(8, 1) }; ) // 8Hz pendant 1s +( ~stutter !? { ~stutter.(16, 0.5) }; ) // 16Hz pendant 0.5s +( ~stutter !? { ~stutter.(4, 2) }; ) // 4Hz pendant 2s + +// --- GLITCH : bitcrush + stutter + delay courte ----- +( ~glitch !? { ~glitch.(2) }; ) +( ~glitch !? { ~glitch.(4) }; ) + +// --- FREEZE : reverb freeze + cut sec ----- +( ~freeze !? { ~freeze.(4) }; ) +( ~freeze !? { ~freeze.(8) }; ) + +// --- REVERB TAIL : kill all + reverb send max + queue dur s ----- +( ~reverbTail !? { ~reverbTail.(4) }; ) +( ~reverbTail !? { ~reverbTail.(8) }; ) + +// --- TAPE STOP : ralenti tempo puis stop ----- +( ~tapeStop !? { ~tapeStop.(2) }; ) +( ~tapeStop !? { ~tapeStop.(4) }; ) + +// --- TAPE REVERSE : sweep + freeze ----- +( ~tapeReverse !? { ~tapeReverse.(2) }; ) +( ~tapeReverse !? { ~tapeReverse.(4) }; ) + +// --- JUMP CUT : silence sec dur s puis reprend ----- +( ~jumpCut !? { ~jumpCut.(0.5) }; ) +( ~jumpCut !? { ~jumpCut.(1) }; ) +( ~jumpCut !? { ~jumpCut.(2) }; ) + +// --- SWAP scene A -> scene B (necessite ~scene) ----- +( ~swap !? { ~swap.(\sceneA, \sceneB, 4) }; ) + +// --- CHOKE : coupe la rythmique / lead ----- +( ~chokePerc !? { ~chokePerc.() }; ) +( ~chokeLead !? { ~chokeLead.() }; ) + +// --- ENV one-shot sur une var (attack/sustain/release) ----- +( ~envTo !? { ~envTo.(\melodyCutoff, 0.5, 1.0, 2.0, 6000, 1500) }; ) + +// --- ENV burst percussif sur une var ----- +( ~envBurst !? { ~envBurst.(\acidCutoff, 4000, 0.3) }; ) + +// --- ENV sweep (monte/descend lineaire ou expo) ----- +( ~envSweep !? { ~envSweep.(\melodyCutoff, 200, 6000, 4, \exp) }; ) +( ~envSweep !? { ~envSweep.(\melodyCutoff, 6000, 200, 4, \exp) }; ) + +// --- Filter sweep raccourcis ----- +( ~filterSweepUp !? { ~filterSweepUp.(4) }; ) +( ~filterSweepDown !? { ~filterSweepDown.(4) }; ) + +// --- AMP DUCK momentane sur tous les amps ----- +( ~ampDuck !? { ~ampDuck.(0.3, 0.7) }; ) +( ~ampDuck !? { ~ampDuck.(0.6, 0.5) }; ) + +// --- Sidechain dynamique (kick -> cible) ----- +( ~scTrigger !? { ~scTrigger.(\kick, \acid, 0.85) }; ) +( ~scTrigger !? { ~scTrigger.(\kick, \melody, 0.6) }; ) +( ~scTrigger !? { ~scTrigger.(\kick, \harmony, 0.6) }; ) +( ~scTrigger !? { ~scTrigger.(\kick, \master, 0.7) }; ) + +// --- SC auto global (pompe sur tout le mix) ----- +( ~scAuto !? { ~scAuto.(0.7) }; ) + +// --- SC off ----- +( ~scOff !? { ~scOff.() }; ) + +// --- COMBOS sceniques ----- +( ~breakdown !? { ~breakdown.(8); }; ~buildup !? { ~buildup.(8); }; ~drop !? { ~drop.(2); }; ) +( ~vcfPreset !? { ~vcfPreset.(\acid) }; ~lfoSync !? { ~lfoSync.(\acidCutoff, 8, 600, \sin, 800) }; ) +( ~scAuto !? { ~scAuto.(0.7) }; ~compOn !? { ~compOn.(\pump) }; ~satOn !? { ~satOn.(1.5) }; ) + + + +// ===================================================================== +// [E] FX MOMENTANES (~bitCrushNow / ~ringMod / ~freqShift / ~granFreeze ...) +// ===================================================================== + +// --- SLIP TIME (pitch master sur dur s) ----- +( ~slipTime !? { ~slipTime.(0.5, 1) }; ) // -1 octave 1s +( ~slipTime !? { ~slipTime.(2.0, 0.5) }; ) // +1 octave 0.5s +( ~slipTime !? { ~slipTime.(0.75, 2) }; ) // -3st 2s + +// --- BITCRUSH momentane ----- +( ~bitCrushNow !? { ~bitCrushNow.(4, 4000, 1) }; ) +( ~bitCrushNow !? { ~bitCrushNow.(6, 8000, 2) }; ) +( ~bitCrushNow !? { ~bitCrushNow.(3, 3000, 0.5) }; ) + +// --- RING MOD momentane ----- +( ~ringMod !? { ~ringMod.(150, 1) }; ) +( ~ringMod !? { ~ringMod.(300, 2) }; ) +( ~ringMod !? { ~ringMod.(50, 0.5) }; ) + +// --- FREQ SHIFT momentane ----- +( ~freqShift !? { ~freqShift.(50, 1) }; ) +( ~freqShift !? { ~freqShift.(-100, 2) }; ) +( ~freqShift !? { ~freqShift.(200, 0.5) }; ) + +// --- GRAN FREEZE momentane ----- +( ~granFreeze !? { ~granFreeze.(2) }; ) +( ~granFreeze !? { ~granFreeze.(4) }; ) + +// --- SCRATCH (vinyl-like) ----- +( ~scratch !? { ~scratch.(1, 0.3) }; ) +( ~scratch !? { ~scratch.(-1, 0.5) }; ) + +// --- BEAT REPEAT (gate stutter rythmique) ----- +( ~repeat !? { ~repeat.(8, 1) }; ) +( ~repeat !? { ~repeat.(16, 0.5) }; ) +( ~repeat !? { ~repeat.(4, 2) }; ) + + + +// ===================================================================== +// [F] AUTO-PAN / TREMOLO (par voix) +// ===================================================================== + +// --- AUTOPAN par voix (sur ~xxxPan) ----- +( ~autoPan !? { ~autoPan.(\melody, 0.5, 0.8) }; ) +( ~autoPan !? { ~autoPan.(\acid, 0.3, 0.6) }; ) +( ~autoPan !? { ~autoPan.(\harmony, 0.2, 1.0) }; ) + +// --- TREMOLO par voix (LFO sur ~xxxAmp) ----- +( ~tremolo !? { ~tremolo.(\melody, 5, 0.5) }; ) +( ~tremolo !? { ~tremolo.(\acid, 8, 0.4) }; ) +( ~tremolo !? { ~tremolo.(\harmony, 3, 0.6) }; ) + +// --- Stop l'auto-fx d'une voie ----- +( ~stopAutoFx !? { ~stopAutoFx.(\melody) }; ) +( ~stopAutoFx !? { ~stopAutoFx.(\acid) }; ) +( ~stopAutoFx !? { ~stopAutoFx.(\harmony) }; ) + +// --- AUTOPAN / TREMOLO en SEND (sur le bus FX, voix indep) ----- +( ~addFx !? { ~addFx.(\autopan, [\rate, 0.5, \depth, 1]) }; ~send !? { ~send.(\autopan, 1.0) }; ) +( ~addFx !? { ~addFx.(\trem, [\rate, 6, \depth, 0.7]) }; ~send !? { ~send.(\trem, 1.0) }; ) + + + +// ===================================================================== +// [G] FX SYNTHS ONESHOT (riser / sweep / impact / crash / vinyl / gong ...) +// ===================================================================== + +// --- RISER (montee filtree) ----- +( Synth(\riser, [\dur, 4, \startCutoff, 200, \endCutoff, 8000, \amp, 0.25]); ) +( Synth(\riser, [\dur, 8, \startCutoff, 300, \endCutoff, 10000, \amp, 0.30]); ) +( Synth(\riser, [\dur, 16, \startCutoff, 400, \endCutoff, 12000, \amp, 0.35]); ) + +// --- SWEEP (descente filtree) ----- +( Synth(\sweep, [\dur, 4, \startCutoff, 8000, \endCutoff, 200, \amp, 0.25]); ) +( Synth(\sweep, [\dur, 8, \startCutoff, 12000, \endCutoff, 200, \amp, 0.35]); ) + +// --- IMPACT (sub-boom de drop) ----- +( Synth(\impact, [\freq, 45, \decay, 1.5, \amp, 0.7]); ) +( Synth(\impact, [\freq, 35, \decay, 2.5, \amp, 0.8]); ) +( Synth(\impact, [\freq, 25, \decay, 4, \amp, 0.9]); ) // gabber + +// --- CRASH (cymbale crash) ----- +( Synth(\crash, [\decay, 2.0, \amp, 0.3]); ) +( Synth(\crash, [\decay, 4.0, \amp, 0.4]); ) +( Synth(\crash, [\decay, 6.0, \amp, 0.5]); ) + +// --- GONG (asia, decay long) ----- +( Synth(\gong, [\freq, 50, \decay, 8, \amp, 0.5]); ) +( Synth(\gong, [\freq, 40, \decay, 12, \amp, 0.6]); ) +( Synth(\gong, [\freq, 25, \decay, 30, \amp, 0.95]); ) // drone doom + +// --- VINYL (crackle continu) on / off ----- +( ~vinyl !? { ~vinyl.free }; ~vinyl = Synth(\vinyl, [\amp, 0.05]); "vinyl ON".postln; ) +( ~vinyl !? { ~vinyl.free }; ~vinyl = Synth(\vinyl, [\amp, 0.10]); "vinyl ON normal".postln; ) +( ~vinyl !? { ~vinyl.free }; ~vinyl = Synth(\vinyl, [\amp, 0.15]); "vinyl ON fort".postln; ) +( ~vinyl !? { ~vinyl.free; ~vinyl = nil }; "vinyl OFF".postln; ) + +// --- TAIKO / TOM / SNARE / CLAP / KICKS one-shots ----- +( Synth(\taiko, [\freq, 80, \decay, 0.6, \amp, 0.5]); ) +( Synth(\tom, [\freq, 120, \decay, 0.3, \amp, 0.5]); ) +( Synth(\snare, [\amp, 0.5, \decay, 0.06, \freq, 220]); ) +( Synth(\clap, [\amp, 0.4, \decay, 0.3]); ) +( Synth(\kick808, [\freq, 35, \decay, 1.2, \amp, 0.7]); ) +( Synth(\kickGabber, [\amp, 0.7]); ) + +// --- Cowbell, guzheng (asian) ----- +( Synth(\cowbell, [\freq, 800, \decay, 0.2, \amp, 0.4]); ) +( Synth(\guzheng, [\freq, 220, \amp, 0.18, \release, 1.0]); ) + +// --- SCRATCH SynthDef direct ----- +( Synth(\scratch, [\dur, 0.2, \freq, 1000, \sweepDir, 1, \amp, 0.4]); ) +( Synth(\scratch, [\dur, 0.3, \freq, 800, \sweepDir, -1, \amp, 0.4]); ) + + + +// ===================================================================== +// [H] FILLS RYTHMIQUES +// ===================================================================== + +// --- Snare fill standard (8 hits / 1s) ----- +( ~snareFill !? { ~snareFill.value }; ) + +// --- Snare fill long accelerando (16 hits / 2s) ----- +( ~snareFill !? { ~snareFill.(16, 2, 0.2, 0.55) }; ) + +// --- Snare fill court rapide (32 hits / 1s -- roll) ----- +( ~snareFill !? { ~snareFill.(32, 1, 0.15, 0.6) }; ) + +// --- Snare fill epique (32 hits / 16s, build) ----- +( ~snareFill !? { ~snareFill.(32, 16, 0.2, 0.55) }; ) + +// --- Tom fill standard (descente 4 toms) ----- +( ~tomFill !? { ~tomFill.value }; ) + + + +// ===================================================================== +// [I] MASTER COMP / SAT +// ===================================================================== + +// --- Compresseur ON par preset ----- +( ~compOn !? { ~compOn.(\soft) }; ) // glue tres leger +( ~compOn !? { ~compOn.(\glue) }; ) // glue (default) +( ~compOn !? { ~compOn.(\punch) }; ) // attack rapide +( ~compOn !? { ~compOn.(\pump) }; ) // sidechain-style + +// --- Compresseur OFF ----- +( ~compOff !? { ~compOff.() }; ) + +// --- Saturation ON par mode ----- +( ~satOn !? { ~satOn.(1.5, 0) }; ) // tanh doux +( ~satOn !? { ~satOn.(2.0, 0) }; ) // tanh fort +( ~satOn !? { ~satOn.(2.0, 1) }; ) // softclip +( ~satOn !? { ~satOn.(1.8, 2) }; ) // fold (extreme) + +// --- Saturation OFF ----- +( ~satOff !? { ~satOff.() }; ) + + + +// ===================================================================== +// [J] FX PAR GENRE (combos prets a l'emploi -- palette/fx_genre.scd) +// Chaque bloc = transition / signature scenique complete +// ===================================================================== + +// --- TRANCE BUILD-UP : snare roll + riser long + impact (16s) ----- +( +~snareFill !? { + Synth(\riser, [\dur, 16, \startCutoff, 400, \endCutoff, 12000, \amp, 0.35]); + ~snareFill.(32, 16, 0.2, 0.55); + fork { + 16.wait; + Synth(\impact, [\freq, 35, \decay, 3, \amp, 0.7]); + Synth(\crash, [\decay, 4, \amp, 0.4]); + }; + "=== TRANCE BUILD 16s ===".postln; +}; +) + +// --- DUBSTEP DROP : impact + crash + riser court (4s) ----- +( +Synth(\riser, [\dur, 4, \startCutoff, 500, \endCutoff, 11000, \amp, 0.4]); +fork { + 4.wait; + Synth(\impact, [\freq, 30, \decay, 3.5, \amp, 0.85]); + Synth(\crash, [\decay, 3, \amp, 0.5]); +}; +"=== DUBSTEP DROP 4s ===".postln; +) + +// --- HARDCORE GABBER DROP : impact massif + double crash ----- +( +Synth(\impact, [\freq, 25, \decay, 4, \amp, 0.9]); +Synth(\crash, [\decay, 5, \amp, 0.6]); +fork { 0.5.wait; Synth(\crash, [\decay, 3, \amp, 0.4]); }; +"=== HARDCORE DROP ===".postln; +) + +// --- DnB BUILD : snare roll accelerando + drop (4s) ----- +( +~snareFill !? { + ~snareFill.(16, 4, 0.3, 0.6); + fork { + 4.wait; + Synth(\impact, [\freq, 40, \decay, 2.5, \amp, 0.65]); + }; + "=== DnB BUILD 4s ===".postln; +}; +) + +// --- ASIAN CINEMATIC : gong cascade descendant ----- +( +[40, 50, 60, 70].do { |f, i| + fork { (i * 0.8).wait; Synth(\gong, [\freq, f, \decay, 8 - (i * 0.5), \amp, 0.45]); }; +}; +"=== GONG CASCADE 3s ===".postln; +) + +// --- DUB TECHNO ECHO : clap dub avec delay ----- +( +fork { + 5.do { |i| + Synth(\clap, [\amp, 0.4 - (i * 0.06), \decay, 0.3]); + 0.4.wait; + }; +}; +"=== DUB ECHO CLAP ===".postln; +) + +// --- DETROIT FILTER SWEEP DOWN ----- +( Synth(\sweep, [\dur, 8, \startCutoff, 12000, \endCutoff, 200, \amp, 0.35]); ) + +// --- INDUSTRIAL TENSION : sweep slow + drone vinyl (16s) ----- +( +Synth(\sweep, [\dur, 16, \startCutoff, 8000, \endCutoff, 100, \amp, 0.4]); +~vinyl !? { ~vinyl.free }; +~vinyl = Synth(\vinyl, [\amp, 0.12]); +fork { 16.wait; ~vinyl !? { ~vinyl.free; ~vinyl = nil }; }; +"=== INDUSTRIAL TENSION 16s ===".postln; +) + +// --- GLITCH IDM : scratch + impacts random ----- +( +fork { + 8.do { + if (0.6.coin) { Synth(\scratch, [\dur, rrand(0.1, 0.4), \freq, rrand(400, 2000), + \sweepDir, [-1, 1].choose, \amp, 0.3]) }; + if (0.3.coin) { Synth(\impact, [\freq, rrand(40, 80), \decay, rrand(0.5, 1.5), + \amp, 0.4]) }; + rrand(0.15, 0.5).wait; + }; +}; +"=== GLITCH 8 hits 4s ===".postln; +) + +// --- VOCAL TRANCE SWELL : riser + crash + impact (12s) ----- +( +Synth(\riser, [\dur, 12, \startCutoff, 600, \endCutoff, 13000, \amp, 0.4]); +fork { + 12.wait; + Synth(\impact, [\freq, 38, \decay, 3, \amp, 0.7]); + Synth(\crash, [\decay, 5, \amp, 0.45]); +}; +"=== VOCAL TRANCE SWELL 12s ===".postln; +) + +// --- TRIBAL TOM ROLL DESCENDANT (taiko) ----- +( +[180, 140, 110, 85, 70, 55, 40].do { |f, i| + fork { (i * 0.12).wait; Synth(\taiko, [\freq, f, \decay, 0.6, \amp, 0.5]); }; +}; +"=== TRIBAL TOM ROLL ===".postln; +) + +// --- DRONE DOOM : gong tres profond (30s) ----- +( +Synth(\gong, [\freq, 25, \decay, 30, \amp, 0.95]); +fork { 5.wait; Synth(\gong, [\freq, 30, \decay, 25, \amp, 0.7]); }; +"=== DRONE DOOM gong massif 30s ===".postln; +) + +// --- HARDSTYLE BUILD : kick reverse + snare roll + impact (4s) ----- +( +Synth(\sweep, [\dur, 4, \startCutoff, 200, \endCutoff, 8000, \amp, 0.45]); +fork { + 4.wait; + Synth(\impact, [\freq, 30, \decay, 3.5, \amp, 0.85]); + Synth(\kickGabber, [\amp, 0.7]); +}; +"=== HARDSTYLE BUILD 4s ===".postln; +) + +// --- PHONK : vinyl + cowbell + 808 sub ----- +( +~vinyl !? { ~vinyl.free }; +~vinyl = Synth(\vinyl, [\amp, 0.15]); +fork { + 4.do { + Synth(\cowbell, [\freq, 800, \decay, 0.2, \amp, 0.4]); + 0.5.wait; + }; + Synth(\kick808, [\freq, 35, \decay, 1.2, \amp, 0.7]); +}; +"=== PHONK VINYL 2.5s ===".postln; +) + +// --- FUTURE GARAGE : vocal-like swell + sub (6s) ----- +( +Synth(\sweep, [\dur, 6, \startCutoff, 6000, \endCutoff, 800, \amp, 0.3]); +fork { 5.wait; Synth(\impact, [\freq, 40, \decay, 2.5, \amp, 0.55]); }; +"=== FUTURE GARAGE SWELL 6s ===".postln; +) + +// --- SCRATCH FX x4 ----- +( +4.do { |i| + fork { + (i * 0.15).wait; + Synth(\scratch, [\dur, 0.2, \freq, 800 + (i * 200), + \sweepDir, [-1, 1].choose, \amp, 0.4]); + }; +}; +"=== SCRATCH x4 ===".postln; +) + +// --- GLITCH STUTTER : impacts rapides random ----- +( +fork { + 16.do { |i| + Synth(\impact, [\freq, rrand(35, 60), \decay, 0.15, \amp, 0.4]); + rrand(0.06, 0.15).wait; + }; +}; +"=== GLITCH STUTTER 2s ===".postln; +) + +// --- ASIAN MELODIC FILL (guzheng arpege descendant) ----- +( +[79, 77, 75, 72, 70, 67, 65, 63, 60].do { |n, i| + fork { + (i * 0.15).wait; + Synth(\guzheng, [\freq, n.midicps, \amp, 0.18, \release, 1.0]); + }; +}; +"=== ASIAN GUZHENG FILL ===".postln; +) + +// --- DROP CUT brutal : coupe tout + sweep down + impact (2s) ----- +( +~reload !? { + Routine({ + var oldKick = ~kickAmp; var oldHat = ~hatAmp; var oldClap = ~clapAmp; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~reload.value; + Synth(\sweep, [\dur, 2, \startCutoff, 8000, \endCutoff, 200, \amp, 0.4]); + 2.wait; + Synth(\impact, [\freq, 30, \decay, 3, \amp, 0.85]); + Synth(\crash, [\decay, 3, \amp, 0.4]); + ~kickAmp = oldKick; ~hatAmp = oldHat; ~clapAmp = oldClap; ~reload.value; + }).play; + "=== DROP CUT 2s ===".postln; +}; +) + + + +// ===================================================================== +// [K] TAP TEMPO (tap au moins 2 fois en rythme pour caler le delay) +// ===================================================================== + +// --- Tap (au moins 2 fois successifs) ----- +( ~tap !? { ~tap.value }; ) +( ~tap !? { ~tap.value }; ) +( ~tap !? { ~tap.value }; ) +( ~tap !? { ~tap.value }; ) + +// --- Reset du tap (efface l'historique) ----- +( ~tapTempo !? { ~tapTempo[\last] = nil; "tap reset".postln }; ) + +// --- Set delayTime par division de tempo (sans tap) ----- +( ~setFx !? { ~setFx.(\dly, \delayTime, 60 / TempoClock.default.tempo / 4) }; ) // 1/16 +( ~setFx !? { ~setFx.(\dly, \delayTime, 60 / TempoClock.default.tempo / 2) }; ) // 1/8 +( ~setFx !? { ~setFx.(\dly, \delayTime, 60 / TempoClock.default.tempo) }; ) // 1/4 +( ~setFx !? { ~setFx.(\dly, \delayTime, 60 / TempoClock.default.tempo * 0.75) }; ) // 1/4 dotted +( ~setFx !? { ~setFx.(\dly, \delayTime, 60 / TempoClock.default.tempo * 2) }; ) // 1/2 + +// --- Tempo en live (BPM direct) ----- +( TempoClock.default.tempo = 110/60; ) +( TempoClock.default.tempo = 132/60; ) +( TempoClock.default.tempo = 145/60; ) +( TempoClock.default.tempo = 174/60; ) + + + +// ===================================================================== +// [L] FX BUS DETAIL (param par param par FX) +// Pour chaque FX du bus, exposer les params principaux +// ===================================================================== + +// ---------- REVERB ---------- +( ~setFx !? { ~setFx.(\rev, \mix, 0.4) }; ) // 0..1 +( ~setFx !? { ~setFx.(\rev, \room, 0.5) }; ) // 0..1 (small room) +( ~setFx !? { ~setFx.(\rev, \room, 0.85) }; ) // hall +( ~setFx !? { ~setFx.(\rev, \room, 0.97) }; ) // cathedral +( ~setFx !? { ~setFx.(\rev, \damp, 0.6) }; ) // 0=brillant, 1=mat +( ~setFx !? { ~setFx.(\rev, \damp, 0.1) }; ) // tres brillant +( ~setFx !? { ~setFx.(\rev, \freeze, 1) }; ) +( ~setFx !? { ~setFx.(\rev, \freeze, 0) }; ) + +// ---------- DELAY ---------- +( ~setFx !? { ~setFx.(\dly, \delayTime, 0.375) }; ) // 1/8 a 120bpm +( ~setFx !? { ~setFx.(\dly, \delayTime, 0.5) }; ) // 1/4 +( ~setFx !? { ~setFx.(\dly, \delayTime, 0.25) }; ) // 1/8 a 120 +( ~setFx !? { ~setFx.(\dly, \feedback, 0.5) }; ) // normal +( ~setFx !? { ~setFx.(\dly, \feedback, 0.85) }; ) // self-oscillating +( ~setFx !? { ~setFx.(\dly, \feedback, 0.2) }; ) // 2 echos +( ~setFx !? { ~setFx.(\dly, \mix, 0.5) }; ) +( ~setFx !? { ~setFx.(\dly, \color, 0.3) }; ) // 0=tape dark, 1=clean + +// ---------- CHORUS ---------- +( ~setFx !? { ~setFx.(\chr, \rate, 0.4) }; ) +( ~setFx !? { ~setFx.(\chr, \rate, 1.5) }; ) // rapide +( ~setFx !? { ~setFx.(\chr, \depth, 0.005) }; ) // subtil +( ~setFx !? { ~setFx.(\chr, \depth, 0.015) }; ) // large +( ~setFx !? { ~setFx.(\chr, \mix, 0.5) }; ) + +// ---------- PHASER ---------- +( ~setFx !? { ~setFx.(\phs, \rate, 0.3) }; ) +( ~setFx !? { ~setFx.(\phs, \rate, 0.05) }; ) // tres slow +( ~setFx !? { ~setFx.(\phs, \depth, 0.7) }; ) +( ~setFx !? { ~setFx.(\phs, \depth, 1.0) }; ) +( ~setFx !? { ~setFx.(\phs, \feedback, 0.4) }; ) +( ~setFx !? { ~setFx.(\phs, \feedback, 0.85) }; ) // self-osc +( ~setFx !? { ~setFx.(\phs, \mix, 0.5) }; ) + +// ---------- FLANGER ---------- +( ~setFx !? { ~setFx.(\flg, \rate, 0.2) }; ) +( ~setFx !? { ~setFx.(\flg, \rate, 0.05) }; ) // jet plane slow +( ~setFx !? { ~setFx.(\flg, \depth, 0.003) }; ) +( ~setFx !? { ~setFx.(\flg, \depth, 0.008) }; ) // tres prononce +( ~setFx !? { ~setFx.(\flg, \feedback, 0.6) }; ) +( ~setFx !? { ~setFx.(\flg, \feedback, 0.9) }; ) // metallic +( ~setFx !? { ~setFx.(\flg, \mix, 0.5) }; ) + +// ---------- BITCRUSH ---------- +( ~setFx !? { ~setFx.(\crsh, \bits, 8) }; ) // 8bit +( ~setFx !? { ~setFx.(\crsh, \bits, 4) }; ) // 4bit +( ~setFx !? { ~setFx.(\crsh, \bits, 2) }; ) // 2bit destroy +( ~setFx !? { ~setFx.(\crsh, \sampleRate, 8000) }; ) // lo-fi +( ~setFx !? { ~setFx.(\crsh, \sampleRate, 4000) }; ) // C64 +( ~setFx !? { ~setFx.(\crsh, \sampleRate, 2000) }; ) // gameboy +( ~setFx !? { ~setFx.(\crsh, \mix, 0.6) }; ) + +// ---------- TAPE ---------- +( ~setFx !? { ~setFx.(\tape, \drive, 1.5) }; ) +( ~setFx !? { ~setFx.(\tape, \drive, 3.0) }; ) // saturated +( ~setFx !? { ~setFx.(\tape, \wow, 0.0015) }; ) +( ~setFx !? { ~setFx.(\tape, \wow, 0.005) }; ) // wobble fort +( ~setFx !? { ~setFx.(\tape, \flutter, 0.0008) }; ) +( ~setFx !? { ~setFx.(\tape, \flutter, 0.003) }; ) +( ~setFx !? { ~setFx.(\tape, \mix, 1.0) }; ) + +// ---------- SHIMMER ---------- +( ~setFx !? { ~setFx.(\shim, \shimmer, 0.5) }; ) +( ~setFx !? { ~setFx.(\shim, \shimmer, 0.9) }; ) // octave-up tres present +( ~setFx !? { ~setFx.(\shim, \room, 0.92) }; ) +( ~setFx !? { ~setFx.(\shim, \mix, 0.5) }; ) + +// ---------- DIST ---------- +( ~setFx !? { ~setFx.(\dist, \drive, 3.0) }; ) +( ~setFx !? { ~setFx.(\dist, \drive, 5.0) }; ) // industriel +( ~setFx !? { ~setFx.(\dist, \drive, 8.0) }; ) // wall of sound +( ~setFx !? { ~setFx.(\dist, \tone, 0.5) }; ) // 0=dark, 1=bright +( ~setFx !? { ~setFx.(\dist, \tone, 0.2) }; ) +( ~setFx !? { ~setFx.(\dist, \tone, 0.8) }; ) +( ~setFx !? { ~setFx.(\dist, \mix, 0.5) }; ) + +// ---------- FX additionnels (ajoutes via ~addFx) ---------- +( ~addFx !? { ~addFx.(\ringmod, [\freq, 200, \mix, 0.5]) }; ~send !? { ~send.(\ringmod, 0.4) }; ) +( ~addFx !? { ~addFx.(\fshift, [\shift, 80]) }; ~send !? { ~send.(\fshift, 0.3) }; ) +( ~addFx !? { ~addFx.(\gran, [\grainDur, 0.15, \pitch, 0.5]) }; ~send !? { ~send.(\gran, 0.4) }; ) +( ~addFx !? { ~addFx.(\comb, [\freq, 220, \decay, 2]) }; ~send !? { ~send.(\comb, 0.4) }; ) +( ~addFx !? { ~addFx.(\formant, [\vowel, 0]) }; ~send !? { ~send.(\formant, 0.5) }; ) +( ~addFx !? { ~addFx.(\autoflt, [\rate, 0.3, \lo, 200, \hi, 4000]) }; ~send !? { ~send.(\autoflt, 0.5) }; ) +( ~addFx !? { ~addFx.(\stut, [\rate, 8, \dutyCycle, 0.5]) }; ~send !? { ~send.(\stut, 1.0) }; ) +( ~addFx !? { ~addFx.(\reson, [\freq, 220, \decay, 3]) }; ~send !? { ~send.(\reson, 0.5) }; ) +( ~addFx !? { ~addFx.(\spring, [\decay, 1.5]) }; ~send !? { ~send.(\spring, 0.4) }; ) +( ~addFx !? { ~addFx.(\plate, [\decay, 2.5, \damp, 0.3]) }; ~send !? { ~send.(\plate, 0.4) }; ) + + + +// ===================================================================== +// [M] STOP ALL FX (reset global -- panique mode) +// ===================================================================== + +// --- Stop tous les LFO (vars + FX) ----- +( ~lfoStopEverything !? { ~lfoStopEverything.() }; ) + +// --- VCF off ----- +( ~vcfOff !? { ~vcfOff.() }; ) + +// --- Comp / Sat off ----- +( ~compOff !? { ~compOff.() }; ) +( ~satOff !? { ~satOff.() }; ) + +// --- Reset FX bus (tout coupe) ----- +( ~fxPreset !? { ~fxPreset.(\dry) }; ) + +// --- Stop autoFx par voix ----- +( ~stopAutoFx !? { ~stopAutoFx.(\melody); }; ) +( ~stopAutoFx !? { ~stopAutoFx.(\acid); }; ) +( ~stopAutoFx !? { ~stopAutoFx.(\harmony); }; ) + +// --- Sidechain off ----- +( ~scOff !? { ~scOff.() }; ) + +// --- Vinyl off ----- +( ~vinyl !? { ~vinyl.free; ~vinyl = nil }; "vinyl OFF".postln; ) + +// --- Unfreeze reverb (au cas ou) ----- +( ~setFx !? { ~setFx.(\rev, \freeze, 0) }; ) + +// --- RESET TOTAL : combine tout ce qui precede ----- +( +~lfoStopEverything !? { ~lfoStopEverything.() }; +~vcfOff !? { ~vcfOff.() }; +~compOff !? { ~compOff.() }; +~satOff !? { ~satOff.() }; +~scOff !? { ~scOff.() }; +~stopAutoFx !? { [\melody, \acid, \harmony].do { |t| ~stopAutoFx.(t) } }; +~vinyl !? { ~vinyl.free; ~vinyl = nil }; +~setFx !? { ~setFx.(\rev, \freeze, 0) }; +~fxPreset !? { ~fxPreset.(\dry) }; +"=== FX RESET TOTAL ===".postln; +) diff --git a/sound_algo/live/loops.scd b/sound_algo/live/loops.scd new file mode 100644 index 0000000..060781d --- /dev/null +++ b/sound_algo/live/loops.scd @@ -0,0 +1,693 @@ +// ===================================================================== +// loops.scd -- Gestionnaire de pistes / boucles pour live SuperCollider +// +// PREREQUIS : engine.scd charge (Pdef nommes + ~bpm + ~reload). +// Optionnel : palette/melodies/tracks.scd (~melTrackOn/Off), +// palette/rhythm/sequences.scd (~seqPlay/~seqStop), +// live/mixer.scd. +// +// CONCEPT +// Une "boucle" est une entite a etat (ON / OFF, count, max, source). +// Source possible : +// - un Symbol -> Pdef de ce nom (ex: \kickSeq, \m1Seq) +// - une Function -> jouee en Routine (yields = beats) +// +// HELPERS PRINCIPAUX +// ~loopOn / ~loopOff / ~loopOffAll / ~loopToggle / ~loopIsOn +// ~loopList / ~loopInfo / ~loopProgress / ~loopShow +// ~loopRepeat / ~loopBeats / ~loopBars / ~loopSync +// ~loopCount / ~loopReset / ~loopMax +// ~loopCountdown / ~loopWithCountdown +// ~loopSnapshot / ~loopRestore / ~loopSave / ~loopLoad +// ~loopChain / ~loopParallel +// ~loopFade / ~loopFadeIn / ~loopAutoStop / ~loopAutoFade +// ~kickLoop / ~hatLoop / ~snareLoop / ~clapLoop / ~percLoop +// ~acidLoop / ~melodyLoop / ~harmonyLoop / ~allOn / ~allOff +// +// Un seul bloc top-level pour compatibilite .load +// ===================================================================== +( +// ---------- Etat global --------------------------------------------- +~loops = ~loops ?? { () }; // dict des boucles (Event) +~loopsSnap = ~loopsSnap ?? { () }; // snapshots (params + amps) +~loopAutos = ~loopAutos ?? { () }; // routines d'auto-stop / auto-fade +~loopChainR = ~loopChainR ?? { nil }; // routine chain en cours +~loopParR = ~loopParR ?? { () }; // routines parallel par groupe + +// ---------- Pdef du moteur (8 voies nommees) ------------------------ +~loopEngineSyms = [\kickSeq, \hatSeq, \snareSeq, \clapSeq, + \percSeq, \acidSeq, \melodySeq, \harmonySeq]; + +// ---------- Utilitaires internes ------------------------------------ +// Renvoie true si la source est un Symbol qui correspond a un Pdef +~loopIsPdef = { |source| source.isKindOf(Symbol) }; + +// Demarre une source dans une Routine (Function) ou via Pdef (Symbol). +// Renvoie une "handle" : un EventStreamPlayer / Routine selon le cas. +~loopStartSource = { |source, name| + var handle; + if (~loopIsPdef.(source)) { + Pdef(source).play; + handle = (kind: \pdef, sym: source); + } { + // Function : on l'execute en Routine. La fonction recoit le + // nom de la boucle pour pouvoir incrementer le compteur si elle + // veut (sinon on incrementera depuis l'exterieur). + var r = Routine({ source.value(name) }).play; + handle = (kind: \routine, rout: r); + }; + handle +}; + +~loopStopHandle = { |h| + if (h.notNil) { + switch (h[\kind], + \pdef, { Pdef(h[\sym]).stop }, + \routine, { h[\rout] !? { h[\rout].stop } } + ); + }; +}; + +// ===================================================================== +// 1. GESTION DE BASE (on/off/toggle/list/isOn) +// ===================================================================== + +// ~loopOn.(\name, source [, max]) +// source : Symbol (Pdef) ou Function. max optionnel (defaut inf). +~loopOn = { |name, source, max = inf| + var l = ~loops[name]; + if (l.notNil and: { l[\state] == \on }) { + ("[loop] " ++ name ++ " deja ON").postln; + } { + // Source heritee si pas fournie + var src = source ?? { l !? { l[\source] } }; + if (src.isNil) { + ("[loop] " ++ name ++ " : pas de source connue").postln; + } { + var handle = ~loopStartSource.(src, name); + ~loops[name] = ( + state: \on, + source: src, + handle: handle, + count: (l !? { l[\count] }) ? 0, + max: max, + startedAt: Main.elapsedTime, + lastResetAt: Main.elapsedTime, + ); + ("[loop] ON " ++ name).postln; + }; + }; + name +}; + +~loopOff = { |name| + var l = ~loops[name]; + if (l.isNil) { + ("[loop] " ++ name ++ " inconnue").postln; + } { + ~loopStopHandle.(l[\handle]); + // Annule auto-stop / auto-fade en cours + ~loopAutos[name] !? { |r| r.stop; ~loopAutos[name] = nil }; + l[\state] = \off; + l[\handle] = nil; + ("[loop] OFF " ++ name).postln; + }; +}; + +~loopOffAll = { + ~loops.keysDo { |k| + var l = ~loops[k]; + if (l.notNil and: { l[\state] == \on }) { ~loopOff.(k) }; + }; + "[loop] offAll".postln; +}; + +~loopToggle = { |name| + var l = ~loops[name]; + if (l.notNil and: { l[\state] == \on }) { + ~loopOff.(name); + } { + ~loopOn.(name); + }; +}; + +~loopIsOn = { |name| + var l = ~loops[name]; + (l.notNil and: { l[\state] == \on }) +}; + +// Affichage : etat / source / count / max +~loopList = { + "=== loops ===".postln; + if (~loops.isEmpty) { + " (aucune boucle)".postln; + } { + ~loops.keysValuesDo { |k, v| + var st = if (v[\state] == \on) { "ON " } { "off" }; + var src = v[\source]; + var srcStr = if (src.isKindOf(Symbol)) { src.asString } + { if (src.isKindOf(Function)) { "<fn>" } { "?" } }; + var maxStr = if (v[\max] == inf) { "inf" } { v[\max].asString }; + (" [" ++ st ++ "] " ++ k + ++ " src=" ++ srcStr + ++ " count=" ++ (v[\count] ? 0) + ++ "/" ++ maxStr + ).postln; + }; + }; +}; + +// ===================================================================== +// 2. COMPTEURS +// ===================================================================== + +// ~loopRepeat.(\name, source, n, dur) +// Joue source N fois (chaque iter dure `dur` battements), puis stop. +~loopRepeat = { |name, source, n = 4, dur = 4| + var t = TempoClock.default; + var max = n; + ~loopOn.(name, source, max); + // Routine qui incremente le compteur a chaque dur, et stoppe a max + ~loopAutos[name] !? { |r| r.stop }; + ~loopAutos[name] = Routine({ + n.do { |i| + dur.wait; + if (~loops[name].notNil) { + ~loops[name][\count] = (~loops[name][\count] ? 0) + 1; + }; + }; + // Fin atteinte : stop + ~loopOff.(name); + }).play(t); + ("[loop] repeat " ++ name ++ " n=" ++ n ++ " dur=" ++ dur ++ "b").postln; + name +}; + +~loopCount = { |name| + var l = ~loops[name]; + if (l.isNil) { 0 } { l[\count] ? 0 } +}; + +~loopReset = { |name| + var l = ~loops[name]; + if (l.notNil) { + l[\count] = 0; + l[\lastResetAt] = Main.elapsedTime; + ("[loop] reset " ++ name).postln; + }; +}; + +~loopMax = { |name, n| + var l = ~loops[name]; + if (l.notNil) { + l[\max] = n; + ("[loop] max " ++ name ++ " = " ++ n).postln; + }; +}; + +// ===================================================================== +// 3. SYNCHRONISATION AU TEMPO +// ===================================================================== + +// Joue une source pendant N battements, puis stop. +~loopBeats = { |name, source, beats = 16| + var t = TempoClock.default; + ~loopOn.(name, source, beats); + ~loopAutos[name] !? { |r| r.stop }; + ~loopAutos[name] = Routine({ + beats.wait; + ~loopOff.(name); + }).play(t); + ("[loop] " ++ name ++ " pendant " ++ beats ++ " beats").postln; + name +}; + +// N mesures (defaut 4 battements/mesure) +~loopBars = { |name, source, bars = 4, beatsPerBar = 4| + ~loopBeats.(name, source, bars * beatsPerBar); +}; + +// Aligne le demarrage de toutes les boucles ON au prochain temps fort +// (utilise pour resync apres avoir lance plusieurs boucles). +~loopSync = { |beatsPerBar = 4| + var t = TempoClock.default; + var now = t.beats; + var nextBar = now.ceil + ((beatsPerBar - (now.ceil.asInteger % beatsPerBar)) % beatsPerBar); + var wait = nextBar - now; + var snapshot = (); // {name -> source} + ~loops.keysValuesDo { |k, v| + if (v[\state] == \on) { snapshot[k] = v[\source] }; + }; + if (snapshot.isEmpty) { + "[loop] sync : aucune boucle ON".postln; + } { + ("[loop] sync dans " ++ wait.round(0.01) ++ " beats (" + ++ snapshot.size ++ " boucles)").postln; + // Stop immediat, restart sur la barre suivante + snapshot.keysDo { |k| ~loopOff.(k) }; + Routine({ + wait.wait; + snapshot.keysValuesDo { |k, src| ~loopOn.(k, src) }; + "[loop] sync OK".postln; + }).play(t); + }; +}; + +// ===================================================================== +// 4. PRE-ROLL / COUNTDOWN +// ===================================================================== + +// Compte avant de lancer une action. action est une Function (sans arg). +~loopCountdown = { |beats = 4, action| + var t = TempoClock.default; + Routine({ + beats.do { |i| + var n = beats - i; + (n.asString ++ "...").postln; + 1.wait; + }; + "GO".postln; + action !? { action.value }; + }).play(t); + ("[loop] countdown " ++ beats ++ "b").postln; +}; + +// Countdown puis lance la boucle (max optionnel) +~loopWithCountdown = { |name, source, beats = 4, max = inf| + ~loopCountdown.(beats, { ~loopOn.(name, source, max) }); +}; + +// ===================================================================== +// 5. SNAPSHOT / RESTORE / SAVE / LOAD +// ===================================================================== + +// Cle des "params interessants" a sauvegarder (heuristique). +// On capture toutes les vars ~xxx qui sont des Number/Symbol/SimpleNumber +// liees au prefixe du nom (ex: \kick -> ~kickAmp, ~kickDrive...) + +// les amps connus du moteur. +~loopSnapKeys = (~loopSnapKeys ?? { [ + \bpm, + \kickAmp, \kickDrive, \kickDecay, + \hatAmp, \hatDecay, + \snareAmp, \snareDrive, + \clapAmp, + \percAmp, + \acidAmp, \acidCutoff, \acidDrive, \acidRq, + \melodyAmp, \melodyBoost, \melodyCutoff, + \harmonyAmp, + \leadScAmt, \scShape, +] }); + +~loopSnapshot = { |name| + var snap = (); + ~loopSnapKeys.do { |k| + var v = currentEnvironment[k]; + if (v.notNil and: { v.isKindOf(Number) or: { v.isKindOf(Symbol) } }) { + snap[k] = v; + }; + }; + // Ajoute les coefs mixer si presents + if (~mix.notNil) { snap[\__mix] = ~mix.copy }; + // Ajoute l'etat de la boucle si elle existe + if (~loops[name].notNil) { + snap[\__loopState] = ( + count: ~loops[name][\count] ? 0, + max: ~loops[name][\max] ? inf, + source: ~loops[name][\source] + ); + }; + ~loopsSnap[name] = snap; + ("[loop] snapshot " ++ name ++ " (" ++ snap.size ++ " cles)").postln; + snap +}; + +~loopRestore = { |name| + var snap = ~loopsSnap[name]; + if (snap.isNil) { + ("[loop] restore : pas de snapshot pour " ++ name).postln; + } { + snap.keysValuesDo { |k, v| + if (k == \__mix) { + if (~mix.notNil) { + v.keysValuesDo { |k2, v2| ~mix[k2] = v2 }; + }; + } { + if (k != \__loopState) { + currentEnvironment[k] = v; + }; + }; + }; + // Reload des Pdef du moteur si dispo + ~reload !? { ~reload.value }; + ("[loop] restore " ++ name).postln; + }; +}; + +// Save / Load disque (en .scd : on serialise via Object.asCompileString) +~loopSavePath = { |name| + (~base ? "") ++ ".loops_" ++ name.asString ++ ".scd" +}; + +~loopSave = { |name| + var snap = ~loopsSnap[name] ?? { ~loopSnapshot.(name) }; + var path = ~loopSavePath.(name); + var f = File.open(path, "w"); + if (f.isNil) { + ("[loop] save : impossible d'ouvrir " ++ path).postln; + } { + f.write(snap.asCompileString); + f.close; + ("[loop] save " ++ name ++ " -> " ++ path).postln; + }; +}; + +~loopLoad = { |name| + var path = ~loopSavePath.(name); + if (File.exists(path).not) { + ("[loop] load : fichier absent " ++ path).postln; + } { + var snap = path.load; + if (snap.notNil) { + ~loopsSnap[name] = snap; + ("[loop] load " ++ name ++ " <- " ++ path).postln; + }; + }; +}; + +// ===================================================================== +// 6. COMPOSITIONS +// ===================================================================== + +// Chaine sequentielle : [[name, source, beats], ...] +// Chaque entree joue `beats` battements, puis on passe au suivant. +~loopChain = { |entries| + var t = TempoClock.default; + ~loopChainR !? { |r| r.stop }; + ~loopChainR = Routine({ + entries.do { |e| + var name = e[0]; + var source = e[1]; + var beats = e[2] ? 16; + ~loopOn.(name, source); + beats.wait; + ~loopOff.(name); + }; + "[loop] chain done".postln; + }).play(t); + ("[loop] chain " ++ entries.size ++ " entrees").postln; +}; + +// Lance plusieurs boucles simultanement : [[name, source], ...] +~loopParallel = { |entries| + entries.do { |e| + var name = e[0]; + var source = e[1]; + ~loopOn.(name, source); + }; + ("[loop] parallel " ++ entries.size ++ " boucles").postln; +}; + +// Fade-out d'une boucle (sur l'amp de la voie correspondante au +// prefixe du nom : \kickXxx -> ~kickAmp). Stoppe a la fin. +~loopFadeAmpKey = { |name| + // \kickLoop -> \kickAmp ; \m1 -> nil (cas multi-pistes : on + // fait un fade local en surtout via un Pdef) + var s = name.asString; + var prefixes = ["kick","hat","snare","clap","perc","acid", + "melody","harmony"]; + var found = nil; + prefixes.do { |p| + if (found.isNil and: { s.beginsWith(p) }) { + found = (p ++ "Amp").asSymbol; + }; + }; + found +}; + +~loopFade = { |name, fadeOutDur = 2| + var t = TempoClock.default; + var ampKey = ~loopFadeAmpKey.(name); + var l = ~loops[name]; + if (l.isNil) { + ("[loop] fade : " ++ name ++ " inconnue").postln; + } { + if (ampKey.notNil) { + var startAmp = currentEnvironment[ampKey] ? 0.3; + var steps = (fadeOutDur * 20).asInteger.max(1); + var step = 1.0 / steps; + ~loopAutos[name] !? { |r| r.stop }; + ~loopAutos[name] = Routine({ + steps.do { |i| + currentEnvironment[ampKey] = startAmp * (1 - ((i + 1) * step)); + ~reload !? { ~reload.value }; + (fadeOutDur / steps).wait; + }; + ~loopOff.(name); + currentEnvironment[ampKey] = startAmp; // restore amp + ~reload !? { ~reload.value }; + }).play(t); + ("[loop] fade " ++ name ++ " (" ++ fadeOutDur ++ "s)").postln; + } { + // Pas d'ampKey : on attend simplement, puis stop + ~loopAutos[name] !? { |r| r.stop }; + ~loopAutos[name] = Routine({ + fadeOutDur.wait; + ~loopOff.(name); + }).play(t); + ("[loop] fade " ++ name ++ " (timed, no amp key)").postln; + }; + }; +}; + +~loopFadeIn = { |name, source, fadeInDur = 2, max = inf| + var t = TempoClock.default; + var ampKey = ~loopFadeAmpKey.(name); + var targetAmp = if (ampKey.notNil) { + currentEnvironment[ampKey] ? 0.3 + } { nil }; + if (ampKey.notNil) { + currentEnvironment[ampKey] = 0.0001; + ~reload !? { ~reload.value }; + }; + ~loopOn.(name, source, max); + if (ampKey.notNil) { + var steps = (fadeInDur * 20).asInteger.max(1); + ~loopAutos[name] !? { |r| r.stop }; + ~loopAutos[name] = Routine({ + steps.do { |i| + currentEnvironment[ampKey] = targetAmp * ((i + 1) / steps); + ~reload !? { ~reload.value }; + (fadeInDur / steps).wait; + }; + }).play(t); + ("[loop] fadeIn " ++ name ++ " -> " ++ targetAmp).postln; + } { + ("[loop] fadeIn " ++ name ++ " (no amp key)").postln; + }; +}; + +// ===================================================================== +// 7. AFFICHAGE / DEBUG +// ===================================================================== + +// Bargraph ASCII court pour count/max +~loopBar = { |count, max, width = 20| + var ratio, full, str; + if (max == inf or: { max == 0 }) { + // Pas de max : on affiche un placeholder + "[--------------------]" + } { + ratio = (count / max).clip(0, 1); + full = (ratio * width).asInteger; + str = "[" ++ ("#" ! full).join ++ ("." ! (width - full)).join ++ "]"; + str + } +}; + +~loopProgress = { + "=== loop progress ===".postln; + if (~loops.isEmpty) { + " (aucune boucle)".postln; + } { + ~loops.keysValuesDo { |k, v| + var st = if (v[\state] == \on) { "ON " } { "off" }; + var c = v[\count] ? 0; + var m = v[\max] ? inf; + var bar = ~loopBar.(c, m, 20); + var maxStr = if (m == inf) { "inf" } { m.asString }; + (" [" ++ st ++ "] " ++ k ++ " " ++ bar + ++ " " ++ c ++ "/" ++ maxStr).postln; + }; + }; +}; + +// Alias visuel +~loopShow = { ~loopProgress.value }; + +// Info compacte d'une seule boucle +~loopInfo = { |name| + var v = ~loops[name]; + if (v.isNil) { + ("[loop] " ++ name ++ " inconnue").postln; + } { + var st = if (v[\state] == \on) { "ON" } { "off" }; + var src = v[\source]; + var srcStr = if (src.isKindOf(Symbol)) { src.asString } + { if (src.isKindOf(Function)) { "<fn>" } { "?" } }; + var c = v[\count] ? 0; + var m = v[\max] ? inf; + var bar = ~loopBar.(c, m, 20); + var maxStr = if (m == inf) { "inf" } { m.asString }; + var elapsed = (Main.elapsedTime - (v[\startedAt] ? Main.elapsedTime)).round(0.1); + ("[loop] " ++ name ++ " " ++ st + ++ " src=" ++ srcStr + ++ " " ++ bar ++ " " ++ c ++ "/" ++ maxStr + ++ " age=" ++ elapsed ++ "s").postln; + }; +}; + +// ===================================================================== +// 8. AUTO-STOP / AUTO-FADE PROGRAMMES +// ===================================================================== + +~loopAutoStop = { |name, beats = 16| + var t = TempoClock.default; + if (~loops[name].isNil) { + ("[loop] autoStop : " ++ name ++ " inconnue").postln; + } { + ~loopAutos[name] !? { |r| r.stop }; + ~loopAutos[name] = Routine({ + beats.wait; + ~loopOff.(name); + }).play(t); + ("[loop] autoStop " ++ name ++ " dans " ++ beats ++ "b").postln; + }; +}; + +~loopAutoFade = { |name, beats = 16, fadeDur = 1| + var t = TempoClock.default; + if (~loops[name].isNil) { + ("[loop] autoFade : " ++ name ++ " inconnue").postln; + } { + ~loopAutos[name] !? { |r| r.stop }; + ~loopAutos[name] = Routine({ + beats.wait; + ~loopFade.(name, fadeDur); + }).play(t); + ("[loop] autoFade " ++ name ++ " dans " ++ beats ++ "b (" + ++ fadeDur ++ "s)").postln; + }; +}; + +// ===================================================================== +// 9. HELPERS POUR LES PDEF DU MOTEUR +// ===================================================================== +// Chaque helper utilise un nom de boucle base sur la voie + source +// Pdef correspondant. Si beats = inf -> simple ~loopOn ; sinon ~loopBeats. + +~loopEngineHelper = { |voiceSym, beats| + var seqSym = (voiceSym.asString ++ "Seq").asSymbol; + var loopName = (voiceSym.asString ++ "Loop").asSymbol; + if (beats == inf or: { beats.isNil }) { + ~loopOn.(loopName, seqSym); + } { + ~loopBeats.(loopName, seqSym, beats); + }; + loopName +}; + +~kickLoop = { |beats = inf| ~loopEngineHelper.(\kick, beats) }; +~hatLoop = { |beats = inf| ~loopEngineHelper.(\hat, beats) }; +~snareLoop = { |beats = inf| ~loopEngineHelper.(\snare, beats) }; +~clapLoop = { |beats = inf| ~loopEngineHelper.(\clap, beats) }; +~percLoop = { |beats = inf| ~loopEngineHelper.(\perc, beats) }; +~acidLoop = { |beats = inf| ~loopEngineHelper.(\acid, beats) }; +~melodyLoop = { |beats = inf| ~loopEngineHelper.(\melody, beats) }; +~harmonyLoop = { |beats = inf| ~loopEngineHelper.(\harmony, beats) }; + +// Lance / stoppe les 8 Pdef du moteur d'un coup +~allOn = { + ~loopEngineSyms.do { |sym| + var voice = sym.asString.replace("Seq", "").asSymbol; + var loopName = (voice.asString ++ "Loop").asSymbol; + ~loopOn.(loopName, sym); + }; + "[loop] allOn (8 voies moteur)".postln; +}; + +~allOff = { + ~loopEngineSyms.do { |sym| + var voice = sym.asString.replace("Seq", "").asSymbol; + var loopName = (voice.asString ++ "Loop").asSymbol; + if (~loops[loopName].notNil and: { ~loops[loopName][\state] == \on }) { + ~loopOff.(loopName); + }; + }; + // Coupe aussi les Pdef directement, au cas ou on n'est pas passe + // par ~loopOn (compatibilite avec l'ancien workflow PLAY) + ~loopEngineSyms.do { |sym| Pdef(sym).stop }; + "[loop] allOff (8 voies moteur)".postln; +}; + +"[loops] gestionnaire pret -- ~loopList ~loopProgress ~allOn ~allOff".postln; +) + + +// ===================================================================== +// EXEMPLES (Cmd+Entree sur une parenthese) +// ===================================================================== +// +// // --- Boucles simples sur les Pdef du moteur ----------------------- +// ( ~kickLoop.(); ) // kick infini +// ( ~hatLoop.(16); ) // hat sur 16 beats +// ( ~loopOff.(\kickLoop); ) +// ( ~allOn.(); ) // les 8 voies du moteur +// ( ~allOff.(); ) +// +// // --- Boucles sur fonctions custom --------------------------------- +// ( ~loopOn.(\blip, { 8.do { |i| (instrument: \pluck, midinote: 60+i).play; 0.25.wait } }); ) +// ( ~loopOff.(\blip); ) +// +// // --- Repeat / countdown ------------------------------------------- +// ( ~loopRepeat.(\drop, \kickSeq, 4, 4); ) // 4 fois 4 beats +// ( ~loopWithCountdown.(\intro, \melodySeq, 4, inf); ) +// ( ~loopCountdown.(4, { "drop !".postln }); ) +// +// // --- Tempo-sync --------------------------------------------------- +// ( ~loopBeats.(\stab, \snareSeq, 8); ) +// ( ~loopBars.(\verse, \melodySeq, 4); ) // 4 mesures +// ( ~loopSync.(); ) // resync au temps fort +// +// // --- Compositions ------------------------------------------------- +// ( ~loopChain.([ +// [\a, \kickSeq, 8], +// [\b, \snareSeq, 8], +// [\c, \melodySeq, 16] +// ]); ) +// ( ~loopParallel.([[\k, \kickSeq], [\h, \hatSeq], [\m, \melodySeq]]); ) +// ( ~loopFade.(\kickLoop, 2); ) +// ( ~loopFadeIn.(\melodyLoop, \melodySeq, 4); ) +// +// // --- Compteurs ---------------------------------------------------- +// ( ~loopCount.(\drop).postln; ) +// ( ~loopReset.(\drop); ) +// ( ~loopMax.(\drop, 8); ) +// +// // --- Auto-stop / auto-fade ---------------------------------------- +// ( ~loopAutoStop.(\kickLoop, 32); ) +// ( ~loopAutoFade.(\acidLoop, 16, 2); ) +// +// // --- Snapshot / restore ------------------------------------------- +// ( ~loopSnapshot.(\acidLoop); ) +// ( ~loopRestore.(\acidLoop); ) +// ( ~loopSave.(\acidLoop); ) +// ( ~loopLoad.(\acidLoop); ) +// +// // --- Affichage ---------------------------------------------------- +// ( ~loopList.(); ) +// ( ~loopProgress.(); ) +// ( ~loopShow.(); ) +// ( ~loopInfo.(\kickLoop); ) +// ( ~loopIsOn.(\kickLoop).postln; ) +// +// ===================================================================== diff --git a/sound_algo/live/melodies.scd b/sound_algo/live/melodies.scd new file mode 100644 index 0000000..e63a97b --- /dev/null +++ b/sound_algo/live/melodies.scd @@ -0,0 +1,222 @@ +// ===================================================================== +// live/melodies.scd -- MELODIES LIVE (API ultra-courte) +// +// ATTENTION SC -- noter la notation des appels : +// +// NE MARCHE PAS : ~m.short.(50) +// -> SC passe l'event ~m comme 1er arg, et les vrais args sont +// PERDUS (test empirique sur SC 3.14.1). +// +// MARCHE BIEN : ~m[\short].(50) (notation indexee) +// ~mShort.(50) (variable env directe) +// ~mm.(50) (alias env direct) +// +// ~m // dict catalogue +// ~m[\short].(N) // applique m{N} (32 pas, 1..78) +// ~m[\long].(N) // applique ml{N} (64 pas, 1..30) +// ~m[\xlong].(N) // applique mxl{N} (96 pas, 1..15) +// ~m[\epic].(N) // applique mepic{N}(128 pas, 1..10) +// ~m[\rnd][\short].() etc. +// ~m[\gen].(\acid|\trance|...) // random par genre +// ~m[\nx].() / ~m[\pv].() // next/prev +// ~m[\inst].(\warmPad) // change ~melodyInst + reload +// ~m[\harm][\go].(\third) // ~enableHarmony +// ~m[\harm][\inst].(\warmPad) // change ~harmonyInst +// ~m[\amp] / [\cut] / [\drive] / [\off] +// ~m[\list].() +// +// RACCOURCIS env (API utilisateur primaire) : +// ~mShort, ~mLong, ~mXlong, ~mEpic +// ~mRnd, ~mRndLong, ~mRndXlong, ~mRndEpic +// ~mGen, ~mNx, ~mPv +// ~mInst, ~mHarm, ~mHarmInst +// ~mAmp, ~mCut, ~mDrive, ~mOff +// ~mList +// ~mm (= ~mShort, alias court) +// +// EXEMPLES : +// ~mm.(29) // melodie acid m29 +// ~mLong.(15) // melodie longue ml15 +// ~mGen.(\trance) // random dans le genre trance +// ~mHarm.(\third) // ajoute la 2e voix en tierce +// ~mNx.() // melodie suivante +// +// NOTE : noms reserves Object/Server (`s` = Server.default, `next`, +// `prev`...) ne marcheraient pas comme cles d'Event SC pseudo-method. +// Mais comme on N'UTILISE PAS la pseudo-method (~m.key.()), les noms +// des cles dans ~m peuvent rester courts (\short, \long, \nx, \pv). +// Les renommages c->cur etc. sont quand meme appliques pour clarte. +// +// PREREQUIS : engine + palette/melodies/* + palette/harmonics/* charges. +// ===================================================================== + +( +~m = (); + +// --- etat courant : kind + numero (pour ~m[\nx] / ~m[\pv]) ---------- +~m[\cur] = ( kind: \short, n: 1 ); + +// --- helper interne ------------------------------------------------ +~m[\apply] = { |kind, n| + var prefix, max, key, notes; + prefix = switch (kind, + \short, "m", + \long, "ml", + \xlong, "mxl", + \epic, "mepic", + "m" + ); + max = switch (kind, \short, 78, \long, 30, \xlong, 15, \epic, 10, 78); + n = ((n - 1).mod(max)) + 1; + key = (prefix ++ n).asSymbol; + notes = currentEnvironment[key]; + if (notes.notNil and: { notes.isArray }) { + ~melodyNotes = notes.copy; + ~reload !? { ~reload.value }; + ~m[\cur] = ( kind: kind, n: n ); + ("[m." ++ kind ++ "] " ++ key).postln; + } { + ("[m] melodie " ++ key ++ " inconnue (charge palette/melodies ?)").postln; + }; +}; + +~m[\short] = { |n = 1| ~m[\apply].(\short, n) }; +~m[\long] = { |n = 1| ~m[\apply].(\long, n) }; +~m[\xlong] = { |n = 1| ~m[\apply].(\xlong, n) }; +~m[\epic] = { |n = 1| ~m[\apply].(\epic, n) }; + +~m[\rnd] = (); +~m[\rnd][\short] = { ~m[\apply].(\short, 78.rand + 1) }; +~m[\rnd][\long] = { ~randomLong !? { ~randomLong.() }; ~m[\cur] = ( kind: \long, n: 1 ) }; +~m[\rnd][\xlong] = { ~randomXLong !? { ~randomXLong.() }; ~m[\cur] = ( kind: \xlong, n: 1 ) }; +~m[\rnd][\epic] = { ~randomEpic !? { ~randomEpic.() }; ~m[\cur] = ( kind: \epic, n: 1 ) }; +~m[\rnd][\value] = { ~m[\apply].(\short, 78.rand + 1) }; + +~m[\gen] = { |genre = \acid| + ~melodyByGenre !? { ~melodyByGenre.(genre) }; +}; + +~m[\nx] = { ~m[\apply].(~m[\cur][\kind], ~m[\cur][\n] + 1) }; +~m[\pv] = { ~m[\apply].(~m[\cur][\kind], ~m[\cur][\n] - 1) }; + +~m[\inst] = { |inst = \lead| + ~melodyInst = inst; + ~reload !? { ~reload.value }; + ("[m.inst] ~melodyInst = " ++ inst).postln; +}; + +~m[\harm] = (); +~m[\harm][\go] = { |preset = \off| + ~enableHarmony !? { ~enableHarmony.(preset) }; + ("[m.harm] " ++ preset).postln; +}; +~m[\harm][\inst] = { |inst = \pad| + ~harmonyInst = inst; + ~reload !? { ~reload.value }; + ("[m.harm.inst] ~harmonyInst = " ++ inst).postln; +}; + +~m[\amp] = { |val = 0.16| + ~melodyAmp = val.clip(0, 1); + ~reload !? { ~reload.value }; + ("[m.amp] " ++ ~melodyAmp).postln; +}; +~m[\cut] = { |hz = 2400| + ~melodyCutoff = hz.clip(20, 20000); + ~reload !? { ~reload.value }; + ("[m.cut] " ++ ~melodyCutoff ++ "Hz").postln; +}; +~m[\drive] = { |val = 1.2| + ~melodyDrive = val.max(0.1); + ~reload !? { ~reload.value }; + ("[m.drive] " ++ ~melodyDrive).postln; +}; +~m[\off] = { + ~melodyAmp = 0; + ~reload !? { ~reload.value }; + "[m.off] melody silencieuse".postln; +}; + +~m[\list] = { + "=== ~m -- MELODIES ===".postln; + (" courant : " ++ ~m[\cur][\kind] ++ " #" ++ ~m[\cur][\n]).postln; + " ranges : short 1..78 / long 1..30 / xlong 1..15 / epic 1..10".postln; + if (~melodyBank.notNil) { + " genres : ".post; ~melodyBank.keys.asArray.sort.postln; + } { " genres : (~melodyBank non charge)".postln }; + " USAGE : ~mm.(29) | ~mLong.(15) | ~mGen.(\\trance) | ~mNx.()".postln; +}; + +// --- API utilisateur : variables d'env top-level -------------------- +~mShort = { |n = 1| ~m[\apply].(\short, n) }; +~mLong = { |n = 1| ~m[\apply].(\long, n) }; +~mXlong = { |n = 1| ~m[\apply].(\xlong, n) }; +~mEpic = { |n = 1| ~m[\apply].(\epic, n) }; +~mRnd = { ~m[\apply].(\short, 78.rand + 1) }; +~mRndLong = { ~randomLong !? { ~randomLong.() }; ~m[\cur] = ( kind: \long, n: 1 ) }; +~mRndXlong = { ~randomXLong !? { ~randomXLong.() }; ~m[\cur] = ( kind: \xlong, n: 1 ) }; +~mRndEpic = { ~randomEpic !? { ~randomEpic.() }; ~m[\cur] = ( kind: \epic, n: 1 ) }; +~mGen = { |genre = \acid| ~melodyByGenre !? { ~melodyByGenre.(genre) } }; +~mNx = { ~m[\apply].(~m[\cur][\kind], ~m[\cur][\n] + 1) }; +~mPv = { ~m[\apply].(~m[\cur][\kind], ~m[\cur][\n] - 1) }; +~mInst = { |inst = \lead| ~m[\inst].(inst) }; +~mHarm = { |preset = \off| ~m[\harm][\go].(preset) }; +~mHarmInst = { |inst = \pad| ~m[\harm][\inst].(inst) }; +~mAmp = { |val = 0.16| ~m[\amp].(val) }; +~mCut = { |hz = 2400| ~m[\cut].(hz) }; +~mDrive = { |val = 1.2| ~m[\drive].(val) }; +~mOff = { ~m[\off].() }; +~mList = { ~m[\list].() }; +~mm = { |n = 1| ~m[\apply].(\short, n) }; // alias court + +"=== ~m pret -- ~mm.(29) | ~mLong.(15) | ~mGen.(\\trance) | ~mList.() ===".postln; +) + + + +// ===================================================================== +// EXEMPLES (Cmd+Entree pour appliquer) +// ===================================================================== + +// --- short / long / xlong / epic par numero --- +// ( ~mm.(29); ) // m29 (acid classique) +// ( ~mm.(50); ) // m50 +// ( ~mLong.(15); ) // ml15 (long 64 pas) +// ( ~mXlong.(5); ) // mxl5 (xlong 96 pas) +// ( ~mEpic.(1); ) // mepic1 (epic 128 pas) + +// --- random --- +// ( ~mRnd.(); ) // short random +// ( ~mRndLong.(); ) // long random +// ( ~mRndXlong.(); ) // xlong random +// ( ~mRndEpic.(); ) // epic random + +// --- random par genre --- +// ( ~mGen.(\acid); ) +// ( ~mGen.(\trance); ) +// ( ~mGen.(\dub); ) +// ( ~mGen.(\detroit); ) +// ( ~mGen.(\oriental); ) + +// --- navigation --- +// ( ~mNx.(); ) // suivante +// ( ~mPv.(); ) // precedente + +// --- timbre / harmonie --- + ( ~mInst.(\warmPad); ) + ( ~mInst.(\pluck); ) + ( ~mInst.(\stab); ) +// ( ~mHarm.(\third); ) // tierce + ( ~mHarm.(\fifth); ) // quinte +// ( ~mHarm.(\counter); ) +// ( ~mHarm.(\off); ) +// ( ~mHarmInst.(\warmPad); ) + +// --- reglages live --- + ( ~mAmp.(0.2); ) + ( ~mCut.(1200); ) + ( ~mDrive.(2.0); ) + ( ~mOff.(); ) // mute melodie + +// --- liste --- +// ( ~mList.(); ) diff --git a/sound_algo/live/memory_guard.scd b/sound_algo/live/memory_guard.scd new file mode 100644 index 0000000..98a200d --- /dev/null +++ b/sound_algo/live/memory_guard.scd @@ -0,0 +1,307 @@ +// ===================================================================== +// live/memory_guard.scd -- Garde-fous fuite memoire scsynth +// +// Expose les helpers live : +// +// ~killAllOrphans.() stop toutes les Routines + Pdefs + +// LFO connus + libere les bus FX +// dynamiques, SANS toucher au master +// bus ni aux FX bus statiques. +// -> a appeler avant chaque relance. +// +// ~freeDynFxBuses.() libere uniquement les Bus.audio +// alloues a la volee par ~addFx. +// +// ~nukeOrphanSynths.() PANIQUE : defaultGroup.freeAll. +// Coupe l'audio, relance ~setupAll. +// +// ~auditBuses.() compte bus statiques + dynamiques +// et liste les orphelins (dyn sans FX). +// +// ~memReport.() snapshot numSynths/Groups/UGens/CPU. +// +// ~watchdogOn.(seuil, interval) Routine fond, log si numSynths +// depasse le seuil. Defauts : 80, 10s. +// +// ~watchdogOff.() arrete le watchdog. +// +// ~guardCmdPeriodOn.() hook auto : Cmd-. declenche aussi +// ~killAllOrphans. Idempotent. +// +// ~guardCmdPeriodOff.() retire le hook. +// +// PREREQUIS : engine.scd + setup.scd evalues, serveur boote. +// Convention : un seul bloc top-level (compatible .load). +// ===================================================================== + +( + +// ===================================================================== +// Registry des Routines connues +// On ne touche jamais a master_comp / master_lim / vinyl / +// les FX bus (~fxFx) -- ils doivent rester pour ne pas tuer l'audio. +// ===================================================================== + +~guardKnownRoutines = [ + \track, // tracks/*.scd + \albumRoutine, // tracks/<L>_<slug>/_album.scd + \filterSweep, // engine.scd + \randomLoop, // engine.scd + \melodyEvolve, // engine.scd + \lRotate, // engine.scd / live + \crossfadeFxRoutine, // live/fx_bus.scd + \chainRoutine, // live/chains.scd + \playlist, // live/scenes + \vcfSweepRoutine, // live/live.scd ~vcfSweep (sweep cutoff VCF) + \guardWatchdog, // notre propre watchdog (auto-stop) +]; + +~guardKnownPdefs = [ + \kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq, +]; + + +// ===================================================================== +// ~killAllOrphans : stop tout ce qui peut accumuler des Synths +// Ne free pas l'infra audio (master bus + FX bus restent vivants). +// ===================================================================== + +~killAllOrphans = { + var stopped = 0; + + // 1. Routines simples enregistrees + ~guardKnownRoutines.do { |key| + var r = currentEnvironment[key]; + if (r.notNil) { + try { r.stop } { |err| }; + currentEnvironment[key] = nil; + stopped = stopped + 1; + }; + }; + + // 2. Pdefs sequenceurs connus + ~guardKnownPdefs.do { |key| Pdef(key).stop }; + + // 3. Tricks routines (live.scd : ~trickRoutines[\stutter|\drop|...]) + ~trickRoutines !? { + ~trickRoutines.keysValuesDo { |k, v| + try { v.stop } { |err| }; + stopped = stopped + 1; + }; + ~trickRoutines.clear; + }; + + // 4. LFO assignables (live.scd : ~lfos[paramName]) + ~lfos !? { + ~lfos.keysValuesDo { |k, v| + try { v.stop } { |err| }; + stopped = stopped + 1; + }; + ~lfos.clear; + }; + ~lfoStopEverything !? { ~lfoStopEverything.value }; + + // 5. Envelopes one-shot (live.scd : ~envs[paramName]) + ~envs !? { + ~envs.keysValuesDo { |k, v| + try { v.stop } { |err| }; + stopped = stopped + 1; + }; + ~envs.clear; + }; + + // 6. LFO du bus FX (fx_bus.scd : ~fxLfos[fxKey]) + ~fxLfos !? { + ~fxLfos.keysValuesDo { |k, v| + try { v.stop } { |err| }; + stopped = stopped + 1; + }; + ~fxLfos.clear; + }; + ~lfoStopAll !? { ~lfoStopAll.value }; + + // 7. Loops live (live.scd : ~loops[name]) + ~loopOffAll !? { ~loopOffAll.value }; + + // 8. Auto-fx panning / tremolo + ~stopAutoFx !? { + [\kick, \hat, \snare, \clap, \perc, \acid, \melody, \harmony] + .do { |v| try { ~stopAutoFx.(v) } { |err| } }; + }; + + // 9. Bus FX alloues dynamiquement par ~addFx (live.scd) - non + // couverts par le guard de fx_bus.scd + ~freeDynFxBuses !? { ~freeDynFxBuses.value }; + + ("[guard] killAllOrphans : " ++ stopped ++ " routines stoppees, " + ++ ~guardKnownPdefs.size ++ " Pdefs stoppes").postln; + stopped; +}; + + +// ===================================================================== +// ~freeDynFxBuses : libere les Bus.audio alloues a la volee par +// ~addFx (live.scd). Detruit aussi le Synth FX correspondant pour +// eviter qu'il pointe sur un bus libere. +// ===================================================================== + +~freeDynFxBuses = { + var n = 0; + ~fxBusesDyn !? { + ~fxBusesDyn.keysValuesDo { |key, bus| + ~fxFx !? { + ~fxFx[key] !? { try { ~fxFx[key].free }; ~fxFx[key] = nil }; + }; + ~fxBuses !? { ~fxBuses[key] = nil }; + try { bus.free }; + n = n + 1; + }; + ~fxBusesDyn.clear; + }; + if (n > 0) { ("[guard] freeDynFxBuses : " ++ n ++ " bus liberes").postln }; + n; +}; + + +// ===================================================================== +// ~nukeOrphanSynths : option PANIQUE. Free tous les Synths du +// defaultGroup -- a n'utiliser que si ~killAllOrphans n'a pas suffi. +// Risque : coupe l'audio en cours. Conserve les Groups et l'infra. +// ===================================================================== + +~nukeOrphanSynths = { + var srv = Server.default; + if (srv.serverRunning) { + var before = srv.numSynths; + srv.defaultGroup.freeAll; + ("[guard] NUKE : defaultGroup.freeAll (synths avant=" ++ before + ++ ") -- relance ~setupAll pour reconstruire").postln; + } { + "[guard] !! serveur non boote".postln; + }; +}; + + +// ===================================================================== +// ~auditBuses : compte les Bus alloues (statiques + dynamiques) et +// detecte les fuites probables (dyn buses orphelins sans Synth FX). +// ===================================================================== + +~auditBuses = { + var nStatic = 0, nDyn = 0, orphans = []; + ~fxBuses !? { nStatic = ~fxBuses.size }; + ~fxBusesDyn !? { + nDyn = ~fxBusesDyn.size; + ~fxBusesDyn.keysValuesDo { |k, b| + if (~fxFx.isNil or: { ~fxFx[k].isNil }) { + orphans = orphans.add(k); + }; + }; + }; + ("[audit] fxBuses static=" ++ nStatic ++ " dyn=" ++ nDyn + ++ " orphans=" ++ orphans).postln; + (static: nStatic, dyn: nDyn, orphans: orphans); +}; + + +// ===================================================================== +// ~guardCmdPeriodOn / Off : hook CmdPeriod automatique. +// Quand l'utilisateur fait Cmd-. (panic stop), on lance +// ~killAllOrphans en plus du free standard de SC. Idempotent. +// ===================================================================== + +~guardCmdPeriodFn = ~guardCmdPeriodFn ?? { { ~killAllOrphans.value } }; + +~guardCmdPeriodOn = { + CmdPeriod.remove(~guardCmdPeriodFn); // idempotence + CmdPeriod.add(~guardCmdPeriodFn); + "[guard] CmdPeriod hook ON (~killAllOrphans sur Cmd-.)".postln; +}; + +~guardCmdPeriodOff = { + CmdPeriod.remove(~guardCmdPeriodFn); + "[guard] CmdPeriod hook OFF".postln; +}; + + +// ===================================================================== +// ~memReport : snapshot ponctuel de l'etat scsynth +// ===================================================================== + +~memReport = { + var srv = Server.default; + var nSynths, nGroups, nUGens, line; + if (srv.serverRunning.not) { + "[guard] !! serveur non boote".postln; + nil; + } { + nSynths = srv.numSynths; + nGroups = srv.numGroups; + nUGens = srv.numUGens; + line = "[mem] synths=" ++ nSynths + ++ " groups=" ++ nGroups + ++ " ugens=" ++ nUGens + ++ " avgCPU=" ++ srv.avgCPU.round(0.1) ++ "%" + ++ " peakCPU=" ++ srv.peakCPU.round(0.1) ++ "%"; + line.postln; + nSynths; + }; +}; + + +// ===================================================================== +// ~watchdogOn / ~watchdogOff : surveillance numSynths en tache de fond +// Ne tue rien automatiquement -- log seulement un warning si depasse. +// Tu decides si tu veux ~killAllOrphans.() en reponse. +// ===================================================================== + +~watchdogOn = { |seuil = 80, interval = 10| + ~guardWatchdog !? { ~guardWatchdog.stop; ~guardWatchdog = nil }; + ~guardSeuil = seuil; + ~guardInterval = interval; + ~guardLastN = 0; + ~guardWatchdog = Routine({ + loop { + interval.wait; + if (Server.default.serverRunning) { + var n = Server.default.numSynths; + var dn = n - ~guardLastN; + ~guardLastN = n; + if (n > seuil) { + ("[GUARD] !! synths=" ++ n ++ " > seuil " ++ seuil + ++ " (Δ=" ++ dn ++ ")" + ++ " -- envisage ~killAllOrphans.()").postln; + }; + }; + }; + }).play(AppClock); + ("[guard] watchdog ON (seuil=" ++ seuil + ++ " synths, interval=" ++ interval ++ "s)").postln; +}; + +~watchdogOff = { + ~guardWatchdog !? { ~guardWatchdog.stop; ~guardWatchdog = nil }; + "[guard] watchdog OFF".postln; +}; + + +"[memory_guard] OK -- ~killAllOrphans / ~freeDynFxBuses / ~nukeOrphanSynths / ~auditBuses / ~memReport / ~watchdogOn(seuil,intv) / ~watchdogOff / ~guardCmdPeriodOn".postln; + +) + + +// ===================================================================== +// RACCOURCIS LIVE -- Cmd+Entree sur la ligne souhaitee +// ===================================================================== + +( ~memReport.(); ) // snapshot ponctuel +( ~auditBuses.(); ) // compte bus + orphelins +( ~killAllOrphans.(); ) // nettoyage avant relance +( ~freeDynFxBuses.(); ) // free uniquement bus FX dynamiques +( ~nukeOrphanSynths.(); ) // PANIQUE : defaultGroup.freeAll +( ~watchdogOn.(80, 10); ) // surveille (seuil 80, toutes les 10s) +( ~watchdogOn.(120, 5); ) // session lourde (seuil 120, toutes les 5s) +( ~watchdogOff.(); ) // arrete la surveillance +( ~guardCmdPeriodOn.(); ) // Cmd-. declenche aussi killAllOrphans +( ~guardCmdPeriodOff.(); ) // retire le hook diff --git a/sound_algo/live/mixer.scd b/sound_algo/live/mixer.scd new file mode 100644 index 0000000..53f67c9 --- /dev/null +++ b/sound_algo/live/mixer.scd @@ -0,0 +1,693 @@ +// ===================================================================== +// mixer.scd -- Mixer / faders par voie pour systeme live +// +// PREREQUIS : engine.scd evalue (~kickAmp, ~hatAmp, ..., ~reload defini) +// +// PHILOSOPHIE +// Les amps "de reference" (~mixRef) sont les valeurs courantes au +// moment de l'init du mixer. Les coefficients ~mix sont des +// multiplicateurs (0..1+) appliques sur ~mixRef avant chaque reload. +// -> ~setVol.(\kick, 0.5) baisse le kick a 50% de sa valeur de base +// -> ~mixReset remet tous les coefs a 1 (= valeurs de reference) +// -> changer ~mixRef.kick rebase la reference (ex: changement de kit) +// +// USAGE RAPIDE +// ( ~setVol.(\kick, 0.7); ) +// ( ~mute.(\hat); ) ( ~unmute.(\hat); ) +// ( ~solo.(\acid); ) ( ~unsolo.(); ) +// ( ~xfade.(\acid, \melody, 4); ) +// ( ~mixPreset.(\drumsHeavy); ) +// ( ~mixShow.(); ) +// ===================================================================== + +( +// --- 1. Init des structures ---------------------------------------- +~mixVoices = [\kick, \hat, \snare, \clap, \perc, \acid, \melody, \harmony]; + +// Coefficients courants (multiplicateurs 0..1+ par voie) +~mix = ~mix ?? { + (kick: 1, hat: 1, snare: 1, clap: 1, perc: 1, acid: 1, melody: 1, harmony: 1) +}; + +// Etats internes +~mixMuted = ~mixMuted ?? { Dictionary.new }; // voies mutees -> ancien coef +~mixSoloed = ~mixSoloed ?? { Dictionary.new }; // snapshot avant solo +~mixesSaved = ~mixesSaved ?? { Dictionary.new }; // mixes nommes +~mixFocusBak = ~mixFocusBak ?? { nil }; // snapshot avant focus +~mixDuckRout = ~mixDuckRout ?? { nil }; // routine duck en cours +~mixFadeRout = ~mixFadeRout ?? { Dictionary.new }; // routines de fade par voie +~mixMasterRt = ~mixMasterRt ?? { nil }; // routine master fade + + +// ~mixRef : valeurs "de reference" des amps moteur (capturees a l'init) +// Si une voie est consideree mutee (amp = 0), on garde une reference par +// defaut pour pouvoir restaurer. +~mixRefDefaults = ( + kick: 0.5, hat: 0.18, snare: 0.45, clap: 0.35, + perc: 0.25, acid: 0.32, melody: 0.16, harmony: 0.14 +); + +// Capture les amps moteur courants comme reference (1ere fois seulement) +~mixCaptureRef = { + ~mixRef = (); + ~mixVoices.do { |v| + var key = (v.asString ++ "Amp").asSymbol; + var cur = currentEnvironment[key]; + // si amp courant est nil ou 0 -> prend la valeur par defaut + if (cur.isNil or: { cur == 0 }) { + ~mixRef[v] = ~mixRefDefaults[v]; + } { + ~mixRef[v] = cur; + }; + }; +}; + +// Capture seulement si pas deja fait (preserve la reference entre reloads) +~mixRef ?? { ~mixCaptureRef.value }; + +// Re-capture force (utile apres changement de kit / preset moteur) +~mixRebase = { + ~mixCaptureRef.value; + "[mixer] reference rebase".postln; +}; + + +// --- 2. Application des coefficients -------------------------------- +// amp = ref * coef_voie * master (puis reload des Pdef) +~mixMaster = ~mixMaster ?? 1.0; // multiplicateur global non-destructif +~mixApply = { + ~mixVoices.do { |v| + var key = (v.asString ++ "Amp").asSymbol; + var refV = ~mixRef[v] ? 0; + var coef = ~mix[v] ? 1; + currentEnvironment.put(key, refV * coef * ~mixMaster); + }; + ~reload.value; +}; + + +// --- 3. Set / get / reset volume par voie --------------------------- +~setVol = { |voie, val| + if (~mixVoices.includes(voie).not) { + ("!! voie inconnue : " ++ voie ++ " -- voies : " ++ ~mixVoices).postln; + } { + ~mix[voie] = val.max(0); + ~mixApply.value; + ("[mix] " ++ voie ++ " = " ++ val.round(0.01)).postln; + }; +}; + +~getVol = { |voie| ~mix[voie] ? 1 }; + +~mixReset = { + ~mixVoices.do { |v| ~mix[v] = 1 }; + ~mixMuted.clear; + ~mixSoloed.clear; + ~mixApply.value; + "[mix] reset (tous coefs = 1)".postln; +}; + + +// --- 4. Mute / Unmute / Solo ---------------------------------------- +~mute = { |voie| + if (~mixVoices.includes(voie).not) { + ("!! voie inconnue : " ++ voie).postln; + } { + if (~mixMuted.includesKey(voie).not) { + ~mixMuted[voie] = ~mix[voie] ? 1; + ~mix[voie] = 0; + ~mixApply.value; + ("[mute] " ++ voie).postln; + }; + }; +}; + +~unmute = { |voie| + if (~mixMuted.includesKey(voie)) { + ~mix[voie] = ~mixMuted[voie]; + ~mixMuted.removeAt(voie); + ~mixApply.value; + ("[unmute] " ++ voie).postln; + } { + ("[unmute] " ++ voie ++ " n'etait pas mute").postln; + }; +}; + +~muteToggle = { |voie| + if (~mixMuted.includesKey(voie)) { ~unmute.(voie) } { ~mute.(voie) }; +}; + +~muteAll = { + ~mixVoices.do { |v| + if (~mixMuted.includesKey(v).not) { + ~mixMuted[v] = ~mix[v] ? 1; + ~mix[v] = 0; + }; + }; + ~mixApply.value; + "[mute all]".postln; +}; + +~unmuteAll = { + ~mixMuted.keysValuesDo { |v, prev| ~mix[v] = prev }; + ~mixMuted.clear; + ~mixApply.value; + "[unmute all]".postln; +}; + +~mutedList = { + var l = ~mixMuted.keys.asArray; + ("[muted] " ++ l).postln; + l; +}; + +// Solo : mute toutes les autres voies (snapshot dans ~mixSoloed) +~solo = { |voie| + if (~mixVoices.includes(voie).not) { + ("!! voie inconnue : " ++ voie).postln; + } { + // Si pas deja en solo, snapshot l'etat courant + if (~mixSoloed.size == 0) { + ~mixVoices.do { |v| ~mixSoloed[v] = ~mix[v] ? 1 }; + }; + ~mixVoices.do { |v| + ~mix[v] = if (v == voie) { ~mixSoloed[v] } { 0 }; + }; + ~mixApply.value; + ("[solo] " ++ voie).postln; + }; +}; + +~unsolo = { + if (~mixSoloed.size == 0) { + "[unsolo] aucun solo actif".postln; + } { + ~mixSoloed.keysValuesDo { |v, val| ~mix[v] = val }; + ~mixSoloed.clear; + ~mixApply.value; + "[unsolo]".postln; + }; +}; + + +// --- 5. Master volume / fades --------------------------------------- +// Set le multiplicateur master ABSOLU (non destructif sur les coefs voies) +// ~masterVol.(0.5) -> moitie ; ~masterVol.(1) -> retour normal +~masterVol = { |val| + ~mixMaster = val.max(0); + ~mixApply.value; + ("[master] = " ++ ~mixMaster.round(0.01)).postln; +}; + +// Fade le multiplicateur master vers une valeur cible (preserve les coefs voies) +~masterFade = { |target = 0, dur = 4| + ~mixMasterRt !? { ~mixMasterRt.stop }; + ~mixMasterRt = Routine({ + var steps = (dur * 30).max(2).asInteger; + var startMaster = ~mixMaster ? 1; + steps.do { |i| + var t = (i + 1) / steps; + ~mixMaster = startMaster.blend(target, t); + ~mixApply.value; + (dur / steps).wait; + }; + ("[master fade] -> " ++ target.round(0.01)).postln; + }).play; +}; + +// Fade-in depuis 0 vers le master courant (1.0 par defaut) +~masterFadeIn = { |dur = 4, target = 1| + ~mixMaster = 0; + ~mixApply.value; + ~masterFade.(target, dur); +}; + +// Fade-out vers 0 puis stop des Pdef sequencer (preserve les coefs voies) +~masterFadeOut = { |dur = 4| + ~mixMasterRt !? { ~mixMasterRt.stop }; + ~mixMasterRt = Routine({ + var steps = (dur * 30).max(2).asInteger; + var startMaster = ~mixMaster ? 1; + steps.do { |i| + var t = (i + 1) / steps; + ~mixMaster = startMaster.blend(0, t); + ~mixApply.value; + (dur / steps).wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[master fade-out] STOP".postln; + }).play; +}; + +// Duck momentane : baisse a depth*current pendant attack, restaure en release +~masterDuck = { |depth = 0.3, attack = 0.05, release = 0.4| + ~mixDuckRout !? { ~mixDuckRout.stop }; + ~mixDuckRout = Routine({ + var snapshot = (); + var stepsA = (attack * 30).max(2).asInteger; + var stepsR = (release * 30).max(2).asInteger; + ~mixVoices.do { |v| snapshot[v] = ~mix[v] ? 1 }; + // attack : descente vers depth*current + stepsA.do { |i| + var t = (i + 1) / stepsA; + ~mixVoices.do { |v| + ~mix[v] = snapshot[v].blend(snapshot[v] * depth, t); + }; + ~mixApply.value; + (attack / stepsA).wait; + }; + // release : remontee + stepsR.do { |i| + var t = (i + 1) / stepsR; + ~mixVoices.do { |v| + ~mix[v] = (snapshot[v] * depth).blend(snapshot[v], t); + }; + ~mixApply.value; + (release / stepsR).wait; + }; + "[duck] OK".postln; + }).play; +}; + + +// --- 6. Presets de balance ------------------------------------------ +~mixPresets = ( + flat: (kick: 1.0, hat: 1.0, snare: 1.0, clap: 1.0, + perc: 1.0, acid: 1.0, melody: 1.0, harmony: 1.0), + drumsHeavy: (kick: 1.3, hat: 1.2, snare: 1.2, clap: 1.1, + perc: 1.1, acid: 0.7, melody: 0.5, harmony: 0.4), + melodicLead: (kick: 0.7, hat: 0.6, snare: 0.6, clap: 0.5, + perc: 0.5, acid: 0.6, melody: 1.5, harmony: 1.1), + acidFocus: (kick: 0.8, hat: 0.6, snare: 0.5, clap: 0.4, + perc: 0.4, acid: 1.5, melody: 0.5, harmony: 0.3), + bassFocus: (kick: 1.3, hat: 0.5, snare: 0.6, clap: 0.4, + perc: 0.4, acid: 1.3, melody: 1.1, harmony: 0.5), + breakdown: (kick: 0.0, hat: 0.0, snare: 0.0, clap: 0.0, + perc: 0.3, acid: 0.6, melody: 1.1, harmony: 1.0), + buildup: (kick: 0.4, hat: 0.7, snare: 0.5, clap: 0.5, + perc: 0.6, acid: 0.9, melody: 1.0, harmony: 0.8), + drop: (kick: 1.2, hat: 1.1, snare: 1.1, clap: 1.1, + perc: 1.0, acid: 1.0, melody: 1.0, harmony: 0.9), + dub: (kick: 1.3, hat: 1.0, snare: 0.5, clap: 0.6, + perc: 1.2, acid: 0.7, melody: 1.4, harmony: 0.6), + trance: (kick: 1.2, hat: 1.2, snare: 0.8, clap: 1.2, + perc: 0.7, acid: 0.6, melody: 1.4, harmony: 1.0), + detroit: (kick: 1.0, hat: 0.9, snare: 0.9, clap: 0.8, + perc: 0.8, acid: 1.0, melody: 1.0, harmony: 0.9), + hardcore: (kick: 1.5, hat: 1.0, snare: 1.4, clap: 1.0, + perc: 0.9, acid: 1.1, melody: 0.5, harmony: 0.3), +); + +~mixPreset = { |name| + var p = ~mixPresets[name]; + if (p.isNil) { + ("!! preset inconnu : " ++ name ++ + " -- dispos : " ++ ~mixPresets.keys.asArray).postln; + } { + ~mixVoices.do { |v| ~mix[v] = p[v] ? 1 }; + ~mixMuted.clear; + ~mixSoloed.clear; + ~mixApply.value; + ("[preset] " ++ name).postln; + }; +}; + + +// --- 7. Save / recall des balances ---------------------------------- +~saveMix = { |name| + var snap = (); + ~mixVoices.do { |v| snap[v] = ~mix[v] ? 1 }; + ~mixesSaved[name] = snap; + ("[mix saved] " ++ name).postln; +}; + +~loadMix = { |name| + var snap = ~mixesSaved[name]; + if (snap.isNil) { + ("!! mix '" ++ name ++ "' inexistant. Dispos : " ++ + ~mixesSaved.keys.asArray).postln; + } { + ~mixVoices.do { |v| ~mix[v] = snap[v] ? 1 }; + ~mixMuted.clear; + ~mixSoloed.clear; + ~mixApply.value; + ("[mix loaded] " ++ name).postln; + }; +}; + +~listMixes = { + "=== MIXES sauvegardes ===".postln; + if (~mixesSaved.size == 0) { + " (aucun)".postln; + } { + ~mixesSaved.keysValuesDo { |k, v| + (" " ++ k).postln; + }; + }; + ~mixesSaved.keys.asArray; +}; + +~deleteMix = { |name| + if (~mixesSaved.includesKey(name)) { + ~mixesSaved.removeAt(name); + ("[mix deleted] " ++ name).postln; + } { ("mix '" ++ name ++ "' inexistant").postln }; +}; + + +// --- 8. Helpers de balance live ------------------------------------- +// Crossfade entre 2 voies sur dur secondes +~xfade = { |voieA, voieB, dur = 4| + var key = (voieA.asString ++ "_" ++ voieB.asString).asSymbol; + ~mixFadeRout[key] !? { ~mixFadeRout[key].stop }; + ~mixFadeRout[key] = Routine({ + var steps = (dur * 30).max(2).asInteger; + var startA = ~mix[voieA] ? 1; + var startB = ~mix[voieB] ? 1; + var targetA = 0; + var targetB = if (startB > 0) { startB } { 1 }; + steps.do { |i| + var t = (i + 1) / steps; + ~mix[voieA] = startA.blend(targetA, t); + ~mix[voieB] = startB.blend(targetB, t); + ~mixApply.value; + (dur / steps).wait; + }; + ("[xfade] " ++ voieA ++ " -> " ++ voieB).postln; + }).play; +}; + +// Fade smooth d'une voie vers une cible +~fadeVol = { |voie, target = 1, dur = 2| + if (~mixVoices.includes(voie).not) { + ("!! voie inconnue : " ++ voie).postln; + } { + ~mixFadeRout[voie] !? { ~mixFadeRout[voie].stop }; + ~mixFadeRout[voie] = Routine({ + var steps = (dur * 30).max(2).asInteger; + var start = ~mix[voie] ? 1; + steps.do { |i| + var t = (i + 1) / steps; + ~mix[voie] = start.blend(target, t); + ~mixApply.value; + (dur / steps).wait; + }; + ("[fade] " ++ voie ++ " -> " ++ target.round(0.01)).postln; + }).play; + }; +}; + +// Echange instantane de 2 voies +~swapVol = { |voieA, voieB| + var tmp = ~mix[voieA] ? 1; + ~mix[voieA] = ~mix[voieB] ? 1; + ~mix[voieB] = tmp; + ~mixApply.value; + ("[swap] " ++ voieA ++ " <-> " ++ voieB).postln; +}; + +// Focus : boost une voie, baisse les autres a "others" +~focus = { |voie, others = 0.3| + if (~mixVoices.includes(voie).not) { + ("!! voie inconnue : " ++ voie).postln; + } { + // snapshot avant focus + ~mixFocusBak = (); + ~mixVoices.do { |v| ~mixFocusBak[v] = ~mix[v] ? 1 }; + ~mixVoices.do { |v| + ~mix[v] = if (v == voie) { 1.0 } { others }; + }; + ~mixApply.value; + ("[focus] " ++ voie ++ " (others=" ++ others ++ ")").postln; + }; +}; + +~unfocus = { + if (~mixFocusBak.isNil) { + "[unfocus] aucun focus actif".postln; + } { + ~mixFocusBak.keysValuesDo { |v, val| ~mix[v] = val }; + ~mixFocusBak = nil; + ~mixApply.value; + "[unfocus]".postln; + }; +}; + + +// --- 9. Affichage / debug ------------------------------------------- +// Bargraph ASCII (12 cells, max coef = 1.5 pour la visu) +~mixShow = { + var max = 1.5; + var cells = 12; + "=== MIXER ===".postln; + ~mixVoices.do { |v| + var coef = ~mix[v] ? 1; + var filled = ((coef / max) * cells).round.asInteger.clip(0, cells); + var empty = cells - filled; + var bar = String.fill(filled, $|) ++ String.fill(empty, $.); + var lbl = (v.asString ++ " ").copyRange(0, 7); + var muted = if (~mixMuted.includesKey(v)) { " [MUTED]" } { "" }; + var soloed = if (~mixSoloed.size > 0 and: { coef > 0 }) { + " [SOLO]" + } { "" }; + // remplace les pipes pour rendre visuel : utilise des chars block + bar = bar.replace("|", "#"); + (" " ++ lbl ++ "|" ++ bar ++ " " ++ + coef.round(0.01).asString ++ muted ++ soloed).postln; + }; + "=============".postln; +}; + +// Info compacte une ligne +~mixInfo = { + var s = "[mix] "; + ~mixVoices.do { |v| + s = s ++ v.asString ++ ":" ++ (~mix[v] ? 1).round(0.01).asString ++ " "; + }; + s.postln; +}; + + +// --- 10. Limiter / clip warning ------------------------------------- +// Calcul approximatif : somme des coef * amp_ref par voie +// Si > seuil -> warn (le master limiter sauvera, mais le mix est sale) +~mixClipWarn = { |seuil = 1.2| + var sum = 0; + ~mixVoices.do { |v| + var refV = ~mixRef[v] ? 0; + var coef = ~mix[v] ? 1; + sum = sum + (refV * coef); + }; + if (sum > seuil) { + ("!! [clip warn] somme amps = " ++ sum.round(0.01) ++ + " > seuil " ++ seuil ++ " -- risque de pompage limiter").postln; + } { + ("[ok] somme amps = " ++ sum.round(0.01) ++ + " (seuil " ++ seuil ++ ")").postln; + }; + sum; +}; + + +"=== mixer pret -- ~setVol ~mute ~solo ~mixPreset ~mixShow ===".postln; +) + + +// ===================================================================== +// EXEMPLES D'USAGE -- Cmd+Entree sur un bloc pour l'executer +// PREREQUIS : avoir evalue le bloc SETUP en tete de fichier d'abord +// ===================================================================== + +// --- Faders simples -------------------------------------------------- + +// Baisse kick a 70% +( ~setVol.(\kick, 0.7); ) + +// Boost acid a 130% +( ~setVol.(\acid, 1.3); ) + +// Baisse melody a 40% +( ~setVol.(\melody, 0.4); ) + +// Lit le coef courant d'une voie +( ~getVol.(\kick); ) + +// Reset tous les coefs a 1 +( ~mixReset.(); ) + + +// --- Mute / unmute --------------------------------------------------- + +// Mute hat +( ~mute.(\hat); ) + +// Unmute hat +( ~unmute.(\hat); ) + +// Toggle mute acid +( ~muteToggle.(\acid); ) + +// Mute toutes les voies +( ~muteAll.(); ) + +// Unmute toutes les voies +( ~unmuteAll.(); ) + +// Liste les voies mutees +( ~mutedList.(); ) + + +// --- Solo ------------------------------------------------------------ + +// Solo acid (tout sauf acid -> mute) +( ~solo.(\acid); ) + +// Restore l'etat avant solo +( ~unsolo.(); ) + + +// --- Master volume / fades ------------------------------------------- + +// Baisse global x0.5 +( ~masterVol.(0.5); ) + +// Fade tous les coefs vers 0 en 8s +( ~masterFade.(0, 8); ) + +// Fade-in 4s depuis silence +( ~masterFadeIn.(4); ) + +// Fade-out 6s puis stop des Pdef +( ~masterFadeOut.(6); ) + +// Duck momentane (drop) : depth=0.3, attack=0.05s, release=0.5s +( ~masterDuck.(0.3, 0.05, 0.5); ) + + +// --- Presets de balance ---------------------------------------------- + +// Tous coefs = 1 +( ~mixPreset.(\flat); ) + +// Drums devant +( ~mixPreset.(\drumsHeavy); ) + +// Melody devant +( ~mixPreset.(\melodicLead); ) + +// Acid devant +( ~mixPreset.(\acidFocus); ) + +// Kick + acid devant +( ~mixPreset.(\bassFocus); ) + +// Drums coupes (breakdown) +( ~mixPreset.(\breakdown); ) + +// Buildup +( ~mixPreset.(\buildup); ) + +// Drop +( ~mixPreset.(\drop); ) + +// Dub +( ~mixPreset.(\dub); ) + +// Trance +( ~mixPreset.(\trance); ) + +// Detroit +( ~mixPreset.(\detroit); ) + +// Hardcore +( ~mixPreset.(\hardcore); ) + + +// --- Save / recall des balances -------------------------------------- + +// Sauvegarde la balance courante sous \verseA +( ~saveMix.(\verseA); ) + +// Sauvegarde sous \drop1 +( ~saveMix.(\drop1); ) + +// Recharge \verseA +( ~loadMix.(\verseA); ) + +// Liste les mixes sauvegardes +( ~listMixes.(); ) + +// Supprime un mix sauvegarde +( ~deleteMix.(\verseA); ) + + +// --- Helpers live ---------------------------------------------------- + +// Crossfade acid -> melody en 4s +( ~xfade.(\acid, \melody, 4); ) + +// Fade kick vers 0.3 en 2s +( ~fadeVol.(\kick, 0.3, 2); ) + +// Echange instantane des coefs acid <-> melody +( ~swapVol.(\acid, \melody); ) + +// Focus acid (devant), autres voies a 0.2 +( ~focus.(\acid, 0.2); ) + +// Restore l'etat avant focus +( ~unfocus.(); ) + + +// --- Affichage / debug ----------------------------------------------- + +// Bargraph ASCII de tous les coefs +( ~mixShow.(); ) + +// Info compacte une ligne +( ~mixInfo.(); ) + +// Alerte si la somme des amps depasse le seuil (1.2 par defaut) +( ~mixClipWarn.(); ) + + +// --- Rebase reference (apres changement de kit moteur) --------------- + +// Re-capture les ~xxxAmp courants comme nouvelle reference +( ~mixRebase.(); ) + + +// ===================================================================== +// WORKFLOW LIVE PERFORMANCE COMPLET (sequence d'exemples chainables) +// ===================================================================== + +// 1. Demarrage en silence puis montee +( ~mixPreset.(\breakdown); ~masterFadeIn.(8); ) + +// 2. Verse calme (melody devant) + sauvegarde +( ~mixPreset.(\melodicLead); ~saveMix.(\verseA); ) + +// 3. Buildup progressif +( ~mixPreset.(\buildup); ~fadeVol.(\hat, 1.2, 4); ) + +// 4a. DROP : duck preparatoire +( ~masterDuck.(0.3, 0.1, 0.5); ) + +// 4b. DROP : preset drop + sauvegarde +( ~mixPreset.(\drop); ~saveMix.(\drop1); ) + +// 5a. Section acid solo : focus +( ~focus.(\acid, 0.25); ) + +// 5b. ... 16 mesures plus tard : unfocus +( ~unfocus.(); ) + +// 6. Breakdown ambient +( ~mixPreset.(\breakdown); ) + +// 7. Retour drop final +( ~loadMix.(\drop1); ) + +// 8. Fade-out final +( ~masterFadeOut.(12); ) diff --git a/sound_algo/live/patterns.scd b/sound_algo/live/patterns.scd new file mode 100644 index 0000000..3429c61 --- /dev/null +++ b/sound_algo/live/patterns.scd @@ -0,0 +1,538 @@ +// ===================================================================== +// live/patterns.scd -- RHYTHM PRESETS LIVE (API ultra-courte) +// +// ATTENTION SC -- la notation `~p.kit.(\name)` NE marche PAS : +// SC passe l'event ~p comme 1er arg et perd les vrais args. +// Utiliser ~p[\kit].(\name) ou les variables ~pKit.(\name). +// +// ~p // dict catalogue +// ~p[\kit].(\name) // applique un kit complet +// ~p[\genre].(\name) // applique un preset rythmique +// ~p[\kick].(N|\name) // raccourci -> ~k[\go] +// ~p[\hat] / [\snare] / [\clap] / [\perc] / [\list] +// +// RACCOURCIS env (API utilisateur primaire) : +// ~pKit, ~pGenre, ~pKick +// ~pHat, ~pSnare, ~pClap, ~pPerc +// ~pList +// +// KITS DISPO (extraits de drum_kits.scd) : +// \techno \dubstep \dnb \trap \house \breakbeat \hardstyle \jungle +// \garage \trap808 \phonk \footwork \liquidDnB \synthwave \industrial +// \tribalWorld \hardcore \lofiHipHop \futureGarage \detroitDeep +// +// GENRES DISPO (extraits de patterns_genre.scd) : +// \hardTechno \acidHouse \trance138 \psyTrance \hardstyle \handsUp +// \liquidDnB \neurofunk \jungle165 \dnbJumpup \futureBass \deepHouse +// \techHouse \progHouse \tribalTechno \industrialV2 \breakcore +// \footwork \idm \glitchHop +// +// HAT/SNARE/CLAP/PERC presets : voir blocs ci-dessous. +// +// PREREQUIS : engine.scd evalue. Les valeurs sont dupliquees ici donc +// ~p est utilisable independamment des fichiers palette/rhythm/*. +// ===================================================================== + +( +~p = (); + +// --- KITS COMPLETS (duplique les valeurs canoniques de drum_kits.scd) +// Chaque kit est un Event de variables a appliquer + ~reload. +// +// NOTE : on utilise la notation `~p[\key]` partout en interne pour +// eviter toute collision pseudo-methode. Les sous-cles `kit`, `genre`, +// `kick`, `hat`, `snare`, `clap`, `perc`, `list` sont assez longues +// pour ne pas collisionner avec les methodes Object SC. +~p[\kits] = ( + \techno: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.55, + kickFreq:55, kickPitchAmt:3.0, kickDecay:0.32, kickDrive:1.3, kickClick:0.2, + hatSteps: [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0], hatAmp:0.18, + snareSteps:(0!16), clapSteps:(0!16), percSteps:(0!16) + ), + \dubstep: ( + kickSteps:[1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0], kickAmp:0.6, + kickFreq:48, kickPitchAmt:3.5, kickDecay:0.5, kickDrive:1.5, kickClick:0.15, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], snareAmp:0.5, + snareFreq:220, snareNoiseAmt:0.65, snareDecay:0.16, + hatSteps:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], hatAmp:0.10, + clapSteps:(0!16), percSteps:(0!16) + ), + \dnb: ( + kickSteps:[1,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0], kickAmp:0.55, + kickFreq:55, kickPitchAmt:4.0, kickDecay:0.18, kickDrive:1.5, kickClick:0.3, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1], snareAmp:0.5, + snareFreq:240, snareNoiseAmt:0.7, snareDecay:0.10, + hatSteps:[1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1], hatAmp:0.12, + clapSteps:(0!16), percSteps:(0!16) + ), + \trap: ( + kickSteps:[1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0], kickAmp:0.55, + kickFreq:42, kickPitchAmt:2.5, kickDecay:0.6, kickDrive:1.2, kickClick:0.08, + hatSteps:[1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,0], hatAmp:0.10, + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.3, + percInst:\rim, percSteps:[0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,1], percAmp:0.2, + snareSteps:(0!16) + ), + \house: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.55, + kickFreq:50, kickPitchAmt:2.8, kickDecay:0.35, kickDrive:1.2, kickClick:0.12, + hatSteps:[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0], hatAmp:0.15, + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.35, + snareSteps:(0!16), percSteps:(0!16) + ), + \hardstyle: ( + kickSteps:[1,0,0,0,1,0,0,1,1,0,0,0,1,1,0,0], kickAmp:0.65, + kickFreq:62, kickPitchAmt:5.5, kickDecay:0.30, kickDrive:4.0, kickClick:0.45, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], snareAmp:0.55, + snareFreq:230, snareNoiseAmt:0.7, snareDecay:0.18, + hatSteps:[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1], hatAmp:0.12, + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.45, + percInst:\rim, percSteps:[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1], percAmp:0.22 + ), + \jungle: ( + kickSteps:[1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0], kickAmp:0.55, + kickFreq:55, kickPitchAmt:3.5, kickDecay:0.20, kickDrive:1.6, kickClick:0.32, + snareSteps:[0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,1], snareAmp:0.55, + snareFreq:220, snareNoiseAmt:0.7, snareDecay:0.10, + hatSteps:[1,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1], hatAmp:0.12, + clapSteps:(0!16), + percInst:\rim, percSteps:[0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0], percAmp:0.30 + ), + \garage: ( + kickSteps:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0], kickAmp:0.5, + kickFreq:50, kickPitchAmt:2.8, kickDecay:0.35, kickDrive:1.2, kickClick:0.15, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0], snareAmp:0.4, + snareFreq:200, snareNoiseAmt:0.55, snareDecay:0.20, + hatSteps:[0,1,1,0,1,1,0,1,0,1,1,0,1,1,0,1], hatAmp:0.11, + clapSteps:[0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0], clapAmp:0.32, + percInst:\rim, percSteps:(0!16) + ), + \trap808: ( + kickSteps:[1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0], kickAmp:0.6, + kickFreq:38, kickPitchAmt:1.8, kickDecay:0.85, kickDrive:1.0, kickClick:0.05, + snareSteps:(0!16), + hatSteps:[1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1], hatAmp:0.09, + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.35, + percInst:\rim, percSteps:[0,0,1,1,0,1,0,0,1,0,1,0,0,1,1,0], percAmp:0.18 + ), + \phonk: ( + kickSteps:[1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0], kickAmp:0.6, + kickFreq:40, kickPitchAmt:2.0, kickDecay:0.7, kickDrive:1.2, kickClick:0.08, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], snareAmp:0.45, + snareFreq:280, snareNoiseAmt:0.65, snareDecay:0.14, + hatSteps:[1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,0], hatAmp:0.11, + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.30, + percInst:\cowbell, cowbellFreq:800, + percSteps:[0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0], percAmp:0.32 + ), + \footwork: ( + kickSteps:[1,0,0,1,1,0,0,0,1,0,1,1,0,0,1,0], kickAmp:0.55, + kickFreq:42, kickPitchAmt:2.4, kickDecay:0.5, kickDrive:1.3, kickClick:0.10, + snareSteps:(0!16), + hatSteps:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], hatAmp:0.10, + clapSteps:[0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0], clapAmp:0.32, + percInst:\rim, percSteps:[0,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1], percAmp:0.22 + ), + \industrial: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.6, + kickFreq:60, kickPitchAmt:5.0, kickDecay:0.28, kickDrive:3.5, kickClick:0.4, + snareSteps:[0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0], snareAmp:0.55, + snareFreq:260, snareNoiseAmt:0.8, snareDecay:0.10, + hatSteps:[0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,1], hatAmp:0.13, + clapSteps:(0!16), + percInst:\rim, percSteps:[1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1], percAmp:0.4 + ), + \hardcore: ( + kickSteps:[1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0], kickAmp:0.65, + kickFreq:60, kickPitchAmt:5.0, kickDecay:0.20, kickDrive:4.0, kickClick:0.35, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1], snareAmp:0.55, + snareFreq:240, snareNoiseAmt:0.85, snareDecay:0.10, + hatSteps:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], hatAmp:0.12, + clapSteps:[0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0], clapAmp:0.42, + percSteps:(0!16) + ), + \detroitDeep: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0], kickAmp:0.5, + kickFreq:52, kickPitchAmt:2.8, kickDecay:0.32, kickDrive:1.3, kickClick:0.16, + snareSteps:(0!16), + hatSteps:[0,1,1,0,1,1,0,1,0,1,1,0,1,1,0,1], hatAmp:0.13, + clapSteps:[0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0], clapAmp:0.32, + percInst:\rim, percSteps:[0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0], percAmp:0.18 + ), + \lofiHipHop: ( + kickSteps:[1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0], kickAmp:0.45, + kickFreq:45, kickPitchAmt:2.0, kickDecay:0.55, kickDrive:1.0, kickClick:0.04, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], snareAmp:0.40, + snareFreq:190, snareNoiseAmt:0.45, snareDecay:0.15, + hatSteps:[1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0], hatAmp:0.08, + clapSteps:(0!16), + percInst:\rim, percSteps:[0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0], percAmp:0.14 + ), + \tribalWorld: ( + kickSteps:[1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0], kickAmp:0.4, + kickFreq:48, kickPitchAmt:2.2, kickDecay:0.4, kickDrive:1.0, kickClick:0.06, + snareSteps:(0!16), + hatSteps:[1,1,0,1,1,0,1,1,0,1,1,1,1,0,1,1], hatAmp:0.08, + clapSteps:(0!16), + percInst:\tom, tomFreq:95, + percSteps:[1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0], percAmp:0.4 + ) +); + +// --- GENRES (extraits de patterns_genre.scd) ----------------------- +~p[\genres] = ( + \hardTechno: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.6, + kickFreq:60, kickPitchAmt:4.5, kickDecay:0.28, kickDrive:3.0, kickClick:0.32, + hatSteps:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], hatAmp:0.14, + snareSteps:[0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0], snareAmp:0.5, + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.4, + percSteps:(0!16) + ), + \acidHouse: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.55, + kickFreq:50, kickPitchAmt:2.8, kickDecay:0.35, kickDrive:1.2, kickClick:0.12, + hatSteps:[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1], hatAmp:0.13, + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.35, + snareSteps:(0!16), percSteps:(0!16) + ), + \trance138: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.55, + kickFreq:55, kickPitchAmt:3.2, kickDecay:0.28, kickDrive:1.5, kickClick:0.20, + hatSteps:[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0], hatAmp:0.16, + snareSteps:(0!16), + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.35, + percSteps:(0!16) + ), + \psyTrance: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.6, + kickFreq:55, kickPitchAmt:4.0, kickDecay:0.22, kickDrive:1.6, kickClick:0.28, + hatSteps:[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1], hatAmp:0.14, + snareSteps:(0!16), + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.30, + percInst:\rim, percSteps:[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0], percAmp:0.20 + ), + \hardstyle: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.65, + kickFreq:62, kickPitchAmt:5.0, kickDecay:0.32, kickDrive:3.8, kickClick:0.42, + hatSteps:[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1], hatAmp:0.13, + snareSteps:(0!16), + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.45, + percSteps:(0!16) + ), + \handsUp: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.55, + kickFreq:58, kickPitchAmt:3.5, kickDecay:0.30, kickDrive:1.6, kickClick:0.25, + hatSteps:[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0], hatAmp:0.18, + snareSteps:(0!16), + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.40, + percSteps:(0!16) + ), + \liquidDnB: ( + kickSteps:[1,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0], kickAmp:0.5, + kickFreq:50, kickPitchAmt:3.0, kickDecay:0.25, kickDrive:1.3, kickClick:0.20, + hatSteps:[1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1], hatAmp:0.10, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], snareAmp:0.45, + clapSteps:(0!16), + percInst:\openHat, percSteps:[0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0], percAmp:0.18 + ), + \neurofunk: ( + kickSteps:[1,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1], kickAmp:0.6, + kickFreq:58, kickPitchAmt:4.5, kickDecay:0.16, kickDrive:1.8, kickClick:0.4, + hatSteps:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], hatAmp:0.12, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,1], snareAmp:0.55, + clapSteps:(0!16), percSteps:(0!16) + ), + \jungle165: ( + kickSteps:[1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0], kickAmp:0.55, + kickFreq:55, kickPitchAmt:3.5, kickDecay:0.20, kickDrive:1.6, kickClick:0.32, + snareSteps:[0,0,0,0,1,0,1,0,0,0,0,1,1,0,0,1], snareAmp:0.55, + hatSteps:[1,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1], hatAmp:0.12, + clapSteps:(0!16), + percInst:\rim, percSteps:[0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0], percAmp:0.30 + ), + \dnbJumpup: ( + kickSteps:[1,0,0,0,0,0,1,1,0,0,1,0,1,0,0,0], kickAmp:0.6, + kickFreq:55, kickPitchAmt:4.0, kickDecay:0.18, kickDrive:1.7, kickClick:0.35, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], snareAmp:0.55, + hatSteps:[1,1,1,0,1,1,0,1,1,1,1,0,1,1,0,1], hatAmp:0.12, + clapSteps:(0!16), percSteps:(0!16) + ), + \futureBass: ( + kickSteps:[1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0], kickAmp:0.55, + kickFreq:50, kickPitchAmt:3.0, kickDecay:0.4, kickDrive:1.3, kickClick:0.20, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], snareAmp:0.5, + hatSteps:[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1], hatAmp:0.13, + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.35, + percSteps:(0!16) + ), + \deepHouse: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.5, + kickFreq:48, kickPitchAmt:2.5, kickDecay:0.40, kickDrive:1.2, kickClick:0.10, + hatSteps:[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0], hatAmp:0.12, + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.30, + snareSteps:(0!16), percSteps:(0!16) + ), + \techHouse: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.55, + kickFreq:52, kickPitchAmt:3.0, kickDecay:0.30, kickDrive:1.3, kickClick:0.18, + hatSteps:[0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1], hatAmp:0.13, + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.35, + snareSteps:(0!16), + percInst:\rim, percSteps:[0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1], percAmp:0.20 + ), + \progHouse: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.5, + kickFreq:50, kickPitchAmt:2.8, kickDecay:0.35, kickDrive:1.2, kickClick:0.15, + hatSteps:[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0], hatAmp:0.14, + clapSteps:[0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], clapAmp:0.32, + snareSteps:(0!16), percSteps:(0!16) + ), + \tribalTechno: ( + kickSteps:[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0], kickAmp:0.55, + kickFreq:54, kickPitchAmt:3.0, kickDecay:0.30, kickDrive:1.4, kickClick:0.18, + hatSteps:[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0], hatAmp:0.10, + snareSteps:(0!16), clapSteps:(0!16), + percInst:\tom, tomFreq:90, + percSteps:[1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0], percAmp:0.35 + ), + \industrialV2: ( + kickSteps:[1,0,0,0,1,0,0,1,1,0,0,0,1,0,1,0], kickAmp:0.6, + kickFreq:62, kickPitchAmt:5.0, kickDecay:0.25, kickDrive:3.5, kickClick:0.40, + hatSteps:[1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1], hatAmp:0.12, + snareSteps:[0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,1], snareAmp:0.55, + clapSteps:(0!16), + percInst:\rim, percSteps:[1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1], percAmp:0.4 + ), + \breakcore: ( + kickSteps:[1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1], kickAmp:0.6, + kickFreq:60, kickPitchAmt:3.0, kickDecay:0.12, kickDrive:2.0, kickClick:0.5, + hatSteps:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], hatAmp:0.13, + snareSteps:[0,1,0,1,1,0,1,0,0,1,1,0,1,1,0,1], snareAmp:0.55, + clapSteps:(0!16), percSteps:(0!16) + ), + \footwork: ( + kickSteps:[1,0,0,1,1,0,0,0,1,0,1,1,0,0,1,0], kickAmp:0.55, + kickFreq:42, kickPitchAmt:2.4, kickDecay:0.5, kickDrive:1.3, kickClick:0.10, + hatSteps:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], hatAmp:0.10, + clapSteps:[0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0], clapAmp:0.32, + snareSteps:(0!16), + percInst:\rim, percSteps:[0,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1], percAmp:0.22 + ), + \idm: ( + kickSteps:[1,0,1,0,0,1,0,1,1,0,0,1,0,1,0,0], kickAmp:0.5, + kickFreq:55, kickPitchAmt:3.0, kickDecay:0.20, kickDrive:1.5, kickClick:0.30, + hatSteps:[1,0,1,1,0,1,0,1,1,1,0,1,0,1,1,0], hatAmp:0.12, + snareSteps:[0,0,1,0,1,0,0,1,0,0,1,0,1,0,1,0], snareAmp:0.45, + clapSteps:(0!16), percSteps:(0!16) + ), + \glitchHop: ( + kickSteps:[1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0], kickAmp:0.55, + kickFreq:50, kickPitchAmt:2.8, kickDecay:0.32, kickDrive:1.3, kickClick:0.20, + hatSteps:[1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,0], hatAmp:0.11, + snareSteps:[0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0], snareAmp:0.45, + clapSteps:(0!16), + percInst:\rim, percSteps:[0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0], percAmp:0.18 + ) +); + +// --- helper interne : applique un Event de variables sur env -------- +// Appele directement via [\key] (pas via pseudo-method), donc pas de self. +~p[\applyVars] = { |vars| + vars.keysValuesDo { |k, v| currentEnvironment[k] = v }; + ~reload !? { ~reload.value }; +}; + +// --- API kit / genre / kick (appelees via ~p[\key].(args)) ---------- +~p[\kit] = { |name| + var k = ~p[\kits][name]; + if (k.isNil) { + ("[p.kit] kit '" ++ name ++ "' inconnu. Liste : " + ++ ~p[\kits].keys.asArray.sort).postln; + } { + ~p[\applyVars].(k); + ("[p.kit] " ++ name).postln; + }; +}; + +~p[\genre] = { |name| + var g = ~p[\genres][name]; + if (g.isNil) { + ("[p.genre] genre '" ++ name ++ "' inconnu. Liste : " + ++ ~p[\genres].keys.asArray.sort).postln; + } { + ~p[\applyVars].(g); + ("[p.genre] " ++ name).postln; + }; +}; + +~p[\kick] = { |name| + if (~k.notNil) { + if (name.isInteger) { ~k[\pat].(name) } { ~k[\go].(name) }; + } { + "[p.kick] kicks.scd non charge".postln; + }; +}; + +// --- HAT presets ---------------------------------------------------- +~p[\hatPresets] = ( + \off: (0!16), + \four: [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], // 2 & 4 (kick 4/4) + \off2: [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0], // offbeat 8th + \eighth: [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0], // 8ths + \sixteen:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], // 16ths + \shuffle:[1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,0] // shuffle +); +~p[\hat] = { |name = \off2| + var h = ~p[\hatPresets][name]; + if (h.isNil) { + ("[p.hat] inconnu : " ++ ~p[\hatPresets].keys.asArray.sort).postln; + } { + ~hatSteps = h; ~reload !? { ~reload.value }; + ("[p.hat] " ++ name).postln; + }; +}; + +// --- SNARE presets -------------------------------------------------- +~p[\snarePresets] = ( + \off: (0!16), + \two4: [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], + \roll: [0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1], + \ghost: [0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1] +); +~p[\snare] = { |name = \two4| + var s = ~p[\snarePresets][name]; + if (s.isNil) { + ("[p.snare] inconnu : " ++ ~p[\snarePresets].keys.asArray.sort).postln; + } { + ~snareSteps = s; ~reload !? { ~reload.value }; + ("[p.snare] " ++ name).postln; + }; +}; + +// --- CLAP presets --------------------------------------------------- +~p[\clapPresets] = ( + \off: (0!16), + \two4: [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0], + \offbeat: [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0], + \dub: [0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1], + \trance: [0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0] +); +~p[\clap] = { |name = \two4| + var c = ~p[\clapPresets][name]; + if (c.isNil) { + ("[p.clap] inconnu : " ++ ~p[\clapPresets].keys.asArray.sort).postln; + } { + ~clapSteps = c; ~reload !? { ~reload.value }; + ("[p.clap] " ++ name).postln; + }; +}; + +// --- PERC presets (steps + percInst) ------------------------------- +~p[\percPresets] = ( + \off: ( steps:(0!16), inst: \rim ), + \rim: ( steps:[0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0], inst: \rim ), + \tom: ( steps:[1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0], inst: \tom ), + \cowbell:( steps:[0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0], inst: \cowbell ), + \openHat:( steps:[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0], inst: \openHat ) +); +~p[\perc] = { |name = \rim| + var pp = ~p[\percPresets][name]; + if (pp.isNil) { + ("[p.perc] inconnu : " ++ ~p[\percPresets].keys.asArray.sort).postln; + } { + ~percSteps = pp[\steps]; ~percInst = pp[\inst]; + ~reload !? { ~reload.value }; + ("[p.perc] " ++ name ++ " (inst=" ++ pp[\inst] ++ ")").postln; + }; +}; + +// --- LISTE ---------------------------------------------------------- +~p[\list] = { + "=== ~p -- RHYTHM PRESETS ===".postln; + " kits : ".post; ~p[\kits].keys.asArray.sort.postln; + " genres : ".post; ~p[\genres].keys.asArray.sort.postln; + " hat : ".post; ~p[\hatPresets].keys.asArray.sort.postln; + " snare : ".post; ~p[\snarePresets].keys.asArray.sort.postln; + " clap : ".post; ~p[\clapPresets].keys.asArray.sort.postln; + " perc : ".post; ~p[\percPresets].keys.asArray.sort.postln; + " USAGE : ~pKit.(\\techno) | ~pGenre.(\\hardTechno) | ~pHat.(\\eighth)".postln; +}; + +// --- API utilisateur : variables d'env top-level -------------------- +~pKit = { |name| ~p[\kit].(name) }; +~pGenre = { |name| ~p[\genre].(name) }; +~pKick = { |name| ~p[\kick].(name) }; +~pHat = { |name = \off2| ~p[\hat].(name) }; +~pSnare = { |name = \two4| ~p[\snare].(name) }; +~pClap = { |name = \two4| ~p[\clap].(name) }; +~pPerc = { |name = \rim| ~p[\perc].(name) }; +~pList = { ~p[\list].() }; + +"=== ~p pret -- ~pKit.(\\techno) | ~pGenre.(\\hardTechno) | ~pList.() ===".postln; +) + + + +// ===================================================================== +// EXEMPLES (Cmd+Entree) +// ===================================================================== + +// --- KITS complets --- +// ( ~pKit.(\techno); ) +// ( ~pKit.(\dubstep); ) +// ( ~pKit.(\dnb); ) +// ( ~pKit.(\trap); ) +// ( ~pKit.(\house); ) +// ( ~pKit.(\hardstyle); ) +// ( ~pKit.(\jungle); ) +// ( ~pKit.(\garage); ) +// ( ~pKit.(\trap808); ) +// ( ~pKit.(\phonk); ) +// ( ~pKit.(\footwork); ) +// ( ~pKit.(\industrial); ) +// ( ~pKit.(\hardcore); ) +// ( ~pKit.(\detroitDeep); ) +// ( ~pKit.(\lofiHipHop); ) +// ( ~pKit.(\tribalWorld); ) + +// --- GENRES rythmiques --- +// ( ~pGenre.(\hardTechno); ) +// ( ~pGenre.(\acidHouse); ) +// ( ~pGenre.(\trance138); ) +// ( ~pGenre.(\psyTrance); ) +// ( ~pGenre.(\hardstyle); ) +// ( ~pGenre.(\handsUp); ) +// ( ~pGenre.(\liquidDnB); ) +// ( ~pGenre.(\neurofunk); ) +// ( ~pGenre.(\jungle165); ) +// ( ~pGenre.(\dnbJumpup); ) +// ( ~pGenre.(\futureBass); ) +// ( ~pGenre.(\deepHouse); ) +// ( ~pGenre.(\techHouse); ) +// ( ~pGenre.(\progHouse); ) +// ( ~pGenre.(\tribalTechno); ) +// ( ~pGenre.(\industrialV2); ) +// ( ~pGenre.(\breakcore); ) +// ( ~pGenre.(\footwork); ) +// ( ~pGenre.(\idm); ) +// ( ~pGenre.(\glitchHop); ) + +// --- KICK seul (raccourci kicks.scd) --- +// ( ~pKick.(\techno); ) +// ( ~pKick.(7); ) + +// --- composants individuels --- +// ( ~pHat.(\eighth); ) +// ( ~pHat.(\sixteen); ) +// ( ~pHat.(\off); ) +// ( ~pSnare.(\two4); ) +// ( ~pSnare.(\ghost); ) +// ( ~pClap.(\trance); ) +// ( ~pClap.(\off); ) +// ( ~pPerc.(\rim); ) +// ( ~pPerc.(\tom); ) + +// --- liste --- +// ( ~pList.(); ) diff --git a/sound_algo/live/scenes.scd b/sound_algo/live/scenes.scd new file mode 100644 index 0000000..76db1d3 --- /dev/null +++ b/sound_algo/live/scenes.scd @@ -0,0 +1,144 @@ +// ===================================================================== +// scenes.scd -- Save / Recall scenes (snapshot etat global) +// +// Capture l'etat des variables (~kickAmp, ~melodyNotes, ~melodyInst, etc.) +// dans un dictionnaire. Recall = restaure tout + reload Pdef. +// +// USAGE : +// 1. Cmd+Entree sur SETUP (charge les helpers) +// 2. Pendant qu'une track tourne, Cmd+Entree sur SAVE -> nom au choix +// 3. Plus tard, Cmd+Entree sur RECALL -> reapplique tout +// ===================================================================== + + +// --- SETUP -- definit ~scenes (Dictionary global) + helpers -------- +( +~scenes = ~scenes ?? { Dictionary.new }; + +// Liste des cles d'etat a snapshotter +~sceneKeys = [ + \bpm, + \kickSteps, \kickAmp, \kickFreq, \kickPitchAmt, \kickDecay, \kickDrive, \kickClick, + \hatSteps, \hatAmp, + \snareSteps, \snareAmp, \snareFreq, \snareNoiseAmt, \snareDecay, + \clapSteps, \clapAmp, + \percSteps, \percAmp, \percInst, \tomFreq, \cowbellFreq, + \acidNotes, \acidAccents, \acidSlides, + \acidCutoff, \acidRq, \acidCutoffEnv, \acidDrive, \acidAmp, + \melodyNotes, \melodyInst, \melodyBoost, + \melodyCutoff, \melodyRq, \melodyAmp, \melodyDrive, + \melodyAttack, \melodyRelease, + \melodySawAmt, \melodyDetune, + \melodyWobbleRate, \melodyWobbleDepth, \melodyWobbleShape, \melodySubAmt, + \harmonyInst, \harmonyNotes, \harmonyAmp, \harmonyDur, + \harmonyCutoff, \harmonyRq, \harmonyAttack, \harmonyDecay, + \harmonySustain, \harmonyRelease, \harmonyDrive, + \harmonySawAmt, \harmonyDetune, + \acidScAmt, \leadScAmt, \kickScShape, +]; + +// Sauvegarde l'etat courant sous un nom +~saveScene = { |name| + var scene = Dictionary.new; + ~sceneKeys.do { |k| + var val = currentEnvironment[k]; + if (val.notNil) { scene.put(k, val) }; + }; + scene.put(\bpm, TempoClock.default.tempo * 60); + ~scenes.put(name, scene); + ("[scene saved] " ++ name ++ " -- " ++ scene.size ++ " keys").postln; +}; + +// Recharge un scene par nom +~loadScene = { |name| + var scene = ~scenes[name]; + if (scene.isNil) { + ("!! scene '" ++ name ++ "' inexistante. Disponibles : " ++ + ~scenes.keys.asArray).postln; + } { + scene.keysValuesDo { |k, v| + if (k == \bpm) { + TempoClock.default.tempo = v / 60; + } { + currentEnvironment.put(k, v); + }; + }; + ~reload.value; + ("[scene loaded] " ++ name).postln; + }; +}; + +// Liste des scenes +~listScenes = { + "=== SCENES ===".postln; + if (~scenes.size == 0) { + " (aucune scene sauvegardee)".postln; + } { + ~scenes.keysValuesDo { |k, v| + (" " ++ k ++ " (" ++ v.size ++ " keys)").postln; + }; + }; +}; + +// Supprime un scene +~deleteScene = { |name| + if (~scenes.includesKey(name)) { + ~scenes.removeAt(name); + ("[scene deleted] " ++ name).postln; + } { ("scene '" ++ name ++ "' inexistante").postln }; +}; + +// Sauvegarde toutes les scenes sur disque (en JSON-like) +~saveScenesToDisk = { |path| + var p = path ?? { ~base ++ "scenes_saved.scd" }; + var f = File(p, "w"); + f.write("// Scenes sauvegardees " ++ Date.localtime.asString ++ "\n"); + f.write("(\n~scenes = ~scenes ?? { Dictionary.new };\n"); + ~scenes.keysValuesDo { |name, scene| + f.write("~scenes.put('" ++ name ++ "', Dictionary[\n"); + scene.keysValuesDo { |k, v| + f.write(" '" ++ k ++ "' -> " ++ v.asCompileString ++ ",\n"); + }; + f.write("]);\n"); + }; + f.write(")\n"); + f.close; + ("[scenes saved to] " ++ p).postln; +}; + +// Recharge depuis disque +~loadScenesFromDisk = { |path| + var p = path ?? { ~base ++ "scenes_saved.scd" }; + if (File.exists(p)) { + p.load; + ("[scenes loaded from] " ++ p).postln; + } { ("Pas de fichier " ++ p).postln }; +}; + +"=== ~saveScene / ~loadScene / ~listScenes / ~deleteScene prets ===".postln; +) + + +// ===================================================================== +// EXEMPLES D'USAGE -- Cmd+Entree pendant qu'une track tourne +// ===================================================================== + +// --- Sauvegarder l'etat courant ----------------------------------- +( ~saveScene.(\drop1); ) +( ~saveScene.(\verseA); ) +( ~saveScene.(\breakdown); ) +( ~saveScene.(\dropFinal); ) +( ~saveScene.(\favorite); ) + +// --- Rappeler une scene ------------------------------------------- +( ~loadScene.(\drop1); ) +( ~loadScene.(\breakdown); ) +( ~loadScene.(\favorite); ) + +// --- Lister scenes / supprimer ------------------------------------ +( ~listScenes.value; ) +( ~deleteScene.(\favorite); ) + +// --- Persistence sur disque --------------------------------------- +( ~saveScenesToDisk.value; ) // sauvegarde dans scenes_saved.scd +( ~loadScenesFromDisk.value; ) // recharge depuis scenes_saved.scd diff --git a/sound_algo/live/tweaks.scd b/sound_algo/live/tweaks.scd new file mode 100644 index 0000000..033d2ba --- /dev/null +++ b/sound_algo/live/tweaks.scd @@ -0,0 +1,135 @@ +// ===================================================================== +// tweaks.scd -- Tweaks live (cutoff, drive, mute, tempo, sidechain, +// wobble dubstep, sub, melody boost, randomize, sweep) +// +// PREREQUIS : engine.scd evalue + PLAY actif (ou une track en cours). +// USAGE : Cmd+Entree sur la ligne du tweak. +// ===================================================================== + +// 6. TWEAKS LIVE -- modifie une seule chose +// ===================================================================== + +// --- Cutoff acid ---------------------------------------- +( ~acidCutoff = 200; ~reload.value; ) +( ~acidCutoff = 600; ~reload.value; ) +( ~acidCutoff = 1200; ~reload.value; ) +( ~acidCutoff = 2500; ~reload.value; ) + +// --- Resonance acid ------------------------------------- +( ~acidRq = 0.05; ~reload.value; ) // EXTREME +( ~acidRq = 0.15; ~reload.value; ) // normal +( ~acidRq = 0.4; ~reload.value; ) // doux + +// --- Drive acid ----------------------------------------- +( ~acidDrive = 1.0; ~reload.value; ) +( ~acidDrive = 2.5; ~reload.value; ) +( ~acidDrive = 4.5; ~reload.value; ) + +// --- Tempo en live -------------------------------------- +( TempoClock.default.tempo = 110/60; ) +( TempoClock.default.tempo = 132/60; ) +( TempoClock.default.tempo = 145/60; ) + +// --- Boost global du volume melodie (multiplicateur) ---- +( ~melodyBoost = 1.0; ~reload.value; "melody boost x1.0".postln; ) +( ~melodyBoost = 1.6; ~reload.value; "melody boost x1.6 (defaut)".postln; ) +( ~melodyBoost = 2.2; ~reload.value; "melody boost x2.2 (en avant)".postln; ) +( ~melodyBoost = 3.0; ~reload.value; "melody boost x3.0 (devant tout)".postln; ) + +// --- Niveau du kick (le rendre plus / moins present) --- +( ~kickAmp = 0.3; ~reload.value; ) // discret +( ~kickAmp = 0.5; ~reload.value; ) // normal +( ~kickAmp = 0.7; ~reload.value; ) // fort + +// --- Mute / Unmute par piste --------------------------- +( ~kickAmp = 0; ~reload.value; ) +( ~kickAmp = 0.5; ~reload.value; ) +( ~hatAmp = 0; ~reload.value; ) +( ~hatAmp = 0.18; ~reload.value; ) +( ~acidAmp = 0; ~reload.value; ) +( ~acidAmp = 0.32; ~reload.value; ) +( ~melodyAmp = 0; ~reload.value; ) +( ~melodyAmp = 0.16; ~reload.value; ) + +// --- Sidechain : amount de pompage par voix -------------- +( ~acidScAmt = 0; ~reload.value; ) // pas de duck acid +( ~acidScAmt = 0.4; ~reload.value; ) // duck leger +( ~acidScAmt = 0.7; ~reload.value; ) // duck normal (default) +( ~acidScAmt = 0.95; ~reload.value; ) // duck extreme (acid disparait sur kick) +( ~leadScAmt = 0; ~reload.value; ) // pas de duck lead +( ~leadScAmt = 0.5; ~reload.value; ) // duck normal (default) +( ~leadScAmt = 0.85; ~reload.value; ) // duck fort + +// --- Sidechain : duree de la queue de duck --------------- +( ~kickScShape = 0.08; ~reload.value; ) // tres court (peu perceptible) +( ~kickScShape = 0.18; ~reload.value; ) // normal +( ~kickScShape = 0.35; ~reload.value; ) // long (style french touch) + +// --- ALEATOIRE -- regenere les patterns sans toucher au tempo -------- +( ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); ~reload.value; "melody random".postln; ) +( ~melodyNotes = ~genMelody.(0.35, ~scaleMinor); ~reload.value; "melody sparse".postln; ) +( ~acidNotes = ~genAcidNotes.value; + ~acidAccents = ~genAcidAccents.(0.4); + ~acidSlides = ~genAcidSlides.(0.3); + ~reload.value; "acid random".postln; ) +( ~kickSteps = ~genKickPattern.(0.3); ~reload.value; "kick random ghosts".postln; ) +( ~hatSteps = ~genKickPattern.(0.6); ~reload.value; "hat random".postln; ) + +// --- TOUT random d'un coup ----------------------------------------- +( +~melodyNotes = ~genMelody.(0.55); +~acidNotes = ~genAcidNotes.value; +~acidAccents = ~genAcidAccents.(0.4); +~acidSlides = ~genAcidSlides.(0.3); +~kickSteps = ~genKickPattern.(0.25); +~hatSteps = ~genKickPattern.(0.5); +~acidCutoff = rrand(500, 2000); +~acidRq = rrand(0.08, 0.25); +~melodyCutoff = rrand(1500, 3500); +~reload.value; +"=== TOUT randomise ===".postln; +) + +// --- Boucle de tweaks aleatoires (toutes les 4s) ------------------- +( +~randomLoop !? { ~randomLoop.stop }; +~randomLoop = Routine({ + inf.do { + ~randomTweak.(0.35); + 4.wait; + }; +}).play; +"random tweaks ON".postln; +) +( ~randomLoop !? { ~randomLoop.stop }; "random tweaks OFF".postln; ) + +// --- Filtre sweep auto sur l'acid (Routine 8s) ---------- +( +~filterSweep !? { ~filterSweep.stop }; +~filterSweep = Routine({ + inf.do { |k| + var x = ((k / 32) * 2 * pi).sin.abs; + ~acidCutoff = 200 + (x * 2300); + ~reload.value; + 0.25.wait; + }; +}).play; +"sweep auto demarre".postln; +) +( ~filterSweep !? { ~filterSweep.stop }; "sweep stoppe".postln; ) + + + +// ===================================================================== + + +// ===================================================================== +// RECORDING -- enregistre la sortie audio dans ~/Music/SuperCollider Recordings/ +// ===================================================================== +( s.record; "=== RECORDING ===".postln; ) +( s.stopRecording; "=== RECORD STOP ===".postln; ) +( s.recordPaused = true; "=== PAUSE record ===".postln; ) +( s.recordPaused = false; "=== RESUME record ===".postln; ) + +// Path du recording courant +( s.recHeaderFormat = "WAV"; s.recSampleFormat = "int24"; "format WAV 24bit".postln; ) diff --git a/sound_algo/palette/CLAUDE.md b/sound_algo/palette/CLAUDE.md new file mode 100644 index 0000000..8677613 --- /dev/null +++ b/sound_algo/palette/CLAUDE.md @@ -0,0 +1,43 @@ +# palette/ — Generators & banques + +Source de verite pour scales, melodies, harmonies, rythmes, timbres, +chords, FX genre. Charge automatiquement par `00_load.scd`. + +## Structure + +| Sous-dossier | Charge via | +| --- | --- | +| `palette/scales.scd` | direct (avant melodies + harmonics) | +| `palette/melodies/` | `melodies/index.scd` | +| `palette/harmonics/` | `harmonics/index.scd` | +| `palette/rhythm/` | `rhythm/fills.scd` (auto), reste manuel | +| `palette/{timbres,styles,chords_progressions,fx_genre}.scd` | manuel | + +## Conventions de nommage + +- Scales : `~scaleMinor`, `~scaleHijaz`, `~scaleVietnamMaj`, ... + (toutes basees sur C/60, octaves +/-) +- Melodies : `~m{N}` (32 pas), `~ml{N}` (64), `~mxl{N}` (96), `~mepic{N}` (128) +- Generators : verb-first (`~genMelody`, `~mutate`, `~enableHarmony`) +- Banques exposees via `live/melodies.scd` et `live/patterns.scd` + +## Patterns generators + +```supercollider +~genMelody = { |density = 0.55, scale, len = 32| + var s = scale ?? { ~scaleMinorPent }; + len.collect { if (density.coin) { s.choose } { 0 } }; +}; +``` + +- Generators retournent toujours un Array de notes MIDI (0 = silence) +- Density = 0..1 (0 = vide, 1 = plein) +- Scale par defaut via `??` fallback, jamais nil + +## Anti-patterns + +- Ne pas dupliquer une scale qui existe deja dans `scales.scd` +- Ne pas creer de generator qui mute `~xxx` directement -- retourner la valeur +- Ne pas indexer une scale hors bornes (utiliser `.wrapAt` ou `.choose`) +- Ne pas creer de fichier `index.scd` qui charge en dehors de `palette/` +- Ne pas charger `palette/melodies/*` avant `palette/scales.scd` diff --git a/sound_algo/palette/chords_progressions.scd b/sound_algo/palette/chords_progressions.scd new file mode 100644 index 0000000..cc25d8e --- /dev/null +++ b/sound_algo/palette/chords_progressions.scd @@ -0,0 +1,533 @@ +// ===================================================================== +// chords_progressions.scd -- Progressions d'accords authentiques +// (issus de la deep recherche) +// +// Cm = i, Eb = III, Ab = VI, Bb = VII (degres mineur naturel) +// ===================================================================== + +// --- Trance i-VII-VI-VII (Am-G-F-G classique) --------------------- +( +~melodyNotes = [ + 57, 0, 60, 0, 64, 0, 67, 0, // Am + 55, 0, 59, 0, 62, 0, 67, 0, // G + 53, 0, 57, 0, 60, 0, 65, 0, // F + 55, 0, 59, 0, 62, 0, 67, 0 // G +]; +~reload.value; "trance i-VII-VI-VII".postln; +) + +// --- Detroit Cm-Eb-Ab-Bb (mineur naturel, soulful) --------------- +( +~melodyNotes = [ + 60, 0, 63, 0, 67, 0, 70, 0, // Cm + 63, 0, 65, 0, 67, 0, 72, 0, // Eb + 56, 0, 60, 0, 63, 0, 68, 0, // Ab (b6) + 58, 0, 62, 0, 65, 0, 70, 0 // Bb (b7) +]; +~reload.value; "detroit Cm-Eb-Ab-Bb".postln; +) + +// --- Vocal trance i-VI-III-VII (Am-F-C-G emotional) --------------- +( +~melodyNotes = [ + 57, 0, 60, 0, 64, 0, 0, 0, // Am + 53, 0, 57, 0, 60, 0, 0, 0, // F + 60, 0, 64, 0, 67, 0, 0, 0, // C + 55, 0, 59, 0, 62, 0, 0, 0 // G +]; +~reload.value; "vocal trance i-VI-III-VII".postln; +) + +// --- Synthwave i-bVI-bVII-i (Am-F-G-Am 80s) ---------------------- +( +~melodyNotes = [ + 57, 0, 60, 64, 60, 0, 64, 67, // Am + 53, 0, 57, 60, 57, 0, 60, 65, // F + 55, 0, 59, 62, 59, 0, 62, 67, // G + 57, 0, 60, 64, 60, 64, 67, 72 // Am +]; +~reload.value; "synthwave i-bVI-bVII-i".postln; +) + +// --- Phonk i-bVII-bVI dark loop ---------------------------------- +( +~melodyNotes = [ + 48, 0, 0, 0, 51, 0, 0, 0, // Cm root + 46, 0, 0, 0, 50, 0, 0, 0, // Bb (bVII) + 44, 0, 0, 0, 48, 0, 0, 0, // Ab (bVI) + 46, 0, 0, 0, 51, 0, 0, 0 // Bb +]; +~reload.value; "phonk dark i-bVII-bVI".postln; +) + +// --- Dubstep mineur harmonique (Cm avec B natural) --------------- +( +~melodyNotes = [ + 36, 0, 0, 0, 36, 0, 39, 0, // C bass + 36, 0, 0, 0, 41, 0, 0, 0, // F + 36, 0, 0, 0, 39, 0, 41, 0, // C-Eb-F + 47, 0, 0, 0, 48, 0, 0, 0 // B-C (lead tone) +]; +~reload.value; "dubstep harmonic minor".postln; +) + +// --- Acid trance phrygien dominant (E phryigien) ----------------- +( +~melodyNotes = [ + 52, 53, 56, 59, 60, 59, 56, 53, // E F G# B C + 52, 53, 56, 59, 60, 64, 60, 59, + 52, 56, 59, 60, 64, 67, 64, 60, + 52, 53, 56, 59, 60, 59, 56, 52 +]; +~reload.value; "acid phrygien dominant".postln; +) + +// --- Drum'n'Bass liquid (Em mélodique) --------------------------- +( +~melodyNotes = [ + 64, 0, 67, 0, 71, 0, 67, 64, // Em + 62, 0, 65, 0, 69, 0, 67, 0, // D + 60, 0, 64, 0, 67, 0, 71, 0, // C + 59, 0, 62, 0, 67, 0, 71, 0 // B +]; +~reload.value; "liquid dnb Em melodic".postln; +) + +// --- Detroit Cm7 jazz comping ------------------------------------ +( +~melodyNotes = [ + 60, 63, 67, 70, 67, 63, 60, 67, // Cm7 + 55, 60, 63, 65, 60, 55, 0, 0, + 58, 62, 65, 68, 65, 62, 58, 65, // Bb7 + 60, 63, 67, 70, 0, 0, 0, 0 +]; +~reload.value; "detroit Cm7 jazz".postln; +) + +// --- Asian pentatonique majeure (Do Re Mi Sol La) ---------------- +( +~melodyNotes = [ + 60, 0, 62, 0, 65, 0, 67, 0, + 69, 0, 67, 0, 65, 0, 62, 0, + 72, 0, 69, 0, 67, 0, 65, 0, + 62, 0, 60, 0, 65, 0, 67, 0 +]; +~reload.value; "asian penta majeure".postln; +) + +// --- Hirajoshi (gamme japonaise 1, 2, b3, 5, b6) ----------------- +( +~melodyNotes = [ + 60, 0, 62, 63, 0, 67, 68, 0, + 72, 0, 68, 67, 63, 62, 60, 0, + 60, 0, 62, 63, 67, 68, 72, 0, + 74, 75, 72, 68, 67, 63, 62, 60 +]; +~reload.value; "hirajoshi japonais".postln; +) + +// --- Industrial : atonal/cluster (chromatique sombre) ----------- +( +~melodyNotes = [ + 36, 37, 0, 39, 36, 0, 38, 37, + 36, 37, 38, 40, 0, 39, 37, 36, + 36, 0, 39, 0, 41, 0, 39, 0, + 36, 37, 0, 36, 0, 38, 36, 0 +]; +~reload.value; "industrial atonal cluster".postln; +) + +// --- Drone doom : quintes ouvertes (power chords) --------------- +( +~melodyNotes = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 43, 0, 0, 0, 0, 0, 0, 0, // 5te + 36, 0, 0, 0, 0, 0, 0, 0, + 41, 0, 0, 0, 0, 0, 0, 0 // b6 +]; +~reload.value; "drone doom power chords".postln; +) + +// --- Tribal : modal hijaz (gamme arabe) ------------------------- +( +~melodyNotes = [ + 60, 0, 61, 0, 64, 0, 65, 0, // 1, b2, 3, 4 + 67, 0, 68, 0, 71, 0, 72, 0, // 5, b6, 7, 1 + 72, 0, 71, 0, 68, 0, 67, 0, + 65, 0, 64, 0, 61, 0, 60, 0 +]; +~reload.value; "tribal hijaz arabe".postln; +) + +// --- Glitch IDM : intervalles dissonants -------------------------- +( +~melodyNotes = [ + 60, 73, 67, 0, 72, 65, 0, 71, + 63, 0, 76, 67, 0, 60, 73, 0, + 65, 0, 72, 79, 65, 0, 71, 60, + 73, 67, 0, 80, 64, 71, 65, 0 +]; +~reload.value; "glitch IDM dissonant".postln; +) + +// --- Hardcore : mineur harmonique distordu ------------------------ +( +~melodyNotes = [ + 36, 0, 0, 0, 39, 0, 0, 0, + 41, 0, 0, 0, 47, 0, 0, 0, // 7e majeure caracteristique mineur harmonique + 48, 0, 0, 0, 47, 0, 41, 0, + 39, 0, 0, 0, 36, 0, 0, 0 +]; +~reload.value; "hardcore mineur harmonique".postln; +) + + + +// ===================================================================== +// ===== TABLEAUX D'ACCORDS (~progXxx) ============================== +// +// Format compact : ~progXxx = [[c1n1, c1n2, c1n3], [c2n1, c2n2, c2n3], ...] +// chaque sous-array = 1 accord (3 ou 4 notes MIDI). +// A utiliser depuis melodies/harmony helpers ou pour generer +// ~melodyNotes/~harmonyNotes en deroulant les accords. +// +// Helper : ~chordsToMelody.(progArr, stepsPerChord) deroule un tableau +// d'accords en ligne melodique (top note de chaque accord, espacee). +// ===================================================================== +( +// --- Helper : deroule progression en ligne melodique 32 steps --------- +~chordsToMelody = { |prog, stepsPerChord = 8| + var n = prog.size; + var notes = Array.fill(n * stepsPerChord, { 0 }); + prog.do { |chord, ci| + // place tonique sur premier step, top sur step central + notes[ci * stepsPerChord] = chord[0]; + if (chord.size > 1) { + notes[ci * stepsPerChord + (stepsPerChord/2).asInteger] = chord.last; + }; + }; + notes; +}; + +// --- Helper : deroule prog en harmonie (toutes notes empilees) ------- +~chordsToHarmony = { |prog, stepsPerChord = 8| + var n = prog.size; + var notes = Array.fill(n * stepsPerChord, { 0 }); + // mode simple : tonique de chaque accord en debut + prog.do { |chord, ci| + notes[ci * stepsPerChord] = chord[0]; + }; + notes; +}; + + + +// --- Jazz ii-V-I (en C : Dm7 G7 Cmaj7) ------------------------------- +~progIIVI = [ [62, 65, 69, 72], [55, 59, 62, 65], [60, 64, 67, 71] ]; + +// --- Rock/Blues I-IV-V (en C) --------------------------------------- +~progIIVV = [ [60, 64, 67], [65, 69, 72], [67, 71, 74] ]; + +// --- Pop I-V-vi-IV (en C) -- "axis of awesome" ---------------------- +~progPop = [ [60, 64, 67], [67, 71, 74], [69, 72, 76], [65, 69, 72] ]; + +// --- Sad pop vi-IV-I-V (en C) --------------------------------------- +~progSadPop = [ [69, 72, 76], [65, 69, 72], [60, 64, 67], [67, 71, 74] ]; + +// --- Epique mineur i-iv-VII-III (en Am) ----------------------------- +~progEpicMin = [ [57, 60, 64], [62, 65, 69], [67, 71, 74], [64, 67, 71] ]; + +// --- Andalouse i-VI-III-VII (en Am) --------------------------------- +~progAndalou = [ [57, 60, 64], [65, 69, 72], [60, 64, 67], [67, 71, 74] ]; + +// --- Rock mineur i-bVII-bVI-bVII (en Am) ---------------------------- +~progRockMin = [ [57, 60, 64], [55, 59, 62], [53, 57, 60], [55, 59, 62] ]; + +// --- Flamenco i-bVII-bVI-V (en Am) ---------------------------------- +~progFlamenco = [ [57, 60, 64], [55, 59, 62], [53, 57, 60], [52, 56, 59] ]; + +// --- Jazz turn-around I-vi-ii-V (en C) ------------------------------ +~progTurnArnd = [ [60, 64, 67, 71], [69, 72, 76, 79], [62, 65, 69, 72], [55, 59, 62, 65] ]; + +// --- Modal interchange (bIII, bVI, bVII en C major) ------------------ +~progModal = [ [60, 64, 67], [63, 67, 70], [68, 72, 75], [70, 74, 77] ]; + +// --- Tritone substitution (Dm7 - Db7 - Cmaj7) ------------------------ +~progTritone = [ [62, 65, 69, 72], [49, 53, 56, 59], [60, 64, 67, 71] ]; + +// --- Minor 7th progressions (Cm7-Fm7-Bb7-Ebmaj7) -------------------- +~progMin7 = [ [60, 63, 67, 70], [65, 68, 72, 75], [58, 62, 65, 68], [63, 67, 70, 74] ]; + +// --- Coltrane changes (B-D-Eb-Gb-G-Bb-B) augmente ------------------- +~progColtrane = [ [59, 63, 66], [50, 54, 57], [51, 55, 58], + [54, 58, 61], [55, 59, 62], [58, 62, 65], [59, 63, 66] ]; + +// --- Phrygien i-bII-bVII-bVI (en E phrygien) ------------------------ +~progPhrygien = [ [52, 55, 59], [53, 56, 60], [50, 53, 57], [48, 51, 55] ]; + +// --- Lydien I-II-vii (en C lydien) ---------------------------------- +~progLydien = [ [60, 64, 67], [62, 66, 69], [71, 74, 77] ]; + +// --- Dorien (i-IV en D dorien) -------------------------------------- +~progDorien = [ [62, 65, 69], [67, 71, 74] ]; + +// --- Hungarian minor (Am avec quartes augmentees -- D#) ------------- +~progHungar = [ [57, 60, 64], [62, 65, 68], [55, 58, 62], [57, 60, 64] ]; + +// --- Hijaz Arabic I-bII-iii-IV (en C hijaz) ------------------------- +~progHijaz = [ [60, 61, 64], [61, 64, 68], [64, 67, 71], [65, 69, 72] ]; + +// --- Vietnamese pentatonique (oan : C-Db-F-G-Ab) -------------------- +~progVietnam = [ [60, 65, 67], [61, 65, 68], [60, 67, 72], [60, 65, 67] ]; + +// --- Hirajoshi (gamme japonaise : 1-2-b3-5-b6) ----------------------- +~progHirajoshi = [ [60, 62, 63], [60, 67, 68], [62, 63, 67] ]; + +// --- Detroit techno standard i-bIII-bVI-bVII (en Am) ---------------- +~progDetroit = [ [57, 60, 64], [60, 63, 67], [65, 69, 72], [67, 71, 74] ]; + +// --- Trance i-VI-VII-i (en Am) -------------------------------------- +~progTrance = [ [57, 60, 64], [65, 69, 72], [67, 71, 74], [57, 60, 64] ]; + +// --- Drum'n'bass 2 chord vamp (Em-Cmaj7) ----------------------------- +~progDnB = [ [64, 67, 71], [60, 64, 67, 71] ]; + +// --- Dubstep wobble bass (1 accord drone Cm) ------------------------ +~progDubstep = [ [48, 51, 55] ]; + +// --- Synthwave I-V-vi-iii (en C) ------------------------------------ +~progSynthwave = [ [60, 64, 67], [67, 71, 74], [69, 72, 76], [64, 67, 71] ]; + +// --- Ambient drone (cluster Cmaj7add9) ------------------------------- +~progAmbient = [ [60, 62, 64, 67, 71] ]; + +"=== Progressions tabulaires (~progXxx) chargees ===".postln; +) + + + +// ===================================================================== +// ===== PROGRESSIONS AUTO-APPLICANTES (~melodyNotes 32 steps) ====== +// ===================================================================== + +// --- Jazz ii-V-I (Dm7-G7-Cmaj7) -- 8 steps par accord --------------- +( +~melodyNotes = [ + 62, 0, 65, 0, 69, 0, 72, 0, + 55, 0, 59, 0, 62, 0, 65, 0, + 60, 0, 64, 0, 67, 0, 71, 0, + 60, 0, 64, 0, 67, 0, 71, 0 +]; +~reload.value; "jazz ii-V-I".postln; +) + +// --- Rock/Blues I-IV-V (C-F-G) ------------------------------------- +( +~melodyNotes = [ + 60, 0, 64, 0, 67, 0, 60, 0, + 65, 0, 69, 0, 72, 0, 65, 0, + 67, 0, 71, 0, 74, 0, 67, 0, + 60, 0, 64, 0, 67, 0, 60, 0 +]; +~reload.value; "rock blues I-IV-V".postln; +) + +// --- Pop I-V-vi-IV (C-G-Am-F) -- "axis of awesome" ----------------- +( +~melodyNotes = [ + 60, 0, 64, 0, 67, 0, 0, 0, + 67, 0, 71, 0, 74, 0, 0, 0, + 60, 0, 64, 0, 67, 0, 60, 0, + 65, 0, 69, 0, 72, 0, 65, 0, + 67, 0, 71, 0, 74, 0, 67, 0, + 60, 0, 64, 0, 67, 0, 60, 0, + 69, 0, 72, 0, 76, 0, 0, 0, + 65, 0, 69, 0, 72, 0, 0, 0, + 69, 0, 72, 0, 76, 0, 0, 0, + 65, 0, 69, 0, 72, 0, 0, 0, + 60, 0, 64, 0, 67, 0, 0, 0, + 67, 0, 71, 0, 74, 0, 0, 0, + 60, 0, 64, 0, 67, 0, 60, 0, + 65, 0, 69, 0, 72, 0, 65, 0, + 67, 0, 71, 0, 74, 0, 67, 0, + 60, 0, 64, 0, 67, 0, 60, 0 +]; +~reload.value; "pop I-V-vi-IV".postln; +) + +// --- Sad pop vi-IV-I-V (Am-F-C-G) ---------------------------------- +( +~melodyNotes = [ + 69, 0, 72, 0, 76, 0, 0, 0, + 65, 0, 69, 0, 72, 0, 0, 0, + 60, 0, 64, 0, 67, 0, 0, 0, + 67, 0, 71, 0, 74, 0, 0, 0 +]; +~reload.value; "sad pop vi-IV-I-V".postln; +) + +// --- Epique mineur i-iv-VII-III (Am-Dm-G-C) ------------------------ +( +~melodyNotes = [ + 57, 0, 60, 0, 64, 0, 0, 0, + 62, 0, 65, 0, 69, 0, 0, 0, + 67, 0, 71, 0, 74, 0, 0, 0, + 64, 0, 67, 0, 71, 0, 0, 0 +]; +~reload.value; "epique mineur i-iv-VII-III".postln; +) + +// --- Andalouse i-VI-III-VII (Am-F-C-G) ----------------------------- +( +~melodyNotes = [ + 57, 0, 60, 0, 64, 0, 0, 0, + 65, 0, 69, 0, 72, 0, 0, 0, + 60, 0, 64, 0, 67, 0, 0, 0, + 67, 0, 71, 0, 74, 0, 0, 0 +]; +~reload.value; "andalouse i-VI-III-VII".postln; +) + +// --- Rock mineur i-bVII-bVI-bVII (Am-G-F-G) ------------------------ +( +~melodyNotes = [ + 57, 0, 60, 0, 64, 0, 0, 0, + 55, 0, 59, 0, 62, 0, 0, 0, + 53, 0, 57, 0, 60, 0, 0, 0, + 55, 0, 59, 0, 62, 0, 0, 0 +]; +~reload.value; "rock mineur i-bVII-bVI-bVII".postln; +) + +// --- Flamenco i-bVII-bVI-V (Am-G-F-E) ------------------------------ +( +~melodyNotes = [ + 57, 0, 60, 0, 64, 0, 0, 0, + 55, 0, 59, 0, 62, 0, 0, 0, + 53, 0, 57, 0, 60, 0, 0, 0, + 52, 0, 56, 0, 59, 0, 0, 0 +]; +~reload.value; "flamenco i-bVII-bVI-V".postln; +) + +// --- Jazz turn-around I-vi-ii-V (C-Am-Dm-G7) ----------------------- +( +~melodyNotes = [ + 60, 0, 64, 0, 67, 0, 71, 0, + 69, 0, 72, 0, 76, 0, 79, 0, + 62, 0, 65, 0, 69, 0, 72, 0, + 55, 0, 59, 0, 62, 0, 65, 0 +]; +~reload.value; "jazz turn-around I-vi-ii-V".postln; +) + +// --- Modal interchange (C-Eb-Ab-Bb -- emprunts mineur naturel) ----- +( +~melodyNotes = [ + 60, 0, 64, 0, 67, 0, 0, 0, + 63, 0, 67, 0, 70, 0, 0, 0, + 68, 0, 72, 0, 75, 0, 0, 0, + 70, 0, 74, 0, 77, 0, 0, 0 +]; +~reload.value; "modal interchange bIII-bVI-bVII".postln; +) + +// --- Tritone subst (Dm7-Db7-Cmaj7) --------------------------------- +( +~melodyNotes = [ + 62, 0, 65, 0, 69, 0, 72, 0, + 62, 0, 65, 0, 69, 0, 72, 0, + 49, 0, 53, 0, 56, 0, 59, 0, + 60, 0, 64, 0, 67, 0, 71, 0 +]; +~reload.value; "tritone substitution".postln; +) + +// --- Minor 7th progression (Cm7-Fm7-Bb7-Ebmaj7) -------------------- +( +~melodyNotes = [ + 60, 0, 63, 0, 67, 0, 70, 0, + 65, 0, 68, 0, 72, 0, 75, 0, + 58, 0, 62, 0, 65, 0, 68, 0, + 63, 0, 67, 0, 70, 0, 74, 0 +]; +~reload.value; "minor 7th progression".postln; +) + +// --- Coltrane changes (B-Eb-G augmente classique Giant Steps) ------ +( +~melodyNotes = [ + 59, 63, 66, 0, 50, 54, 57, 0, + 55, 59, 62, 0, 51, 55, 58, 0, + 54, 58, 61, 0, 59, 63, 66, 0, + 55, 59, 62, 0, 60, 64, 67, 0 +]; +~reload.value; "Coltrane changes".postln; +) + +// --- Phrygien i-bII-bVII-bVI (E-F-D-C en E phrygien) --------------- +( +~melodyNotes = [ + 52, 0, 55, 0, 59, 0, 0, 0, + 53, 0, 56, 0, 60, 0, 0, 0, + 50, 0, 53, 0, 57, 0, 0, 0, + 48, 0, 51, 0, 55, 0, 0, 0 +]; +~reload.value; "phrygien i-bII-bVII-bVI".postln; +) + +// --- Lydien I-II-vii (C-D-Bm en C lydien) -------------------------- +( +~melodyNotes = [ + 60, 0, 64, 0, 67, 0, 0, 0, + 62, 0, 66, 0, 69, 0, 0, 0, + 71, 0, 74, 0, 77, 0, 0, 0, + 60, 0, 64, 0, 67, 0, 0, 0 +]; +~reload.value; "lydien I-II-vii".postln; +) + +// --- Dorien (i-IV en D dorien : Dm-G) ------------------------------ +( +~melodyNotes = [ + 62, 0, 65, 0, 69, 0, 0, 0, + 67, 0, 71, 0, 74, 0, 0, 0, + 62, 0, 65, 0, 69, 0, 0, 0, + 67, 0, 71, 0, 74, 0, 0, 0 +]; +~reload.value; "dorien i-IV".postln; +) + +// --- Hungarian minor (Am avec D# quarte aug) ----------------------- +( +~melodyNotes = [ + 57, 0, 60, 0, 63, 0, 66, 0, // Am avec note hongroise + 62, 0, 65, 0, 68, 0, 0, 0, + 55, 0, 58, 0, 62, 0, 0, 0, + 57, 0, 60, 0, 64, 0, 0, 0 +]; +~reload.value; "hungarian minor".postln; +) + +// --- Hijaz Arabic I-bII-iii-IV (C-Db-Em-F) ------------------------- +( +~melodyNotes = [ + 60, 0, 61, 0, 64, 0, 0, 0, + 61, 0, 64, 0, 68, 0, 0, 0, + 64, 0, 67, 0, 71, 0, 0, 0, + 65, 0, 69, 0, 72, 0, 0, 0 +]; +~reload.value; "hijaz arabic I-bII-iii-IV".postln; +) + +// --- Vietnamese pentatonique oan ------------------------------------ +( +~melodyNotes = [ + 60, 0, 65, 0, 67, 0, 0, 0, + 61, 0, 65, 0, 68, 0, 0, 0, + 60, 0, 67, 0, 72, 0, 0, 0, + 65, 0, 67, 0, 60, 0, 0, 0 +]; +~reload.value; "vietnamese pentatonique".postln; +) + diff --git a/sound_algo/palette/fx.scd b/sound_algo/palette/fx.scd new file mode 100644 index 0000000..1ae442d --- /dev/null +++ b/sound_algo/palette/fx.scd @@ -0,0 +1,26 @@ +// ===================================================================== +// fx.scd +// FX oneshot : riser / sweep / impact / crash / vinyl +// +// PREREQUIS : engine.scd evalue. Cmd+Entree sur un bloc pour l'appliquer. +// ===================================================================== + +// ===================================================================== + +( Synth(\riser, [\dur, 4, \startCutoff, 200, \endCutoff, 8000, \amp, 0.25]); ) +( Synth(\riser, [\dur, 8, \startCutoff, 300, \endCutoff, 10000, \amp, 0.30]); ) +( Synth(\riser, [\dur, 16, \startCutoff, 400, \endCutoff, 12000, \amp, 0.35]); ) + +( Synth(\sweep, [\dur, 4, \startCutoff, 8000, \endCutoff, 200, \amp, 0.25]); ) + +( Synth(\impact, [\freq, 45, \decay, 1.5, \amp, 0.7]); ) +( Synth(\impact, [\freq, 35, \decay, 2.5, \amp, 0.8]); ) + +( Synth(\crash, [\decay, 2.0, \amp, 0.3]); ) +( Synth(\crash, [\decay, 4.0, \amp, 0.4]); ) + +( ~vinyl !? { ~vinyl.free }; ~vinyl = Synth(\vinyl, [\amp, 0.05]); "vinyl ON".postln; ) +( ~vinyl !? { ~vinyl.free; ~vinyl = nil }; "vinyl OFF".postln; ) + + + diff --git a/sound_algo/palette/fx_genre.scd b/sound_algo/palette/fx_genre.scd new file mode 100644 index 0000000..045fca8 --- /dev/null +++ b/sound_algo/palette/fx_genre.scd @@ -0,0 +1,200 @@ +// ===================================================================== +// fx_genre.scd -- FX signature par genre +// (combinaisons riser+impact+sweep+gong+scratch) +// +// Chaque preset = une transition prete a l'emploi. +// Cmd+Entree pour declencher. +// ===================================================================== + +// --- TRANCE BUILD-UP -- snare roll + riser long + impact --------- +( +Synth(\riser, [\dur, 16, \startCutoff, 400, \endCutoff, 12000, \amp, 0.35]); +~snareFill.(32, 16, 0.2, 0.55); +fork { + 16.wait; + Synth(\impact, [\freq, 35, \decay, 3, \amp, 0.7]); + Synth(\crash, [\decay, 4, \amp, 0.4]); +}; +"=== TRANCE BUILD 16s ===".postln; +) + +// --- DUBSTEP DROP -- impact + crash + riser court ----------------- +( +Synth(\riser, [\dur, 4, \startCutoff, 500, \endCutoff, 11000, \amp, 0.4]); +fork { + 4.wait; + Synth(\impact, [\freq, 30, \decay, 3.5, \amp, 0.85]); + Synth(\crash, [\decay, 3, \amp, 0.5]); +}; +"=== DUBSTEP DROP 4s ===".postln; +) + +// --- HARDCORE GABBER DROP -- impact massif + double crash -------- +( +Synth(\impact, [\freq, 25, \decay, 4, \amp, 0.9]); +Synth(\crash, [\decay, 5, \amp, 0.6]); +fork { 0.5.wait; Synth(\crash, [\decay, 3, \amp, 0.4]); }; +"=== HARDCORE DROP ===".postln; +) + +// --- DnB BUILD -- snare roll accelerando + drop -------------------- +( +~snareFill.(16, 4, 0.3, 0.6); +fork { + 4.wait; + Synth(\impact, [\freq, 40, \decay, 2.5, \amp, 0.65]); +}; +"=== DnB BUILD 4s ===".postln; +) + +// --- ASIAN CINEMATIC FX -- gong cascade --------------------------- +( +[40, 50, 60, 70].do { |f, i| + fork { (i * 0.8).wait; Synth(\gong, [\freq, f, \decay, 8 - (i * 0.5), \amp, 0.45]); }; +}; +"=== GONG CASCADE 3s ===".postln; +) + +// --- DUB TECHNO ECHO -- clap dub avec delay ------------------------ +( +fork { + 5.do { |i| + Synth(\clap, [\amp, 0.4 - (i * 0.06), \decay, 0.3]); + 0.4.wait; + }; +}; +"=== DUB ECHO CLAP ===".postln; +) + +// --- DETROIT FILTER SWEEP DOWN ------------------------------------ +( Synth(\sweep, [\dur, 8, \startCutoff, 12000, \endCutoff, 200, \amp, 0.35]); ) + +// --- INDUSTRIAL TENSION -- sweep slow + drone -------------------- +( +Synth(\sweep, [\dur, 16, \startCutoff, 8000, \endCutoff, 100, \amp, 0.4]); +~vinyl !? { ~vinyl.free }; +~vinyl = Synth(\vinyl, [\amp, 0.12]); +fork { 16.wait; ~vinyl !? { ~vinyl.free }; }; +"=== INDUSTRIAL TENSION 16s ===".postln; +) + +// --- GLITCH IDM -- scratch + impacts random -------------------- +( +fork { + 8.do { + if (0.6.coin) { Synth(\scratch, [\dur, rrand(0.1, 0.4), \freq, rrand(400, 2000), \sweepDir, [-1, 1].choose, \amp, 0.3]) }; + if (0.3.coin) { Synth(\impact, [\freq, rrand(40, 80), \decay, rrand(0.5, 1.5), \amp, 0.4]) }; + rrand(0.15, 0.5).wait; + }; +}; +"=== GLITCH 8 hits 4s ===".postln; +) + +// --- VOCAL TRANCE SWELL -- riser + crash + impact ---------------- +( +Synth(\riser, [\dur, 12, \startCutoff, 600, \endCutoff, 13000, \amp, 0.4]); +fork { + 12.wait; + Synth(\impact, [\freq, 38, \decay, 3, \amp, 0.7]); + Synth(\crash, [\decay, 5, \amp, 0.45]); +}; +"=== VOCAL TRANCE SWELL 12s ===".postln; +) + +// --- TRIBAL TOM ROLL DESCENDANT ---------------------------------- +( +[180, 140, 110, 85, 70, 55, 40].do { |f, i| + fork { (i * 0.12).wait; Synth(\taiko, [\freq, f, \decay, 0.6, \amp, 0.5]); }; +}; +"=== TRIBAL TOM ROLL ===".postln; +) + +// --- DRONE DOOM -- gong tres profond + reverb infinie ------------ +( +Synth(\gong, [\freq, 25, \decay, 30, \amp, 0.95]); +fork { 5.wait; Synth(\gong, [\freq, 30, \decay, 25, \amp, 0.7]); }; +"=== DRONE DOOM gong massif 30s ===".postln; +) + +// --- HARDSTYLE BUILD -- kick reverse + snare roll + impact ----- +( +Synth(\sweep, [\dur, 4, \startCutoff, 200, \endCutoff, 8000, \amp, 0.45]); +fork { + 4.wait; + Synth(\impact, [\freq, 30, \decay, 3.5, \amp, 0.85]); + Synth(\kickGabber, [\amp, 0.7]); +}; +"=== HARDSTYLE BUILD 4s ===".postln; +) + +// --- PHONK -- vinyl + cowbell + 808 sub -------------------------- +( +~vinyl !? { ~vinyl.free }; +~vinyl = Synth(\vinyl, [\amp, 0.15]); +fork { + 4.do { + Synth(\cowbell, [\freq, 800, \decay, 0.2, \amp, 0.4]); + 0.5.wait; + }; + Synth(\kick808, [\freq, 35, \decay, 1.2, \amp, 0.7]); +}; +"=== PHONK VINYL 2.5s ===".postln; +) + +// --- FUTURE GARAGE -- vocal-like swell + sub --------------------- +( +Synth(\sweep, [\dur, 6, \startCutoff, 6000, \endCutoff, 800, \amp, 0.3]); +fork { 5.wait; Synth(\impact, [\freq, 40, \decay, 2.5, \amp, 0.55]); }; +"=== FUTURE GARAGE SWELL 6s ===".postln; +) + +// --- SCRATCH FX -- 4 scratches rapides --------------------------- +( +4.do { |i| + fork { + (i * 0.15).wait; + Synth(\scratch, [\dur, 0.2, \freq, 800 + (i * 200), \sweepDir, [-1, 1].choose, \amp, 0.4]); + }; +}; +"=== SCRATCH x4 ===".postln; +) + +// --- GLITCH STUTTER -- impacts rapides --------------------------- +( +fork { + 16.do { |i| + Synth(\impact, [\freq, rrand(35, 60), \decay, 0.15, \amp, 0.4]); + rrand(0.06, 0.15).wait; + }; +}; +"=== GLITCH STUTTER 2s ===".postln; +) + +// --- ASIAN MELODIC FILL (guzheng arpege descendant) ------------- +( +[79, 77, 75, 72, 70, 67, 65, 63, 60].do { |n, i| + fork { + (i * 0.15).wait; + Synth(\guzheng, [\freq, n.midicps, \amp, 0.18, \release, 1.0]); + }; +}; +"=== ASIAN GUZHENG FILL ===".postln; +) + +// --- DROP CUT -- coupe tout brutalement + impact 2s plus tard ---- +( +Routine({ + var oldKick = ~kickAmp; var oldHat = ~hatAmp; var oldClap = ~clapAmp; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~reload.value; + Synth(\sweep, [\dur, 2, \startCutoff, 8000, \endCutoff, 200, \amp, 0.4]); + 2.wait; + Synth(\impact, [\freq, 30, \decay, 3, \amp, 0.85]); + Synth(\crash, [\decay, 3, \amp, 0.4]); + ~kickAmp = oldKick; ~hatAmp = oldHat; ~clapAmp = oldClap; ~reload.value; +}).play; +"=== DROP CUT 2s ===".postln; +) + +// --- VINYL ON / OFF ---------------------------------------------- +(~vinyl !? { ~vinyl.free }; ~vinyl = Synth(\vinyl, [\amp, 0.10]); "vinyl ON".postln;) +(~vinyl !? { ~vinyl.free; ~vinyl = nil }; "vinyl OFF".postln;) diff --git a/sound_algo/palette/harmonics/helpers.scd b/sound_algo/palette/harmonics/helpers.scd new file mode 100644 index 0000000..7df3c93 --- /dev/null +++ b/sound_algo/palette/harmonics/helpers.scd @@ -0,0 +1,70 @@ +// ===================================================================== +// palette/harmonics/helpers.scd +// Helpers de generation harmonique a partir d'une melodie source. +// +// ~genThirdHarmony tierce sup au-dessus +// ~genFifthHarmony quinte sup au-dessus +// ~genCounterMelody contre-melodie inversee autour d'un pivot +// ~genArpFromChords arpege sur progression d'accords +// ~genBassFromMelody bassline 2 octaves sous la melodie +// ~genOctaveHarmony octave sup +// ~genSixthHarmony sixte mineure (3 demi-tons sous l'octave) +// +// Source unique pour ces helpers d'harmonisation (un seul bloc +// top-level, compatible .load). +// ===================================================================== +( +// --- Tierce harmonisee (3M par defaut) ------------------------------ +~genThirdHarmony = { |melody, semitones = 4| + melody.collect { |n| if (n > 0) { n + semitones } { 0 } }; +}; + +// --- Quinte harmonisee ---------------------------------------------- +~genFifthHarmony = { |melody| + melody.collect { |n| if (n > 0) { n + 7 } { 0 } }; +}; + +// --- Sixte mineure / harmonisation douce ---------------------------- +~genSixthHarmony = { |melody| + melody.collect { |n| if (n > 0) { n + 9 } { 0 } }; +}; + +// --- Octave haute (layer trance) ------------------------------------ +~genOctaveHarmony = { |melody, octaves = 1| + melody.collect { |n| if (n > 0) { n + (12 * octaves) } { 0 } }; +}; + +// --- Counter-melody (inverse autour d'un pivot) -------------------- +~genCounterMelody = { |melody, rootInversion = 132| + melody.collect { |n| + if (n > 0) { (rootInversion - n).max(36).min(96) } { 0 }; + }; +}; + +// --- Bassline -- 2 octaves sous la melodie -------------------------- +~genBassFromMelody = { |melody, octavesDown = 2| + melody.collect { |n| + if (n > 0) { (n - (12 * octavesDown)).max(24) } { 0 }; + }; +}; + +// --- Arpege sur progression d'accords ------------------------------- +// ~genArpFromChords.([root list], [chord shape], steps_par_accord, octaves) +~genArpFromChords = { |roots, shape, stepsPerChord = 8, octRange = 1| + var notes = List.new; + var sh = shape ?? { [0, 3, 7, 10] }; // defaut : minor 7 + roots.do { |r| + stepsPerChord.do { |i| + var chord = sh.collect(_ + r); + chord = chord ++ chord.collect(_ + 12); + if (octRange > 1) { + chord = chord ++ chord.collect(_ + 12); + }; + notes.add(chord.choose); + }; + }; + notes.asArray; +}; + +"[harmonics/helpers] genThirdHarmony / genFifthHarmony / genSixthHarmony / genOctaveHarmony / genCounterMelody / genBassFromMelody / genArpFromChords prets".postln; +) diff --git a/sound_algo/palette/harmonics/index.scd b/sound_algo/palette/harmonics/index.scd new file mode 100644 index 0000000..4e6cf57 --- /dev/null +++ b/sound_algo/palette/harmonics/index.scd @@ -0,0 +1,16 @@ +// ===================================================================== +// palette/harmonics/index.scd -- loader du module harmonics +// +// Charge : +// helpers.scd genThirdHarmony / genFifthHarmony / genCounter / ... +// presets.scd ~enableHarmony.(\preset) (10 presets) +// +// Usage : (~base ++ "palette/harmonics/index.scd").load; +// Un seul bloc top-level (compatible .load depuis 00_load.scd). +// ===================================================================== +( +var dir = thisProcess.nowExecutingPath.dirname; +(dir +/+ "helpers.scd").load; +(dir +/+ "presets.scd").load; +"=== harmonics module loaded ===".postln; +) diff --git a/sound_algo/palette/harmonics/presets.scd b/sound_algo/palette/harmonics/presets.scd new file mode 100644 index 0000000..cbdacce --- /dev/null +++ b/sound_algo/palette/harmonics/presets.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// palette/harmonics/presets.scd +// ~enableHarmony.(\preset) -- 10 presets pour la 2e voix harmonique. +// +// Presets : \off, \counter, \third, \fifth, \bassline, \arp, \chord, +// \tranceLayer, \dubBass, \cinematic +// +// Source unique de ~enableHarmony (engine.scd ne le definit plus). +// Charge par index.scd. Un seul bloc top-level (compatible .load). +// +// PREREQUIS : ~melodyNotes, ~reload definis (engine.scd evalue). +// ===================================================================== +( +~enableHarmony = { |preset = \off| + switch (preset, + \off, { + ~harmonyAmp = 0; + }, + // Counter-melody : inverse de la melodie principale + \counter, { + ~harmonyInst = \pluck; + ~harmonyAttack = 0.005; ~harmonyRelease = 0.4; + ~harmonyCutoff = 4500; ~harmonyAmp = 0.13; + ~harmonyDur = 0.25; + ~harmonyNotes = ~melodyNotes.collect { |n| + if (n > 0) { (132 - n).max(48).min(96) } { 0 }; + }; + }, + // Tierce harmonisee + \third, { + ~harmonyInst = \warmPad; + ~harmonyAttack = 0.3; ~harmonyRelease = 1.2; + ~harmonyCutoff = 2500; ~harmonyAmp = 0.12; + ~harmonyDur = 0.25; + ~harmonyNotes = ~melodyNotes.collect { |n| if(n > 0) {n + 4} {0} }; + }, + // Quinte harmonisee + \fifth, { + ~harmonyInst = \warmPad; + ~harmonyAttack = 0.3; ~harmonyRelease = 1.2; + ~harmonyCutoff = 2500; ~harmonyAmp = 0.12; + ~harmonyDur = 0.25; + ~harmonyNotes = ~melodyNotes.collect { |n| if(n > 0) {n + 7} {0} }; + }, + // Bassline 2 octaves sous la melodie + \bassline, { + ~harmonyInst = \subBoom; + ~harmonyAttack = 0.005; ~harmonyRelease = 0.6; + ~harmonyAmp = 0.30; + ~harmonyDur = 0.5; + ~harmonyNotes = ~melodyNotes.collect { |n| + if (n > 0) { (n - 24).max(24) } { 0 }; + }; + }, + // Arpege rapide en 1/32 sur les memes notes + \arp, { + ~harmonyInst = \pluck; + ~harmonyAttack = 0.001; ~harmonyRelease = 0.2; + ~harmonyCutoff = 5500; ~harmonyAmp = 0.13; + ~harmonyDur = 0.125; + ~harmonyNotes = ~melodyNotes.collect { |n| + if (n > 0) { n + 12 } { 0 }; + }; + }, + // Chord stabs (quinte sup avec dur plus lente) + \chord, { + ~harmonyInst = \warmPad; + ~harmonyAttack = 0.05; ~harmonyRelease = 1.5; + ~harmonyCutoff = 2200; ~harmonyAmp = 0.13; + ~harmonyDur = 0.5; + ~harmonyNotes = ~melodyNotes.collect { |n| if(n > 0) {n + 7} {0} }; + }, + // Layer trance : organLead octave +1 + \tranceLayer, { + ~harmonyInst = \organLead; + ~harmonyAttack = 0.005; ~harmonyRelease = 0.2; + ~harmonyCutoff = 5000; ~harmonyAmp = 0.12; + ~harmonyDur = 0.25; + ~harmonyNotes = ~melodyNotes.collect { |n| if(n > 0) {n + 12} {0} }; + }, + // Dub bass : sub avec long sustain + \dubBass, { + ~harmonyInst = \subBoom; + ~harmonyAttack = 0.01; ~harmonyRelease = 1.0; + ~harmonyAmp = 0.32; + ~harmonyDur = 1.0; + ~harmonyNotes = ~melodyNotes.collect { |n| + if (n > 0) { (n - 24).max(24) } { 0 }; + }; + }, + // Cinematic strings layer + \cinematic, { + ~harmonyInst = \strings; + ~harmonyAttack = 0.4; ~harmonyRelease = 1.5; + ~harmonyCutoff = 3500; ~harmonyAmp = 0.14; + ~harmonyDur = 0.5; + ~harmonyNotes = ~melodyNotes.collect { |n| if(n > 0) {n + 7} {0} }; + } + ); + ~reload.value; +}; + +"[harmonics/presets] ~enableHarmony pret (10 presets : off counter third fifth bassline arp chord tranceLayer dubBass cinematic)".postln; +) diff --git a/sound_algo/palette/melodies/bank.scd b/sound_algo/palette/melodies/bank.scd new file mode 100644 index 0000000..70575f3 --- /dev/null +++ b/sound_algo/palette/melodies/bank.scd @@ -0,0 +1,102 @@ +// ===================================================================== +// palette/melodies/bank.scd +// Bibliotheque par genre (~melodyBank) + selecteurs aleatoires. +// +// ~melodyBank dictionnaire genre -> [\m1, \ml3, ...] +// ~useMelody.(\m50) applique une melodie nommee a ~melodyNotes +// ~melodyByGenre.(\acid) +// ~randomLong.() ml aleatoire (64 pas) +// ~randomXLong.() mxl aleatoire (96 pas) +// ~randomEpic.() mepic aleatoire(128 pas) +// +// Le bank stocke des SYMBOLES, l'evaluation lit currentEnvironment a +// la volee : si l'utilisateur reevalue ~m29, le selecteur utilise +// toujours la version a jour. Charge par index.scd. Un seul bloc. +// ===================================================================== +( +~melodyBank = ( + \acid: [\m29, \m30, \m70, \ml1, \mxl5, \mepic5, \mAcid100, \mAcid101, \mAcid102, \mAcid103, \mAcid104, \mAcid105, \mAcid106, \mAcid107, \mAcid108, \mAcid109, \mAcid110, \mAcid111, \mAcid112, \mAcid113, \mAcid114, \mAcid115, \mAcid116, \mAcid117, \mAcid118, \mAcid119, \mAcid120, \mAcid121, \mAcid122, \mAcid123, \mAcid124, \mAcid125, \mAcid126, \mAcid127, \mAcid128, \mAcid129, \mAcid130, \mAcid131, \mAcid132, \mAcid133, \mAcid134, \mAcid135, \mAcid136, \mAcid137, \mAcid138, \mAcid139, \mAcid140, \mAcid141, \mAcid142, \mAcid143, \mAcid144, \mAcid145, \mAcid146, \mAcid147, \mAcid148, \mAcid149, \mAcid150, \mAcid151, \mAcid152, \mAcid153, \mAcid154, \mAcid155, \mAcid156, \mAcid157, \mAcid158, \mAcid159, \mAcid160, \mAcid161, \mAcid162, \mAcid163, \mAcid164, \mAcid165, \mAcid166, \mAcid167, \mAcid168, \mAcid169, \mAcid170, \mAcid171, \mAcid172, \mAcid173, \mAcid174, \mAcid175, \mAcid176, \mAcid177, \mAcid178, \mAcid179, \mAcid180, \mAcid181, \mAcid182, \mAcid183, \mlAcid100, \mlAcid101, \mlAcid102, \mlAcid103, \mlAcid104, \mlAcid105, \mlAcid106, \mlAcid107, \mlAcid108, \mlAcid109, \mlAcid110, \mlAcid111, \mlAcid112, \mlAcid113, \mlAcid114, \mlAcid115, \mlAcid116, \mlAcid117, \mlAcid118, \mlAcid119, \mlAcid120, \mlAcid121, \mlAcid122, \mlAcid123, \mxlAcid100, \mxlAcid101, \mxlAcid102, \mxlAcid103, \mxlAcid104, \mxlAcid105, \mxlAcid106, \mxlAcid107, \mxlAcid108, \mxlAcid109, \mepicAcid100, \mepicAcid101], + \dub: [\m65, \ml26, \mDub100, \mDub101, \mDub102, \mDub103, \mDub104, \mDub105, \mDub106, \mDub107, \mDub108, \mDub109, \mDub110, \mDub111, \mDub112, \mDub113, \mDub114, \mDub115, \mDub116, \mDub117, \mDub118, \mDub119, \mDub120, \mDub121, \mDub122, \mDub123, \mDub124, \mDub125, \mDub126, \mDub127, \mlDub100, \mlDub101, \mlDub102, \mlDub103, \mlDub104, \mlDub105, \mlDub106, \mlDub107, \mxlDub100, \mxlDub101, \mxlDub102, \mepicDub100], + \trance: [\m8, \m24, \m28, \ml2, \mxl1, \mepic1, \mxl15, \mepic6, \ml15, \mTrance100, \mTrance101, \mTrance102, \mTrance103, \mTrance104, \mTrance105, \mTrance106, \mTrance107, \mTrance108, \mTrance109, \mTrance110, \mTrance111, \mTrance112, \mTrance113, \mTrance114, \mTrance115, \mTrance116, \mTrance117, \mTrance118, \mTrance119, \mTrance120, \mTrance121, \mTrance122, \mTrance123, \mTrance124, \mTrance125, \mTrance126, \mTrance127, \mTrance128, \mTrance129, \mTrance130, \mTrance131, \mTrance132, \mTrance133, \mTrance134, \mTrance135, \mTrance136, \mTrance137, \mTrance138, \mTrance139, \mTrance140, \mTrance141, \mTrance142, \mTrance143, \mTrance144, \mTrance145, \mTrance146, \mTrance147, \mTrance148, \mTrance149, \mTrance150, \mTrance151, \mTrance152, \mTrance153, \mTrance154, \mTrance155, \mTrance156, \mTrance157, \mTrance158, \mTrance159, \mTrance160, \mTrance161, \mTrance162, \mTrance163, \mTrance164, \mTrance165, \mTrance166, \mTrance167, \mTrance168, \mTrance169, \mTrance170, \mTrance171, \mTrance172, \mTrance173, \mTrance174, \mTrance175, \mTrance176, \mTrance177, \mTrance178, \mTrance179, \mTrance180, \mTrance181, \mTrance182, \mTrance183, \mTrance184, \mTrance185, \mTrance186, \mTrance187, \mTrance188, \mTrance189, \mTrance190, \mTrance191, \mTrance192, \mTrance193, \mTrance194, \mTrance195, \mTrance196, \mTrance197, \mTrance198, \mTrance199, \mTrance200, \mTrance201, \mTrance202, \mTrance203, \mTrance204, \mTrance205, \mTrance206, \mTrance207, \mTrance208, \mTrance209, \mTrance210, \mTrance211, \mTrance212, \mTrance213, \mTrance214, \mTrance215, \mTrance216, \mTrance217, \mTrance218, \mTrance219, \mTrance220, \mTrance221, \mTrance222, \mTrance223, \mTrance224, \mTrance225, \mlTrance100, \mlTrance101, \mlTrance102, \mlTrance103, \mlTrance104, \mlTrance105, \mlTrance106, \mlTrance107, \mlTrance108, \mlTrance109, \mlTrance110, \mlTrance111, \mlTrance112, \mlTrance113, \mlTrance114, \mlTrance115, \mlTrance116, \mlTrance117, \mlTrance118, \mlTrance119, \mlTrance120, \mlTrance121, \mlTrance122, \mlTrance123, \mlTrance124, \mlTrance125, \mlTrance126, \mlTrance127, \mlTrance128, \mlTrance129, \mlTrance130, \mlTrance131, \mlTrance132, \mlTrance133, \mlTrance134, \mlTrance135, \mxlTrance100, \mxlTrance101, \mxlTrance102, \mxlTrance103, \mxlTrance104, \mxlTrance105, \mxlTrance106, \mxlTrance107, \mxlTrance108, \mxlTrance109, \mxlTrance110, \mxlTrance111, \mxlTrance112, \mxlTrance113, \mepicTrance100, \mepicTrance101, \mepicTrance102, \mepicTrance103], + \detroit: [\m3, \m23, \m69, \m71, \ml3, \ml18, \mxl2, \mepic3, \mDetroit100, \mDetroit101, \mDetroit102, \mDetroit103, \mDetroit104, \mDetroit105, \mDetroit106, \mDetroit107, \mDetroit108, \mDetroit109, \mDetroit110, \mDetroit111, \mDetroit112, \mDetroit113, \mDetroit114, \mDetroit115, \mDetroit116, \mDetroit117, \mDetroit118, \mDetroit119, \mDetroit120, \mDetroit121, \mDetroit122, \mDetroit123, \mDetroit124, \mDetroit125, \mDetroit126, \mDetroit127, \mDetroit128, \mDetroit129, \mDetroit130, \mDetroit131, \mDetroit132, \mDetroit133, \mDetroit134, \mDetroit135, \mDetroit136, \mDetroit137, \mDetroit138, \mDetroit139, \mDetroit140, \mDetroit141, \mDetroit142, \mDetroit143, \mDetroit144, \mDetroit145, \mDetroit146, \mDetroit147, \mDetroit148, \mDetroit149, \mDetroit150, \mDetroit151, \mDetroit152, \mDetroit153, \mDetroit154, \mDetroit155, \mDetroit156, \mDetroit157, \mDetroit158, \mDetroit159, \mDetroit160, \mDetroit161, \mDetroit162, \mDetroit163, \mDetroit164, \mDetroit165, \mDetroit166, \mDetroit167, \mDetroit168, \mDetroit169, \mDetroit170, \mDetroit171, \mDetroit172, \mDetroit173, \mDetroit174, \mDetroit175, \mDetroit176, \mDetroit177, \mDetroit178, \mDetroit179, \mDetroit180, \mDetroit181, \mDetroit182, \mDetroit183, \mDetroit184, \mDetroit185, \mDetroit186, \mDetroit187, \mDetroit188, \mDetroit189, \mDetroit190, \mDetroit191, \mDetroit192, \mDetroit193, \mDetroit194, \mDetroit195, \mDetroit196, \mDetroit197, \mDetroit198, \mDetroit199, \mDetroit200, \mDetroit201, \mDetroit202, \mDetroit203, \mDetroit204, \mDetroit205, \mDetroit206, \mDetroit207, \mDetroit208, \mDetroit209, \mDetroit210, \mDetroit211, \mlDetroit100, \mlDetroit101, \mlDetroit102, \mlDetroit103, \mlDetroit104, \mlDetroit105, \mlDetroit106, \mlDetroit107, \mlDetroit108, \mlDetroit109, \mlDetroit110, \mlDetroit111, \mlDetroit112, \mlDetroit113, \mlDetroit114, \mlDetroit115, \mlDetroit116, \mlDetroit117, \mlDetroit118, \mlDetroit119, \mlDetroit120, \mlDetroit121, \mlDetroit122, \mlDetroit123, \mlDetroit124, \mlDetroit125, \mlDetroit126, \mlDetroit127, \mlDetroit128, \mlDetroit129, \mlDetroit130, \mlDetroit131, \mxlDetroit100, \mxlDetroit101, \mxlDetroit102, \mxlDetroit103, \mxlDetroit104, \mxlDetroit105, \mxlDetroit106, \mxlDetroit107, \mxlDetroit108, \mxlDetroit109, \mxlDetroit110, \mxlDetroit111, \mxlDetroit112, \mepicDetroit100, \mepicDetroit101, \mepicDetroit102], + \dnb: [\m63, \ml4, \ml22, \mDnb100, \mDnb101, \mDnb102, \mDnb103, \mDnb104, \mDnb105, \mDnb106, \mDnb107, \mDnb108, \mDnb109, \mDnb110, \mDnb111, \mDnb112, \mDnb113, \mDnb114, \mDnb115, \mDnb116, \mDnb117, \mDnb118, \mDnb119, \mDnb120, \mDnb121, \mDnb122, \mDnb123, \mDnb124, \mDnb125, \mDnb126, \mDnb127, \mDnb128, \mDnb129, \mDnb130, \mDnb131, \mDnb132, \mDnb133, \mDnb134, \mDnb135, \mDnb136, \mDnb137, \mDnb138, \mDnb139, \mDnb140, \mDnb141, \mlDnb100, \mlDnb101, \mlDnb102, \mlDnb103, \mlDnb104, \mlDnb105, \mlDnb106, \mlDnb107, \mlDnb108, \mlDnb109, \mlDnb110, \mlDnb111, \mxlDnb100, \mxlDnb101, \mxlDnb102, \mxlDnb103, \mxlDnb104, \mepicDnb100], + \ambient: [\m33, \m34, \m72, \m73, \ml5, \mxl3, \mAmbient100, \mAmbient101, \mAmbient102, \mAmbient103, \mAmbient104, \mAmbient105, \mAmbient106, \mAmbient107, \mAmbient108, \mAmbient109, \mAmbient110, \mAmbient111, \mAmbient112, \mAmbient113, \mAmbient114, \mAmbient115, \mAmbient116, \mAmbient117, \mAmbient118, \mAmbient119, \mAmbient120, \mAmbient121, \mAmbient122, \mAmbient123, \mAmbient124, \mAmbient125, \mAmbient126, \mAmbient127, \mAmbient128, \mAmbient129, \mAmbient130, \mAmbient131, \mAmbient132, \mAmbient133, \mAmbient134, \mAmbient135, \mAmbient136, \mAmbient137, \mAmbient138, \mAmbient139, \mAmbient140, \mAmbient141, \mAmbient142, \mAmbient143, \mAmbient144, \mAmbient145, \mAmbient146, \mAmbient147, \mAmbient148, \mAmbient149, \mAmbient150, \mAmbient151, \mAmbient152, \mAmbient153, \mAmbient154, \mAmbient155, \mAmbient156, \mAmbient157, \mAmbient158, \mAmbient159, \mAmbient160, \mAmbient161, \mAmbient162, \mAmbient163, \mAmbient164, \mAmbient165, \mAmbient166, \mAmbient167, \mAmbient168, \mAmbient169, \mAmbient170, \mAmbient171, \mAmbient172, \mAmbient173, \mAmbient174, \mAmbient175, \mAmbient176, \mAmbient177, \mAmbient178, \mAmbient179, \mAmbient180, \mAmbient181, \mAmbient182, \mAmbient183, \mlAmbient100, \mlAmbient101, \mlAmbient102, \mlAmbient103, \mlAmbient104, \mlAmbient105, \mlAmbient106, \mlAmbient107, \mlAmbient108, \mlAmbient109, \mlAmbient110, \mlAmbient111, \mlAmbient112, \mlAmbient113, \mlAmbient114, \mlAmbient115, \mlAmbient116, \mlAmbient117, \mlAmbient118, \mlAmbient119, \mlAmbient120, \mlAmbient121, \mlAmbient122, \mlAmbient123, \mxlAmbient100, \mxlAmbient101, \mxlAmbient102, \mxlAmbient103, \mxlAmbient104, \mxlAmbient105, \mxlAmbient106, \mxlAmbient107, \mxlAmbient108, \mxlAmbient109, \mepicAmbient100, \mepicAmbient101], + \world: [\m17, \m48, \m74, \ml9, \ml25, \mxl11, \mepic9, \mWorld100, \mWorld101, \mWorld102, \mWorld103, \mWorld104, \mWorld105, \mWorld106, \mWorld107, \mWorld108, \mWorld109, \mWorld110, \mWorld111, \mWorld112, \mWorld113, \mWorld114, \mWorld115, \mWorld116, \mWorld117, \mWorld118, \mWorld119, \mWorld120, \mWorld121, \mWorld122, \mWorld123, \mWorld124, \mWorld125, \mWorld126, \mWorld127, \mWorld128, \mWorld129, \mWorld130, \mWorld131, \mWorld132, \mWorld133, \mWorld134, \mWorld135, \mWorld136, \mWorld137, \mWorld138, \mWorld139, \mWorld140, \mWorld141, \mWorld142, \mWorld143, \mWorld144, \mWorld145, \mWorld146, \mWorld147, \mWorld148, \mWorld149, \mWorld150, \mWorld151, \mWorld152, \mWorld153, \mWorld154, \mWorld155, \mWorld156, \mWorld157, \mWorld158, \mWorld159, \mWorld160, \mWorld161, \mWorld162, \mWorld163, \mWorld164, \mWorld165, \mWorld166, \mWorld167, \mWorld168, \mWorld169, \mWorld170, \mWorld171, \mWorld172, \mWorld173, \mWorld174, \mWorld175, \mWorld176, \mWorld177, \mWorld178, \mWorld179, \mWorld180, \mWorld181, \mWorld182, \mWorld183, \mWorld184, \mWorld185, \mWorld186, \mWorld187, \mWorld188, \mWorld189, \mWorld190, \mWorld191, \mWorld192, \mWorld193, \mWorld194, \mWorld195, \mWorld196, \mWorld197, \mlWorld100, \mlWorld101, \mlWorld102, \mlWorld103, \mlWorld104, \mlWorld105, \mlWorld106, \mlWorld107, \mlWorld108, \mlWorld109, \mlWorld110, \mlWorld111, \mlWorld112, \mlWorld113, \mlWorld114, \mlWorld115, \mlWorld116, \mlWorld117, \mlWorld118, \mlWorld119, \mlWorld120, \mlWorld121, \mlWorld122, \mlWorld123, \mlWorld124, \mlWorld125, \mlWorld126, \mlWorld127, \mxlWorld100, \mxlWorld101, \mxlWorld102, \mxlWorld103, \mxlWorld104, \mxlWorld105, \mxlWorld106, \mxlWorld107, \mxlWorld108, \mxlWorld109, \mxlWorld110, \mepicWorld100, \mepicWorld101, \mepicWorld102], + \retro: [\m61, \m75, \m77, \ml7, \ml13, \mxl6, \mRetro100, \mRetro101, \mRetro102, \mRetro103, \mRetro104, \mRetro105, \mRetro106, \mRetro107, \mRetro108, \mRetro109, \mRetro110, \mRetro111, \mRetro112, \mRetro113, \mRetro114, \mRetro115, \mRetro116, \mRetro117, \mRetro118, \mRetro119, \mRetro120, \mRetro121, \mRetro122, \mRetro123, \mRetro124, \mRetro125, \mRetro126, \mRetro127, \mRetro128, \mRetro129, \mRetro130, \mRetro131, \mRetro132, \mRetro133, \mRetro134, \mRetro135, \mRetro136, \mRetro137, \mRetro138, \mRetro139, \mRetro140, \mRetro141, \mRetro142, \mRetro143, \mRetro144, \mRetro145, \mRetro146, \mRetro147, \mRetro148, \mRetro149, \mRetro150, \mRetro151, \mRetro152, \mRetro153, \mRetro154, \mRetro155, \mRetro156, \mRetro157, \mRetro158, \mRetro159, \mRetro160, \mRetro161, \mRetro162, \mRetro163, \mRetro164, \mRetro165, \mRetro166, \mRetro167, \mRetro168, \mRetro169, \mRetro170, \mRetro171, \mRetro172, \mRetro173, \mRetro174, \mRetro175, \mRetro176, \mRetro177, \mRetro178, \mRetro179, \mRetro180, \mRetro181, \mRetro182, \mRetro183, \mlRetro100, \mlRetro101, \mlRetro102, \mlRetro103, \mlRetro104, \mlRetro105, \mlRetro106, \mlRetro107, \mlRetro108, \mlRetro109, \mlRetro110, \mlRetro111, \mlRetro112, \mlRetro113, \mlRetro114, \mlRetro115, \mlRetro116, \mlRetro117, \mlRetro118, \mlRetro119, \mlRetro120, \mlRetro121, \mlRetro122, \mlRetro123, \mxlRetro100, \mxlRetro101, \mxlRetro102, \mxlRetro103, \mxlRetro104, \mxlRetro105, \mxlRetro106, \mxlRetro107, \mxlRetro108, \mxlRetro109, \mepicRetro100, \mepicRetro101], + \dark: [\m14, \m38, \m53, \ml8, \ml28, \mxl8, \mepic8, \mDark100, \mDark101, \mDark102, \mDark103, \mDark104, \mDark105, \mDark106, \mDark107, \mDark108, \mDark109, \mDark110, \mDark111, \mDark112, \mDark113, \mDark114, \mDark115, \mDark116, \mDark117, \mDark118, \mDark119, \mDark120, \mDark121, \mDark122, \mDark123, \mDark124, \mDark125, \mDark126, \mDark127, \mDark128, \mDark129, \mDark130, \mDark131, \mDark132, \mDark133, \mDark134, \mDark135, \mDark136, \mDark137, \mDark138, \mDark139, \mDark140, \mDark141, \mDark142, \mDark143, \mDark144, \mDark145, \mDark146, \mDark147, \mDark148, \mDark149, \mDark150, \mDark151, \mDark152, \mDark153, \mDark154, \mDark155, \mDark156, \mDark157, \mDark158, \mDark159, \mDark160, \mDark161, \mDark162, \mDark163, \mDark164, \mDark165, \mDark166, \mDark167, \mDark168, \mDark169, \mDark170, \mDark171, \mDark172, \mDark173, \mDark174, \mDark175, \mDark176, \mDark177, \mDark178, \mDark179, \mDark180, \mDark181, \mDark182, \mDark183, \mDark184, \mDark185, \mDark186, \mDark187, \mDark188, \mDark189, \mDark190, \mDark191, \mDark192, \mDark193, \mDark194, \mDark195, \mDark196, \mDark197, \mlDark100, \mlDark101, \mlDark102, \mlDark103, \mlDark104, \mlDark105, \mlDark106, \mlDark107, \mlDark108, \mlDark109, \mlDark110, \mlDark111, \mlDark112, \mlDark113, \mlDark114, \mlDark115, \mlDark116, \mlDark117, \mlDark118, \mlDark119, \mlDark120, \mlDark121, \mlDark122, \mlDark123, \mlDark124, \mlDark125, \mlDark126, \mlDark127, \mxlDark100, \mxlDark101, \mxlDark102, \mxlDark103, \mxlDark104, \mxlDark105, \mxlDark106, \mxlDark107, \mxlDark108, \mxlDark109, \mxlDark110, \mepicDark100, \mepicDark101, \mepicDark102], + \asian: [\m17, \m40, \m48, \m74, \ml9, \ml25, \mxl11, \mepic9, \mAsian100, \mAsian101, \mAsian102, \mAsian103, \mAsian104, \mAsian105, \mAsian106, \mAsian107, \mAsian108, \mAsian109, \mAsian110, \mAsian111, \mAsian112, \mAsian113, \mAsian114, \mAsian115, \mAsian116, \mAsian117, \mAsian118, \mAsian119, \mAsian120, \mAsian121, \mAsian122, \mAsian123, \mAsian124, \mAsian125, \mAsian126, \mAsian127, \mAsian128, \mAsian129, \mAsian130, \mAsian131, \mAsian132, \mAsian133, \mAsian134, \mAsian135, \mAsian136, \mAsian137, \mAsian138, \mAsian139, \mAsian140, \mAsian141, \mAsian142, \mAsian143, \mAsian144, \mAsian145, \mAsian146, \mAsian147, \mAsian148, \mAsian149, \mAsian150, \mAsian151, \mAsian152, \mAsian153, \mAsian154, \mAsian155, \mAsian156, \mAsian157, \mAsian158, \mAsian159, \mAsian160, \mAsian161, \mAsian162, \mAsian163, \mAsian164, \mAsian165, \mAsian166, \mAsian167, \mAsian168, \mAsian169, \mAsian170, \mAsian171, \mAsian172, \mAsian173, \mAsian174, \mAsian175, \mAsian176, \mAsian177, \mAsian178, \mAsian179, \mAsian180, \mAsian181, \mAsian182, \mAsian183, \mAsian184, \mAsian185, \mAsian186, \mAsian187, \mAsian188, \mAsian189, \mAsian190, \mAsian191, \mAsian192, \mAsian193, \mAsian194, \mAsian195, \mAsian196, \mAsian197, \mAsian198, \mAsian199, \mAsian200, \mAsian201, \mAsian202, \mAsian203, \mAsian204, \mAsian205, \mAsian206, \mAsian207, \mAsian208, \mAsian209, \mAsian210, \mAsian211, \mlAsian100, \mlAsian101, \mlAsian102, \mlAsian103, \mlAsian104, \mlAsian105, \mlAsian106, \mlAsian107, \mlAsian108, \mlAsian109, \mlAsian110, \mlAsian111, \mlAsian112, \mlAsian113, \mlAsian114, \mlAsian115, \mlAsian116, \mlAsian117, \mlAsian118, \mlAsian119, \mlAsian120, \mlAsian121, \mlAsian122, \mlAsian123, \mlAsian124, \mlAsian125, \mlAsian126, \mlAsian127, \mlAsian128, \mlAsian129, \mlAsian130, \mlAsian131, \mxlAsian100, \mxlAsian101, \mxlAsian102, \mxlAsian103, \mxlAsian104, \mxlAsian105, \mxlAsian106, \mxlAsian107, \mxlAsian108, \mxlAsian109, \mxlAsian110, \mxlAsian111, \mxlAsian112, \mepicAsian100, \mepicAsian101, \mepicAsian102], + \oriental: [\m15, \m20, \m39, \m41, \m44, \m60, \ml6, \ml17, \mxl4, \mxl14, \mepic4, \mOriental100, \mOriental101, \mOriental102, \mOriental103, \mOriental104, \mOriental105, \mOriental106, \mOriental107, \mOriental108, \mOriental109, \mOriental110, \mOriental111, \mOriental112, \mOriental113, \mOriental114, \mOriental115, \mOriental116, \mOriental117, \mOriental118, \mOriental119, \mOriental120, \mOriental121, \mOriental122, \mOriental123, \mOriental124, \mOriental125, \mOriental126, \mOriental127, \mOriental128, \mOriental129, \mOriental130, \mOriental131, \mOriental132, \mOriental133, \mOriental134, \mOriental135, \mOriental136, \mOriental137, \mOriental138, \mOriental139, \mOriental140, \mOriental141, \mOriental142, \mOriental143, \mOriental144, \mOriental145, \mOriental146, \mOriental147, \mOriental148, \mOriental149, \mOriental150, \mOriental151, \mOriental152, \mOriental153, \mOriental154, \mOriental155, \mOriental156, \mOriental157, \mOriental158, \mOriental159, \mOriental160, \mOriental161, \mOriental162, \mOriental163, \mOriental164, \mOriental165, \mOriental166, \mOriental167, \mOriental168, \mOriental169, \mOriental170, \mOriental171, \mOriental172, \mOriental173, \mOriental174, \mOriental175, \mOriental176, \mOriental177, \mOriental178, \mOriental179, \mOriental180, \mOriental181, \mOriental182, \mOriental183, \mOriental184, \mOriental185, \mOriental186, \mOriental187, \mOriental188, \mOriental189, \mOriental190, \mOriental191, \mOriental192, \mOriental193, \mOriental194, \mOriental195, \mOriental196, \mOriental197, \mOriental198, \mOriental199, \mOriental200, \mOriental201, \mOriental202, \mOriental203, \mOriental204, \mOriental205, \mOriental206, \mOriental207, \mOriental208, \mOriental209, \mOriental210, \mOriental211, \mOriental212, \mOriental213, \mOriental214, \mOriental215, \mOriental216, \mOriental217, \mOriental218, \mOriental219, \mOriental220, \mOriental221, \mOriental222, \mOriental223, \mOriental224, \mOriental225, \mOriental226, \mOriental227, \mOriental228, \mOriental229, \mOriental230, \mOriental231, \mOriental232, \mOriental233, \mOriental234, \mOriental235, \mOriental236, \mOriental237, \mOriental238, \mOriental239, \mOriental240, \mOriental241, \mOriental242, \mOriental243, \mOriental244, \mOriental245, \mOriental246, \mOriental247, \mOriental248, \mOriental249, \mOriental250, \mOriental251, \mOriental252, \mOriental253, \mlOriental100, \mlOriental101, \mlOriental102, \mlOriental103, \mlOriental104, \mlOriental105, \mlOriental106, \mlOriental107, \mlOriental108, \mlOriental109, \mlOriental110, \mlOriental111, \mlOriental112, \mlOriental113, \mlOriental114, \mlOriental115, \mlOriental116, \mlOriental117, \mlOriental118, \mlOriental119, \mlOriental120, \mlOriental121, \mlOriental122, \mlOriental123, \mlOriental124, \mlOriental125, \mlOriental126, \mlOriental127, \mlOriental128, \mlOriental129, \mlOriental130, \mlOriental131, \mlOriental132, \mlOriental133, \mlOriental134, \mlOriental135, \mlOriental136, \mlOriental137, \mlOriental138, \mlOriental139, \mlOriental140, \mlOriental141, \mlOriental142, \mlOriental143, \mxlOriental100, \mxlOriental101, \mxlOriental102, \mxlOriental103, \mxlOriental104, \mxlOriental105, \mxlOriental106, \mxlOriental107, \mxlOriental108, \mxlOriental109, \mxlOriental110, \mxlOriental111, \mxlOriental112, \mxlOriental113, \mxlOriental114, \mxlOriental115, \mxlOriental116, \mxlOriental117, \mepicOriental100, \mepicOriental101, \mepicOriental102, \mepicOriental103], + \tribal: [\m45, \m46, \ml10, \mxl12, \mTribal100, \mTribal101, \mTribal102, \mTribal103, \mTribal104, \mTribal105, \mTribal106, \mTribal107, \mTribal108, \mTribal109, \mTribal110, \mTribal111, \mTribal112, \mTribal113, \mTribal114, \mTribal115, \mTribal116, \mTribal117, \mTribal118, \mTribal119, \mTribal120, \mTribal121, \mTribal122, \mTribal123, \mTribal124, \mTribal125, \mTribal126, \mTribal127, \mTribal128, \mTribal129, \mTribal130, \mTribal131, \mTribal132, \mTribal133, \mTribal134, \mTribal135, \mTribal136, \mTribal137, \mTribal138, \mTribal139, \mTribal140, \mTribal141, \mTribal142, \mTribal143, \mTribal144, \mTribal145, \mTribal146, \mTribal147, \mTribal148, \mTribal149, \mTribal150, \mTribal151, \mTribal152, \mTribal153, \mTribal154, \mTribal155, \mlTribal100, \mlTribal101, \mlTribal102, \mlTribal103, \mlTribal104, \mlTribal105, \mlTribal106, \mlTribal107, \mlTribal108, \mlTribal109, \mlTribal110, \mlTribal111, \mlTribal112, \mlTribal113, \mlTribal114, \mlTribal115, \mxlTribal100, \mxlTribal101, \mxlTribal102, \mxlTribal103, \mxlTribal104, \mxlTribal105, \mepicTribal100, \mepicTribal101], + \industrial: [\m67, \m68, \ml11, \ml24, \mxl9, \mepic7, \mIndustrial100, \mIndustrial101, \mIndustrial102, \mIndustrial103, \mIndustrial104, \mIndustrial105, \mIndustrial106, \mIndustrial107, \mIndustrial108, \mIndustrial109, \mIndustrial110, \mIndustrial111, \mIndustrial112, \mIndustrial113, \mIndustrial114, \mIndustrial115, \mIndustrial116, \mIndustrial117, \mIndustrial118, \mIndustrial119, \mIndustrial120, \mIndustrial121, \mIndustrial122, \mIndustrial123, \mIndustrial124, \mIndustrial125, \mIndustrial126, \mIndustrial127, \mIndustrial128, \mIndustrial129, \mIndustrial130, \mIndustrial131, \mIndustrial132, \mIndustrial133, \mIndustrial134, \mIndustrial135, \mIndustrial136, \mIndustrial137, \mIndustrial138, \mIndustrial139, \mIndustrial140, \mIndustrial141, \mIndustrial142, \mIndustrial143, \mIndustrial144, \mIndustrial145, \mIndustrial146, \mIndustrial147, \mIndustrial148, \mIndustrial149, \mIndustrial150, \mIndustrial151, \mIndustrial152, \mIndustrial153, \mIndustrial154, \mIndustrial155, \mIndustrial156, \mIndustrial157, \mIndustrial158, \mIndustrial159, \mIndustrial160, \mIndustrial161, \mIndustrial162, \mIndustrial163, \mIndustrial164, \mIndustrial165, \mIndustrial166, \mIndustrial167, \mIndustrial168, \mIndustrial169, \mIndustrial170, \mIndustrial171, \mIndustrial172, \mIndustrial173, \mIndustrial174, \mIndustrial175, \mIndustrial176, \mIndustrial177, \mIndustrial178, \mIndustrial179, \mIndustrial180, \mIndustrial181, \mIndustrial182, \mIndustrial183, \mlIndustrial100, \mlIndustrial101, \mlIndustrial102, \mlIndustrial103, \mlIndustrial104, \mlIndustrial105, \mlIndustrial106, \mlIndustrial107, \mlIndustrial108, \mlIndustrial109, \mlIndustrial110, \mlIndustrial111, \mlIndustrial112, \mlIndustrial113, \mlIndustrial114, \mlIndustrial115, \mlIndustrial116, \mlIndustrial117, \mlIndustrial118, \mlIndustrial119, \mlIndustrial120, \mlIndustrial121, \mlIndustrial122, \mlIndustrial123, \mxlIndustrial100, \mxlIndustrial101, \mxlIndustrial102, \mxlIndustrial103, \mxlIndustrial104, \mxlIndustrial105, \mxlIndustrial106, \mxlIndustrial107, \mxlIndustrial108, \mxlIndustrial109, \mepicIndustrial100, \mepicIndustrial101], + \synthwave: [\m61, \ml7, \mxl6, \mSynthwave100, \mSynthwave101, \mSynthwave102, \mSynthwave103, \mSynthwave104, \mSynthwave105, \mSynthwave106, \mSynthwave107, \mSynthwave108, \mSynthwave109, \mSynthwave110, \mSynthwave111, \mSynthwave112, \mSynthwave113, \mSynthwave114, \mSynthwave115, \mSynthwave116, \mSynthwave117, \mSynthwave118, \mSynthwave119, \mSynthwave120, \mSynthwave121, \mSynthwave122, \mSynthwave123, \mSynthwave124, \mSynthwave125, \mSynthwave126, \mSynthwave127, \mSynthwave128, \mSynthwave129, \mSynthwave130, \mSynthwave131, \mSynthwave132, \mSynthwave133, \mSynthwave134, \mSynthwave135, \mSynthwave136, \mSynthwave137, \mSynthwave138, \mSynthwave139, \mSynthwave140, \mSynthwave141, \mlSynthwave100, \mlSynthwave101, \mlSynthwave102, \mlSynthwave103, \mlSynthwave104, \mlSynthwave105, \mlSynthwave106, \mlSynthwave107, \mlSynthwave108, \mlSynthwave109, \mlSynthwave110, \mlSynthwave111, \mxlSynthwave100, \mxlSynthwave101, \mxlSynthwave102, \mxlSynthwave103, \mxlSynthwave104, \mepicSynthwave100], + \chiptune: [\m62, \ml20, \mxl13, \mChiptune100, \mChiptune101, \mChiptune102, \mChiptune103, \mChiptune104, \mChiptune105, \mChiptune106, \mChiptune107, \mChiptune108, \mChiptune109, \mChiptune110, \mChiptune111, \mChiptune112, \mChiptune113, \mChiptune114, \mChiptune115, \mChiptune116, \mChiptune117, \mChiptune118, \mChiptune119, \mChiptune120, \mChiptune121, \mChiptune122, \mChiptune123, \mChiptune124, \mChiptune125, \mChiptune126, \mChiptune127, \mChiptune128, \mChiptune129, \mChiptune130, \mChiptune131, \mChiptune132, \mChiptune133, \mChiptune134, \mChiptune135, \mChiptune136, \mChiptune137, \mChiptune138, \mChiptune139, \mChiptune140, \mChiptune141, \mlChiptune100, \mlChiptune101, \mlChiptune102, \mlChiptune103, \mlChiptune104, \mlChiptune105, \mlChiptune106, \mlChiptune107, \mlChiptune108, \mlChiptune109, \mlChiptune110, \mlChiptune111, \mxlChiptune100, \mxlChiptune101, \mxlChiptune102, \mxlChiptune103, \mxlChiptune104, \mepicChiptune100], + \phonk: [\m66, \ml19, \mPhonk100, \mPhonk101, \mPhonk102, \mPhonk103, \mPhonk104, \mPhonk105, \mPhonk106, \mPhonk107, \mPhonk108, \mPhonk109, \mPhonk110, \mPhonk111, \mPhonk112, \mPhonk113, \mPhonk114, \mPhonk115, \mPhonk116, \mPhonk117, \mPhonk118, \mPhonk119, \mPhonk120, \mPhonk121, \mPhonk122, \mPhonk123, \mPhonk124, \mPhonk125, \mPhonk126, \mPhonk127, \mlPhonk100, \mlPhonk101, \mlPhonk102, \mlPhonk103, \mlPhonk104, \mlPhonk105, \mlPhonk106, \mlPhonk107, \mxlPhonk100, \mxlPhonk101, \mxlPhonk102, \mepicPhonk100], + \hardcore: [\m67, \ml24, \mxl9, \mepic7, \mHardcore100, \mHardcore101, \mHardcore102, \mHardcore103, \mHardcore104, \mHardcore105, \mHardcore106, \mHardcore107, \mHardcore108, \mHardcore109, \mHardcore110, \mHardcore111, \mHardcore112, \mHardcore113, \mHardcore114, \mHardcore115, \mHardcore116, \mHardcore117, \mHardcore118, \mHardcore119, \mHardcore120, \mHardcore121, \mHardcore122, \mHardcore123, \mHardcore124, \mHardcore125, \mHardcore126, \mHardcore127, \mHardcore128, \mHardcore129, \mHardcore130, \mHardcore131, \mHardcore132, \mHardcore133, \mHardcore134, \mHardcore135, \mHardcore136, \mHardcore137, \mHardcore138, \mHardcore139, \mHardcore140, \mHardcore141, \mHardcore142, \mHardcore143, \mHardcore144, \mHardcore145, \mHardcore146, \mHardcore147, \mHardcore148, \mHardcore149, \mHardcore150, \mHardcore151, \mHardcore152, \mHardcore153, \mHardcore154, \mHardcore155, \mlHardcore100, \mlHardcore101, \mlHardcore102, \mlHardcore103, \mlHardcore104, \mlHardcore105, \mlHardcore106, \mlHardcore107, \mlHardcore108, \mlHardcore109, \mlHardcore110, \mlHardcore111, \mlHardcore112, \mlHardcore113, \mlHardcore114, \mlHardcore115, \mxlHardcore100, \mxlHardcore101, \mxlHardcore102, \mxlHardcore103, \mxlHardcore104, \mxlHardcore105, \mepicHardcore100, \mepicHardcore101], + \pop: [\m35, \m36, \m49, \m50, \ml14, \mxl10, \mPop100, \mPop101, \mPop102, \mPop103, \mPop104, \mPop105, \mPop106, \mPop107, \mPop108, \mPop109, \mPop110, \mPop111, \mPop112, \mPop113, \mPop114, \mPop115, \mPop116, \mPop117, \mPop118, \mPop119, \mPop120, \mPop121, \mPop122, \mPop123, \mPop124, \mPop125, \mPop126, \mPop127, \mPop128, \mPop129, \mPop130, \mPop131, \mPop132, \mPop133, \mPop134, \mPop135, \mPop136, \mPop137, \mPop138, \mPop139, \mPop140, \mPop141, \mPop142, \mPop143, \mPop144, \mPop145, \mPop146, \mPop147, \mPop148, \mPop149, \mPop150, \mPop151, \mPop152, \mPop153, \mPop154, \mPop155, \mPop156, \mPop157, \mPop158, \mPop159, \mPop160, \mPop161, \mPop162, \mPop163, \mPop164, \mPop165, \mPop166, \mPop167, \mPop168, \mPop169, \mPop170, \mPop171, \mPop172, \mPop173, \mPop174, \mPop175, \mPop176, \mPop177, \mPop178, \mPop179, \mPop180, \mPop181, \mPop182, \mPop183, \mlPop100, \mlPop101, \mlPop102, \mlPop103, \mlPop104, \mlPop105, \mlPop106, \mlPop107, \mlPop108, \mlPop109, \mlPop110, \mlPop111, \mlPop112, \mlPop113, \mlPop114, \mlPop115, \mlPop116, \mlPop117, \mlPop118, \mlPop119, \mlPop120, \mlPop121, \mlPop122, \mlPop123, \mxlPop100, \mxlPop101, \mxlPop102, \mxlPop103, \mxlPop104, \mxlPop105, \mxlPop106, \mxlPop107, \mxlPop108, \mxlPop109, \mepicPop100, \mepicPop101], + \jazz: [\m51, \m52, \ml16, \ml27, \mJazz100, \mJazz101, \mJazz102, \mJazz103, \mJazz104, \mJazz105, \mJazz106, \mJazz107, \mJazz108, \mJazz109, \mJazz110, \mJazz111, \mJazz112, \mJazz113, \mJazz114, \mJazz115, \mJazz116, \mJazz117, \mJazz118, \mJazz119, \mJazz120, \mJazz121, \mJazz122, \mJazz123, \mJazz124, \mJazz125, \mJazz126, \mJazz127, \mJazz128, \mJazz129, \mJazz130, \mJazz131, \mJazz132, \mJazz133, \mJazz134, \mJazz135, \mJazz136, \mJazz137, \mJazz138, \mJazz139, \mJazz140, \mJazz141, \mJazz142, \mJazz143, \mJazz144, \mJazz145, \mJazz146, \mJazz147, \mJazz148, \mJazz149, \mJazz150, \mJazz151, \mJazz152, \mJazz153, \mJazz154, \mJazz155, \mlJazz100, \mlJazz101, \mlJazz102, \mlJazz103, \mlJazz104, \mlJazz105, \mlJazz106, \mlJazz107, \mlJazz108, \mlJazz109, \mlJazz110, \mlJazz111, \mlJazz112, \mlJazz113, \mlJazz114, \mlJazz115, \mxlJazz100, \mxlJazz101, \mxlJazz102, \mxlJazz103, \mxlJazz104, \mxlJazz105, \mepicJazz100, \mepicJazz101], + \blues: [\m16, \m47, \mBlues100, \mBlues101, \mBlues102, \mBlues103, \mBlues104, \mBlues105, \mBlues106, \mBlues107, \mBlues108, \mBlues109, \mBlues110, \mBlues111, \mBlues112, \mBlues113, \mBlues114, \mBlues115, \mBlues116, \mBlues117, \mBlues118, \mBlues119, \mBlues120, \mBlues121, \mBlues122, \mBlues123, \mBlues124, \mBlues125, \mBlues126, \mBlues127, \mlBlues100, \mlBlues101, \mlBlues102, \mlBlues103, \mlBlues104, \mlBlues105, \mlBlues106, \mlBlues107, \mxlBlues100, \mxlBlues101, \mxlBlues102, \mepicBlues100], + \hypnotic: [\m2, \m11, \m27, \m54, \m55, \m56, \ml12, \mxl7, \mHypnotic100, \mHypnotic101, \mHypnotic102, \mHypnotic103, \mHypnotic104, \mHypnotic105, \mHypnotic106, \mHypnotic107, \mHypnotic108, \mHypnotic109, \mHypnotic110, \mHypnotic111, \mHypnotic112, \mHypnotic113, \mHypnotic114, \mHypnotic115, \mHypnotic116, \mHypnotic117, \mHypnotic118, \mHypnotic119, \mHypnotic120, \mHypnotic121, \mHypnotic122, \mHypnotic123, \mHypnotic124, \mHypnotic125, \mHypnotic126, \mHypnotic127, \mHypnotic128, \mHypnotic129, \mHypnotic130, \mHypnotic131, \mHypnotic132, \mHypnotic133, \mHypnotic134, \mHypnotic135, \mHypnotic136, \mHypnotic137, \mHypnotic138, \mHypnotic139, \mHypnotic140, \mHypnotic141, \mHypnotic142, \mHypnotic143, \mHypnotic144, \mHypnotic145, \mHypnotic146, \mHypnotic147, \mHypnotic148, \mHypnotic149, \mHypnotic150, \mHypnotic151, \mHypnotic152, \mHypnotic153, \mHypnotic154, \mHypnotic155, \mHypnotic156, \mHypnotic157, \mHypnotic158, \mHypnotic159, \mHypnotic160, \mHypnotic161, \mHypnotic162, \mHypnotic163, \mHypnotic164, \mHypnotic165, \mHypnotic166, \mHypnotic167, \mHypnotic168, \mHypnotic169, \mHypnotic170, \mHypnotic171, \mHypnotic172, \mHypnotic173, \mHypnotic174, \mHypnotic175, \mHypnotic176, \mHypnotic177, \mHypnotic178, \mHypnotic179, \mHypnotic180, \mHypnotic181, \mHypnotic182, \mHypnotic183, \mHypnotic184, \mHypnotic185, \mHypnotic186, \mHypnotic187, \mHypnotic188, \mHypnotic189, \mHypnotic190, \mHypnotic191, \mHypnotic192, \mHypnotic193, \mHypnotic194, \mHypnotic195, \mHypnotic196, \mHypnotic197, \mHypnotic198, \mHypnotic199, \mHypnotic200, \mHypnotic201, \mHypnotic202, \mHypnotic203, \mHypnotic204, \mHypnotic205, \mHypnotic206, \mHypnotic207, \mHypnotic208, \mHypnotic209, \mHypnotic210, \mHypnotic211, \mlHypnotic100, \mlHypnotic101, \mlHypnotic102, \mlHypnotic103, \mlHypnotic104, \mlHypnotic105, \mlHypnotic106, \mlHypnotic107, \mlHypnotic108, \mlHypnotic109, \mlHypnotic110, \mlHypnotic111, \mlHypnotic112, \mlHypnotic113, \mlHypnotic114, \mlHypnotic115, \mlHypnotic116, \mlHypnotic117, \mlHypnotic118, \mlHypnotic119, \mlHypnotic120, \mlHypnotic121, \mlHypnotic122, \mlHypnotic123, \mlHypnotic124, \mlHypnotic125, \mlHypnotic126, \mlHypnotic127, \mlHypnotic128, \mlHypnotic129, \mlHypnotic130, \mlHypnotic131, \mxlHypnotic100, \mxlHypnotic101, \mxlHypnotic102, \mxlHypnotic103, \mxlHypnotic104, \mxlHypnotic105, \mxlHypnotic106, \mxlHypnotic107, \mxlHypnotic108, \mxlHypnotic109, \mxlHypnotic110, \mxlHypnotic111, \mxlHypnotic112, \mepicHypnotic100, \mepicHypnotic101, \mepicHypnotic102], + \pad: [\m33, \m34, \ml5, \mxl3, \mPad100, \mPad101, \mPad102, \mPad103, \mPad104, \mPad105, \mPad106, \mPad107, \mPad108, \mPad109, \mPad110, \mPad111, \mPad112, \mPad113, \mPad114, \mPad115, \mPad116, \mPad117, \mPad118, \mPad119, \mPad120, \mPad121, \mPad122, \mPad123, \mPad124, \mPad125, \mPad126, \mPad127, \mPad128, \mPad129, \mPad130, \mPad131, \mPad132, \mPad133, \mPad134, \mPad135, \mPad136, \mPad137, \mPad138, \mPad139, \mPad140, \mPad141, \mPad142, \mPad143, \mPad144, \mPad145, \mPad146, \mPad147, \mPad148, \mPad149, \mPad150, \mPad151, \mPad152, \mPad153, \mPad154, \mPad155, \mlPad100, \mlPad101, \mlPad102, \mlPad103, \mlPad104, \mlPad105, \mlPad106, \mlPad107, \mlPad108, \mlPad109, \mlPad110, \mlPad111, \mlPad112, \mlPad113, \mlPad114, \mlPad115, \mxlPad100, \mxlPad101, \mxlPad102, \mxlPad103, \mxlPad104, \mxlPad105, \mepicPad100, \mepicPad101], + \pluck: [\m32, \mPluck100, \mPluck101, \mPluck102, \mPluck103, \mPluck104, \mPluck105, \mPluck106, \mPluck107, \mPluck108, \mPluck109, \mPluck110, \mPluck111, \mPluck112, \mPluck113, \mlPluck100, \mlPluck101, \mlPluck102, \mlPluck103, \mxlPluck100, \mxlPluck101, \mepicPluck100], + \sub: [\m5, \m31, \m37, \m63, \ml4, \mSub100, \mSub101, \mSub102, \mSub103, \mSub104, \mSub105, \mSub106, \mSub107, \mSub108, \mSub109, \mSub110, \mSub111, \mSub112, \mSub113, \mSub114, \mSub115, \mSub116, \mSub117, \mSub118, \mSub119, \mSub120, \mSub121, \mSub122, \mSub123, \mSub124, \mSub125, \mSub126, \mSub127, \mSub128, \mSub129, \mSub130, \mSub131, \mSub132, \mSub133, \mSub134, \mSub135, \mSub136, \mSub137, \mSub138, \mSub139, \mSub140, \mSub141, \mSub142, \mSub143, \mSub144, \mSub145, \mSub146, \mSub147, \mSub148, \mSub149, \mSub150, \mSub151, \mSub152, \mSub153, \mSub154, \mSub155, \mSub156, \mSub157, \mSub158, \mSub159, \mSub160, \mSub161, \mSub162, \mSub163, \mSub164, \mSub165, \mSub166, \mSub167, \mSub168, \mSub169, \mlSub100, \mlSub101, \mlSub102, \mlSub103, \mlSub104, \mlSub105, \mlSub106, \mlSub107, \mlSub108, \mlSub109, \mlSub110, \mlSub111, \mlSub112, \mlSub113, \mlSub114, \mlSub115, \mlSub116, \mlSub117, \mlSub118, \mlSub119, \mxlSub100, \mxlSub101, \mxlSub102, \mxlSub103, \mxlSub104, \mxlSub105, \mxlSub106, \mxlSub107, \mepicSub100, \mepicSub101], + \drone: [\m37, \m38, \mDrone100, \mDrone101, \mDrone102, \mDrone103, \mDrone104, \mDrone105, \mDrone106, \mDrone107, \mDrone108, \mDrone109, \mDrone110, \mDrone111, \mDrone112, \mDrone113, \mDrone114, \mDrone115, \mDrone116, \mDrone117, \mDrone118, \mDrone119, \mDrone120, \mDrone121, \mDrone122, \mDrone123, \mDrone124, \mDrone125, \mDrone126, \mDrone127, \mlDrone100, \mlDrone101, \mlDrone102, \mlDrone103, \mlDrone104, \mlDrone105, \mlDrone106, \mlDrone107, \mxlDrone100, \mxlDrone101, \mxlDrone102, \mepicDrone100], + \tension: [\m53, \m59, \ml28, \m58, \ml30, \mTension100, \mTension101, \mTension102, \mTension103, \mTension104, \mTension105, \mTension106, \mTension107, \mTension108, \mTension109, \mTension110, \mTension111, \mTension112, \mTension113, \mTension114, \mTension115, \mTension116, \mTension117, \mTension118, \mTension119, \mTension120, \mTension121, \mTension122, \mTension123, \mTension124, \mTension125, \mTension126, \mTension127, \mTension128, \mTension129, \mTension130, \mTension131, \mTension132, \mTension133, \mTension134, \mTension135, \mTension136, \mTension137, \mTension138, \mTension139, \mTension140, \mTension141, \mTension142, \mTension143, \mTension144, \mTension145, \mTension146, \mTension147, \mTension148, \mTension149, \mTension150, \mTension151, \mTension152, \mTension153, \mTension154, \mTension155, \mTension156, \mTension157, \mTension158, \mTension159, \mTension160, \mTension161, \mTension162, \mTension163, \mTension164, \mTension165, \mTension166, \mTension167, \mTension168, \mTension169, \mlTension100, \mlTension101, \mlTension102, \mlTension103, \mlTension104, \mlTension105, \mlTension106, \mlTension107, \mlTension108, \mlTension109, \mlTension110, \mlTension111, \mlTension112, \mlTension113, \mlTension114, \mlTension115, \mlTension116, \mlTension117, \mlTension118, \mlTension119, \mxlTension100, \mxlTension101, \mxlTension102, \mxlTension103, \mxlTension104, \mxlTension105, \mxlTension106, \mxlTension107, \mepicTension100, \mepicTension101], + \chromatic: [\m57, \ml29, \mChromatic100, \mChromatic101, \mChromatic102, \mChromatic103, \mChromatic104, \mChromatic105, \mChromatic106, \mChromatic107, \mChromatic108, \mChromatic109, \mChromatic110, \mChromatic111, \mChromatic112, \mChromatic113, \mChromatic114, \mChromatic115, \mChromatic116, \mChromatic117, \mChromatic118, \mChromatic119, \mChromatic120, \mChromatic121, \mChromatic122, \mChromatic123, \mChromatic124, \mChromatic125, \mChromatic126, \mChromatic127, \mlChromatic100, \mlChromatic101, \mlChromatic102, \mlChromatic103, \mlChromatic104, \mlChromatic105, \mlChromatic106, \mlChromatic107, \mxlChromatic100, \mxlChromatic101, \mxlChromatic102, \mepicChromatic100], + \cinematic: [\m73, \mxl3, \mepic2, \mepic10, \mCinematic100, \mCinematic101, \mCinematic102, \mCinematic103, \mCinematic104, \mCinematic105, \mCinematic106, \mCinematic107, \mCinematic108, \mCinematic109, \mCinematic110, \mCinematic111, \mCinematic112, \mCinematic113, \mCinematic114, \mCinematic115, \mCinematic116, \mCinematic117, \mCinematic118, \mCinematic119, \mCinematic120, \mCinematic121, \mCinematic122, \mCinematic123, \mCinematic124, \mCinematic125, \mCinematic126, \mCinematic127, \mCinematic128, \mCinematic129, \mCinematic130, \mCinematic131, \mCinematic132, \mCinematic133, \mCinematic134, \mCinematic135, \mCinematic136, \mCinematic137, \mCinematic138, \mCinematic139, \mCinematic140, \mCinematic141, \mCinematic142, \mCinematic143, \mCinematic144, \mCinematic145, \mCinematic146, \mCinematic147, \mCinematic148, \mCinematic149, \mCinematic150, \mCinematic151, \mCinematic152, \mCinematic153, \mCinematic154, \mCinematic155, \mlCinematic100, \mlCinematic101, \mlCinematic102, \mlCinematic103, \mlCinematic104, \mlCinematic105, \mlCinematic106, \mlCinematic107, \mlCinematic108, \mlCinematic109, \mlCinematic110, \mlCinematic111, \mlCinematic112, \mlCinematic113, \mlCinematic114, \mlCinematic115, \mxlCinematic100, \mxlCinematic101, \mxlCinematic102, \mxlCinematic103, \mxlCinematic104, \mxlCinematic105, \mepicCinematic100, \mepicCinematic101] +); + +// ---------- Selecteurs ---------------------------------------------- +~useMelody = { |name| + var notes = currentEnvironment[name]; + if (notes.notNil and: { notes.isArray }) { + ~melodyNotes = notes.copy; + ~reload.value; + ("useMelody : " ++ name).postln; + } { + ("useMelody : " ++ name ++ " inconnue").postln; + }; +}; + +~randomLong = { + var key = (1..30).collect { |i| ("ml" ++ i).asSymbol }.choose; + var notes = currentEnvironment[key]; + if (notes.notNil and: { notes.isArray }) { + ~melodyNotes = notes.copy; ~reload.value; + ("randomLong : " ++ key).postln; + } { ("randomLong : " ++ key ++ " inconnue").postln }; +}; + +~randomXLong = { + var key = (1..15).collect { |i| ("mxl" ++ i).asSymbol }.choose; + var notes = currentEnvironment[key]; + if (notes.notNil and: { notes.isArray }) { + ~melodyNotes = notes.copy; ~reload.value; + ("randomXLong : " ++ key).postln; + } { ("randomXLong : " ++ key ++ " inconnue").postln }; +}; + +~randomEpic = { + var key = (1..10).collect { |i| ("mepic" ++ i).asSymbol }.choose; + var notes = currentEnvironment[key]; + if (notes.notNil and: { notes.isArray }) { + ~melodyNotes = notes.copy; ~reload.value; + ("randomEpic : " ++ key).postln; + } { ("randomEpic : " ++ key ++ " inconnue").postln }; +}; + +~melodyByGenre = { |genre| + var pool = ~melodyBank[genre]; + if (pool.notNil and: { pool.size > 0 }) { + var key = pool.choose; + var notes = currentEnvironment[key]; + if (notes.notNil and: { notes.isArray }) { + ~melodyNotes = notes.copy; ~reload.value; + ("melodyByGenre : " ++ genre ++ " -> " ++ key).postln; + } { ("melodyByGenre : " ++ key ++ " inconnue (defini ?)").postln }; + } { + ("melodyByGenre : " ++ genre ++ " inconnu ou vide").postln; + }; +}; + +"[melodies/bank] melodyBank + useMelody/randomLong/randomXLong/randomEpic/melodyByGenre prets".postln; +) diff --git a/sound_algo/palette/melodies/epic.scd b/sound_algo/palette/melodies/epic.scd new file mode 100644 index 0000000..82d9c66 --- /dev/null +++ b/sound_algo/palette/melodies/epic.scd @@ -0,0 +1,119 @@ +// ===================================================================== +// palette/melodies/epic.scd +// ~mepic1..~mepic10 -- 10 patterns melodiques de 128 pas (8 mesures) +// +// Charge par palette/melodies/index.scd. Un seul bloc top-level. +// ===================================================================== +( +~mepic1 = [ + 60, 0, 0, 0, 67, 0, 0, 0, 72, 0, 0, 0, 70, 0, 0, 0, + 60, 0, 0, 0, 67, 0, 70, 0, 72, 0, 75, 0, 72, 0, 70, 67, + 60, 67, 72, 67, 65, 67, 70, 72, 75, 72, 70, 67, 70, 72, 75, 79, + 60, 67, 72, 75, 72, 67, 60, 67, 65, 72, 77, 79, 77, 72, 65, 72, + 79, 77, 75, 72, 79, 77, 75, 72, 82, 79, 77, 75, 84, 82, 79, 77, + 84, 82, 79, 77, 84, 82, 79, 84, 87, 84, 82, 79, 89, 87, 84, 82, + 79, 0, 77, 0, 75, 0, 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, + 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic2 = [ + 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 63, 0, 67, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 60, 63, 67, 70, 72, 70, 67, 63, 65, 67, 70, 72, 75, 72, 70, 67, + 65, 70, 72, 75, 77, 75, 72, 70, 72, 75, 77, 79, 82, 79, 77, 75, + 72, 75, 77, 79, 82, 79, 77, 79, 84, 82, 79, 77, 79, 82, 84, 87, + 79, 82, 84, 87, 84, 82, 79, 77, 75, 77, 79, 82, 79, 77, 75, 72, + 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic3 = [ + 63, 0, 70, 0, 65, 0, 72, 0, 63, 0, 70, 0, 65, 0, 72, 75, + 65, 0, 72, 0, 67, 0, 75, 0, 65, 0, 72, 0, 67, 0, 75, 79, + 63, 70, 65, 72, 67, 75, 70, 77, 72, 79, 75, 82, 77, 84, 79, 86, + 65, 72, 67, 75, 70, 77, 72, 79, 75, 82, 77, 84, 79, 86, 82, 89, + 79, 86, 82, 89, 84, 91, 86, 93, 82, 89, 84, 91, 86, 93, 88, 95, + 84, 0, 82, 0, 79, 0, 77, 0, 75, 0, 72, 0, 70, 0, 67, 0, + 65, 0, 63, 0, 60, 0, 65, 0, 67, 0, 63, 0, 65, 0, 60, 0, + 63, 0, 65, 67, 65, 63, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic4 = [ + 60, 61, 0, 64, 65, 0, 67, 68, 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 68, 71, 72, 71, 68, 67, 65, 64, 61, 60, 0, + 63, 64, 67, 68, 70, 71, 0, 73, 75, 73, 71, 70, 68, 67, 64, 63, + 60, 61, 64, 65, 67, 68, 71, 72, 75, 72, 71, 68, 67, 64, 61, 60, + 65, 67, 68, 71, 72, 73, 76, 75, 76, 75, 73, 72, 71, 68, 67, 65, + 72, 73, 76, 75, 73, 72, 71, 68, 76, 79, 80, 83, 84, 83, 80, 79, + 79, 80, 83, 84, 87, 84, 83, 80, 76, 75, 73, 72, 71, 68, 67, 65, + 72, 71, 68, 67, 65, 64, 61, 60, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic5 = [ + 36, 0, 48, 0, 36, 39, 0, 48, 36, 0, 51, 39, 0, 36, 48, 0, + 36, 0, 48, 51, 36, 39, 48, 51, 39, 0, 36, 48, 0, 39, 0, 36, + 36, 51, 48, 36, 39, 0, 51, 48, 36, 0, 51, 53, 39, 36, 48, 0, + 36, 53, 51, 48, 39, 0, 36, 48, 36, 0, 51, 0, 48, 39, 36, 0, + 39, 0, 51, 0, 39, 41, 0, 51, 39, 0, 53, 41, 0, 39, 51, 0, + 36, 39, 41, 43, 41, 39, 36, 0, 41, 39, 36, 0, 39, 36, 0, 0, + 48, 0, 60, 0, 48, 51, 0, 60, 48, 0, 63, 51, 0, 48, 60, 0, + 36, 39, 41, 43, 46, 43, 41, 39, 36, 0, 48, 0, 36, 0, 0, 0 +]; + +~mepic6 = [ + 72, 0, 70, 0, 67, 70, 0, 65, 63, 0, 65, 67, 70, 0, 72, 75, + 77, 0, 75, 0, 72, 75, 0, 70, 67, 0, 70, 72, 75, 0, 77, 79, + 75, 0, 77, 0, 75, 72, 0, 70, 67, 0, 65, 67, 70, 0, 75, 72, + 79, 0, 82, 0, 79, 77, 0, 75, 72, 0, 70, 75, 77, 0, 82, 79, + 84, 0, 87, 0, 84, 82, 0, 79, 77, 0, 79, 82, 84, 0, 87, 89, + 87, 0, 84, 0, 82, 0, 79, 0, 77, 0, 75, 0, 72, 0, 70, 0, + 75, 0, 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 65, 67, + 65, 0, 63, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic7 = [ + 60, 0, 0, 0, 60, 0, 60, 0, 73, 0, 0, 0, 73, 0, 73, 0, + 60, 60, 0, 73, 73, 0, 60, 73, 79, 0, 73, 0, 60, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 65, 0, 78, 0, 0, 0, 78, 0, 78, 0, + 65, 65, 0, 78, 78, 0, 65, 78, 84, 0, 78, 0, 65, 0, 0, 0, + 67, 0, 0, 0, 67, 0, 80, 0, 80, 67, 80, 67, 80, 84, 80, 67, + 72, 84, 72, 84, 72, 84, 72, 84, 85, 0, 0, 0, 85, 0, 97, 0, + 85, 97, 85, 97, 85, 97, 85, 97, 84, 96, 84, 96, 84, 96, 84, 96, + 72, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic8 = [ + 60, 61, 63, 0, 65, 63, 61, 60, 0, 67, 65, 0, 68, 67, 65, 63, + 60, 61, 63, 0, 65, 63, 61, 60, 67, 65, 63, 61, 60, 0, 0, 0, + 63, 65, 67, 0, 68, 67, 65, 63, 0, 70, 68, 0, 72, 70, 68, 67, + 65, 67, 68, 0, 70, 68, 67, 65, 0, 72, 70, 0, 73, 72, 70, 68, + 67, 68, 70, 0, 72, 70, 68, 67, 72, 73, 75, 0, 77, 75, 73, 72, + 73, 75, 77, 0, 79, 77, 75, 73, 75, 77, 79, 0, 80, 79, 77, 75, + 73, 72, 70, 68, 67, 65, 63, 61, 60, 0, 67, 0, 65, 0, 63, 0, + 61, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic9 = [ + 72, 0, 0, 67, 0, 65, 0, 62, 60, 0, 62, 0, 65, 0, 67, 72, + 74, 0, 0, 69, 0, 67, 0, 65, 62, 0, 65, 0, 67, 0, 72, 0, + 74, 0, 77, 0, 79, 0, 77, 74, 72, 0, 69, 0, 67, 0, 65, 62, + 77, 0, 79, 0, 81, 0, 79, 77, 74, 0, 72, 0, 69, 0, 67, 65, + 79, 81, 84, 86, 84, 81, 79, 77, 74, 72, 69, 67, 65, 62, 60, 0, + 81, 84, 86, 89, 91, 89, 86, 84, 81, 79, 77, 74, 72, 69, 67, 65, + 72, 0, 74, 0, 77, 0, 79, 0, 77, 0, 74, 0, 72, 0, 69, 0, + 67, 0, 65, 0, 62, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mepic10 = [ + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, + 48, 0, 51, 0, 55, 0, 58, 0, 60, 0, 0, 0, 0, 0, 0, 0, + 60, 63, 67, 70, 72, 70, 67, 63, 65, 67, 70, 72, 75, 72, 70, 67, + 65, 70, 72, 75, 77, 75, 72, 70, 72, 75, 77, 79, 82, 79, 77, 75, + 79, 82, 84, 87, 89, 87, 84, 82, 84, 87, 89, 91, 94, 91, 89, 87, + 91, 89, 87, 84, 82, 79, 77, 75, 72, 70, 67, 65, 63, 60, 58, 55, + 51, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +"[melodies/epic] mepic1..mepic10 (128 steps) prets".postln; +) diff --git a/sound_algo/palette/melodies/epic/mepic1.scd b/sound_algo/palette/melodies/epic/mepic1.scd new file mode 100644 index 0000000..dea95cd --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepic1.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepic1 -- epic melody (128 steps), genre: trance +// ===================================================================== +( +~mepic1 = [ + 60, 0, 0, 0, 67, 0, 0, 0, + 72, 0, 0, 0, 70, 0, 0, 0, + 60, 0, 0, 0, 67, 0, 70, 0, + 72, 0, 75, 0, 72, 0, 70, 67, + 60, 67, 72, 67, 65, 67, 70, 72, + 75, 72, 70, 67, 70, 72, 75, 79, + 60, 67, 72, 75, 72, 67, 60, 67, + 65, 72, 77, 79, 77, 72, 65, 72, + 79, 77, 75, 72, 79, 77, 75, 72, + 82, 79, 77, 75, 84, 82, 79, 77, + 84, 82, 79, 77, 84, 82, 79, 84, + 87, 84, 82, 79, 89, 87, 84, 82, + 79, 0, 77, 0, 75, 0, 72, 0, + 70, 0, 67, 0, 65, 0, 63, 0, + 60, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepic10.scd b/sound_algo/palette/melodies/epic/mepic10.scd new file mode 100644 index 0000000..1fccb93 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepic10.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepic10 -- epic melody (128 steps), genre: cinematic +// ===================================================================== +( +~mepic10 = [ + 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 51, 0, 0, 0, + 0, 0, 0, 0, 55, 0, 0, 0, + 48, 0, 51, 0, 55, 0, 58, 0, + 60, 0, 0, 0, 0, 0, 0, 0, + 60, 63, 67, 70, 72, 70, 67, 63, + 65, 67, 70, 72, 75, 72, 70, 67, + 65, 70, 72, 75, 77, 75, 72, 70, + 72, 75, 77, 79, 82, 79, 77, 75, + 79, 82, 84, 87, 89, 87, 84, 82, + 84, 87, 89, 91, 94, 91, 89, 87, + 91, 89, 87, 84, 82, 79, 77, 75, + 72, 70, 67, 65, 63, 60, 58, 55, + 51, 0, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepic2.scd b/sound_algo/palette/melodies/epic/mepic2.scd new file mode 100644 index 0000000..cffc953 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepic2.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepic2 -- epic melody (128 steps), genre: cinematic +// ===================================================================== +( +~mepic2 = [ + 60, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 63, 0, 67, 0, 70, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 60, 63, 67, 70, 72, 70, 67, 63, + 65, 67, 70, 72, 75, 72, 70, 67, + 65, 70, 72, 75, 77, 75, 72, 70, + 72, 75, 77, 79, 82, 79, 77, 75, + 72, 75, 77, 79, 82, 79, 77, 79, + 84, 82, 79, 77, 79, 82, 84, 87, + 79, 82, 84, 87, 84, 82, 79, 77, + 75, 77, 79, 82, 79, 77, 75, 72, + 70, 0, 67, 0, 65, 0, 63, 0, + 60, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepic3.scd b/sound_algo/palette/melodies/epic/mepic3.scd new file mode 100644 index 0000000..5710b61 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepic3.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepic3 -- epic melody (128 steps), genre: detroit +// ===================================================================== +( +~mepic3 = [ + 63, 0, 70, 0, 65, 0, 72, 0, + 63, 0, 70, 0, 65, 0, 72, 75, + 65, 0, 72, 0, 67, 0, 75, 0, + 65, 0, 72, 0, 67, 0, 75, 79, + 63, 70, 65, 72, 67, 75, 70, 77, + 72, 79, 75, 82, 77, 84, 79, 86, + 65, 72, 67, 75, 70, 77, 72, 79, + 75, 82, 77, 84, 79, 86, 82, 89, + 79, 86, 82, 89, 84, 91, 86, 93, + 82, 89, 84, 91, 86, 93, 88, 95, + 84, 0, 82, 0, 79, 0, 77, 0, + 75, 0, 72, 0, 70, 0, 67, 0, + 65, 0, 63, 0, 60, 0, 65, 0, + 67, 0, 63, 0, 65, 0, 60, 0, + 63, 0, 65, 67, 65, 63, 60, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepic4.scd b/sound_algo/palette/melodies/epic/mepic4.scd new file mode 100644 index 0000000..aa64a2f --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepic4.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepic4 -- epic melody (128 steps), genre: oriental +// ===================================================================== +( +~mepic4 = [ + 60, 61, 0, 64, 65, 0, 67, 68, + 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 68, 71, 72, + 71, 68, 67, 65, 64, 61, 60, 0, + 63, 64, 67, 68, 70, 71, 0, 73, + 75, 73, 71, 70, 68, 67, 64, 63, + 60, 61, 64, 65, 67, 68, 71, 72, + 75, 72, 71, 68, 67, 64, 61, 60, + 65, 67, 68, 71, 72, 73, 76, 75, + 76, 75, 73, 72, 71, 68, 67, 65, + 72, 73, 76, 75, 73, 72, 71, 68, + 76, 79, 80, 83, 84, 83, 80, 79, + 79, 80, 83, 84, 87, 84, 83, 80, + 76, 75, 73, 72, 71, 68, 67, 65, + 72, 71, 68, 67, 65, 64, 61, 60, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepic5.scd b/sound_algo/palette/melodies/epic/mepic5.scd new file mode 100644 index 0000000..0ba4133 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepic5.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepic5 -- epic melody (128 steps), genre: acid +// ===================================================================== +( +~mepic5 = [ + 36, 0, 48, 0, 36, 39, 0, 48, + 36, 0, 51, 39, 0, 36, 48, 0, + 36, 0, 48, 51, 36, 39, 48, 51, + 39, 0, 36, 48, 0, 39, 0, 36, + 36, 51, 48, 36, 39, 0, 51, 48, + 36, 0, 51, 53, 39, 36, 48, 0, + 36, 53, 51, 48, 39, 0, 36, 48, + 36, 0, 51, 0, 48, 39, 36, 0, + 39, 0, 51, 0, 39, 41, 0, 51, + 39, 0, 53, 41, 0, 39, 51, 0, + 36, 39, 41, 43, 41, 39, 36, 0, + 41, 39, 36, 0, 39, 36, 0, 0, + 48, 0, 60, 0, 48, 51, 0, 60, + 48, 0, 63, 51, 0, 48, 60, 0, + 36, 39, 41, 43, 46, 43, 41, 39, + 36, 0, 48, 0, 36, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepic6.scd b/sound_algo/palette/melodies/epic/mepic6.scd new file mode 100644 index 0000000..e1bf3fd --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepic6.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepic6 -- epic melody (128 steps), genre: trance +// ===================================================================== +( +~mepic6 = [ + 72, 0, 70, 0, 67, 70, 0, 65, + 63, 0, 65, 67, 70, 0, 72, 75, + 77, 0, 75, 0, 72, 75, 0, 70, + 67, 0, 70, 72, 75, 0, 77, 79, + 75, 0, 77, 0, 75, 72, 0, 70, + 67, 0, 65, 67, 70, 0, 75, 72, + 79, 0, 82, 0, 79, 77, 0, 75, + 72, 0, 70, 75, 77, 0, 82, 79, + 84, 0, 87, 0, 84, 82, 0, 79, + 77, 0, 79, 82, 84, 0, 87, 89, + 87, 0, 84, 0, 82, 0, 79, 0, + 77, 0, 75, 0, 72, 0, 70, 0, + 75, 0, 72, 0, 70, 0, 67, 0, + 65, 0, 63, 0, 60, 0, 65, 67, + 65, 0, 63, 0, 60, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepic7.scd b/sound_algo/palette/melodies/epic/mepic7.scd new file mode 100644 index 0000000..851344c --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepic7.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepic7 -- epic melody (128 steps), genre: industrial +// ===================================================================== +( +~mepic7 = [ + 60, 0, 0, 0, 60, 0, 60, 0, + 73, 0, 0, 0, 73, 0, 73, 0, + 60, 60, 0, 73, 73, 0, 60, 73, + 79, 0, 73, 0, 60, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 65, 0, + 78, 0, 0, 0, 78, 0, 78, 0, + 65, 65, 0, 78, 78, 0, 65, 78, + 84, 0, 78, 0, 65, 0, 0, 0, + 67, 0, 0, 0, 67, 0, 80, 0, + 80, 67, 80, 67, 80, 84, 80, 67, + 72, 84, 72, 84, 72, 84, 72, 84, + 85, 0, 0, 0, 85, 0, 97, 0, + 85, 97, 85, 97, 85, 97, 85, 97, + 84, 96, 84, 96, 84, 96, 84, 96, + 72, 0, 60, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepic8.scd b/sound_algo/palette/melodies/epic/mepic8.scd new file mode 100644 index 0000000..f5abe4c --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepic8.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepic8 -- epic melody (128 steps), genre: dark +// ===================================================================== +( +~mepic8 = [ + 60, 61, 63, 0, 65, 63, 61, 60, + 0, 67, 65, 0, 68, 67, 65, 63, + 60, 61, 63, 0, 65, 63, 61, 60, + 67, 65, 63, 61, 60, 0, 0, 0, + 63, 65, 67, 0, 68, 67, 65, 63, + 0, 70, 68, 0, 72, 70, 68, 67, + 65, 67, 68, 0, 70, 68, 67, 65, + 0, 72, 70, 0, 73, 72, 70, 68, + 67, 68, 70, 0, 72, 70, 68, 67, + 72, 73, 75, 0, 77, 75, 73, 72, + 73, 75, 77, 0, 79, 77, 75, 73, + 75, 77, 79, 0, 80, 79, 77, 75, + 73, 72, 70, 68, 67, 65, 63, 61, + 60, 0, 67, 0, 65, 0, 63, 0, + 61, 0, 60, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepic9.scd b/sound_algo/palette/melodies/epic/mepic9.scd new file mode 100644 index 0000000..11a985a --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepic9.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepic9 -- epic melody (128 steps), genre: world +// ===================================================================== +( +~mepic9 = [ + 72, 0, 0, 67, 0, 65, 0, 62, + 60, 0, 62, 0, 65, 0, 67, 72, + 74, 0, 0, 69, 0, 67, 0, 65, + 62, 0, 65, 0, 67, 0, 72, 0, + 74, 0, 77, 0, 79, 0, 77, 74, + 72, 0, 69, 0, 67, 0, 65, 62, + 77, 0, 79, 0, 81, 0, 79, 77, + 74, 0, 72, 0, 69, 0, 67, 65, + 79, 81, 84, 86, 84, 81, 79, 77, + 74, 72, 69, 67, 65, 62, 60, 0, + 81, 84, 86, 89, 91, 89, 86, 84, + 81, 79, 77, 74, 72, 69, 67, 65, + 72, 0, 74, 0, 77, 0, 79, 0, + 77, 0, 74, 0, 72, 0, 69, 0, + 67, 0, 65, 0, 62, 0, 60, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicAcid100.scd b/sound_algo/palette/melodies/epic/mepicAcid100.scd new file mode 100644 index 0000000..43250c0 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicAcid100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicAcid100 -- epic melody (128 steps), genre: acid +// ===================================================================== +( +~mepicAcid100 = [ + 55, 47, 0, 60, 52, 0, 48, 0, + 47, 40, 48, 53, 41, 53, 43, 38, + 0, 0, 45, 0, 43, 47, 38, 0, + 50, 60, 38, 0, 47, 0, 53, 52, + 45, 57, 40, 0, 55, 60, 56, 55, + 48, 60, 46, 43, 59, 43, 47, 0, + 36, 0, 57, 48, 0, 55, 53, 0, + 47, 47, 50, 0, 0, 48, 0, 41, + 55, 36, 56, 60, 55, 36, 53, 50, + 38, 60, 40, 57, 0, 0, 0, 52, + 43, 50, 41, 50, 0, 40, 0, 57, + 59, 57, 60, 45, 47, 55, 46, 0, + 52, 57, 36, 0, 45, 47, 44, 0, + 0, 50, 52, 38, 0, 50, 0, 57, + 52, 60, 50, 0, 0, 43, 60, 0, + 0, 38, 52, 50, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicAcid101.scd b/sound_algo/palette/melodies/epic/mepicAcid101.scd new file mode 100644 index 0000000..eaef25a --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicAcid101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicAcid101 -- epic melody (128 steps), genre: acid +// ===================================================================== +( +~mepicAcid101 = [ + 59, 55, 54, 0, 0, 43, 0, 0, + 40, 40, 40, 0, 0, 57, 55, 45, + 47, 60, 40, 0, 0, 60, 0, 0, + 52, 60, 0, 36, 0, 60, 55, 0, + 59, 55, 54, 0, 0, 43, 0, 0, + 40, 40, 40, 0, 0, 57, 55, 45, + 47, 60, 40, 0, 0, 60, 0, 0, + 52, 60, 0, 36, 0, 60, 55, 0, + 47, 57, 40, 54, 40, 36, 48, 0, + 52, 42, 43, 38, 0, 50, 0, 60, + 52, 0, 38, 45, 0, 57, 54, 50, + 52, 0, 53, 59, 55, 60, 59, 0, + 59, 55, 54, 0, 0, 43, 0, 0, + 40, 40, 40, 0, 0, 57, 55, 45, + 47, 60, 40, 0, 0, 60, 0, 0, + 52, 60, 0, 36, 0, 60, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicAmbient100.scd b/sound_algo/palette/melodies/epic/mepicAmbient100.scd new file mode 100644 index 0000000..c4900a8 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicAmbient100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicAmbient100 -- epic melody (128 steps), genre: ambient +// ===================================================================== +( +~mepicAmbient100 = [ + 0, 0, 0, 0, 0, 0, 71, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 0, 0, 0, + 64, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 71, 0, 0, 67, 0, + 0, 0, 0, 0, 0, 0, 0, 83, + 84, 64, 0, 0, 0, 0, 79, 0, + 0, 0, 69, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 0, 0, 0, 0, 65, 0, + 0, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 0, 0, 74, + 0, 0, 0, 0, 0, 83, 0, 0, + 0, 0, 67, 0, 0, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicAmbient101.scd b/sound_algo/palette/melodies/epic/mepicAmbient101.scd new file mode 100644 index 0000000..42d0000 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicAmbient101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicAmbient101 -- epic melody (128 steps), genre: ambient +// ===================================================================== +( +~mepicAmbient101 = [ + 0, 0, 0, 64, 0, 0, 0, 0, + 0, 60, 0, 0, 0, 84, 0, 0, + 0, 81, 0, 0, 0, 0, 0, 71, + 0, 0, 0, 71, 0, 74, 0, 0, + 0, 0, 0, 65, 0, 0, 0, 0, + 81, 0, 0, 0, 0, 0, 62, 0, + 0, 81, 65, 0, 0, 0, 0, 0, + 0, 0, 0, 71, 0, 0, 0, 71, + 0, 0, 0, 79, 0, 0, 0, 0, + 0, 77, 0, 0, 0, 74, 0, 0, + 0, 0, 77, 0, 0, 0, 79, 0, + 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, + 81, 0, 0, 0, 0, 80, 0, 0, + 0, 0, 0, 0, 69, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicAsian100.scd b/sound_algo/palette/melodies/epic/mepicAsian100.scd new file mode 100644 index 0000000..237713f --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicAsian100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicAsian100 -- epic melody (128 steps), genre: asian +// ===================================================================== +( +~mepicAsian100 = [ + 69, 62, 0, 74, 0, 0, 62, 63, + 0, 57, 0, 0, 69, 63, 55, 75, + 0, 0, 74, 69, 69, 67, 0, 0, + 0, 63, 0, 74, 75, 74, 75, 75, + 69, 62, 0, 74, 0, 0, 62, 63, + 0, 57, 0, 0, 69, 63, 55, 75, + 0, 0, 74, 69, 69, 67, 0, 0, + 0, 63, 0, 74, 75, 74, 75, 75, + 63, 0, 0, 55, 57, 57, 67, 0, + 63, 67, 0, 63, 63, 62, 0, 70, + 57, 55, 0, 62, 57, 58, 0, 0, + 57, 55, 0, 0, 57, 0, 0, 58, + 69, 62, 0, 74, 0, 0, 62, 63, + 0, 57, 0, 0, 69, 63, 55, 75, + 0, 0, 74, 69, 69, 67, 0, 0, + 0, 63, 0, 74, 75, 74, 75, 75 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicAsian101.scd b/sound_algo/palette/melodies/epic/mepicAsian101.scd new file mode 100644 index 0000000..119124c --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicAsian101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicAsian101 -- epic melody (128 steps), genre: asian +// ===================================================================== +( +~mepicAsian101 = [ + 0, 64, 0, 0, 0, 0, 71, 67, + 0, 59, 55, 0, 0, 72, 0, 55, + 0, 0, 52, 71, 0, 64, 60, 55, + 55, 54, 0, 52, 0, 54, 52, 71, + 0, 0, 60, 52, 0, 0, 71, 0, + 0, 66, 66, 59, 67, 52, 52, 0, + 52, 66, 0, 0, 0, 0, 76, 0, + 0, 64, 55, 0, 76, 55, 72, 0, + 66, 64, 64, 0, 0, 66, 52, 0, + 0, 0, 0, 60, 0, 0, 54, 66, + 0, 67, 0, 55, 0, 0, 76, 54, + 66, 64, 66, 71, 0, 0, 0, 52, + 0, 76, 0, 55, 59, 55, 72, 71, + 0, 76, 0, 0, 62, 67, 0, 0, + 58, 56, 0, 0, 74, 72, 0, 0, + 0, 60, 0, 0, 74, 73, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicAsian102.scd b/sound_algo/palette/melodies/epic/mepicAsian102.scd new file mode 100644 index 0000000..13b731f --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicAsian102.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicAsian102 -- epic melody (128 steps), genre: asian +// ===================================================================== +( +~mepicAsian102 = [ + 52, 69, 0, 0, 0, 64, 64, 65, + 76, 74, 0, 52, 64, 62, 53, 57, + 69, 70, 53, 76, 0, 69, 69, 69, + 76, 74, 65, 52, 76, 74, 69, 0, + 52, 0, 69, 58, 52, 64, 65, 64, + 52, 64, 53, 0, 76, 74, 0, 0, + 0, 64, 70, 57, 0, 57, 65, 52, + 0, 53, 57, 74, 65, 64, 52, 52, + 0, 52, 0, 0, 0, 53, 70, 52, + 0, 0, 0, 64, 0, 76, 53, 65, + 65, 64, 64, 0, 0, 74, 70, 57, + 76, 0, 58, 62, 64, 74, 52, 57, + 70, 0, 69, 62, 0, 76, 76, 52, + 57, 53, 70, 52, 52, 52, 64, 76, + 0, 74, 76, 69, 76, 64, 62, 0, + 0, 64, 57, 52, 52, 76, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicBlues100.scd b/sound_algo/palette/melodies/epic/mepicBlues100.scd new file mode 100644 index 0000000..64422b9 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicBlues100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicBlues100 -- epic melody (128 steps), genre: blues +// ===================================================================== +( +~mepicBlues100 = [ + 0, 0, 55, 55, 55, 55, 55, 55, + 71, 69, 52, 0, 70, 70, 0, 0, + 59, 55, 59, 70, 47, 55, 45, 59, + 59, 59, 59, 67, 67, 50, 0, 0, + 0, 0, 55, 55, 55, 55, 55, 55, + 71, 69, 52, 0, 70, 70, 0, 0, + 59, 55, 59, 70, 47, 55, 45, 59, + 59, 59, 59, 67, 67, 50, 0, 0, + 0, 62, 62, 67, 55, 55, 55, 55, + 0, 0, 67, 67, 0, 0, 0, 69, + 69, 69, 45, 67, 52, 52, 59, 0, + 0, 0, 0, 47, 52, 45, 0, 64, + 0, 0, 55, 55, 55, 55, 55, 55, + 71, 69, 52, 0, 70, 70, 0, 0, + 59, 55, 59, 70, 47, 55, 45, 59, + 59, 59, 59, 67, 67, 50, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicChiptune100.scd b/sound_algo/palette/melodies/epic/mepicChiptune100.scd new file mode 100644 index 0000000..42eec91 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicChiptune100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicChiptune100 -- epic melody (128 steps), genre: chiptune +// ===================================================================== +( +~mepicChiptune100 = [ + 91, 91, 0, 86, 86, 83, 71, 74, + 78, 76, 79, 0, 62, 66, 69, 79, + 0, 0, 79, 76, 0, 93, 0, 60, + 72, 76, 79, 83, 78, 93, 76, 79, + 91, 91, 0, 86, 86, 83, 71, 74, + 78, 76, 79, 0, 62, 66, 69, 79, + 0, 0, 79, 76, 0, 93, 0, 60, + 72, 76, 79, 83, 78, 93, 76, 79, + 67, 72, 71, 90, 69, 81, 83, 81, + 72, 76, 79, 64, 0, 64, 93, 76, + 81, 84, 96, 72, 78, 81, 83, 0, + 74, 0, 91, 88, 86, 90, 81, 81, + 91, 91, 0, 86, 86, 83, 71, 74, + 78, 76, 79, 0, 61, 67, 67, 80, + 0, 0, 80, 74, 0, 93, 0, 62, + 71, 77, 78, 82, 76, 95, 77, 78 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicChromatic100.scd b/sound_algo/palette/melodies/epic/mepicChromatic100.scd new file mode 100644 index 0000000..79a5b10 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicChromatic100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicChromatic100 -- epic melody (128 steps), genre: chromatic +// ===================================================================== +( +~mepicChromatic100 = [ + 70, 0, 0, 0, 0, 74, 0, 59, + 54, 64, 65, 69, 63, 0, 82, 80, + 51, 77, 67, 60, 0, 50, 50, 0, + 0, 52, 49, 72, 0, 73, 70, 70, + 0, 59, 70, 58, 0, 77, 52, 78, + 0, 0, 66, 78, 0, 55, 71, 63, + 0, 70, 82, 81, 0, 0, 0, 66, + 62, 61, 0, 59, 49, 75, 0, 68, + 66, 59, 56, 63, 69, 0, 83, 81, + 84, 74, 67, 63, 75, 60, 0, 52, + 70, 51, 0, 62, 67, 0, 52, 0, + 55, 56, 65, 0, 60, 51, 79, 69, + 54, 52, 65, 57, 48, 84, 79, 51, + 0, 84, 48, 80, 50, 72, 0, 75, + 0, 80, 61, 48, 76, 75, 0, 60, + 0, 0, 65, 84, 0, 71, 81, 57 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicCinematic100.scd b/sound_algo/palette/melodies/epic/mepicCinematic100.scd new file mode 100644 index 0000000..4515c53 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicCinematic100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicCinematic100 -- epic melody (128 steps), genre: cinematic +// ===================================================================== +( +~mepicCinematic100 = [ + 63, 67, 0, 0, 75, 79, 56, 48, + 0, 0, 0, 75, 0, 0, 56, 38, + 48, 0, 0, 41, 0, 0, 0, 0, + 72, 0, 77, 0, 0, 0, 0, 0, + 63, 67, 0, 0, 75, 79, 56, 48, + 0, 0, 0, 75, 0, 0, 56, 38, + 48, 0, 0, 41, 0, 0, 0, 0, + 72, 0, 77, 0, 0, 0, 0, 0, + 0, 0, 65, 67, 0, 0, 44, 72, + 0, 50, 74, 55, 0, 0, 63, 80, + 0, 65, 44, 0, 0, 0, 0, 63, + 60, 38, 84, 63, 0, 39, 0, 65, + 63, 67, 0, 0, 75, 79, 56, 48, + 0, 0, 0, 74, 0, 0, 55, 36, + 50, 0, 0, 40, 0, 0, 0, 0, + 72, 0, 78, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicCinematic101.scd b/sound_algo/palette/melodies/epic/mepicCinematic101.scd new file mode 100644 index 0000000..80f004e --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicCinematic101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicCinematic101 -- epic melody (128 steps), genre: cinematic +// ===================================================================== +( +~mepicCinematic101 = [ + 0, 0, 0, 67, 39, 0, 65, 41, + 0, 51, 36, 0, 55, 0, 53, 65, + 68, 0, 0, 0, 0, 0, 55, 0, + 75, 68, 84, 0, 62, 0, 63, 79, + 0, 0, 0, 67, 39, 0, 65, 41, + 0, 51, 36, 0, 55, 0, 53, 65, + 68, 0, 0, 0, 0, 0, 55, 0, + 75, 68, 84, 0, 62, 0, 63, 79, + 0, 38, 0, 46, 0, 41, 82, 0, + 0, 58, 0, 0, 43, 46, 82, 46, + 72, 53, 77, 0, 67, 70, 36, 56, + 72, 0, 67, 70, 84, 46, 0, 75, + 0, 0, 0, 67, 39, 0, 65, 41, + 0, 51, 36, 0, 55, 0, 53, 65, + 68, 0, 0, 0, 0, 0, 55, 0, + 75, 68, 84, 0, 62, 0, 63, 79 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicDark100.scd b/sound_algo/palette/melodies/epic/mepicDark100.scd new file mode 100644 index 0000000..72775be --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicDark100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicDark100 -- epic melody (128 steps), genre: dark +// ===================================================================== +( +~mepicDark100 = [ + 0, 55, 45, 50, 0, 38, 42, 39, + 58, 58, 50, 50, 45, 50, 0, 0, + 0, 48, 0, 57, 55, 0, 48, 0, + 38, 0, 39, 43, 46, 55, 60, 0, + 45, 42, 0, 0, 0, 43, 0, 48, + 38, 0, 0, 51, 0, 0, 54, 50, + 0, 46, 0, 43, 46, 0, 42, 0, + 55, 46, 54, 55, 0, 60, 42, 0, + 0, 54, 55, 0, 0, 54, 0, 50, + 55, 39, 57, 50, 54, 36, 0, 48, + 0, 51, 39, 0, 0, 42, 48, 45, + 0, 0, 39, 57, 55, 0, 54, 57, + 38, 0, 60, 0, 38, 36, 48, 45, + 0, 45, 0, 50, 57, 0, 0, 38, + 0, 0, 0, 51, 55, 45, 42, 42, + 0, 55, 46, 45, 45, 0, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicDark101.scd b/sound_algo/palette/melodies/epic/mepicDark101.scd new file mode 100644 index 0000000..561a25f --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicDark101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicDark101 -- epic melody (128 steps), genre: dark +// ===================================================================== +( +~mepicDark101 = [ + 39, 0, 43, 0, 53, 0, 0, 0, + 0, 55, 41, 39, 46, 43, 0, 39, + 39, 51, 0, 0, 0, 0, 0, 0, + 43, 0, 39, 39, 0, 0, 56, 0, + 0, 0, 48, 0, 56, 0, 44, 39, + 0, 0, 58, 0, 0, 51, 46, 58, + 0, 0, 0, 0, 0, 0, 39, 53, + 0, 37, 39, 0, 55, 43, 0, 46, + 0, 49, 49, 49, 46, 36, 39, 0, + 44, 0, 0, 55, 55, 60, 44, 53, + 55, 41, 0, 0, 39, 51, 55, 0, + 0, 44, 0, 0, 0, 0, 56, 53, + 41, 0, 41, 44, 0, 55, 37, 55, + 46, 0, 44, 0, 0, 46, 55, 43, + 0, 48, 60, 0, 0, 0, 0, 0, + 58, 55, 58, 0, 55, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicDark102.scd b/sound_algo/palette/melodies/epic/mepicDark102.scd new file mode 100644 index 0000000..f58bd8b --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicDark102.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicDark102 -- epic melody (128 steps), genre: dark +// ===================================================================== +( +~mepicDark102 = [ + 0, 0, 0, 51, 0, 0, 0, 0, + 42, 45, 0, 45, 42, 55, 59, 0, + 55, 51, 54, 43, 0, 59, 0, 51, + 0, 48, 0, 0, 0, 52, 47, 52, + 0, 0, 0, 51, 0, 0, 0, 0, + 42, 45, 0, 45, 42, 55, 59, 0, + 55, 51, 54, 43, 0, 59, 0, 51, + 0, 48, 0, 0, 0, 52, 47, 52, + 60, 39, 0, 52, 47, 52, 0, 60, + 0, 0, 51, 0, 0, 0, 45, 40, + 0, 54, 36, 0, 0, 0, 0, 52, + 0, 0, 0, 0, 0, 47, 43, 47, + 0, 0, 0, 51, 0, 0, 0, 0, + 42, 45, 0, 45, 42, 55, 59, 0, + 55, 51, 54, 43, 0, 59, 0, 51, + 0, 48, 0, 0, 0, 52, 47, 52 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicDetroit100.scd b/sound_algo/palette/melodies/epic/mepicDetroit100.scd new file mode 100644 index 0000000..0b5134e --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicDetroit100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicDetroit100 -- epic melody (128 steps), genre: detroit +// ===================================================================== +( +~mepicDetroit100 = [ + 55, 50, 0, 53, 57, 60, 63, 48, + 60, 0, 0, 51, 0, 65, 58, 70, + 67, 65, 69, 50, 60, 0, 0, 69, + 53, 0, 0, 70, 60, 58, 57, 0, + 51, 63, 55, 72, 72, 0, 0, 72, + 0, 70, 58, 50, 60, 62, 70, 63, + 62, 0, 53, 50, 0, 62, 0, 48, + 0, 0, 48, 0, 0, 55, 48, 57, + 51, 58, 63, 60, 0, 60, 48, 50, + 0, 50, 0, 48, 63, 0, 57, 63, + 48, 65, 60, 48, 0, 48, 63, 63, + 65, 57, 60, 0, 0, 0, 69, 65, + 0, 0, 60, 0, 60, 60, 0, 0, + 51, 0, 0, 69, 51, 69, 55, 0, + 48, 58, 69, 0, 72, 58, 69, 55, + 0, 55, 50, 58, 65, 50, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicDetroit101.scd b/sound_algo/palette/melodies/epic/mepicDetroit101.scd new file mode 100644 index 0000000..f07ea44 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicDetroit101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicDetroit101 -- epic melody (128 steps), genre: detroit +// ===================================================================== +( +~mepicDetroit101 = [ + 0, 70, 53, 0, 55, 58, 63, 72, + 51, 69, 0, 55, 48, 0, 57, 55, + 0, 58, 70, 69, 67, 0, 70, 53, + 58, 0, 72, 50, 55, 58, 70, 0, + 0, 70, 53, 0, 55, 58, 63, 72, + 51, 69, 0, 55, 48, 0, 57, 55, + 0, 58, 70, 69, 67, 0, 70, 53, + 58, 0, 72, 50, 55, 58, 70, 0, + 57, 70, 70, 0, 67, 60, 0, 70, + 0, 0, 0, 67, 48, 69, 48, 55, + 67, 57, 0, 51, 55, 57, 0, 57, + 63, 65, 50, 69, 0, 0, 65, 57, + 0, 70, 53, 0, 55, 58, 63, 72, + 51, 69, 0, 55, 48, 0, 57, 55, + 0, 58, 70, 69, 67, 0, 70, 53, + 58, 0, 72, 50, 55, 58, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicDetroit102.scd b/sound_algo/palette/melodies/epic/mepicDetroit102.scd new file mode 100644 index 0000000..806585f --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicDetroit102.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicDetroit102 -- epic melody (128 steps), genre: detroit +// ===================================================================== +( +~mepicDetroit102 = [ + 0, 48, 57, 62, 60, 62, 0, 0, + 65, 0, 51, 0, 0, 60, 48, 0, + 58, 0, 0, 69, 0, 69, 0, 0, + 55, 58, 57, 0, 51, 0, 62, 0, + 0, 48, 57, 62, 60, 62, 0, 0, + 65, 0, 51, 0, 0, 60, 48, 0, + 58, 0, 0, 69, 0, 69, 0, 0, + 55, 58, 57, 0, 51, 0, 62, 0, + 50, 0, 65, 51, 0, 65, 0, 65, + 48, 63, 51, 58, 67, 53, 65, 0, + 0, 65, 67, 65, 0, 50, 63, 0, + 55, 67, 58, 0, 62, 69, 62, 0, + 0, 48, 57, 62, 60, 62, 0, 0, + 65, 0, 51, 0, 0, 60, 48, 0, + 58, 0, 0, 69, 0, 69, 0, 0, + 55, 58, 57, 0, 51, 0, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicDnb100.scd b/sound_algo/palette/melodies/epic/mepicDnb100.scd new file mode 100644 index 0000000..6790b78 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicDnb100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicDnb100 -- epic melody (128 steps), genre: dnb +// ===================================================================== +( +~mepicDnb100 = [ + 0, 0, 0, 0, 71, 50, 0, 0, + 0, 52, 0, 0, 36, 71, 52, 50, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 62, 0, 38, 38, 0, 0, 0, + 0, 0, 0, 0, 71, 50, 0, 0, + 0, 52, 0, 0, 36, 71, 52, 50, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 62, 0, 38, 38, 0, 0, 0, + 66, 0, 0, 0, 0, 43, 0, 64, + 67, 50, 0, 0, 43, 60, 0, 0, + 0, 50, 0, 43, 0, 55, 67, 36, + 0, 0, 52, 52, 62, 40, 0, 0, + 0, 0, 0, 0, 71, 50, 0, 0, + 0, 52, 0, 0, 37, 70, 50, 51, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 62, 0, 36, 40, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicDrone100.scd b/sound_algo/palette/melodies/epic/mepicDrone100.scd new file mode 100644 index 0000000..427d176 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicDrone100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicDrone100 -- epic melody (128 steps), genre: drone +// ===================================================================== +( +~mepicDrone100 = [ + 0, 0, 44, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 0, 0, 0, + 0, 0, 0, 48, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 44, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 0, 0, 0, + 0, 0, 0, 48, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 44, + 0, 0, 0, 0, 0, 0, 41, 0, + 0, 0, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 44, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 0, 0, 0, + 0, 0, 0, 48, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicDub100.scd b/sound_algo/palette/melodies/epic/mepicDub100.scd new file mode 100644 index 0000000..269d690 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicDub100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicDub100 -- epic melody (128 steps), genre: dub +// ===================================================================== +( +~mepicDub100 = [ + 36, 0, 0, 0, 43, 0, 0, 0, + 36, 0, 0, 0, 41, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 58, 0, 0, 0, + 36, 0, 0, 0, 36, 0, 0, 0, + 36, 0, 0, 0, 36, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 51, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 51, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 53, 0, 0, 0, + 36, 0, 0, 0, 43, 0, 0, 0, + 36, 0, 0, 0, 42, 0, 0, 0, + 38, 0, 0, 0, 42, 0, 0, 0, + 38, 0, 0, 0, 58, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicHardcore100.scd b/sound_algo/palette/melodies/epic/mepicHardcore100.scd new file mode 100644 index 0000000..453d888 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicHardcore100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicHardcore100 -- epic melody (128 steps), genre: hardcore +// ===================================================================== +( +~mepicHardcore100 = [ + 47, 37, 47, 49, 43, 48, 55, 54, + 56, 53, 40, 54, 0, 43, 52, 56, + 40, 56, 57, 60, 40, 60, 43, 59, + 58, 48, 60, 0, 58, 49, 56, 55, + 47, 37, 47, 49, 43, 48, 55, 54, + 56, 53, 40, 54, 0, 43, 52, 56, + 40, 56, 57, 60, 40, 60, 43, 59, + 58, 48, 60, 0, 58, 49, 56, 55, + 55, 41, 46, 42, 58, 36, 40, 59, + 52, 43, 56, 41, 45, 49, 49, 48, + 52, 46, 47, 60, 0, 57, 51, 0, + 40, 43, 0, 0, 40, 41, 55, 0, + 47, 37, 47, 49, 43, 48, 55, 54, + 56, 53, 40, 54, 0, 43, 52, 56, + 40, 56, 57, 60, 40, 60, 43, 59, + 58, 48, 60, 0, 58, 49, 56, 55 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicHardcore101.scd b/sound_algo/palette/melodies/epic/mepicHardcore101.scd new file mode 100644 index 0000000..ada8342 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicHardcore101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicHardcore101 -- epic melody (128 steps), genre: hardcore +// ===================================================================== +( +~mepicHardcore101 = [ + 49, 44, 59, 54, 41, 44, 41, 49, + 51, 42, 53, 59, 42, 42, 44, 41, + 44, 58, 54, 41, 56, 0, 44, 41, + 53, 49, 47, 53, 47, 37, 44, 47, + 49, 44, 59, 54, 41, 44, 41, 49, + 51, 42, 53, 59, 42, 42, 44, 41, + 44, 58, 54, 41, 56, 0, 44, 41, + 53, 49, 47, 53, 47, 37, 44, 47, + 39, 39, 59, 46, 49, 49, 47, 59, + 56, 37, 49, 42, 0, 47, 46, 41, + 44, 56, 49, 58, 59, 54, 56, 47, + 58, 56, 53, 47, 41, 58, 53, 49, + 49, 44, 59, 54, 41, 44, 41, 49, + 51, 42, 53, 59, 42, 42, 44, 41, + 44, 58, 54, 41, 56, 0, 44, 41, + 53, 49, 47, 53, 47, 37, 44, 47 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicHypnotic100.scd b/sound_algo/palette/melodies/epic/mepicHypnotic100.scd new file mode 100644 index 0000000..d278220 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicHypnotic100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicHypnotic100 -- epic melody (128 steps), genre: hypnotic +// ===================================================================== +( +~mepicHypnotic100 = [ + 70, 67, 0, 0, 0, 0, 70, 0, + 70, 72, 67, 72, 70, 72, 0, 0, + 0, 72, 67, 0, 70, 72, 0, 0, + 0, 72, 60, 0, 70, 72, 0, 0, + 70, 67, 0, 0, 0, 0, 70, 0, + 70, 72, 67, 72, 70, 72, 0, 0, + 0, 72, 67, 0, 70, 72, 0, 0, + 0, 72, 60, 0, 70, 72, 0, 0, + 70, 72, 67, 0, 70, 72, 67, 0, + 70, 0, 67, 0, 0, 0, 60, 0, + 70, 0, 67, 0, 70, 72, 67, 0, + 70, 72, 67, 0, 70, 72, 67, 0, + 70, 67, 0, 0, 0, 0, 70, 0, + 70, 72, 67, 70, 68, 72, 0, 0, + 0, 71, 69, 0, 72, 71, 0, 0, + 0, 70, 58, 0, 69, 73, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicHypnotic101.scd b/sound_algo/palette/melodies/epic/mepicHypnotic101.scd new file mode 100644 index 0000000..cb28af7 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicHypnotic101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicHypnotic101 -- epic melody (128 steps), genre: hypnotic +// ===================================================================== +( +~mepicHypnotic101 = [ + 63, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 67, 0, 65, + 0, 67, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 67, 67, 0, 0, + 63, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 67, 0, 65, + 0, 67, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 67, 67, 0, 0, + 0, 65, 0, 0, 0, 0, 60, 0, + 0, 67, 0, 0, 0, 0, 0, 0, + 0, 67, 0, 0, 0, 67, 0, 67, + 0, 0, 0, 0, 0, 67, 0, 0, + 63, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 66, 0, 63, + 0, 65, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 69, 67, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicHypnotic102.scd b/sound_algo/palette/melodies/epic/mepicHypnotic102.scd new file mode 100644 index 0000000..61de205 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicHypnotic102.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicHypnotic102 -- epic melody (128 steps), genre: hypnotic +// ===================================================================== +( +~mepicHypnotic102 = [ + 0, 65, 0, 63, 0, 65, 0, 60, + 0, 65, 0, 60, 0, 65, 0, 0, + 0, 65, 0, 60, 0, 65, 0, 65, + 65, 65, 0, 60, 0, 65, 0, 60, + 0, 65, 0, 63, 0, 65, 0, 60, + 0, 65, 0, 60, 0, 65, 0, 0, + 0, 65, 0, 60, 0, 65, 0, 65, + 65, 65, 0, 60, 0, 65, 0, 60, + 0, 65, 0, 60, 0, 65, 0, 60, + 0, 65, 0, 60, 0, 65, 0, 0, + 0, 0, 0, 0, 0, 65, 0, 60, + 0, 0, 0, 60, 0, 65, 0, 60, + 0, 65, 0, 63, 0, 65, 0, 60, + 0, 65, 0, 60, 0, 65, 0, 0, + 0, 65, 0, 60, 0, 65, 0, 65, + 65, 65, 0, 60, 0, 65, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicIndustrial100.scd b/sound_algo/palette/melodies/epic/mepicIndustrial100.scd new file mode 100644 index 0000000..54c3f0c --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicIndustrial100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicIndustrial100 -- epic melody (128 steps), genre: industrial +// ===================================================================== +( +~mepicIndustrial100 = [ + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56, + 59, 53, 55, 56, 59, 53, 55, 56 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicIndustrial101.scd b/sound_algo/palette/melodies/epic/mepicIndustrial101.scd new file mode 100644 index 0000000..6f12c9d --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicIndustrial101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicIndustrial101 -- epic melody (128 steps), genre: industrial +// ===================================================================== +( +~mepicIndustrial101 = [ + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58, + 0, 48, 36, 58, 0, 48, 36, 58 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicJazz100.scd b/sound_algo/palette/melodies/epic/mepicJazz100.scd new file mode 100644 index 0000000..e64a3fe --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicJazz100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicJazz100 -- epic melody (128 steps), genre: jazz +// ===================================================================== +( +~mepicJazz100 = [ + 81, 84, 57, 77, 76, 79, 62, 0, + 84, 58, 60, 0, 0, 48, 79, 58, + 52, 0, 0, 65, 81, 82, 60, 67, + 0, 72, 69, 79, 0, 52, 53, 79, + 49, 50, 64, 0, 55, 0, 58, 77, + 72, 55, 74, 62, 0, 0, 58, 0, + 64, 73, 74, 67, 0, 57, 49, 50, + 84, 0, 81, 0, 60, 0, 55, 0, + 0, 58, 0, 67, 72, 70, 0, 0, + 0, 51, 68, 69, 0, 58, 0, 85, + 84, 0, 0, 0, 67, 55, 69, 67, + 0, 0, 79, 55, 79, 81, 69, 0, + 48, 79, 53, 79, 72, 74, 69, 73, + 72, 57, 58, 84, 64, 0, 48, 0, + 67, 84, 50, 0, 48, 82, 50, 81, + 79, 0, 58, 62, 0, 48, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicJazz101.scd b/sound_algo/palette/melodies/epic/mepicJazz101.scd new file mode 100644 index 0000000..d2c891e --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicJazz101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicJazz101 -- epic melody (128 steps), genre: jazz +// ===================================================================== +( +~mepicJazz101 = [ + 0, 55, 75, 67, 68, 56, 55, 83, + 52, 53, 65, 81, 82, 75, 0, 55, + 65, 67, 65, 47, 52, 51, 0, 67, + 65, 63, 0, 53, 0, 77, 55, 0, + 53, 62, 62, 0, 0, 84, 82, 0, + 77, 80, 52, 85, 84, 0, 0, 63, + 0, 67, 82, 72, 56, 74, 75, 80, + 77, 48, 80, 0, 0, 79, 0, 77, + 63, 51, 71, 70, 60, 53, 60, 72, + 53, 51, 80, 0, 49, 50, 48, 0, + 0, 82, 65, 51, 0, 0, 84, 63, + 48, 0, 0, 0, 0, 51, 75, 0, + 84, 67, 0, 0, 67, 68, 56, 60, + 0, 68, 0, 75, 84, 69, 70, 67, + 75, 0, 62, 71, 70, 62, 72, 80, + 0, 0, 56, 0, 84, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicOriental100.scd b/sound_algo/palette/melodies/epic/mepicOriental100.scd new file mode 100644 index 0000000..0bdc046 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicOriental100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicOriental100 -- epic melody (128 steps), genre: oriental +// ===================================================================== +( +~mepicOriental100 = [ + 60, 0, 67, 0, 0, 0, 60, 58, + 51, 54, 58, 55, 70, 0, 63, 55, + 0, 66, 0, 0, 57, 55, 0, 67, + 55, 54, 0, 0, 74, 60, 58, 0, + 60, 0, 67, 0, 0, 0, 60, 58, + 51, 54, 58, 55, 70, 0, 63, 55, + 0, 66, 0, 0, 57, 55, 0, 67, + 55, 54, 0, 0, 74, 60, 58, 0, + 0, 60, 66, 72, 74, 74, 0, 0, + 0, 62, 57, 69, 0, 0, 50, 69, + 62, 57, 60, 69, 0, 0, 51, 54, + 60, 69, 51, 0, 67, 72, 60, 69, + 60, 0, 67, 0, 0, 0, 60, 58, + 51, 54, 58, 55, 68, 0, 63, 54, + 0, 65, 0, 0, 59, 57, 0, 69, + 53, 54, 0, 0, 75, 60, 58, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicOriental101.scd b/sound_algo/palette/melodies/epic/mepicOriental101.scd new file mode 100644 index 0000000..fb3f307 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicOriental101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicOriental101 -- epic melody (128 steps), genre: oriental +// ===================================================================== +( +~mepicOriental101 = [ + 50, 55, 72, 72, 71, 68, 74, 53, + 62, 60, 51, 72, 62, 0, 0, 56, + 67, 65, 0, 0, 55, 0, 0, 71, + 71, 59, 72, 0, 59, 53, 60, 0, + 59, 0, 0, 67, 71, 68, 62, 53, + 55, 68, 62, 63, 0, 51, 0, 51, + 0, 0, 56, 0, 55, 63, 74, 72, + 71, 68, 62, 67, 55, 53, 0, 0, + 50, 0, 0, 63, 0, 0, 0, 0, + 74, 72, 68, 53, 67, 63, 0, 0, + 0, 0, 0, 72, 68, 67, 55, 72, + 0, 63, 72, 0, 55, 74, 50, 0, + 0, 0, 74, 53, 0, 0, 59, 0, + 55, 59, 0, 70, 72, 73, 57, 50, + 0, 0, 58, 68, 0, 56, 0, 0, + 0, 62, 73, 54, 52, 70, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicOriental102.scd b/sound_algo/palette/melodies/epic/mepicOriental102.scd new file mode 100644 index 0000000..42b1824 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicOriental102.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicOriental102 -- epic melody (128 steps), genre: oriental +// ===================================================================== +( +~mepicOriental102 = [ + 66, 63, 0, 0, 57, 55, 57, 57, + 62, 60, 51, 50, 0, 0, 0, 0, + 57, 55, 63, 0, 0, 57, 69, 74, + 70, 69, 62, 0, 57, 70, 63, 72, + 66, 63, 0, 0, 57, 55, 57, 57, + 62, 60, 51, 50, 0, 0, 0, 0, + 57, 55, 63, 0, 0, 57, 69, 74, + 70, 69, 62, 0, 57, 70, 63, 72, + 60, 58, 60, 51, 66, 74, 57, 60, + 0, 62, 50, 57, 54, 58, 74, 66, + 50, 69, 0, 67, 0, 63, 0, 74, + 0, 0, 66, 66, 66, 62, 0, 0, + 66, 63, 0, 0, 57, 55, 57, 57, + 62, 60, 51, 48, 0, 0, 0, 0, + 56, 57, 64, 0, 0, 56, 70, 72, + 68, 69, 61, 0, 57, 68, 64, 73 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicOriental103.scd b/sound_algo/palette/melodies/epic/mepicOriental103.scd new file mode 100644 index 0000000..699bce5 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicOriental103.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicOriental103 -- epic melody (128 steps), genre: oriental +// ===================================================================== +( +~mepicOriental103 = [ + 0, 0, 55, 0, 0, 68, 0, 0, + 0, 60, 68, 50, 55, 62, 55, 63, + 74, 0, 0, 72, 50, 59, 0, 65, + 0, 0, 0, 65, 55, 72, 0, 63, + 0, 0, 55, 0, 0, 68, 0, 0, + 0, 60, 68, 50, 55, 62, 55, 63, + 74, 0, 0, 72, 50, 59, 0, 65, + 0, 0, 0, 65, 55, 72, 0, 63, + 0, 0, 50, 60, 0, 72, 53, 67, + 56, 65, 0, 62, 0, 0, 0, 67, + 0, 0, 51, 55, 71, 68, 71, 0, + 59, 56, 0, 55, 67, 56, 60, 50, + 0, 0, 55, 0, 0, 68, 0, 0, + 0, 60, 68, 50, 55, 62, 55, 63, + 74, 0, 0, 72, 50, 59, 0, 65, + 0, 0, 0, 65, 55, 72, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicPad100.scd b/sound_algo/palette/melodies/epic/mepicPad100.scd new file mode 100644 index 0000000..371815c --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicPad100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicPad100 -- epic melody (128 steps), genre: pad +// ===================================================================== +( +~mepicPad100 = [ + 69, 82, 0, 0, 0, 0, 77, 0, + 0, 67, 0, 63, 0, 0, 0, 75, + 0, 0, 0, 0, 65, 0, 72, 0, + 0, 0, 0, 0, 84, 0, 0, 0, + 69, 82, 0, 0, 0, 0, 77, 0, + 0, 67, 0, 63, 0, 0, 0, 75, + 0, 0, 0, 0, 65, 0, 72, 0, + 0, 0, 0, 0, 84, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 84, + 72, 0, 0, 77, 0, 0, 0, 0, + 70, 74, 0, 74, 0, 0, 65, 0, + 0, 0, 0, 79, 0, 0, 0, 60, + 69, 82, 0, 0, 0, 0, 77, 0, + 0, 67, 0, 63, 0, 0, 0, 75, + 0, 0, 0, 0, 65, 0, 72, 0, + 0, 0, 0, 0, 84, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicPad101.scd b/sound_algo/palette/melodies/epic/mepicPad101.scd new file mode 100644 index 0000000..425cfbb --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicPad101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicPad101 -- epic melody (128 steps), genre: pad +// ===================================================================== +( +~mepicPad101 = [ + 72, 0, 70, 0, 0, 0, 0, 74, + 0, 0, 0, 0, 0, 0, 0, 72, + 0, 0, 0, 0, 72, 0, 0, 0, + 0, 0, 81, 0, 0, 0, 0, 0, + 0, 0, 0, 72, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 0, 0, 0, + 0, 69, 0, 0, 0, 0, 0, 0, + 0, 81, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 0, 0, 0, + 0, 0, 65, 0, 77, 0, 0, 0, + 0, 0, 69, 0, 0, 67, 0, 65, + 0, 0, 0, 0, 0, 0, 62, 81, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 77, 0, 0, + 0, 74, 0, 0, 0, 0, 0, 0, + 77, 0, 0, 0, 0, 0, 0, 77 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicPhonk100.scd b/sound_algo/palette/melodies/epic/mepicPhonk100.scd new file mode 100644 index 0000000..c0b97ab --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicPhonk100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicPhonk100 -- epic melody (128 steps), genre: phonk +// ===================================================================== +( +~mepicPhonk100 = [ + 0, 0, 0, 0, 52, 0, 0, 52, + 43, 57, 40, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 52, 0, + 60, 0, 50, 0, 57, 0, 0, 0, + 0, 0, 0, 0, 52, 0, 0, 52, + 43, 57, 40, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 52, 0, + 60, 0, 50, 0, 57, 0, 0, 0, + 52, 0, 0, 0, 0, 0, 55, 0, + 60, 0, 52, 0, 57, 0, 50, 0, + 48, 0, 60, 40, 0, 0, 0, 0, + 0, 0, 43, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 0, 0, 52, + 43, 57, 40, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 52, 0, + 60, 0, 50, 0, 57, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicPluck100.scd b/sound_algo/palette/melodies/epic/mepicPluck100.scd new file mode 100644 index 0000000..eb89400 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicPluck100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicPluck100 -- epic melody (128 steps), genre: pluck +// ===================================================================== +( +~mepicPluck100 = [ + 79, 67, 84, 0, 79, 0, 84, 0, + 74, 81, 69, 60, 74, 0, 64, 0, + 0, 81, 0, 74, 76, 69, 67, 74, + 64, 69, 81, 79, 0, 84, 0, 0, + 79, 67, 84, 0, 79, 0, 84, 0, + 74, 81, 69, 60, 74, 0, 64, 0, + 0, 81, 0, 74, 76, 69, 67, 74, + 64, 69, 81, 79, 0, 84, 0, 0, + 0, 67, 72, 72, 67, 0, 69, 0, + 76, 74, 79, 62, 79, 74, 0, 0, + 72, 0, 0, 81, 0, 76, 0, 76, + 84, 84, 72, 0, 64, 0, 0, 74, + 79, 67, 84, 0, 79, 0, 84, 0, + 74, 81, 69, 60, 74, 0, 64, 0, + 0, 81, 0, 74, 76, 69, 67, 74, + 64, 69, 81, 79, 0, 84, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicPop100.scd b/sound_algo/palette/melodies/epic/mepicPop100.scd new file mode 100644 index 0000000..3731c71 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicPop100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicPop100 -- epic melody (128 steps), genre: pop +// ===================================================================== +( +~mepicPop100 = [ + 0, 79, 0, 0, 79, 81, 60, 78, + 67, 72, 81, 64, 0, 0, 0, 0, + 84, 76, 71, 74, 60, 78, 0, 83, + 0, 72, 62, 71, 0, 0, 0, 60, + 0, 0, 60, 0, 71, 79, 67, 84, + 64, 74, 83, 74, 0, 83, 74, 0, + 62, 0, 76, 71, 67, 72, 81, 78, + 0, 0, 0, 81, 71, 0, 69, 0, + 0, 66, 0, 66, 83, 69, 76, 0, + 0, 64, 0, 0, 79, 74, 66, 64, + 62, 84, 69, 78, 78, 72, 84, 0, + 0, 69, 64, 60, 71, 0, 0, 78, + 67, 0, 71, 67, 79, 0, 71, 0, + 0, 0, 64, 0, 0, 84, 67, 0, + 79, 0, 64, 84, 83, 0, 66, 0, + 0, 0, 0, 0, 83, 0, 64, 81 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicPop101.scd b/sound_algo/palette/melodies/epic/mepicPop101.scd new file mode 100644 index 0000000..04088ed --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicPop101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicPop101 -- epic melody (128 steps), genre: pop +// ===================================================================== +( +~mepicPop101 = [ + 0, 83, 77, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 76, 64, 81, + 76, 0, 71, 60, 64, 65, 77, 65, + 0, 0, 71, 0, 0, 0, 0, 65, + 0, 83, 77, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 76, 64, 81, + 76, 0, 71, 60, 64, 65, 77, 65, + 0, 0, 71, 0, 0, 0, 0, 65, + 0, 67, 0, 76, 84, 0, 0, 67, + 0, 74, 0, 64, 0, 69, 0, 0, + 72, 65, 81, 0, 0, 81, 67, 0, + 0, 0, 0, 0, 67, 0, 0, 0, + 0, 83, 77, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 76, 64, 81, + 76, 0, 71, 60, 64, 65, 77, 65, + 0, 0, 71, 0, 0, 0, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicRetro100.scd b/sound_algo/palette/melodies/epic/mepicRetro100.scd new file mode 100644 index 0000000..30c786c --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicRetro100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicRetro100 -- epic melody (128 steps), genre: retro +// ===================================================================== +( +~mepicRetro100 = [ + 81, 69, 64, 69, 79, 77, 64, 84, + 69, 65, 69, 0, 76, 79, 60, 62, + 72, 0, 81, 83, 0, 79, 84, 64, + 81, 77, 0, 0, 0, 77, 74, 0, + 0, 0, 83, 76, 60, 65, 69, 0, + 76, 84, 62, 69, 0, 83, 69, 83, + 0, 65, 62, 64, 0, 79, 79, 79, + 79, 0, 0, 67, 72, 0, 0, 84, + 76, 60, 0, 83, 0, 0, 79, 64, + 84, 64, 77, 0, 0, 69, 81, 84, + 76, 83, 67, 0, 64, 72, 0, 0, + 0, 77, 64, 60, 60, 60, 65, 67, + 83, 79, 0, 64, 72, 81, 67, 64, + 76, 0, 65, 0, 84, 74, 0, 69, + 76, 64, 0, 0, 67, 72, 84, 0, + 0, 0, 0, 62, 0, 0, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicRetro101.scd b/sound_algo/palette/melodies/epic/mepicRetro101.scd new file mode 100644 index 0000000..f69cd4f --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicRetro101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicRetro101 -- epic melody (128 steps), genre: retro +// ===================================================================== +( +~mepicRetro101 = [ + 62, 66, 0, 78, 0, 0, 0, 81, + 0, 0, 83, 0, 0, 78, 0, 71, + 72, 64, 79, 84, 72, 81, 79, 79, + 72, 0, 0, 76, 67, 0, 69, 0, + 72, 0, 84, 0, 67, 67, 62, 60, + 76, 79, 69, 0, 72, 62, 69, 83, + 0, 62, 60, 0, 62, 0, 74, 0, + 76, 0, 81, 0, 83, 0, 72, 0, + 60, 0, 66, 81, 0, 76, 74, 69, + 60, 62, 64, 0, 79, 76, 81, 0, + 0, 0, 0, 67, 60, 83, 66, 0, + 78, 0, 79, 76, 0, 78, 69, 69, + 69, 83, 0, 76, 0, 69, 0, 0, + 0, 0, 0, 74, 0, 0, 0, 60, + 84, 79, 64, 62, 0, 66, 60, 84, + 84, 78, 0, 0, 60, 67, 79, 72 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicSub100.scd b/sound_algo/palette/melodies/epic/mepicSub100.scd new file mode 100644 index 0000000..e7a0f8d --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicSub100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicSub100 -- epic melody (128 steps), genre: sub +// ===================================================================== +( +~mepicSub100 = [ + 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicSub101.scd b/sound_algo/palette/melodies/epic/mepicSub101.scd new file mode 100644 index 0000000..0d08ce9 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicSub101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicSub101 -- epic melody (128 steps), genre: sub +// ===================================================================== +( +~mepicSub101 = [ + 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicSynthwave100.scd b/sound_algo/palette/melodies/epic/mepicSynthwave100.scd new file mode 100644 index 0000000..438acc1 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicSynthwave100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicSynthwave100 -- epic melody (128 steps), genre: synthwave +// ===================================================================== +( +~mepicSynthwave100 = [ + 81, 0, 81, 0, 79, 81, 62, 79, + 0, 62, 50, 0, 77, 64, 84, 0, + 0, 0, 77, 58, 0, 84, 67, 48, + 62, 0, 0, 65, 74, 0, 0, 74, + 62, 67, 0, 0, 0, 50, 81, 65, + 82, 57, 0, 55, 0, 0, 53, 81, + 57, 0, 82, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 62, 67, 70, 0, + 81, 0, 76, 60, 65, 0, 81, 65, + 69, 0, 57, 69, 65, 0, 77, 58, + 0, 77, 0, 79, 77, 0, 62, 0, + 0, 70, 53, 55, 0, 0, 84, 82, + 74, 57, 62, 0, 74, 57, 52, 48, + 77, 0, 58, 78, 0, 74, 58, 54, + 49, 0, 83, 0, 0, 73, 0, 62, + 0, 0, 50, 0, 74, 0, 0, 75 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicTension100.scd b/sound_algo/palette/melodies/epic/mepicTension100.scd new file mode 100644 index 0000000..701c011 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicTension100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicTension100 -- epic melody (128 steps), genre: tension +// ===================================================================== +( +~mepicTension100 = [ + 0, 0, 45, 60, 47, 59, 0, 53, + 0, 52, 48, 50, 38, 0, 41, 55, + 0, 40, 43, 50, 60, 55, 0, 0, + 47, 57, 0, 53, 48, 36, 48, 52, + 0, 0, 45, 60, 47, 59, 0, 53, + 0, 52, 48, 50, 38, 0, 41, 55, + 0, 40, 43, 50, 60, 55, 0, 0, + 47, 57, 0, 53, 48, 36, 48, 52, + 50, 41, 0, 59, 59, 0, 0, 38, + 38, 53, 45, 36, 38, 57, 38, 53, + 36, 50, 0, 60, 50, 40, 50, 59, + 0, 52, 0, 43, 52, 0, 0, 60, + 0, 0, 45, 60, 47, 59, 0, 53, + 0, 52, 48, 50, 38, 0, 41, 55, + 0, 40, 43, 50, 60, 55, 0, 0, + 47, 57, 0, 53, 48, 36, 48, 52 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicTension101.scd b/sound_algo/palette/melodies/epic/mepicTension101.scd new file mode 100644 index 0000000..97df921 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicTension101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicTension101 -- epic melody (128 steps), genre: tension +// ===================================================================== +( +~mepicTension101 = [ + 47, 37, 56, 53, 43, 0, 58, 0, + 47, 0, 37, 58, 47, 0, 0, 40, + 58, 58, 52, 0, 41, 53, 0, 0, + 59, 0, 40, 43, 52, 53, 53, 37, + 47, 37, 56, 53, 43, 0, 58, 0, + 47, 0, 37, 58, 47, 0, 0, 40, + 58, 58, 52, 0, 41, 53, 0, 0, + 59, 0, 40, 43, 52, 53, 53, 37, + 50, 0, 50, 55, 0, 0, 50, 37, + 43, 37, 50, 41, 38, 0, 47, 52, + 50, 0, 41, 38, 59, 56, 0, 56, + 0, 56, 50, 55, 59, 49, 0, 43, + 47, 37, 56, 53, 43, 0, 58, 0, + 47, 0, 37, 58, 47, 0, 0, 40, + 58, 58, 52, 0, 41, 53, 0, 0, + 59, 0, 40, 43, 52, 53, 53, 37 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicTrance100.scd b/sound_algo/palette/melodies/epic/mepicTrance100.scd new file mode 100644 index 0000000..a674b41 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicTrance100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicTrance100 -- epic melody (128 steps), genre: trance +// ===================================================================== +( +~mepicTrance100 = [ + 68, 69, 71, 72, 64, 0, 62, 71, + 72, 74, 65, 68, 72, 68, 60, 71, + 72, 76, 80, 0, 60, 0, 81, 76, + 0, 69, 0, 71, 80, 76, 0, 81, + 68, 69, 71, 72, 64, 0, 62, 71, + 72, 74, 65, 68, 72, 68, 60, 71, + 72, 76, 80, 0, 60, 0, 81, 76, + 0, 69, 0, 71, 80, 76, 0, 81, + 0, 72, 60, 76, 0, 65, 81, 0, + 64, 65, 68, 69, 0, 84, 0, 71, + 64, 65, 68, 69, 76, 0, 0, 0, + 60, 62, 64, 65, 69, 80, 74, 71, + 68, 69, 71, 72, 64, 0, 62, 71, + 72, 74, 65, 66, 74, 66, 60, 71, + 73, 74, 82, 0, 58, 0, 83, 77, + 0, 67, 0, 71, 78, 78, 0, 80 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicTrance101.scd b/sound_algo/palette/melodies/epic/mepicTrance101.scd new file mode 100644 index 0000000..c5c8ada --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicTrance101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicTrance101 -- epic melody (128 steps), genre: trance +// ===================================================================== +( +~mepicTrance101 = [ + 64, 65, 68, 69, 74, 83, 72, 71, + 69, 71, 72, 74, 76, 0, 64, 77, + 68, 69, 71, 72, 77, 74, 71, 76, + 69, 62, 83, 0, 81, 72, 0, 71, + 64, 65, 68, 69, 72, 0, 81, 64, + 65, 68, 69, 71, 0, 0, 77, 0, + 65, 68, 69, 71, 0, 64, 69, 0, + 60, 64, 68, 65, 81, 60, 69, 74, + 68, 69, 71, 72, 69, 60, 84, 65, + 65, 68, 69, 71, 65, 64, 64, 80, + 69, 71, 72, 74, 84, 80, 62, 60, + 68, 69, 71, 72, 84, 0, 74, 83, + 69, 71, 72, 74, 76, 0, 0, 74, + 60, 62, 64, 66, 86, 81, 67, 68, + 62, 65, 67, 70, 75, 78, 70, 0, + 70, 71, 70, 74, 76, 73, 58, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicTrance102.scd b/sound_algo/palette/melodies/epic/mepicTrance102.scd new file mode 100644 index 0000000..8cbd5a9 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicTrance102.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicTrance102 -- epic melody (128 steps), genre: trance +// ===================================================================== +( +~mepicTrance102 = [ + 61, 62, 64, 66, 69, 0, 76, 83, + 69, 71, 73, 74, 64, 83, 61, 81, + 66, 68, 69, 71, 83, 71, 80, 74, + 66, 68, 69, 71, 64, 68, 71, 0, + 69, 61, 0, 62, 78, 74, 73, 73, + 69, 80, 0, 81, 73, 83, 61, 66, + 66, 68, 69, 71, 74, 62, 0, 78, + 78, 66, 74, 74, 68, 64, 80, 76, + 71, 73, 74, 76, 73, 71, 68, 66, + 71, 73, 74, 76, 74, 74, 83, 69, + 68, 69, 71, 73, 61, 80, 66, 68, + 61, 80, 69, 0, 81, 69, 68, 76, + 66, 68, 69, 71, 64, 73, 73, 69, + 69, 71, 73, 73, 0, 70, 84, 0, + 77, 62, 75, 67, 76, 81, 68, 0, + 67, 70, 70, 74, 69, 63, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicTrance103.scd b/sound_algo/palette/melodies/epic/mepicTrance103.scd new file mode 100644 index 0000000..3b59116 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicTrance103.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicTrance103 -- epic melody (128 steps), genre: trance +// ===================================================================== +( +~mepicTrance103 = [ + 65, 0, 0, 73, 78, 78, 66, 73, + 66, 68, 69, 71, 66, 83, 83, 0, + 78, 74, 0, 71, 78, 77, 69, 73, + 66, 68, 69, 71, 0, 0, 0, 68, + 0, 71, 73, 73, 81, 0, 81, 0, + 61, 62, 65, 66, 80, 69, 0, 0, + 69, 71, 73, 74, 73, 77, 74, 78, + 61, 62, 65, 66, 73, 0, 74, 0, + 74, 66, 66, 69, 0, 65, 62, 77, + 62, 65, 66, 68, 69, 61, 71, 81, + 0, 61, 61, 0, 0, 74, 74, 77, + 61, 62, 65, 66, 0, 71, 0, 66, + 65, 0, 81, 73, 66, 80, 0, 83, + 62, 65, 66, 68, 81, 0, 71, 74, + 66, 68, 69, 71, 0, 62, 66, 0, + 68, 69, 71, 73, 69, 81, 65, 65 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicTribal100.scd b/sound_algo/palette/melodies/epic/mepicTribal100.scd new file mode 100644 index 0000000..3fda16e --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicTribal100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicTribal100 -- epic melody (128 steps), genre: tribal +// ===================================================================== +( +~mepicTribal100 = [ + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43, + 52, 60, 55, 0, 0, 36, 43, 43 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicTribal101.scd b/sound_algo/palette/melodies/epic/mepicTribal101.scd new file mode 100644 index 0000000..ecd07e7 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicTribal101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicTribal101 -- epic melody (128 steps), genre: tribal +// ===================================================================== +( +~mepicTribal101 = [ + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 55, 38, + 0, 38, 0, 0, 0, 48, 54, 38, + 0, 38, 0, 0, 0, 47, 57, 36, + 0, 39, 0, 0, 0, 50, 54, 39 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicWorld100.scd b/sound_algo/palette/melodies/epic/mepicWorld100.scd new file mode 100644 index 0000000..23bc6a3 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicWorld100.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicWorld100 -- epic melody (128 steps), genre: world +// ===================================================================== +( +~mepicWorld100 = [ + 60, 74, 0, 0, 62, 72, 69, 76, + 82, 69, 0, 0, 0, 0, 62, 0, + 70, 70, 62, 76, 64, 72, 69, 0, + 62, 0, 0, 0, 0, 0, 74, 0, + 60, 74, 0, 0, 62, 72, 69, 76, + 82, 69, 0, 0, 0, 0, 62, 0, + 70, 70, 62, 76, 64, 72, 69, 0, + 62, 0, 0, 0, 0, 0, 74, 0, + 64, 81, 60, 62, 82, 64, 70, 79, + 79, 82, 65, 62, 70, 0, 0, 0, + 64, 64, 0, 69, 0, 84, 64, 0, + 70, 0, 65, 0, 74, 0, 0, 65, + 60, 74, 0, 0, 62, 72, 69, 76, + 82, 69, 0, 0, 0, 0, 62, 0, + 70, 70, 62, 76, 64, 72, 69, 0, + 62, 0, 0, 0, 0, 0, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicWorld101.scd b/sound_algo/palette/melodies/epic/mepicWorld101.scd new file mode 100644 index 0000000..ee4f3fc --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicWorld101.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicWorld101 -- epic melody (128 steps), genre: world +// ===================================================================== +( +~mepicWorld101 = [ + 82, 72, 70, 64, 82, 0, 0, 82, + 60, 0, 79, 76, 67, 0, 65, 60, + 70, 62, 62, 76, 0, 72, 69, 79, + 67, 60, 0, 62, 0, 65, 70, 74, + 62, 76, 72, 65, 0, 77, 77, 79, + 77, 60, 0, 69, 79, 64, 65, 60, + 74, 69, 69, 81, 62, 0, 0, 84, + 70, 76, 0, 82, 65, 69, 84, 70, + 70, 70, 84, 0, 64, 70, 0, 62, + 0, 81, 69, 79, 70, 65, 84, 76, + 72, 64, 79, 60, 65, 0, 81, 81, + 70, 74, 67, 60, 0, 0, 82, 0, + 62, 77, 81, 0, 69, 70, 74, 0, + 0, 69, 79, 0, 0, 61, 61, 71, + 75, 62, 61, 68, 60, 84, 71, 0, + 82, 75, 66, 82, 74, 0, 62, 79 +]; +) diff --git a/sound_algo/palette/melodies/epic/mepicWorld102.scd b/sound_algo/palette/melodies/epic/mepicWorld102.scd new file mode 100644 index 0000000..745e955 --- /dev/null +++ b/sound_algo/palette/melodies/epic/mepicWorld102.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// ~mepicWorld102 -- epic melody (128 steps), genre: world +// ===================================================================== +( +~mepicWorld102 = [ + 0, 64, 62, 0, 62, 77, 69, 0, + 0, 82, 77, 77, 82, 81, 0, 72, + 0, 65, 76, 79, 72, 77, 0, 70, + 62, 62, 79, 0, 72, 82, 67, 0, + 0, 64, 62, 0, 62, 77, 69, 0, + 0, 82, 77, 77, 82, 81, 0, 72, + 0, 65, 76, 79, 72, 77, 0, 70, + 62, 62, 79, 0, 72, 82, 67, 0, + 0, 72, 65, 65, 62, 67, 72, 0, + 76, 60, 81, 76, 69, 69, 60, 0, + 69, 84, 0, 79, 70, 0, 82, 0, + 0, 0, 74, 65, 84, 65, 62, 60, + 0, 64, 62, 0, 62, 77, 69, 0, + 0, 82, 77, 79, 82, 82, 0, 74, + 0, 66, 78, 80, 73, 76, 0, 71, + 64, 64, 79, 0, 73, 84, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/helpers.scd b/sound_algo/palette/melodies/helpers.scd new file mode 100644 index 0000000..5e17ffa --- /dev/null +++ b/sound_algo/palette/melodies/helpers.scd @@ -0,0 +1,112 @@ +// ===================================================================== +// palette/melodies/helpers.scd +// Helpers de generation/manipulation de patterns longs +// +// ~stretchPattern, ~chainPatterns, ~mirror, ~sequenceUp, +// ~callResponse, ~aabaForm, ~buildArc, ~rhythmicMotif, +// ~melodyFromChords +// +// Charge par palette/melodies/index.scd. Un seul bloc top-level. +// ===================================================================== +( +// --- ~stretchPattern.(notes, factor) : etend un pattern court ----- +// factor=2 -> chaque note tenue 2x plus longtemps (silences ajoutes) +~stretchPattern = { |notes, factor = 2| + var out = List.new; + notes.do { |n| + out.add(n); + (factor - 1).do { out.add(0) }; + }; + out.asArray; +}; + +// --- ~chainPatterns.([p1, p2, p3]) : enchaine plusieurs patterns --- +~chainPatterns = { |patterns| + var out = List.new; + patterns.do { |p| p.do { |n| out.add(n) } }; + out.asArray; +}; + +// --- ~mirror.(notes) : palindrome (pattern + miroir) -------------- +~mirror = { |notes| + notes ++ notes.reverse; +}; + +// --- ~sequenceUp.(notes, steps, transpose) : Krautrock seq style -- +// steps = nombre de repetitions, transpose = decalage par rep +~sequenceUp = { |notes, steps = 4, transpose = 2| + var out = List.new; + steps.do { |i| + notes.do { |n| + out.add(if (n > 0) { n + (transpose * i) } { 0 }); + }; + }; + out.asArray; +}; + +// --- ~callResponse.(call, response, n) : alterne call/response ---- +~callResponse = { |call, response, n = 2| + var out = List.new; + n.do { + call.do { |x| out.add(x) }; + response.do { |x| out.add(x) }; + }; + out.asArray; +}; + +// --- ~aabaForm.(intro, dev, climax) : structure AABA -------------- +// AABA = intro - intro - developpement - climax (defaut: dev) +~aabaForm = { |intro, dev, climax| + var c = climax ?? { dev }; + intro ++ intro ++ dev ++ c; +}; + +// --- ~buildArc.(scale, len, lowOct, highOct) : arc montee/descente +~buildArc = { |scale, len = 32, lowOct = 4, highOct = 6| + var out = List.new, half = len / 2, range = highOct - lowOct; + half.do { |i| + var oct = lowOct + (range * i / half); + var deg = (i % scale.size); + out.add(scale[deg] + (12 * oct.floor.asInteger)); + }; + half.do { |i| + var oct = highOct - (range * i / half); + var deg = ((scale.size - 1) - (i % scale.size)).max(0); + out.add(scale[deg] + (12 * oct.floor.asInteger)); + }; + out.asArray; +}; + +// --- ~rhythmicMotif.(motif, scale, len) : motif rythmique repete -- +// motif = pattern de 0/1 (silence/note), scale = liste degres MIDI +~rhythmicMotif = { |motif, scale, len = 32| + var out = List.new, idx = 0; + len.do { |i| + var hit = motif.wrapAt(i); + if (hit > 0) { + out.add(scale.wrapAt(idx)); + idx = idx + 1; + } { + out.add(0); + }; + }; + out.asArray; +}; + +// --- ~melodyFromChords.(chordRoots, len, octaveRange) ------------- +// genere mel qui suit une progression d'accords +~melodyFromChords = { |chordRoots, len = 32, octRange = 1| + var out = List.new; + var stepsPerChord = (len / chordRoots.size).floor.asInteger; + chordRoots.do { |r| + stepsPerChord.do { |i| + var pool = [r, r + 4, r + 7, r + 12, r + 11, r + 14]; + var oct = (octRange.rand2 * 12); + if (0.7.coin) { out.add(pool.choose + oct) } { out.add(0) }; + }; + }; + out.asArray; +}; + +"[melodies/helpers] stretch/chain/mirror/sequenceUp/callResponse/aabaForm/buildArc/rhythmicMotif/melodyFromChords prets".postln; +) diff --git a/sound_algo/palette/melodies/index.scd b/sound_algo/palette/melodies/index.scd new file mode 100644 index 0000000..541bc79 --- /dev/null +++ b/sound_algo/palette/melodies/index.scd @@ -0,0 +1,26 @@ +// ===================================================================== +// palette/melodies/index.scd -- loader recursif (post-split v2) +// +// Charge : +// helpers.scd (helpers melodiques) +// short/<*.scd> ~m1..~m78 + ~m{Genre}100.. +// long/<*.scd> ~ml1..~ml30 + ~ml{Genre}100.. +// xlong/<*.scd> ~mxl1..~mxl15 + ~mxl{Genre}100.. +// epic/<*.scd> ~mepic1..~mepic10 + ~mepic{Genre}100.. +// bank.scd ~melodyBank + selecteurs +// tracks.scd systeme multi-pistes +// +// Un seul bloc top-level (compatible .load). +// ===================================================================== +( +var dir = thisProcess.nowExecutingPath.dirname; +(dir +/+ "helpers.scd").load; +["short", "long", "xlong", "epic"].do { |sub| + PathName(dir +/+ sub).files.do { |f| + if (f.extension == "scd") { f.fullPath.load }; + }; +}; +(dir +/+ "bank.scd").load; +(dir +/+ "tracks.scd").load; +"=== melodies module loaded (recursive) ===".postln; +) diff --git a/sound_algo/palette/melodies/long.scd b/sound_algo/palette/melodies/long.scd new file mode 100644 index 0000000..7b32812 --- /dev/null +++ b/sound_algo/palette/melodies/long.scd @@ -0,0 +1,219 @@ +// ===================================================================== +// palette/melodies/long.scd +// ~ml1..~ml30 -- 30 patterns melodiques de 64 pas (4 mesures) +// +// Charge par palette/melodies/index.scd. Un seul bloc top-level. +// ===================================================================== +( +~ml1 = [ + 36, 0, 48, 0, 36, 39, 0, 48, 36, 0, 51, 39, 0, 36, 48, 0, + 36, 0, 48, 51, 36, 39, 48, 51, 39, 0, 36, 48, 0, 39, 0, 36, + 36, 51, 48, 36, 39, 0, 51, 48, 36, 0, 51, 53, 39, 36, 48, 0, + 36, 53, 51, 48, 39, 0, 36, 48, 36, 0, 51, 0, 48, 39, 36, 0 +]; + +~ml2 = [ + 60, 0, 0, 0, 67, 0, 0, 0, 72, 0, 0, 0, 70, 0, 0, 0, + 60, 67, 72, 67, 65, 67, 70, 72, 75, 72, 70, 67, 70, 72, 75, 79, + 60, 67, 72, 75, 72, 67, 60, 67, 65, 72, 77, 79, 77, 72, 65, 72, + 79, 77, 75, 72, 70, 67, 65, 63, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml3 = [ + 63, 0, 70, 0, 65, 0, 72, 0, 63, 0, 70, 0, 65, 0, 72, 75, + 65, 0, 72, 0, 67, 0, 75, 0, 65, 0, 72, 0, 67, 0, 75, 79, + 63, 70, 65, 72, 67, 75, 70, 77, 72, 79, 75, 82, 77, 84, 79, 86, + 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 65, 0, 67, 0 +]; + +~ml4 = [ + 36, 0, 0, 36, 0, 39, 0, 36, 41, 0, 0, 36, 0, 41, 0, 39, + 36, 0, 0, 41, 0, 39, 0, 36, 43, 0, 0, 41, 0, 36, 0, 39, + 34, 0, 0, 36, 0, 39, 0, 41, 36, 0, 0, 39, 0, 41, 0, 43, + 36, 0, 39, 0, 41, 0, 39, 0, 36, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml5 = [ + 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 70, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml6 = [ + 60, 61, 0, 64, 65, 0, 67, 68, 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 68, 71, 72, 71, 68, 67, 65, 64, 61, 60, 0, + 63, 64, 67, 68, 70, 71, 0, 73, 75, 73, 71, 70, 68, 67, 64, 63, + 60, 61, 64, 65, 67, 68, 71, 72, 75, 72, 71, 68, 67, 64, 61, 60 +]; + +~ml7 = [ + 67, 0, 72, 0, 70, 0, 67, 65, 63, 0, 67, 0, 70, 0, 72, 75, + 75, 0, 72, 0, 70, 0, 67, 65, 63, 0, 60, 0, 65, 0, 67, 70, + 72, 0, 75, 0, 79, 0, 75, 72, 70, 0, 75, 0, 72, 0, 70, 67, + 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0, 0 +]; + +~ml8 = [ + 60, 61, 63, 0, 65, 63, 61, 60, 0, 67, 65, 0, 68, 67, 65, 63, + 60, 61, 63, 0, 65, 63, 61, 60, 67, 65, 63, 61, 60, 0, 0, 0, + 63, 65, 67, 0, 68, 67, 65, 63, 0, 70, 68, 0, 72, 70, 68, 67, + 65, 0, 63, 0, 61, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml9 = [ + 72, 0, 0, 67, 0, 65, 0, 62, 60, 0, 62, 0, 65, 0, 67, 72, + 74, 0, 0, 69, 0, 67, 0, 65, 62, 0, 65, 0, 67, 0, 72, 0, + 74, 0, 77, 0, 79, 0, 77, 74, 72, 0, 69, 0, 67, 0, 65, 62, + 60, 62, 65, 67, 69, 72, 74, 77, 74, 72, 69, 67, 65, 62, 60, 0 +]; + +~ml10 = [ + 48, 0, 54, 0, 48, 0, 54, 0, 60, 0, 54, 0, 48, 0, 54, 0, + 48, 54, 60, 54, 48, 0, 54, 0, 60, 54, 48, 54, 60, 54, 48, 0, + 36, 0, 42, 0, 36, 0, 42, 0, 48, 0, 42, 0, 36, 0, 42, 0, + 48, 54, 60, 66, 60, 54, 48, 42, 36, 42, 48, 54, 60, 54, 48, 36 +]; + +~ml11 = [ + 36, 0, 36, 0, 36, 0, 36, 0, 39, 0, 39, 0, 39, 0, 39, 0, + 36, 0, 36, 39, 36, 0, 39, 0, 41, 0, 39, 0, 36, 0, 41, 0, + 34, 0, 34, 0, 36, 0, 39, 0, 41, 0, 39, 36, 41, 39, 36, 0, + 36, 39, 41, 43, 41, 39, 36, 34, 36, 0, 39, 0, 41, 0, 0, 0 +]; + +~ml12 = [ + 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 0, + 60, 67, 65, 70, 60, 67, 65, 0, 60, 67, 65, 70, 60, 67, 65, 72, + 63, 70, 67, 0, 63, 70, 67, 0, 63, 70, 67, 72, 63, 70, 67, 75, + 65, 72, 70, 0, 65, 72, 70, 75, 65, 72, 70, 77, 60, 67, 65, 0 +]; + +~ml13 = [ + 60, 60, 67, 60, 65, 60, 67, 60, 62, 62, 69, 62, 67, 62, 69, 62, + 63, 63, 70, 63, 68, 63, 70, 63, 65, 65, 72, 65, 70, 65, 72, 65, + 67, 67, 74, 67, 72, 67, 74, 67, 65, 65, 72, 65, 70, 65, 72, 65, + 63, 63, 70, 63, 68, 63, 70, 63, 60, 60, 67, 60, 65, 60, 67, 60 +]; + +~ml14 = [ + 67, 67, 0, 70, 72, 0, 70, 67, 65, 0, 67, 0, 0, 0, 0, 0, + 67, 67, 0, 70, 72, 0, 75, 72, 70, 0, 67, 0, 0, 0, 0, 0, + 72, 75, 0, 77, 79, 0, 77, 75, 72, 0, 70, 0, 67, 0, 65, 0, + 67, 0, 70, 0, 72, 0, 75, 0, 72, 70, 67, 65, 67, 0, 0, 0 +]; + +~ml15 = [ + 72, 0, 70, 0, 67, 70, 0, 65, 63, 0, 65, 67, 70, 0, 72, 75, + 77, 0, 75, 0, 72, 75, 0, 70, 67, 0, 70, 72, 75, 0, 77, 79, + 75, 0, 77, 0, 75, 72, 0, 70, 67, 0, 65, 67, 70, 0, 75, 72, + 70, 0, 67, 0, 65, 67, 0, 63, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml16 = [ + 60, 62, 0, 65, 67, 0, 69, 70, 67, 65, 62, 60, 0, 65, 67, 70, + 62, 0, 65, 67, 69, 0, 70, 72, 69, 67, 65, 62, 0, 60, 65, 67, + 65, 67, 69, 70, 72, 70, 69, 67, 65, 62, 60, 0, 62, 65, 67, 69, + 72, 70, 69, 67, 65, 62, 60, 0, 65, 67, 69, 70, 72, 0, 70, 0 +]; + +~ml17 = [ + 60, 61, 0, 64, 65, 0, 67, 68, 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 0, 68, 71, 72, 71, 68, 67, 65, 64, 61, 60, + 65, 67, 0, 68, 71, 0, 72, 73, 76, 0, 73, 72, 71, 68, 0, 67, + 72, 73, 76, 73, 72, 71, 68, 67, 65, 64, 61, 60, 64, 65, 67, 68 +]; + +~ml18 = [ + 60, 0, 0, 0, 63, 0, 0, 0, 65, 0, 0, 0, 67, 0, 0, 0, + 60, 0, 0, 0, 67, 0, 0, 0, 60, 0, 0, 0, 65, 0, 0, 0, + 63, 0, 0, 0, 67, 0, 0, 0, 65, 0, 0, 0, 70, 0, 0, 0, + 60, 0, 67, 0, 63, 0, 70, 0, 65, 0, 67, 0, 60, 0, 0, 0 +]; + +~ml19 = [ + 48, 0, 51, 0, 53, 0, 48, 0, 46, 0, 51, 0, 53, 0, 55, 0, + 48, 0, 51, 53, 51, 0, 48, 0, 46, 0, 53, 0, 55, 0, 51, 48, + 44, 0, 48, 0, 51, 0, 48, 0, 53, 0, 55, 0, 51, 0, 48, 0, + 48, 51, 53, 51, 48, 0, 46, 48, 55, 53, 51, 48, 46, 44, 0, 0 +]; + +~ml20 = [ + 60, 64, 67, 72, 60, 64, 67, 72, 62, 65, 69, 74, 62, 65, 69, 74, + 63, 67, 70, 75, 63, 67, 70, 75, 60, 64, 67, 72, 65, 67, 70, 72, + 65, 69, 72, 77, 65, 69, 72, 77, 67, 71, 74, 79, 67, 71, 74, 79, + 72, 76, 79, 84, 72, 76, 79, 84, 60, 64, 67, 72, 60, 64, 67, 72 +]; + +~ml21 = [ + 60, 0, 0, 63, 0, 65, 0, 67, 0, 70, 0, 67, 65, 63, 0, 60, + 0, 65, 0, 67, 0, 70, 0, 72, 0, 70, 0, 67, 0, 65, 0, 63, + 65, 0, 0, 67, 0, 70, 0, 72, 0, 75, 0, 72, 70, 67, 0, 65, + 0, 67, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0 +]; + +~ml22 = [ + 36, 0, 0, 0, 39, 0, 36, 0, 41, 0, 0, 0, 39, 0, 41, 36, + 34, 0, 0, 0, 39, 0, 41, 0, 43, 0, 41, 0, 39, 0, 36, 0, + 36, 0, 41, 0, 43, 0, 41, 0, 46, 0, 43, 0, 41, 0, 39, 0, + 36, 39, 41, 43, 46, 43, 41, 39, 36, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml23 = [ + 67, 0, 70, 0, 0, 67, 0, 65, 67, 0, 70, 72, 0, 70, 0, 67, + 65, 0, 67, 0, 0, 65, 0, 63, 65, 0, 67, 70, 0, 72, 0, 70, + 72, 0, 75, 0, 0, 72, 0, 70, 72, 0, 75, 77, 0, 75, 0, 72, + 70, 0, 72, 0, 0, 70, 0, 67, 65, 0, 67, 0, 70, 0, 72, 0 +]; + +~ml24 = [ + 60, 0, 0, 0, 60, 0, 60, 0, 73, 0, 0, 0, 73, 0, 73, 0, + 60, 60, 0, 73, 73, 0, 60, 73, 79, 0, 73, 0, 60, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 65, 0, 78, 0, 0, 0, 78, 0, 78, 0, + 65, 65, 0, 78, 78, 0, 65, 78, 84, 0, 78, 0, 65, 0, 0, 0 +]; + +~ml25 = [ + 60, 67, 72, 64, 67, 71, 60, 67, 62, 65, 69, 62, 65, 69, 60, 67, + 64, 67, 71, 64, 67, 71, 60, 67, 65, 69, 72, 65, 69, 72, 60, 67, + 67, 72, 76, 67, 71, 74, 60, 67, 65, 69, 72, 65, 69, 76, 65, 67, + 64, 67, 71, 64, 67, 71, 62, 65, 60, 67, 72, 64, 60, 64, 67, 60 +]; + +~ml26 = [ + 0, 67, 0, 70, 0, 67, 0, 65, 0, 67, 0, 72, 0, 70, 0, 67, + 0, 70, 0, 72, 0, 70, 0, 67, 0, 65, 0, 67, 0, 70, 0, 72, + 0, 72, 0, 75, 0, 72, 0, 70, 0, 72, 0, 77, 0, 75, 0, 72, + 0, 75, 0, 77, 0, 75, 0, 72, 0, 70, 0, 67, 0, 70, 0, 72 +]; + +~ml27 = [ + 36, 0, 38, 0, 39, 0, 41, 0, 43, 0, 44, 0, 43, 0, 41, 0, + 39, 0, 41, 0, 43, 0, 44, 0, 46, 0, 48, 0, 46, 0, 43, 0, + 44, 0, 46, 0, 48, 0, 50, 0, 51, 0, 50, 0, 48, 0, 46, 0, + 43, 0, 46, 0, 48, 0, 51, 0, 46, 0, 43, 0, 41, 0, 39, 36 +]; + +~ml28 = [ + 60, 61, 0, 70, 0, 73, 0, 67, 61, 0, 73, 0, 67, 70, 0, 76, + 60, 61, 0, 70, 0, 73, 0, 67, 73, 76, 0, 70, 67, 61, 60, 0, + 63, 64, 0, 73, 0, 76, 0, 70, 64, 0, 76, 0, 70, 73, 0, 79, + 63, 64, 73, 76, 79, 76, 73, 70, 67, 64, 63, 61, 60, 0, 0, 0 +]; + +~ml29 = [ + 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 0, 0, 0, + 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 75, 73, 71, 69, 67, 65, 63, 61, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~ml30 = [ + 60, 0, 62, 0, 64, 0, 66, 0, 68, 0, 70, 0, 72, 0, 0, 0, + 72, 0, 70, 0, 68, 0, 66, 0, 64, 0, 62, 0, 60, 0, 0, 0, + 66, 0, 68, 0, 70, 0, 72, 0, 74, 0, 76, 0, 78, 0, 0, 0, + 78, 0, 76, 0, 74, 0, 72, 0, 70, 0, 68, 0, 66, 0, 0, 0 +]; + +"[melodies/long] ml1..ml30 (64 steps) prets".postln; +) diff --git a/sound_algo/palette/melodies/long/ml1.scd b/sound_algo/palette/melodies/long/ml1.scd new file mode 100644 index 0000000..9fd0fca --- /dev/null +++ b/sound_algo/palette/melodies/long/ml1.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml1 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~ml1 = [ + 36, 0, 48, 0, 36, 39, 0, 48, + 36, 0, 51, 39, 0, 36, 48, 0, + 36, 0, 48, 51, 36, 39, 48, 51, + 39, 0, 36, 48, 0, 39, 0, 36, + 36, 51, 48, 36, 39, 0, 51, 48, + 36, 0, 51, 53, 39, 36, 48, 0, + 36, 53, 51, 48, 39, 0, 36, 48, + 36, 0, 51, 0, 48, 39, 36, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml10.scd b/sound_algo/palette/melodies/long/ml10.scd new file mode 100644 index 0000000..f3e072e --- /dev/null +++ b/sound_algo/palette/melodies/long/ml10.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml10 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~ml10 = [ + 48, 0, 54, 0, 48, 0, 54, 0, + 60, 0, 54, 0, 48, 0, 54, 0, + 48, 54, 60, 54, 48, 0, 54, 0, + 60, 54, 48, 54, 60, 54, 48, 0, + 36, 0, 42, 0, 36, 0, 42, 0, + 48, 0, 42, 0, 36, 0, 42, 0, + 48, 54, 60, 66, 60, 54, 48, 42, + 36, 42, 48, 54, 60, 54, 48, 36 +]; +) diff --git a/sound_algo/palette/melodies/long/ml11.scd b/sound_algo/palette/melodies/long/ml11.scd new file mode 100644 index 0000000..79e0291 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml11.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml11 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~ml11 = [ + 36, 0, 36, 0, 36, 0, 36, 0, + 39, 0, 39, 0, 39, 0, 39, 0, + 36, 0, 36, 39, 36, 0, 39, 0, + 41, 0, 39, 0, 36, 0, 41, 0, + 34, 0, 34, 0, 36, 0, 39, 0, + 41, 0, 39, 36, 41, 39, 36, 0, + 36, 39, 41, 43, 41, 39, 36, 34, + 36, 0, 39, 0, 41, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml12.scd b/sound_algo/palette/melodies/long/ml12.scd new file mode 100644 index 0000000..1bf383d --- /dev/null +++ b/sound_algo/palette/melodies/long/ml12.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml12 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~ml12 = [ + 60, 67, 65, 0, 60, 67, 65, 0, + 60, 67, 65, 0, 60, 67, 65, 0, + 60, 67, 65, 70, 60, 67, 65, 0, + 60, 67, 65, 70, 60, 67, 65, 72, + 63, 70, 67, 0, 63, 70, 67, 0, + 63, 70, 67, 72, 63, 70, 67, 75, + 65, 72, 70, 0, 65, 72, 70, 75, + 65, 72, 70, 77, 60, 67, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml13.scd b/sound_algo/palette/melodies/long/ml13.scd new file mode 100644 index 0000000..2ee5efa --- /dev/null +++ b/sound_algo/palette/melodies/long/ml13.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml13 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~ml13 = [ + 60, 60, 67, 60, 65, 60, 67, 60, + 62, 62, 69, 62, 67, 62, 69, 62, + 63, 63, 70, 63, 68, 63, 70, 63, + 65, 65, 72, 65, 70, 65, 72, 65, + 67, 67, 74, 67, 72, 67, 74, 67, + 65, 65, 72, 65, 70, 65, 72, 65, + 63, 63, 70, 63, 68, 63, 70, 63, + 60, 60, 67, 60, 65, 60, 67, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/ml14.scd b/sound_algo/palette/melodies/long/ml14.scd new file mode 100644 index 0000000..8c94b36 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml14.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml14 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~ml14 = [ + 67, 67, 0, 70, 72, 0, 70, 67, + 65, 0, 67, 0, 0, 0, 0, 0, + 67, 67, 0, 70, 72, 0, 75, 72, + 70, 0, 67, 0, 0, 0, 0, 0, + 72, 75, 0, 77, 79, 0, 77, 75, + 72, 0, 70, 0, 67, 0, 65, 0, + 67, 0, 70, 0, 72, 0, 75, 0, + 72, 70, 67, 65, 67, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml15.scd b/sound_algo/palette/melodies/long/ml15.scd new file mode 100644 index 0000000..4e8720a --- /dev/null +++ b/sound_algo/palette/melodies/long/ml15.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml15 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~ml15 = [ + 72, 0, 70, 0, 67, 70, 0, 65, + 63, 0, 65, 67, 70, 0, 72, 75, + 77, 0, 75, 0, 72, 75, 0, 70, + 67, 0, 70, 72, 75, 0, 77, 79, + 75, 0, 77, 0, 75, 72, 0, 70, + 67, 0, 65, 67, 70, 0, 75, 72, + 70, 0, 67, 0, 65, 67, 0, 63, + 60, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml16.scd b/sound_algo/palette/melodies/long/ml16.scd new file mode 100644 index 0000000..761bb43 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml16.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml16 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~ml16 = [ + 60, 62, 0, 65, 67, 0, 69, 70, + 67, 65, 62, 60, 0, 65, 67, 70, + 62, 0, 65, 67, 69, 0, 70, 72, + 69, 67, 65, 62, 0, 60, 65, 67, + 65, 67, 69, 70, 72, 70, 69, 67, + 65, 62, 60, 0, 62, 65, 67, 69, + 72, 70, 69, 67, 65, 62, 60, 0, + 65, 67, 69, 70, 72, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml17.scd b/sound_algo/palette/melodies/long/ml17.scd new file mode 100644 index 0000000..7f1d4f9 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml17.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml17 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~ml17 = [ + 60, 61, 0, 64, 65, 0, 67, 68, + 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 0, 68, 71, + 72, 71, 68, 67, 65, 64, 61, 60, + 65, 67, 0, 68, 71, 0, 72, 73, + 76, 0, 73, 72, 71, 68, 0, 67, + 72, 73, 76, 73, 72, 71, 68, 67, + 65, 64, 61, 60, 64, 65, 67, 68 +]; +) diff --git a/sound_algo/palette/melodies/long/ml18.scd b/sound_algo/palette/melodies/long/ml18.scd new file mode 100644 index 0000000..1b20f41 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml18.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml18 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~ml18 = [ + 60, 0, 0, 0, 63, 0, 0, 0, + 65, 0, 0, 0, 67, 0, 0, 0, + 60, 0, 0, 0, 67, 0, 0, 0, + 60, 0, 0, 0, 65, 0, 0, 0, + 63, 0, 0, 0, 67, 0, 0, 0, + 65, 0, 0, 0, 70, 0, 0, 0, + 60, 0, 67, 0, 63, 0, 70, 0, + 65, 0, 67, 0, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml19.scd b/sound_algo/palette/melodies/long/ml19.scd new file mode 100644 index 0000000..2a58066 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml19.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml19 -- long melody (64 steps), genre: phonk +// ===================================================================== +( +~ml19 = [ + 48, 0, 51, 0, 53, 0, 48, 0, + 46, 0, 51, 0, 53, 0, 55, 0, + 48, 0, 51, 53, 51, 0, 48, 0, + 46, 0, 53, 0, 55, 0, 51, 48, + 44, 0, 48, 0, 51, 0, 48, 0, + 53, 0, 55, 0, 51, 0, 48, 0, + 48, 51, 53, 51, 48, 0, 46, 48, + 55, 53, 51, 48, 46, 44, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml2.scd b/sound_algo/palette/melodies/long/ml2.scd new file mode 100644 index 0000000..21bbc15 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml2.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml2 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~ml2 = [ + 60, 0, 0, 0, 67, 0, 0, 0, + 72, 0, 0, 0, 70, 0, 0, 0, + 60, 67, 72, 67, 65, 67, 70, 72, + 75, 72, 70, 67, 70, 72, 75, 79, + 60, 67, 72, 75, 72, 67, 60, 67, + 65, 72, 77, 79, 77, 72, 65, 72, + 79, 77, 75, 72, 70, 67, 65, 63, + 60, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml20.scd b/sound_algo/palette/melodies/long/ml20.scd new file mode 100644 index 0000000..925448f --- /dev/null +++ b/sound_algo/palette/melodies/long/ml20.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml20 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~ml20 = [ + 60, 64, 67, 72, 60, 64, 67, 72, + 62, 65, 69, 74, 62, 65, 69, 74, + 63, 67, 70, 75, 63, 67, 70, 75, + 60, 64, 67, 72, 65, 67, 70, 72, + 65, 69, 72, 77, 65, 69, 72, 77, + 67, 71, 74, 79, 67, 71, 74, 79, + 72, 76, 79, 84, 72, 76, 79, 84, + 60, 64, 67, 72, 60, 64, 67, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/ml21.scd b/sound_algo/palette/melodies/long/ml21.scd new file mode 100644 index 0000000..c60f395 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml21.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml21 -- long melody (64 steps), genre: various +// ===================================================================== +( +~ml21 = [ + 60, 0, 0, 63, 0, 65, 0, 67, + 0, 70, 0, 67, 65, 63, 0, 60, + 0, 65, 0, 67, 0, 70, 0, 72, + 0, 70, 0, 67, 0, 65, 0, 63, + 65, 0, 0, 67, 0, 70, 0, 72, + 0, 75, 0, 72, 70, 67, 0, 65, + 0, 67, 0, 70, 0, 67, 0, 65, + 0, 63, 0, 60, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml22.scd b/sound_algo/palette/melodies/long/ml22.scd new file mode 100644 index 0000000..c354105 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml22.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml22 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~ml22 = [ + 36, 0, 0, 0, 39, 0, 36, 0, + 41, 0, 0, 0, 39, 0, 41, 36, + 34, 0, 0, 0, 39, 0, 41, 0, + 43, 0, 41, 0, 39, 0, 36, 0, + 36, 0, 41, 0, 43, 0, 41, 0, + 46, 0, 43, 0, 41, 0, 39, 0, + 36, 39, 41, 43, 46, 43, 41, 39, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml23.scd b/sound_algo/palette/melodies/long/ml23.scd new file mode 100644 index 0000000..e7a253d --- /dev/null +++ b/sound_algo/palette/melodies/long/ml23.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml23 -- long melody (64 steps), genre: various +// ===================================================================== +( +~ml23 = [ + 67, 0, 70, 0, 0, 67, 0, 65, + 67, 0, 70, 72, 0, 70, 0, 67, + 65, 0, 67, 0, 0, 65, 0, 63, + 65, 0, 67, 70, 0, 72, 0, 70, + 72, 0, 75, 0, 0, 72, 0, 70, + 72, 0, 75, 77, 0, 75, 0, 72, + 70, 0, 72, 0, 0, 70, 0, 67, + 65, 0, 67, 0, 70, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml24.scd b/sound_algo/palette/melodies/long/ml24.scd new file mode 100644 index 0000000..aba5548 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml24.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml24 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~ml24 = [ + 60, 0, 0, 0, 60, 0, 60, 0, + 73, 0, 0, 0, 73, 0, 73, 0, + 60, 60, 0, 73, 73, 0, 60, 73, + 79, 0, 73, 0, 60, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 65, 0, + 78, 0, 0, 0, 78, 0, 78, 0, + 65, 65, 0, 78, 78, 0, 65, 78, + 84, 0, 78, 0, 65, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml25.scd b/sound_algo/palette/melodies/long/ml25.scd new file mode 100644 index 0000000..4e868ba --- /dev/null +++ b/sound_algo/palette/melodies/long/ml25.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml25 -- long melody (64 steps), genre: world +// ===================================================================== +( +~ml25 = [ + 60, 67, 72, 64, 67, 71, 60, 67, + 62, 65, 69, 62, 65, 69, 60, 67, + 64, 67, 71, 64, 67, 71, 60, 67, + 65, 69, 72, 65, 69, 72, 60, 67, + 67, 72, 76, 67, 71, 74, 60, 67, + 65, 69, 72, 65, 69, 76, 65, 67, + 64, 67, 71, 64, 67, 71, 62, 65, + 60, 67, 72, 64, 60, 64, 67, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/ml26.scd b/sound_algo/palette/melodies/long/ml26.scd new file mode 100644 index 0000000..33b58f1 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml26.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml26 -- long melody (64 steps), genre: dub +// ===================================================================== +( +~ml26 = [ + 0, 67, 0, 70, 0, 67, 0, 65, + 0, 67, 0, 72, 0, 70, 0, 67, + 0, 70, 0, 72, 0, 70, 0, 67, + 0, 65, 0, 67, 0, 70, 0, 72, + 0, 72, 0, 75, 0, 72, 0, 70, + 0, 72, 0, 77, 0, 75, 0, 72, + 0, 75, 0, 77, 0, 75, 0, 72, + 0, 70, 0, 67, 0, 70, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/ml27.scd b/sound_algo/palette/melodies/long/ml27.scd new file mode 100644 index 0000000..db88f64 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml27.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml27 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~ml27 = [ + 36, 0, 38, 0, 39, 0, 41, 0, + 43, 0, 44, 0, 43, 0, 41, 0, + 39, 0, 41, 0, 43, 0, 44, 0, + 46, 0, 48, 0, 46, 0, 43, 0, + 44, 0, 46, 0, 48, 0, 50, 0, + 51, 0, 50, 0, 48, 0, 46, 0, + 43, 0, 46, 0, 48, 0, 51, 0, + 46, 0, 43, 0, 41, 0, 39, 36 +]; +) diff --git a/sound_algo/palette/melodies/long/ml28.scd b/sound_algo/palette/melodies/long/ml28.scd new file mode 100644 index 0000000..a55d8f2 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml28.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml28 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~ml28 = [ + 60, 61, 0, 70, 0, 73, 0, 67, + 61, 0, 73, 0, 67, 70, 0, 76, + 60, 61, 0, 70, 0, 73, 0, 67, + 73, 76, 0, 70, 67, 61, 60, 0, + 63, 64, 0, 73, 0, 76, 0, 70, + 64, 0, 76, 0, 70, 73, 0, 79, + 63, 64, 73, 76, 79, 76, 73, 70, + 67, 64, 63, 61, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml29.scd b/sound_algo/palette/melodies/long/ml29.scd new file mode 100644 index 0000000..37504e1 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml29.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml29 -- long melody (64 steps), genre: chromatic +// ===================================================================== +( +~ml29 = [ + 72, 71, 70, 69, 68, 67, 66, 65, + 64, 63, 62, 61, 60, 0, 0, 0, + 72, 71, 70, 69, 68, 67, 66, 65, + 64, 63, 62, 61, 60, 59, 58, 57, + 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, + 75, 73, 71, 69, 67, 65, 63, 61, + 60, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml3.scd b/sound_algo/palette/melodies/long/ml3.scd new file mode 100644 index 0000000..030d140 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml3.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml3 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~ml3 = [ + 63, 0, 70, 0, 65, 0, 72, 0, + 63, 0, 70, 0, 65, 0, 72, 75, + 65, 0, 72, 0, 67, 0, 75, 0, + 65, 0, 72, 0, 67, 0, 75, 79, + 63, 70, 65, 72, 67, 75, 70, 77, + 72, 79, 75, 82, 77, 84, 79, 86, + 72, 0, 70, 0, 67, 0, 65, 0, + 63, 0, 60, 0, 65, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml30.scd b/sound_algo/palette/melodies/long/ml30.scd new file mode 100644 index 0000000..662b9c1 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml30.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml30 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~ml30 = [ + 60, 0, 62, 0, 64, 0, 66, 0, + 68, 0, 70, 0, 72, 0, 0, 0, + 72, 0, 70, 0, 68, 0, 66, 0, + 64, 0, 62, 0, 60, 0, 0, 0, + 66, 0, 68, 0, 70, 0, 72, 0, + 74, 0, 76, 0, 78, 0, 0, 0, + 78, 0, 76, 0, 74, 0, 72, 0, + 70, 0, 68, 0, 66, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml4.scd b/sound_algo/palette/melodies/long/ml4.scd new file mode 100644 index 0000000..fbc85e2 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml4.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml4 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~ml4 = [ + 36, 0, 0, 36, 0, 39, 0, 36, + 41, 0, 0, 36, 0, 41, 0, 39, + 36, 0, 0, 41, 0, 39, 0, 36, + 43, 0, 0, 41, 0, 36, 0, 39, + 34, 0, 0, 36, 0, 39, 0, 41, + 36, 0, 0, 39, 0, 41, 0, 43, + 36, 0, 39, 0, 41, 0, 39, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml5.scd b/sound_algo/palette/melodies/long/ml5.scd new file mode 100644 index 0000000..04f49ce --- /dev/null +++ b/sound_algo/palette/melodies/long/ml5.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml5 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~ml5 = [ + 60, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 70, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 70, 0, 0, 0, + 72, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml6.scd b/sound_algo/palette/melodies/long/ml6.scd new file mode 100644 index 0000000..204db65 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml6.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml6 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~ml6 = [ + 60, 61, 0, 64, 65, 0, 67, 68, + 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 68, 71, 72, + 71, 68, 67, 65, 64, 61, 60, 0, + 63, 64, 67, 68, 70, 71, 0, 73, + 75, 73, 71, 70, 68, 67, 64, 63, + 60, 61, 64, 65, 67, 68, 71, 72, + 75, 72, 71, 68, 67, 64, 61, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/ml7.scd b/sound_algo/palette/melodies/long/ml7.scd new file mode 100644 index 0000000..536332c --- /dev/null +++ b/sound_algo/palette/melodies/long/ml7.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml7 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~ml7 = [ + 67, 0, 72, 0, 70, 0, 67, 65, + 63, 0, 67, 0, 70, 0, 72, 75, + 75, 0, 72, 0, 70, 0, 67, 65, + 63, 0, 60, 0, 65, 0, 67, 70, + 72, 0, 75, 0, 79, 0, 75, 72, + 70, 0, 75, 0, 72, 0, 70, 67, + 72, 0, 70, 0, 67, 0, 65, 0, + 63, 0, 60, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml8.scd b/sound_algo/palette/melodies/long/ml8.scd new file mode 100644 index 0000000..91d21e0 --- /dev/null +++ b/sound_algo/palette/melodies/long/ml8.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml8 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~ml8 = [ + 60, 61, 63, 0, 65, 63, 61, 60, + 0, 67, 65, 0, 68, 67, 65, 63, + 60, 61, 63, 0, 65, 63, 61, 60, + 67, 65, 63, 61, 60, 0, 0, 0, + 63, 65, 67, 0, 68, 67, 65, 63, + 0, 70, 68, 0, 72, 70, 68, 67, + 65, 0, 63, 0, 61, 0, 60, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/ml9.scd b/sound_algo/palette/melodies/long/ml9.scd new file mode 100644 index 0000000..e4ea3af --- /dev/null +++ b/sound_algo/palette/melodies/long/ml9.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~ml9 -- long melody (64 steps), genre: world +// ===================================================================== +( +~ml9 = [ + 72, 0, 0, 67, 0, 65, 0, 62, + 60, 0, 62, 0, 65, 0, 67, 72, + 74, 0, 0, 69, 0, 67, 0, 65, + 62, 0, 65, 0, 67, 0, 72, 0, + 74, 0, 77, 0, 79, 0, 77, 74, + 72, 0, 69, 0, 67, 0, 65, 62, + 60, 62, 65, 67, 69, 72, 74, 77, + 74, 72, 69, 67, 65, 62, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid100.scd b/sound_algo/palette/melodies/long/mlAcid100.scd new file mode 100644 index 0000000..a6e7b59 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid100 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid100 = [ + 57, 59, 54, 0, 57, 0, 57, 38, + 49, 59, 50, 55, 0, 55, 59, 52, + 57, 40, 45, 45, 57, 59, 57, 0, + 0, 40, 59, 59, 0, 54, 0, 50, + 37, 43, 49, 40, 42, 54, 41, 55, + 0, 50, 0, 0, 0, 38, 40, 0, + 45, 49, 0, 57, 0, 43, 59, 40, + 0, 42, 42, 38, 38, 57, 47, 38 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid101.scd b/sound_algo/palette/melodies/long/mlAcid101.scd new file mode 100644 index 0000000..e59b63e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid101 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid101 = [ + 38, 45, 40, 50, 45, 38, 49, 0, + 37, 49, 39, 56, 49, 47, 59, 59, + 49, 0, 37, 0, 49, 54, 40, 56, + 42, 42, 52, 0, 49, 44, 0, 0, + 57, 47, 54, 47, 0, 40, 0, 44, + 42, 56, 38, 37, 0, 54, 44, 38, + 0, 50, 0, 0, 49, 50, 50, 37, + 0, 47, 0, 49, 49, 40, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid102.scd b/sound_algo/palette/melodies/long/mlAcid102.scd new file mode 100644 index 0000000..06f96b5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid102 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid102 = [ + 55, 48, 57, 60, 52, 45, 50, 38, + 0, 53, 48, 57, 47, 47, 53, 0, + 0, 0, 43, 43, 0, 41, 38, 52, + 40, 50, 41, 38, 47, 50, 47, 52, + 50, 36, 51, 0, 59, 0, 57, 52, + 0, 0, 0, 36, 43, 55, 43, 0, + 60, 41, 0, 43, 55, 41, 53, 57, + 0, 50, 0, 60, 43, 57, 0, 40 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid103.scd b/sound_algo/palette/melodies/long/mlAcid103.scd new file mode 100644 index 0000000..b99119d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid103 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid103 = [ + 49, 44, 0, 0, 59, 54, 0, 59, + 37, 57, 44, 44, 57, 50, 0, 0, + 49, 44, 0, 0, 59, 54, 0, 59, + 37, 57, 44, 44, 57, 50, 0, 0, + 0, 0, 0, 50, 57, 59, 49, 57, + 54, 54, 47, 44, 42, 56, 43, 0, + 49, 44, 0, 0, 59, 54, 0, 59, + 37, 57, 44, 44, 57, 50, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid104.scd b/sound_algo/palette/melodies/long/mlAcid104.scd new file mode 100644 index 0000000..f141919 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid104 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid104 = [ + 57, 42, 0, 0, 0, 38, 37, 42, + 54, 59, 0, 55, 0, 50, 0, 47, + 0, 50, 40, 50, 49, 45, 0, 43, + 42, 59, 45, 0, 52, 59, 0, 47, + 0, 49, 0, 59, 0, 0, 42, 42, + 42, 54, 49, 45, 0, 49, 59, 0, + 42, 54, 40, 0, 0, 54, 52, 0, + 40, 38, 49, 0, 0, 54, 0, 45 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid105.scd b/sound_algo/palette/melodies/long/mlAcid105.scd new file mode 100644 index 0000000..f028a0c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid105 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid105 = [ + 54, 43, 47, 60, 40, 38, 0, 48, + 47, 47, 47, 0, 52, 50, 48, 54, + 52, 54, 43, 38, 0, 40, 0, 43, + 0, 43, 50, 36, 52, 54, 59, 43, + 36, 54, 57, 47, 59, 52, 57, 52, + 0, 60, 0, 40, 43, 0, 50, 47, + 52, 47, 0, 0, 55, 60, 55, 55, + 38, 36, 59, 42, 0, 54, 42, 54 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid106.scd b/sound_algo/palette/melodies/long/mlAcid106.scd new file mode 100644 index 0000000..6bdd7c7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid106 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid106 = [ + 40, 53, 48, 52, 0, 55, 40, 41, + 55, 60, 60, 59, 0, 60, 55, 47, + 0, 55, 48, 0, 0, 43, 38, 40, + 52, 47, 0, 41, 40, 43, 42, 59, + 0, 38, 38, 38, 47, 0, 0, 0, + 59, 50, 38, 0, 0, 48, 0, 0, + 0, 0, 59, 0, 0, 38, 38, 0, + 0, 43, 0, 0, 40, 45, 38, 41 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid107.scd b/sound_algo/palette/melodies/long/mlAcid107.scd new file mode 100644 index 0000000..61e479b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid107 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid107 = [ + 0, 0, 0, 0, 55, 43, 45, 0, + 55, 40, 56, 60, 53, 45, 55, 47, + 38, 45, 55, 40, 43, 50, 45, 40, + 50, 41, 0, 47, 0, 36, 0, 50, + 59, 60, 61, 48, 59, 60, 60, 0, + 41, 43, 43, 53, 59, 45, 41, 0, + 59, 47, 61, 40, 47, 47, 50, 59, + 52, 0, 48, 47, 0, 40, 48, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid108.scd b/sound_algo/palette/melodies/long/mlAcid108.scd new file mode 100644 index 0000000..6f92f54 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid108 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid108 = [ + 59, 57, 52, 42, 0, 36, 0, 0, + 59, 36, 57, 0, 54, 42, 0, 57, + 59, 57, 52, 42, 0, 36, 0, 0, + 59, 36, 57, 0, 54, 42, 0, 57, + 43, 38, 44, 36, 40, 43, 41, 60, + 40, 42, 52, 50, 0, 38, 45, 47, + 59, 57, 52, 42, 0, 36, 0, 0, + 59, 36, 57, 0, 54, 42, 0, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid109.scd b/sound_algo/palette/melodies/long/mlAcid109.scd new file mode 100644 index 0000000..b946a7c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid109 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid109 = [ + 55, 60, 0, 0, 54, 60, 60, 0, + 0, 0, 59, 52, 59, 60, 45, 0, + 55, 60, 0, 0, 54, 60, 60, 0, + 0, 0, 59, 52, 59, 60, 45, 0, + 0, 54, 0, 52, 47, 0, 0, 0, + 0, 59, 0, 0, 0, 43, 0, 0, + 55, 60, 0, 0, 54, 60, 60, 0, + 0, 0, 59, 52, 59, 60, 45, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid110.scd b/sound_algo/palette/melodies/long/mlAcid110.scd new file mode 100644 index 0000000..92fd57d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid110 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid110 = [ + 40, 47, 39, 0, 52, 60, 53, 45, + 36, 45, 38, 52, 0, 59, 52, 50, + 40, 47, 39, 0, 52, 60, 53, 45, + 36, 45, 38, 52, 0, 59, 52, 50, + 40, 53, 55, 0, 55, 45, 47, 38, + 36, 60, 41, 48, 59, 60, 58, 0, + 40, 47, 39, 0, 52, 60, 53, 45, + 36, 45, 38, 52, 0, 59, 52, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid111.scd b/sound_algo/palette/melodies/long/mlAcid111.scd new file mode 100644 index 0000000..eb2da06 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid111 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid111 = [ + 0, 50, 50, 45, 0, 48, 0, 43, + 57, 36, 60, 59, 52, 0, 60, 0, + 40, 50, 52, 50, 52, 45, 53, 47, + 47, 45, 0, 50, 57, 41, 38, 50, + 47, 55, 0, 43, 40, 0, 42, 0, + 0, 43, 45, 0, 55, 0, 53, 57, + 0, 0, 55, 0, 55, 60, 0, 57, + 47, 59, 41, 59, 55, 0, 53, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid112.scd b/sound_algo/palette/melodies/long/mlAcid112.scd new file mode 100644 index 0000000..6de54d7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid112 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid112 = [ + 49, 50, 47, 0, 37, 47, 38, 59, + 44, 56, 0, 52, 0, 50, 0, 42, + 37, 0, 35, 52, 0, 52, 38, 49, + 57, 52, 59, 0, 54, 0, 54, 52, + 37, 59, 35, 54, 0, 0, 0, 49, + 38, 50, 38, 57, 45, 37, 43, 54, + 0, 56, 42, 37, 40, 56, 42, 50, + 0, 0, 49, 0, 0, 37, 40, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid113.scd b/sound_algo/palette/melodies/long/mlAcid113.scd new file mode 100644 index 0000000..b437d4b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid113 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid113 = [ + 42, 54, 43, 42, 54, 37, 42, 57, + 38, 50, 0, 0, 37, 54, 0, 0, + 42, 54, 43, 42, 54, 37, 42, 57, + 38, 50, 0, 0, 37, 54, 0, 0, + 42, 42, 0, 56, 56, 0, 57, 0, + 0, 47, 0, 37, 45, 50, 54, 0, + 42, 54, 43, 42, 54, 37, 42, 57, + 38, 50, 0, 0, 37, 54, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid114.scd b/sound_algo/palette/melodies/long/mlAcid114.scd new file mode 100644 index 0000000..e9b1adc --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid114 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid114 = [ + 57, 49, 55, 37, 0, 52, 57, 44, + 0, 0, 56, 56, 49, 0, 0, 37, + 57, 49, 55, 37, 0, 52, 57, 44, + 0, 0, 56, 56, 49, 0, 0, 37, + 45, 0, 0, 0, 0, 52, 0, 40, + 57, 44, 40, 0, 57, 47, 56, 40, + 57, 49, 55, 37, 0, 52, 57, 44, + 0, 0, 56, 56, 49, 0, 0, 37 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid115.scd b/sound_algo/palette/melodies/long/mlAcid115.scd new file mode 100644 index 0000000..9cb6b10 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid115 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid115 = [ + 59, 54, 61, 0, 0, 42, 47, 0, + 0, 49, 0, 0, 0, 0, 42, 59, + 59, 37, 57, 59, 49, 49, 0, 50, + 57, 38, 56, 45, 0, 0, 44, 54, + 54, 49, 56, 42, 0, 0, 54, 56, + 0, 54, 50, 0, 45, 38, 45, 0, + 0, 0, 45, 45, 0, 37, 52, 59, + 45, 0, 0, 54, 49, 59, 40, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid116.scd b/sound_algo/palette/melodies/long/mlAcid116.scd new file mode 100644 index 0000000..74acb25 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid116 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid116 = [ + 45, 0, 50, 0, 55, 60, 40, 57, + 59, 0, 57, 40, 43, 57, 0, 0, + 52, 57, 0, 47, 40, 48, 41, 50, + 40, 47, 38, 48, 40, 47, 0, 0, + 52, 0, 54, 48, 40, 53, 50, 52, + 43, 38, 0, 48, 0, 43, 38, 55, + 0, 0, 59, 47, 55, 50, 56, 59, + 0, 57, 53, 0, 40, 48, 0, 40 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid117.scd b/sound_algo/palette/melodies/long/mlAcid117.scd new file mode 100644 index 0000000..8640882 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid117 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid117 = [ + 45, 40, 38, 0, 40, 38, 43, 0, + 45, 54, 43, 47, 0, 57, 37, 0, + 45, 40, 38, 0, 40, 38, 43, 0, + 45, 54, 43, 47, 0, 57, 37, 0, + 40, 57, 45, 0, 50, 59, 52, 37, + 54, 47, 43, 55, 42, 47, 40, 45, + 45, 40, 38, 0, 40, 38, 43, 0, + 45, 54, 43, 47, 0, 57, 37, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid118.scd b/sound_algo/palette/melodies/long/mlAcid118.scd new file mode 100644 index 0000000..51909d9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid118 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid118 = [ + 40, 0, 41, 0, 0, 0, 60, 48, + 0, 0, 36, 45, 47, 0, 46, 47, + 40, 0, 41, 0, 0, 0, 60, 48, + 0, 0, 36, 45, 47, 0, 46, 47, + 52, 0, 0, 41, 0, 0, 0, 48, + 55, 57, 0, 0, 59, 60, 60, 0, + 40, 0, 41, 0, 0, 0, 60, 48, + 0, 0, 36, 45, 47, 0, 46, 47 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid119.scd b/sound_algo/palette/melodies/long/mlAcid119.scd new file mode 100644 index 0000000..e188ee9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid119 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid119 = [ + 45, 38, 46, 59, 45, 57, 52, 54, + 38, 50, 55, 37, 54, 0, 49, 0, + 45, 49, 0, 55, 49, 43, 0, 0, + 0, 45, 0, 55, 49, 50, 0, 43, + 0, 37, 0, 55, 49, 59, 38, 57, + 47, 43, 37, 42, 54, 55, 53, 59, + 50, 42, 42, 54, 40, 57, 42, 0, + 57, 52, 0, 55, 0, 40, 52, 37 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid120.scd b/sound_algo/palette/melodies/long/mlAcid120.scd new file mode 100644 index 0000000..d4b369a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid120 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid120 = [ + 52, 0, 40, 42, 47, 50, 57, 0, + 40, 36, 0, 0, 40, 54, 57, 0, + 0, 55, 0, 0, 55, 0, 0, 48, + 59, 50, 59, 50, 52, 60, 42, 40, + 59, 60, 0, 0, 42, 43, 52, 45, + 0, 0, 0, 0, 55, 47, 54, 0, + 0, 60, 60, 45, 0, 0, 0, 36, + 0, 0, 0, 40, 57, 60, 0, 47 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid121.scd b/sound_algo/palette/melodies/long/mlAcid121.scd new file mode 100644 index 0000000..fead4ce --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid121 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid121 = [ + 57, 0, 40, 0, 47, 59, 55, 55, + 40, 47, 55, 52, 59, 40, 61, 36, + 40, 48, 55, 43, 48, 55, 47, 60, + 40, 36, 47, 60, 43, 0, 44, 60, + 50, 40, 51, 41, 50, 38, 0, 45, + 52, 57, 47, 38, 47, 43, 38, 52, + 41, 53, 0, 38, 0, 52, 0, 36, + 36, 0, 47, 45, 40, 38, 41, 38 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid122.scd b/sound_algo/palette/melodies/long/mlAcid122.scd new file mode 100644 index 0000000..f81f159 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid122 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid122 = [ + 40, 52, 42, 55, 0, 48, 0, 0, + 38, 0, 45, 0, 60, 0, 50, 0, + 0, 54, 48, 60, 0, 54, 57, 59, + 40, 40, 59, 47, 0, 0, 48, 0, + 0, 38, 38, 0, 0, 0, 45, 45, + 0, 55, 0, 48, 52, 42, 36, 0, + 0, 57, 47, 0, 40, 0, 0, 54, + 47, 43, 0, 47, 43, 36, 60, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAcid123.scd b/sound_algo/palette/melodies/long/mlAcid123.scd new file mode 100644 index 0000000..7ecd749 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAcid123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAcid123 -- long melody (64 steps), genre: acid +// ===================================================================== +( +~mlAcid123 = [ + 0, 55, 40, 42, 54, 37, 45, 43, + 55, 49, 45, 50, 45, 40, 43, 52, + 45, 57, 44, 43, 0, 0, 0, 38, + 0, 54, 47, 55, 0, 0, 49, 57, + 49, 57, 47, 59, 49, 59, 0, 0, + 57, 43, 54, 59, 0, 0, 0, 47, + 45, 57, 55, 45, 47, 47, 54, 37, + 0, 40, 0, 55, 50, 42, 57, 38 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient100.scd b/sound_algo/palette/melodies/long/mlAmbient100.scd new file mode 100644 index 0000000..ad9e2a2 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient100 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient100 = [ + 0, 0, 0, 0, 0, 0, 67, 0, + 0, 0, 0, 79, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, + 0, 0, 0, 79, 0, 0, 0, 0, + 0, 74, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, + 0, 0, 0, 79, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient101.scd b/sound_algo/palette/melodies/long/mlAmbient101.scd new file mode 100644 index 0000000..bbb1d52 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient101 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient101 = [ + 0, 0, 79, 0, 0, 0, 0, 0, + 0, 0, 77, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 0, 0, 0, 72, + 0, 0, 65, 0, 0, 0, 0, 0, + 74, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 74, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 64, + 0, 0, 0, 0, 0, 83, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient102.scd b/sound_algo/palette/melodies/long/mlAmbient102.scd new file mode 100644 index 0000000..18998e1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient102 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient102 = [ + 0, 0, 0, 0, 0, 60, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 60, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, + 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 60, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient103.scd b/sound_algo/palette/melodies/long/mlAmbient103.scd new file mode 100644 index 0000000..05dc702 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient103 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient103 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 84, 67, 0, 84, 0, 0, 82, 0, + 0, 0, 0, 69, 0, 74, 0, 0, + 81, 79, 0, 84, 0, 0, 0, 0, + 0, 0, 0, 0, 74, 0, 0, 0, + 0, 0, 60, 0, 0, 70, 0, 0, + 0, 0, 0, 0, 65, 0, 0, 0, + 0, 79, 0, 0, 0, 0, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient104.scd b/sound_algo/palette/melodies/long/mlAmbient104.scd new file mode 100644 index 0000000..af094bb --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient104 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient104 = [ + 0, 0, 79, 0, 0, 0, 0, 0, + 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, + 0, 67, 0, 0, 0, 0, 0, 0, + 0, 74, 0, 0, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 83, 0, + 0, 0, 79, 0, 0, 0, 0, 0, + 0, 67, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient105.scd b/sound_algo/palette/melodies/long/mlAmbient105.scd new file mode 100644 index 0000000..5f1a4df --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient105 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient105 = [ + 0, 0, 74, 0, 0, 0, 0, 64, + 0, 0, 0, 0, 65, 0, 0, 70, + 0, 67, 0, 0, 0, 82, 0, 0, + 65, 0, 0, 0, 0, 0, 0, 81, + 0, 60, 0, 0, 0, 0, 0, 74, + 0, 60, 0, 64, 0, 79, 0, 0, + 0, 0, 60, 0, 0, 0, 82, 0, + 60, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient106.scd b/sound_algo/palette/melodies/long/mlAmbient106.scd new file mode 100644 index 0000000..52df321 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient106 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient106 = [ + 84, 77, 0, 0, 0, 76, 0, 0, + 0, 67, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 0, 0, 0, 0, 76, + 0, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 0, 0, 76, 0, 0, 0, + 0, 65, 83, 69, 0, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient107.scd b/sound_algo/palette/melodies/long/mlAmbient107.scd new file mode 100644 index 0000000..cd47e55 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient107 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient107 = [ + 0, 0, 77, 0, 65, 0, 0, 0, + 0, 0, 0, 62, 0, 71, 0, 0, + 0, 0, 77, 0, 65, 0, 0, 0, + 0, 0, 0, 62, 0, 71, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, + 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 77, 0, 65, 0, 0, 0, + 0, 0, 0, 62, 0, 71, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient108.scd b/sound_algo/palette/melodies/long/mlAmbient108.scd new file mode 100644 index 0000000..164b656 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient108 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient108 = [ + 0, 76, 0, 72, 0, 0, 0, 0, + 0, 0, 77, 0, 0, 0, 0, 0, + 0, 60, 0, 0, 0, 0, 0, 0, + 69, 0, 0, 77, 0, 0, 0, 72, + 0, 0, 0, 0, 0, 0, 64, 72, + 0, 0, 0, 83, 0, 69, 0, 0, + 0, 69, 83, 0, 0, 0, 0, 0, + 0, 0, 76, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient109.scd b/sound_algo/palette/melodies/long/mlAmbient109.scd new file mode 100644 index 0000000..4a97414 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient109 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient109 = [ + 0, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 0, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 65, 0, 0, 0, + 0, 83, 0, 0, 0, 0, 72, 0, + 0, 71, 0, 0, 0, 81, 0, 0, + 0, 64, 0, 0, 0, 83, 0, 77, + 0, 0, 0, 0, 0, 0, 83, 0, + 0, 0, 0, 0, 79, 0, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient110.scd b/sound_algo/palette/melodies/long/mlAmbient110.scd new file mode 100644 index 0000000..390b916 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient110 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient110 = [ + 84, 0, 0, 0, 0, 64, 0, 79, + 0, 0, 0, 0, 0, 0, 64, 0, + 84, 0, 0, 0, 0, 64, 0, 79, + 0, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 62, + 0, 67, 0, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 0, 64, 0, 79, + 0, 0, 0, 0, 0, 0, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient111.scd b/sound_algo/palette/melodies/long/mlAmbient111.scd new file mode 100644 index 0000000..32eb49c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient111 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient111 = [ + 0, 0, 81, 84, 0, 0, 0, 62, + 0, 0, 0, 0, 81, 0, 0, 0, + 0, 0, 81, 84, 0, 0, 0, 62, + 0, 0, 0, 0, 81, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 0, + 0, 0, 81, 84, 0, 0, 0, 62, + 0, 0, 0, 0, 81, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient112.scd b/sound_algo/palette/melodies/long/mlAmbient112.scd new file mode 100644 index 0000000..4d8ca61 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient112 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient112 = [ + 72, 79, 0, 70, 0, 0, 81, 0, + 0, 0, 0, 0, 65, 0, 0, 79, + 72, 79, 0, 70, 0, 0, 81, 0, + 0, 0, 0, 0, 65, 0, 0, 79, + 0, 0, 0, 72, 0, 0, 0, 0, + 77, 0, 84, 0, 0, 0, 0, 0, + 72, 79, 0, 70, 0, 0, 81, 0, + 0, 0, 0, 0, 65, 0, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient113.scd b/sound_algo/palette/melodies/long/mlAmbient113.scd new file mode 100644 index 0000000..883ef13 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient113 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient113 = [ + 0, 0, 0, 0, 0, 62, 0, 0, + 0, 0, 0, 0, 0, 76, 0, 0, + 64, 0, 0, 0, 0, 0, 0, 0, + 83, 0, 0, 74, 0, 0, 0, 0, + 79, 0, 0, 0, 0, 0, 77, 0, + 0, 62, 65, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 0, 72, 0, 0, + 0, 77, 74, 0, 84, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient114.scd b/sound_algo/palette/melodies/long/mlAmbient114.scd new file mode 100644 index 0000000..4043cfe --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient114 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient114 = [ + 0, 0, 64, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 76, + 0, 71, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 72, 0, 0, 0, + 84, 0, 0, 0, 0, 0, 72, 0, + 0, 0, 0, 0, 0, 84, 0, 0, + 0, 0, 69, 0, 74, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient115.scd b/sound_algo/palette/melodies/long/mlAmbient115.scd new file mode 100644 index 0000000..2a1fcdb --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient115 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient115 = [ + 72, 0, 0, 0, 0, 0, 0, 0, + 69, 0, 0, 84, 0, 84, 0, 0, + 72, 0, 0, 0, 0, 0, 0, 0, + 69, 0, 0, 84, 0, 84, 0, 0, + 0, 0, 0, 62, 0, 74, 0, 0, + 65, 0, 0, 0, 0, 77, 0, 0, + 72, 0, 0, 0, 0, 0, 0, 0, + 69, 0, 0, 84, 0, 84, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient116.scd b/sound_algo/palette/melodies/long/mlAmbient116.scd new file mode 100644 index 0000000..e9f2dd7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient116 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient116 = [ + 62, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 81, 0, 0, 0, 0, 0, + 62, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 81, 0, 0, 0, 0, 0, + 0, 0, 64, 0, 0, 0, 74, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 62, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 81, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient117.scd b/sound_algo/palette/melodies/long/mlAmbient117.scd new file mode 100644 index 0000000..6645a06 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient117 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient117 = [ + 0, 0, 64, 0, 69, 81, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 0, + 0, 77, 0, 74, 0, 0, 0, 0, + 0, 0, 74, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 69, 0, 0, 0, + 60, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient118.scd b/sound_algo/palette/melodies/long/mlAmbient118.scd new file mode 100644 index 0000000..4bce0aa --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient118 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient118 = [ + 65, 0, 0, 0, 0, 74, 0, 0, + 0, 0, 0, 71, 0, 83, 0, 0, + 0, 79, 0, 0, 0, 76, 0, 0, + 76, 0, 0, 0, 72, 0, 0, 0, + 81, 0, 0, 0, 81, 0, 0, 65, + 0, 71, 0, 0, 76, 0, 0, 0, + 0, 71, 0, 0, 0, 0, 0, 81, + 0, 0, 0, 0, 74, 0, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient119.scd b/sound_algo/palette/melodies/long/mlAmbient119.scd new file mode 100644 index 0000000..3d206be --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient119 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient119 = [ + 0, 0, 83, 0, 84, 0, 0, 0, + 0, 0, 76, 0, 0, 71, 0, 0, + 0, 0, 83, 0, 84, 0, 0, 0, + 0, 0, 76, 0, 0, 71, 0, 0, + 0, 0, 0, 69, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, + 0, 0, 83, 0, 84, 0, 0, 0, + 0, 0, 76, 0, 0, 71, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient120.scd b/sound_algo/palette/melodies/long/mlAmbient120.scd new file mode 100644 index 0000000..d598d6e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient120 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient120 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0, + 60, 0, 0, 0, 0, 83, 0, 0, + 0, 78, 0, 0, 0, 0, 69, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient121.scd b/sound_algo/palette/melodies/long/mlAmbient121.scd new file mode 100644 index 0000000..0795509 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient121 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient121 = [ + 0, 0, 0, 72, 0, 0, 79, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 72, 0, 0, 79, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 74, 0, 0, 64, 0, + 0, 0, 0, 62, 0, 0, 0, 72, + 0, 0, 0, 72, 0, 0, 79, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient122.scd b/sound_algo/palette/melodies/long/mlAmbient122.scd new file mode 100644 index 0000000..9933b4c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient122 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient122 = [ + 76, 0, 0, 0, 69, 0, 0, 0, + 0, 0, 83, 0, 0, 0, 84, 0, + 76, 0, 0, 0, 69, 0, 0, 0, + 0, 0, 83, 0, 0, 0, 84, 0, + 0, 0, 0, 0, 65, 0, 0, 81, + 0, 0, 79, 0, 0, 65, 0, 0, + 76, 0, 0, 0, 69, 0, 0, 0, + 0, 0, 83, 0, 0, 0, 84, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAmbient123.scd b/sound_algo/palette/melodies/long/mlAmbient123.scd new file mode 100644 index 0000000..f8effb9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAmbient123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAmbient123 -- long melody (64 steps), genre: ambient +// ===================================================================== +( +~mlAmbient123 = [ + 72, 0, 60, 0, 0, 0, 0, 84, + 0, 0, 0, 0, 0, 0, 0, 0, + 72, 0, 60, 0, 0, 0, 0, 84, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 78, 0, 0, 0, 0, + 0, 0, 0, 60, 0, 0, 0, 0, + 72, 0, 60, 0, 0, 0, 0, 84, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian100.scd b/sound_algo/palette/melodies/long/mlAsian100.scd new file mode 100644 index 0000000..0079156 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian100 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian100 = [ + 64, 62, 69, 76, 0, 65, 58, 65, + 65, 64, 57, 58, 52, 62, 76, 0, + 64, 62, 69, 76, 0, 65, 58, 65, + 65, 64, 57, 58, 52, 62, 76, 0, + 0, 62, 69, 0, 76, 52, 0, 69, + 0, 65, 58, 57, 52, 70, 64, 64, + 64, 62, 69, 76, 0, 65, 58, 65, + 65, 64, 57, 58, 52, 62, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian101.scd b/sound_algo/palette/melodies/long/mlAsian101.scd new file mode 100644 index 0000000..57b18d1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian101 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian101 = [ + 69, 71, 59, 0, 76, 64, 65, 57, + 52, 0, 0, 52, 57, 53, 57, 72, + 59, 60, 64, 0, 69, 65, 71, 69, + 0, 72, 53, 0, 0, 69, 0, 52, + 0, 69, 52, 0, 60, 59, 64, 57, + 65, 76, 57, 0, 0, 0, 65, 64, + 0, 0, 72, 64, 0, 76, 72, 0, + 0, 76, 57, 57, 0, 0, 57, 76 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian102.scd b/sound_algo/palette/melodies/long/mlAsian102.scd new file mode 100644 index 0000000..2c0d056 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian102 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian102 = [ + 65, 64, 64, 64, 72, 0, 64, 0, + 52, 69, 65, 0, 0, 59, 57, 0, + 52, 0, 0, 0, 52, 0, 0, 0, + 57, 53, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 0, 64, 60, 0, 64, + 57, 53, 0, 53, 0, 0, 71, 69, + 0, 0, 64, 60, 0, 71, 0, 0, + 64, 0, 69, 72, 64, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian103.scd b/sound_algo/palette/melodies/long/mlAsian103.scd new file mode 100644 index 0000000..1237b0a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian103 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian103 = [ + 0, 59, 0, 0, 69, 65, 65, 0, + 0, 53, 69, 0, 57, 0, 0, 52, + 0, 59, 0, 0, 69, 65, 65, 0, + 0, 53, 69, 0, 57, 0, 0, 52, + 0, 76, 0, 0, 69, 0, 0, 59, + 60, 76, 0, 64, 57, 65, 71, 69, + 0, 59, 0, 0, 69, 65, 65, 0, + 0, 53, 69, 0, 57, 0, 0, 52 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian104.scd b/sound_algo/palette/melodies/long/mlAsian104.scd new file mode 100644 index 0000000..e724ebd --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian104 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian104 = [ + 52, 69, 69, 62, 76, 0, 0, 0, + 58, 57, 52, 0, 65, 74, 74, 65, + 52, 69, 69, 62, 76, 0, 0, 0, + 58, 57, 52, 0, 65, 74, 74, 65, + 64, 62, 0, 62, 0, 69, 0, 52, + 52, 0, 0, 53, 76, 74, 58, 0, + 52, 69, 69, 62, 76, 0, 0, 0, + 58, 57, 52, 0, 65, 74, 74, 65 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian105.scd b/sound_algo/palette/melodies/long/mlAsian105.scd new file mode 100644 index 0000000..78b1a4b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian105 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian105 = [ + 76, 0, 0, 53, 52, 62, 64, 64, + 0, 0, 76, 0, 0, 62, 0, 0, + 76, 0, 0, 53, 52, 62, 64, 64, + 0, 0, 76, 0, 0, 62, 0, 0, + 52, 76, 64, 0, 0, 0, 52, 52, + 76, 0, 58, 76, 64, 69, 62, 64, + 76, 0, 0, 53, 52, 62, 64, 64, + 0, 0, 76, 0, 0, 62, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian106.scd b/sound_algo/palette/melodies/long/mlAsian106.scd new file mode 100644 index 0000000..a6d5592 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian106 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian106 = [ + 0, 67, 71, 0, 67, 55, 0, 71, + 0, 0, 0, 52, 0, 0, 72, 0, + 0, 60, 60, 67, 0, 54, 59, 60, + 71, 76, 59, 0, 67, 55, 60, 0, + 55, 54, 52, 52, 67, 66, 60, 0, + 55, 54, 64, 76, 64, 66, 71, 54, + 59, 55, 0, 55, 64, 60, 0, 55, + 52, 76, 0, 0, 64, 60, 0, 54 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian107.scd b/sound_algo/palette/melodies/long/mlAsian107.scd new file mode 100644 index 0000000..f0cbd21 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian107 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian107 = [ + 69, 65, 64, 69, 0, 0, 0, 0, + 64, 62, 0, 53, 0, 65, 62, 0, + 0, 74, 57, 0, 64, 0, 52, 64, + 52, 0, 65, 0, 65, 0, 76, 76, + 62, 0, 52, 0, 0, 64, 70, 65, + 76, 0, 52, 0, 0, 69, 0, 58, + 0, 0, 52, 0, 0, 0, 76, 53, + 64, 52, 74, 0, 62, 58, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian108.scd b/sound_algo/palette/melodies/long/mlAsian108.scd new file mode 100644 index 0000000..94f88a8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian108 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian108 = [ + 53, 70, 0, 58, 53, 52, 69, 0, + 0, 0, 74, 0, 64, 74, 74, 53, + 0, 0, 65, 0, 0, 69, 0, 65, + 0, 0, 0, 53, 0, 0, 69, 65, + 0, 0, 0, 0, 0, 52, 74, 0, + 58, 57, 52, 74, 57, 0, 0, 57, + 0, 65, 0, 57, 0, 0, 0, 0, + 0, 58, 58, 0, 65, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian109.scd b/sound_algo/palette/melodies/long/mlAsian109.scd new file mode 100644 index 0000000..f453c3e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian109 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian109 = [ + 0, 69, 64, 65, 69, 65, 0, 64, + 69, 65, 65, 0, 0, 59, 0, 53, + 59, 71, 76, 0, 69, 65, 59, 0, + 57, 0, 53, 64, 0, 64, 0, 53, + 0, 52, 57, 60, 0, 60, 72, 0, + 0, 52, 0, 57, 57, 0, 0, 60, + 60, 59, 64, 69, 52, 0, 76, 60, + 60, 64, 53, 72, 57, 57, 72, 71 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian110.scd b/sound_algo/palette/melodies/long/mlAsian110.scd new file mode 100644 index 0000000..2d58e14 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian110 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian110 = [ + 69, 67, 57, 0, 0, 70, 70, 0, + 0, 55, 0, 0, 0, 70, 0, 62, + 69, 67, 57, 0, 0, 70, 70, 0, + 0, 55, 0, 0, 0, 70, 0, 62, + 69, 67, 55, 0, 69, 67, 62, 57, + 57, 70, 55, 70, 0, 0, 62, 0, + 69, 67, 57, 0, 0, 70, 70, 0, + 0, 55, 0, 0, 0, 70, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian111.scd b/sound_algo/palette/melodies/long/mlAsian111.scd new file mode 100644 index 0000000..731ee94 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian111 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian111 = [ + 0, 0, 57, 62, 58, 55, 67, 67, + 0, 58, 0, 0, 75, 74, 55, 57, + 0, 0, 57, 62, 58, 55, 67, 67, + 0, 58, 0, 0, 75, 74, 55, 57, + 62, 58, 70, 0, 0, 57, 55, 74, + 62, 57, 57, 0, 57, 0, 70, 58, + 0, 0, 57, 62, 58, 55, 67, 67, + 0, 58, 0, 0, 75, 74, 55, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian112.scd b/sound_algo/palette/melodies/long/mlAsian112.scd new file mode 100644 index 0000000..9edce76 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian112 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian112 = [ + 67, 66, 72, 60, 0, 71, 60, 0, + 0, 60, 0, 52, 66, 64, 64, 72, + 76, 0, 60, 72, 55, 0, 0, 52, + 0, 0, 76, 0, 67, 66, 52, 0, + 76, 72, 60, 0, 0, 59, 0, 55, + 64, 71, 0, 0, 64, 67, 71, 67, + 67, 0, 71, 0, 71, 54, 0, 72, + 76, 72, 0, 0, 55, 54, 67, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian113.scd b/sound_algo/palette/melodies/long/mlAsian113.scd new file mode 100644 index 0000000..8dda429 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian113 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian113 = [ + 69, 75, 69, 57, 62, 0, 0, 58, + 55, 0, 69, 55, 57, 55, 70, 0, + 69, 75, 69, 57, 62, 0, 0, 58, + 55, 0, 69, 55, 57, 55, 70, 0, + 62, 58, 63, 0, 0, 0, 70, 0, + 57, 67, 57, 0, 57, 57, 0, 0, + 69, 75, 69, 57, 62, 0, 0, 58, + 55, 0, 69, 55, 57, 55, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian114.scd b/sound_algo/palette/melodies/long/mlAsian114.scd new file mode 100644 index 0000000..448b20a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian114 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian114 = [ + 55, 62, 0, 0, 0, 0, 74, 75, + 0, 57, 62, 0, 69, 58, 74, 62, + 0, 74, 0, 0, 75, 58, 67, 67, + 0, 75, 74, 0, 0, 0, 74, 0, + 70, 69, 74, 57, 74, 70, 55, 67, + 0, 74, 75, 67, 69, 67, 70, 67, + 57, 55, 74, 0, 0, 0, 75, 0, + 0, 69, 0, 75, 57, 0, 74, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian115.scd b/sound_algo/palette/melodies/long/mlAsian115.scd new file mode 100644 index 0000000..8ebb5c0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian115 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian115 = [ + 0, 74, 58, 0, 74, 70, 70, 65, + 76, 74, 0, 64, 0, 0, 0, 0, + 0, 74, 58, 0, 74, 70, 70, 65, + 76, 74, 0, 64, 0, 0, 0, 0, + 76, 0, 57, 0, 0, 70, 0, 0, + 0, 62, 65, 57, 0, 64, 65, 65, + 0, 74, 58, 0, 74, 70, 70, 65, + 76, 74, 0, 64, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian116.scd b/sound_algo/palette/melodies/long/mlAsian116.scd new file mode 100644 index 0000000..b075df2 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian116 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian116 = [ + 0, 69, 69, 0, 53, 52, 60, 72, + 72, 52, 64, 52, 0, 71, 69, 0, + 0, 69, 69, 0, 53, 52, 60, 72, + 72, 52, 64, 52, 0, 71, 69, 0, + 60, 65, 64, 64, 57, 65, 71, 0, + 0, 65, 59, 60, 52, 71, 0, 72, + 0, 69, 69, 0, 53, 52, 60, 72, + 72, 52, 64, 52, 0, 71, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian117.scd b/sound_algo/palette/melodies/long/mlAsian117.scd new file mode 100644 index 0000000..a89f641 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian117 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian117 = [ + 0, 70, 55, 67, 58, 74, 70, 57, + 0, 67, 0, 0, 55, 67, 62, 57, + 57, 62, 70, 63, 0, 0, 0, 69, + 69, 0, 62, 0, 57, 55, 0, 57, + 0, 0, 0, 0, 58, 57, 55, 0, + 0, 75, 0, 0, 69, 67, 62, 74, + 69, 0, 0, 74, 57, 58, 0, 0, + 55, 0, 57, 0, 74, 70, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian118.scd b/sound_algo/palette/melodies/long/mlAsian118.scd new file mode 100644 index 0000000..29b3a24 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian118 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian118 = [ + 60, 0, 64, 0, 0, 53, 64, 76, + 0, 0, 0, 52, 76, 0, 69, 69, + 60, 0, 64, 0, 0, 53, 64, 76, + 0, 0, 0, 52, 76, 0, 69, 69, + 0, 0, 0, 52, 57, 57, 0, 52, + 64, 60, 0, 76, 0, 0, 0, 76, + 60, 0, 64, 0, 0, 53, 64, 76, + 0, 0, 0, 52, 76, 0, 69, 69 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian119.scd b/sound_algo/palette/melodies/long/mlAsian119.scd new file mode 100644 index 0000000..51c89ba --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian119 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian119 = [ + 0, 62, 0, 0, 76, 0, 64, 74, + 57, 0, 0, 65, 0, 58, 57, 0, + 64, 62, 0, 0, 0, 74, 57, 65, + 65, 64, 0, 69, 74, 0, 52, 0, + 76, 62, 0, 0, 58, 57, 76, 0, + 57, 0, 0, 52, 76, 0, 65, 62, + 64, 62, 0, 0, 0, 0, 52, 76, + 0, 0, 0, 64, 76, 74, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian120.scd b/sound_algo/palette/melodies/long/mlAsian120.scd new file mode 100644 index 0000000..ccb2ca6 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian120 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian120 = [ + 65, 64, 52, 52, 62, 58, 64, 70, + 64, 70, 0, 0, 76, 0, 76, 0, + 65, 64, 52, 52, 62, 58, 64, 70, + 64, 70, 0, 0, 76, 0, 76, 0, + 74, 58, 0, 0, 76, 0, 64, 69, + 57, 53, 52, 52, 62, 0, 0, 53, + 65, 64, 52, 52, 62, 58, 64, 70, + 64, 70, 0, 0, 76, 0, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian121.scd b/sound_algo/palette/melodies/long/mlAsian121.scd new file mode 100644 index 0000000..010febe --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian121 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian121 = [ + 69, 67, 70, 70, 69, 0, 0, 63, + 57, 55, 74, 0, 74, 0, 57, 67, + 69, 67, 70, 70, 69, 0, 0, 63, + 57, 55, 74, 0, 74, 0, 57, 67, + 69, 67, 57, 57, 63, 69, 62, 57, + 57, 55, 0, 58, 57, 55, 0, 0, + 69, 67, 70, 70, 69, 0, 0, 63, + 57, 55, 74, 0, 74, 0, 57, 67 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian122.scd b/sound_algo/palette/melodies/long/mlAsian122.scd new file mode 100644 index 0000000..bb2caab --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian122 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian122 = [ + 0, 0, 0, 0, 55, 54, 0, 52, + 66, 64, 0, 0, 59, 55, 0, 72, + 76, 0, 76, 0, 0, 66, 71, 0, + 0, 72, 64, 0, 0, 55, 59, 72, + 55, 54, 64, 0, 0, 71, 72, 71, + 64, 60, 0, 76, 0, 76, 64, 0, + 0, 66, 0, 0, 0, 0, 0, 66, + 66, 66, 0, 71, 0, 67, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian123.scd b/sound_algo/palette/melodies/long/mlAsian123.scd new file mode 100644 index 0000000..3a73255 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian123 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian123 = [ + 0, 0, 67, 66, 0, 0, 72, 0, + 0, 55, 55, 0, 0, 0, 0, 0, + 0, 0, 67, 66, 0, 0, 72, 0, + 0, 55, 55, 0, 0, 0, 0, 0, + 0, 0, 66, 0, 0, 0, 76, 0, + 55, 54, 55, 55, 0, 0, 55, 0, + 0, 0, 67, 66, 0, 0, 72, 0, + 0, 55, 55, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian124.scd b/sound_algo/palette/melodies/long/mlAsian124.scd new file mode 100644 index 0000000..6c87a11 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian124.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian124 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian124 = [ + 0, 0, 0, 0, 0, 0, 55, 0, + 57, 55, 74, 0, 0, 0, 0, 0, + 57, 75, 0, 0, 69, 67, 0, 63, + 0, 0, 69, 0, 69, 67, 58, 0, + 57, 55, 0, 0, 0, 62, 0, 0, + 0, 57, 0, 57, 63, 0, 0, 69, + 0, 57, 69, 67, 67, 55, 62, 67, + 75, 74, 0, 0, 69, 58, 58, 74 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian125.scd b/sound_algo/palette/melodies/long/mlAsian125.scd new file mode 100644 index 0000000..0fd2749 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian125.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian125 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian125 = [ + 70, 69, 69, 0, 0, 74, 74, 0, + 70, 0, 0, 57, 57, 55, 75, 63, + 69, 67, 75, 0, 57, 55, 0, 67, + 57, 55, 70, 74, 63, 69, 69, 0, + 69, 67, 0, 74, 69, 67, 58, 62, + 0, 55, 67, 0, 58, 57, 75, 0, + 57, 55, 75, 75, 57, 58, 57, 58, + 69, 0, 55, 0, 63, 62, 0, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian126.scd b/sound_algo/palette/melodies/long/mlAsian126.scd new file mode 100644 index 0000000..7e42257 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian126.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian126 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian126 = [ + 59, 76, 0, 0, 0, 55, 71, 66, + 0, 0, 76, 54, 0, 0, 59, 0, + 59, 76, 0, 0, 0, 55, 71, 66, + 0, 0, 76, 54, 0, 0, 59, 0, + 76, 72, 64, 0, 0, 0, 0, 0, + 0, 0, 64, 71, 55, 0, 71, 0, + 59, 76, 0, 0, 0, 55, 71, 66, + 0, 0, 76, 54, 0, 0, 59, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian127.scd b/sound_algo/palette/melodies/long/mlAsian127.scd new file mode 100644 index 0000000..22b2c3e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian127.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian127 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian127 = [ + 0, 0, 0, 55, 69, 69, 0, 0, + 0, 0, 70, 0, 69, 0, 69, 58, + 0, 0, 0, 55, 69, 69, 0, 0, + 0, 0, 70, 0, 69, 0, 69, 58, + 55, 0, 58, 58, 57, 0, 74, 0, + 57, 55, 69, 0, 57, 62, 0, 0, + 0, 0, 0, 55, 69, 69, 0, 0, + 0, 0, 70, 0, 69, 0, 69, 58 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian128.scd b/sound_algo/palette/melodies/long/mlAsian128.scd new file mode 100644 index 0000000..e540f5d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian128.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian128 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian128 = [ + 0, 70, 57, 0, 57, 55, 0, 0, + 0, 0, 62, 70, 0, 0, 0, 67, + 0, 70, 57, 0, 57, 55, 0, 0, + 0, 0, 62, 70, 0, 0, 0, 67, + 0, 74, 62, 58, 0, 0, 0, 57, + 0, 0, 0, 75, 0, 0, 75, 0, + 0, 70, 57, 0, 57, 55, 0, 0, + 0, 0, 62, 70, 0, 0, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian129.scd b/sound_algo/palette/melodies/long/mlAsian129.scd new file mode 100644 index 0000000..f2c800f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian129.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian129 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian129 = [ + 0, 65, 76, 64, 57, 53, 52, 70, + 0, 0, 58, 53, 0, 62, 62, 70, + 0, 65, 76, 64, 57, 53, 52, 70, + 0, 0, 58, 53, 0, 62, 62, 70, + 58, 65, 76, 0, 70, 64, 65, 62, + 76, 74, 62, 0, 76, 0, 0, 0, + 0, 65, 76, 64, 57, 53, 52, 70, + 0, 0, 58, 53, 0, 62, 62, 70 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian130.scd b/sound_algo/palette/melodies/long/mlAsian130.scd new file mode 100644 index 0000000..ea1f26f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian130.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian130 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian130 = [ + 55, 54, 67, 0, 0, 52, 64, 71, + 71, 54, 0, 0, 59, 55, 0, 76, + 0, 0, 0, 0, 0, 0, 66, 0, + 54, 76, 76, 72, 54, 72, 0, 0, + 52, 55, 59, 54, 52, 0, 55, 0, + 55, 54, 0, 71, 55, 52, 0, 52, + 67, 66, 0, 0, 71, 67, 52, 76, + 52, 0, 0, 64, 66, 67, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlAsian131.scd b/sound_algo/palette/melodies/long/mlAsian131.scd new file mode 100644 index 0000000..96177f1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlAsian131.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlAsian131 -- long melody (64 steps), genre: asian +// ===================================================================== +( +~mlAsian131 = [ + 58, 57, 74, 57, 76, 53, 69, 52, + 64, 74, 76, 52, 76, 57, 0, 0, + 58, 57, 74, 57, 76, 53, 69, 52, + 64, 74, 76, 52, 76, 57, 0, 0, + 57, 53, 64, 57, 62, 58, 0, 0, + 52, 58, 65, 70, 0, 57, 74, 52, + 58, 57, 74, 57, 76, 53, 69, 52, + 64, 74, 76, 52, 76, 57, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlBlues100.scd b/sound_algo/palette/melodies/long/mlBlues100.scd new file mode 100644 index 0000000..6f2fdeb --- /dev/null +++ b/sound_algo/palette/melodies/long/mlBlues100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlBlues100 -- long melody (64 steps), genre: blues +// ===================================================================== +( +~mlBlues100 = [ + 0, 0, 0, 62, 71, 57, 57, 52, + 0, 71, 0, 69, 0, 58, 52, 52, + 52, 47, 71, 70, 70, 47, 47, 70, + 70, 57, 57, 45, 59, 59, 59, 0, + 47, 0, 0, 62, 0, 0, 52, 0, + 0, 0, 57, 70, 0, 71, 57, 0, + 71, 0, 67, 67, 52, 0, 50, 0, + 52, 52, 52, 52, 52, 52, 52, 52 +]; +) diff --git a/sound_algo/palette/melodies/long/mlBlues101.scd b/sound_algo/palette/melodies/long/mlBlues101.scd new file mode 100644 index 0000000..48c7f47 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlBlues101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlBlues101 -- long melody (64 steps), genre: blues +// ===================================================================== +( +~mlBlues101 = [ + 0, 0, 67, 60, 72, 72, 72, 0, + 51, 72, 0, 51, 45, 63, 0, 0, + 0, 0, 67, 60, 72, 72, 72, 0, + 51, 72, 0, 51, 45, 63, 0, 0, + 64, 60, 0, 0, 67, 67, 45, 45, + 0, 50, 0, 0, 55, 0, 0, 67, + 0, 0, 67, 60, 72, 72, 72, 0, + 51, 72, 0, 51, 45, 63, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlBlues102.scd b/sound_algo/palette/melodies/long/mlBlues102.scd new file mode 100644 index 0000000..70aeac1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlBlues102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlBlues102 -- long melody (64 steps), genre: blues +// ===================================================================== +( +~mlBlues102 = [ + 57, 0, 0, 62, 0, 0, 0, 55, + 64, 50, 55, 55, 67, 45, 50, 69, + 57, 0, 0, 62, 0, 0, 0, 55, + 64, 50, 55, 55, 67, 45, 50, 69, + 57, 63, 45, 0, 62, 62, 62, 62, + 63, 60, 51, 0, 48, 62, 55, 63, + 57, 0, 0, 62, 0, 0, 0, 55, + 64, 50, 55, 55, 67, 45, 50, 69 +]; +) diff --git a/sound_algo/palette/melodies/long/mlBlues103.scd b/sound_algo/palette/melodies/long/mlBlues103.scd new file mode 100644 index 0000000..b59c4db --- /dev/null +++ b/sound_algo/palette/melodies/long/mlBlues103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlBlues103 -- long melody (64 steps), genre: blues +// ===================================================================== +( +~mlBlues103 = [ + 47, 0, 64, 0, 52, 71, 71, 0, + 0, 58, 45, 47, 71, 50, 57, 57, + 58, 71, 71, 47, 47, 0, 69, 46, + 46, 69, 64, 64, 55, 46, 57, 58, + 69, 67, 67, 0, 59, 55, 55, 45, + 46, 64, 45, 67, 67, 67, 67, 67, + 52, 0, 58, 58, 47, 62, 47, 55, + 64, 70, 70, 0, 55, 59, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlBlues104.scd b/sound_algo/palette/melodies/long/mlBlues104.scd new file mode 100644 index 0000000..2e02c78 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlBlues104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlBlues104 -- long melody (64 steps), genre: blues +// ===================================================================== +( +~mlBlues104 = [ + 0, 0, 0, 47, 0, 59, 0, 0, + 0, 0, 0, 0, 46, 46, 0, 0, + 0, 0, 0, 47, 0, 59, 0, 0, + 0, 0, 0, 0, 46, 46, 0, 0, + 0, 55, 45, 45, 0, 0, 0, 0, + 0, 69, 69, 47, 47, 45, 45, 0, + 0, 0, 0, 47, 0, 59, 0, 0, + 0, 0, 0, 0, 46, 46, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlBlues105.scd b/sound_algo/palette/melodies/long/mlBlues105.scd new file mode 100644 index 0000000..cda43a9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlBlues105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlBlues105 -- long melody (64 steps), genre: blues +// ===================================================================== +( +~mlBlues105 = [ + 0, 0, 0, 57, 67, 67, 0, 50, + 59, 59, 0, 0, 59, 0, 0, 0, + 46, 59, 59, 0, 62, 0, 47, 55, + 55, 55, 55, 55, 55, 55, 0, 0, + 67, 67, 0, 47, 57, 57, 0, 69, + 0, 0, 59, 50, 59, 0, 64, 0, + 0, 59, 58, 58, 58, 57, 57, 55, + 55, 62, 45, 45, 45, 0, 0, 45 +]; +) diff --git a/sound_algo/palette/melodies/long/mlBlues106.scd b/sound_algo/palette/melodies/long/mlBlues106.scd new file mode 100644 index 0000000..cf773ea --- /dev/null +++ b/sound_algo/palette/melodies/long/mlBlues106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlBlues106 -- long melody (64 steps), genre: blues +// ===================================================================== +( +~mlBlues106 = [ + 55, 50, 50, 50, 50, 52, 0, 50, + 58, 47, 0, 47, 47, 0, 46, 46, + 0, 52, 52, 46, 55, 67, 59, 0, + 64, 50, 0, 50, 0, 0, 57, 57, + 0, 47, 57, 45, 45, 0, 0, 0, + 46, 45, 0, 0, 50, 50, 55, 55, + 58, 58, 50, 71, 55, 55, 55, 0, + 45, 45, 45, 0, 0, 59, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlBlues107.scd b/sound_algo/palette/melodies/long/mlBlues107.scd new file mode 100644 index 0000000..1bcf218 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlBlues107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlBlues107 -- long melody (64 steps), genre: blues +// ===================================================================== +( +~mlBlues107 = [ + 0, 0, 0, 0, 58, 58, 0, 70, + 70, 70, 0, 50, 45, 45, 52, 52, + 0, 0, 0, 0, 58, 58, 0, 70, + 70, 70, 0, 50, 45, 45, 52, 52, + 0, 59, 59, 59, 0, 64, 64, 70, + 59, 0, 67, 64, 0, 62, 62, 62, + 0, 0, 0, 0, 58, 58, 0, 70, + 70, 70, 0, 50, 45, 45, 52, 52 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune100.scd b/sound_algo/palette/melodies/long/mlChiptune100.scd new file mode 100644 index 0000000..84aabda --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune100 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune100 = [ + 65, 69, 72, 88, 0, 89, 64, 67, + 71, 0, 96, 69, 74, 77, 81, 69, + 96, 62, 64, 67, 71, 95, 86, 77, + 69, 72, 76, 72, 72, 79, 81, 62, + 62, 96, 65, 81, 64, 67, 71, 95, + 96, 74, 81, 89, 76, 0, 95, 89, + 62, 65, 69, 91, 64, 72, 84, 83, + 0, 93, 89, 84, 76, 93, 81, 83 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune101.scd b/sound_algo/palette/melodies/long/mlChiptune101.scd new file mode 100644 index 0000000..b8a5e36 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune101 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune101 = [ + 84, 0, 88, 62, 0, 0, 0, 0, + 93, 0, 67, 72, 65, 95, 0, 88, + 93, 69, 77, 81, 84, 0, 93, 76, + 81, 0, 84, 86, 64, 76, 72, 76, + 79, 96, 65, 76, 91, 88, 91, 95, + 0, 64, 0, 72, 60, 86, 65, 95, + 77, 81, 84, 72, 91, 96, 88, 0, + 0, 95, 0, 0, 77, 81, 84, 89 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune102.scd b/sound_algo/palette/melodies/long/mlChiptune102.scd new file mode 100644 index 0000000..55a8191 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune102 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune102 = [ + 83, 67, 95, 0, 0, 0, 71, 0, + 67, 71, 96, 95, 65, 69, 72, 76, + 74, 0, 67, 71, 74, 0, 93, 81, + 95, 89, 95, 74, 86, 74, 65, 93, + 79, 77, 96, 69, 64, 67, 71, 95, + 81, 79, 64, 67, 71, 91, 89, 89, + 64, 67, 71, 81, 83, 62, 69, 72, + 76, 89, 64, 72, 62, 93, 0, 77 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune103.scd b/sound_algo/palette/melodies/long/mlChiptune103.scd new file mode 100644 index 0000000..1b95b8d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune103 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune103 = [ + 74, 86, 84, 91, 74, 93, 90, 76, + 62, 0, 67, 60, 78, 81, 83, 0, + 81, 84, 86, 69, 95, 64, 88, 74, + 83, 81, 76, 91, 95, 93, 71, 66, + 84, 81, 86, 74, 90, 71, 0, 88, + 72, 0, 79, 93, 79, 95, 67, 95, + 67, 71, 74, 0, 91, 79, 62, 76, + 0, 0, 90, 95, 74, 78, 81, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune104.scd b/sound_algo/palette/melodies/long/mlChiptune104.scd new file mode 100644 index 0000000..0ef8dcc --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune104 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune104 = [ + 78, 81, 83, 69, 0, 83, 71, 74, + 78, 91, 0, 78, 91, 95, 0, 93, + 88, 96, 60, 64, 67, 79, 88, 90, + 71, 74, 78, 88, 62, 95, 72, 81, + 0, 76, 91, 0, 76, 79, 83, 79, + 0, 64, 64, 67, 71, 0, 62, 0, + 76, 79, 83, 66, 71, 88, 0, 72, + 0, 66, 0, 62, 83, 0, 79, 81 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune105.scd b/sound_algo/palette/melodies/long/mlChiptune105.scd new file mode 100644 index 0000000..7effb6f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune105 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune105 = [ + 64, 67, 71, 0, 67, 96, 79, 91, + 84, 79, 0, 83, 90, 72, 60, 71, + 64, 67, 71, 0, 67, 96, 79, 91, + 84, 79, 0, 83, 90, 72, 60, 71, + 76, 90, 83, 88, 66, 69, 71, 93, + 79, 62, 67, 71, 74, 74, 91, 91, + 64, 67, 71, 0, 67, 96, 79, 91, + 84, 79, 0, 83, 90, 72, 60, 71 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune106.scd b/sound_algo/palette/melodies/long/mlChiptune106.scd new file mode 100644 index 0000000..bc492c9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune106 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune106 = [ + 84, 65, 74, 84, 91, 0, 62, 65, + 69, 0, 67, 62, 74, 77, 81, 83, + 84, 65, 74, 84, 91, 0, 62, 65, + 69, 0, 67, 62, 74, 77, 81, 83, + 74, 72, 0, 88, 0, 83, 93, 0, + 91, 86, 69, 72, 76, 69, 89, 60, + 84, 65, 74, 84, 91, 0, 62, 65, + 69, 0, 67, 62, 74, 77, 81, 83 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune107.scd b/sound_algo/palette/melodies/long/mlChiptune107.scd new file mode 100644 index 0000000..432f673 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune107 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune107 = [ + 96, 79, 71, 79, 67, 74, 88, 0, + 72, 0, 93, 0, 64, 96, 77, 65, + 96, 79, 71, 79, 67, 74, 88, 0, + 72, 0, 93, 0, 64, 96, 77, 65, + 88, 81, 65, 72, 60, 95, 72, 0, + 67, 95, 93, 83, 71, 62, 96, 89, + 96, 79, 71, 79, 67, 74, 88, 0, + 72, 0, 93, 0, 64, 96, 77, 65 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune108.scd b/sound_algo/palette/melodies/long/mlChiptune108.scd new file mode 100644 index 0000000..85c857f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune108 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune108 = [ + 83, 74, 90, 0, 0, 72, 76, 0, + 79, 88, 96, 95, 0, 60, 96, 90, + 83, 74, 90, 0, 0, 72, 76, 0, + 79, 88, 96, 95, 0, 60, 96, 90, + 81, 66, 96, 81, 66, 69, 71, 0, + 95, 71, 0, 0, 88, 90, 62, 91, + 83, 74, 90, 0, 0, 72, 76, 0, + 79, 88, 96, 95, 0, 60, 96, 90 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune109.scd b/sound_algo/palette/melodies/long/mlChiptune109.scd new file mode 100644 index 0000000..a75eb42 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune109 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune109 = [ + 74, 78, 81, 67, 0, 0, 76, 0, + 62, 0, 74, 60, 64, 67, 71, 88, + 74, 78, 81, 67, 0, 0, 76, 0, + 62, 0, 74, 60, 64, 67, 71, 88, + 88, 83, 69, 0, 76, 79, 83, 64, + 96, 0, 64, 64, 91, 96, 66, 90, + 74, 78, 81, 67, 0, 0, 76, 0, + 62, 0, 74, 60, 64, 67, 71, 88 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune110.scd b/sound_algo/palette/melodies/long/mlChiptune110.scd new file mode 100644 index 0000000..49f984e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune110 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune110 = [ + 67, 95, 79, 65, 96, 0, 76, 0, + 64, 89, 84, 77, 79, 83, 84, 0, + 91, 84, 86, 0, 0, 86, 96, 0, + 64, 77, 95, 65, 79, 69, 64, 67, + 71, 77, 60, 64, 69, 72, 76, 77, + 0, 69, 0, 96, 76, 64, 79, 81, + 84, 86, 81, 96, 72, 93, 60, 64, + 84, 0, 65, 0, 64, 67, 71, 81 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChiptune111.scd b/sound_algo/palette/melodies/long/mlChiptune111.scd new file mode 100644 index 0000000..e97ed46 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChiptune111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChiptune111 -- long melody (64 steps), genre: chiptune +// ===================================================================== +( +~mlChiptune111 = [ + 64, 79, 65, 77, 95, 0, 65, 69, + 72, 96, 96, 96, 65, 86, 0, 0, + 91, 83, 89, 65, 95, 88, 0, 81, + 77, 81, 84, 0, 84, 83, 67, 71, + 74, 86, 83, 71, 72, 76, 79, 83, + 72, 89, 74, 77, 81, 60, 62, 0, + 69, 72, 76, 72, 71, 81, 77, 81, + 84, 95, 0, 74, 0, 95, 62, 86 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChromatic100.scd b/sound_algo/palette/melodies/long/mlChromatic100.scd new file mode 100644 index 0000000..ddbe56c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChromatic100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChromatic100 -- long melody (64 steps), genre: chromatic +// ===================================================================== +( +~mlChromatic100 = [ + 75, 51, 71, 73, 0, 50, 70, 0, + 84, 68, 81, 50, 67, 68, 0, 65, + 0, 80, 73, 71, 77, 0, 66, 49, + 54, 70, 79, 78, 0, 0, 0, 0, + 63, 64, 82, 0, 61, 74, 0, 84, + 59, 0, 72, 56, 79, 62, 53, 50, + 0, 72, 60, 0, 0, 60, 0, 75, + 63, 71, 53, 0, 52, 0, 55, 75 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChromatic101.scd b/sound_algo/palette/melodies/long/mlChromatic101.scd new file mode 100644 index 0000000..af488c5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChromatic101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChromatic101 -- long melody (64 steps), genre: chromatic +// ===================================================================== +( +~mlChromatic101 = [ + 51, 69, 52, 0, 64, 0, 0, 51, + 0, 63, 64, 57, 76, 0, 54, 54, + 52, 61, 0, 51, 79, 65, 70, 49, + 69, 81, 61, 58, 0, 0, 51, 51, + 55, 66, 56, 76, 79, 79, 0, 69, + 76, 52, 74, 72, 0, 62, 51, 72, + 76, 71, 56, 51, 63, 0, 83, 82, + 75, 60, 61, 55, 62, 84, 76, 54 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChromatic102.scd b/sound_algo/palette/melodies/long/mlChromatic102.scd new file mode 100644 index 0000000..9755582 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChromatic102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChromatic102 -- long melody (64 steps), genre: chromatic +// ===================================================================== +( +~mlChromatic102 = [ + 73, 61, 0, 0, 0, 56, 70, 78, + 80, 65, 71, 64, 48, 49, 57, 56, + 0, 82, 72, 70, 48, 50, 80, 51, + 48, 48, 53, 52, 0, 0, 0, 0, + 52, 73, 0, 81, 51, 79, 75, 73, + 76, 0, 49, 63, 54, 58, 80, 65, + 69, 83, 0, 53, 67, 84, 78, 65, + 0, 68, 78, 0, 60, 0, 58, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChromatic103.scd b/sound_algo/palette/melodies/long/mlChromatic103.scd new file mode 100644 index 0000000..58fca39 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChromatic103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChromatic103 -- long melody (64 steps), genre: chromatic +// ===================================================================== +( +~mlChromatic103 = [ + 79, 83, 66, 84, 74, 63, 58, 0, + 64, 79, 80, 0, 75, 0, 0, 0, + 79, 83, 66, 84, 74, 63, 58, 0, + 64, 79, 80, 0, 75, 0, 0, 0, + 63, 52, 72, 67, 76, 49, 64, 75, + 84, 73, 0, 67, 79, 49, 76, 63, + 79, 83, 66, 84, 74, 63, 58, 0, + 64, 79, 80, 0, 75, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChromatic104.scd b/sound_algo/palette/melodies/long/mlChromatic104.scd new file mode 100644 index 0000000..1cf3a5a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChromatic104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChromatic104 -- long melody (64 steps), genre: chromatic +// ===================================================================== +( +~mlChromatic104 = [ + 72, 61, 55, 78, 79, 60, 48, 0, + 84, 51, 0, 48, 67, 53, 82, 0, + 84, 62, 80, 48, 76, 0, 79, 0, + 74, 81, 83, 65, 65, 75, 83, 80, + 75, 61, 49, 66, 76, 57, 70, 65, + 67, 0, 80, 61, 58, 52, 51, 69, + 64, 55, 52, 57, 0, 56, 49, 59, + 72, 56, 54, 0, 63, 0, 0, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChromatic105.scd b/sound_algo/palette/melodies/long/mlChromatic105.scd new file mode 100644 index 0000000..77f2279 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChromatic105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChromatic105 -- long melody (64 steps), genre: chromatic +// ===================================================================== +( +~mlChromatic105 = [ + 51, 0, 56, 80, 63, 67, 67, 70, + 0, 59, 55, 66, 50, 72, 0, 71, + 51, 0, 56, 80, 63, 67, 67, 70, + 0, 59, 55, 66, 50, 72, 0, 71, + 52, 0, 60, 77, 48, 69, 77, 67, + 0, 79, 77, 81, 0, 82, 82, 79, + 51, 0, 56, 80, 63, 67, 67, 70, + 0, 59, 55, 66, 50, 72, 0, 71 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChromatic106.scd b/sound_algo/palette/melodies/long/mlChromatic106.scd new file mode 100644 index 0000000..f019f38 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChromatic106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChromatic106 -- long melody (64 steps), genre: chromatic +// ===================================================================== +( +~mlChromatic106 = [ + 79, 58, 53, 66, 48, 77, 55, 49, + 0, 65, 74, 63, 52, 0, 75, 72, + 79, 58, 53, 66, 48, 77, 55, 49, + 0, 65, 74, 63, 52, 0, 75, 72, + 74, 48, 68, 0, 63, 67, 77, 60, + 70, 69, 49, 83, 60, 83, 0, 0, + 79, 58, 53, 66, 48, 77, 55, 49, + 0, 65, 74, 63, 52, 0, 75, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlChromatic107.scd b/sound_algo/palette/melodies/long/mlChromatic107.scd new file mode 100644 index 0000000..5060cd8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlChromatic107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlChromatic107 -- long melody (64 steps), genre: chromatic +// ===================================================================== +( +~mlChromatic107 = [ + 71, 80, 58, 78, 79, 67, 0, 78, + 0, 0, 0, 0, 51, 59, 55, 0, + 51, 0, 76, 49, 71, 68, 70, 52, + 0, 69, 82, 84, 48, 62, 68, 70, + 72, 64, 68, 0, 55, 56, 71, 65, + 72, 0, 66, 78, 77, 49, 0, 0, + 74, 48, 68, 69, 72, 73, 0, 53, + 76, 50, 73, 60, 66, 71, 63, 79 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic100.scd b/sound_algo/palette/melodies/long/mlCinematic100.scd new file mode 100644 index 0000000..d2c53a3 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic100 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic100 = [ + 0, 39, 56, 0, 0, 77, 0, 61, + 0, 0, 79, 0, 0, 37, 0, 0, + 0, 39, 56, 0, 0, 77, 0, 61, + 0, 0, 79, 0, 0, 37, 0, 0, + 63, 48, 0, 84, 0, 63, 41, 73, + 80, 73, 37, 37, 84, 41, 0, 56, + 0, 39, 56, 0, 0, 77, 0, 61, + 0, 0, 79, 0, 0, 37, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic101.scd b/sound_algo/palette/melodies/long/mlCinematic101.scd new file mode 100644 index 0000000..cd16cc0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic101 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic101 = [ + 53, 36, 0, 67, 0, 72, 0, 0, + 36, 55, 0, 79, 56, 79, 41, 67, + 0, 59, 77, 0, 0, 0, 0, 71, + 60, 0, 0, 80, 39, 67, 75, 60, + 62, 53, 50, 0, 77, 0, 0, 62, + 67, 83, 77, 72, 43, 0, 80, 55, + 0, 44, 47, 41, 0, 0, 84, 0, + 63, 44, 38, 0, 36, 59, 39, 36 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic102.scd b/sound_algo/palette/melodies/long/mlCinematic102.scd new file mode 100644 index 0000000..7226c32 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic102 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic102 = [ + 0, 0, 48, 0, 0, 0, 0, 61, + 48, 0, 37, 44, 0, 0, 0, 0, + 0, 72, 84, 65, 53, 0, 37, 48, + 0, 0, 0, 0, 68, 0, 39, 41, + 44, 0, 0, 84, 77, 73, 37, 80, + 60, 65, 72, 39, 61, 0, 0, 49, + 73, 63, 61, 68, 84, 49, 80, 73, + 84, 80, 70, 79, 36, 53, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic103.scd b/sound_algo/palette/melodies/long/mlCinematic103.scd new file mode 100644 index 0000000..f2db165 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic103 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic103 = [ + 44, 39, 74, 62, 51, 0, 74, 0, + 72, 53, 83, 0, 55, 0, 53, 0, + 44, 39, 74, 62, 51, 0, 74, 0, + 72, 53, 83, 0, 55, 0, 53, 0, + 0, 44, 80, 43, 68, 39, 43, 0, + 72, 43, 0, 50, 77, 51, 0, 48, + 44, 39, 74, 62, 51, 0, 74, 0, + 72, 53, 83, 0, 55, 0, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic104.scd b/sound_algo/palette/melodies/long/mlCinematic104.scd new file mode 100644 index 0000000..adaee3e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic104 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic104 = [ + 0, 38, 50, 68, 0, 51, 62, 65, + 79, 0, 36, 55, 0, 67, 0, 0, + 0, 70, 0, 53, 0, 0, 60, 0, + 60, 0, 53, 50, 39, 0, 0, 44, + 0, 62, 36, 36, 75, 62, 0, 39, + 0, 0, 55, 48, 0, 0, 0, 44, + 70, 67, 74, 79, 0, 62, 0, 60, + 0, 43, 38, 0, 50, 70, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic105.scd b/sound_algo/palette/melodies/long/mlCinematic105.scd new file mode 100644 index 0000000..2f44524 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic105 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic105 = [ + 36, 0, 56, 50, 0, 36, 0, 53, + 68, 60, 0, 36, 36, 79, 79, 38, + 36, 0, 56, 50, 0, 36, 0, 53, + 68, 60, 0, 36, 36, 79, 79, 38, + 48, 0, 44, 0, 48, 39, 0, 46, + 0, 36, 0, 67, 0, 36, 82, 70, + 36, 0, 56, 50, 0, 36, 0, 53, + 68, 60, 0, 36, 36, 79, 79, 38 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic106.scd b/sound_algo/palette/melodies/long/mlCinematic106.scd new file mode 100644 index 0000000..bcf36f0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic106 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic106 = [ + 43, 43, 0, 0, 0, 0, 53, 0, + 0, 0, 62, 83, 67, 0, 0, 0, + 43, 43, 0, 0, 0, 0, 53, 0, + 0, 0, 62, 83, 67, 0, 0, 0, + 65, 68, 0, 0, 55, 47, 0, 0, + 50, 0, 77, 0, 43, 62, 79, 0, + 43, 43, 0, 0, 0, 0, 53, 0, + 0, 0, 62, 83, 67, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic107.scd b/sound_algo/palette/melodies/long/mlCinematic107.scd new file mode 100644 index 0000000..f5e2707 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic107 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic107 = [ + 65, 72, 58, 0, 0, 44, 0, 0, + 0, 0, 0, 68, 48, 0, 48, 61, + 65, 72, 58, 0, 0, 44, 0, 0, + 0, 0, 0, 68, 48, 0, 48, 61, + 67, 0, 0, 0, 0, 44, 75, 0, + 0, 80, 0, 0, 70, 51, 80, 56, + 65, 72, 58, 0, 0, 44, 0, 0, + 0, 0, 0, 68, 48, 0, 48, 61 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic108.scd b/sound_algo/palette/melodies/long/mlCinematic108.scd new file mode 100644 index 0000000..4d71310 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic108 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic108 = [ + 46, 68, 0, 65, 0, 0, 0, 43, + 62, 68, 72, 0, 0, 0, 75, 0, + 46, 68, 0, 65, 0, 0, 0, 43, + 62, 68, 72, 0, 0, 0, 75, 0, + 36, 72, 0, 68, 0, 0, 41, 48, + 0, 0, 82, 53, 80, 0, 50, 65, + 46, 68, 0, 65, 0, 0, 0, 43, + 62, 68, 72, 0, 0, 0, 75, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic109.scd b/sound_algo/palette/melodies/long/mlCinematic109.scd new file mode 100644 index 0000000..d6dea9f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic109 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic109 = [ + 0, 0, 0, 79, 0, 68, 0, 67, + 0, 0, 0, 0, 0, 0, 49, 68, + 0, 0, 0, 79, 0, 68, 0, 67, + 0, 0, 0, 0, 0, 0, 49, 68, + 70, 0, 76, 0, 0, 0, 0, 0, + 0, 44, 41, 76, 0, 44, 49, 41, + 0, 0, 0, 79, 0, 68, 0, 67, + 0, 0, 0, 0, 0, 0, 49, 68 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic110.scd b/sound_algo/palette/melodies/long/mlCinematic110.scd new file mode 100644 index 0000000..d844e2a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic110 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic110 = [ + 0, 0, 51, 41, 0, 79, 0, 84, + 0, 44, 0, 53, 68, 77, 0, 75, + 0, 0, 51, 41, 0, 79, 0, 84, + 0, 44, 0, 53, 68, 77, 0, 75, + 43, 53, 0, 0, 84, 43, 0, 51, + 0, 84, 0, 37, 61, 58, 0, 65, + 0, 0, 51, 41, 0, 79, 0, 84, + 0, 44, 0, 53, 68, 77, 0, 75 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic111.scd b/sound_algo/palette/melodies/long/mlCinematic111.scd new file mode 100644 index 0000000..4105516 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic111 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic111 = [ + 65, 41, 79, 73, 77, 84, 61, 52, + 0, 0, 67, 0, 60, 0, 72, 52, + 65, 0, 73, 60, 52, 65, 55, 36, + 72, 61, 77, 0, 0, 44, 46, 80, + 67, 0, 0, 0, 46, 65, 0, 40, + 40, 0, 56, 56, 37, 0, 61, 67, + 0, 37, 0, 73, 41, 55, 73, 53, + 44, 0, 43, 84, 60, 64, 41, 70 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic112.scd b/sound_algo/palette/melodies/long/mlCinematic112.scd new file mode 100644 index 0000000..a6abf3e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic112 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic112 = [ + 0, 0, 74, 71, 72, 48, 0, 0, + 0, 39, 60, 0, 63, 71, 56, 84, + 0, 0, 74, 71, 72, 48, 0, 0, + 0, 39, 60, 0, 63, 71, 56, 84, + 0, 83, 0, 0, 0, 39, 72, 0, + 43, 53, 51, 47, 48, 38, 60, 67, + 0, 0, 74, 71, 72, 48, 0, 0, + 0, 39, 60, 0, 63, 71, 56, 84 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic113.scd b/sound_algo/palette/melodies/long/mlCinematic113.scd new file mode 100644 index 0000000..d447d49 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic113 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic113 = [ + 0, 70, 0, 44, 46, 74, 62, 82, + 39, 50, 56, 0, 0, 0, 75, 58, + 0, 70, 0, 44, 46, 74, 62, 82, + 39, 50, 56, 0, 0, 0, 75, 58, + 43, 0, 41, 67, 55, 60, 38, 36, + 75, 77, 82, 0, 67, 0, 0, 58, + 0, 70, 0, 44, 46, 74, 62, 82, + 39, 50, 56, 0, 0, 0, 75, 58 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic114.scd b/sound_algo/palette/melodies/long/mlCinematic114.scd new file mode 100644 index 0000000..c4a7f15 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic114 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic114 = [ + 56, 0, 72, 0, 0, 0, 0, 72, + 0, 84, 0, 0, 65, 0, 0, 40, + 77, 0, 0, 67, 0, 0, 76, 0, + 65, 0, 65, 49, 0, 0, 36, 77, + 0, 55, 52, 46, 80, 0, 0, 0, + 0, 68, 0, 0, 36, 36, 0, 79, + 0, 53, 79, 46, 43, 52, 60, 0, + 80, 49, 0, 58, 65, 0, 43, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlCinematic115.scd b/sound_algo/palette/melodies/long/mlCinematic115.scd new file mode 100644 index 0000000..4074642 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlCinematic115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlCinematic115 -- long melody (64 steps), genre: cinematic +// ===================================================================== +( +~mlCinematic115 = [ + 0, 56, 39, 0, 0, 82, 0, 37, + 0, 0, 0, 0, 0, 41, 0, 0, + 0, 56, 39, 0, 0, 82, 0, 37, + 0, 0, 0, 0, 0, 41, 0, 0, + 82, 51, 0, 0, 0, 44, 82, 73, + 0, 0, 0, 58, 0, 0, 46, 0, + 0, 56, 39, 0, 0, 82, 0, 37, + 0, 0, 0, 0, 0, 41, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark100.scd b/sound_algo/palette/melodies/long/mlDark100.scd new file mode 100644 index 0000000..3532f51 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark100 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark100 = [ + 52, 0, 38, 50, 40, 0, 40, 41, + 40, 0, 53, 57, 0, 58, 0, 0, + 52, 0, 38, 50, 40, 0, 40, 41, + 40, 0, 53, 57, 0, 58, 0, 0, + 40, 0, 0, 0, 0, 60, 0, 58, + 0, 52, 0, 0, 0, 40, 58, 48, + 52, 0, 38, 50, 40, 0, 40, 41, + 40, 0, 53, 57, 0, 58, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark101.scd b/sound_algo/palette/melodies/long/mlDark101.scd new file mode 100644 index 0000000..7cb9d30 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark101 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark101 = [ + 58, 36, 49, 53, 0, 51, 0, 46, + 55, 58, 48, 39, 46, 51, 0, 39, + 0, 58, 39, 0, 44, 58, 0, 43, + 0, 36, 53, 0, 55, 36, 36, 53, + 0, 49, 49, 55, 0, 48, 41, 39, + 0, 37, 43, 51, 0, 60, 58, 41, + 43, 56, 0, 0, 0, 36, 56, 37, + 49, 36, 39, 41, 55, 43, 58, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark102.scd b/sound_algo/palette/melodies/long/mlDark102.scd new file mode 100644 index 0000000..7532d84 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark102 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark102 = [ + 40, 43, 0, 58, 48, 43, 38, 40, + 55, 52, 0, 0, 0, 0, 0, 0, + 57, 57, 0, 52, 55, 48, 57, 0, + 46, 0, 0, 0, 55, 0, 0, 57, + 0, 0, 43, 0, 55, 52, 0, 55, + 40, 38, 0, 55, 0, 57, 0, 57, + 38, 0, 0, 0, 43, 41, 0, 41, + 55, 58, 46, 0, 0, 60, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark103.scd b/sound_algo/palette/melodies/long/mlDark103.scd new file mode 100644 index 0000000..555dedd --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark103 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark103 = [ + 36, 48, 50, 0, 39, 39, 0, 0, + 38, 43, 0, 46, 0, 0, 50, 57, + 55, 50, 42, 0, 0, 0, 0, 57, + 46, 43, 60, 38, 0, 0, 39, 60, + 55, 46, 0, 0, 0, 48, 0, 0, + 39, 0, 0, 36, 46, 55, 54, 48, + 0, 0, 45, 0, 0, 42, 0, 45, + 54, 60, 0, 55, 50, 43, 45, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark104.scd b/sound_algo/palette/melodies/long/mlDark104.scd new file mode 100644 index 0000000..05bb34b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark104 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark104 = [ + 47, 60, 43, 0, 47, 0, 0, 42, + 59, 54, 0, 51, 0, 59, 36, 45, + 55, 0, 0, 43, 0, 0, 0, 55, + 59, 55, 40, 40, 43, 47, 42, 0, + 40, 60, 0, 42, 60, 55, 55, 0, + 45, 42, 0, 0, 0, 51, 0, 43, + 60, 51, 59, 47, 0, 48, 52, 0, + 47, 51, 0, 0, 47, 39, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark105.scd b/sound_algo/palette/melodies/long/mlDark105.scd new file mode 100644 index 0000000..afbc1a7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark105 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark105 = [ + 53, 39, 37, 53, 43, 0, 0, 36, + 55, 41, 0, 0, 46, 0, 55, 0, + 46, 0, 43, 46, 0, 37, 49, 46, + 58, 0, 58, 0, 55, 0, 0, 58, + 55, 0, 46, 0, 43, 39, 0, 36, + 46, 0, 46, 36, 43, 0, 0, 41, + 58, 0, 41, 0, 58, 0, 0, 0, + 0, 46, 0, 0, 0, 41, 0, 46 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark106.scd b/sound_algo/palette/melodies/long/mlDark106.scd new file mode 100644 index 0000000..d16265b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark106 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark106 = [ + 55, 40, 0, 50, 55, 58, 60, 40, + 0, 0, 0, 0, 0, 45, 50, 48, + 55, 40, 0, 50, 55, 58, 60, 40, + 0, 0, 0, 0, 0, 45, 50, 48, + 0, 38, 60, 0, 0, 60, 40, 46, + 55, 0, 0, 0, 60, 48, 0, 46, + 55, 40, 0, 50, 55, 58, 60, 40, + 0, 0, 0, 0, 0, 45, 50, 48 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark107.scd b/sound_algo/palette/melodies/long/mlDark107.scd new file mode 100644 index 0000000..95f8eba --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark107 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark107 = [ + 46, 0, 48, 39, 43, 0, 60, 54, + 57, 43, 0, 58, 0, 39, 46, 50, + 46, 0, 48, 39, 43, 0, 60, 54, + 57, 43, 0, 58, 0, 39, 46, 50, + 51, 42, 0, 60, 55, 48, 0, 0, + 0, 39, 0, 0, 60, 39, 0, 0, + 46, 0, 48, 39, 43, 0, 60, 54, + 57, 43, 0, 58, 0, 39, 46, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark108.scd b/sound_algo/palette/melodies/long/mlDark108.scd new file mode 100644 index 0000000..d496c97 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark108 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark108 = [ + 46, 0, 0, 48, 0, 0, 0, 60, + 46, 0, 48, 0, 43, 38, 0, 0, + 0, 55, 0, 0, 0, 0, 0, 42, + 58, 36, 60, 55, 36, 55, 0, 48, + 0, 58, 0, 0, 0, 54, 39, 0, + 43, 0, 0, 0, 0, 0, 0, 0, + 54, 51, 38, 45, 0, 43, 48, 46, + 46, 60, 36, 0, 58, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark109.scd b/sound_algo/palette/melodies/long/mlDark109.scd new file mode 100644 index 0000000..56b7c1d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark109 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark109 = [ + 46, 0, 0, 44, 58, 0, 36, 51, + 43, 60, 0, 0, 55, 56, 0, 0, + 58, 39, 49, 0, 0, 49, 41, 41, + 0, 0, 55, 36, 58, 0, 37, 53, + 58, 44, 46, 0, 41, 49, 0, 0, + 0, 0, 0, 41, 46, 44, 53, 0, + 39, 44, 0, 58, 56, 55, 51, 60, + 0, 0, 48, 0, 43, 41, 41, 41 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark110.scd b/sound_algo/palette/melodies/long/mlDark110.scd new file mode 100644 index 0000000..cb453a5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark110 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark110 = [ + 58, 49, 56, 49, 0, 41, 0, 0, + 51, 48, 60, 37, 43, 37, 0, 56, + 58, 49, 56, 49, 0, 41, 0, 0, + 51, 48, 60, 37, 43, 37, 0, 56, + 44, 0, 37, 60, 56, 0, 41, 49, + 53, 0, 60, 0, 0, 43, 0, 44, + 58, 49, 56, 49, 0, 41, 0, 0, + 51, 48, 60, 37, 43, 37, 0, 56 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark111.scd b/sound_algo/palette/melodies/long/mlDark111.scd new file mode 100644 index 0000000..2188138 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark111 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark111 = [ + 0, 59, 0, 42, 52, 36, 52, 43, + 0, 52, 0, 0, 42, 0, 47, 0, + 0, 42, 55, 0, 59, 0, 0, 39, + 0, 47, 47, 0, 47, 54, 42, 57, + 0, 48, 0, 0, 47, 0, 40, 0, + 59, 0, 0, 0, 59, 0, 48, 51, + 0, 47, 57, 0, 60, 0, 45, 0, + 60, 0, 60, 0, 55, 0, 47, 43 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark112.scd b/sound_algo/palette/melodies/long/mlDark112.scd new file mode 100644 index 0000000..ceaa629 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark112 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark112 = [ + 55, 36, 0, 0, 43, 0, 0, 0, + 0, 0, 50, 38, 0, 52, 60, 0, + 55, 36, 0, 0, 43, 0, 0, 0, + 0, 0, 50, 38, 0, 52, 60, 0, + 40, 0, 60, 48, 52, 43, 0, 36, + 40, 0, 0, 57, 55, 41, 36, 52, + 55, 36, 0, 0, 43, 0, 0, 0, + 0, 0, 50, 38, 0, 52, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark113.scd b/sound_algo/palette/melodies/long/mlDark113.scd new file mode 100644 index 0000000..d6f8bb0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark113 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark113 = [ + 55, 54, 36, 0, 52, 43, 52, 0, + 36, 0, 0, 60, 0, 43, 55, 0, + 55, 54, 36, 0, 52, 43, 52, 0, + 36, 0, 0, 60, 0, 43, 55, 0, + 47, 36, 47, 0, 43, 55, 0, 40, + 47, 43, 0, 42, 43, 40, 57, 36, + 55, 54, 36, 0, 52, 43, 52, 0, + 36, 0, 0, 60, 0, 43, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark114.scd b/sound_algo/palette/melodies/long/mlDark114.scd new file mode 100644 index 0000000..f288ef7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark114 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark114 = [ + 60, 0, 48, 52, 52, 0, 43, 52, + 52, 58, 0, 41, 0, 0, 40, 53, + 0, 60, 50, 0, 0, 0, 53, 0, + 40, 46, 45, 0, 0, 0, 0, 50, + 52, 0, 0, 0, 52, 60, 53, 48, + 46, 0, 0, 60, 0, 52, 41, 57, + 0, 60, 48, 0, 52, 0, 58, 48, + 58, 0, 38, 43, 0, 0, 0, 40 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark115.scd b/sound_algo/palette/melodies/long/mlDark115.scd new file mode 100644 index 0000000..ce5ec8a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark115 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark115 = [ + 0, 0, 0, 52, 0, 0, 53, 43, + 40, 0, 0, 57, 0, 38, 60, 38, + 0, 0, 0, 52, 0, 0, 53, 43, + 40, 0, 0, 57, 0, 38, 60, 38, + 0, 0, 0, 0, 55, 0, 0, 58, + 0, 0, 43, 57, 55, 40, 55, 0, + 0, 0, 0, 52, 0, 0, 53, 43, + 40, 0, 0, 57, 0, 38, 60, 38 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark116.scd b/sound_algo/palette/melodies/long/mlDark116.scd new file mode 100644 index 0000000..0557769 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark116 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark116 = [ + 0, 38, 55, 0, 0, 0, 50, 0, + 38, 0, 50, 57, 48, 0, 0, 48, + 0, 0, 0, 0, 0, 0, 54, 43, + 0, 43, 0, 38, 0, 58, 0, 48, + 0, 0, 48, 0, 0, 54, 46, 57, + 0, 0, 0, 0, 0, 60, 39, 0, + 58, 0, 58, 48, 0, 0, 0, 55, + 58, 0, 0, 0, 0, 0, 0, 46 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark117.scd b/sound_algo/palette/melodies/long/mlDark117.scd new file mode 100644 index 0000000..7bf7c79 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark117 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark117 = [ + 0, 43, 57, 0, 55, 38, 0, 0, + 39, 0, 43, 43, 51, 38, 0, 0, + 0, 43, 57, 0, 55, 38, 0, 0, + 39, 0, 43, 43, 51, 38, 0, 0, + 50, 46, 48, 0, 55, 0, 57, 55, + 0, 43, 0, 0, 0, 0, 0, 0, + 0, 43, 57, 0, 55, 38, 0, 0, + 39, 0, 43, 43, 51, 38, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark118.scd b/sound_algo/palette/melodies/long/mlDark118.scd new file mode 100644 index 0000000..c780c88 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark118 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark118 = [ + 43, 60, 49, 0, 0, 0, 49, 0, + 0, 0, 43, 0, 43, 46, 0, 0, + 43, 60, 49, 0, 0, 0, 49, 0, + 0, 0, 43, 0, 43, 46, 0, 0, + 51, 51, 44, 43, 0, 0, 0, 0, + 58, 53, 49, 46, 53, 0, 0, 0, + 43, 60, 49, 0, 0, 0, 49, 0, + 0, 0, 43, 0, 43, 46, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark119.scd b/sound_algo/palette/melodies/long/mlDark119.scd new file mode 100644 index 0000000..b5af3bf --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark119 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark119 = [ + 36, 51, 57, 57, 57, 0, 59, 36, + 52, 0, 60, 47, 0, 60, 45, 0, + 36, 51, 57, 57, 57, 0, 59, 36, + 52, 0, 60, 47, 0, 60, 45, 0, + 0, 36, 0, 0, 59, 57, 45, 54, + 52, 0, 59, 39, 0, 59, 0, 0, + 36, 51, 57, 57, 57, 0, 59, 36, + 52, 0, 60, 47, 0, 60, 45, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark120.scd b/sound_algo/palette/melodies/long/mlDark120.scd new file mode 100644 index 0000000..4802901 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark120 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark120 = [ + 0, 43, 48, 46, 0, 0, 44, 36, + 58, 51, 0, 37, 43, 49, 0, 0, + 0, 56, 0, 49, 43, 58, 0, 46, + 58, 49, 53, 0, 55, 56, 0, 0, + 0, 0, 0, 58, 0, 0, 37, 0, + 0, 49, 58, 36, 48, 56, 53, 0, + 43, 49, 46, 0, 48, 60, 0, 0, + 41, 0, 55, 0, 55, 41, 44, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark121.scd b/sound_algo/palette/melodies/long/mlDark121.scd new file mode 100644 index 0000000..d715e26 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark121 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark121 = [ + 47, 0, 0, 0, 40, 36, 0, 0, + 36, 0, 60, 40, 55, 0, 39, 0, + 40, 0, 47, 0, 0, 59, 59, 40, + 43, 0, 0, 48, 0, 0, 0, 55, + 59, 59, 60, 48, 0, 51, 39, 47, + 0, 43, 43, 0, 59, 60, 51, 52, + 0, 36, 55, 55, 52, 36, 39, 0, + 0, 55, 57, 45, 52, 60, 52, 52 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark122.scd b/sound_algo/palette/melodies/long/mlDark122.scd new file mode 100644 index 0000000..bc7704c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark122 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark122 = [ + 50, 55, 42, 55, 45, 0, 57, 51, + 42, 0, 58, 55, 43, 42, 0, 0, + 50, 55, 42, 55, 45, 0, 57, 51, + 42, 0, 58, 55, 43, 42, 0, 0, + 55, 0, 50, 36, 60, 42, 0, 0, + 0, 57, 0, 43, 55, 57, 0, 45, + 50, 55, 42, 55, 45, 0, 57, 51, + 42, 0, 58, 55, 43, 42, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark123.scd b/sound_algo/palette/melodies/long/mlDark123.scd new file mode 100644 index 0000000..ddd9a85 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark123 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark123 = [ + 0, 39, 0, 39, 43, 0, 58, 50, + 0, 45, 0, 51, 57, 48, 0, 36, + 0, 0, 0, 58, 0, 57, 39, 0, + 50, 42, 0, 38, 58, 43, 55, 55, + 58, 0, 60, 55, 0, 0, 50, 39, + 46, 39, 50, 51, 43, 0, 54, 50, + 46, 57, 50, 51, 0, 51, 57, 48, + 38, 58, 0, 0, 38, 48, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark124.scd b/sound_algo/palette/melodies/long/mlDark124.scd new file mode 100644 index 0000000..728defc --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark124.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark124 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark124 = [ + 39, 38, 57, 0, 55, 54, 54, 50, + 46, 54, 57, 58, 55, 0, 39, 45, + 39, 38, 57, 0, 55, 54, 54, 50, + 46, 54, 57, 58, 55, 0, 39, 45, + 43, 51, 57, 39, 38, 0, 54, 57, + 38, 36, 38, 38, 50, 36, 57, 38, + 39, 38, 57, 0, 55, 54, 54, 50, + 46, 54, 57, 58, 55, 0, 39, 45 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark125.scd b/sound_algo/palette/melodies/long/mlDark125.scd new file mode 100644 index 0000000..4de3cd0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark125.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark125 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark125 = [ + 52, 0, 0, 0, 46, 38, 58, 53, + 43, 52, 0, 46, 50, 0, 0, 0, + 52, 0, 0, 0, 46, 38, 58, 53, + 43, 52, 0, 46, 50, 0, 0, 0, + 0, 0, 52, 0, 52, 41, 0, 0, + 0, 40, 58, 45, 0, 41, 40, 55, + 52, 0, 0, 0, 46, 38, 58, 53, + 43, 52, 0, 46, 50, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark126.scd b/sound_algo/palette/melodies/long/mlDark126.scd new file mode 100644 index 0000000..c61e512 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark126.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark126 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark126 = [ + 53, 0, 0, 0, 57, 58, 0, 0, + 55, 0, 0, 0, 0, 0, 0, 0, + 55, 0, 52, 46, 0, 53, 45, 43, + 0, 0, 0, 45, 43, 60, 0, 0, + 43, 0, 0, 0, 0, 0, 55, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 0, 0, 0, 57, 0, 0, + 0, 58, 0, 50, 0, 40, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDark127.scd b/sound_algo/palette/melodies/long/mlDark127.scd new file mode 100644 index 0000000..dccab85 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDark127.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDark127 -- long melody (64 steps), genre: dark +// ===================================================================== +( +~mlDark127 = [ + 0, 46, 54, 55, 58, 60, 0, 51, + 38, 43, 51, 0, 50, 0, 46, 60, + 0, 46, 54, 55, 58, 60, 0, 51, + 38, 43, 51, 0, 50, 0, 46, 60, + 39, 42, 58, 45, 46, 43, 0, 0, + 50, 46, 58, 50, 43, 51, 39, 0, + 0, 46, 54, 55, 58, 60, 0, 51, + 38, 43, 51, 0, 50, 0, 46, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit100.scd b/sound_algo/palette/melodies/long/mlDetroit100.scd new file mode 100644 index 0000000..fec4b32 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit100 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit100 = [ + 0, 0, 0, 56, 0, 0, 0, 0, + 68, 0, 60, 58, 0, 0, 0, 0, + 0, 0, 0, 56, 0, 0, 0, 0, + 68, 0, 60, 58, 0, 0, 0, 0, + 0, 67, 65, 68, 0, 0, 67, 0, + 0, 65, 65, 63, 60, 0, 65, 72, + 0, 0, 0, 56, 0, 0, 0, 0, + 68, 0, 60, 58, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit101.scd b/sound_algo/palette/melodies/long/mlDetroit101.scd new file mode 100644 index 0000000..21fd588 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit101 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit101 = [ + 48, 56, 60, 56, 68, 0, 67, 50, + 0, 0, 0, 62, 65, 0, 60, 0, + 60, 0, 0, 67, 0, 0, 67, 0, + 0, 0, 48, 0, 65, 67, 51, 0, + 0, 68, 0, 58, 65, 60, 72, 0, + 0, 70, 0, 60, 48, 67, 0, 50, + 60, 72, 0, 62, 50, 0, 0, 60, + 0, 0, 67, 0, 0, 65, 51, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit102.scd b/sound_algo/palette/melodies/long/mlDetroit102.scd new file mode 100644 index 0000000..649a166 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit102 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit102 = [ + 0, 53, 58, 69, 48, 57, 0, 70, + 0, 51, 0, 60, 0, 0, 57, 0, + 0, 53, 58, 69, 48, 57, 0, 70, + 0, 51, 0, 60, 0, 0, 57, 0, + 58, 72, 58, 0, 69, 57, 63, 0, + 53, 0, 58, 51, 0, 48, 50, 48, + 0, 53, 58, 69, 48, 57, 0, 70, + 0, 51, 0, 60, 0, 0, 57, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit103.scd b/sound_algo/palette/melodies/long/mlDetroit103.scd new file mode 100644 index 0000000..992d1f4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit103 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit103 = [ + 60, 0, 55, 63, 0, 50, 0, 0, + 0, 69, 50, 67, 60, 65, 53, 67, + 0, 51, 63, 70, 48, 69, 62, 57, + 51, 0, 0, 51, 0, 0, 63, 58, + 0, 65, 0, 62, 67, 72, 62, 60, + 0, 0, 0, 69, 0, 0, 70, 0, + 51, 51, 60, 60, 53, 72, 58, 51, + 70, 0, 55, 0, 51, 0, 69, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit104.scd b/sound_algo/palette/melodies/long/mlDetroit104.scd new file mode 100644 index 0000000..75243b0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit104 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit104 = [ + 56, 55, 0, 0, 0, 0, 50, 0, + 48, 65, 65, 0, 56, 58, 53, 68, + 0, 58, 70, 65, 53, 0, 70, 55, + 0, 53, 60, 70, 72, 0, 0, 50, + 0, 48, 60, 62, 0, 55, 0, 51, + 56, 0, 60, 58, 68, 51, 55, 63, + 60, 63, 67, 0, 50, 55, 67, 58, + 65, 56, 68, 67, 72, 0, 50, 68 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit105.scd b/sound_algo/palette/melodies/long/mlDetroit105.scd new file mode 100644 index 0000000..ead0b61 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit105 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit105 = [ + 0, 0, 72, 70, 0, 60, 60, 53, + 53, 55, 60, 72, 0, 0, 0, 62, + 0, 0, 56, 70, 0, 0, 67, 63, + 72, 63, 55, 50, 65, 48, 63, 53, + 55, 70, 0, 0, 65, 72, 0, 0, + 0, 53, 68, 67, 56, 0, 0, 0, + 72, 51, 0, 58, 0, 62, 65, 60, + 51, 0, 0, 0, 53, 72, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit106.scd b/sound_algo/palette/melodies/long/mlDetroit106.scd new file mode 100644 index 0000000..aeadeca --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit106 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit106 = [ + 65, 60, 57, 0, 0, 0, 0, 0, + 65, 67, 58, 63, 0, 0, 0, 0, + 0, 60, 67, 51, 63, 55, 48, 55, + 0, 0, 50, 60, 70, 0, 0, 0, + 57, 67, 0, 0, 0, 48, 0, 0, + 67, 53, 0, 0, 57, 60, 62, 63, + 0, 60, 0, 0, 70, 63, 51, 51, + 63, 60, 0, 0, 62, 0, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit107.scd b/sound_algo/palette/melodies/long/mlDetroit107.scd new file mode 100644 index 0000000..d3bf227 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit107 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit107 = [ + 0, 0, 53, 60, 58, 0, 0, 0, + 48, 55, 0, 70, 62, 0, 51, 58, + 0, 0, 53, 60, 58, 0, 0, 0, + 48, 55, 0, 70, 62, 0, 51, 58, + 0, 63, 0, 48, 0, 0, 0, 51, + 55, 0, 0, 0, 55, 0, 55, 48, + 0, 0, 53, 60, 58, 0, 0, 0, + 48, 55, 0, 70, 62, 0, 51, 58 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit108.scd b/sound_algo/palette/melodies/long/mlDetroit108.scd new file mode 100644 index 0000000..6ce34ba --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit108 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit108 = [ + 63, 48, 0, 63, 0, 57, 57, 0, + 0, 0, 48, 0, 53, 58, 51, 0, + 63, 48, 0, 63, 0, 57, 57, 0, + 0, 0, 48, 0, 53, 58, 51, 0, + 62, 67, 0, 0, 69, 0, 51, 0, + 63, 67, 63, 60, 48, 0, 50, 0, + 63, 48, 0, 63, 0, 57, 57, 0, + 0, 0, 48, 0, 53, 58, 51, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit109.scd b/sound_algo/palette/melodies/long/mlDetroit109.scd new file mode 100644 index 0000000..8ab237d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit109 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit109 = [ + 0, 55, 57, 48, 63, 0, 72, 53, + 60, 58, 55, 70, 69, 50, 0, 70, + 0, 55, 57, 48, 63, 0, 72, 53, + 60, 58, 55, 70, 69, 50, 0, 70, + 0, 63, 62, 0, 72, 51, 51, 0, + 72, 65, 55, 70, 0, 69, 67, 57, + 0, 55, 57, 48, 63, 0, 72, 53, + 60, 58, 55, 70, 69, 50, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit110.scd b/sound_algo/palette/melodies/long/mlDetroit110.scd new file mode 100644 index 0000000..82a023f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit110 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit110 = [ + 53, 53, 67, 0, 0, 62, 0, 0, + 53, 53, 58, 60, 0, 55, 63, 62, + 53, 53, 67, 0, 0, 62, 0, 0, + 53, 53, 58, 60, 0, 55, 63, 62, + 0, 72, 65, 58, 0, 0, 0, 51, + 48, 0, 0, 50, 56, 48, 0, 62, + 53, 53, 67, 0, 0, 62, 0, 0, + 53, 53, 58, 60, 0, 55, 63, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit111.scd b/sound_algo/palette/melodies/long/mlDetroit111.scd new file mode 100644 index 0000000..da2e996 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit111 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit111 = [ + 70, 68, 65, 58, 53, 58, 55, 51, + 51, 0, 60, 63, 56, 68, 67, 72, + 70, 68, 65, 58, 53, 58, 55, 51, + 51, 0, 60, 63, 56, 68, 67, 72, + 0, 62, 62, 58, 72, 55, 53, 53, + 60, 55, 0, 0, 53, 48, 68, 0, + 70, 68, 65, 58, 53, 58, 55, 51, + 51, 0, 60, 63, 56, 68, 67, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit112.scd b/sound_algo/palette/melodies/long/mlDetroit112.scd new file mode 100644 index 0000000..b44c6c2 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit112 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit112 = [ + 70, 0, 70, 0, 55, 50, 58, 0, + 63, 60, 0, 0, 0, 0, 58, 58, + 70, 0, 70, 0, 55, 50, 58, 0, + 63, 60, 0, 0, 0, 0, 58, 58, + 0, 0, 0, 0, 0, 53, 50, 0, + 60, 50, 55, 50, 0, 0, 0, 0, + 70, 0, 70, 0, 55, 50, 58, 0, + 63, 60, 0, 0, 0, 0, 58, 58 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit113.scd b/sound_algo/palette/melodies/long/mlDetroit113.scd new file mode 100644 index 0000000..1195d0d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit113 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit113 = [ + 63, 62, 72, 0, 70, 68, 68, 56, + 53, 56, 68, 56, 68, 0, 51, 0, + 0, 0, 50, 58, 53, 51, 0, 60, + 68, 48, 50, 53, 70, 0, 0, 0, + 68, 58, 0, 60, 0, 67, 0, 0, + 0, 0, 67, 53, 56, 0, 50, 67, + 68, 0, 56, 0, 0, 50, 0, 0, + 60, 0, 0, 63, 0, 58, 56, 56 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit114.scd b/sound_algo/palette/melodies/long/mlDetroit114.scd new file mode 100644 index 0000000..166e3aa --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit114 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit114 = [ + 48, 0, 0, 0, 60, 50, 72, 50, + 0, 62, 50, 0, 50, 48, 0, 0, + 48, 0, 0, 0, 60, 50, 72, 50, + 0, 62, 50, 0, 50, 48, 0, 0, + 0, 65, 0, 0, 0, 60, 55, 0, + 0, 72, 0, 53, 0, 58, 0, 0, + 48, 0, 0, 0, 60, 50, 72, 50, + 0, 62, 50, 0, 50, 48, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit115.scd b/sound_algo/palette/melodies/long/mlDetroit115.scd new file mode 100644 index 0000000..7b4302d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit115 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit115 = [ + 48, 0, 72, 72, 65, 72, 0, 68, + 0, 0, 70, 0, 65, 0, 0, 58, + 68, 48, 67, 0, 65, 55, 0, 55, + 0, 65, 0, 0, 65, 50, 0, 56, + 70, 65, 0, 0, 0, 55, 0, 0, + 68, 56, 62, 60, 65, 63, 67, 0, + 0, 56, 63, 50, 53, 62, 53, 0, + 51, 58, 0, 63, 72, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit116.scd b/sound_algo/palette/melodies/long/mlDetroit116.scd new file mode 100644 index 0000000..ca20bb9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit116 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit116 = [ + 63, 62, 0, 0, 53, 50, 65, 0, + 63, 62, 70, 0, 51, 60, 56, 67, + 63, 62, 0, 0, 53, 50, 65, 0, + 63, 62, 70, 0, 51, 60, 56, 67, + 48, 53, 0, 56, 0, 63, 0, 56, + 56, 0, 70, 0, 65, 0, 68, 56, + 63, 62, 0, 0, 53, 50, 65, 0, + 63, 62, 70, 0, 51, 60, 56, 67 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit117.scd b/sound_algo/palette/melodies/long/mlDetroit117.scd new file mode 100644 index 0000000..d65b589 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit117 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit117 = [ + 48, 55, 63, 62, 0, 0, 0, 0, + 67, 53, 0, 0, 62, 0, 0, 0, + 69, 0, 0, 70, 0, 48, 0, 0, + 63, 63, 53, 0, 67, 51, 48, 63, + 0, 0, 57, 53, 63, 67, 0, 69, + 0, 53, 55, 0, 53, 50, 53, 65, + 51, 57, 48, 60, 0, 57, 0, 0, + 62, 53, 0, 50, 0, 0, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit118.scd b/sound_algo/palette/melodies/long/mlDetroit118.scd new file mode 100644 index 0000000..813019f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit118 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit118 = [ + 0, 0, 0, 63, 0, 0, 0, 0, + 0, 50, 0, 55, 69, 0, 48, 48, + 0, 0, 0, 63, 0, 0, 0, 0, + 0, 50, 0, 55, 69, 0, 48, 48, + 60, 50, 0, 53, 53, 50, 0, 0, + 0, 0, 72, 51, 48, 70, 67, 55, + 0, 0, 0, 63, 0, 0, 0, 0, + 0, 50, 0, 55, 69, 0, 48, 48 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit119.scd b/sound_algo/palette/melodies/long/mlDetroit119.scd new file mode 100644 index 0000000..6f1e57c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit119 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit119 = [ + 0, 70, 67, 0, 62, 63, 0, 0, + 0, 68, 0, 0, 68, 67, 0, 50, + 0, 70, 67, 0, 62, 63, 0, 0, + 0, 68, 0, 0, 68, 67, 0, 50, + 53, 48, 72, 65, 56, 0, 58, 0, + 56, 0, 58, 62, 48, 55, 55, 0, + 0, 70, 67, 0, 62, 63, 0, 0, + 0, 68, 0, 0, 68, 67, 0, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit120.scd b/sound_algo/palette/melodies/long/mlDetroit120.scd new file mode 100644 index 0000000..1baf3ff --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit120 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit120 = [ + 57, 65, 62, 0, 48, 50, 48, 70, + 0, 60, 65, 55, 70, 0, 0, 53, + 57, 65, 62, 0, 48, 50, 48, 70, + 0, 60, 65, 55, 70, 0, 0, 53, + 67, 51, 69, 50, 0, 0, 0, 55, + 0, 0, 60, 0, 69, 67, 0, 0, + 57, 65, 62, 0, 48, 50, 48, 70, + 0, 60, 65, 55, 70, 0, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit121.scd b/sound_algo/palette/melodies/long/mlDetroit121.scd new file mode 100644 index 0000000..f4197c1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit121 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit121 = [ + 0, 53, 48, 55, 0, 63, 62, 58, + 60, 58, 0, 67, 0, 0, 0, 50, + 51, 55, 63, 63, 72, 70, 0, 68, + 60, 50, 56, 0, 68, 0, 65, 0, + 56, 0, 0, 60, 0, 0, 56, 0, + 0, 72, 56, 0, 0, 0, 55, 55, + 63, 0, 0, 68, 68, 55, 0, 67, + 68, 65, 58, 0, 0, 0, 70, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit122.scd b/sound_algo/palette/melodies/long/mlDetroit122.scd new file mode 100644 index 0000000..6f9768c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit122 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit122 = [ + 0, 53, 0, 0, 60, 65, 0, 0, + 65, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 58, 58, 0, 0, 0, 0, + 67, 0, 51, 0, 0, 0, 0, 67, + 60, 0, 50, 53, 60, 0, 55, 58, + 0, 0, 50, 65, 72, 0, 51, 51, + 63, 58, 0, 0, 51, 65, 62, 53, + 0, 0, 0, 0, 60, 51, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit123.scd b/sound_algo/palette/melodies/long/mlDetroit123.scd new file mode 100644 index 0000000..0d63071 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit123 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit123 = [ + 65, 0, 63, 0, 63, 0, 55, 50, + 0, 0, 0, 0, 0, 72, 56, 50, + 0, 53, 0, 0, 0, 0, 0, 0, + 60, 0, 53, 0, 0, 0, 0, 60, + 67, 0, 51, 0, 68, 55, 0, 0, + 48, 0, 0, 0, 72, 60, 0, 0, + 72, 53, 60, 0, 65, 0, 0, 0, + 60, 0, 0, 0, 67, 65, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit124.scd b/sound_algo/palette/melodies/long/mlDetroit124.scd new file mode 100644 index 0000000..a4f8a13 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit124.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit124 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit124 = [ + 0, 62, 55, 62, 48, 60, 70, 0, + 63, 0, 51, 0, 60, 65, 51, 48, + 0, 62, 55, 62, 48, 60, 70, 0, + 63, 0, 51, 0, 60, 65, 51, 48, + 72, 53, 67, 67, 0, 0, 0, 53, + 57, 48, 0, 0, 67, 0, 0, 0, + 0, 62, 55, 62, 48, 60, 70, 0, + 63, 0, 51, 0, 60, 65, 51, 48 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit125.scd b/sound_algo/palette/melodies/long/mlDetroit125.scd new file mode 100644 index 0000000..0e1f68b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit125.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit125 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit125 = [ + 0, 0, 0, 72, 0, 0, 0, 57, + 55, 0, 70, 70, 55, 50, 0, 0, + 0, 0, 0, 72, 0, 0, 0, 57, + 55, 0, 70, 70, 55, 50, 0, 0, + 70, 0, 57, 48, 0, 55, 55, 0, + 65, 0, 69, 67, 0, 55, 0, 0, + 0, 0, 0, 72, 0, 0, 0, 57, + 55, 0, 70, 70, 55, 50, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit126.scd b/sound_algo/palette/melodies/long/mlDetroit126.scd new file mode 100644 index 0000000..6b65ea7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit126.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit126 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit126 = [ + 0, 0, 0, 65, 68, 48, 70, 60, + 0, 0, 0, 0, 65, 0, 55, 50, + 62, 51, 0, 0, 65, 65, 58, 72, + 65, 65, 0, 65, 0, 67, 48, 50, + 0, 0, 48, 0, 72, 0, 50, 0, + 60, 0, 51, 56, 65, 0, 0, 48, + 68, 67, 70, 68, 50, 48, 0, 51, + 53, 0, 62, 58, 0, 55, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit127.scd b/sound_algo/palette/melodies/long/mlDetroit127.scd new file mode 100644 index 0000000..35d77a9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit127.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit127 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit127 = [ + 69, 55, 0, 69, 62, 0, 50, 69, + 69, 62, 50, 0, 0, 51, 70, 0, + 0, 0, 0, 48, 0, 53, 53, 0, + 0, 72, 0, 50, 69, 67, 63, 69, + 0, 58, 0, 0, 51, 0, 70, 60, + 48, 51, 55, 69, 48, 55, 60, 72, + 67, 0, 50, 0, 55, 0, 0, 0, + 0, 57, 62, 53, 0, 0, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit128.scd b/sound_algo/palette/melodies/long/mlDetroit128.scd new file mode 100644 index 0000000..fb33e61 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit128.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit128 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit128 = [ + 0, 65, 0, 62, 0, 0, 0, 0, + 70, 0, 63, 0, 65, 0, 0, 0, + 0, 0, 60, 60, 0, 0, 60, 56, + 68, 0, 72, 0, 72, 0, 0, 60, + 65, 48, 0, 55, 53, 68, 51, 53, + 53, 0, 56, 0, 0, 56, 60, 68, + 68, 0, 0, 56, 63, 0, 62, 0, + 68, 55, 48, 0, 0, 55, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit129.scd b/sound_algo/palette/melodies/long/mlDetroit129.scd new file mode 100644 index 0000000..8b181d4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit129.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit129 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit129 = [ + 0, 0, 68, 0, 51, 0, 63, 0, + 0, 62, 63, 63, 0, 0, 53, 0, + 60, 68, 50, 70, 0, 60, 70, 50, + 72, 53, 0, 55, 0, 53, 0, 67, + 72, 0, 63, 0, 62, 0, 68, 56, + 0, 0, 53, 0, 0, 60, 0, 0, + 0, 0, 65, 0, 53, 0, 70, 62, + 50, 0, 68, 48, 0, 0, 48, 48 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit130.scd b/sound_algo/palette/melodies/long/mlDetroit130.scd new file mode 100644 index 0000000..75a90f0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit130.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit130 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit130 = [ + 48, 0, 58, 51, 63, 58, 62, 53, + 0, 62, 62, 0, 0, 53, 0, 60, + 48, 0, 58, 51, 63, 58, 62, 53, + 0, 62, 62, 0, 0, 53, 0, 60, + 0, 0, 72, 72, 0, 48, 70, 51, + 55, 48, 69, 60, 55, 63, 60, 0, + 48, 0, 58, 51, 63, 58, 62, 53, + 0, 62, 62, 0, 0, 53, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDetroit131.scd b/sound_algo/palette/melodies/long/mlDetroit131.scd new file mode 100644 index 0000000..0417d6f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDetroit131.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDetroit131 -- long melody (64 steps), genre: detroit +// ===================================================================== +( +~mlDetroit131 = [ + 0, 0, 58, 0, 67, 0, 0, 0, + 62, 62, 67, 62, 69, 72, 0, 51, + 0, 0, 58, 0, 67, 0, 0, 0, + 62, 62, 67, 62, 69, 72, 0, 51, + 0, 62, 53, 0, 63, 58, 62, 48, + 0, 55, 0, 72, 60, 58, 0, 63, + 0, 0, 58, 0, 67, 0, 0, 0, + 62, 62, 67, 62, 69, 72, 0, 51 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb100.scd b/sound_algo/palette/melodies/long/mlDnb100.scd new file mode 100644 index 0000000..ce9a382 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb100 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb100 = [ + 0, 0, 0, 40, 55, 0, 0, 0, + 0, 67, 0, 67, 0, 0, 0, 62, + 0, 0, 0, 40, 55, 0, 0, 0, + 0, 67, 0, 67, 0, 0, 0, 62, + 52, 0, 0, 72, 43, 0, 0, 0, + 0, 0, 36, 67, 43, 0, 45, 50, + 0, 0, 0, 40, 55, 0, 0, 0, + 0, 67, 0, 67, 0, 0, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb101.scd b/sound_algo/palette/melodies/long/mlDnb101.scd new file mode 100644 index 0000000..2091e08 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb101 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb101 = [ + 0, 59, 66, 0, 57, 48, 36, 54, + 0, 0, 0, 40, 0, 0, 50, 48, + 62, 45, 42, 55, 47, 0, 0, 42, + 0, 0, 0, 0, 0, 0, 57, 62, + 0, 67, 55, 0, 57, 67, 0, 0, + 0, 64, 40, 72, 36, 0, 69, 71, + 0, 50, 0, 43, 59, 42, 54, 71, + 0, 0, 45, 0, 47, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb102.scd b/sound_algo/palette/melodies/long/mlDnb102.scd new file mode 100644 index 0000000..eb7e286 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb102 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb102 = [ + 55, 54, 42, 0, 55, 54, 0, 0, + 52, 71, 55, 42, 0, 71, 0, 57, + 55, 54, 42, 0, 55, 54, 0, 0, + 52, 71, 55, 42, 0, 71, 0, 57, + 0, 64, 0, 0, 0, 47, 47, 47, + 0, 55, 0, 0, 52, 47, 0, 64, + 55, 54, 42, 0, 55, 54, 0, 0, + 52, 71, 55, 42, 0, 71, 0, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb103.scd b/sound_algo/palette/melodies/long/mlDnb103.scd new file mode 100644 index 0000000..caf91c4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb103 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb103 = [ + 62, 55, 50, 43, 0, 0, 0, 0, + 0, 0, 38, 0, 0, 43, 0, 58, + 62, 55, 50, 43, 0, 0, 0, 0, + 0, 0, 38, 0, 0, 43, 0, 58, + 41, 67, 0, 55, 0, 60, 0, 65, + 0, 0, 0, 51, 55, 45, 63, 62, + 62, 55, 50, 43, 0, 0, 0, 0, + 0, 0, 38, 0, 0, 43, 0, 58 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb104.scd b/sound_algo/palette/melodies/long/mlDnb104.scd new file mode 100644 index 0000000..6b65104 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb104 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb104 = [ + 58, 55, 0, 0, 39, 53, 51, 0, + 0, 0, 58, 70, 67, 65, 50, 0, + 45, 38, 0, 43, 0, 0, 45, 41, + 0, 50, 51, 0, 0, 41, 0, 51, + 57, 55, 46, 43, 38, 41, 51, 51, + 67, 0, 72, 55, 43, 0, 0, 0, + 58, 51, 57, 0, 0, 0, 0, 60, + 0, 72, 0, 0, 58, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb105.scd b/sound_algo/palette/melodies/long/mlDnb105.scd new file mode 100644 index 0000000..2c0cabc --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb105 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb105 = [ + 0, 46, 0, 0, 0, 0, 0, 0, + 58, 0, 41, 62, 0, 0, 0, 55, + 0, 0, 43, 65, 50, 39, 57, 0, + 0, 0, 51, 0, 67, 69, 0, 0, + 0, 0, 0, 62, 0, 0, 38, 0, + 0, 55, 0, 0, 46, 45, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 0, 70, 0, 0, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb106.scd b/sound_algo/palette/melodies/long/mlDnb106.scd new file mode 100644 index 0000000..2628912 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb106 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb106 = [ + 0, 0, 0, 0, 50, 0, 0, 58, + 0, 65, 0, 0, 0, 65, 0, 63, + 0, 0, 0, 0, 50, 0, 0, 58, + 0, 65, 0, 0, 0, 65, 0, 63, + 0, 0, 46, 0, 70, 72, 0, 0, + 0, 0, 0, 0, 0, 0, 51, 0, + 0, 0, 0, 0, 50, 0, 0, 58, + 0, 65, 0, 0, 0, 65, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb107.scd b/sound_algo/palette/melodies/long/mlDnb107.scd new file mode 100644 index 0000000..19fe07c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb107 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb107 = [ + 50, 51, 43, 0, 55, 58, 67, 60, + 38, 0, 0, 50, 62, 48, 55, 67, + 50, 51, 43, 0, 55, 58, 67, 60, + 38, 0, 0, 50, 62, 48, 55, 67, + 0, 67, 57, 0, 58, 45, 55, 60, + 62, 0, 67, 53, 43, 0, 0, 45, + 50, 51, 43, 0, 55, 58, 67, 60, + 38, 0, 0, 50, 62, 48, 55, 67 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb108.scd b/sound_algo/palette/melodies/long/mlDnb108.scd new file mode 100644 index 0000000..1091e39 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb108 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb108 = [ + 59, 67, 47, 0, 43, 62, 50, 64, + 0, 48, 0, 66, 0, 50, 50, 0, + 59, 67, 47, 0, 43, 62, 50, 64, + 0, 48, 0, 66, 0, 50, 50, 0, + 64, 0, 0, 0, 40, 0, 62, 0, + 59, 0, 0, 47, 45, 60, 0, 0, + 59, 67, 47, 0, 43, 62, 50, 64, + 0, 48, 0, 66, 0, 50, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb109.scd b/sound_algo/palette/melodies/long/mlDnb109.scd new file mode 100644 index 0000000..8f07523 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb109 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb109 = [ + 39, 51, 0, 0, 43, 0, 50, 60, + 57, 57, 62, 72, 55, 0, 0, 48, + 70, 72, 63, 46, 43, 70, 0, 0, + 70, 36, 55, 48, 46, 55, 46, 0, + 0, 62, 0, 0, 0, 48, 39, 72, + 51, 45, 67, 45, 0, 0, 0, 0, + 0, 0, 45, 58, 0, 48, 0, 0, + 0, 0, 0, 43, 0, 62, 63, 69 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb110.scd b/sound_algo/palette/melodies/long/mlDnb110.scd new file mode 100644 index 0000000..e5dac32 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb110 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb110 = [ + 0, 64, 0, 66, 40, 0, 45, 50, + 0, 43, 55, 0, 47, 0, 0, 45, + 0, 54, 0, 54, 52, 0, 60, 42, + 54, 0, 0, 0, 47, 0, 67, 0, + 0, 67, 36, 0, 0, 0, 43, 0, + 62, 72, 40, 43, 0, 47, 0, 40, + 54, 0, 0, 0, 0, 72, 0, 40, + 0, 59, 0, 69, 0, 0, 69, 59 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDnb111.scd b/sound_algo/palette/melodies/long/mlDnb111.scd new file mode 100644 index 0000000..fd2dc3c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDnb111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDnb111 -- long melody (64 steps), genre: dnb +// ===================================================================== +( +~mlDnb111 = [ + 55, 0, 0, 0, 0, 0, 72, 50, + 43, 41, 0, 46, 55, 0, 45, 45, + 0, 70, 67, 0, 38, 0, 46, 53, + 67, 0, 65, 63, 0, 62, 51, 53, + 62, 0, 0, 0, 0, 60, 0, 0, + 0, 0, 0, 46, 0, 70, 55, 0, + 0, 70, 0, 0, 67, 0, 43, 0, + 70, 70, 0, 0, 38, 63, 0, 41 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDrone100.scd b/sound_algo/palette/melodies/long/mlDrone100.scd new file mode 100644 index 0000000..d3c9689 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDrone100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDrone100 -- long melody (64 steps), genre: drone +// ===================================================================== +( +~mlDrone100 = [ + 0, 0, 24, 0, 0, 0, 0, 41, + 0, 0, 0, 0, 0, 48, 0, 0, + 0, 0, 0, 39, 0, 0, 0, 0, + 0, 48, 0, 0, 0, 0, 0, 0, + 0, 39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 39, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 32, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDrone101.scd b/sound_algo/palette/melodies/long/mlDrone101.scd new file mode 100644 index 0000000..45d11e7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDrone101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDrone101 -- long melody (64 steps), genre: drone +// ===================================================================== +( +~mlDrone101 = [ + 0, 39, 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 36, 0, 0, 0, + 0, 39, 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 0, 24, 0, 0, + 0, 0, 36, 34, 0, 0, 0, 0, + 0, 39, 0, 0, 0, 0, 24, 0, + 0, 0, 0, 0, 36, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDrone102.scd b/sound_algo/palette/melodies/long/mlDrone102.scd new file mode 100644 index 0000000..4978eb0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDrone102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDrone102 -- long melody (64 steps), genre: drone +// ===================================================================== +( +~mlDrone102 = [ + 0, 0, 0, 0, 44, 0, 0, 39, + 0, 0, 0, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 48, 48, 32, + 0, 0, 0, 48, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 41, 0, 0, + 0, 0, 0, 0, 44, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDrone103.scd b/sound_algo/palette/melodies/long/mlDrone103.scd new file mode 100644 index 0000000..2fc1b38 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDrone103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDrone103 -- long melody (64 steps), genre: drone +// ===================================================================== +( +~mlDrone103 = [ + 0, 0, 0, 0, 0, 39, 0, 0, + 0, 24, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 36, + 0, 34, 0, 24, 0, 39, 0, 0, + 0, 0, 0, 41, 0, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 0, + 48, 0, 0, 36, 44, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDrone104.scd b/sound_algo/palette/melodies/long/mlDrone104.scd new file mode 100644 index 0000000..b477eb7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDrone104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDrone104 -- long melody (64 steps), genre: drone +// ===================================================================== +( +~mlDrone104 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 43, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 43, + 0, 0, 0, 0, 0, 46, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 43 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDrone105.scd b/sound_algo/palette/melodies/long/mlDrone105.scd new file mode 100644 index 0000000..eed4f38 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDrone105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDrone105 -- long melody (64 steps), genre: drone +// ===================================================================== +( +~mlDrone105 = [ + 0, 0, 0, 0, 0, 0, 39, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 39, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 43, 0, 0, 0, 0, 0, 48, 39, + 0, 0, 0, 46, 0, 0, 41, 0, + 0, 0, 0, 0, 0, 0, 39, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDrone106.scd b/sound_algo/palette/melodies/long/mlDrone106.scd new file mode 100644 index 0000000..17bf239 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDrone106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDrone106 -- long melody (64 steps), genre: drone +// ===================================================================== +( +~mlDrone106 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 36, 0, 0, 0, + 48, 0, 0, 0, 0, 0, 0, 36, + 0, 0, 41, 0, 0, 34, 0, 0, + 0, 0, 36, 0, 0, 0, 0, 0, + 0, 0, 48, 24, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDrone107.scd b/sound_algo/palette/melodies/long/mlDrone107.scd new file mode 100644 index 0000000..880bb1c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDrone107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDrone107 -- long melody (64 steps), genre: drone +// ===================================================================== +( +~mlDrone107 = [ + 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 39, 0, 0, 27, 0, + 0, 0, 0, 0, 36, 0, 0, 39, + 0, 0, 0, 48, 44, 0, 0, 32, + 0, 0, 44, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 46, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDub100.scd b/sound_algo/palette/melodies/long/mlDub100.scd new file mode 100644 index 0000000..75e3302 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDub100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDub100 -- long melody (64 steps), genre: dub +// ===================================================================== +( +~mlDub100 = [ + 36, 0, 0, 0, 53, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 53, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 36, 0, 0, 0, + 36, 0, 0, 0, 46, 0, 0, 0, + 36, 0, 0, 0, 53, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDub101.scd b/sound_algo/palette/melodies/long/mlDub101.scd new file mode 100644 index 0000000..5ae758f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDub101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDub101 -- long melody (64 steps), genre: dub +// ===================================================================== +( +~mlDub101 = [ + 40, 0, 0, 0, 50, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 50, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 43, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 50, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDub102.scd b/sound_algo/palette/melodies/long/mlDub102.scd new file mode 100644 index 0000000..acc5074 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDub102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDub102 -- long melody (64 steps), genre: dub +// ===================================================================== +( +~mlDub102 = [ + 40, 0, 0, 0, 57, 0, 0, 0, + 40, 0, 0, 0, 55, 0, 0, 0, + 40, 0, 0, 0, 57, 0, 0, 0, + 40, 0, 0, 0, 55, 0, 0, 0, + 40, 0, 0, 0, 50, 0, 0, 0, + 40, 0, 0, 0, 57, 0, 0, 0, + 40, 0, 0, 0, 57, 0, 0, 0, + 40, 0, 0, 0, 55, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDub103.scd b/sound_algo/palette/melodies/long/mlDub103.scd new file mode 100644 index 0000000..3d58801 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDub103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDub103 -- long melody (64 steps), genre: dub +// ===================================================================== +( +~mlDub103 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 59, 0, 0, 0, + 40, 0, 0, 0, 52, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 40, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 57, 0, 0, 0, + 40, 0, 0, 0, 40, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDub104.scd b/sound_algo/palette/melodies/long/mlDub104.scd new file mode 100644 index 0000000..bc355a9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDub104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDub104 -- long melody (64 steps), genre: dub +// ===================================================================== +( +~mlDub104 = [ + 40, 0, 0, 0, 50, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 43, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDub105.scd b/sound_algo/palette/melodies/long/mlDub105.scd new file mode 100644 index 0000000..e3f37ba --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDub105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDub105 -- long melody (64 steps), genre: dub +// ===================================================================== +( +~mlDub105 = [ + 36, 0, 0, 0, 48, 0, 0, 0, + 36, 0, 0, 0, 60, 0, 0, 0, + 36, 0, 0, 0, 60, 0, 0, 0, + 36, 0, 0, 0, 48, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 41, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDub106.scd b/sound_algo/palette/melodies/long/mlDub106.scd new file mode 100644 index 0000000..7a96d92 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDub106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDub106 -- long melody (64 steps), genre: dub +// ===================================================================== +( +~mlDub106 = [ + 40, 0, 0, 0, 47, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 52, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlDub107.scd b/sound_algo/palette/melodies/long/mlDub107.scd new file mode 100644 index 0000000..9502670 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlDub107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlDub107 -- long melody (64 steps), genre: dub +// ===================================================================== +( +~mlDub107 = [ + 36, 0, 0, 0, 60, 0, 0, 0, + 36, 0, 0, 0, 60, 0, 0, 0, + 36, 0, 0, 0, 60, 0, 0, 0, + 36, 0, 0, 0, 60, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 60, 0, 0, 0, + 36, 0, 0, 0, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore100.scd b/sound_algo/palette/melodies/long/mlHardcore100.scd new file mode 100644 index 0000000..fae067e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore100 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore100 = [ + 51, 47, 37, 54, 53, 0, 56, 49, + 42, 56, 37, 46, 58, 44, 51, 42, + 51, 47, 37, 54, 53, 0, 56, 49, + 42, 56, 37, 46, 58, 44, 51, 42, + 37, 54, 53, 49, 44, 0, 58, 39, + 53, 58, 54, 39, 53, 42, 54, 53, + 51, 47, 37, 54, 53, 0, 56, 49, + 42, 56, 37, 46, 58, 44, 51, 42 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore101.scd b/sound_algo/palette/melodies/long/mlHardcore101.scd new file mode 100644 index 0000000..c48bda5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore101 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore101 = [ + 57, 40, 51, 37, 52, 36, 0, 47, + 47, 54, 38, 59, 56, 38, 40, 0, + 57, 40, 51, 37, 52, 36, 0, 47, + 47, 54, 38, 59, 56, 38, 40, 0, + 59, 59, 37, 41, 59, 42, 58, 46, + 55, 42, 39, 50, 59, 46, 39, 50, + 57, 40, 51, 37, 52, 36, 0, 47, + 47, 54, 38, 59, 56, 38, 40, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore102.scd b/sound_algo/palette/melodies/long/mlHardcore102.scd new file mode 100644 index 0000000..35c3c17 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore102 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore102 = [ + 57, 59, 41, 53, 60, 0, 40, 47, + 45, 0, 44, 54, 58, 0, 59, 42, + 57, 59, 41, 53, 60, 0, 40, 47, + 45, 0, 44, 54, 58, 0, 59, 42, + 45, 43, 38, 41, 59, 55, 57, 52, + 36, 42, 38, 42, 0, 37, 46, 0, + 57, 59, 41, 53, 60, 0, 40, 47, + 45, 0, 44, 54, 58, 0, 59, 42 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore103.scd b/sound_algo/palette/melodies/long/mlHardcore103.scd new file mode 100644 index 0000000..786f61e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore103 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore103 = [ + 56, 44, 39, 51, 37, 49, 58, 42, + 39, 37, 59, 58, 56, 58, 56, 56, + 56, 44, 39, 51, 37, 49, 58, 42, + 39, 37, 59, 58, 56, 58, 56, 56, + 44, 44, 42, 46, 58, 54, 42, 41, + 53, 59, 47, 51, 56, 44, 41, 47, + 56, 44, 39, 51, 37, 49, 58, 42, + 39, 37, 59, 58, 56, 58, 56, 56 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore104.scd b/sound_algo/palette/melodies/long/mlHardcore104.scd new file mode 100644 index 0000000..989f861 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore104 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore104 = [ + 41, 0, 39, 44, 42, 46, 47, 56, + 46, 37, 37, 37, 41, 47, 46, 46, + 41, 0, 39, 44, 42, 46, 47, 56, + 46, 37, 37, 37, 41, 47, 46, 46, + 41, 41, 49, 47, 0, 49, 54, 39, + 41, 39, 41, 51, 41, 0, 59, 44, + 41, 0, 39, 44, 42, 46, 47, 56, + 46, 37, 37, 37, 41, 47, 46, 46 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore105.scd b/sound_algo/palette/melodies/long/mlHardcore105.scd new file mode 100644 index 0000000..1cdfc39 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore105 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore105 = [ + 43, 53, 57, 45, 40, 57, 55, 50, + 58, 58, 43, 38, 43, 58, 46, 57, + 43, 53, 57, 45, 40, 57, 55, 50, + 58, 58, 43, 38, 43, 58, 46, 57, + 52, 58, 45, 53, 52, 46, 36, 38, + 40, 36, 40, 40, 45, 60, 52, 57, + 43, 53, 57, 45, 40, 57, 55, 50, + 58, 58, 43, 38, 43, 58, 46, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore106.scd b/sound_algo/palette/melodies/long/mlHardcore106.scd new file mode 100644 index 0000000..5e93b61 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore106 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore106 = [ + 43, 41, 55, 40, 50, 41, 53, 41, + 38, 52, 40, 43, 43, 58, 43, 48, + 43, 41, 55, 40, 50, 41, 53, 41, + 38, 52, 40, 43, 43, 58, 43, 48, + 40, 40, 48, 45, 55, 43, 52, 38, + 43, 52, 50, 46, 45, 40, 36, 60, + 43, 41, 55, 40, 50, 41, 53, 41, + 38, 52, 40, 43, 43, 58, 43, 48 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore107.scd b/sound_algo/palette/melodies/long/mlHardcore107.scd new file mode 100644 index 0000000..4834915 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore107 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore107 = [ + 41, 47, 49, 39, 53, 0, 46, 46, + 41, 54, 39, 44, 59, 37, 47, 51, + 41, 47, 49, 39, 53, 0, 46, 46, + 41, 54, 39, 44, 59, 37, 47, 51, + 44, 0, 53, 51, 53, 39, 41, 54, + 0, 54, 53, 47, 56, 0, 39, 41, + 41, 47, 49, 39, 53, 0, 46, 46, + 41, 54, 39, 44, 59, 37, 47, 51 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore108.scd b/sound_algo/palette/melodies/long/mlHardcore108.scd new file mode 100644 index 0000000..583831c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore108 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore108 = [ + 48, 56, 41, 39, 49, 57, 46, 0, + 53, 56, 41, 57, 45, 47, 39, 57, + 48, 56, 41, 39, 49, 57, 46, 0, + 53, 56, 41, 57, 45, 47, 39, 57, + 48, 39, 45, 52, 57, 44, 60, 49, + 0, 49, 36, 48, 57, 44, 51, 55, + 48, 56, 41, 39, 49, 57, 46, 0, + 53, 56, 41, 57, 45, 47, 39, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore109.scd b/sound_algo/palette/melodies/long/mlHardcore109.scd new file mode 100644 index 0000000..0fd8659 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore109 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore109 = [ + 44, 42, 60, 52, 45, 49, 59, 48, + 41, 39, 47, 42, 41, 41, 39, 40, + 59, 43, 56, 55, 36, 39, 39, 54, + 39, 37, 57, 41, 44, 39, 51, 45, + 36, 45, 58, 46, 53, 58, 51, 51, + 51, 53, 47, 37, 57, 51, 45, 51, + 36, 57, 45, 41, 45, 53, 45, 39, + 53, 52, 41, 46, 45, 57, 42, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore110.scd b/sound_algo/palette/melodies/long/mlHardcore110.scd new file mode 100644 index 0000000..834695b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore110 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore110 = [ + 40, 42, 50, 50, 0, 48, 36, 48, + 52, 56, 49, 59, 54, 46, 48, 44, + 52, 43, 47, 56, 47, 41, 0, 40, + 38, 57, 41, 37, 51, 37, 47, 37, + 52, 39, 42, 45, 60, 48, 48, 57, + 44, 0, 45, 51, 56, 0, 40, 59, + 38, 59, 52, 0, 52, 54, 0, 47, + 55, 50, 53, 41, 47, 41, 44, 52 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore111.scd b/sound_algo/palette/melodies/long/mlHardcore111.scd new file mode 100644 index 0000000..872f5e8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore111 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore111 = [ + 44, 47, 56, 55, 40, 36, 47, 57, + 0, 55, 53, 60, 44, 49, 48, 56, + 44, 47, 56, 55, 40, 36, 47, 57, + 0, 55, 53, 60, 44, 49, 48, 56, + 47, 50, 43, 45, 52, 49, 38, 41, + 44, 54, 39, 41, 47, 59, 51, 48, + 44, 47, 56, 55, 40, 36, 47, 57, + 0, 55, 53, 60, 44, 49, 48, 56 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore112.scd b/sound_algo/palette/melodies/long/mlHardcore112.scd new file mode 100644 index 0000000..b858a17 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore112 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore112 = [ + 59, 40, 42, 57, 52, 52, 36, 54, + 48, 42, 41, 54, 59, 54, 44, 46, + 55, 53, 56, 44, 42, 60, 47, 44, + 56, 59, 41, 39, 59, 53, 60, 56, + 58, 54, 46, 42, 57, 53, 39, 47, + 44, 36, 49, 44, 55, 37, 39, 40, + 52, 48, 54, 53, 53, 59, 50, 55, + 56, 45, 38, 55, 56, 0, 54, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore113.scd b/sound_algo/palette/melodies/long/mlHardcore113.scd new file mode 100644 index 0000000..c124b0f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore113 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore113 = [ + 52, 55, 50, 43, 55, 36, 45, 57, + 43, 58, 57, 57, 0, 58, 41, 48, + 52, 55, 50, 43, 55, 36, 45, 57, + 43, 58, 57, 57, 0, 58, 41, 48, + 58, 45, 41, 58, 55, 53, 40, 38, + 38, 58, 38, 38, 55, 46, 36, 60, + 52, 55, 50, 43, 55, 36, 45, 57, + 43, 58, 57, 57, 0, 58, 41, 48 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore114.scd b/sound_algo/palette/melodies/long/mlHardcore114.scd new file mode 100644 index 0000000..41bce17 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore114 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore114 = [ + 44, 58, 55, 57, 40, 45, 56, 45, + 43, 49, 53, 52, 38, 53, 41, 57, + 44, 58, 55, 57, 40, 45, 56, 45, + 43, 49, 53, 52, 38, 53, 41, 57, + 41, 54, 37, 0, 44, 55, 60, 0, + 49, 47, 58, 53, 52, 58, 53, 58, + 44, 58, 55, 57, 40, 45, 56, 45, + 43, 49, 53, 52, 38, 53, 41, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHardcore115.scd b/sound_algo/palette/melodies/long/mlHardcore115.scd new file mode 100644 index 0000000..280f79e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHardcore115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHardcore115 -- long melody (64 steps), genre: hardcore +// ===================================================================== +( +~mlHardcore115 = [ + 52, 50, 54, 52, 49, 38, 53, 47, + 56, 50, 41, 39, 49, 52, 59, 43, + 59, 45, 52, 54, 47, 37, 60, 49, + 53, 54, 40, 48, 56, 57, 40, 57, + 43, 54, 51, 57, 55, 50, 39, 36, + 55, 45, 43, 51, 44, 37, 39, 44, + 53, 54, 48, 38, 44, 38, 58, 47, + 47, 40, 57, 38, 58, 60, 43, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic100.scd b/sound_algo/palette/melodies/long/mlHypnotic100.scd new file mode 100644 index 0000000..a105460 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic100 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic100 = [ + 63, 72, 0, 63, 0, 72, 65, 0, + 0, 72, 72, 0, 0, 0, 0, 70, + 0, 72, 0, 70, 0, 70, 0, 70, + 0, 0, 0, 70, 0, 0, 0, 70, + 0, 72, 0, 70, 67, 70, 0, 70, + 0, 63, 0, 70, 0, 72, 0, 70, + 0, 72, 0, 0, 0, 72, 0, 70, + 0, 72, 0, 70, 0, 67, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic101.scd b/sound_algo/palette/melodies/long/mlHypnotic101.scd new file mode 100644 index 0000000..83643c1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic101 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic101 = [ + 0, 70, 0, 60, 0, 70, 0, 60, + 0, 70, 0, 60, 0, 70, 0, 60, + 0, 70, 0, 60, 0, 70, 0, 60, + 0, 70, 0, 60, 0, 70, 0, 60, + 0, 65, 0, 60, 0, 70, 0, 63, + 0, 70, 0, 60, 0, 0, 65, 60, + 0, 70, 0, 60, 0, 70, 0, 60, + 0, 70, 0, 60, 0, 70, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic102.scd b/sound_algo/palette/melodies/long/mlHypnotic102.scd new file mode 100644 index 0000000..5ae7abf --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic102 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic102 = [ + 0, 0, 63, 70, 0, 70, 0, 0, + 0, 70, 63, 0, 0, 70, 63, 0, + 0, 70, 63, 0, 63, 70, 63, 0, + 0, 70, 63, 0, 0, 70, 63, 0, + 0, 70, 63, 0, 0, 70, 63, 0, + 0, 70, 63, 0, 0, 65, 0, 0, + 0, 0, 60, 0, 0, 70, 63, 0, + 0, 70, 63, 0, 0, 72, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic103.scd b/sound_algo/palette/melodies/long/mlHypnotic103.scd new file mode 100644 index 0000000..6592e5f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic103 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic103 = [ + 0, 0, 0, 72, 0, 0, 0, 72, + 0, 0, 0, 72, 0, 65, 0, 72, + 0, 0, 63, 72, 65, 0, 0, 72, + 0, 72, 0, 72, 0, 0, 0, 72, + 0, 0, 0, 72, 0, 0, 0, 72, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 72, 0, 0, 0, 72, + 0, 0, 67, 72, 63, 0, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic104.scd b/sound_algo/palette/melodies/long/mlHypnotic104.scd new file mode 100644 index 0000000..85f0e68 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic104 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic104 = [ + 0, 0, 67, 0, 0, 0, 67, 60, + 0, 0, 67, 0, 0, 0, 67, 60, + 0, 63, 63, 60, 0, 0, 67, 60, + 0, 0, 63, 60, 0, 0, 67, 60, + 0, 0, 0, 65, 0, 0, 67, 0, + 0, 0, 67, 60, 0, 0, 67, 0, + 0, 0, 67, 60, 0, 0, 0, 60, + 0, 0, 0, 60, 0, 0, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic105.scd b/sound_algo/palette/melodies/long/mlHypnotic105.scd new file mode 100644 index 0000000..09d4d24 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic105 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic105 = [ + 0, 67, 70, 70, 0, 67, 63, 70, + 72, 67, 70, 0, 0, 0, 0, 0, + 0, 67, 70, 70, 0, 67, 63, 70, + 72, 67, 70, 0, 0, 0, 0, 0, + 0, 0, 72, 70, 0, 65, 70, 70, + 0, 67, 70, 70, 0, 0, 70, 70, + 0, 67, 70, 70, 0, 67, 63, 70, + 72, 67, 70, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic106.scd b/sound_algo/palette/melodies/long/mlHypnotic106.scd new file mode 100644 index 0000000..3a71fc1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic106 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic106 = [ + 65, 0, 0, 0, 65, 0, 0, 0, + 0, 0, 0, 0, 65, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 0, 0, + 0, 0, 0, 0, 65, 0, 0, 0, + 65, 0, 0, 0, 72, 0, 0, 0, + 65, 0, 0, 60, 65, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 0, 0, + 0, 0, 0, 0, 65, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic107.scd b/sound_algo/palette/melodies/long/mlHypnotic107.scd new file mode 100644 index 0000000..9a9a441 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic107 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic107 = [ + 63, 65, 67, 0, 0, 65, 67, 0, + 0, 65, 67, 0, 0, 0, 0, 0, + 0, 65, 67, 0, 0, 65, 67, 0, + 0, 65, 0, 0, 0, 0, 0, 0, + 0, 65, 67, 0, 0, 65, 67, 0, + 0, 65, 67, 63, 0, 63, 67, 0, + 0, 72, 67, 60, 63, 65, 67, 0, + 0, 63, 67, 0, 0, 65, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic108.scd b/sound_algo/palette/melodies/long/mlHypnotic108.scd new file mode 100644 index 0000000..bf6b941 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic108 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic108 = [ + 0, 0, 70, 65, 0, 0, 70, 65, + 0, 0, 70, 0, 0, 0, 70, 65, + 0, 0, 70, 65, 0, 0, 70, 65, + 0, 0, 70, 65, 0, 0, 70, 0, + 0, 0, 70, 70, 0, 0, 70, 67, + 0, 0, 70, 0, 0, 0, 70, 65, + 0, 0, 70, 65, 0, 0, 60, 0, + 0, 0, 0, 65, 0, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic109.scd b/sound_algo/palette/melodies/long/mlHypnotic109.scd new file mode 100644 index 0000000..2c1e3e9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic109 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic109 = [ + 63, 0, 0, 72, 63, 0, 65, 72, + 67, 0, 60, 72, 0, 0, 0, 72, + 63, 0, 0, 0, 63, 0, 72, 72, + 63, 0, 72, 0, 63, 0, 63, 72, + 63, 0, 0, 0, 63, 0, 0, 72, + 63, 67, 0, 72, 63, 0, 60, 72, + 63, 0, 0, 0, 63, 0, 0, 72, + 63, 0, 0, 70, 0, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic110.scd b/sound_algo/palette/melodies/long/mlHypnotic110.scd new file mode 100644 index 0000000..36fc737 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic110 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic110 = [ + 72, 72, 0, 63, 72, 63, 0, 60, + 0, 72, 0, 67, 65, 72, 0, 60, + 72, 72, 0, 63, 72, 63, 0, 60, + 0, 72, 0, 67, 65, 72, 0, 60, + 67, 72, 0, 60, 72, 0, 0, 60, + 0, 72, 0, 60, 72, 72, 0, 60, + 72, 72, 0, 63, 72, 63, 0, 60, + 0, 72, 0, 67, 65, 72, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic111.scd b/sound_algo/palette/melodies/long/mlHypnotic111.scd new file mode 100644 index 0000000..3923c23 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic111 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic111 = [ + 0, 65, 0, 67, 63, 70, 65, 67, + 0, 65, 65, 67, 60, 65, 65, 67, + 0, 65, 0, 67, 63, 70, 65, 67, + 0, 65, 65, 67, 60, 65, 65, 67, + 0, 65, 0, 0, 0, 65, 0, 67, + 0, 0, 65, 0, 0, 65, 65, 67, + 0, 65, 0, 67, 63, 70, 65, 67, + 0, 65, 65, 67, 60, 65, 65, 67 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic112.scd b/sound_algo/palette/melodies/long/mlHypnotic112.scd new file mode 100644 index 0000000..d84bfe4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic112 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic112 = [ + 65, 63, 0, 0, 65, 63, 72, 65, + 65, 0, 72, 72, 65, 63, 72, 65, + 65, 63, 0, 0, 65, 63, 72, 65, + 65, 0, 72, 72, 65, 63, 72, 65, + 65, 67, 72, 63, 65, 63, 72, 65, + 65, 70, 0, 65, 65, 0, 72, 65, + 65, 63, 0, 0, 65, 63, 72, 65, + 65, 0, 72, 72, 65, 63, 72, 65 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic113.scd b/sound_algo/palette/melodies/long/mlHypnotic113.scd new file mode 100644 index 0000000..79e8271 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic113 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic113 = [ + 0, 0, 60, 0, 0, 0, 67, 0, + 63, 0, 65, 60, 0, 0, 65, 65, + 0, 0, 65, 0, 67, 0, 65, 0, + 0, 0, 0, 0, 0, 0, 65, 0, + 0, 0, 65, 70, 0, 0, 0, 0, + 0, 0, 65, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 60, 0, + 0, 0, 65, 0, 0, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic114.scd b/sound_algo/palette/melodies/long/mlHypnotic114.scd new file mode 100644 index 0000000..f7ee9b1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic114 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic114 = [ + 0, 0, 0, 0, 0, 0, 0, 72, + 0, 0, 0, 0, 0, 0, 0, 72, + 0, 0, 0, 72, 70, 0, 0, 0, + 0, 0, 0, 60, 67, 0, 0, 72, + 0, 0, 0, 72, 0, 0, 0, 72, + 0, 0, 72, 72, 0, 0, 67, 63, + 0, 0, 0, 0, 0, 0, 0, 72, + 0, 0, 0, 70, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic115.scd b/sound_algo/palette/melodies/long/mlHypnotic115.scd new file mode 100644 index 0000000..f137b78 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic115 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic115 = [ + 0, 60, 67, 0, 0, 60, 67, 0, + 0, 0, 67, 0, 0, 0, 0, 0, + 0, 60, 67, 0, 0, 60, 67, 0, + 0, 0, 67, 0, 0, 0, 0, 0, + 0, 67, 67, 0, 0, 60, 67, 0, + 0, 60, 0, 72, 0, 60, 67, 0, + 0, 60, 67, 0, 0, 60, 67, 0, + 0, 0, 67, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic116.scd b/sound_algo/palette/melodies/long/mlHypnotic116.scd new file mode 100644 index 0000000..97b3e3b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic116 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic116 = [ + 0, 0, 0, 72, 0, 0, 0, 70, + 0, 0, 0, 70, 0, 0, 0, 70, + 0, 0, 0, 72, 0, 0, 0, 70, + 0, 0, 0, 70, 0, 0, 0, 70, + 0, 0, 0, 70, 0, 0, 0, 70, + 0, 0, 72, 70, 0, 0, 0, 70, + 0, 0, 0, 72, 0, 0, 0, 70, + 0, 0, 0, 70, 0, 0, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic117.scd b/sound_algo/palette/melodies/long/mlHypnotic117.scd new file mode 100644 index 0000000..0f222af --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic117 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic117 = [ + 72, 67, 0, 0, 72, 67, 72, 0, + 72, 67, 65, 65, 0, 0, 0, 0, + 72, 67, 65, 0, 72, 60, 65, 0, + 72, 67, 65, 0, 72, 67, 65, 0, + 0, 67, 0, 0, 0, 0, 65, 0, + 72, 67, 65, 0, 72, 0, 0, 0, + 70, 0, 65, 0, 72, 0, 65, 0, + 72, 67, 65, 0, 72, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic118.scd b/sound_algo/palette/melodies/long/mlHypnotic118.scd new file mode 100644 index 0000000..4bcdfbf --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic118 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic118 = [ + 72, 65, 67, 65, 0, 65, 0, 65, + 0, 65, 67, 0, 0, 65, 0, 65, + 72, 65, 67, 65, 0, 65, 0, 65, + 0, 65, 67, 0, 0, 65, 0, 65, + 0, 65, 67, 65, 0, 65, 0, 65, + 0, 65, 70, 63, 0, 65, 67, 65, + 72, 65, 67, 65, 0, 65, 0, 65, + 0, 65, 67, 0, 0, 65, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic119.scd b/sound_algo/palette/melodies/long/mlHypnotic119.scd new file mode 100644 index 0000000..17c9ce4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic119 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic119 = [ + 72, 65, 0, 0, 72, 60, 72, 0, + 0, 60, 0, 0, 72, 60, 0, 63, + 72, 65, 0, 0, 72, 60, 72, 0, + 0, 60, 0, 0, 72, 60, 0, 63, + 72, 60, 0, 0, 72, 60, 0, 0, + 72, 60, 0, 0, 72, 0, 72, 0, + 72, 65, 0, 0, 72, 60, 72, 0, + 0, 60, 0, 0, 72, 60, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic120.scd b/sound_algo/palette/melodies/long/mlHypnotic120.scd new file mode 100644 index 0000000..024f4c8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic120 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic120 = [ + 60, 0, 60, 0, 0, 63, 60, 0, + 60, 63, 60, 0, 0, 63, 60, 0, + 60, 0, 60, 0, 0, 63, 60, 0, + 60, 63, 60, 0, 0, 63, 60, 0, + 60, 0, 67, 0, 60, 63, 60, 0, + 0, 0, 0, 70, 60, 63, 60, 0, + 60, 0, 60, 0, 0, 63, 60, 0, + 60, 63, 60, 0, 0, 63, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic121.scd b/sound_algo/palette/melodies/long/mlHypnotic121.scd new file mode 100644 index 0000000..c6783ef --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic121 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic121 = [ + 63, 63, 60, 72, 63, 72, 0, 0, + 63, 63, 60, 0, 63, 63, 60, 0, + 63, 63, 60, 72, 63, 72, 0, 0, + 63, 63, 60, 0, 63, 63, 60, 0, + 63, 63, 60, 0, 67, 63, 60, 0, + 63, 63, 0, 0, 63, 63, 60, 0, + 63, 63, 60, 72, 63, 72, 0, 0, + 63, 63, 60, 0, 63, 63, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic122.scd b/sound_algo/palette/melodies/long/mlHypnotic122.scd new file mode 100644 index 0000000..3849ab5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic122 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic122 = [ + 67, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 0, 67, 65, + 67, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 0, 67, 65, + 67, 0, 0, 0, 67, 0, 0, 0, + 67, 0, 0, 0, 67, 0, 0, 70, + 67, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 0, 67, 65 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic123.scd b/sound_algo/palette/melodies/long/mlHypnotic123.scd new file mode 100644 index 0000000..1de21f7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic123 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic123 = [ + 60, 60, 0, 0, 60, 60, 0, 70, + 60, 60, 0, 70, 60, 60, 0, 70, + 0, 0, 0, 70, 60, 60, 0, 70, + 60, 60, 0, 70, 60, 63, 63, 72, + 60, 60, 67, 70, 60, 60, 0, 70, + 60, 60, 0, 0, 60, 67, 0, 70, + 60, 60, 0, 70, 60, 0, 0, 70, + 60, 60, 0, 70, 72, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic124.scd b/sound_algo/palette/melodies/long/mlHypnotic124.scd new file mode 100644 index 0000000..d9323ba --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic124.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic124 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic124 = [ + 60, 60, 0, 0, 0, 70, 0, 72, + 0, 60, 0, 72, 0, 60, 0, 72, + 60, 60, 0, 0, 0, 70, 0, 72, + 0, 60, 0, 72, 0, 60, 0, 72, + 0, 60, 0, 72, 72, 60, 0, 65, + 0, 60, 0, 72, 0, 0, 0, 72, + 60, 60, 0, 0, 0, 70, 0, 72, + 0, 60, 0, 72, 0, 60, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic125.scd b/sound_algo/palette/melodies/long/mlHypnotic125.scd new file mode 100644 index 0000000..bdda697 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic125.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic125 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic125 = [ + 0, 72, 70, 63, 0, 60, 0, 63, + 0, 72, 0, 63, 0, 72, 0, 63, + 0, 72, 0, 63, 0, 72, 0, 63, + 0, 72, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 70, 0, 63, + 0, 72, 65, 63, 0, 72, 65, 63, + 0, 72, 0, 70, 0, 72, 0, 63, + 63, 72, 0, 63, 0, 72, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic126.scd b/sound_algo/palette/melodies/long/mlHypnotic126.scd new file mode 100644 index 0000000..90a3a92 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic126.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic126 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic126 = [ + 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 65, 0, 0, 0, 65, + 0, 0, 0, 65, 0, 0, 0, 65, + 0, 0, 0, 65, 0, 0, 0, 65, + 0, 0, 0, 65, 0, 0, 0, 65, + 0, 67, 0, 0, 0, 60, 0, 65, + 0, 0, 70, 0, 0, 0, 0, 72, + 0, 0, 60, 0, 0, 0, 70, 65 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic127.scd b/sound_algo/palette/melodies/long/mlHypnotic127.scd new file mode 100644 index 0000000..cc3e8d8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic127.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic127 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic127 = [ + 65, 0, 60, 72, 65, 0, 0, 72, + 65, 0, 60, 0, 65, 0, 60, 72, + 65, 0, 60, 72, 65, 0, 60, 72, + 67, 0, 60, 72, 65, 0, 0, 70, + 65, 0, 60, 72, 65, 0, 60, 72, + 65, 0, 0, 72, 0, 0, 60, 72, + 65, 0, 60, 0, 65, 0, 60, 72, + 65, 0, 0, 0, 65, 0, 60, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic128.scd b/sound_algo/palette/melodies/long/mlHypnotic128.scd new file mode 100644 index 0000000..5c11900 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic128.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic128 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic128 = [ + 0, 65, 0, 0, 63, 65, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 65, 0, 0, 63, 65, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 65, 0, 67, 0, 65, 0, 0, + 0, 65, 0, 0, 72, 65, 0, 63, + 0, 65, 0, 0, 63, 65, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic129.scd b/sound_algo/palette/melodies/long/mlHypnotic129.scd new file mode 100644 index 0000000..60f2f02 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic129.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic129 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic129 = [ + 0, 0, 65, 0, 0, 0, 67, 0, + 0, 0, 65, 0, 0, 0, 65, 0, + 0, 0, 65, 0, 0, 0, 67, 0, + 0, 0, 65, 0, 0, 0, 65, 0, + 0, 65, 0, 0, 0, 0, 65, 0, + 0, 0, 65, 0, 0, 0, 65, 0, + 0, 0, 65, 0, 0, 0, 67, 0, + 0, 0, 65, 0, 0, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic130.scd b/sound_algo/palette/melodies/long/mlHypnotic130.scd new file mode 100644 index 0000000..359c38a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic130.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic130 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic130 = [ + 0, 63, 67, 0, 67, 63, 0, 0, + 0, 0, 0, 0, 0, 63, 67, 0, + 0, 63, 67, 0, 0, 63, 67, 0, + 0, 63, 67, 0, 0, 63, 72, 67, + 0, 63, 67, 0, 0, 63, 0, 0, + 0, 63, 0, 0, 0, 63, 67, 0, + 63, 63, 0, 0, 0, 0, 67, 0, + 0, 63, 67, 0, 0, 63, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlHypnotic131.scd b/sound_algo/palette/melodies/long/mlHypnotic131.scd new file mode 100644 index 0000000..72cd60c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlHypnotic131.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlHypnotic131 -- long melody (64 steps), genre: hypnotic +// ===================================================================== +( +~mlHypnotic131 = [ + 0, 63, 0, 0, 63, 65, 0, 0, + 0, 67, 0, 0, 0, 63, 0, 0, + 0, 63, 0, 0, 0, 63, 0, 0, + 0, 63, 0, 0, 0, 0, 0, 0, + 67, 0, 67, 0, 72, 0, 0, 0, + 60, 63, 0, 0, 0, 63, 0, 0, + 67, 63, 0, 0, 72, 67, 0, 0, + 0, 63, 0, 0, 0, 63, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial100.scd b/sound_algo/palette/melodies/long/mlIndustrial100.scd new file mode 100644 index 0000000..e12ca09 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial100 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial100 = [ + 43, 45, 0, 0, 43, 45, 0, 0, + 43, 45, 0, 0, 43, 45, 0, 0, + 43, 45, 0, 0, 43, 45, 0, 0, + 43, 45, 0, 0, 43, 45, 0, 0, + 43, 45, 0, 0, 43, 45, 0, 0, + 43, 45, 0, 0, 43, 45, 0, 0, + 43, 45, 0, 0, 43, 45, 0, 0, + 43, 45, 0, 0, 43, 45, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial101.scd b/sound_algo/palette/melodies/long/mlIndustrial101.scd new file mode 100644 index 0000000..f25af29 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial101 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial101 = [ + 45, 36, 0, 54, 45, 36, 0, 54, + 45, 36, 0, 54, 45, 36, 0, 54, + 45, 36, 0, 54, 45, 36, 0, 54, + 45, 36, 0, 54, 45, 36, 0, 54, + 45, 36, 0, 54, 45, 36, 0, 54, + 45, 36, 0, 54, 45, 36, 0, 54, + 45, 36, 0, 54, 45, 36, 0, 54, + 45, 36, 0, 54, 45, 36, 0, 54 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial102.scd b/sound_algo/palette/melodies/long/mlIndustrial102.scd new file mode 100644 index 0000000..520afb8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial102 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial102 = [ + 46, 0, 43, 39, 46, 0, 43, 39, + 46, 0, 43, 39, 46, 0, 43, 39, + 46, 0, 43, 39, 46, 0, 43, 39, + 46, 0, 43, 39, 46, 0, 43, 39, + 46, 0, 43, 39, 46, 0, 43, 39, + 46, 0, 43, 39, 46, 0, 43, 39, + 46, 0, 43, 39, 46, 0, 43, 39, + 46, 0, 43, 39, 46, 0, 43, 39 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial103.scd b/sound_algo/palette/melodies/long/mlIndustrial103.scd new file mode 100644 index 0000000..e09043e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial103 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial103 = [ + 58, 59, 43, 51, 58, 59, 43, 51, + 58, 59, 43, 51, 58, 59, 43, 51, + 58, 59, 43, 51, 58, 59, 43, 51, + 58, 59, 43, 51, 58, 59, 43, 51, + 58, 59, 43, 51, 58, 59, 43, 51, + 58, 59, 43, 51, 58, 59, 43, 51, + 58, 59, 43, 51, 58, 59, 43, 51, + 58, 59, 43, 51, 58, 59, 43, 51 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial104.scd b/sound_algo/palette/melodies/long/mlIndustrial104.scd new file mode 100644 index 0000000..1236ec1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial104 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial104 = [ + 37, 44, 55, 41, 37, 44, 55, 41, + 37, 44, 55, 41, 37, 44, 55, 41, + 37, 44, 55, 41, 37, 44, 55, 41, + 37, 44, 55, 41, 37, 44, 55, 41, + 37, 44, 55, 41, 37, 44, 55, 41, + 37, 44, 55, 41, 37, 44, 55, 41, + 37, 44, 55, 41, 37, 44, 55, 41, + 37, 44, 55, 41, 37, 44, 55, 41 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial105.scd b/sound_algo/palette/melodies/long/mlIndustrial105.scd new file mode 100644 index 0000000..32c3edc --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial105 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial105 = [ + 0, 47, 42, 0, 0, 47, 42, 0, + 0, 47, 42, 0, 0, 47, 42, 0, + 0, 47, 42, 0, 0, 47, 42, 0, + 0, 47, 42, 0, 0, 47, 42, 0, + 0, 47, 42, 0, 0, 47, 42, 0, + 0, 47, 42, 0, 0, 47, 42, 0, + 0, 47, 42, 0, 0, 47, 42, 0, + 0, 47, 42, 0, 0, 47, 42, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial106.scd b/sound_algo/palette/melodies/long/mlIndustrial106.scd new file mode 100644 index 0000000..643c6b4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial106 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial106 = [ + 0, 52, 52, 0, 0, 52, 52, 0, + 0, 52, 52, 0, 0, 52, 52, 0, + 0, 52, 52, 0, 0, 52, 52, 0, + 0, 52, 52, 0, 0, 52, 52, 0, + 0, 52, 52, 0, 0, 52, 52, 0, + 0, 52, 52, 0, 0, 52, 52, 0, + 0, 52, 52, 0, 0, 52, 52, 0, + 0, 52, 52, 0, 0, 52, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial107.scd b/sound_algo/palette/melodies/long/mlIndustrial107.scd new file mode 100644 index 0000000..328db32 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial107 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial107 = [ + 36, 42, 48, 55, 36, 42, 48, 55, + 36, 42, 48, 55, 36, 42, 48, 55, + 36, 42, 48, 55, 36, 42, 48, 55, + 36, 42, 48, 55, 36, 42, 48, 55, + 36, 42, 48, 55, 36, 42, 48, 55, + 36, 42, 48, 55, 36, 42, 48, 55, + 36, 42, 48, 55, 36, 42, 48, 55, + 36, 42, 48, 55, 36, 42, 48, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial108.scd b/sound_algo/palette/melodies/long/mlIndustrial108.scd new file mode 100644 index 0000000..f2df855 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial108 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial108 = [ + 40, 0, 0, 52, 40, 0, 0, 52, + 40, 0, 0, 52, 40, 0, 0, 52, + 40, 0, 0, 52, 40, 0, 0, 52, + 40, 0, 0, 52, 40, 0, 0, 52, + 40, 0, 0, 52, 40, 0, 0, 52, + 40, 0, 0, 52, 40, 0, 0, 52, + 40, 0, 0, 52, 40, 0, 0, 52, + 40, 0, 0, 52, 40, 0, 0, 52 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial109.scd b/sound_algo/palette/melodies/long/mlIndustrial109.scd new file mode 100644 index 0000000..8dae448 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial109 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial109 = [ + 0, 55, 0, 39, 0, 55, 0, 39, + 0, 55, 0, 39, 0, 55, 0, 39, + 0, 55, 0, 39, 0, 55, 0, 39, + 0, 55, 0, 39, 0, 55, 0, 39, + 0, 55, 0, 39, 0, 55, 0, 39, + 0, 55, 0, 39, 0, 55, 0, 39, + 0, 55, 0, 39, 0, 55, 0, 39, + 0, 55, 0, 39, 0, 55, 0, 39 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial110.scd b/sound_algo/palette/melodies/long/mlIndustrial110.scd new file mode 100644 index 0000000..2a0972d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial110 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial110 = [ + 40, 39, 47, 37, 40, 39, 47, 37, + 40, 39, 47, 37, 40, 39, 47, 37, + 40, 39, 47, 37, 40, 39, 47, 37, + 40, 39, 47, 37, 40, 39, 47, 37, + 40, 39, 47, 37, 40, 39, 47, 37, + 40, 39, 47, 37, 40, 39, 47, 37, + 40, 39, 47, 37, 40, 39, 47, 37, + 40, 39, 47, 37, 40, 39, 47, 37 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial111.scd b/sound_algo/palette/melodies/long/mlIndustrial111.scd new file mode 100644 index 0000000..ea6aca7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial111 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial111 = [ + 41, 53, 0, 36, 41, 53, 0, 36, + 41, 53, 0, 36, 41, 53, 0, 36, + 41, 53, 0, 36, 41, 53, 0, 36, + 41, 53, 0, 36, 41, 53, 0, 36, + 41, 53, 0, 36, 41, 53, 0, 36, + 41, 53, 0, 36, 41, 53, 0, 36, + 41, 53, 0, 36, 41, 53, 0, 36, + 41, 53, 0, 36, 41, 53, 0, 36 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial112.scd b/sound_algo/palette/melodies/long/mlIndustrial112.scd new file mode 100644 index 0000000..742a9ff --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial112 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial112 = [ + 0, 48, 43, 58, 0, 48, 43, 58, + 0, 48, 43, 58, 0, 48, 43, 58, + 0, 48, 43, 58, 0, 48, 43, 58, + 0, 48, 43, 58, 0, 48, 43, 58, + 0, 48, 43, 58, 0, 48, 43, 58, + 0, 48, 43, 58, 0, 48, 43, 58, + 0, 48, 43, 58, 0, 48, 43, 58, + 0, 48, 43, 58, 0, 48, 43, 58 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial113.scd b/sound_algo/palette/melodies/long/mlIndustrial113.scd new file mode 100644 index 0000000..b0d9b5d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial113 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial113 = [ + 0, 37, 0, 56, 0, 37, 0, 56, + 0, 37, 0, 56, 0, 37, 0, 56, + 0, 37, 0, 56, 0, 37, 0, 56, + 0, 37, 0, 56, 0, 37, 0, 56, + 0, 37, 0, 56, 0, 37, 0, 56, + 0, 37, 0, 56, 0, 37, 0, 56, + 0, 37, 0, 56, 0, 37, 0, 56, + 0, 37, 0, 56, 0, 37, 0, 56 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial114.scd b/sound_algo/palette/melodies/long/mlIndustrial114.scd new file mode 100644 index 0000000..922adac --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial114 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial114 = [ + 56, 55, 56, 43, 56, 55, 56, 43, + 56, 55, 56, 43, 56, 55, 56, 43, + 56, 55, 56, 43, 56, 55, 56, 43, + 56, 55, 56, 43, 56, 55, 56, 43, + 56, 55, 56, 43, 56, 55, 56, 43, + 56, 55, 56, 43, 56, 55, 56, 43, + 56, 55, 56, 43, 56, 55, 56, 43, + 56, 55, 56, 43, 56, 55, 56, 43 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial115.scd b/sound_algo/palette/melodies/long/mlIndustrial115.scd new file mode 100644 index 0000000..f87c176 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial115 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial115 = [ + 40, 52, 60, 55, 40, 52, 60, 55, + 40, 52, 60, 55, 40, 52, 60, 55, + 40, 52, 60, 55, 40, 52, 60, 55, + 40, 52, 60, 55, 40, 52, 60, 55, + 40, 52, 60, 55, 40, 52, 60, 55, + 40, 52, 60, 55, 40, 52, 60, 55, + 40, 52, 60, 55, 40, 52, 60, 55, + 40, 52, 60, 55, 40, 52, 60, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial116.scd b/sound_algo/palette/melodies/long/mlIndustrial116.scd new file mode 100644 index 0000000..91f30d0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial116 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial116 = [ + 46, 0, 0, 36, 46, 0, 0, 36, + 46, 0, 0, 36, 46, 0, 0, 36, + 46, 0, 0, 36, 46, 0, 0, 36, + 46, 0, 0, 36, 46, 0, 0, 36, + 46, 0, 0, 36, 46, 0, 0, 36, + 46, 0, 0, 36, 46, 0, 0, 36, + 46, 0, 0, 36, 46, 0, 0, 36, + 46, 0, 0, 36, 46, 0, 0, 36 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial117.scd b/sound_algo/palette/melodies/long/mlIndustrial117.scd new file mode 100644 index 0000000..cbcf6d0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial117 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial117 = [ + 60, 39, 51, 53, 60, 39, 51, 53, + 60, 39, 51, 53, 60, 39, 51, 53, + 60, 39, 51, 53, 60, 39, 51, 53, + 60, 39, 51, 53, 60, 39, 51, 53, + 60, 39, 51, 53, 60, 39, 51, 53, + 60, 39, 51, 53, 60, 39, 51, 53, + 60, 39, 51, 53, 60, 39, 51, 53, + 60, 39, 51, 53, 60, 39, 51, 53 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial118.scd b/sound_algo/palette/melodies/long/mlIndustrial118.scd new file mode 100644 index 0000000..c7b0c34 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial118 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial118 = [ + 60, 56, 43, 45, 60, 56, 43, 45, + 60, 56, 43, 45, 60, 56, 43, 45, + 60, 56, 43, 45, 60, 56, 43, 45, + 60, 56, 43, 45, 60, 56, 43, 45, + 60, 56, 43, 45, 60, 56, 43, 45, + 60, 56, 43, 45, 60, 56, 43, 45, + 60, 56, 43, 45, 60, 56, 43, 45, + 60, 56, 43, 45, 60, 56, 43, 45 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial119.scd b/sound_algo/palette/melodies/long/mlIndustrial119.scd new file mode 100644 index 0000000..a49c13c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial119 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial119 = [ + 36, 43, 0, 41, 36, 43, 0, 41, + 36, 43, 0, 41, 36, 43, 0, 41, + 36, 43, 0, 41, 36, 43, 0, 41, + 36, 43, 0, 41, 36, 43, 0, 41, + 36, 43, 0, 41, 36, 43, 0, 41, + 36, 43, 0, 41, 36, 43, 0, 41, + 36, 43, 0, 41, 36, 43, 0, 41, + 36, 43, 0, 41, 36, 43, 0, 41 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial120.scd b/sound_algo/palette/melodies/long/mlIndustrial120.scd new file mode 100644 index 0000000..427df20 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial120 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial120 = [ + 50, 46, 38, 45, 50, 46, 38, 45, + 50, 46, 38, 45, 50, 46, 38, 45, + 50, 46, 38, 45, 50, 46, 38, 45, + 50, 46, 38, 45, 50, 46, 38, 45, + 50, 46, 38, 45, 50, 46, 38, 45, + 50, 46, 38, 45, 50, 46, 38, 45, + 50, 46, 38, 45, 50, 46, 38, 45, + 50, 46, 38, 45, 50, 46, 38, 45 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial121.scd b/sound_algo/palette/melodies/long/mlIndustrial121.scd new file mode 100644 index 0000000..453c1c7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial121 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial121 = [ + 0, 45, 53, 39, 0, 45, 53, 39, + 0, 45, 53, 39, 0, 45, 53, 39, + 0, 45, 53, 39, 0, 45, 53, 39, + 0, 45, 53, 39, 0, 45, 53, 39, + 0, 45, 53, 39, 0, 45, 53, 39, + 0, 45, 53, 39, 0, 45, 53, 39, + 0, 45, 53, 39, 0, 45, 53, 39, + 0, 45, 53, 39, 0, 45, 53, 39 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial122.scd b/sound_algo/palette/melodies/long/mlIndustrial122.scd new file mode 100644 index 0000000..1f3a3c5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial122 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial122 = [ + 42, 42, 52, 60, 42, 42, 52, 60, + 42, 42, 52, 60, 42, 42, 52, 60, + 42, 42, 52, 60, 42, 42, 52, 60, + 42, 42, 52, 60, 42, 42, 52, 60, + 42, 42, 52, 60, 42, 42, 52, 60, + 42, 42, 52, 60, 42, 42, 52, 60, + 42, 42, 52, 60, 42, 42, 52, 60, + 42, 42, 52, 60, 42, 42, 52, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlIndustrial123.scd b/sound_algo/palette/melodies/long/mlIndustrial123.scd new file mode 100644 index 0000000..9a11b7f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlIndustrial123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlIndustrial123 -- long melody (64 steps), genre: industrial +// ===================================================================== +( +~mlIndustrial123 = [ + 53, 53, 54, 37, 53, 53, 54, 37, + 53, 53, 54, 37, 53, 53, 54, 37, + 53, 53, 54, 37, 53, 53, 54, 37, + 53, 53, 54, 37, 53, 53, 54, 37, + 53, 53, 54, 37, 53, 53, 54, 37, + 53, 53, 54, 37, 53, 53, 54, 37, + 53, 53, 54, 37, 53, 53, 54, 37, + 53, 53, 54, 37, 53, 53, 54, 37 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz100.scd b/sound_algo/palette/melodies/long/mlJazz100.scd new file mode 100644 index 0000000..a5eae19 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz100 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz100 = [ + 0, 0, 0, 82, 68, 0, 0, 75, + 84, 0, 63, 60, 0, 0, 82, 50, + 0, 0, 0, 82, 68, 0, 0, 75, + 84, 0, 63, 60, 0, 0, 82, 50, + 0, 82, 67, 67, 53, 0, 80, 67, + 77, 82, 65, 0, 48, 53, 52, 53, + 0, 0, 0, 82, 68, 0, 0, 75, + 84, 0, 63, 60, 0, 0, 82, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz101.scd b/sound_algo/palette/melodies/long/mlJazz101.scd new file mode 100644 index 0000000..bb3ff58 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz101 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz101 = [ + 85, 84, 74, 48, 67, 50, 63, 83, + 84, 74, 0, 69, 60, 74, 74, 0, + 51, 0, 70, 82, 0, 0, 74, 0, + 62, 0, 0, 58, 55, 70, 69, 0, + 82, 81, 0, 0, 0, 69, 65, 65, + 79, 0, 50, 50, 73, 72, 0, 50, + 55, 65, 72, 84, 82, 0, 55, 0, + 75, 0, 0, 80, 79, 0, 74, 51 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz102.scd b/sound_algo/palette/melodies/long/mlJazz102.scd new file mode 100644 index 0000000..7215d78 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz102 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz102 = [ + 0, 0, 0, 62, 0, 58, 0, 0, + 60, 84, 60, 82, 60, 76, 70, 52, + 67, 0, 58, 81, 84, 62, 57, 50, + 0, 55, 84, 57, 76, 82, 52, 64, + 76, 0, 0, 0, 0, 0, 0, 81, + 64, 0, 74, 0, 64, 0, 65, 80, + 79, 0, 0, 0, 71, 72, 48, 0, + 0, 0, 53, 77, 0, 0, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz103.scd b/sound_algo/palette/melodies/long/mlJazz103.scd new file mode 100644 index 0000000..a20087a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz103 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz103 = [ + 0, 57, 0, 48, 55, 0, 51, 62, + 51, 0, 53, 79, 0, 0, 0, 69, + 0, 57, 0, 48, 55, 0, 51, 62, + 51, 0, 53, 79, 0, 0, 0, 69, + 48, 74, 76, 75, 0, 0, 0, 47, + 48, 74, 77, 74, 0, 0, 57, 0, + 0, 57, 0, 48, 55, 0, 51, 62, + 51, 0, 53, 79, 0, 0, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz104.scd b/sound_algo/palette/melodies/long/mlJazz104.scd new file mode 100644 index 0000000..96c920f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz104 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz104 = [ + 0, 79, 80, 82, 58, 0, 0, 48, + 0, 70, 78, 0, 64, 0, 0, 76, + 58, 0, 75, 68, 0, 0, 66, 84, + 48, 0, 0, 61, 0, 73, 0, 60, + 0, 75, 0, 0, 84, 70, 51, 0, + 56, 48, 68, 0, 0, 52, 75, 63, + 48, 63, 59, 60, 52, 61, 75, 76, + 63, 0, 56, 53, 52, 76, 54, 58 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz105.scd b/sound_algo/palette/melodies/long/mlJazz105.scd new file mode 100644 index 0000000..7ad65a5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz105 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz105 = [ + 76, 58, 0, 0, 52, 0, 51, 54, + 72, 0, 0, 61, 76, 0, 80, 0, + 0, 0, 61, 0, 52, 70, 82, 0, + 72, 0, 80, 75, 0, 0, 78, 64, + 0, 60, 63, 51, 58, 80, 0, 0, + 64, 0, 74, 73, 72, 56, 49, 0, + 0, 66, 0, 0, 78, 0, 54, 0, + 72, 75, 76, 0, 59, 58, 69, 70 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz106.scd b/sound_algo/palette/melodies/long/mlJazz106.scd new file mode 100644 index 0000000..9328ddc --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz106 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz106 = [ + 62, 67, 0, 0, 80, 79, 0, 53, + 77, 0, 84, 0, 77, 0, 63, 63, + 51, 55, 84, 0, 0, 0, 51, 65, + 65, 0, 50, 79, 57, 58, 72, 75, + 56, 51, 58, 67, 80, 0, 51, 0, + 68, 80, 55, 77, 60, 75, 0, 82, + 0, 0, 0, 53, 0, 77, 55, 68, + 75, 0, 0, 54, 85, 84, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz107.scd b/sound_algo/palette/melodies/long/mlJazz107.scd new file mode 100644 index 0000000..86b4605 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz107 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz107 = [ + 73, 72, 0, 65, 0, 55, 52, 53, + 0, 0, 57, 77, 52, 0, 81, 0, + 0, 74, 67, 70, 0, 0, 81, 82, + 64, 0, 55, 55, 64, 64, 54, 53, + 0, 67, 82, 67, 0, 60, 64, 69, + 0, 52, 70, 0, 65, 58, 0, 76, + 55, 69, 67, 0, 53, 53, 52, 0, + 52, 53, 50, 60, 50, 50, 81, 48 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz108.scd b/sound_algo/palette/melodies/long/mlJazz108.scd new file mode 100644 index 0000000..eca0ef4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz108 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz108 = [ + 65, 48, 65, 79, 84, 54, 53, 0, + 84, 0, 50, 60, 75, 0, 48, 0, + 65, 48, 65, 79, 84, 54, 53, 0, + 84, 0, 50, 60, 75, 0, 48, 0, + 0, 0, 74, 75, 0, 58, 0, 79, + 79, 65, 0, 0, 0, 0, 72, 81, + 65, 48, 65, 79, 84, 54, 53, 0, + 84, 0, 50, 60, 75, 0, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz109.scd b/sound_algo/palette/melodies/long/mlJazz109.scd new file mode 100644 index 0000000..32e0544 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz109 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz109 = [ + 69, 74, 60, 62, 70, 0, 84, 52, + 51, 58, 63, 62, 65, 47, 48, 62, + 69, 74, 60, 62, 70, 0, 84, 52, + 51, 58, 63, 62, 65, 47, 48, 62, + 72, 77, 58, 60, 83, 84, 0, 52, + 53, 60, 69, 0, 0, 62, 77, 62, + 69, 74, 60, 62, 70, 0, 84, 52, + 51, 58, 63, 62, 65, 47, 48, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz110.scd b/sound_algo/palette/melodies/long/mlJazz110.scd new file mode 100644 index 0000000..9bbcfa6 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz110 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz110 = [ + 67, 51, 0, 0, 48, 74, 68, 69, + 55, 0, 84, 0, 69, 74, 77, 75, + 67, 51, 0, 0, 48, 74, 68, 69, + 55, 0, 84, 0, 69, 74, 77, 75, + 60, 58, 72, 0, 0, 51, 58, 49, + 50, 0, 79, 50, 0, 65, 0, 69, + 67, 51, 0, 0, 48, 74, 68, 69, + 55, 0, 84, 0, 69, 74, 77, 75 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz111.scd b/sound_algo/palette/melodies/long/mlJazz111.scd new file mode 100644 index 0000000..64517f5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz111 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz111 = [ + 80, 60, 0, 55, 80, 53, 0, 72, + 72, 51, 77, 0, 0, 0, 55, 0, + 0, 75, 0, 0, 52, 51, 58, 68, + 60, 0, 51, 0, 60, 55, 56, 0, + 62, 0, 66, 65, 74, 75, 0, 64, + 49, 66, 67, 77, 0, 75, 0, 68, + 0, 58, 78, 77, 0, 58, 0, 74, + 0, 75, 68, 0, 58, 82, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz112.scd b/sound_algo/palette/melodies/long/mlJazz112.scd new file mode 100644 index 0000000..629ab73 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz112 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz112 = [ + 68, 84, 65, 70, 72, 0, 65, 67, + 68, 0, 56, 74, 0, 0, 55, 0, + 68, 84, 65, 70, 72, 0, 65, 67, + 68, 0, 56, 74, 0, 0, 55, 0, + 0, 82, 68, 68, 67, 53, 61, 62, + 0, 62, 0, 51, 0, 71, 72, 79, + 68, 84, 65, 70, 72, 0, 65, 67, + 68, 0, 56, 74, 0, 0, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz113.scd b/sound_algo/palette/melodies/long/mlJazz113.scd new file mode 100644 index 0000000..48c222d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz113 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz113 = [ + 53, 75, 61, 60, 76, 0, 65, 55, + 65, 0, 79, 65, 64, 84, 59, 58, + 0, 0, 52, 57, 84, 57, 75, 76, + 0, 64, 71, 72, 0, 74, 65, 62, + 61, 60, 64, 70, 0, 70, 69, 0, + 0, 62, 58, 71, 72, 67, 69, 70, + 0, 81, 58, 81, 0, 82, 48, 0, + 68, 69, 69, 0, 48, 0, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz114.scd b/sound_algo/palette/melodies/long/mlJazz114.scd new file mode 100644 index 0000000..bcff33e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz114 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz114 = [ + 81, 62, 0, 67, 48, 57, 63, 77, + 65, 53, 0, 0, 60, 51, 85, 84, + 72, 55, 77, 53, 0, 49, 50, 0, + 53, 82, 0, 81, 50, 65, 55, 0, + 53, 0, 51, 48, 48, 65, 84, 74, + 69, 0, 48, 84, 58, 58, 0, 0, + 62, 63, 0, 72, 0, 82, 0, 62, + 0, 61, 60, 48, 55, 51, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlJazz115.scd b/sound_algo/palette/melodies/long/mlJazz115.scd new file mode 100644 index 0000000..5fa3cf4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlJazz115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlJazz115 -- long melody (64 steps), genre: jazz +// ===================================================================== +( +~mlJazz115 = [ + 0, 60, 0, 70, 49, 73, 74, 62, + 54, 53, 84, 0, 0, 57, 81, 85, + 0, 60, 0, 70, 49, 73, 74, 62, + 54, 53, 84, 0, 0, 57, 81, 85, + 0, 72, 74, 64, 60, 79, 0, 63, + 64, 65, 67, 57, 0, 55, 53, 0, + 0, 60, 0, 70, 49, 73, 74, 62, + 54, 53, 84, 0, 0, 57, 81, 85 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental100.scd b/sound_algo/palette/melodies/long/mlOriental100.scd new file mode 100644 index 0000000..bc099c1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental100 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental100 = [ + 0, 51, 63, 69, 0, 57, 54, 0, + 54, 66, 63, 60, 0, 0, 55, 58, + 0, 51, 63, 69, 0, 57, 54, 0, + 54, 66, 63, 60, 0, 0, 55, 58, + 74, 72, 69, 0, 67, 66, 0, 62, + 66, 0, 72, 0, 54, 51, 0, 70, + 0, 51, 63, 69, 0, 57, 54, 0, + 54, 66, 63, 60, 0, 0, 55, 58 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental101.scd b/sound_algo/palette/melodies/long/mlOriental101.scd new file mode 100644 index 0000000..bfe2ed1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental101 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental101 = [ + 0, 72, 55, 0, 0, 70, 60, 0, + 72, 70, 54, 0, 57, 72, 50, 50, + 0, 72, 55, 0, 0, 70, 60, 0, + 72, 70, 54, 0, 57, 72, 50, 50, + 50, 50, 62, 57, 58, 57, 63, 0, + 55, 55, 50, 69, 0, 0, 0, 67, + 0, 72, 55, 0, 0, 70, 60, 0, + 72, 70, 54, 0, 57, 72, 50, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental102.scd b/sound_algo/palette/melodies/long/mlOriental102.scd new file mode 100644 index 0000000..8c9c05e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental102 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental102 = [ + 72, 71, 0, 56, 51, 60, 51, 0, + 50, 0, 59, 51, 0, 68, 0, 62, + 72, 71, 0, 56, 51, 60, 51, 0, + 50, 0, 59, 51, 0, 68, 0, 62, + 74, 0, 71, 55, 62, 62, 0, 60, + 65, 72, 0, 68, 0, 53, 51, 59, + 72, 71, 0, 56, 51, 60, 51, 0, + 50, 0, 59, 51, 0, 68, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental103.scd b/sound_algo/palette/melodies/long/mlOriental103.scd new file mode 100644 index 0000000..74cebd2 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental103 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental103 = [ + 0, 68, 0, 71, 0, 0, 0, 0, + 59, 56, 60, 0, 62, 0, 68, 63, + 55, 0, 53, 0, 71, 68, 63, 63, + 0, 0, 0, 71, 62, 60, 51, 67, + 50, 65, 0, 0, 74, 72, 0, 0, + 59, 56, 0, 0, 59, 59, 71, 59, + 59, 65, 67, 63, 0, 0, 0, 62, + 72, 71, 0, 0, 72, 55, 68, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental104.scd b/sound_algo/palette/melodies/long/mlOriental104.scd new file mode 100644 index 0000000..56b1f1d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental104 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental104 = [ + 62, 0, 0, 66, 54, 66, 0, 55, + 55, 0, 0, 66, 54, 72, 0, 62, + 62, 0, 0, 66, 54, 66, 0, 55, + 55, 0, 0, 66, 54, 72, 0, 62, + 63, 54, 74, 50, 54, 66, 70, 51, + 50, 51, 55, 69, 54, 51, 51, 72, + 62, 0, 0, 66, 54, 66, 0, 55, + 55, 0, 0, 66, 54, 72, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental105.scd b/sound_algo/palette/melodies/long/mlOriental105.scd new file mode 100644 index 0000000..edb1077 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental105 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental105 = [ + 74, 72, 0, 0, 74, 60, 59, 59, + 71, 74, 0, 74, 63, 56, 67, 0, + 74, 72, 0, 0, 74, 60, 59, 59, + 71, 74, 0, 74, 63, 56, 67, 0, + 74, 62, 65, 67, 53, 51, 50, 59, + 71, 56, 0, 55, 55, 53, 0, 0, + 74, 72, 0, 0, 74, 60, 59, 59, + 71, 74, 0, 74, 63, 56, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental106.scd b/sound_algo/palette/melodies/long/mlOriental106.scd new file mode 100644 index 0000000..dab3dbe --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental106 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental106 = [ + 51, 67, 70, 0, 66, 0, 63, 0, + 54, 60, 70, 51, 69, 67, 0, 62, + 0, 69, 57, 72, 50, 0, 0, 70, + 0, 58, 0, 67, 60, 58, 62, 60, + 0, 69, 63, 74, 60, 58, 0, 67, + 57, 55, 0, 67, 58, 72, 58, 58, + 50, 54, 0, 0, 55, 54, 55, 63, + 50, 58, 66, 58, 74, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental107.scd b/sound_algo/palette/melodies/long/mlOriental107.scd new file mode 100644 index 0000000..8efdf2c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental107 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental107 = [ + 63, 50, 0, 62, 0, 50, 63, 70, + 74, 72, 66, 63, 54, 0, 0, 51, + 63, 50, 0, 62, 0, 50, 63, 70, + 74, 72, 66, 63, 54, 0, 0, 51, + 55, 74, 66, 70, 0, 50, 70, 57, + 66, 0, 60, 55, 66, 63, 0, 57, + 63, 50, 0, 62, 0, 50, 63, 70, + 74, 72, 66, 63, 54, 0, 0, 51 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental108.scd b/sound_algo/palette/melodies/long/mlOriental108.scd new file mode 100644 index 0000000..54989f0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental108 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental108 = [ + 66, 69, 55, 0, 51, 62, 50, 69, + 57, 60, 72, 69, 62, 60, 74, 50, + 0, 58, 70, 0, 74, 70, 63, 72, + 69, 67, 72, 66, 67, 66, 58, 0, + 62, 0, 0, 50, 0, 72, 66, 0, + 69, 67, 0, 69, 67, 0, 74, 0, + 66, 63, 72, 62, 0, 60, 0, 63, + 66, 74, 67, 0, 66, 74, 0, 58 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental109.scd b/sound_algo/palette/melodies/long/mlOriental109.scd new file mode 100644 index 0000000..623b639 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental109 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental109 = [ + 65, 72, 0, 71, 63, 55, 67, 0, + 55, 53, 50, 0, 74, 0, 72, 55, + 71, 65, 74, 55, 62, 60, 0, 74, + 71, 68, 62, 0, 74, 0, 59, 74, + 50, 53, 60, 59, 62, 50, 51, 0, + 71, 68, 74, 59, 71, 0, 60, 74, + 0, 0, 59, 59, 59, 0, 62, 62, + 67, 65, 62, 67, 63, 63, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental110.scd b/sound_algo/palette/melodies/long/mlOriental110.scd new file mode 100644 index 0000000..5852d07 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental110 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental110 = [ + 50, 74, 0, 65, 0, 0, 60, 59, + 74, 0, 0, 59, 74, 72, 56, 0, + 56, 55, 62, 68, 65, 67, 67, 56, + 55, 53, 0, 67, 59, 71, 62, 0, + 55, 59, 71, 0, 59, 74, 51, 51, + 50, 53, 0, 0, 74, 53, 74, 55, + 71, 50, 63, 0, 55, 0, 59, 59, + 59, 71, 55, 0, 62, 0, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental111.scd b/sound_algo/palette/melodies/long/mlOriental111.scd new file mode 100644 index 0000000..4d3df76 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental111 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental111 = [ + 55, 57, 51, 74, 57, 0, 67, 66, + 0, 66, 62, 54, 57, 55, 57, 67, + 55, 57, 51, 74, 57, 0, 67, 66, + 0, 66, 62, 54, 57, 55, 57, 67, + 51, 0, 60, 74, 51, 0, 0, 0, + 57, 55, 0, 70, 74, 0, 55, 51, + 55, 57, 51, 74, 57, 0, 67, 66, + 0, 66, 62, 54, 57, 55, 57, 67 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental112.scd b/sound_algo/palette/melodies/long/mlOriental112.scd new file mode 100644 index 0000000..1990759 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental112 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental112 = [ + 67, 53, 68, 71, 0, 55, 0, 65, + 0, 62, 56, 63, 0, 74, 56, 74, + 0, 0, 55, 0, 74, 72, 0, 0, + 0, 68, 53, 51, 74, 62, 71, 0, + 50, 74, 74, 67, 0, 63, 0, 0, + 72, 74, 0, 51, 0, 51, 71, 63, + 74, 72, 59, 0, 55, 53, 59, 68, + 65, 65, 74, 74, 55, 53, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental113.scd b/sound_algo/palette/melodies/long/mlOriental113.scd new file mode 100644 index 0000000..dae5869 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental113 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental113 = [ + 55, 0, 56, 56, 0, 62, 0, 65, + 59, 56, 67, 0, 60, 65, 60, 74, + 55, 0, 56, 56, 0, 62, 0, 65, + 59, 56, 67, 0, 60, 65, 60, 74, + 62, 60, 0, 55, 50, 0, 50, 71, + 65, 68, 0, 59, 60, 59, 62, 67, + 55, 0, 56, 56, 0, 62, 0, 65, + 59, 56, 67, 0, 60, 65, 60, 74 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental114.scd b/sound_algo/palette/melodies/long/mlOriental114.scd new file mode 100644 index 0000000..7dc9535 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental114 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental114 = [ + 55, 53, 74, 68, 0, 56, 74, 53, + 50, 68, 55, 50, 59, 53, 74, 62, + 55, 53, 74, 68, 0, 56, 74, 53, + 50, 68, 55, 50, 59, 53, 74, 62, + 59, 56, 56, 51, 0, 53, 55, 51, + 62, 0, 59, 51, 50, 51, 72, 74, + 55, 53, 74, 68, 0, 56, 74, 53, + 50, 68, 55, 50, 59, 53, 74, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental115.scd b/sound_algo/palette/melodies/long/mlOriental115.scd new file mode 100644 index 0000000..26fdaaa --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental115 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental115 = [ + 55, 60, 0, 50, 0, 67, 0, 50, + 74, 72, 74, 62, 70, 69, 0, 0, + 63, 51, 63, 66, 66, 67, 0, 60, + 55, 63, 72, 51, 0, 51, 50, 70, + 51, 50, 0, 63, 57, 55, 70, 0, + 62, 57, 74, 0, 69, 67, 62, 72, + 0, 63, 51, 0, 50, 62, 66, 66, + 0, 58, 0, 60, 72, 70, 54, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental116.scd b/sound_algo/palette/melodies/long/mlOriental116.scd new file mode 100644 index 0000000..332b74b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental116 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental116 = [ + 0, 70, 0, 0, 54, 0, 0, 0, + 54, 67, 58, 62, 69, 55, 67, 54, + 54, 51, 0, 0, 74, 55, 54, 54, + 57, 63, 51, 69, 57, 74, 0, 0, + 74, 63, 63, 0, 0, 63, 0, 0, + 70, 69, 67, 63, 0, 54, 69, 50, + 54, 62, 70, 67, 0, 66, 0, 51, + 57, 55, 67, 0, 0, 50, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental117.scd b/sound_algo/palette/melodies/long/mlOriental117.scd new file mode 100644 index 0000000..5eabc9b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental117 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental117 = [ + 0, 50, 74, 0, 57, 0, 63, 70, + 66, 63, 0, 0, 0, 69, 0, 74, + 0, 50, 74, 0, 57, 0, 63, 70, + 66, 63, 0, 0, 0, 69, 0, 74, + 0, 0, 72, 0, 0, 69, 0, 60, + 0, 62, 66, 54, 0, 66, 54, 50, + 0, 50, 74, 0, 57, 0, 63, 70, + 66, 63, 0, 0, 0, 69, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental118.scd b/sound_algo/palette/melodies/long/mlOriental118.scd new file mode 100644 index 0000000..8558714 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental118 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental118 = [ + 55, 59, 55, 68, 59, 55, 65, 56, + 62, 60, 63, 67, 0, 63, 51, 55, + 55, 59, 55, 68, 59, 55, 65, 56, + 62, 60, 63, 67, 0, 63, 51, 55, + 0, 53, 67, 63, 0, 0, 0, 0, + 71, 65, 0, 0, 62, 67, 59, 0, + 55, 59, 55, 68, 59, 55, 65, 56, + 62, 60, 63, 67, 0, 63, 51, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental119.scd b/sound_algo/palette/melodies/long/mlOriental119.scd new file mode 100644 index 0000000..018a91c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental119 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental119 = [ + 50, 51, 65, 0, 0, 0, 74, 56, + 55, 65, 0, 0, 67, 67, 74, 65, + 50, 51, 65, 0, 0, 0, 74, 56, + 55, 65, 0, 0, 67, 67, 74, 65, + 55, 0, 0, 0, 50, 53, 56, 71, + 59, 53, 68, 53, 55, 53, 68, 62, + 50, 51, 65, 0, 0, 0, 74, 56, + 55, 65, 0, 0, 67, 67, 74, 65 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental120.scd b/sound_algo/palette/melodies/long/mlOriental120.scd new file mode 100644 index 0000000..a68881a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental120 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental120 = [ + 51, 58, 62, 62, 0, 51, 66, 69, + 69, 67, 54, 66, 54, 51, 62, 66, + 51, 58, 62, 62, 0, 51, 66, 69, + 69, 67, 54, 66, 54, 51, 62, 66, + 55, 54, 51, 63, 62, 0, 62, 67, + 0, 51, 0, 63, 70, 69, 0, 0, + 51, 58, 62, 62, 0, 51, 66, 69, + 69, 67, 54, 66, 54, 51, 62, 66 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental121.scd b/sound_algo/palette/melodies/long/mlOriental121.scd new file mode 100644 index 0000000..5cf9d13 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental121 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental121 = [ + 0, 60, 70, 55, 57, 55, 0, 66, + 0, 54, 0, 72, 69, 62, 62, 67, + 0, 60, 70, 55, 57, 55, 0, 66, + 0, 54, 0, 72, 69, 62, 62, 67, + 0, 55, 50, 66, 0, 0, 0, 69, + 0, 0, 58, 60, 67, 66, 62, 58, + 0, 60, 70, 55, 57, 55, 0, 66, + 0, 54, 0, 72, 69, 62, 62, 67 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental122.scd b/sound_algo/palette/melodies/long/mlOriental122.scd new file mode 100644 index 0000000..446eaa4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental122 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental122 = [ + 74, 66, 62, 66, 0, 0, 74, 66, + 54, 50, 63, 66, 74, 72, 66, 0, + 74, 66, 62, 66, 0, 0, 74, 66, + 54, 50, 63, 66, 74, 72, 66, 0, + 0, 50, 74, 72, 74, 72, 54, 0, + 67, 58, 0, 63, 69, 74, 54, 55, + 74, 66, 62, 66, 0, 0, 74, 66, + 54, 50, 63, 66, 74, 72, 66, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental123.scd b/sound_algo/palette/melodies/long/mlOriental123.scd new file mode 100644 index 0000000..6a71250 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental123 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental123 = [ + 66, 69, 69, 69, 69, 66, 57, 0, + 74, 62, 0, 70, 62, 55, 50, 57, + 66, 69, 69, 69, 69, 66, 57, 0, + 74, 62, 0, 70, 62, 55, 50, 57, + 57, 55, 0, 54, 54, 69, 72, 54, + 63, 62, 51, 0, 62, 60, 70, 0, + 66, 69, 69, 69, 69, 66, 57, 0, + 74, 62, 0, 70, 62, 55, 50, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental124.scd b/sound_algo/palette/melodies/long/mlOriental124.scd new file mode 100644 index 0000000..3e6ad70 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental124.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental124 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental124 = [ + 74, 0, 53, 62, 0, 60, 0, 60, + 53, 51, 71, 63, 67, 63, 74, 55, + 59, 0, 50, 53, 50, 71, 67, 56, + 0, 72, 0, 0, 56, 65, 68, 59, + 0, 59, 56, 0, 53, 0, 62, 0, + 59, 56, 65, 59, 55, 59, 50, 71, + 59, 53, 71, 72, 55, 53, 60, 62, + 0, 67, 59, 0, 55, 71, 59, 63 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental125.scd b/sound_algo/palette/melodies/long/mlOriental125.scd new file mode 100644 index 0000000..4c53d72 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental125.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental125 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental125 = [ + 71, 56, 56, 0, 71, 68, 0, 72, + 59, 56, 67, 53, 0, 0, 0, 50, + 71, 56, 56, 0, 71, 68, 0, 72, + 59, 56, 67, 53, 0, 0, 0, 50, + 0, 0, 60, 59, 68, 0, 0, 55, + 0, 60, 74, 53, 62, 60, 56, 50, + 71, 56, 56, 0, 71, 68, 0, 72, + 59, 56, 67, 53, 0, 0, 0, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental126.scd b/sound_algo/palette/melodies/long/mlOriental126.scd new file mode 100644 index 0000000..ab5d102 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental126.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental126 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental126 = [ + 66, 0, 69, 57, 60, 58, 51, 0, + 60, 0, 74, 51, 50, 0, 62, 72, + 66, 0, 69, 57, 60, 58, 51, 0, + 60, 0, 74, 51, 50, 0, 62, 72, + 0, 0, 0, 0, 0, 0, 0, 0, + 69, 66, 57, 0, 0, 0, 54, 51, + 66, 0, 69, 57, 60, 58, 51, 0, + 60, 0, 74, 51, 50, 0, 62, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental127.scd b/sound_algo/palette/melodies/long/mlOriental127.scd new file mode 100644 index 0000000..3e66c54 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental127.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental127 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental127 = [ + 0, 0, 0, 70, 60, 63, 58, 62, + 74, 55, 0, 0, 70, 69, 70, 62, + 0, 0, 0, 70, 60, 63, 58, 62, + 74, 55, 0, 0, 70, 69, 70, 62, + 69, 0, 62, 0, 0, 0, 58, 66, + 54, 60, 74, 0, 0, 74, 60, 60, + 0, 0, 0, 70, 60, 63, 58, 62, + 74, 55, 0, 0, 70, 69, 70, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental128.scd b/sound_algo/palette/melodies/long/mlOriental128.scd new file mode 100644 index 0000000..58ec6d5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental128.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental128 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental128 = [ + 62, 60, 60, 58, 57, 55, 74, 72, + 0, 0, 0, 51, 54, 0, 50, 51, + 62, 60, 60, 58, 57, 55, 74, 72, + 0, 0, 0, 51, 54, 0, 50, 51, + 0, 0, 51, 57, 74, 72, 70, 0, + 0, 57, 50, 55, 50, 63, 54, 70, + 62, 60, 60, 58, 57, 55, 74, 72, + 0, 0, 0, 51, 54, 0, 50, 51 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental129.scd b/sound_algo/palette/melodies/long/mlOriental129.scd new file mode 100644 index 0000000..ccb0b98 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental129.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental129 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental129 = [ + 59, 0, 71, 71, 74, 0, 0, 68, + 62, 60, 0, 56, 59, 56, 65, 0, + 59, 0, 71, 71, 74, 0, 0, 68, + 62, 60, 0, 56, 59, 56, 65, 0, + 67, 65, 0, 0, 67, 0, 0, 0, + 59, 56, 0, 0, 74, 68, 0, 0, + 59, 0, 71, 71, 74, 0, 0, 68, + 62, 60, 0, 56, 59, 56, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental130.scd b/sound_algo/palette/melodies/long/mlOriental130.scd new file mode 100644 index 0000000..0455392 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental130.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental130 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental130 = [ + 50, 50, 51, 53, 71, 68, 63, 0, + 59, 0, 55, 71, 55, 74, 68, 59, + 0, 56, 72, 53, 67, 65, 68, 51, + 74, 72, 63, 62, 55, 62, 50, 67, + 0, 50, 0, 72, 50, 50, 53, 65, + 55, 72, 0, 0, 60, 59, 0, 0, + 0, 67, 71, 63, 67, 74, 56, 63, + 74, 72, 51, 0, 59, 65, 59, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental131.scd b/sound_algo/palette/melodies/long/mlOriental131.scd new file mode 100644 index 0000000..d86a301 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental131.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental131 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental131 = [ + 0, 57, 57, 69, 0, 74, 66, 0, + 69, 62, 72, 51, 55, 62, 0, 74, + 72, 51, 72, 0, 69, 57, 66, 50, + 57, 62, 0, 72, 62, 74, 0, 67, + 66, 63, 60, 67, 54, 51, 67, 74, + 54, 51, 0, 0, 50, 69, 60, 54, + 54, 51, 72, 57, 50, 58, 66, 74, + 69, 67, 54, 58, 66, 63, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental132.scd b/sound_algo/palette/melodies/long/mlOriental132.scd new file mode 100644 index 0000000..eb23544 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental132.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental132 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental132 = [ + 57, 50, 0, 55, 62, 60, 51, 0, + 0, 63, 57, 0, 0, 51, 50, 51, + 57, 50, 0, 55, 62, 60, 51, 0, + 0, 63, 57, 0, 0, 51, 50, 51, + 54, 51, 50, 62, 67, 66, 69, 0, + 0, 0, 55, 66, 70, 69, 0, 62, + 57, 50, 0, 55, 62, 60, 51, 0, + 0, 63, 57, 0, 0, 51, 50, 51 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental133.scd b/sound_algo/palette/melodies/long/mlOriental133.scd new file mode 100644 index 0000000..9613291 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental133.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental133 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental133 = [ + 0, 60, 63, 51, 50, 54, 58, 70, + 0, 0, 0, 63, 63, 72, 0, 67, + 0, 0, 58, 63, 74, 58, 74, 0, + 54, 70, 74, 63, 50, 55, 66, 66, + 67, 54, 70, 0, 54, 51, 67, 58, + 60, 55, 0, 0, 0, 62, 55, 0, + 62, 60, 60, 51, 74, 50, 60, 69, + 66, 63, 72, 58, 0, 58, 74, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental134.scd b/sound_algo/palette/melodies/long/mlOriental134.scd new file mode 100644 index 0000000..24c95fe --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental134.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental134 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental134 = [ + 53, 0, 56, 0, 72, 0, 0, 71, + 68, 72, 65, 0, 62, 60, 56, 63, + 53, 0, 56, 0, 72, 0, 0, 71, + 68, 72, 65, 0, 62, 60, 56, 63, + 50, 74, 56, 0, 71, 68, 74, 51, + 72, 71, 0, 60, 0, 51, 55, 50, + 53, 0, 56, 0, 72, 0, 0, 71, + 68, 72, 65, 0, 62, 60, 56, 63 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental135.scd b/sound_algo/palette/melodies/long/mlOriental135.scd new file mode 100644 index 0000000..2faeafc --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental135.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental135 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental135 = [ + 0, 63, 67, 66, 69, 67, 66, 69, + 54, 0, 67, 0, 50, 55, 0, 72, + 0, 63, 67, 66, 69, 67, 66, 69, + 54, 0, 67, 0, 50, 55, 0, 72, + 0, 51, 0, 70, 0, 58, 67, 60, + 0, 70, 72, 69, 50, 0, 60, 66, + 0, 63, 67, 66, 69, 67, 66, 69, + 54, 0, 67, 0, 50, 55, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental136.scd b/sound_algo/palette/melodies/long/mlOriental136.scd new file mode 100644 index 0000000..0b80496 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental136.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental136 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental136 = [ + 60, 70, 69, 70, 63, 50, 70, 69, + 0, 55, 74, 0, 0, 51, 72, 60, + 74, 62, 72, 60, 66, 63, 0, 0, + 74, 72, 54, 54, 69, 67, 63, 74, + 0, 54, 60, 0, 74, 72, 67, 0, + 66, 0, 67, 72, 50, 66, 67, 62, + 69, 69, 0, 0, 0, 54, 63, 54, + 0, 50, 51, 0, 0, 50, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental137.scd b/sound_algo/palette/melodies/long/mlOriental137.scd new file mode 100644 index 0000000..ad6186a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental137.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental137 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental137 = [ + 54, 51, 66, 62, 72, 62, 0, 74, + 0, 0, 74, 70, 0, 62, 74, 55, + 0, 51, 0, 74, 0, 0, 70, 63, + 0, 70, 54, 69, 50, 0, 0, 57, + 57, 55, 63, 57, 51, 69, 58, 50, + 66, 60, 0, 63, 69, 58, 51, 54, + 67, 66, 0, 74, 69, 67, 66, 67, + 63, 62, 50, 67, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental138.scd b/sound_algo/palette/melodies/long/mlOriental138.scd new file mode 100644 index 0000000..673937f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental138.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental138 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental138 = [ + 55, 54, 57, 51, 74, 54, 0, 54, + 0, 51, 63, 62, 0, 0, 67, 51, + 62, 54, 72, 69, 0, 57, 0, 54, + 0, 69, 55, 0, 66, 63, 58, 55, + 70, 55, 72, 72, 57, 55, 0, 74, + 62, 0, 74, 57, 0, 0, 0, 72, + 66, 55, 0, 57, 54, 62, 69, 60, + 0, 0, 50, 51, 67, 66, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental139.scd b/sound_algo/palette/melodies/long/mlOriental139.scd new file mode 100644 index 0000000..9eb63d6 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental139.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental139 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental139 = [ + 57, 55, 0, 0, 57, 70, 51, 54, + 70, 69, 0, 70, 0, 50, 0, 70, + 57, 55, 0, 0, 57, 70, 51, 54, + 70, 69, 0, 70, 0, 50, 0, 70, + 54, 51, 54, 0, 74, 72, 60, 0, + 50, 51, 50, 62, 0, 70, 66, 72, + 57, 55, 0, 0, 57, 70, 51, 54, + 70, 69, 0, 70, 0, 50, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental140.scd b/sound_algo/palette/melodies/long/mlOriental140.scd new file mode 100644 index 0000000..ae1d9de --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental140.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental140 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental140 = [ + 0, 0, 69, 51, 0, 0, 60, 0, + 72, 57, 0, 58, 74, 54, 70, 70, + 0, 0, 69, 51, 0, 0, 60, 0, + 72, 57, 0, 58, 74, 54, 70, 70, + 66, 63, 0, 66, 66, 63, 0, 0, + 0, 0, 74, 0, 63, 62, 0, 54, + 0, 0, 69, 51, 0, 0, 60, 0, + 72, 57, 0, 58, 74, 54, 70, 70 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental141.scd b/sound_algo/palette/melodies/long/mlOriental141.scd new file mode 100644 index 0000000..52b7ad7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental141.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental141 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental141 = [ + 0, 70, 55, 69, 63, 62, 0, 55, + 50, 62, 0, 0, 54, 51, 62, 0, + 0, 70, 55, 69, 63, 62, 0, 55, + 50, 62, 0, 0, 54, 51, 62, 0, + 0, 69, 57, 0, 0, 63, 63, 0, + 0, 72, 54, 69, 0, 0, 51, 0, + 0, 70, 55, 69, 63, 62, 0, 55, + 50, 62, 0, 0, 54, 51, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental142.scd b/sound_algo/palette/melodies/long/mlOriental142.scd new file mode 100644 index 0000000..fa1b024 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental142.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental142 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental142 = [ + 0, 0, 0, 0, 54, 54, 74, 70, + 69, 67, 0, 51, 54, 51, 69, 60, + 54, 51, 67, 0, 50, 57, 69, 55, + 50, 0, 50, 69, 72, 62, 58, 50, + 0, 51, 55, 0, 62, 60, 55, 70, + 0, 58, 70, 55, 50, 54, 74, 51, + 57, 55, 62, 0, 72, 72, 55, 69, + 69, 67, 69, 69, 69, 67, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlOriental143.scd b/sound_algo/palette/melodies/long/mlOriental143.scd new file mode 100644 index 0000000..732f932 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlOriental143.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlOriental143 -- long melody (64 steps), genre: oriental +// ===================================================================== +( +~mlOriental143 = [ + 0, 72, 50, 54, 50, 54, 67, 0, + 0, 0, 63, 66, 63, 0, 0, 0, + 0, 70, 50, 55, 0, 60, 58, 69, + 0, 0, 74, 60, 50, 0, 69, 0, + 0, 67, 55, 72, 66, 57, 58, 67, + 72, 70, 0, 67, 54, 62, 70, 58, + 62, 60, 63, 0, 62, 60, 51, 57, + 55, 54, 63, 0, 62, 60, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad100.scd b/sound_algo/palette/melodies/long/mlPad100.scd new file mode 100644 index 0000000..2896941 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad100 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad100 = [ + 60, 0, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 0, 0, + 0, 82, 64, 0, 0, 0, 84, 0, + 0, 0, 0, 0, 0, 0, 0, 77, + 0, 0, 0, 0, 77, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 74, 0, + 0, 74, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad101.scd b/sound_algo/palette/melodies/long/mlPad101.scd new file mode 100644 index 0000000..a04981c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad101 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad101 = [ + 0, 0, 84, 0, 60, 0, 62, 0, + 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 84, 0, 60, 0, 62, 0, + 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 77, 0, 0, 0, 77, 0, + 0, 0, 0, 0, 64, 0, 0, 0, + 0, 0, 84, 0, 60, 0, 62, 0, + 0, 0, 0, 62, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad102.scd b/sound_algo/palette/melodies/long/mlPad102.scd new file mode 100644 index 0000000..58a8861 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad102 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad102 = [ + 0, 0, 77, 0, 0, 0, 0, 0, + 0, 0, 69, 0, 0, 0, 0, 69, + 79, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 0, 65, 0, + 0, 82, 75, 0, 0, 74, 75, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 75, 0, 0, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 0, 81, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad103.scd b/sound_algo/palette/melodies/long/mlPad103.scd new file mode 100644 index 0000000..0181b38 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad103 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad103 = [ + 0, 0, 74, 0, 0, 69, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 74, 0, 0, 69, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 0, + 79, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 74, 0, 0, 69, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad104.scd b/sound_algo/palette/melodies/long/mlPad104.scd new file mode 100644 index 0000000..11ce079 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad104 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad104 = [ + 77, 0, 0, 0, 0, 0, 64, 69, + 0, 0, 0, 0, 0, 0, 0, 0, + 77, 0, 0, 0, 0, 0, 64, 69, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 76, 0, 0, 0, + 77, 0, 0, 0, 0, 0, 64, 69, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad105.scd b/sound_algo/palette/melodies/long/mlPad105.scd new file mode 100644 index 0000000..4292a4d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad105 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad105 = [ + 60, 84, 0, 0, 0, 0, 0, 0, + 84, 0, 76, 0, 0, 0, 0, 0, + 60, 84, 0, 0, 0, 0, 0, 0, + 84, 0, 76, 0, 0, 0, 0, 0, + 0, 0, 69, 0, 0, 76, 0, 0, + 0, 0, 60, 0, 0, 65, 0, 0, + 60, 84, 0, 0, 0, 0, 0, 0, + 84, 0, 76, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad106.scd b/sound_algo/palette/melodies/long/mlPad106.scd new file mode 100644 index 0000000..88c8607 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad106 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad106 = [ + 0, 0, 71, 72, 0, 0, 0, 0, + 0, 0, 0, 62, 0, 65, 0, 0, + 0, 0, 76, 72, 0, 0, 65, 0, + 0, 0, 0, 71, 0, 0, 0, 0, + 60, 0, 0, 0, 76, 0, 60, 0, + 81, 81, 76, 0, 76, 0, 0, 0, + 0, 0, 0, 84, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad107.scd b/sound_algo/palette/melodies/long/mlPad107.scd new file mode 100644 index 0000000..7cad790 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad107 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad107 = [ + 0, 67, 0, 0, 0, 0, 62, 0, + 0, 0, 0, 83, 0, 0, 0, 0, + 0, 81, 65, 0, 0, 0, 0, 0, + 0, 72, 71, 0, 0, 0, 0, 62, + 0, 0, 0, 0, 81, 0, 0, 0, + 79, 0, 0, 0, 0, 83, 0, 0, + 81, 0, 0, 0, 0, 0, 84, 76, + 0, 0, 0, 62, 0, 0, 84, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad108.scd b/sound_algo/palette/melodies/long/mlPad108.scd new file mode 100644 index 0000000..ab2d115 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad108 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad108 = [ + 0, 0, 0, 72, 0, 0, 0, 0, + 0, 74, 0, 0, 0, 84, 0, 0, + 0, 0, 0, 0, 0, 74, 0, 0, + 0, 69, 67, 0, 0, 69, 0, 0, + 0, 67, 0, 84, 0, 77, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 79, 0, 0, 0, 0, 0, + 0, 0, 84, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad109.scd b/sound_algo/palette/melodies/long/mlPad109.scd new file mode 100644 index 0000000..91d1d26 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad109 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad109 = [ + 63, 0, 75, 0, 0, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 75, 0, 0, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 0, + 0, 80, 0, 0, 0, 0, 0, 0, + 63, 0, 75, 0, 0, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad110.scd b/sound_algo/palette/melodies/long/mlPad110.scd new file mode 100644 index 0000000..d4252f7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad110 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad110 = [ + 0, 0, 0, 0, 0, 0, 0, 77, + 0, 0, 0, 0, 0, 0, 0, 72, + 0, 0, 0, 0, 0, 64, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0, + 69, 0, 65, 0, 0, 0, 0, 0, + 0, 0, 0, 69, 0, 0, 84, 0, + 0, 76, 0, 0, 0, 0, 81, 0, + 0, 0, 0, 82, 81, 72, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad111.scd b/sound_algo/palette/melodies/long/mlPad111.scd new file mode 100644 index 0000000..d7cf59b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad111 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad111 = [ + 0, 65, 0, 0, 0, 0, 0, 0, + 0, 0, 70, 0, 0, 0, 0, 0, + 80, 0, 0, 0, 0, 0, 63, 0, + 0, 0, 75, 0, 84, 0, 0, 63, + 0, 0, 63, 0, 0, 0, 0, 0, + 80, 0, 0, 74, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad112.scd b/sound_algo/palette/melodies/long/mlPad112.scd new file mode 100644 index 0000000..b0cfc27 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad112 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad112 = [ + 0, 62, 72, 0, 0, 71, 0, 0, + 0, 69, 0, 0, 0, 67, 0, 0, + 0, 0, 84, 0, 0, 0, 0, 0, + 84, 74, 0, 0, 0, 0, 69, 0, + 0, 0, 0, 69, 0, 0, 0, 0, + 0, 76, 0, 0, 0, 0, 71, 81, + 0, 0, 0, 62, 0, 0, 0, 0, + 62, 0, 69, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad113.scd b/sound_algo/palette/melodies/long/mlPad113.scd new file mode 100644 index 0000000..152c44d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad113 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad113 = [ + 0, 0, 0, 0, 0, 0, 70, 0, + 0, 0, 77, 0, 0, 0, 69, 0, + 0, 0, 0, 0, 0, 0, 70, 0, + 0, 0, 77, 0, 0, 0, 69, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 82, 0, 0, + 0, 0, 0, 0, 0, 0, 70, 0, + 0, 0, 77, 0, 0, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad114.scd b/sound_algo/palette/melodies/long/mlPad114.scd new file mode 100644 index 0000000..00822ef --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad114 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad114 = [ + 77, 0, 82, 0, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 77, 0, 0, 0, + 0, 84, 0, 0, 0, 0, 82, 0, + 0, 80, 70, 0, 0, 0, 77, 0, + 63, 0, 0, 0, 0, 0, 79, 75, + 0, 0, 0, 0, 80, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPad115.scd b/sound_algo/palette/melodies/long/mlPad115.scd new file mode 100644 index 0000000..5625341 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPad115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPad115 -- long melody (64 steps), genre: pad +// ===================================================================== +( +~mlPad115 = [ + 0, 0, 0, 0, 80, 0, 68, 75, + 60, 0, 0, 0, 84, 0, 0, 0, + 0, 0, 0, 0, 80, 0, 68, 75, + 60, 0, 0, 0, 84, 0, 0, 0, + 0, 62, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 79, + 0, 0, 0, 0, 80, 0, 68, 75, + 60, 0, 0, 0, 84, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPhonk100.scd b/sound_algo/palette/melodies/long/mlPhonk100.scd new file mode 100644 index 0000000..00100f8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPhonk100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPhonk100 -- long melody (64 steps), genre: phonk +// ===================================================================== +( +~mlPhonk100 = [ + 52, 0, 47, 0, 0, 0, 0, 40, + 0, 0, 52, 0, 0, 0, 0, 0, + 52, 0, 0, 0, 47, 0, 0, 0, + 0, 0, 47, 0, 55, 0, 0, 0, + 0, 0, 50, 0, 0, 0, 45, 0, + 50, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 43, 55, 0, + 40, 0, 40, 0, 0, 0, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPhonk101.scd b/sound_algo/palette/melodies/long/mlPhonk101.scd new file mode 100644 index 0000000..bcd1a90 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPhonk101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPhonk101 -- long melody (64 steps), genre: phonk +// ===================================================================== +( +~mlPhonk101 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 47, 0, 0, 0, 0, 0, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 47, 0, 0, 0, 0, 0, 50, 0, + 47, 0, 0, 0, 43, 0, 0, 0, + 0, 0, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 47, 0, 0, 0, 0, 0, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPhonk102.scd b/sound_algo/palette/melodies/long/mlPhonk102.scd new file mode 100644 index 0000000..4ddabfc --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPhonk102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPhonk102 -- long melody (64 steps), genre: phonk +// ===================================================================== +( +~mlPhonk102 = [ + 57, 0, 0, 0, 0, 47, 55, 0, + 0, 38, 0, 0, 59, 0, 0, 0, + 40, 0, 50, 47, 0, 0, 52, 0, + 59, 0, 0, 0, 38, 38, 0, 0, + 59, 0, 40, 0, 52, 0, 57, 0, + 40, 0, 0, 0, 52, 0, 40, 0, + 0, 0, 43, 0, 40, 0, 52, 0, + 0, 0, 38, 0, 43, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPhonk103.scd b/sound_algo/palette/melodies/long/mlPhonk103.scd new file mode 100644 index 0000000..b5f0cb8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPhonk103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPhonk103 -- long melody (64 steps), genre: phonk +// ===================================================================== +( +~mlPhonk103 = [ + 0, 0, 45, 0, 0, 0, 45, 57, + 47, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 0, 0, 45, 57, + 47, 0, 0, 0, 0, 0, 0, 0, + 50, 0, 45, 0, 0, 0, 40, 0, + 0, 0, 43, 0, 38, 0, 0, 0, + 0, 0, 45, 0, 0, 0, 45, 57, + 47, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPhonk104.scd b/sound_algo/palette/melodies/long/mlPhonk104.scd new file mode 100644 index 0000000..72acdb5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPhonk104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPhonk104 -- long melody (64 steps), genre: phonk +// ===================================================================== +( +~mlPhonk104 = [ + 47, 0, 0, 0, 52, 0, 57, 0, + 0, 0, 0, 43, 50, 0, 0, 0, + 47, 0, 0, 0, 52, 0, 57, 0, + 0, 0, 0, 43, 50, 0, 0, 0, + 0, 0, 0, 50, 0, 0, 57, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 47, 0, 0, 0, 52, 0, 57, 0, + 0, 0, 0, 43, 50, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPhonk105.scd b/sound_algo/palette/melodies/long/mlPhonk105.scd new file mode 100644 index 0000000..4052c61 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPhonk105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPhonk105 -- long melody (64 steps), genre: phonk +// ===================================================================== +( +~mlPhonk105 = [ + 0, 0, 0, 59, 0, 43, 57, 0, + 50, 0, 45, 0, 0, 0, 0, 0, + 47, 0, 0, 0, 0, 0, 43, 0, + 40, 0, 59, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 59, 0, 0, 0, + 0, 0, 47, 0, 0, 0, 55, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 43, 0, 50, 0, 0, 55, 0, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPhonk106.scd b/sound_algo/palette/melodies/long/mlPhonk106.scd new file mode 100644 index 0000000..131db70 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPhonk106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPhonk106 -- long melody (64 steps), genre: phonk +// ===================================================================== +( +~mlPhonk106 = [ + 45, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 59, 0, 50, 0, + 0, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 52, 0, 40, 0, 52, 0, + 0, 0, 40, 0, 0, 0, 43, 0, + 0, 40, 0, 0, 55, 0, 0, 0, + 55, 0, 45, 0, 0, 0, 0, 0, + 55, 0, 47, 0, 59, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPhonk107.scd b/sound_algo/palette/melodies/long/mlPhonk107.scd new file mode 100644 index 0000000..134d17d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPhonk107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPhonk107 -- long melody (64 steps), genre: phonk +// ===================================================================== +( +~mlPhonk107 = [ + 0, 43, 43, 0, 0, 0, 0, 0, + 60, 0, 60, 0, 43, 0, 0, 0, + 0, 0, 0, 0, 50, 0, 0, 0, + 0, 0, 0, 0, 0, 57, 43, 0, + 48, 0, 0, 0, 0, 0, 52, 0, + 0, 0, 40, 0, 60, 0, 36, 45, + 0, 0, 0, 0, 57, 0, 0, 0, + 40, 0, 0, 0, 43, 0, 40, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPluck100.scd b/sound_algo/palette/melodies/long/mlPluck100.scd new file mode 100644 index 0000000..5667c63 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPluck100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPluck100 -- long melody (64 steps), genre: pluck +// ===================================================================== +( +~mlPluck100 = [ + 74, 71, 0, 0, 62, 81, 0, 62, + 83, 74, 64, 81, 79, 79, 0, 0, + 74, 64, 0, 0, 0, 83, 67, 0, + 0, 64, 74, 76, 62, 69, 69, 62, + 0, 0, 62, 0, 0, 0, 79, 83, + 83, 76, 81, 0, 0, 62, 69, 0, + 0, 67, 0, 79, 67, 0, 71, 0, + 0, 0, 67, 0, 67, 79, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPluck101.scd b/sound_algo/palette/melodies/long/mlPluck101.scd new file mode 100644 index 0000000..02c0234 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPluck101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPluck101 -- long melody (64 steps), genre: pluck +// ===================================================================== +( +~mlPluck101 = [ + 71, 0, 62, 0, 83, 0, 69, 0, + 62, 0, 74, 67, 69, 0, 0, 81, + 83, 76, 0, 83, 67, 71, 76, 0, + 69, 64, 0, 81, 83, 69, 0, 0, + 0, 67, 81, 74, 0, 0, 74, 69, + 0, 79, 0, 62, 0, 69, 0, 76, + 0, 81, 71, 0, 0, 81, 81, 62, + 0, 62, 0, 0, 0, 69, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPluck102.scd b/sound_algo/palette/melodies/long/mlPluck102.scd new file mode 100644 index 0000000..f41160c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPluck102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPluck102 -- long melody (64 steps), genre: pluck +// ===================================================================== +( +~mlPluck102 = [ + 0, 60, 0, 81, 67, 76, 72, 81, + 64, 84, 0, 0, 0, 0, 0, 81, + 0, 60, 0, 81, 67, 76, 72, 81, + 64, 84, 0, 0, 0, 0, 0, 81, + 0, 74, 74, 0, 69, 60, 60, 74, + 67, 69, 0, 64, 79, 64, 67, 81, + 0, 60, 0, 81, 67, 76, 72, 81, + 64, 84, 0, 0, 0, 0, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPluck103.scd b/sound_algo/palette/melodies/long/mlPluck103.scd new file mode 100644 index 0000000..e55d8de --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPluck103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPluck103 -- long melody (64 steps), genre: pluck +// ===================================================================== +( +~mlPluck103 = [ + 0, 0, 79, 62, 0, 0, 72, 76, + 84, 0, 74, 0, 76, 76, 0, 0, + 0, 0, 79, 62, 0, 0, 72, 76, + 84, 0, 74, 0, 76, 76, 0, 0, + 0, 0, 81, 81, 0, 0, 76, 0, + 0, 0, 76, 0, 0, 0, 0, 0, + 0, 0, 79, 62, 0, 0, 72, 76, + 84, 0, 74, 0, 76, 76, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop100.scd b/sound_algo/palette/melodies/long/mlPop100.scd new file mode 100644 index 0000000..688b53b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop100 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop100 = [ + 0, 0, 72, 74, 0, 0, 64, 0, + 83, 0, 0, 79, 67, 60, 0, 0, + 0, 65, 76, 0, 71, 65, 79, 0, + 79, 0, 81, 0, 60, 71, 74, 0, + 0, 69, 83, 76, 76, 0, 0, 0, + 84, 0, 84, 0, 72, 83, 0, 65, + 0, 0, 77, 0, 79, 72, 0, 0, + 72, 72, 76, 0, 0, 0, 84, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop101.scd b/sound_algo/palette/melodies/long/mlPop101.scd new file mode 100644 index 0000000..fac9d95 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop101 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop101 = [ + 84, 0, 0, 83, 65, 65, 0, 76, + 74, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 60, 60, 0, 0, 74, 0, + 60, 79, 79, 0, 0, 81, 79, 79, + 0, 0, 67, 62, 67, 69, 77, 83, + 76, 64, 0, 0, 0, 69, 69, 0, + 72, 74, 60, 81, 72, 65, 0, 0, + 0, 0, 0, 84, 0, 0, 81, 67 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop102.scd b/sound_algo/palette/melodies/long/mlPop102.scd new file mode 100644 index 0000000..73c0451 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop102 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop102 = [ + 0, 0, 0, 72, 72, 0, 76, 0, + 60, 0, 0, 77, 62, 0, 65, 0, + 0, 0, 0, 72, 72, 0, 76, 0, + 60, 0, 0, 77, 62, 0, 65, 0, + 76, 0, 65, 62, 67, 65, 0, 0, + 0, 0, 0, 67, 0, 0, 83, 84, + 0, 0, 0, 72, 72, 0, 76, 0, + 60, 0, 0, 77, 62, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop103.scd b/sound_algo/palette/melodies/long/mlPop103.scd new file mode 100644 index 0000000..b34417e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop103 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop103 = [ + 67, 0, 0, 84, 0, 0, 83, 67, + 79, 0, 71, 0, 71, 0, 71, 79, + 0, 0, 67, 84, 67, 69, 71, 0, + 79, 0, 81, 0, 62, 62, 0, 0, + 79, 0, 0, 66, 71, 83, 84, 0, + 0, 0, 79, 0, 0, 0, 76, 79, + 74, 0, 0, 66, 79, 72, 0, 62, + 72, 83, 0, 66, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop104.scd b/sound_algo/palette/melodies/long/mlPop104.scd new file mode 100644 index 0000000..70a80df --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop104 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop104 = [ + 72, 72, 0, 0, 84, 0, 72, 62, + 0, 76, 60, 60, 84, 0, 83, 0, + 72, 72, 0, 0, 84, 0, 72, 62, + 0, 76, 60, 60, 84, 0, 83, 0, + 84, 0, 0, 72, 60, 72, 72, 60, + 65, 0, 60, 71, 0, 0, 0, 0, + 72, 72, 0, 0, 84, 0, 72, 62, + 0, 76, 60, 60, 84, 0, 83, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop105.scd b/sound_algo/palette/melodies/long/mlPop105.scd new file mode 100644 index 0000000..dfe8169 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop105 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop105 = [ + 62, 78, 0, 76, 74, 0, 74, 79, + 0, 0, 67, 69, 79, 67, 83, 79, + 62, 78, 0, 76, 74, 0, 74, 79, + 0, 0, 67, 69, 79, 67, 83, 79, + 79, 0, 0, 0, 0, 84, 66, 71, + 62, 83, 76, 67, 0, 0, 79, 69, + 62, 78, 0, 76, 74, 0, 74, 79, + 0, 0, 67, 69, 79, 67, 83, 79 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop106.scd b/sound_algo/palette/melodies/long/mlPop106.scd new file mode 100644 index 0000000..3a9a065 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop106 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop106 = [ + 79, 0, 74, 79, 74, 0, 74, 62, + 67, 0, 60, 76, 79, 71, 0, 72, + 74, 0, 60, 0, 0, 64, 0, 0, + 83, 60, 81, 62, 67, 83, 0, 0, + 79, 0, 0, 64, 67, 62, 0, 0, + 0, 0, 72, 71, 0, 0, 0, 83, + 0, 81, 72, 0, 0, 62, 81, 71, + 0, 0, 0, 79, 79, 83, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop107.scd b/sound_algo/palette/melodies/long/mlPop107.scd new file mode 100644 index 0000000..9513c31 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop107 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop107 = [ + 83, 0, 0, 0, 79, 84, 79, 64, + 67, 74, 81, 60, 79, 81, 60, 83, + 83, 0, 0, 0, 79, 84, 79, 64, + 67, 74, 81, 60, 79, 81, 60, 83, + 79, 78, 0, 0, 0, 0, 0, 74, + 60, 71, 60, 0, 60, 0, 76, 60, + 83, 0, 0, 0, 79, 84, 79, 64, + 67, 74, 81, 60, 79, 81, 60, 83 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop108.scd b/sound_algo/palette/melodies/long/mlPop108.scd new file mode 100644 index 0000000..b987a5d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop108 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop108 = [ + 81, 71, 81, 84, 83, 0, 0, 0, + 0, 0, 0, 0, 74, 0, 79, 0, + 81, 71, 81, 84, 83, 0, 0, 0, + 0, 0, 0, 0, 74, 0, 79, 0, + 0, 84, 0, 69, 0, 0, 62, 76, + 0, 64, 74, 0, 79, 0, 84, 0, + 81, 71, 81, 84, 83, 0, 0, 0, + 0, 0, 0, 0, 74, 0, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop109.scd b/sound_algo/palette/melodies/long/mlPop109.scd new file mode 100644 index 0000000..f756780 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop109 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop109 = [ + 0, 0, 69, 67, 0, 0, 0, 62, + 67, 0, 81, 0, 83, 74, 0, 0, + 78, 0, 60, 0, 76, 81, 69, 84, + 0, 0, 0, 0, 66, 0, 0, 62, + 69, 0, 0, 62, 0, 64, 0, 0, + 79, 0, 67, 81, 62, 60, 84, 71, + 83, 0, 71, 67, 66, 0, 64, 0, + 71, 0, 84, 69, 0, 0, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop110.scd b/sound_algo/palette/melodies/long/mlPop110.scd new file mode 100644 index 0000000..eca2603 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop110 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop110 = [ + 0, 0, 71, 84, 74, 60, 0, 60, + 67, 67, 0, 76, 79, 60, 0, 62, + 0, 83, 76, 83, 60, 74, 0, 0, + 72, 83, 71, 84, 74, 65, 67, 0, + 67, 0, 79, 84, 79, 0, 76, 67, + 0, 0, 0, 76, 76, 65, 71, 71, + 76, 0, 67, 0, 0, 84, 0, 62, + 76, 67, 83, 67, 84, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop111.scd b/sound_algo/palette/melodies/long/mlPop111.scd new file mode 100644 index 0000000..fa3a3ec --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop111 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop111 = [ + 76, 67, 77, 0, 64, 0, 67, 0, + 74, 83, 64, 79, 72, 81, 0, 67, + 67, 0, 0, 0, 71, 0, 0, 0, + 72, 76, 71, 67, 76, 74, 77, 65, + 0, 0, 0, 0, 65, 77, 83, 81, + 72, 83, 69, 65, 0, 81, 74, 67, + 0, 64, 79, 76, 65, 0, 0, 71, + 76, 67, 0, 81, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop112.scd b/sound_algo/palette/melodies/long/mlPop112.scd new file mode 100644 index 0000000..13dd7fb --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop112 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop112 = [ + 0, 64, 84, 0, 0, 0, 0, 0, + 79, 78, 66, 0, 0, 69, 71, 67, + 0, 71, 0, 74, 79, 60, 78, 0, + 78, 81, 67, 60, 0, 71, 0, 64, + 83, 0, 66, 78, 76, 74, 64, 81, + 0, 66, 0, 0, 79, 0, 81, 78, + 0, 67, 0, 0, 84, 76, 79, 0, + 71, 74, 83, 84, 84, 72, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop113.scd b/sound_algo/palette/melodies/long/mlPop113.scd new file mode 100644 index 0000000..991d7ea --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop113 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop113 = [ + 79, 69, 0, 0, 0, 60, 62, 0, + 62, 0, 0, 83, 60, 0, 83, 0, + 84, 65, 77, 71, 69, 0, 67, 62, + 0, 0, 67, 84, 72, 77, 69, 60, + 0, 0, 71, 72, 64, 79, 0, 84, + 67, 0, 84, 0, 0, 65, 71, 0, + 64, 60, 65, 64, 0, 83, 0, 0, + 71, 60, 64, 72, 0, 69, 74, 77 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop114.scd b/sound_algo/palette/melodies/long/mlPop114.scd new file mode 100644 index 0000000..07331c5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop114 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop114 = [ + 71, 81, 69, 0, 81, 0, 0, 65, + 84, 77, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 62, 64, 77, 84, 62, + 72, 0, 0, 62, 79, 0, 0, 65, + 0, 79, 64, 0, 72, 0, 0, 0, + 79, 76, 74, 72, 0, 64, 62, 65, + 84, 0, 76, 0, 81, 0, 0, 0, + 67, 79, 77, 0, 0, 65, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop115.scd b/sound_algo/palette/melodies/long/mlPop115.scd new file mode 100644 index 0000000..4b49c89 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop115 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop115 = [ + 72, 83, 0, 76, 0, 0, 0, 0, + 0, 0, 0, 72, 0, 0, 76, 83, + 79, 0, 0, 64, 0, 65, 77, 0, + 65, 60, 81, 0, 0, 60, 0, 62, + 0, 67, 65, 0, 81, 0, 84, 84, + 0, 0, 81, 0, 0, 76, 65, 62, + 0, 79, 0, 71, 60, 84, 76, 0, + 72, 0, 0, 65, 71, 0, 67, 69 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop116.scd b/sound_algo/palette/melodies/long/mlPop116.scd new file mode 100644 index 0000000..57c0f21 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop116 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop116 = [ + 79, 76, 0, 0, 74, 76, 0, 0, + 74, 71, 0, 71, 0, 76, 64, 0, + 79, 76, 0, 0, 74, 76, 0, 0, + 74, 71, 0, 71, 0, 76, 64, 0, + 74, 79, 83, 71, 0, 81, 0, 74, + 60, 0, 64, 0, 79, 71, 0, 76, + 79, 76, 0, 0, 74, 76, 0, 0, + 74, 71, 0, 71, 0, 76, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop117.scd b/sound_algo/palette/melodies/long/mlPop117.scd new file mode 100644 index 0000000..a77e807 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop117 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop117 = [ + 67, 83, 64, 71, 0, 83, 71, 69, + 81, 76, 66, 0, 66, 69, 67, 71, + 67, 83, 64, 71, 0, 83, 71, 69, + 81, 76, 66, 0, 66, 69, 67, 71, + 72, 0, 81, 0, 83, 71, 0, 0, + 62, 0, 0, 71, 72, 62, 67, 0, + 67, 83, 64, 71, 0, 83, 71, 69, + 81, 76, 66, 0, 66, 69, 67, 71 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop118.scd b/sound_algo/palette/melodies/long/mlPop118.scd new file mode 100644 index 0000000..832f659 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop118 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop118 = [ + 0, 0, 0, 79, 76, 71, 0, 76, + 0, 79, 72, 0, 0, 71, 0, 62, + 0, 0, 0, 69, 0, 0, 67, 76, + 84, 60, 0, 84, 71, 64, 0, 0, + 64, 0, 76, 0, 0, 0, 0, 74, + 72, 0, 79, 83, 0, 0, 0, 0, + 72, 76, 69, 62, 79, 0, 76, 60, + 0, 64, 0, 76, 60, 76, 72, 74 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop119.scd b/sound_algo/palette/melodies/long/mlPop119.scd new file mode 100644 index 0000000..0e57d72 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop119 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop119 = [ + 83, 0, 76, 74, 62, 76, 81, 76, + 62, 0, 0, 0, 74, 81, 0, 76, + 67, 81, 0, 64, 0, 0, 0, 0, + 0, 0, 69, 78, 0, 69, 69, 71, + 62, 79, 0, 0, 0, 71, 0, 83, + 0, 71, 71, 0, 0, 62, 84, 78, + 81, 0, 0, 0, 83, 0, 66, 71, + 0, 78, 0, 0, 83, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop120.scd b/sound_algo/palette/melodies/long/mlPop120.scd new file mode 100644 index 0000000..d2626e0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop120 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop120 = [ + 72, 72, 62, 0, 72, 76, 64, 60, + 79, 65, 83, 69, 83, 69, 69, 67, + 72, 72, 62, 0, 72, 76, 64, 60, + 79, 65, 83, 69, 83, 69, 69, 67, + 76, 79, 69, 65, 67, 81, 74, 0, + 72, 0, 74, 0, 84, 65, 0, 79, + 72, 72, 62, 0, 72, 76, 64, 60, + 79, 65, 83, 69, 83, 69, 69, 67 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop121.scd b/sound_algo/palette/melodies/long/mlPop121.scd new file mode 100644 index 0000000..bd00422 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop121 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop121 = [ + 0, 76, 0, 0, 79, 78, 81, 62, + 83, 69, 78, 72, 83, 72, 62, 74, + 83, 83, 76, 0, 64, 0, 0, 64, + 0, 81, 0, 81, 62, 84, 71, 0, + 79, 67, 69, 64, 0, 72, 72, 71, + 83, 64, 84, 62, 62, 62, 0, 0, + 71, 0, 76, 64, 62, 78, 62, 0, + 84, 71, 0, 81, 71, 62, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop122.scd b/sound_algo/palette/melodies/long/mlPop122.scd new file mode 100644 index 0000000..3dd034d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop122 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop122 = [ + 0, 72, 78, 0, 74, 84, 0, 62, + 67, 84, 64, 79, 0, 62, 0, 81, + 74, 81, 78, 81, 74, 67, 0, 72, + 62, 60, 0, 79, 74, 67, 81, 0, + 66, 72, 0, 62, 83, 0, 60, 0, + 79, 79, 0, 79, 83, 0, 0, 69, + 0, 84, 62, 0, 72, 76, 81, 64, + 62, 64, 0, 60, 74, 71, 62, 83 +]; +) diff --git a/sound_algo/palette/melodies/long/mlPop123.scd b/sound_algo/palette/melodies/long/mlPop123.scd new file mode 100644 index 0000000..86dde36 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlPop123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlPop123 -- long melody (64 steps), genre: pop +// ===================================================================== +( +~mlPop123 = [ + 72, 0, 74, 81, 0, 83, 0, 83, + 0, 0, 64, 67, 71, 79, 0, 84, + 81, 77, 76, 83, 0, 0, 69, 0, + 67, 76, 0, 67, 67, 0, 0, 81, + 67, 0, 0, 72, 76, 72, 74, 74, + 0, 84, 65, 0, 71, 65, 67, 0, + 71, 0, 71, 77, 0, 0, 0, 84, + 0, 79, 60, 0, 0, 76, 69, 74 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro100.scd b/sound_algo/palette/melodies/long/mlRetro100.scd new file mode 100644 index 0000000..45013d4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro100 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro100 = [ + 60, 78, 0, 84, 60, 79, 81, 0, + 83, 66, 69, 67, 62, 0, 66, 60, + 60, 78, 0, 84, 60, 79, 81, 0, + 83, 66, 69, 67, 62, 0, 66, 60, + 67, 0, 74, 64, 0, 0, 0, 64, + 74, 69, 60, 81, 60, 64, 0, 72, + 60, 78, 0, 84, 60, 79, 81, 0, + 83, 66, 69, 67, 62, 0, 66, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro101.scd b/sound_algo/palette/melodies/long/mlRetro101.scd new file mode 100644 index 0000000..4a16013 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro101 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro101 = [ + 71, 71, 0, 0, 81, 71, 0, 61, + 0, 79, 71, 0, 67, 0, 62, 81, + 71, 71, 0, 0, 81, 71, 0, 61, + 0, 79, 71, 0, 67, 0, 62, 81, + 0, 71, 73, 83, 0, 74, 0, 81, + 0, 66, 61, 74, 0, 74, 78, 67, + 71, 71, 0, 0, 81, 71, 0, 61, + 0, 79, 71, 0, 67, 0, 62, 81 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro102.scd b/sound_algo/palette/melodies/long/mlRetro102.scd new file mode 100644 index 0000000..e28a31d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro102 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro102 = [ + 0, 71, 76, 0, 72, 0, 76, 74, + 64, 0, 0, 0, 67, 0, 0, 60, + 0, 71, 76, 0, 72, 0, 76, 74, + 64, 0, 0, 0, 67, 0, 0, 60, + 72, 67, 0, 60, 79, 0, 72, 65, + 0, 0, 0, 79, 64, 60, 0, 60, + 0, 71, 76, 0, 72, 0, 76, 74, + 64, 0, 0, 0, 67, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro103.scd b/sound_algo/palette/melodies/long/mlRetro103.scd new file mode 100644 index 0000000..79b2375 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro103 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro103 = [ + 74, 78, 62, 60, 62, 0, 0, 0, + 74, 0, 83, 83, 71, 66, 78, 60, + 74, 78, 62, 60, 62, 0, 0, 0, + 74, 0, 83, 83, 71, 66, 78, 60, + 62, 64, 69, 72, 83, 66, 74, 0, + 72, 79, 62, 0, 62, 0, 76, 64, + 74, 78, 62, 60, 62, 0, 0, 0, + 74, 0, 83, 83, 71, 66, 78, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro104.scd b/sound_algo/palette/melodies/long/mlRetro104.scd new file mode 100644 index 0000000..43232e2 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro104 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro104 = [ + 78, 0, 69, 83, 0, 74, 84, 84, + 71, 72, 0, 64, 62, 69, 83, 60, + 78, 0, 69, 83, 0, 74, 84, 84, + 71, 72, 0, 64, 62, 69, 83, 60, + 0, 79, 76, 60, 0, 78, 83, 79, + 0, 0, 79, 79, 79, 79, 78, 0, + 78, 0, 69, 83, 0, 74, 84, 84, + 71, 72, 0, 64, 62, 69, 83, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro105.scd b/sound_algo/palette/melodies/long/mlRetro105.scd new file mode 100644 index 0000000..d44c883 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro105 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro105 = [ + 60, 66, 76, 62, 76, 0, 81, 84, + 0, 0, 74, 0, 72, 67, 0, 74, + 60, 66, 76, 62, 76, 0, 81, 84, + 0, 0, 74, 0, 72, 67, 0, 74, + 69, 84, 0, 62, 0, 0, 0, 62, + 62, 74, 84, 71, 0, 79, 0, 83, + 60, 66, 76, 62, 76, 0, 81, 84, + 0, 0, 74, 0, 72, 67, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro106.scd b/sound_algo/palette/melodies/long/mlRetro106.scd new file mode 100644 index 0000000..9f68cea --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro106 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro106 = [ + 62, 0, 74, 79, 0, 84, 0, 81, + 69, 78, 0, 0, 0, 74, 0, 60, + 72, 0, 0, 76, 78, 0, 78, 0, + 67, 0, 66, 74, 0, 0, 62, 72, + 79, 0, 71, 0, 0, 84, 0, 78, + 76, 79, 0, 78, 67, 71, 78, 69, + 84, 78, 81, 0, 81, 66, 83, 0, + 60, 79, 64, 0, 72, 79, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro107.scd b/sound_algo/palette/melodies/long/mlRetro107.scd new file mode 100644 index 0000000..50e2cfb --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro107 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro107 = [ + 84, 69, 83, 60, 69, 60, 67, 0, + 0, 69, 0, 0, 60, 79, 71, 0, + 64, 0, 77, 69, 0, 72, 72, 84, + 74, 81, 0, 62, 0, 72, 81, 0, + 72, 81, 84, 71, 84, 0, 79, 76, + 71, 60, 74, 74, 84, 71, 0, 79, + 69, 62, 72, 71, 72, 0, 0, 0, + 84, 0, 69, 0, 76, 65, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro108.scd b/sound_algo/palette/melodies/long/mlRetro108.scd new file mode 100644 index 0000000..56ec271 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro108 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro108 = [ + 66, 78, 0, 0, 79, 0, 81, 74, + 79, 71, 76, 67, 74, 0, 72, 0, + 0, 84, 0, 84, 0, 0, 0, 83, + 0, 72, 0, 62, 0, 81, 0, 67, + 0, 78, 83, 0, 0, 83, 83, 60, + 60, 72, 0, 0, 74, 67, 62, 71, + 74, 81, 83, 78, 83, 79, 66, 0, + 74, 83, 0, 0, 0, 62, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro109.scd b/sound_algo/palette/melodies/long/mlRetro109.scd new file mode 100644 index 0000000..a59fe48 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro109 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro109 = [ + 79, 76, 71, 84, 71, 0, 0, 0, + 62, 84, 60, 78, 79, 60, 0, 76, + 79, 84, 79, 76, 67, 71, 83, 79, + 71, 78, 60, 76, 78, 76, 60, 66, + 81, 72, 0, 0, 0, 0, 66, 71, + 0, 0, 83, 0, 62, 0, 81, 67, + 74, 67, 79, 67, 83, 84, 78, 78, + 66, 79, 78, 74, 0, 78, 83, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro110.scd b/sound_algo/palette/melodies/long/mlRetro110.scd new file mode 100644 index 0000000..d87f0ad --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro110 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro110 = [ + 62, 69, 0, 67, 72, 0, 72, 62, + 83, 62, 81, 0, 69, 62, 62, 78, + 79, 76, 64, 66, 71, 60, 64, 79, + 76, 69, 67, 0, 79, 69, 64, 74, + 71, 0, 0, 78, 62, 76, 72, 0, + 62, 0, 0, 74, 0, 66, 76, 0, + 0, 71, 74, 67, 71, 78, 72, 69, + 79, 0, 78, 60, 79, 0, 84, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro111.scd b/sound_algo/palette/melodies/long/mlRetro111.scd new file mode 100644 index 0000000..95ce9de --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro111 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro111 = [ + 67, 72, 74, 0, 72, 81, 83, 79, + 79, 0, 76, 78, 66, 74, 66, 66, + 67, 72, 74, 0, 72, 81, 83, 79, + 79, 0, 76, 78, 66, 74, 66, 66, + 0, 79, 84, 60, 62, 78, 78, 62, + 74, 67, 81, 0, 74, 0, 0, 81, + 67, 72, 74, 0, 72, 81, 83, 79, + 79, 0, 76, 78, 66, 74, 66, 66 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro112.scd b/sound_algo/palette/melodies/long/mlRetro112.scd new file mode 100644 index 0000000..3f2d23c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro112 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro112 = [ + 76, 0, 67, 76, 72, 84, 60, 64, + 60, 64, 0, 69, 0, 71, 83, 0, + 79, 0, 79, 81, 60, 0, 64, 83, + 60, 66, 79, 60, 81, 60, 84, 0, + 64, 84, 83, 71, 67, 0, 84, 64, + 0, 78, 60, 62, 0, 78, 76, 81, + 64, 74, 83, 78, 84, 0, 71, 78, + 72, 0, 60, 0, 0, 67, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro113.scd b/sound_algo/palette/melodies/long/mlRetro113.scd new file mode 100644 index 0000000..610b00d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro113 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro113 = [ + 78, 64, 0, 0, 76, 62, 79, 78, + 0, 67, 62, 0, 64, 72, 74, 0, + 78, 64, 0, 0, 76, 62, 79, 78, + 0, 67, 62, 0, 64, 72, 74, 0, + 0, 0, 71, 0, 0, 83, 67, 64, + 0, 78, 64, 64, 79, 0, 0, 0, + 78, 64, 0, 0, 76, 62, 79, 78, + 0, 67, 62, 0, 64, 72, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro114.scd b/sound_algo/palette/melodies/long/mlRetro114.scd new file mode 100644 index 0000000..48c15f4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro114 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro114 = [ + 0, 74, 0, 74, 72, 62, 64, 74, + 83, 79, 0, 78, 83, 0, 67, 72, + 0, 74, 0, 74, 72, 62, 64, 74, + 83, 79, 0, 78, 83, 0, 67, 72, + 78, 0, 0, 0, 0, 83, 84, 60, + 74, 71, 67, 83, 62, 64, 0, 0, + 0, 74, 0, 74, 72, 62, 64, 74, + 83, 79, 0, 78, 83, 0, 67, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro115.scd b/sound_algo/palette/melodies/long/mlRetro115.scd new file mode 100644 index 0000000..820e2b9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro115 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro115 = [ + 0, 67, 81, 71, 0, 69, 67, 73, + 79, 0, 74, 0, 0, 64, 69, 0, + 0, 67, 81, 71, 0, 69, 67, 73, + 79, 0, 74, 0, 0, 64, 69, 0, + 73, 0, 66, 0, 83, 69, 83, 73, + 83, 69, 74, 73, 0, 0, 62, 0, + 0, 67, 81, 71, 0, 69, 67, 73, + 79, 0, 74, 0, 0, 64, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro116.scd b/sound_algo/palette/melodies/long/mlRetro116.scd new file mode 100644 index 0000000..b9f7eb4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro116 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro116 = [ + 0, 81, 66, 64, 79, 0, 79, 67, + 61, 76, 0, 61, 79, 0, 0, 0, + 67, 83, 61, 76, 79, 74, 0, 0, + 0, 83, 71, 0, 71, 83, 69, 66, + 0, 0, 81, 76, 78, 66, 83, 0, + 0, 79, 64, 76, 67, 62, 73, 74, + 0, 61, 0, 69, 71, 71, 78, 67, + 74, 78, 66, 0, 0, 0, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro117.scd b/sound_algo/palette/melodies/long/mlRetro117.scd new file mode 100644 index 0000000..986d6d7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro117 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro117 = [ + 65, 0, 0, 0, 79, 62, 0, 64, + 67, 62, 0, 0, 60, 0, 62, 62, + 64, 77, 0, 0, 62, 79, 0, 0, + 72, 77, 65, 0, 71, 0, 74, 65, + 79, 0, 79, 76, 64, 76, 72, 0, + 84, 76, 0, 72, 72, 69, 74, 79, + 0, 0, 77, 81, 64, 77, 72, 74, + 0, 62, 0, 0, 72, 60, 83, 81 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro118.scd b/sound_algo/palette/melodies/long/mlRetro118.scd new file mode 100644 index 0000000..df5eed4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro118 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro118 = [ + 79, 0, 84, 0, 69, 60, 77, 81, + 0, 67, 0, 0, 64, 71, 71, 71, + 79, 0, 84, 0, 69, 60, 77, 81, + 0, 67, 0, 0, 64, 71, 71, 71, + 79, 77, 72, 77, 0, 71, 0, 0, + 60, 74, 0, 83, 72, 0, 60, 71, + 79, 0, 84, 0, 69, 60, 77, 81, + 0, 67, 0, 0, 64, 71, 71, 71 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro119.scd b/sound_algo/palette/melodies/long/mlRetro119.scd new file mode 100644 index 0000000..e7549d0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro119 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro119 = [ + 62, 71, 60, 76, 79, 0, 78, 0, + 83, 74, 84, 0, 83, 84, 76, 0, + 0, 62, 83, 0, 64, 72, 0, 84, + 79, 0, 72, 72, 0, 72, 0, 0, + 74, 0, 62, 66, 76, 0, 0, 72, + 60, 0, 72, 60, 62, 0, 64, 83, + 0, 81, 66, 67, 81, 60, 60, 76, + 83, 0, 0, 74, 0, 66, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro120.scd b/sound_algo/palette/melodies/long/mlRetro120.scd new file mode 100644 index 0000000..1f44f34 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro120 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro120 = [ + 67, 0, 84, 83, 64, 69, 64, 60, + 71, 67, 71, 71, 78, 79, 72, 76, + 64, 83, 72, 79, 71, 0, 74, 83, + 74, 76, 74, 78, 83, 0, 74, 84, + 74, 62, 71, 81, 83, 0, 67, 78, + 69, 0, 0, 64, 0, 81, 84, 0, + 0, 71, 69, 0, 0, 72, 78, 69, + 67, 71, 0, 64, 0, 60, 0, 78 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro121.scd b/sound_algo/palette/melodies/long/mlRetro121.scd new file mode 100644 index 0000000..ddbd37b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro121 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro121 = [ + 67, 69, 60, 81, 62, 71, 66, 81, + 78, 71, 66, 79, 74, 81, 76, 79, + 84, 64, 64, 0, 0, 0, 74, 0, + 74, 0, 0, 0, 72, 60, 0, 0, + 62, 78, 76, 62, 60, 64, 0, 0, + 60, 74, 0, 74, 71, 74, 64, 67, + 0, 0, 0, 0, 67, 84, 69, 66, + 74, 0, 78, 64, 0, 0, 74, 64 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro122.scd b/sound_algo/palette/melodies/long/mlRetro122.scd new file mode 100644 index 0000000..cc19d3e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro122 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro122 = [ + 72, 67, 0, 64, 67, 0, 60, 64, + 64, 60, 0, 62, 0, 62, 0, 0, + 72, 67, 0, 64, 67, 0, 60, 64, + 64, 60, 0, 62, 0, 62, 0, 0, + 84, 64, 0, 0, 67, 83, 79, 0, + 76, 0, 0, 62, 0, 0, 72, 79, + 72, 67, 0, 64, 67, 0, 60, 64, + 64, 60, 0, 62, 0, 62, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlRetro123.scd b/sound_algo/palette/melodies/long/mlRetro123.scd new file mode 100644 index 0000000..9da1115 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlRetro123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlRetro123 -- long melody (64 steps), genre: retro +// ===================================================================== +( +~mlRetro123 = [ + 71, 78, 78, 74, 74, 0, 0, 64, + 62, 0, 81, 0, 62, 73, 83, 74, + 64, 73, 0, 66, 0, 74, 74, 0, + 0, 0, 81, 61, 79, 64, 79, 74, + 62, 0, 79, 66, 62, 83, 67, 69, + 62, 66, 0, 0, 83, 62, 0, 0, + 0, 0, 69, 71, 71, 0, 79, 83, + 79, 71, 0, 71, 62, 78, 64, 78 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub100.scd b/sound_algo/palette/melodies/long/mlSub100.scd new file mode 100644 index 0000000..18f9b80 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub100 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub100 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub101.scd b/sound_algo/palette/melodies/long/mlSub101.scd new file mode 100644 index 0000000..96895e3 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub101 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub101 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub102.scd b/sound_algo/palette/melodies/long/mlSub102.scd new file mode 100644 index 0000000..e91dd1c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub102 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub102 = [ + 33, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub103.scd b/sound_algo/palette/melodies/long/mlSub103.scd new file mode 100644 index 0000000..8ec03d0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub103 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub103 = [ + 29, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub104.scd b/sound_algo/palette/melodies/long/mlSub104.scd new file mode 100644 index 0000000..c7e1aa8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub104 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub104 = [ + 34, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub105.scd b/sound_algo/palette/melodies/long/mlSub105.scd new file mode 100644 index 0000000..6842215 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub105 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub105 = [ + 29, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub106.scd b/sound_algo/palette/melodies/long/mlSub106.scd new file mode 100644 index 0000000..d02b127 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub106 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub106 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub107.scd b/sound_algo/palette/melodies/long/mlSub107.scd new file mode 100644 index 0000000..45dd15d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub107 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub107 = [ + 27, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub108.scd b/sound_algo/palette/melodies/long/mlSub108.scd new file mode 100644 index 0000000..3cc2f99 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub108 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub108 = [ + 34, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub109.scd b/sound_algo/palette/melodies/long/mlSub109.scd new file mode 100644 index 0000000..f3abd84 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub109 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub109 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub110.scd b/sound_algo/palette/melodies/long/mlSub110.scd new file mode 100644 index 0000000..2a4ebe9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub110 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub110 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub111.scd b/sound_algo/palette/melodies/long/mlSub111.scd new file mode 100644 index 0000000..1d4eb0c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub111 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub111 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub112.scd b/sound_algo/palette/melodies/long/mlSub112.scd new file mode 100644 index 0000000..9038425 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub112 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub112 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub113.scd b/sound_algo/palette/melodies/long/mlSub113.scd new file mode 100644 index 0000000..0da9936 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub113 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub113 = [ + 38, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub114.scd b/sound_algo/palette/melodies/long/mlSub114.scd new file mode 100644 index 0000000..460988e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub114 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub114 = [ + 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub115.scd b/sound_algo/palette/melodies/long/mlSub115.scd new file mode 100644 index 0000000..00186fb --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub115 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub115 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub116.scd b/sound_algo/palette/melodies/long/mlSub116.scd new file mode 100644 index 0000000..b943912 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub116 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub116 = [ + 24, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub117.scd b/sound_algo/palette/melodies/long/mlSub117.scd new file mode 100644 index 0000000..2c19db0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub117 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub117 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub118.scd b/sound_algo/palette/melodies/long/mlSub118.scd new file mode 100644 index 0000000..f2202cf --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub118 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub118 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSub119.scd b/sound_algo/palette/melodies/long/mlSub119.scd new file mode 100644 index 0000000..5171ebf --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSub119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSub119 -- long melody (64 steps), genre: sub +// ===================================================================== +( +~mlSub119 = [ + 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave100.scd b/sound_algo/palette/melodies/long/mlSynthwave100.scd new file mode 100644 index 0000000..ac3b53e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave100 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave100 = [ + 0, 67, 53, 77, 74, 52, 52, 67, + 81, 77, 81, 0, 0, 48, 58, 0, + 0, 67, 53, 77, 74, 52, 52, 67, + 81, 77, 81, 0, 0, 48, 58, 0, + 64, 55, 57, 74, 76, 0, 0, 52, + 65, 74, 79, 82, 74, 57, 0, 72, + 0, 67, 53, 77, 74, 52, 52, 67, + 81, 77, 81, 0, 0, 48, 58, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave101.scd b/sound_algo/palette/melodies/long/mlSynthwave101.scd new file mode 100644 index 0000000..587134b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave101 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave101 = [ + 0, 76, 71, 74, 69, 65, 55, 0, + 69, 84, 0, 48, 0, 77, 52, 0, + 60, 83, 0, 64, 52, 0, 52, 64, + 83, 67, 0, 0, 0, 65, 60, 55, + 76, 65, 0, 0, 60, 57, 59, 0, + 81, 53, 0, 77, 50, 76, 62, 71, + 0, 0, 72, 0, 0, 74, 74, 0, + 0, 0, 62, 71, 83, 67, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave102.scd b/sound_algo/palette/melodies/long/mlSynthwave102.scd new file mode 100644 index 0000000..353a226 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave102 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave102 = [ + 52, 55, 83, 60, 72, 65, 79, 53, + 64, 84, 0, 0, 52, 57, 69, 81, + 52, 55, 83, 60, 72, 65, 79, 53, + 64, 84, 0, 0, 52, 57, 69, 81, + 57, 74, 79, 0, 72, 83, 77, 74, + 64, 64, 72, 67, 48, 67, 0, 52, + 52, 55, 83, 60, 72, 65, 79, 53, + 64, 84, 0, 0, 52, 57, 69, 81 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave103.scd b/sound_algo/palette/melodies/long/mlSynthwave103.scd new file mode 100644 index 0000000..c5184ce --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave103 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave103 = [ + 62, 59, 62, 55, 84, 53, 67, 67, + 0, 53, 74, 81, 60, 0, 60, 57, + 62, 59, 62, 55, 84, 53, 67, 67, + 0, 53, 74, 81, 60, 0, 60, 57, + 57, 0, 57, 55, 0, 53, 50, 50, + 52, 0, 0, 0, 84, 62, 0, 0, + 62, 59, 62, 55, 84, 53, 67, 67, + 0, 53, 74, 81, 60, 0, 60, 57 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave104.scd b/sound_algo/palette/melodies/long/mlSynthwave104.scd new file mode 100644 index 0000000..7c83047 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave104 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave104 = [ + 67, 57, 67, 0, 77, 81, 0, 76, + 57, 64, 72, 65, 69, 0, 74, 52, + 0, 0, 74, 0, 0, 0, 0, 0, + 55, 50, 82, 0, 57, 0, 50, 72, + 58, 0, 60, 50, 0, 0, 48, 0, + 62, 0, 70, 70, 84, 74, 48, 55, + 0, 57, 0, 82, 64, 67, 0, 60, + 69, 0, 55, 84, 81, 48, 67, 82 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave105.scd b/sound_algo/palette/melodies/long/mlSynthwave105.scd new file mode 100644 index 0000000..e384bf3 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave105 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave105 = [ + 84, 0, 69, 79, 0, 79, 58, 81, + 64, 0, 77, 55, 69, 84, 74, 50, + 76, 0, 57, 60, 50, 55, 64, 76, + 62, 62, 74, 0, 74, 0, 57, 55, + 74, 50, 72, 64, 81, 82, 0, 62, + 67, 84, 69, 0, 76, 0, 0, 55, + 0, 81, 67, 0, 74, 65, 64, 84, + 0, 50, 65, 0, 0, 84, 0, 64 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave106.scd b/sound_algo/palette/melodies/long/mlSynthwave106.scd new file mode 100644 index 0000000..1a7bff1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave106 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave106 = [ + 62, 58, 0, 70, 0, 0, 60, 81, + 0, 0, 60, 67, 62, 84, 58, 50, + 0, 50, 58, 58, 70, 57, 48, 0, + 0, 0, 0, 65, 0, 52, 52, 0, + 70, 64, 52, 64, 57, 70, 58, 79, + 69, 48, 52, 0, 58, 77, 0, 53, + 69, 84, 0, 79, 65, 48, 55, 74, + 81, 74, 60, 70, 57, 62, 0, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave107.scd b/sound_algo/palette/melodies/long/mlSynthwave107.scd new file mode 100644 index 0000000..14c4921 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave107 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave107 = [ + 0, 74, 84, 0, 69, 77, 48, 0, + 77, 53, 74, 81, 0, 53, 50, 57, + 53, 0, 69, 0, 0, 0, 81, 76, + 81, 0, 72, 64, 57, 48, 57, 74, + 0, 79, 67, 50, 62, 76, 0, 76, + 0, 0, 53, 0, 79, 82, 0, 64, + 55, 72, 0, 0, 69, 64, 81, 74, + 57, 52, 48, 0, 82, 0, 64, 76 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave108.scd b/sound_algo/palette/melodies/long/mlSynthwave108.scd new file mode 100644 index 0000000..3c74f52 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave108 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave108 = [ + 72, 76, 53, 55, 57, 60, 64, 0, + 0, 53, 57, 0, 72, 84, 52, 76, + 72, 76, 53, 55, 57, 60, 64, 0, + 0, 53, 57, 0, 72, 84, 52, 76, + 81, 76, 53, 0, 0, 77, 79, 48, + 57, 0, 48, 0, 0, 79, 0, 69, + 72, 76, 53, 55, 57, 60, 64, 0, + 0, 53, 57, 0, 72, 84, 52, 76 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave109.scd b/sound_algo/palette/melodies/long/mlSynthwave109.scd new file mode 100644 index 0000000..facaf2f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave109 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave109 = [ + 0, 0, 69, 64, 60, 0, 48, 83, + 48, 83, 60, 0, 69, 53, 0, 0, + 0, 71, 0, 0, 48, 0, 0, 60, + 0, 0, 0, 0, 69, 55, 64, 0, + 76, 59, 55, 48, 0, 52, 0, 0, + 79, 0, 52, 0, 81, 0, 0, 55, + 0, 0, 0, 83, 0, 69, 84, 83, + 0, 0, 0, 0, 77, 48, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave110.scd b/sound_algo/palette/melodies/long/mlSynthwave110.scd new file mode 100644 index 0000000..faacd88 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave110 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave110 = [ + 0, 72, 0, 0, 50, 77, 0, 70, + 0, 74, 52, 0, 62, 50, 0, 60, + 53, 0, 58, 74, 77, 53, 0, 58, + 0, 58, 69, 0, 0, 84, 0, 64, + 81, 0, 74, 62, 52, 60, 52, 53, + 81, 77, 0, 77, 0, 62, 48, 48, + 0, 53, 62, 69, 69, 76, 0, 0, + 0, 0, 84, 52, 74, 74, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlSynthwave111.scd b/sound_algo/palette/melodies/long/mlSynthwave111.scd new file mode 100644 index 0000000..563b279 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlSynthwave111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlSynthwave111 -- long melody (64 steps), genre: synthwave +// ===================================================================== +( +~mlSynthwave111 = [ + 0, 72, 60, 60, 72, 67, 55, 0, + 0, 0, 70, 76, 65, 0, 48, 77, + 50, 57, 76, 81, 0, 0, 77, 65, + 0, 82, 77, 55, 84, 0, 50, 77, + 50, 0, 81, 60, 50, 74, 74, 52, + 62, 62, 0, 0, 52, 65, 50, 55, + 84, 58, 0, 65, 57, 0, 52, 79, + 69, 58, 53, 0, 81, 82, 69, 84 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension100.scd b/sound_algo/palette/melodies/long/mlTension100.scd new file mode 100644 index 0000000..4cba7d2 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension100 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension100 = [ + 43, 0, 0, 0, 57, 59, 0, 0, + 0, 48, 0, 57, 0, 41, 53, 47, + 43, 0, 0, 0, 57, 59, 0, 0, + 0, 48, 0, 57, 0, 41, 53, 47, + 50, 57, 53, 47, 38, 45, 50, 36, + 50, 47, 53, 40, 38, 0, 40, 53, + 43, 0, 0, 0, 57, 59, 0, 0, + 0, 48, 0, 57, 0, 41, 53, 47 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension101.scd b/sound_algo/palette/melodies/long/mlTension101.scd new file mode 100644 index 0000000..80e4867 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension101 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension101 = [ + 0, 58, 38, 47, 56, 56, 44, 0, + 38, 0, 0, 0, 41, 59, 43, 0, + 47, 56, 56, 0, 38, 41, 47, 46, + 38, 0, 50, 59, 0, 0, 50, 59, + 47, 0, 52, 46, 47, 0, 40, 0, + 53, 55, 53, 52, 0, 0, 0, 0, + 49, 58, 38, 0, 0, 0, 0, 40, + 43, 47, 56, 59, 58, 52, 56, 43 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension102.scd b/sound_algo/palette/melodies/long/mlTension102.scd new file mode 100644 index 0000000..6913737 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension102 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension102 = [ + 43, 51, 36, 60, 0, 51, 46, 45, + 55, 48, 54, 60, 40, 42, 0, 36, + 43, 51, 36, 60, 0, 51, 46, 45, + 55, 48, 54, 60, 40, 42, 0, 36, + 39, 43, 0, 46, 52, 37, 40, 54, + 37, 49, 49, 39, 0, 36, 0, 46, + 43, 51, 36, 60, 0, 51, 46, 45, + 55, 48, 54, 60, 40, 42, 0, 36 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension103.scd b/sound_algo/palette/melodies/long/mlTension103.scd new file mode 100644 index 0000000..1c4a263 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension103 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension103 = [ + 52, 52, 43, 46, 58, 0, 55, 0, + 40, 0, 36, 37, 51, 0, 58, 40, + 52, 37, 58, 48, 43, 60, 36, 0, + 40, 52, 37, 46, 46, 0, 45, 0, + 40, 52, 51, 0, 46, 36, 39, 55, + 43, 57, 54, 55, 0, 60, 52, 43, + 52, 49, 0, 49, 52, 42, 60, 54, + 58, 55, 0, 0, 43, 37, 37, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension104.scd b/sound_algo/palette/melodies/long/mlTension104.scd new file mode 100644 index 0000000..e90c0a8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension104 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension104 = [ + 38, 43, 43, 41, 0, 0, 43, 48, + 40, 0, 0, 41, 59, 0, 45, 53, + 38, 43, 43, 41, 0, 0, 43, 48, + 40, 0, 0, 41, 59, 0, 45, 53, + 0, 38, 41, 0, 38, 43, 0, 53, + 38, 50, 0, 43, 0, 38, 52, 0, + 38, 43, 43, 41, 0, 0, 43, 48, + 40, 0, 0, 41, 59, 0, 45, 53 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension105.scd b/sound_algo/palette/melodies/long/mlTension105.scd new file mode 100644 index 0000000..e9a71f7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension105 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension105 = [ + 58, 0, 0, 57, 58, 38, 40, 40, + 52, 43, 50, 52, 48, 41, 40, 0, + 58, 0, 0, 57, 58, 38, 40, 40, + 52, 43, 50, 52, 48, 41, 40, 0, + 36, 41, 55, 38, 55, 52, 57, 57, + 43, 40, 48, 52, 43, 46, 0, 52, + 58, 0, 0, 57, 58, 38, 40, 40, + 52, 43, 50, 52, 48, 41, 40, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension106.scd b/sound_algo/palette/melodies/long/mlTension106.scd new file mode 100644 index 0000000..4701845 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension106 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension106 = [ + 50, 38, 0, 0, 0, 0, 44, 0, + 59, 38, 49, 0, 47, 55, 56, 0, + 41, 50, 0, 0, 38, 55, 0, 0, + 44, 50, 40, 52, 58, 0, 49, 0, + 0, 43, 0, 40, 59, 38, 52, 0, + 38, 52, 56, 47, 47, 44, 50, 38, + 52, 56, 0, 41, 55, 49, 0, 47, + 0, 56, 0, 41, 0, 47, 56, 59 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension107.scd b/sound_algo/palette/melodies/long/mlTension107.scd new file mode 100644 index 0000000..ba08968 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension107 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension107 = [ + 52, 38, 52, 41, 55, 0, 0, 58, + 52, 58, 36, 57, 0, 38, 0, 50, + 0, 0, 52, 36, 0, 0, 0, 0, + 36, 43, 36, 52, 43, 53, 38, 0, + 0, 43, 53, 0, 40, 36, 38, 57, + 0, 50, 53, 0, 41, 0, 45, 36, + 0, 46, 50, 0, 45, 0, 38, 43, + 0, 45, 53, 52, 40, 55, 46, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension108.scd b/sound_algo/palette/melodies/long/mlTension108.scd new file mode 100644 index 0000000..e0f4b71 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension108 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension108 = [ + 47, 47, 48, 41, 43, 43, 53, 0, + 38, 0, 48, 57, 50, 0, 55, 40, + 48, 43, 57, 60, 0, 0, 0, 52, + 59, 0, 0, 50, 0, 0, 45, 0, + 0, 40, 0, 36, 38, 41, 55, 0, + 47, 43, 57, 0, 50, 0, 52, 45, + 0, 0, 38, 40, 47, 0, 41, 0, + 0, 59, 0, 48, 47, 40, 40, 36 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension109.scd b/sound_algo/palette/melodies/long/mlTension109.scd new file mode 100644 index 0000000..4b11ae5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension109 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension109 = [ + 43, 0, 52, 0, 40, 55, 36, 48, + 43, 0, 49, 48, 0, 52, 48, 60, + 43, 0, 52, 0, 40, 55, 36, 48, + 43, 0, 49, 48, 0, 52, 48, 60, + 0, 43, 36, 0, 57, 0, 54, 40, + 43, 0, 42, 52, 0, 52, 0, 0, + 43, 0, 52, 0, 40, 55, 36, 48, + 43, 0, 49, 48, 0, 52, 48, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension110.scd b/sound_algo/palette/melodies/long/mlTension110.scd new file mode 100644 index 0000000..66db321 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension110 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension110 = [ + 0, 59, 43, 0, 53, 38, 47, 57, + 0, 60, 40, 43, 38, 40, 0, 0, + 0, 59, 43, 0, 53, 38, 47, 57, + 0, 60, 40, 43, 38, 40, 0, 0, + 47, 45, 41, 0, 38, 41, 60, 41, + 47, 40, 45, 0, 0, 0, 55, 60, + 0, 59, 43, 0, 53, 38, 47, 57, + 0, 60, 40, 43, 38, 40, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension111.scd b/sound_algo/palette/melodies/long/mlTension111.scd new file mode 100644 index 0000000..7eb022b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension111 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension111 = [ + 0, 0, 47, 50, 47, 55, 55, 47, + 38, 43, 41, 36, 43, 48, 41, 40, + 0, 0, 47, 50, 47, 55, 55, 47, + 38, 43, 41, 36, 43, 48, 41, 40, + 50, 36, 52, 59, 0, 45, 43, 48, + 36, 52, 47, 0, 47, 55, 47, 60, + 0, 0, 47, 50, 47, 55, 55, 47, + 38, 43, 41, 36, 43, 48, 41, 40 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension112.scd b/sound_algo/palette/melodies/long/mlTension112.scd new file mode 100644 index 0000000..f9ed84a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension112 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension112 = [ + 43, 0, 0, 0, 47, 0, 58, 0, + 50, 59, 0, 49, 38, 0, 46, 40, + 43, 0, 0, 0, 47, 0, 58, 0, + 50, 59, 0, 49, 38, 0, 46, 40, + 0, 41, 43, 46, 0, 55, 38, 53, + 44, 0, 46, 0, 56, 40, 38, 56, + 43, 0, 0, 0, 47, 0, 58, 0, + 50, 59, 0, 49, 38, 0, 46, 40 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension113.scd b/sound_algo/palette/melodies/long/mlTension113.scd new file mode 100644 index 0000000..41377a6 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension113 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension113 = [ + 0, 0, 50, 0, 0, 0, 47, 59, + 38, 0, 0, 55, 38, 59, 59, 40, + 59, 40, 47, 0, 38, 58, 0, 0, + 59, 37, 37, 0, 0, 55, 0, 43, + 59, 0, 50, 0, 59, 47, 0, 58, + 50, 0, 53, 0, 56, 58, 0, 0, + 0, 0, 0, 0, 50, 43, 0, 37, + 0, 58, 0, 37, 0, 58, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension114.scd b/sound_algo/palette/melodies/long/mlTension114.scd new file mode 100644 index 0000000..14f3477 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension114 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension114 = [ + 52, 38, 46, 53, 55, 46, 0, 53, + 0, 40, 58, 50, 43, 36, 0, 36, + 52, 38, 46, 53, 55, 46, 0, 53, + 0, 40, 58, 50, 43, 36, 0, 36, + 57, 55, 53, 0, 0, 0, 38, 57, + 55, 55, 0, 38, 58, 0, 50, 0, + 52, 38, 46, 53, 55, 46, 0, 53, + 0, 40, 58, 50, 43, 36, 0, 36 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension115.scd b/sound_algo/palette/melodies/long/mlTension115.scd new file mode 100644 index 0000000..95f5c29 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension115 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension115 = [ + 0, 0, 0, 52, 41, 0, 59, 47, + 0, 0, 0, 47, 38, 37, 58, 40, + 0, 0, 0, 52, 41, 0, 59, 47, + 0, 0, 0, 47, 38, 37, 58, 40, + 38, 38, 0, 55, 38, 44, 38, 49, + 43, 37, 44, 55, 50, 46, 0, 40, + 0, 0, 0, 52, 41, 0, 59, 47, + 0, 0, 0, 47, 38, 37, 58, 40 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension116.scd b/sound_algo/palette/melodies/long/mlTension116.scd new file mode 100644 index 0000000..f8391fe --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension116 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension116 = [ + 37, 44, 49, 43, 0, 49, 55, 0, + 52, 0, 37, 59, 56, 37, 43, 52, + 37, 44, 49, 43, 0, 49, 55, 0, + 52, 0, 37, 59, 56, 37, 43, 52, + 50, 52, 59, 41, 44, 0, 0, 0, + 58, 53, 0, 0, 0, 0, 0, 38, + 37, 44, 49, 43, 0, 49, 55, 0, + 52, 0, 37, 59, 56, 37, 43, 52 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension117.scd b/sound_algo/palette/melodies/long/mlTension117.scd new file mode 100644 index 0000000..a9c4737 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension117 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension117 = [ + 0, 0, 46, 40, 41, 38, 59, 59, + 43, 38, 55, 55, 47, 0, 53, 59, + 0, 0, 46, 40, 41, 38, 59, 59, + 43, 38, 55, 55, 47, 0, 53, 59, + 38, 55, 0, 38, 47, 43, 44, 47, + 0, 56, 38, 56, 0, 58, 0, 0, + 0, 0, 46, 40, 41, 38, 59, 59, + 43, 38, 55, 55, 47, 0, 53, 59 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension118.scd b/sound_algo/palette/melodies/long/mlTension118.scd new file mode 100644 index 0000000..8942554 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension118 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension118 = [ + 53, 0, 46, 0, 50, 43, 0, 37, + 0, 0, 43, 0, 0, 40, 46, 0, + 53, 0, 46, 0, 50, 43, 0, 37, + 0, 0, 43, 0, 0, 40, 46, 0, + 59, 49, 47, 58, 49, 53, 47, 41, + 50, 49, 38, 56, 56, 0, 37, 0, + 53, 0, 46, 0, 50, 43, 0, 37, + 0, 0, 43, 0, 0, 40, 46, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTension119.scd b/sound_algo/palette/melodies/long/mlTension119.scd new file mode 100644 index 0000000..187138c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTension119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTension119 -- long melody (64 steps), genre: tension +// ===================================================================== +( +~mlTension119 = [ + 52, 46, 49, 49, 0, 50, 40, 0, + 0, 56, 41, 44, 0, 0, 0, 0, + 38, 0, 0, 38, 0, 59, 47, 41, + 47, 0, 43, 0, 0, 50, 0, 0, + 0, 56, 38, 0, 50, 58, 56, 56, + 0, 0, 43, 40, 43, 0, 59, 56, + 59, 0, 0, 0, 0, 52, 56, 0, + 38, 38, 0, 0, 59, 58, 0, 47 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance100.scd b/sound_algo/palette/melodies/long/mlTrance100.scd new file mode 100644 index 0000000..44ea624 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance100 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance100 = [ + 64, 62, 83, 64, 64, 74, 60, 72, + 64, 65, 67, 69, 74, 76, 65, 81, + 60, 62, 64, 65, 84, 0, 0, 77, + 64, 65, 67, 69, 74, 0, 72, 60, + 69, 71, 72, 74, 69, 69, 0, 81, + 65, 67, 69, 71, 74, 62, 77, 76, + 65, 67, 69, 71, 76, 62, 62, 77, + 60, 62, 64, 65, 69, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance101.scd b/sound_algo/palette/melodies/long/mlTrance101.scd new file mode 100644 index 0000000..b693b91 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance101 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance101 = [ + 72, 60, 71, 65, 72, 0, 69, 71, + 81, 67, 74, 69, 69, 79, 76, 76, + 72, 60, 71, 65, 72, 0, 69, 71, + 81, 67, 74, 69, 69, 79, 76, 76, + 67, 69, 71, 72, 64, 60, 81, 77, + 67, 69, 71, 72, 84, 71, 67, 83, + 72, 60, 71, 65, 72, 0, 69, 71, + 81, 67, 74, 69, 69, 79, 76, 76 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance102.scd b/sound_algo/palette/melodies/long/mlTrance102.scd new file mode 100644 index 0000000..497659b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance102 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance102 = [ + 69, 71, 73, 74, 61, 61, 76, 71, + 62, 64, 66, 68, 78, 80, 76, 0, + 69, 71, 73, 74, 61, 61, 76, 71, + 62, 64, 66, 68, 78, 80, 76, 0, + 64, 66, 68, 69, 78, 62, 0, 73, + 69, 71, 73, 74, 81, 73, 78, 0, + 69, 71, 73, 74, 61, 61, 76, 71, + 62, 64, 66, 68, 78, 80, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance103.scd b/sound_algo/palette/melodies/long/mlTrance103.scd new file mode 100644 index 0000000..95662b1 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance103 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance103 = [ + 62, 64, 65, 68, 0, 0, 62, 68, + 65, 68, 69, 71, 84, 84, 81, 64, + 62, 64, 65, 68, 0, 0, 62, 68, + 65, 68, 69, 71, 84, 84, 81, 64, + 71, 74, 0, 0, 83, 64, 0, 0, + 62, 64, 65, 68, 68, 0, 76, 71, + 62, 64, 65, 68, 0, 0, 62, 68, + 65, 68, 69, 71, 84, 84, 81, 64 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance104.scd b/sound_algo/palette/melodies/long/mlTrance104.scd new file mode 100644 index 0000000..34d0972 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance104 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance104 = [ + 71, 73, 74, 77, 78, 61, 65, 0, + 0, 83, 80, 68, 73, 0, 0, 0, + 61, 62, 65, 66, 80, 71, 80, 80, + 68, 69, 71, 73, 0, 61, 69, 0, + 66, 68, 69, 71, 66, 83, 83, 62, + 0, 62, 81, 0, 78, 61, 74, 77, + 66, 68, 69, 71, 78, 78, 69, 78, + 81, 68, 69, 66, 62, 0, 69, 73 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance105.scd b/sound_algo/palette/melodies/long/mlTrance105.scd new file mode 100644 index 0000000..15d8489 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance105 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance105 = [ + 61, 62, 65, 66, 73, 71, 77, 74, + 73, 83, 69, 0, 66, 68, 74, 69, + 61, 62, 65, 66, 73, 71, 77, 74, + 73, 83, 69, 0, 66, 68, 74, 69, + 65, 66, 68, 69, 78, 66, 62, 81, + 69, 71, 73, 74, 66, 0, 77, 0, + 61, 62, 65, 66, 73, 71, 77, 74, + 73, 83, 69, 0, 66, 68, 74, 69 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance106.scd b/sound_algo/palette/melodies/long/mlTrance106.scd new file mode 100644 index 0000000..228cb1e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance106 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance106 = [ + 80, 0, 0, 76, 69, 71, 71, 72, + 62, 64, 65, 68, 0, 76, 64, 83, + 80, 0, 0, 76, 69, 71, 71, 72, + 62, 64, 65, 68, 0, 76, 64, 83, + 60, 62, 64, 65, 0, 60, 64, 74, + 69, 0, 0, 83, 65, 74, 65, 84, + 80, 0, 0, 76, 69, 71, 71, 72, + 62, 64, 65, 68, 0, 76, 64, 83 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance107.scd b/sound_algo/palette/melodies/long/mlTrance107.scd new file mode 100644 index 0000000..d5cc81b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance107 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance107 = [ + 60, 76, 81, 65, 0, 62, 77, 60, + 0, 65, 0, 71, 0, 0, 79, 0, + 60, 76, 81, 65, 0, 62, 77, 60, + 0, 65, 0, 71, 0, 0, 79, 0, + 0, 64, 60, 65, 64, 71, 65, 0, + 81, 81, 0, 64, 60, 83, 0, 72, + 60, 76, 81, 65, 0, 62, 77, 60, + 0, 65, 0, 71, 0, 0, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance108.scd b/sound_algo/palette/melodies/long/mlTrance108.scd new file mode 100644 index 0000000..2bb741d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance108 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance108 = [ + 69, 71, 72, 74, 71, 0, 74, 0, + 64, 65, 68, 69, 64, 71, 83, 60, + 69, 71, 72, 74, 71, 0, 74, 0, + 64, 65, 68, 69, 64, 71, 83, 60, + 69, 71, 72, 74, 0, 0, 81, 84, + 62, 64, 65, 68, 83, 71, 62, 72, + 69, 71, 72, 74, 71, 0, 74, 0, + 64, 65, 68, 69, 64, 71, 83, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance109.scd b/sound_algo/palette/melodies/long/mlTrance109.scd new file mode 100644 index 0000000..c3bc581 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance109 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance109 = [ + 61, 73, 61, 0, 71, 71, 80, 73, + 64, 66, 68, 69, 81, 71, 0, 0, + 61, 73, 61, 0, 71, 71, 80, 73, + 64, 66, 68, 69, 81, 71, 0, 0, + 68, 69, 71, 73, 83, 69, 61, 0, + 78, 74, 0, 64, 81, 74, 83, 68, + 61, 73, 61, 0, 71, 71, 80, 73, + 64, 66, 68, 69, 81, 71, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance110.scd b/sound_algo/palette/melodies/long/mlTrance110.scd new file mode 100644 index 0000000..ee3a63f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance110 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance110 = [ + 69, 71, 73, 74, 64, 0, 81, 78, + 81, 83, 69, 81, 62, 78, 61, 83, + 62, 64, 66, 68, 81, 69, 74, 80, + 61, 62, 64, 66, 78, 66, 62, 68, + 81, 73, 81, 73, 71, 66, 71, 83, + 69, 69, 0, 81, 0, 71, 62, 71, + 71, 73, 74, 76, 78, 76, 66, 83, + 71, 73, 74, 76, 69, 83, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance111.scd b/sound_algo/palette/melodies/long/mlTrance111.scd new file mode 100644 index 0000000..daf371c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance111 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance111 = [ + 0, 68, 61, 77, 0, 69, 78, 65, + 66, 68, 69, 71, 62, 68, 80, 68, + 0, 68, 61, 77, 0, 69, 78, 65, + 66, 68, 69, 71, 62, 68, 80, 68, + 68, 69, 71, 73, 0, 62, 66, 62, + 81, 81, 81, 65, 73, 78, 83, 77, + 0, 68, 61, 77, 0, 69, 78, 65, + 66, 68, 69, 71, 62, 68, 80, 68 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance112.scd b/sound_algo/palette/melodies/long/mlTrance112.scd new file mode 100644 index 0000000..e8919b0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance112 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance112 = [ + 66, 68, 69, 71, 66, 62, 78, 69, + 66, 68, 69, 71, 71, 83, 74, 78, + 66, 68, 69, 71, 66, 62, 78, 69, + 66, 68, 69, 71, 71, 83, 74, 78, + 71, 73, 74, 76, 68, 69, 73, 71, + 71, 73, 74, 76, 80, 74, 81, 71, + 66, 68, 69, 71, 66, 62, 78, 69, + 66, 68, 69, 71, 71, 83, 74, 78 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance113.scd b/sound_algo/palette/melodies/long/mlTrance113.scd new file mode 100644 index 0000000..d934a60 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance113 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance113 = [ + 62, 65, 66, 68, 69, 77, 74, 0, + 69, 71, 73, 74, 78, 0, 80, 83, + 66, 65, 80, 0, 65, 61, 77, 62, + 68, 69, 71, 73, 69, 74, 62, 73, + 68, 69, 71, 73, 83, 78, 77, 68, + 78, 65, 0, 73, 73, 71, 80, 77, + 61, 62, 65, 66, 66, 71, 62, 73, + 62, 65, 66, 68, 69, 66, 74, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance114.scd b/sound_algo/palette/melodies/long/mlTrance114.scd new file mode 100644 index 0000000..8485e1b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance114 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance114 = [ + 69, 71, 73, 74, 0, 71, 0, 0, + 71, 73, 74, 77, 73, 77, 68, 81, + 69, 71, 73, 74, 0, 71, 0, 0, + 71, 73, 74, 77, 73, 77, 68, 81, + 0, 0, 0, 0, 0, 0, 0, 80, + 69, 71, 73, 74, 68, 62, 0, 0, + 69, 71, 73, 74, 0, 71, 0, 0, + 71, 73, 74, 77, 73, 77, 68, 81 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance115.scd b/sound_algo/palette/melodies/long/mlTrance115.scd new file mode 100644 index 0000000..7a39889 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance115 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance115 = [ + 61, 62, 64, 66, 69, 0, 64, 78, + 69, 71, 73, 74, 81, 0, 66, 68, + 61, 62, 64, 66, 69, 0, 64, 78, + 69, 71, 73, 74, 81, 0, 66, 68, + 71, 73, 74, 76, 66, 69, 78, 83, + 68, 69, 71, 73, 81, 78, 71, 68, + 61, 62, 64, 66, 69, 0, 64, 78, + 69, 71, 73, 74, 81, 0, 66, 68 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance116.scd b/sound_algo/palette/melodies/long/mlTrance116.scd new file mode 100644 index 0000000..5bc38d9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance116 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance116 = [ + 62, 64, 65, 68, 69, 0, 65, 0, + 64, 69, 68, 83, 0, 69, 81, 0, + 62, 64, 65, 68, 69, 0, 65, 0, + 64, 69, 68, 83, 0, 69, 81, 0, + 64, 65, 68, 69, 72, 71, 76, 76, + 64, 65, 68, 69, 0, 0, 62, 0, + 62, 64, 65, 68, 69, 0, 65, 0, + 64, 69, 68, 83, 0, 69, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance117.scd b/sound_algo/palette/melodies/long/mlTrance117.scd new file mode 100644 index 0000000..456ad81 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance117 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance117 = [ + 71, 73, 74, 77, 81, 65, 0, 0, + 71, 73, 74, 77, 73, 65, 83, 0, + 71, 73, 74, 77, 81, 65, 0, 0, + 71, 73, 74, 77, 73, 65, 83, 0, + 62, 65, 66, 68, 61, 0, 71, 66, + 69, 66, 68, 81, 80, 62, 78, 0, + 71, 73, 74, 77, 81, 65, 0, 0, + 71, 73, 74, 77, 73, 65, 83, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance118.scd b/sound_algo/palette/melodies/long/mlTrance118.scd new file mode 100644 index 0000000..5b8b07e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance118 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance118 = [ + 62, 64, 65, 67, 72, 67, 0, 83, + 60, 62, 64, 65, 77, 60, 60, 77, + 67, 81, 71, 74, 79, 65, 81, 77, + 62, 64, 65, 67, 81, 0, 60, 0, + 64, 65, 67, 69, 0, 81, 83, 62, + 74, 79, 69, 0, 69, 79, 0, 67, + 71, 72, 74, 76, 81, 79, 76, 77, + 62, 64, 65, 67, 76, 60, 76, 79 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance119.scd b/sound_algo/palette/melodies/long/mlTrance119.scd new file mode 100644 index 0000000..08d8c45 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance119 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance119 = [ + 60, 62, 64, 65, 65, 83, 72, 74, + 67, 69, 71, 72, 81, 64, 0, 74, + 60, 62, 64, 65, 65, 83, 72, 74, + 67, 69, 71, 72, 81, 64, 0, 74, + 60, 62, 64, 65, 76, 60, 74, 84, + 65, 67, 69, 71, 83, 72, 76, 74, + 60, 62, 64, 65, 65, 83, 72, 74, + 67, 69, 71, 72, 81, 64, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance120.scd b/sound_algo/palette/melodies/long/mlTrance120.scd new file mode 100644 index 0000000..a4ecede --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance120 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance120 = [ + 64, 66, 68, 69, 76, 0, 69, 68, + 62, 64, 66, 68, 62, 80, 0, 62, + 64, 66, 68, 69, 76, 0, 69, 68, + 62, 64, 66, 68, 62, 80, 0, 62, + 66, 68, 69, 71, 71, 76, 64, 66, + 81, 61, 76, 78, 78, 64, 74, 61, + 64, 66, 68, 69, 76, 0, 69, 68, + 62, 64, 66, 68, 62, 80, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance121.scd b/sound_algo/palette/melodies/long/mlTrance121.scd new file mode 100644 index 0000000..2c3ce74 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance121 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance121 = [ + 68, 69, 71, 72, 72, 83, 81, 74, + 76, 84, 71, 84, 0, 65, 71, 60, + 64, 0, 62, 0, 0, 0, 60, 0, + 62, 64, 65, 68, 60, 62, 0, 0, + 64, 65, 68, 69, 76, 62, 81, 72, + 65, 68, 69, 71, 69, 0, 0, 65, + 69, 0, 80, 60, 0, 74, 0, 77, + 65, 68, 69, 71, 77, 64, 0, 84 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance122.scd b/sound_algo/palette/melodies/long/mlTrance122.scd new file mode 100644 index 0000000..bb7a318 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance122 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance122 = [ + 68, 69, 71, 72, 0, 76, 76, 64, + 65, 68, 69, 71, 84, 76, 74, 68, + 68, 69, 71, 72, 0, 76, 76, 64, + 65, 68, 69, 71, 84, 76, 74, 68, + 76, 0, 74, 0, 84, 60, 80, 72, + 69, 74, 74, 65, 64, 71, 76, 81, + 68, 69, 71, 72, 0, 76, 76, 64, + 65, 68, 69, 71, 84, 76, 74, 68 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance123.scd b/sound_algo/palette/melodies/long/mlTrance123.scd new file mode 100644 index 0000000..9784cae --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance123 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance123 = [ + 64, 65, 67, 69, 0, 79, 77, 74, + 65, 67, 69, 71, 77, 0, 65, 0, + 62, 64, 65, 67, 69, 77, 67, 60, + 83, 72, 0, 81, 0, 62, 62, 69, + 64, 65, 67, 69, 71, 0, 64, 77, + 60, 62, 64, 65, 60, 69, 79, 77, + 0, 83, 81, 72, 84, 76, 64, 83, + 69, 71, 72, 74, 76, 62, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance124.scd b/sound_algo/palette/melodies/long/mlTrance124.scd new file mode 100644 index 0000000..0f01c9f --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance124.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance124 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance124 = [ + 69, 62, 68, 80, 73, 78, 66, 69, + 61, 62, 64, 66, 83, 80, 83, 74, + 66, 68, 69, 71, 66, 80, 81, 0, + 68, 69, 71, 73, 68, 73, 73, 81, + 64, 66, 68, 69, 81, 68, 81, 62, + 73, 62, 76, 78, 0, 73, 71, 81, + 73, 80, 74, 78, 64, 81, 81, 0, + 64, 66, 68, 69, 0, 66, 78, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance125.scd b/sound_algo/palette/melodies/long/mlTrance125.scd new file mode 100644 index 0000000..d79be83 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance125.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance125 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance125 = [ + 64, 66, 68, 69, 0, 0, 80, 0, + 61, 0, 61, 81, 0, 0, 61, 0, + 64, 66, 68, 69, 0, 0, 80, 0, + 61, 0, 61, 81, 0, 0, 61, 0, + 0, 68, 64, 64, 0, 62, 81, 76, + 69, 71, 73, 74, 69, 68, 68, 69, + 64, 66, 68, 69, 0, 0, 80, 0, + 61, 0, 61, 81, 0, 0, 61, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance126.scd b/sound_algo/palette/melodies/long/mlTrance126.scd new file mode 100644 index 0000000..18816cf --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance126.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance126 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance126 = [ + 71, 73, 74, 76, 73, 0, 68, 73, + 71, 73, 74, 73, 69, 71, 80, 0, + 71, 73, 74, 76, 73, 0, 68, 73, + 71, 73, 74, 73, 69, 71, 80, 0, + 71, 73, 74, 76, 0, 76, 81, 61, + 61, 62, 64, 66, 69, 62, 74, 71, + 71, 73, 74, 76, 73, 0, 68, 73, + 71, 73, 74, 73, 69, 71, 80, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance127.scd b/sound_algo/palette/melodies/long/mlTrance127.scd new file mode 100644 index 0000000..9ca799e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance127.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance127 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance127 = [ + 65, 66, 68, 69, 61, 81, 0, 74, + 69, 78, 73, 61, 0, 81, 0, 73, + 0, 73, 66, 71, 77, 65, 80, 69, + 66, 68, 69, 71, 78, 81, 81, 0, + 61, 62, 65, 66, 0, 80, 0, 0, + 61, 62, 65, 66, 78, 0, 80, 69, + 68, 69, 71, 73, 68, 74, 0, 80, + 65, 66, 68, 69, 83, 73, 77, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance128.scd b/sound_algo/palette/melodies/long/mlTrance128.scd new file mode 100644 index 0000000..0f9a4ee --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance128.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance128 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance128 = [ + 60, 62, 64, 65, 69, 0, 81, 60, + 81, 83, 71, 71, 76, 83, 0, 71, + 71, 72, 74, 76, 0, 0, 69, 81, + 84, 64, 72, 64, 0, 84, 77, 60, + 0, 69, 74, 64, 71, 84, 64, 64, + 64, 65, 68, 69, 84, 80, 0, 71, + 64, 65, 68, 69, 72, 64, 62, 69, + 60, 71, 0, 74, 0, 68, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance129.scd b/sound_algo/palette/melodies/long/mlTrance129.scd new file mode 100644 index 0000000..42b13dd --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance129.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance129 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance129 = [ + 68, 69, 71, 73, 0, 0, 78, 0, + 66, 80, 65, 66, 0, 0, 62, 80, + 66, 68, 69, 71, 0, 74, 0, 81, + 62, 65, 66, 68, 69, 0, 83, 78, + 62, 65, 66, 68, 69, 61, 73, 78, + 69, 71, 73, 74, 0, 69, 0, 68, + 66, 68, 69, 71, 73, 80, 62, 71, + 61, 62, 65, 66, 69, 74, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance130.scd b/sound_algo/palette/melodies/long/mlTrance130.scd new file mode 100644 index 0000000..91ebb28 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance130.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance130 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance130 = [ + 68, 69, 71, 72, 60, 80, 71, 83, + 69, 71, 72, 74, 64, 80, 65, 64, + 68, 69, 71, 72, 60, 80, 71, 83, + 69, 71, 72, 74, 64, 80, 65, 64, + 60, 62, 64, 65, 0, 81, 65, 64, + 69, 71, 72, 74, 81, 0, 65, 77, + 68, 69, 71, 72, 60, 80, 71, 83, + 69, 71, 72, 74, 64, 80, 65, 64 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance131.scd b/sound_algo/palette/melodies/long/mlTrance131.scd new file mode 100644 index 0000000..b7da067 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance131.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance131 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance131 = [ + 62, 64, 65, 68, 64, 0, 81, 60, + 65, 68, 69, 71, 64, 80, 72, 64, + 62, 64, 65, 68, 64, 0, 81, 60, + 65, 68, 69, 71, 64, 80, 72, 64, + 84, 81, 84, 69, 81, 71, 0, 68, + 71, 72, 74, 76, 77, 68, 0, 83, + 62, 64, 65, 68, 64, 0, 81, 60, + 65, 68, 69, 71, 64, 80, 72, 64 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance132.scd b/sound_algo/palette/melodies/long/mlTrance132.scd new file mode 100644 index 0000000..01d6e96 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance132.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance132 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance132 = [ + 74, 66, 73, 69, 78, 65, 0, 62, + 66, 68, 69, 71, 73, 66, 61, 62, + 66, 68, 69, 71, 61, 0, 0, 80, + 81, 0, 69, 62, 69, 0, 0, 66, + 69, 71, 73, 74, 0, 61, 80, 80, + 66, 68, 69, 71, 69, 62, 0, 81, + 68, 69, 71, 73, 65, 0, 78, 0, + 71, 73, 74, 77, 61, 61, 74, 74 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance133.scd b/sound_algo/palette/melodies/long/mlTrance133.scd new file mode 100644 index 0000000..5be5a65 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance133.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance133 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance133 = [ + 61, 62, 64, 66, 0, 74, 76, 68, + 68, 69, 71, 73, 78, 74, 0, 83, + 61, 62, 64, 66, 0, 74, 76, 68, + 68, 69, 71, 73, 78, 74, 0, 83, + 69, 61, 66, 0, 78, 81, 73, 0, + 71, 73, 74, 76, 73, 0, 73, 61, + 61, 62, 64, 66, 0, 74, 76, 68, + 68, 69, 71, 73, 78, 74, 0, 83 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance134.scd b/sound_algo/palette/melodies/long/mlTrance134.scd new file mode 100644 index 0000000..4addb13 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance134.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance134 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance134 = [ + 68, 69, 71, 73, 61, 0, 78, 69, + 68, 69, 71, 73, 74, 0, 78, 74, + 68, 69, 71, 73, 61, 0, 78, 69, + 68, 69, 71, 73, 74, 0, 78, 74, + 66, 68, 69, 71, 61, 81, 64, 73, + 71, 73, 74, 76, 61, 80, 83, 0, + 68, 69, 71, 73, 61, 0, 78, 69, + 68, 69, 71, 73, 74, 0, 78, 74 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTrance135.scd b/sound_algo/palette/melodies/long/mlTrance135.scd new file mode 100644 index 0000000..c7c0aa7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTrance135.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTrance135 -- long melody (64 steps), genre: trance +// ===================================================================== +( +~mlTrance135 = [ + 69, 71, 72, 74, 65, 67, 65, 0, + 62, 64, 65, 67, 76, 0, 0, 0, + 69, 71, 72, 74, 65, 67, 65, 0, + 62, 64, 65, 67, 76, 0, 0, 0, + 67, 69, 71, 72, 60, 62, 0, 0, + 60, 0, 62, 65, 72, 0, 67, 60, + 69, 71, 72, 74, 65, 67, 65, 0, + 62, 64, 65, 67, 76, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal100.scd b/sound_algo/palette/melodies/long/mlTribal100.scd new file mode 100644 index 0000000..5f8b3d3 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal100 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal100 = [ + 38, 41, 50, 0, 48, 50, 0, 0, + 38, 41, 50, 0, 48, 50, 0, 0, + 38, 41, 50, 0, 48, 50, 0, 0, + 38, 41, 50, 0, 48, 50, 0, 0, + 38, 41, 50, 0, 48, 50, 0, 0, + 38, 41, 50, 0, 48, 50, 0, 0, + 38, 41, 50, 0, 48, 50, 0, 0, + 38, 41, 50, 0, 48, 50, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal101.scd b/sound_algo/palette/melodies/long/mlTribal101.scd new file mode 100644 index 0000000..9c79bc2 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal101 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal101 = [ + 45, 60, 0, 0, 40, 0, 36, 0, + 45, 60, 0, 0, 40, 0, 36, 0, + 45, 60, 0, 0, 40, 0, 36, 0, + 45, 60, 0, 0, 40, 0, 36, 0, + 45, 60, 0, 0, 40, 0, 36, 0, + 45, 60, 0, 0, 40, 0, 36, 0, + 45, 60, 0, 0, 40, 0, 36, 0, + 45, 60, 0, 0, 40, 0, 36, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal102.scd b/sound_algo/palette/melodies/long/mlTribal102.scd new file mode 100644 index 0000000..a951598 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal102 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal102 = [ + 0, 0, 55, 43, 36, 53, 48, 0, + 0, 0, 55, 43, 36, 53, 48, 0, + 0, 0, 55, 43, 36, 53, 48, 0, + 0, 0, 55, 43, 36, 53, 48, 0, + 0, 0, 55, 43, 36, 53, 48, 0, + 0, 0, 55, 43, 36, 53, 48, 0, + 0, 0, 55, 43, 36, 53, 48, 0, + 0, 0, 55, 43, 36, 53, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal103.scd b/sound_algo/palette/melodies/long/mlTribal103.scd new file mode 100644 index 0000000..ff3cb53 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal103 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal103 = [ + 45, 50, 0, 55, 60, 57, 0, 60, + 45, 50, 0, 55, 60, 57, 0, 60, + 45, 50, 0, 55, 60, 57, 0, 60, + 45, 50, 0, 55, 60, 57, 0, 60, + 45, 50, 0, 55, 60, 57, 0, 60, + 45, 50, 0, 55, 60, 57, 0, 60, + 45, 50, 0, 55, 60, 57, 0, 60, + 45, 50, 0, 55, 60, 57, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal104.scd b/sound_algo/palette/melodies/long/mlTribal104.scd new file mode 100644 index 0000000..dd4fb4b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal104 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal104 = [ + 45, 36, 57, 0, 60, 60, 45, 52, + 45, 36, 57, 0, 60, 60, 45, 52, + 45, 36, 57, 0, 60, 60, 45, 52, + 45, 36, 57, 0, 60, 60, 45, 52, + 45, 36, 57, 0, 60, 60, 45, 52, + 45, 36, 57, 0, 60, 60, 45, 52, + 45, 36, 57, 0, 60, 60, 45, 52, + 45, 36, 57, 0, 60, 60, 45, 52 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal105.scd b/sound_algo/palette/melodies/long/mlTribal105.scd new file mode 100644 index 0000000..c209056 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal105 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal105 = [ + 38, 36, 57, 48, 0, 57, 45, 45, + 38, 36, 57, 48, 0, 57, 45, 45, + 38, 36, 57, 48, 0, 57, 45, 45, + 38, 36, 57, 48, 0, 57, 45, 45, + 38, 36, 57, 48, 0, 57, 45, 45, + 38, 36, 57, 48, 0, 57, 45, 45, + 38, 36, 57, 48, 0, 57, 45, 45, + 38, 36, 57, 48, 0, 57, 45, 45 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal106.scd b/sound_algo/palette/melodies/long/mlTribal106.scd new file mode 100644 index 0000000..a250f34 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal106 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal106 = [ + 43, 48, 38, 36, 0, 38, 0, 55, + 43, 48, 38, 36, 0, 38, 0, 55, + 43, 48, 38, 36, 0, 38, 0, 55, + 43, 48, 38, 36, 0, 38, 0, 55, + 43, 48, 38, 36, 0, 38, 0, 55, + 43, 48, 38, 36, 0, 38, 0, 55, + 43, 48, 38, 36, 0, 38, 0, 55, + 43, 48, 38, 36, 0, 38, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal107.scd b/sound_algo/palette/melodies/long/mlTribal107.scd new file mode 100644 index 0000000..3142e1a --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal107 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal107 = [ + 0, 0, 57, 0, 60, 0, 55, 0, + 0, 0, 57, 0, 60, 0, 55, 0, + 0, 0, 57, 0, 60, 0, 55, 0, + 0, 0, 57, 0, 60, 0, 55, 0, + 0, 0, 57, 0, 60, 0, 55, 0, + 0, 0, 57, 0, 60, 0, 55, 0, + 0, 0, 57, 0, 60, 0, 55, 0, + 0, 0, 57, 0, 60, 0, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal108.scd b/sound_algo/palette/melodies/long/mlTribal108.scd new file mode 100644 index 0000000..640e7b6 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal108 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal108 = [ + 48, 55, 0, 55, 0, 48, 52, 0, + 48, 55, 0, 55, 0, 48, 52, 0, + 48, 55, 0, 55, 0, 48, 52, 0, + 48, 55, 0, 55, 0, 48, 52, 0, + 48, 55, 0, 55, 0, 48, 52, 0, + 48, 55, 0, 55, 0, 48, 52, 0, + 48, 55, 0, 55, 0, 48, 52, 0, + 48, 55, 0, 55, 0, 48, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal109.scd b/sound_algo/palette/melodies/long/mlTribal109.scd new file mode 100644 index 0000000..e012dea --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal109 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal109 = [ + 0, 50, 45, 36, 0, 0, 45, 55, + 0, 50, 45, 36, 0, 0, 45, 55, + 0, 50, 45, 36, 0, 0, 45, 55, + 0, 50, 45, 36, 0, 0, 45, 55, + 0, 50, 45, 36, 0, 0, 45, 55, + 0, 50, 45, 36, 0, 0, 45, 55, + 0, 50, 45, 36, 0, 0, 45, 55, + 0, 50, 45, 36, 0, 0, 45, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal110.scd b/sound_algo/palette/melodies/long/mlTribal110.scd new file mode 100644 index 0000000..81b659e --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal110 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal110 = [ + 45, 0, 41, 57, 0, 43, 0, 55, + 45, 0, 41, 57, 0, 43, 0, 55, + 45, 0, 41, 57, 0, 43, 0, 55, + 45, 0, 41, 57, 0, 43, 0, 55, + 45, 0, 41, 57, 0, 43, 0, 55, + 45, 0, 41, 57, 0, 43, 0, 55, + 45, 0, 41, 57, 0, 43, 0, 55, + 45, 0, 41, 57, 0, 43, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal111.scd b/sound_algo/palette/melodies/long/mlTribal111.scd new file mode 100644 index 0000000..8b7f591 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal111 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal111 = [ + 38, 57, 50, 0, 38, 38, 43, 55, + 38, 57, 50, 0, 38, 38, 43, 55, + 38, 57, 50, 0, 38, 38, 43, 55, + 38, 57, 50, 0, 38, 38, 43, 55, + 38, 57, 50, 0, 38, 38, 43, 55, + 38, 57, 50, 0, 38, 38, 43, 55, + 38, 57, 50, 0, 38, 38, 43, 55, + 38, 57, 50, 0, 38, 38, 43, 55 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal112.scd b/sound_algo/palette/melodies/long/mlTribal112.scd new file mode 100644 index 0000000..159dc89 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal112 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal112 = [ + 0, 0, 38, 0, 38, 0, 0, 0, + 0, 0, 38, 0, 38, 0, 0, 0, + 0, 0, 38, 0, 38, 0, 0, 0, + 0, 0, 38, 0, 38, 0, 0, 0, + 0, 0, 38, 0, 38, 0, 0, 0, + 0, 0, 38, 0, 38, 0, 0, 0, + 0, 0, 38, 0, 38, 0, 0, 0, + 0, 0, 38, 0, 38, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal113.scd b/sound_algo/palette/melodies/long/mlTribal113.scd new file mode 100644 index 0000000..bbc3d48 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal113 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal113 = [ + 52, 43, 60, 50, 0, 57, 50, 50, + 52, 43, 60, 50, 0, 57, 50, 50, + 52, 43, 60, 50, 0, 57, 50, 50, + 52, 43, 60, 50, 0, 57, 50, 50, + 52, 43, 60, 50, 0, 57, 50, 50, + 52, 43, 60, 50, 0, 57, 50, 50, + 52, 43, 60, 50, 0, 57, 50, 50, + 52, 43, 60, 50, 0, 57, 50, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal114.scd b/sound_algo/palette/melodies/long/mlTribal114.scd new file mode 100644 index 0000000..1f95f7c --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal114 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal114 = [ + 0, 0, 50, 0, 48, 45, 48, 0, + 0, 0, 50, 0, 48, 45, 48, 0, + 0, 0, 50, 0, 48, 45, 48, 0, + 0, 0, 50, 0, 48, 45, 48, 0, + 0, 0, 50, 0, 48, 45, 48, 0, + 0, 0, 50, 0, 48, 45, 48, 0, + 0, 0, 50, 0, 48, 45, 48, 0, + 0, 0, 50, 0, 48, 45, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlTribal115.scd b/sound_algo/palette/melodies/long/mlTribal115.scd new file mode 100644 index 0000000..14e9b86 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlTribal115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlTribal115 -- long melody (64 steps), genre: tribal +// ===================================================================== +( +~mlTribal115 = [ + 55, 43, 0, 43, 48, 55, 48, 50, + 55, 43, 0, 43, 48, 55, 48, 50, + 55, 43, 0, 43, 48, 55, 48, 50, + 55, 43, 0, 43, 48, 55, 48, 50, + 55, 43, 0, 43, 48, 55, 48, 50, + 55, 43, 0, 43, 48, 55, 48, 50, + 55, 43, 0, 43, 48, 55, 48, 50, + 55, 43, 0, 43, 48, 55, 48, 50 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld100.scd b/sound_algo/palette/melodies/long/mlWorld100.scd new file mode 100644 index 0000000..aebe7ff --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld100.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld100 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld100 = [ + 62, 71, 71, 72, 74, 76, 0, 60, + 64, 64, 76, 74, 0, 67, 0, 83, + 62, 71, 71, 72, 74, 76, 0, 60, + 64, 64, 76, 74, 0, 67, 0, 83, + 0, 0, 60, 74, 0, 0, 71, 0, + 69, 74, 0, 72, 81, 0, 0, 74, + 62, 71, 71, 72, 74, 76, 0, 60, + 64, 64, 76, 74, 0, 67, 0, 83 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld101.scd b/sound_algo/palette/melodies/long/mlWorld101.scd new file mode 100644 index 0000000..b6a29da --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld101.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld101 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld101 = [ + 69, 0, 81, 0, 0, 0, 0, 64, + 65, 71, 0, 79, 0, 77, 84, 65, + 77, 60, 0, 84, 0, 72, 0, 84, + 0, 74, 81, 0, 0, 77, 0, 69, + 67, 81, 64, 64, 0, 67, 74, 69, + 77, 62, 0, 74, 0, 74, 76, 81, + 69, 0, 79, 67, 77, 81, 81, 62, + 65, 0, 64, 0, 60, 81, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld102.scd b/sound_algo/palette/melodies/long/mlWorld102.scd new file mode 100644 index 0000000..4394b11 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld102.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld102 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld102 = [ + 74, 72, 0, 81, 83, 77, 0, 69, + 71, 76, 0, 0, 83, 77, 76, 74, + 74, 72, 0, 81, 83, 77, 0, 69, + 71, 76, 0, 0, 83, 77, 76, 74, + 72, 0, 0, 0, 0, 64, 71, 0, + 72, 0, 62, 77, 0, 72, 0, 62, + 74, 72, 0, 81, 83, 77, 0, 69, + 71, 76, 0, 0, 83, 77, 76, 74 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld103.scd b/sound_algo/palette/melodies/long/mlWorld103.scd new file mode 100644 index 0000000..e8746b8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld103.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld103 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld103 = [ + 79, 67, 65, 67, 81, 69, 0, 64, + 0, 81, 67, 0, 74, 0, 69, 74, + 62, 69, 0, 76, 0, 0, 0, 0, + 0, 84, 65, 64, 0, 83, 62, 67, + 60, 0, 74, 81, 77, 64, 72, 0, + 67, 0, 0, 0, 62, 0, 69, 84, + 62, 71, 67, 81, 62, 81, 64, 64, + 74, 0, 0, 0, 0, 0, 84, 69 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld104.scd b/sound_algo/palette/melodies/long/mlWorld104.scd new file mode 100644 index 0000000..39f9175 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld104.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld104 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld104 = [ + 72, 83, 84, 0, 0, 79, 0, 69, + 79, 0, 69, 0, 67, 62, 81, 77, + 0, 0, 84, 0, 62, 0, 83, 74, + 84, 0, 0, 76, 0, 84, 65, 72, + 83, 76, 62, 71, 0, 0, 0, 60, + 0, 72, 0, 76, 0, 77, 71, 81, + 65, 0, 0, 0, 0, 0, 0, 0, + 76, 64, 0, 67, 79, 77, 84, 79 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld105.scd b/sound_algo/palette/melodies/long/mlWorld105.scd new file mode 100644 index 0000000..3433fa7 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld105.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld105 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld105 = [ + 83, 69, 0, 0, 0, 0, 0, 71, + 71, 62, 0, 64, 0, 74, 0, 60, + 83, 69, 0, 0, 0, 0, 0, 71, + 71, 62, 0, 64, 0, 74, 0, 60, + 0, 74, 62, 0, 74, 81, 74, 81, + 83, 0, 62, 0, 0, 69, 0, 67, + 83, 69, 0, 0, 0, 0, 0, 71, + 71, 62, 0, 64, 0, 74, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld106.scd b/sound_algo/palette/melodies/long/mlWorld106.scd new file mode 100644 index 0000000..e597dc5 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld106.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld106 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld106 = [ + 69, 67, 76, 72, 0, 66, 64, 0, + 0, 83, 72, 67, 79, 0, 64, 76, + 81, 0, 0, 64, 0, 76, 64, 0, + 66, 0, 60, 72, 0, 76, 74, 0, + 74, 60, 83, 74, 74, 0, 66, 0, + 74, 69, 76, 78, 62, 67, 76, 60, + 79, 62, 67, 71, 69, 81, 0, 60, + 0, 78, 60, 0, 62, 0, 69, 64 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld107.scd b/sound_algo/palette/melodies/long/mlWorld107.scd new file mode 100644 index 0000000..35a499b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld107.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld107 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld107 = [ + 0, 76, 67, 72, 81, 0, 83, 79, + 81, 78, 64, 66, 72, 0, 72, 62, + 0, 76, 67, 72, 81, 0, 83, 79, + 81, 78, 64, 66, 72, 0, 72, 62, + 78, 79, 0, 0, 66, 0, 71, 64, + 72, 74, 81, 78, 62, 74, 0, 0, + 0, 76, 67, 72, 81, 0, 83, 79, + 81, 78, 64, 66, 72, 0, 72, 62 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld108.scd b/sound_algo/palette/melodies/long/mlWorld108.scd new file mode 100644 index 0000000..d1764e9 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld108.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld108 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld108 = [ + 66, 79, 83, 71, 62, 62, 0, 0, + 66, 83, 0, 0, 0, 64, 64, 66, + 66, 79, 83, 71, 62, 62, 0, 0, + 66, 83, 0, 0, 0, 64, 64, 66, + 0, 84, 0, 0, 62, 64, 0, 83, + 84, 81, 0, 74, 62, 60, 66, 72, + 66, 79, 83, 71, 62, 62, 0, 0, + 66, 83, 0, 0, 0, 64, 64, 66 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld109.scd b/sound_algo/palette/melodies/long/mlWorld109.scd new file mode 100644 index 0000000..2191428 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld109.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld109 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld109 = [ + 76, 0, 69, 66, 78, 72, 81, 0, + 0, 0, 0, 69, 81, 83, 60, 0, + 0, 74, 0, 62, 74, 72, 0, 72, + 74, 0, 0, 60, 0, 62, 0, 81, + 0, 72, 79, 66, 78, 76, 0, 60, + 81, 0, 62, 0, 78, 67, 69, 79, + 62, 84, 81, 67, 71, 71, 0, 69, + 74, 83, 84, 0, 83, 67, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld110.scd b/sound_algo/palette/melodies/long/mlWorld110.scd new file mode 100644 index 0000000..93e6053 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld110.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld110 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld110 = [ + 0, 66, 76, 83, 74, 62, 62, 84, + 0, 74, 81, 0, 72, 74, 76, 83, + 84, 0, 0, 69, 62, 60, 0, 0, + 69, 71, 60, 84, 0, 76, 81, 0, + 0, 0, 0, 0, 72, 78, 60, 60, + 62, 67, 0, 78, 0, 72, 0, 72, + 66, 83, 84, 83, 81, 69, 83, 71, + 78, 81, 64, 66, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld111.scd b/sound_algo/palette/melodies/long/mlWorld111.scd new file mode 100644 index 0000000..e0e3414 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld111.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld111 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld111 = [ + 0, 65, 0, 79, 74, 74, 74, 74, + 67, 79, 0, 0, 0, 0, 82, 72, + 70, 76, 81, 77, 74, 76, 0, 69, + 79, 70, 81, 81, 67, 64, 0, 62, + 62, 0, 0, 81, 67, 72, 76, 79, + 70, 72, 0, 74, 84, 0, 72, 0, + 0, 77, 62, 69, 74, 67, 76, 77, + 74, 60, 0, 0, 67, 60, 74, 79 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld112.scd b/sound_algo/palette/melodies/long/mlWorld112.scd new file mode 100644 index 0000000..68b545d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld112.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld112 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld112 = [ + 70, 0, 77, 72, 82, 0, 70, 0, + 74, 0, 79, 0, 74, 62, 70, 0, + 74, 0, 76, 0, 81, 0, 74, 77, + 0, 65, 79, 0, 0, 69, 84, 69, + 0, 64, 0, 64, 0, 60, 67, 82, + 0, 82, 74, 67, 84, 77, 82, 76, + 0, 67, 72, 0, 67, 74, 0, 77, + 0, 69, 82, 0, 0, 77, 84, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld113.scd b/sound_algo/palette/melodies/long/mlWorld113.scd new file mode 100644 index 0000000..025c1be --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld113.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld113 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld113 = [ + 81, 79, 0, 81, 71, 64, 60, 62, + 0, 65, 0, 77, 74, 83, 83, 76, + 71, 67, 65, 67, 77, 0, 0, 76, + 0, 67, 72, 60, 64, 0, 72, 62, + 83, 0, 64, 74, 65, 60, 0, 76, + 69, 0, 0, 72, 0, 60, 62, 60, + 77, 64, 77, 77, 69, 76, 74, 62, + 69, 60, 74, 62, 79, 64, 83, 84 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld114.scd b/sound_algo/palette/melodies/long/mlWorld114.scd new file mode 100644 index 0000000..43f2edb --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld114.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld114 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld114 = [ + 79, 72, 60, 81, 69, 74, 81, 65, + 81, 62, 60, 64, 69, 67, 76, 69, + 79, 72, 60, 81, 69, 74, 81, 65, + 81, 62, 60, 64, 69, 67, 76, 69, + 0, 65, 0, 62, 0, 0, 62, 62, + 67, 0, 0, 72, 71, 84, 67, 65, + 79, 72, 60, 81, 69, 74, 81, 65, + 81, 62, 60, 64, 69, 67, 76, 69 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld115.scd b/sound_algo/palette/melodies/long/mlWorld115.scd new file mode 100644 index 0000000..99c5a06 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld115.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld115 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld115 = [ + 82, 60, 81, 82, 0, 0, 62, 0, + 64, 84, 0, 62, 0, 70, 0, 76, + 82, 60, 81, 82, 0, 0, 62, 0, + 64, 84, 0, 62, 0, 70, 0, 76, + 0, 65, 70, 64, 0, 81, 65, 77, + 72, 82, 0, 74, 79, 84, 82, 0, + 82, 60, 81, 82, 0, 0, 62, 0, + 64, 84, 0, 62, 0, 70, 0, 76 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld116.scd b/sound_algo/palette/melodies/long/mlWorld116.scd new file mode 100644 index 0000000..aa20690 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld116.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld116 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld116 = [ + 62, 0, 67, 84, 81, 84, 77, 60, + 65, 0, 64, 0, 60, 0, 71, 83, + 0, 0, 71, 81, 71, 0, 74, 65, + 0, 0, 72, 71, 65, 81, 81, 0, + 77, 0, 77, 83, 77, 84, 65, 79, + 77, 0, 77, 60, 0, 65, 0, 0, + 0, 0, 0, 65, 84, 0, 83, 74, + 81, 0, 0, 79, 81, 0, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld117.scd b/sound_algo/palette/melodies/long/mlWorld117.scd new file mode 100644 index 0000000..49c465d --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld117.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld117 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld117 = [ + 0, 0, 74, 76, 62, 60, 64, 79, + 77, 84, 84, 65, 74, 84, 0, 69, + 0, 0, 74, 76, 62, 60, 64, 79, + 77, 84, 84, 65, 74, 84, 0, 69, + 69, 0, 71, 0, 0, 81, 76, 60, + 64, 76, 83, 0, 0, 84, 83, 60, + 0, 0, 74, 76, 62, 60, 64, 79, + 77, 84, 84, 65, 74, 84, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld118.scd b/sound_algo/palette/melodies/long/mlWorld118.scd new file mode 100644 index 0000000..607ff9b --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld118.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld118 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld118 = [ + 70, 62, 84, 0, 0, 0, 0, 0, + 62, 70, 72, 0, 0, 65, 0, 0, + 82, 69, 74, 65, 62, 65, 0, 74, + 70, 0, 64, 77, 77, 0, 0, 0, + 67, 82, 64, 67, 0, 70, 60, 77, + 65, 0, 82, 69, 0, 60, 0, 77, + 62, 65, 62, 67, 82, 76, 0, 76, + 70, 67, 74, 64, 0, 82, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld119.scd b/sound_algo/palette/melodies/long/mlWorld119.scd new file mode 100644 index 0000000..f49aa09 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld119.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld119 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld119 = [ + 0, 79, 0, 67, 77, 77, 0, 79, + 69, 0, 84, 76, 60, 64, 72, 0, + 67, 0, 69, 0, 0, 65, 81, 74, + 0, 62, 77, 65, 64, 0, 0, 65, + 64, 0, 67, 69, 64, 72, 69, 0, + 0, 81, 76, 84, 64, 0, 60, 65, + 72, 60, 0, 64, 0, 0, 0, 74, + 77, 69, 84, 0, 0, 74, 71, 76 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld120.scd b/sound_algo/palette/melodies/long/mlWorld120.scd new file mode 100644 index 0000000..a86fab0 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld120.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld120 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld120 = [ + 83, 79, 0, 76, 0, 0, 81, 69, + 67, 0, 83, 72, 0, 67, 77, 67, + 79, 81, 0, 60, 0, 74, 84, 71, + 71, 71, 65, 77, 71, 0, 0, 0, + 0, 71, 71, 65, 67, 60, 60, 72, + 79, 62, 76, 71, 60, 71, 60, 69, + 62, 67, 65, 0, 62, 71, 76, 81, + 74, 0, 64, 69, 71, 0, 84, 69 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld121.scd b/sound_algo/palette/melodies/long/mlWorld121.scd new file mode 100644 index 0000000..1adb432 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld121.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld121 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld121 = [ + 69, 77, 81, 62, 0, 62, 84, 0, + 69, 0, 60, 65, 71, 67, 0, 0, + 69, 62, 0, 0, 62, 84, 69, 67, + 74, 0, 76, 77, 0, 79, 60, 74, + 0, 69, 60, 64, 0, 64, 0, 74, + 62, 60, 0, 76, 62, 0, 64, 0, + 76, 81, 0, 81, 69, 0, 60, 69, + 74, 69, 76, 64, 0, 81, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld122.scd b/sound_algo/palette/melodies/long/mlWorld122.scd new file mode 100644 index 0000000..f671253 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld122.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld122 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld122 = [ + 0, 0, 84, 74, 0, 72, 76, 69, + 0, 74, 67, 0, 67, 66, 0, 60, + 0, 78, 81, 83, 62, 62, 64, 69, + 74, 76, 0, 0, 64, 83, 66, 66, + 0, 67, 72, 79, 84, 0, 76, 74, + 0, 64, 0, 62, 66, 69, 0, 83, + 0, 78, 83, 83, 76, 78, 78, 0, + 84, 71, 69, 0, 67, 79, 74, 83 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld123.scd b/sound_algo/palette/melodies/long/mlWorld123.scd new file mode 100644 index 0000000..05869e8 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld123.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld123 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld123 = [ + 67, 60, 76, 0, 72, 67, 65, 60, + 62, 84, 84, 0, 77, 64, 0, 67, + 67, 60, 76, 0, 72, 67, 65, 60, + 62, 84, 84, 0, 77, 64, 0, 67, + 71, 69, 84, 0, 81, 0, 62, 81, + 81, 76, 0, 65, 77, 62, 0, 76, + 67, 60, 76, 0, 72, 67, 65, 60, + 62, 84, 84, 0, 77, 64, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld124.scd b/sound_algo/palette/melodies/long/mlWorld124.scd new file mode 100644 index 0000000..b46cfcd --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld124.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld124 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld124 = [ + 0, 72, 79, 69, 72, 0, 69, 76, + 81, 71, 0, 71, 0, 0, 0, 0, + 0, 72, 79, 69, 72, 0, 69, 76, + 81, 71, 0, 71, 0, 0, 0, 0, + 0, 71, 77, 60, 77, 72, 0, 84, + 81, 69, 0, 74, 74, 77, 65, 67, + 0, 72, 79, 69, 72, 0, 69, 76, + 81, 71, 0, 71, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld125.scd b/sound_algo/palette/melodies/long/mlWorld125.scd new file mode 100644 index 0000000..ab7fe78 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld125.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld125 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld125 = [ + 69, 79, 67, 0, 0, 0, 84, 60, + 0, 0, 0, 0, 0, 72, 64, 72, + 69, 79, 67, 0, 0, 0, 84, 60, + 0, 0, 0, 0, 0, 72, 64, 72, + 69, 81, 74, 81, 67, 83, 60, 0, + 79, 64, 0, 67, 81, 0, 0, 64, + 69, 79, 67, 0, 0, 0, 84, 60, + 0, 0, 0, 0, 0, 72, 64, 72 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld126.scd b/sound_algo/palette/melodies/long/mlWorld126.scd new file mode 100644 index 0000000..09672e4 --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld126.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld126 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld126 = [ + 78, 67, 78, 72, 74, 84, 76, 60, + 62, 0, 0, 74, 79, 64, 81, 81, + 78, 83, 64, 66, 84, 78, 0, 79, + 62, 0, 79, 69, 69, 84, 66, 64, + 0, 79, 71, 71, 66, 0, 0, 60, + 60, 0, 0, 84, 60, 67, 0, 83, + 0, 0, 72, 76, 72, 0, 0, 67, + 81, 0, 79, 69, 0, 69, 72, 66 +]; +) diff --git a/sound_algo/palette/melodies/long/mlWorld127.scd b/sound_algo/palette/melodies/long/mlWorld127.scd new file mode 100644 index 0000000..b0ccddc --- /dev/null +++ b/sound_algo/palette/melodies/long/mlWorld127.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~mlWorld127 -- long melody (64 steps), genre: world +// ===================================================================== +( +~mlWorld127 = [ + 0, 67, 82, 0, 0, 0, 0, 64, + 77, 0, 76, 0, 82, 62, 0, 72, + 62, 0, 0, 72, 0, 76, 0, 76, + 67, 72, 67, 81, 82, 72, 72, 64, + 0, 0, 0, 62, 62, 0, 76, 0, + 0, 0, 70, 72, 72, 67, 0, 74, + 0, 72, 79, 72, 70, 69, 0, 64, + 82, 82, 65, 62, 82, 0, 72, 79 +]; +) diff --git a/sound_algo/palette/melodies/short.scd b/sound_algo/palette/melodies/short.scd new file mode 100644 index 0000000..2cdfc4d --- /dev/null +++ b/sound_algo/palette/melodies/short.scd @@ -0,0 +1,91 @@ +// ===================================================================== +// palette/melodies/short.scd +// ~m1..~m78 -- 78 patterns melodiques de 32 pas +// +// Charge par palette/melodies/index.scd. Un seul bloc top-level. +// ===================================================================== +( +// ---------- M1-M28 (premiere serie historique) ---------------------- +~m1 = [60,0,67,0,70,0,67,65, 63,0,60,0,0,67,70,72, 75,0,72,70,67,0,0,65, 63,60,0,67,70,0,72,0]; +~m2 = [60,0,0,67,0,70,0,67, 60,0,0,67,0,70,0,72, 60,0,0,67,0,70,0,67, 63,0,0,70,0,72,0,75]; +~m3 = [63,0,0,0,70,0,67,0, 65,0,0,0,70,0,72,0, 63,0,0,0,67,0,70,0, 65,0,60,0,67,0,0,0]; +~m4 = [60,63,67,70,72,70,67,63, 60,63,67,70,75,72,70,67, 65,67,70,72,75,72,70,65, 63,67,70,75,79,75,70,63]; +~m5 = [60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0, 60,0,0,0,0,0,0,0, 65,0,0,0,0,0,0,0]; +~m6 = [60,0,63,0,65,67,0,70, 72,0,75,79,0,75,72,70, 67,0,65,63,0,60,0,63, 65,0,67,0,70,0,72,0]; +~m7 = [36,0,36,39,0,41,36,0, 38,0,36,39,0,43,41,0, 36,0,36,39,0,41,36,0, 38,0,41,39,36,0,41,0]; +~m8 = [60,67,72,67,60,67,72,75, 60,67,72,67,65,72,77,72, 60,67,72,67,60,67,72,79, 65,72,77,72,60,67,72,67]; +~m9 = [60,0,63,0,67,0,0,0, 0,0,0,0,0,0,0,0, 65,0,67,0,70,0,72,0, 0,0,0,0,0,0,0,0]; +~m10 = [60,0,63,0,67,0,70,0, 66,0,69,0,73,0,76,0, 60,0,63,0,67,0,70,0, 66,0,69,0,76,0,73,0]; +~m11 = [60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0, 60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0]; +~m12 = [60,63,67,70,60,63,67,70, 60,63,67,72,60,63,67,75, 60,63,67,72,65,67,70,75, 65,70,72,79,67,72,75,79]; +~m13 = [60,0,63,65,0,67,0,69, 0,65,0,63,65,0,60,0, 67,0,65,63,0,67,69,0, 65,63,0,60,0,63,65,67]; +~m14 = [60,61,63,0,65,63,61,60, 0,67,65,0,68,67,65,63, 60,61,63,0,65,63,61,60, 67,65,63,61,60,0,0,0]; +~m15 = [60,0,63,0,65,0,68,71, 72,0,71,0,68,65,63,0, 60,0,63,65,0,68,71,0, 72,0,68,65,63,60,0,0]; +~m16 = [48,0,51,53,54,0,55,0, 58,0,55,0,53,51,48,0, 48,0,51,53,54,0,55,58, 60,0,58,55,53,51,48,0]; +~m17 = [72,0,0,67,0,65,0,62, 60,0,62,0,65,0,67,72, 74,0,0,69,0,67,0,65, 62,0,65,0,67,0,72,0]; +~m18 = [60,0,67,0,70,67,60,0, 67,0,70,60,0,67,70,75, 60,0,67,0,70,67,60,65, 67,0,70,0,75,70,67,60]; +~m19 = [60,63,65,67,70,67,65,63, 60,63,67,70,72,70,67,63, 65,67,70,72,75,72,70,67, 65,70,72,75,77,75,72,70, 63,65,67,70,72,70,67,65, 63,67,70,72,75,72,70,67, 60,63,67,70,72,75,72,70, 67,65,63,67,65,63,60,0]; +~m20 = [60,0,61,0,63,65,0,67, 68,0,67,65,63,61,0,60, 63,0,65,0,67,68,0,70, 72,0,70,68,67,65,0,63, 65,0,67,0,68,70,0,72, 74,0,72,70,68,67,0,65, 72,0,70,68,67,65,63,61, 60,65,63,65,61,60,0,0]; +~m21 = [60,62,0,65,67,0,69,70, 67,65,62,60,0,65,67,70, 62,0,65,67,69,0,70,72, 69,67,65,62,0,60,65,67, 65,67,69,70,72,70,69,67, 65,62,60,0,62,65,67,69, 72,70,69,67,65,62,60,0, 65,67,69,70,72,0,70,0]; +~m22 = [60,63,65,67,70,67,65,63, 60,67,65,63,65,70,65,67, 63,65,67,70,72,70,67,65, 63,70,67,65,67,72,67,70, 65,67,68,70,72,70,68,67, 65,72,70,67,70,72,70,72, 67,68,70,72,74,72,70,68, 67,74,72,70,72,75,72,75]; +~m23 = [63,70,67,70,65,72,70,72, 63,70,67,70,65,72,75,72, 65,72,70,72,67,75,72,75, 65,72,70,72,60,67,65,67, 63,70,67,70,65,72,70,72, 63,67,65,67,65,72,75,79, 65,72,70,72,67,75,72,75, 60,67,65,67,63,70,67,70]; +~m24 = [60,67,72,75,72,67,60,67, 63,70,75,77,75,70,63,70, 65,72,77,79,77,72,65,72, 67,74,79,82,79,74,67,74, 79,77,75,72,70,67,65,63, 72,75,77,79,82,79,77,75, 65,72,77,79,84,82,79,77, 72,70,67,65,63,60,0,0]; +~m25 = [72,0,70,0,67,0,65,0, 63,0,65,0,67,0,70,0, 72,0,75,0,77,0,75,0, 72,0,70,0,67,0,65,0, 77,0,75,0,72,0,70,0, 67,0,65,0,63,0,65,0, 79,0,77,0,75,0,72,0, 77,0,75,0,70,0,67,0]; +~m26 = [60,63,67,70,72,75,79,82, 79,75,72,70,67,63,60,63, 67,70,72,75,79,82,84,87, 84,82,79,75,72,70,67,63, 65,67,70,72,75,79,82,84, 82,79,75,72,70,67,65,67, 63,65,67,70,72,75,77,79, 77,75,72,70,67,65,63,60]; +~m27 = [60,0,67,0,70,0,67,60, 60,0,67,0,70,0,72,75, 63,0,70,0,72,0,70,63, 63,0,70,0,72,0,75,77, 65,0,72,0,75,0,72,65, 65,0,72,0,75,0,77,79, 63,0,70,0,72,0,70,63, 60,0,67,0,65,0,63,60]; +~m28 = [72,0,70,0,67,70,0,65, 63,0,65,67,70,0,72,75, 77,0,75,0,72,75,0,70, 67,0,70,72,75,0,77,79, 75,0,77,0,75,72,0,70, 67,0,65,67,70,0,75,72, 70,0,67,0,65,67,0,63, 60,0,0,0,0,0,0,0]; + +// ---------- M29-M78 (genres et timbres varies) ---------------------- +~m29 = [36,0,48,0,36,39,0,48, 36,0,51,39,0,36,48,0, 36,0,48,0,36,39,0,51, 39,0,36,48,0,39,0,36]; +~m30 = [36,36,48,0,36,0,39,48, 36,51,0,36,39,0,48,0, 36,0,48,51,36,0,39,48, 36,36,51,0,36,48,39,0]; +~m31 = [36,0,0,0,39,0,0,0, 41,0,0,0,36,0,0,0, 34,0,0,0,39,0,0,0, 41,0,0,0,43,0,0,0]; +~m32 = [72,0,75,0,72,0,70,0, 67,0,70,0,72,0,75,0, 77,0,75,0,72,0,70,0, 75,0,72,0,70,0,67,0]; +~m33 = [60,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 63,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; +~m34 = [60,0,0,0,67,0,0,0, 70,0,0,0,0,0,0,0, 63,0,0,0,70,0,0,0, 72,0,0,0,0,0,0,0]; +~m35 = [67,67,0,70,72,0,70,67, 65,0,67,0,0,0,0,0, 67,67,0,70,72,0,75,72, 70,0,67,0,0,0,0,0]; +~m36 = [60,0,67,0,70,0,72,0, 72,70,67,70,72,0,0,0, 60,0,67,0,70,0,75,0, 75,72,70,72,75,0,0,0]; +~m37 = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; +~m38 = [48,0,0,0,0,0,0,0, 54,0,0,0,0,0,0,0, 48,0,0,0,0,0,0,0, 54,0,0,0,0,0,0,0]; +~m39 = [60,61,0,64,65,0,67,68, 71,0,68,67,65,64,0,61, 60,0,64,65,67,0,68,71, 72,71,68,67,65,64,61,60]; +~m40 = [60,0,62,0,63,0,67,0, 68,0,67,63,0,62,60,0, 60,0,63,0,67,0,68,0, 72,0,68,67,63,62,60,0]; +~m41 = [60,0,65,0,67,0,70,0, 72,0,70,67,65,0,60,0, 65,0,67,0,70,0,72,0, 74,0,72,70,67,65,60,0]; +~m42 = [64,65,67,65,64,0,60,0, 64,65,67,68,67,65,64,0, 67,68,70,68,67,0,64,0, 67,68,70,72,70,68,67,65]; +~m43 = [60,61,64,65,67,65,64,61, 60,0,64,65,67,68,67,65, 64,61,60,61,64,65,67,68, 70,68,67,65,64,61,60,0]; +~m44 = [60,0,63,65,67,0,68,71, 72,71,68,67,65,63,0,60, 63,65,67,68,71,72,71,68, 67,65,63,60,63,65,67,68]; +~m45 = [48,0,54,0,48,0,54,0, 60,0,54,0,48,0,54,0, 48,54,60,54,48,0,54,0, 60,54,48,54,60,54,48,0]; +~m46 = [36,0,41,0,43,0,41,0, 36,0,43,41,36,0,41,0, 36,41,43,41,48,0,43,41, 36,0,43,41,36,41,36,0]; +~m47 = [60,0,63,64,65,67,0,70, 67,65,64,63,60,0,67,70, 63,0,65,67,70,0,67,65, 63,60,63,65,67,65,60,0]; +~m48 = [60,0,62,0,64,0,67,0, 69,0,67,64,62,60,0,0, 62,0,64,0,67,0,69,0, 72,0,69,67,64,62,60,0]; +~m49 = [60,0,64,0,67,0,0,0, 67,0,71,0,74,0,0,0, 69,0,72,0,76,0,0,0, 65,0,69,0,72,0,0,0]; +~m50 = [69,0,72,76,72,0,69,0, 65,0,69,72,69,0,65,0, 60,0,64,67,64,0,60,0, 67,0,71,74,71,0,67,0]; +~m51 = [36,0,38,0,39,0,41,0, 43,0,44,0,43,0,41,0, 39,0,41,0,43,0,44,0, 46,0,48,0,46,0,43,0]; +~m52 = [38,41,45,41,38,0,45,41, 43,47,50,47,43,0,50,47, 48,52,55,52,48,0,55,52, 50,47,43,41,38,0,0,0]; +~m53 = [60,61,0,70,0,73,0,67, 61,0,73,0,67,70,0,76, 60,61,0,70,0,73,0,67, 73,76,0,70,67,61,60,0]; +~m54 = [60,67,65,0,60,67,65,0, 60,67,65,0,60,67,65,0, 63,70,67,0,63,70,67,0, 60,67,65,0,60,67,65,0]; +~m55 = [60,63,67,70,60,63,67,70, 60,63,67,70,60,63,67,70, 60,63,67,72,60,63,67,72, 60,63,67,75,60,63,67,70]; +~m56 = [60,67,60,67,60,67,60,67, 60,67,60,67,60,67,60,67, 60,65,60,65,60,65,60,65, 60,67,60,67,60,70,60,70]; +~m57 = [72,71,70,69,68,67,66,65, 64,63,62,61,60,0,0,0, 72,71,70,69,68,67,66,65, 64,63,62,61,60,59,58,57]; +~m58 = [60,0,62,0,64,0,66,0, 68,0,70,0,72,0,0,0, 72,0,70,0,68,0,66,0, 64,0,62,0,60,0,0,0]; +~m59 = [60,0,66,0,60,0,66,0, 72,0,66,0,60,0,66,0, 60,66,60,66,72,66,72,66, 60,0,66,0,72,0,66,60]; +~m60 = [60,61,60,64,65,64,67,68, 67,65,64,61,60,64,65,0, 67,68,67,71,72,71,68,67, 65,64,61,60,61,64,65,67]; +~m61 = [67,0,72,0,70,0,67,65, 63,0,67,0,70,0,72,75, 75,0,72,0,70,0,67,65, 63,0,60,0,65,0,67,70]; +~m62 = [60,64,67,72,60,64,67,72, 62,65,69,74,62,65,69,74, 63,67,70,75,63,67,70,75, 60,64,67,72,65,67,70,72]; +~m63 = [36,0,36,0,39,0,36,0, 41,0,36,0,39,0,41,0, 34,0,34,0,39,0,41,0, 43,0,41,0,39,0,36,0]; +~m64 = [67,0,70,0,0,67,0,65, 67,0,70,72,0,70,0,67, 65,0,67,0,0,65,0,63, 65,0,67,70,0,72,0,70]; +~m65 = [0,67,0,70,0,67,0,65, 0,67,0,72,0,70,0,67, 0,70,0,72,0,70,0,67, 0,65,0,67,0,70,0,72]; +~m66 = [48,0,51,0,53,0,48,0, 46,0,51,0,53,0,55,0, 48,0,51,53,51,0,48,0, 46,0,53,0,55,0,51,48]; +~m67 = [60,0,0,0,60,0,60,0, 73,0,0,0,73,0,73,0, 60,60,0,73,73,0,60,73, 79,0,73,0,60,0,0,0]; +~m68 = [36,0,36,0,36,0,36,0, 39,0,39,0,39,0,39,0, 36,0,36,39,36,0,39,0, 41,0,39,0,36,0,41,0]; +~m69 = [60,0,0,0,0,0,0,0, 63,0,0,0,0,0,0,0, 65,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0]; +~m70 = [36,0,39,36,48,0,36,39, 41,0,39,36,48,0,41,39, 36,39,41,39,36,0,48,36, 43,41,39,36,39,0,41,39]; +~m71 = [60,63,67,70,0,0,0,0, 60,63,67,70,0,0,0,0, 58,62,65,68,0,0,0,0, 60,63,67,70,0,0,0,0]; +~m72 = [60,0,0,63,0,0,67,0, 0,70,0,0,0,67,0,0, 65,0,0,67,0,0,70,0, 0,72,0,0,0,70,0,0]; +~m73 = [72,0,0,0,0,0,70,0, 0,0,67,0,0,0,65,0, 0,0,67,0,0,0,70,0, 0,0,72,0,0,0,75,0]; +~m74 = [60,67,72,64,67,71,60,67, 62,65,69,62,65,69,60,67, 64,67,71,64,67,71,60,67, 65,69,72,65,69,72,60,67]; +~m75 = [72,75,79,75,72,75,79,84, 79,75,72,75,72,70,67,65, 67,70,72,75,79,75,72,70, 67,65,67,70,72,70,67,60]; +~m76 = [67,0,70,67,0,65,67,0, 63,0,67,0,70,65,67,0, 75,0,72,70,0,67,65,0, 67,0,70,0,72,75,70,67]; +~m77 = [60,60,67,60,65,60,67,60, 62,62,69,62,67,62,69,62, 63,63,70,63,68,63,70,63, 65,65,72,65,70,65,72,65]; +~m78 = [0,67,0,70,67,0,70,0, 72,0,70,0,67,70,0,65, 0,67,0,70,67,0,75,0, 72,70,0,67,65,0,70,0]; + +"[melodies/short] m1..m78 (32 steps) prets".postln; +) diff --git a/sound_algo/palette/melodies/short/m1.scd b/sound_algo/palette/melodies/short/m1.scd new file mode 100644 index 0000000..f3c76f1 --- /dev/null +++ b/sound_algo/palette/melodies/short/m1.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m1 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m1 = [ + 60, 0, 67, 0, 70, 0, 67, 65, + 63, 0, 60, 0, 0, 67, 70, 72, + 75, 0, 72, 70, 67, 0, 0, 65, + 63, 60, 0, 67, 70, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m10.scd b/sound_algo/palette/melodies/short/m10.scd new file mode 100644 index 0000000..bc346bb --- /dev/null +++ b/sound_algo/palette/melodies/short/m10.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m10 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m10 = [ + 60, 0, 63, 0, 67, 0, 70, 0, + 66, 0, 69, 0, 73, 0, 76, 0, + 60, 0, 63, 0, 67, 0, 70, 0, + 66, 0, 69, 0, 76, 0, 73, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m11.scd b/sound_algo/palette/melodies/short/m11.scd new file mode 100644 index 0000000..a718f51 --- /dev/null +++ b/sound_algo/palette/melodies/short/m11.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m11 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~m11 = [ + 60, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m12.scd b/sound_algo/palette/melodies/short/m12.scd new file mode 100644 index 0000000..7a663df --- /dev/null +++ b/sound_algo/palette/melodies/short/m12.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m12 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m12 = [ + 60, 63, 67, 70, 60, 63, 67, 70, + 60, 63, 67, 72, 60, 63, 67, 75, + 60, 63, 67, 72, 65, 67, 70, 75, + 65, 70, 72, 79, 67, 72, 75, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/m13.scd b/sound_algo/palette/melodies/short/m13.scd new file mode 100644 index 0000000..600b736 --- /dev/null +++ b/sound_algo/palette/melodies/short/m13.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m13 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m13 = [ + 60, 0, 63, 65, 0, 67, 0, 69, + 0, 65, 0, 63, 65, 0, 60, 0, + 67, 0, 65, 63, 0, 67, 69, 0, + 65, 63, 0, 60, 0, 63, 65, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/m14.scd b/sound_algo/palette/melodies/short/m14.scd new file mode 100644 index 0000000..904d7bb --- /dev/null +++ b/sound_algo/palette/melodies/short/m14.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m14 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~m14 = [ + 60, 61, 63, 0, 65, 63, 61, 60, + 0, 67, 65, 0, 68, 67, 65, 63, + 60, 61, 63, 0, 65, 63, 61, 60, + 67, 65, 63, 61, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m15.scd b/sound_algo/palette/melodies/short/m15.scd new file mode 100644 index 0000000..4b6bb77 --- /dev/null +++ b/sound_algo/palette/melodies/short/m15.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m15 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~m15 = [ + 60, 0, 63, 0, 65, 0, 68, 71, + 72, 0, 71, 0, 68, 65, 63, 0, + 60, 0, 63, 65, 0, 68, 71, 0, + 72, 0, 68, 65, 63, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m16.scd b/sound_algo/palette/melodies/short/m16.scd new file mode 100644 index 0000000..5db9e3e --- /dev/null +++ b/sound_algo/palette/melodies/short/m16.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m16 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~m16 = [ + 48, 0, 51, 53, 54, 0, 55, 0, + 58, 0, 55, 0, 53, 51, 48, 0, + 48, 0, 51, 53, 54, 0, 55, 58, + 60, 0, 58, 55, 53, 51, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m17.scd b/sound_algo/palette/melodies/short/m17.scd new file mode 100644 index 0000000..a3cdf16 --- /dev/null +++ b/sound_algo/palette/melodies/short/m17.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m17 -- short melody (32 steps), genre: world +// ===================================================================== +( +~m17 = [ + 72, 0, 0, 67, 0, 65, 0, 62, + 60, 0, 62, 0, 65, 0, 67, 72, + 74, 0, 0, 69, 0, 67, 0, 65, + 62, 0, 65, 0, 67, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m18.scd b/sound_algo/palette/melodies/short/m18.scd new file mode 100644 index 0000000..4b82683 --- /dev/null +++ b/sound_algo/palette/melodies/short/m18.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m18 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m18 = [ + 60, 0, 67, 0, 70, 67, 60, 0, + 67, 0, 70, 60, 0, 67, 70, 75, + 60, 0, 67, 0, 70, 67, 60, 65, + 67, 0, 70, 0, 75, 70, 67, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/m19.scd b/sound_algo/palette/melodies/short/m19.scd new file mode 100644 index 0000000..bcb95a1 --- /dev/null +++ b/sound_algo/palette/melodies/short/m19.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~m19 -- short melody (64 steps), genre: various +// ===================================================================== +( +~m19 = [ + 60, 63, 65, 67, 70, 67, 65, 63, + 60, 63, 67, 70, 72, 70, 67, 63, + 65, 67, 70, 72, 75, 72, 70, 67, + 65, 70, 72, 75, 77, 75, 72, 70, + 63, 65, 67, 70, 72, 70, 67, 65, + 63, 67, 70, 72, 75, 72, 70, 67, + 60, 63, 67, 70, 72, 75, 72, 70, + 67, 65, 63, 67, 65, 63, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m2.scd b/sound_algo/palette/melodies/short/m2.scd new file mode 100644 index 0000000..1f452b7 --- /dev/null +++ b/sound_algo/palette/melodies/short/m2.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m2 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~m2 = [ + 60, 0, 0, 67, 0, 70, 0, 67, + 60, 0, 0, 67, 0, 70, 0, 72, + 60, 0, 0, 67, 0, 70, 0, 67, + 63, 0, 0, 70, 0, 72, 0, 75 +]; +) diff --git a/sound_algo/palette/melodies/short/m20.scd b/sound_algo/palette/melodies/short/m20.scd new file mode 100644 index 0000000..a4b8dd2 --- /dev/null +++ b/sound_algo/palette/melodies/short/m20.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~m20 -- short melody (64 steps), genre: oriental +// ===================================================================== +( +~m20 = [ + 60, 0, 61, 0, 63, 65, 0, 67, + 68, 0, 67, 65, 63, 61, 0, 60, + 63, 0, 65, 0, 67, 68, 0, 70, + 72, 0, 70, 68, 67, 65, 0, 63, + 65, 0, 67, 0, 68, 70, 0, 72, + 74, 0, 72, 70, 68, 67, 0, 65, + 72, 0, 70, 68, 67, 65, 63, 61, + 60, 65, 63, 65, 61, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m21.scd b/sound_algo/palette/melodies/short/m21.scd new file mode 100644 index 0000000..f307ef5 --- /dev/null +++ b/sound_algo/palette/melodies/short/m21.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~m21 -- short melody (64 steps), genre: various +// ===================================================================== +( +~m21 = [ + 60, 62, 0, 65, 67, 0, 69, 70, + 67, 65, 62, 60, 0, 65, 67, 70, + 62, 0, 65, 67, 69, 0, 70, 72, + 69, 67, 65, 62, 0, 60, 65, 67, + 65, 67, 69, 70, 72, 70, 69, 67, + 65, 62, 60, 0, 62, 65, 67, 69, + 72, 70, 69, 67, 65, 62, 60, 0, + 65, 67, 69, 70, 72, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m22.scd b/sound_algo/palette/melodies/short/m22.scd new file mode 100644 index 0000000..24b6bd1 --- /dev/null +++ b/sound_algo/palette/melodies/short/m22.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~m22 -- short melody (64 steps), genre: various +// ===================================================================== +( +~m22 = [ + 60, 63, 65, 67, 70, 67, 65, 63, + 60, 67, 65, 63, 65, 70, 65, 67, + 63, 65, 67, 70, 72, 70, 67, 65, + 63, 70, 67, 65, 67, 72, 67, 70, + 65, 67, 68, 70, 72, 70, 68, 67, + 65, 72, 70, 67, 70, 72, 70, 72, + 67, 68, 70, 72, 74, 72, 70, 68, + 67, 74, 72, 70, 72, 75, 72, 75 +]; +) diff --git a/sound_algo/palette/melodies/short/m23.scd b/sound_algo/palette/melodies/short/m23.scd new file mode 100644 index 0000000..720b74f --- /dev/null +++ b/sound_algo/palette/melodies/short/m23.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~m23 -- short melody (64 steps), genre: detroit +// ===================================================================== +( +~m23 = [ + 63, 70, 67, 70, 65, 72, 70, 72, + 63, 70, 67, 70, 65, 72, 75, 72, + 65, 72, 70, 72, 67, 75, 72, 75, + 65, 72, 70, 72, 60, 67, 65, 67, + 63, 70, 67, 70, 65, 72, 70, 72, + 63, 67, 65, 67, 65, 72, 75, 79, + 65, 72, 70, 72, 67, 75, 72, 75, + 60, 67, 65, 67, 63, 70, 67, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/m24.scd b/sound_algo/palette/melodies/short/m24.scd new file mode 100644 index 0000000..8c2e3ba --- /dev/null +++ b/sound_algo/palette/melodies/short/m24.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~m24 -- short melody (64 steps), genre: trance +// ===================================================================== +( +~m24 = [ + 60, 67, 72, 75, 72, 67, 60, 67, + 63, 70, 75, 77, 75, 70, 63, 70, + 65, 72, 77, 79, 77, 72, 65, 72, + 67, 74, 79, 82, 79, 74, 67, 74, + 79, 77, 75, 72, 70, 67, 65, 63, + 72, 75, 77, 79, 82, 79, 77, 75, + 65, 72, 77, 79, 84, 82, 79, 77, + 72, 70, 67, 65, 63, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m25.scd b/sound_algo/palette/melodies/short/m25.scd new file mode 100644 index 0000000..1e3f321 --- /dev/null +++ b/sound_algo/palette/melodies/short/m25.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~m25 -- short melody (64 steps), genre: various +// ===================================================================== +( +~m25 = [ + 72, 0, 70, 0, 67, 0, 65, 0, + 63, 0, 65, 0, 67, 0, 70, 0, + 72, 0, 75, 0, 77, 0, 75, 0, + 72, 0, 70, 0, 67, 0, 65, 0, + 77, 0, 75, 0, 72, 0, 70, 0, + 67, 0, 65, 0, 63, 0, 65, 0, + 79, 0, 77, 0, 75, 0, 72, 0, + 77, 0, 75, 0, 70, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m26.scd b/sound_algo/palette/melodies/short/m26.scd new file mode 100644 index 0000000..0505223 --- /dev/null +++ b/sound_algo/palette/melodies/short/m26.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~m26 -- short melody (64 steps), genre: various +// ===================================================================== +( +~m26 = [ + 60, 63, 67, 70, 72, 75, 79, 82, + 79, 75, 72, 70, 67, 63, 60, 63, + 67, 70, 72, 75, 79, 82, 84, 87, + 84, 82, 79, 75, 72, 70, 67, 63, + 65, 67, 70, 72, 75, 79, 82, 84, + 82, 79, 75, 72, 70, 67, 65, 67, + 63, 65, 67, 70, 72, 75, 77, 79, + 77, 75, 72, 70, 67, 65, 63, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/m27.scd b/sound_algo/palette/melodies/short/m27.scd new file mode 100644 index 0000000..3d9f003 --- /dev/null +++ b/sound_algo/palette/melodies/short/m27.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~m27 -- short melody (64 steps), genre: hypnotic +// ===================================================================== +( +~m27 = [ + 60, 0, 67, 0, 70, 0, 67, 60, + 60, 0, 67, 0, 70, 0, 72, 75, + 63, 0, 70, 0, 72, 0, 70, 63, + 63, 0, 70, 0, 72, 0, 75, 77, + 65, 0, 72, 0, 75, 0, 72, 65, + 65, 0, 72, 0, 75, 0, 77, 79, + 63, 0, 70, 0, 72, 0, 70, 63, + 60, 0, 67, 0, 65, 0, 63, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/m28.scd b/sound_algo/palette/melodies/short/m28.scd new file mode 100644 index 0000000..f65abf3 --- /dev/null +++ b/sound_algo/palette/melodies/short/m28.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// ~m28 -- short melody (64 steps), genre: trance +// ===================================================================== +( +~m28 = [ + 72, 0, 70, 0, 67, 70, 0, 65, + 63, 0, 65, 67, 70, 0, 72, 75, + 77, 0, 75, 0, 72, 75, 0, 70, + 67, 0, 70, 72, 75, 0, 77, 79, + 75, 0, 77, 0, 75, 72, 0, 70, + 67, 0, 65, 67, 70, 0, 75, 72, + 70, 0, 67, 0, 65, 67, 0, 63, + 60, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m29.scd b/sound_algo/palette/melodies/short/m29.scd new file mode 100644 index 0000000..6e44d72 --- /dev/null +++ b/sound_algo/palette/melodies/short/m29.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m29 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~m29 = [ + 36, 0, 48, 0, 36, 39, 0, 48, + 36, 0, 51, 39, 0, 36, 48, 0, + 36, 0, 48, 0, 36, 39, 0, 51, + 39, 0, 36, 48, 0, 39, 0, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/m3.scd b/sound_algo/palette/melodies/short/m3.scd new file mode 100644 index 0000000..2689748 --- /dev/null +++ b/sound_algo/palette/melodies/short/m3.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m3 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~m3 = [ + 63, 0, 0, 0, 70, 0, 67, 0, + 65, 0, 0, 0, 70, 0, 72, 0, + 63, 0, 0, 0, 67, 0, 70, 0, + 65, 0, 60, 0, 67, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m30.scd b/sound_algo/palette/melodies/short/m30.scd new file mode 100644 index 0000000..549c592 --- /dev/null +++ b/sound_algo/palette/melodies/short/m30.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m30 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~m30 = [ + 36, 36, 48, 0, 36, 0, 39, 48, + 36, 51, 0, 36, 39, 0, 48, 0, + 36, 0, 48, 51, 36, 0, 39, 48, + 36, 36, 51, 0, 36, 48, 39, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m31.scd b/sound_algo/palette/melodies/short/m31.scd new file mode 100644 index 0000000..5f1d221 --- /dev/null +++ b/sound_algo/palette/melodies/short/m31.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m31 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~m31 = [ + 36, 0, 0, 0, 39, 0, 0, 0, + 41, 0, 0, 0, 36, 0, 0, 0, + 34, 0, 0, 0, 39, 0, 0, 0, + 41, 0, 0, 0, 43, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m32.scd b/sound_algo/palette/melodies/short/m32.scd new file mode 100644 index 0000000..ba82edc --- /dev/null +++ b/sound_algo/palette/melodies/short/m32.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m32 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~m32 = [ + 72, 0, 75, 0, 72, 0, 70, 0, + 67, 0, 70, 0, 72, 0, 75, 0, + 77, 0, 75, 0, 72, 0, 70, 0, + 75, 0, 72, 0, 70, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m33.scd b/sound_algo/palette/melodies/short/m33.scd new file mode 100644 index 0000000..89a16bc --- /dev/null +++ b/sound_algo/palette/melodies/short/m33.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m33 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~m33 = [ + 60, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m34.scd b/sound_algo/palette/melodies/short/m34.scd new file mode 100644 index 0000000..a99835a --- /dev/null +++ b/sound_algo/palette/melodies/short/m34.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m34 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~m34 = [ + 60, 0, 0, 0, 67, 0, 0, 0, + 70, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 70, 0, 0, 0, + 72, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m35.scd b/sound_algo/palette/melodies/short/m35.scd new file mode 100644 index 0000000..f3abf6f --- /dev/null +++ b/sound_algo/palette/melodies/short/m35.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m35 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~m35 = [ + 67, 67, 0, 70, 72, 0, 70, 67, + 65, 0, 67, 0, 0, 0, 0, 0, + 67, 67, 0, 70, 72, 0, 75, 72, + 70, 0, 67, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m36.scd b/sound_algo/palette/melodies/short/m36.scd new file mode 100644 index 0000000..6513b70 --- /dev/null +++ b/sound_algo/palette/melodies/short/m36.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m36 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~m36 = [ + 60, 0, 67, 0, 70, 0, 72, 0, + 72, 70, 67, 70, 72, 0, 0, 0, + 60, 0, 67, 0, 70, 0, 75, 0, + 75, 72, 70, 72, 75, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m37.scd b/sound_algo/palette/melodies/short/m37.scd new file mode 100644 index 0000000..1f5fc39 --- /dev/null +++ b/sound_algo/palette/melodies/short/m37.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m37 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~m37 = [ + 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m38.scd b/sound_algo/palette/melodies/short/m38.scd new file mode 100644 index 0000000..2c1c70b --- /dev/null +++ b/sound_algo/palette/melodies/short/m38.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m38 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~m38 = [ + 48, 0, 0, 0, 0, 0, 0, 0, + 54, 0, 0, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 0, 0, 0, 0, + 54, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m39.scd b/sound_algo/palette/melodies/short/m39.scd new file mode 100644 index 0000000..9f62130 --- /dev/null +++ b/sound_algo/palette/melodies/short/m39.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m39 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~m39 = [ + 60, 61, 0, 64, 65, 0, 67, 68, + 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 0, 68, 71, + 72, 71, 68, 67, 65, 64, 61, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/m4.scd b/sound_algo/palette/melodies/short/m4.scd new file mode 100644 index 0000000..5f77d0d --- /dev/null +++ b/sound_algo/palette/melodies/short/m4.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m4 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m4 = [ + 60, 63, 67, 70, 72, 70, 67, 63, + 60, 63, 67, 70, 75, 72, 70, 67, + 65, 67, 70, 72, 75, 72, 70, 65, + 63, 67, 70, 75, 79, 75, 70, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/m40.scd b/sound_algo/palette/melodies/short/m40.scd new file mode 100644 index 0000000..565be20 --- /dev/null +++ b/sound_algo/palette/melodies/short/m40.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m40 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~m40 = [ + 60, 0, 62, 0, 63, 0, 67, 0, + 68, 0, 67, 63, 0, 62, 60, 0, + 60, 0, 63, 0, 67, 0, 68, 0, + 72, 0, 68, 67, 63, 62, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m41.scd b/sound_algo/palette/melodies/short/m41.scd new file mode 100644 index 0000000..b731d86 --- /dev/null +++ b/sound_algo/palette/melodies/short/m41.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m41 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~m41 = [ + 60, 0, 65, 0, 67, 0, 70, 0, + 72, 0, 70, 67, 65, 0, 60, 0, + 65, 0, 67, 0, 70, 0, 72, 0, + 74, 0, 72, 70, 67, 65, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m42.scd b/sound_algo/palette/melodies/short/m42.scd new file mode 100644 index 0000000..23fafba --- /dev/null +++ b/sound_algo/palette/melodies/short/m42.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m42 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m42 = [ + 64, 65, 67, 65, 64, 0, 60, 0, + 64, 65, 67, 68, 67, 65, 64, 0, + 67, 68, 70, 68, 67, 0, 64, 0, + 67, 68, 70, 72, 70, 68, 67, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/m43.scd b/sound_algo/palette/melodies/short/m43.scd new file mode 100644 index 0000000..39cc34f --- /dev/null +++ b/sound_algo/palette/melodies/short/m43.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m43 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m43 = [ + 60, 61, 64, 65, 67, 65, 64, 61, + 60, 0, 64, 65, 67, 68, 67, 65, + 64, 61, 60, 61, 64, 65, 67, 68, + 70, 68, 67, 65, 64, 61, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m44.scd b/sound_algo/palette/melodies/short/m44.scd new file mode 100644 index 0000000..6fb8f01 --- /dev/null +++ b/sound_algo/palette/melodies/short/m44.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m44 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~m44 = [ + 60, 0, 63, 65, 67, 0, 68, 71, + 72, 71, 68, 67, 65, 63, 0, 60, + 63, 65, 67, 68, 71, 72, 71, 68, + 67, 65, 63, 60, 63, 65, 67, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/m45.scd b/sound_algo/palette/melodies/short/m45.scd new file mode 100644 index 0000000..f8cca3f --- /dev/null +++ b/sound_algo/palette/melodies/short/m45.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m45 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~m45 = [ + 48, 0, 54, 0, 48, 0, 54, 0, + 60, 0, 54, 0, 48, 0, 54, 0, + 48, 54, 60, 54, 48, 0, 54, 0, + 60, 54, 48, 54, 60, 54, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m46.scd b/sound_algo/palette/melodies/short/m46.scd new file mode 100644 index 0000000..4e9696c --- /dev/null +++ b/sound_algo/palette/melodies/short/m46.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m46 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~m46 = [ + 36, 0, 41, 0, 43, 0, 41, 0, + 36, 0, 43, 41, 36, 0, 41, 0, + 36, 41, 43, 41, 48, 0, 43, 41, + 36, 0, 43, 41, 36, 41, 36, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m47.scd b/sound_algo/palette/melodies/short/m47.scd new file mode 100644 index 0000000..5f699f9 --- /dev/null +++ b/sound_algo/palette/melodies/short/m47.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m47 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~m47 = [ + 60, 0, 63, 64, 65, 67, 0, 70, + 67, 65, 64, 63, 60, 0, 67, 70, + 63, 0, 65, 67, 70, 0, 67, 65, + 63, 60, 63, 65, 67, 65, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m48.scd b/sound_algo/palette/melodies/short/m48.scd new file mode 100644 index 0000000..bc30162 --- /dev/null +++ b/sound_algo/palette/melodies/short/m48.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m48 -- short melody (32 steps), genre: world +// ===================================================================== +( +~m48 = [ + 60, 0, 62, 0, 64, 0, 67, 0, + 69, 0, 67, 64, 62, 60, 0, 0, + 62, 0, 64, 0, 67, 0, 69, 0, + 72, 0, 69, 67, 64, 62, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m49.scd b/sound_algo/palette/melodies/short/m49.scd new file mode 100644 index 0000000..0cad4f2 --- /dev/null +++ b/sound_algo/palette/melodies/short/m49.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m49 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~m49 = [ + 60, 0, 64, 0, 67, 0, 0, 0, + 67, 0, 71, 0, 74, 0, 0, 0, + 69, 0, 72, 0, 76, 0, 0, 0, + 65, 0, 69, 0, 72, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m5.scd b/sound_algo/palette/melodies/short/m5.scd new file mode 100644 index 0000000..c343f94 --- /dev/null +++ b/sound_algo/palette/melodies/short/m5.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m5 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~m5 = [ + 60, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 0, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m50.scd b/sound_algo/palette/melodies/short/m50.scd new file mode 100644 index 0000000..b5e3a53 --- /dev/null +++ b/sound_algo/palette/melodies/short/m50.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m50 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~m50 = [ + 69, 0, 72, 76, 72, 0, 69, 0, + 65, 0, 69, 72, 69, 0, 65, 0, + 60, 0, 64, 67, 64, 0, 60, 0, + 67, 0, 71, 74, 71, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m51.scd b/sound_algo/palette/melodies/short/m51.scd new file mode 100644 index 0000000..972d8c0 --- /dev/null +++ b/sound_algo/palette/melodies/short/m51.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m51 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~m51 = [ + 36, 0, 38, 0, 39, 0, 41, 0, + 43, 0, 44, 0, 43, 0, 41, 0, + 39, 0, 41, 0, 43, 0, 44, 0, + 46, 0, 48, 0, 46, 0, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m52.scd b/sound_algo/palette/melodies/short/m52.scd new file mode 100644 index 0000000..3e5d24a --- /dev/null +++ b/sound_algo/palette/melodies/short/m52.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m52 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~m52 = [ + 38, 41, 45, 41, 38, 0, 45, 41, + 43, 47, 50, 47, 43, 0, 50, 47, + 48, 52, 55, 52, 48, 0, 55, 52, + 50, 47, 43, 41, 38, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m53.scd b/sound_algo/palette/melodies/short/m53.scd new file mode 100644 index 0000000..969999a --- /dev/null +++ b/sound_algo/palette/melodies/short/m53.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m53 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~m53 = [ + 60, 61, 0, 70, 0, 73, 0, 67, + 61, 0, 73, 0, 67, 70, 0, 76, + 60, 61, 0, 70, 0, 73, 0, 67, + 73, 76, 0, 70, 67, 61, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m54.scd b/sound_algo/palette/melodies/short/m54.scd new file mode 100644 index 0000000..1b87551 --- /dev/null +++ b/sound_algo/palette/melodies/short/m54.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m54 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~m54 = [ + 60, 67, 65, 0, 60, 67, 65, 0, + 60, 67, 65, 0, 60, 67, 65, 0, + 63, 70, 67, 0, 63, 70, 67, 0, + 60, 67, 65, 0, 60, 67, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m55.scd b/sound_algo/palette/melodies/short/m55.scd new file mode 100644 index 0000000..861bd77 --- /dev/null +++ b/sound_algo/palette/melodies/short/m55.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m55 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~m55 = [ + 60, 63, 67, 70, 60, 63, 67, 70, + 60, 63, 67, 70, 60, 63, 67, 70, + 60, 63, 67, 72, 60, 63, 67, 72, + 60, 63, 67, 75, 60, 63, 67, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/m56.scd b/sound_algo/palette/melodies/short/m56.scd new file mode 100644 index 0000000..1896ee4 --- /dev/null +++ b/sound_algo/palette/melodies/short/m56.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m56 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~m56 = [ + 60, 67, 60, 67, 60, 67, 60, 67, + 60, 67, 60, 67, 60, 67, 60, 67, + 60, 65, 60, 65, 60, 65, 60, 65, + 60, 67, 60, 67, 60, 70, 60, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/m57.scd b/sound_algo/palette/melodies/short/m57.scd new file mode 100644 index 0000000..77916e3 --- /dev/null +++ b/sound_algo/palette/melodies/short/m57.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m57 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~m57 = [ + 72, 71, 70, 69, 68, 67, 66, 65, + 64, 63, 62, 61, 60, 0, 0, 0, + 72, 71, 70, 69, 68, 67, 66, 65, + 64, 63, 62, 61, 60, 59, 58, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/m58.scd b/sound_algo/palette/melodies/short/m58.scd new file mode 100644 index 0000000..c8b2944 --- /dev/null +++ b/sound_algo/palette/melodies/short/m58.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m58 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~m58 = [ + 60, 0, 62, 0, 64, 0, 66, 0, + 68, 0, 70, 0, 72, 0, 0, 0, + 72, 0, 70, 0, 68, 0, 66, 0, + 64, 0, 62, 0, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m59.scd b/sound_algo/palette/melodies/short/m59.scd new file mode 100644 index 0000000..306bf88 --- /dev/null +++ b/sound_algo/palette/melodies/short/m59.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m59 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~m59 = [ + 60, 0, 66, 0, 60, 0, 66, 0, + 72, 0, 66, 0, 60, 0, 66, 0, + 60, 66, 60, 66, 72, 66, 72, 66, + 60, 0, 66, 0, 72, 0, 66, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/m6.scd b/sound_algo/palette/melodies/short/m6.scd new file mode 100644 index 0000000..c014b9c --- /dev/null +++ b/sound_algo/palette/melodies/short/m6.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m6 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m6 = [ + 60, 0, 63, 0, 65, 67, 0, 70, + 72, 0, 75, 79, 0, 75, 72, 70, + 67, 0, 65, 63, 0, 60, 0, 63, + 65, 0, 67, 0, 70, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m60.scd b/sound_algo/palette/melodies/short/m60.scd new file mode 100644 index 0000000..5e7ec3e --- /dev/null +++ b/sound_algo/palette/melodies/short/m60.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m60 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~m60 = [ + 60, 61, 60, 64, 65, 64, 67, 68, + 67, 65, 64, 61, 60, 64, 65, 0, + 67, 68, 67, 71, 72, 71, 68, 67, + 65, 64, 61, 60, 61, 64, 65, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/m61.scd b/sound_algo/palette/melodies/short/m61.scd new file mode 100644 index 0000000..628bcca --- /dev/null +++ b/sound_algo/palette/melodies/short/m61.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m61 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~m61 = [ + 67, 0, 72, 0, 70, 0, 67, 65, + 63, 0, 67, 0, 70, 0, 72, 75, + 75, 0, 72, 0, 70, 0, 67, 65, + 63, 0, 60, 0, 65, 0, 67, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/m62.scd b/sound_algo/palette/melodies/short/m62.scd new file mode 100644 index 0000000..ff37723 --- /dev/null +++ b/sound_algo/palette/melodies/short/m62.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m62 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~m62 = [ + 60, 64, 67, 72, 60, 64, 67, 72, + 62, 65, 69, 74, 62, 65, 69, 74, + 63, 67, 70, 75, 63, 67, 70, 75, + 60, 64, 67, 72, 65, 67, 70, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/m63.scd b/sound_algo/palette/melodies/short/m63.scd new file mode 100644 index 0000000..a964c18 --- /dev/null +++ b/sound_algo/palette/melodies/short/m63.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m63 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~m63 = [ + 36, 0, 36, 0, 39, 0, 36, 0, + 41, 0, 36, 0, 39, 0, 41, 0, + 34, 0, 34, 0, 39, 0, 41, 0, + 43, 0, 41, 0, 39, 0, 36, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m64.scd b/sound_algo/palette/melodies/short/m64.scd new file mode 100644 index 0000000..48e40d6 --- /dev/null +++ b/sound_algo/palette/melodies/short/m64.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m64 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m64 = [ + 67, 0, 70, 0, 0, 67, 0, 65, + 67, 0, 70, 72, 0, 70, 0, 67, + 65, 0, 67, 0, 0, 65, 0, 63, + 65, 0, 67, 70, 0, 72, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/m65.scd b/sound_algo/palette/melodies/short/m65.scd new file mode 100644 index 0000000..27101a9 --- /dev/null +++ b/sound_algo/palette/melodies/short/m65.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m65 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~m65 = [ + 0, 67, 0, 70, 0, 67, 0, 65, + 0, 67, 0, 72, 0, 70, 0, 67, + 0, 70, 0, 72, 0, 70, 0, 67, + 0, 65, 0, 67, 0, 70, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/m66.scd b/sound_algo/palette/melodies/short/m66.scd new file mode 100644 index 0000000..cf5168c --- /dev/null +++ b/sound_algo/palette/melodies/short/m66.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m66 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~m66 = [ + 48, 0, 51, 0, 53, 0, 48, 0, + 46, 0, 51, 0, 53, 0, 55, 0, + 48, 0, 51, 53, 51, 0, 48, 0, + 46, 0, 53, 0, 55, 0, 51, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/m67.scd b/sound_algo/palette/melodies/short/m67.scd new file mode 100644 index 0000000..192c287 --- /dev/null +++ b/sound_algo/palette/melodies/short/m67.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m67 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~m67 = [ + 60, 0, 0, 0, 60, 0, 60, 0, + 73, 0, 0, 0, 73, 0, 73, 0, + 60, 60, 0, 73, 73, 0, 60, 73, + 79, 0, 73, 0, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m68.scd b/sound_algo/palette/melodies/short/m68.scd new file mode 100644 index 0000000..1d204d1 --- /dev/null +++ b/sound_algo/palette/melodies/short/m68.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m68 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~m68 = [ + 36, 0, 36, 0, 36, 0, 36, 0, + 39, 0, 39, 0, 39, 0, 39, 0, + 36, 0, 36, 39, 36, 0, 39, 0, + 41, 0, 39, 0, 36, 0, 41, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m69.scd b/sound_algo/palette/melodies/short/m69.scd new file mode 100644 index 0000000..fb50a11 --- /dev/null +++ b/sound_algo/palette/melodies/short/m69.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m69 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~m69 = [ + 60, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m7.scd b/sound_algo/palette/melodies/short/m7.scd new file mode 100644 index 0000000..7a12526 --- /dev/null +++ b/sound_algo/palette/melodies/short/m7.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m7 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m7 = [ + 36, 0, 36, 39, 0, 41, 36, 0, + 38, 0, 36, 39, 0, 43, 41, 0, + 36, 0, 36, 39, 0, 41, 36, 0, + 38, 0, 41, 39, 36, 0, 41, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m70.scd b/sound_algo/palette/melodies/short/m70.scd new file mode 100644 index 0000000..229eae9 --- /dev/null +++ b/sound_algo/palette/melodies/short/m70.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m70 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~m70 = [ + 36, 0, 39, 36, 48, 0, 36, 39, + 41, 0, 39, 36, 48, 0, 41, 39, + 36, 39, 41, 39, 36, 0, 48, 36, + 43, 41, 39, 36, 39, 0, 41, 39 +]; +) diff --git a/sound_algo/palette/melodies/short/m71.scd b/sound_algo/palette/melodies/short/m71.scd new file mode 100644 index 0000000..49aa6ac --- /dev/null +++ b/sound_algo/palette/melodies/short/m71.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m71 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~m71 = [ + 60, 63, 67, 70, 0, 0, 0, 0, + 60, 63, 67, 70, 0, 0, 0, 0, + 58, 62, 65, 68, 0, 0, 0, 0, + 60, 63, 67, 70, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m72.scd b/sound_algo/palette/melodies/short/m72.scd new file mode 100644 index 0000000..9f97b0d --- /dev/null +++ b/sound_algo/palette/melodies/short/m72.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m72 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~m72 = [ + 60, 0, 0, 63, 0, 0, 67, 0, + 0, 70, 0, 0, 0, 67, 0, 0, + 65, 0, 0, 67, 0, 0, 70, 0, + 0, 72, 0, 0, 0, 70, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m73.scd b/sound_algo/palette/melodies/short/m73.scd new file mode 100644 index 0000000..2f0fd27 --- /dev/null +++ b/sound_algo/palette/melodies/short/m73.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m73 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~m73 = [ + 72, 0, 0, 0, 0, 0, 70, 0, + 0, 0, 67, 0, 0, 0, 65, 0, + 0, 0, 67, 0, 0, 0, 70, 0, + 0, 0, 72, 0, 0, 0, 75, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m74.scd b/sound_algo/palette/melodies/short/m74.scd new file mode 100644 index 0000000..bd9a5c8 --- /dev/null +++ b/sound_algo/palette/melodies/short/m74.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m74 -- short melody (32 steps), genre: world +// ===================================================================== +( +~m74 = [ + 60, 67, 72, 64, 67, 71, 60, 67, + 62, 65, 69, 62, 65, 69, 60, 67, + 64, 67, 71, 64, 67, 71, 60, 67, + 65, 69, 72, 65, 69, 72, 60, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/m75.scd b/sound_algo/palette/melodies/short/m75.scd new file mode 100644 index 0000000..8672d63 --- /dev/null +++ b/sound_algo/palette/melodies/short/m75.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m75 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~m75 = [ + 72, 75, 79, 75, 72, 75, 79, 84, + 79, 75, 72, 75, 72, 70, 67, 65, + 67, 70, 72, 75, 79, 75, 72, 70, + 67, 65, 67, 70, 72, 70, 67, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/m76.scd b/sound_algo/palette/melodies/short/m76.scd new file mode 100644 index 0000000..f208801 --- /dev/null +++ b/sound_algo/palette/melodies/short/m76.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m76 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m76 = [ + 67, 0, 70, 67, 0, 65, 67, 0, + 63, 0, 67, 0, 70, 65, 67, 0, + 75, 0, 72, 70, 0, 67, 65, 0, + 67, 0, 70, 0, 72, 75, 70, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/m77.scd b/sound_algo/palette/melodies/short/m77.scd new file mode 100644 index 0000000..6c5d73f --- /dev/null +++ b/sound_algo/palette/melodies/short/m77.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m77 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~m77 = [ + 60, 60, 67, 60, 65, 60, 67, 60, + 62, 62, 69, 62, 67, 62, 69, 62, + 63, 63, 70, 63, 68, 63, 70, 63, + 65, 65, 72, 65, 70, 65, 72, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/m78.scd b/sound_algo/palette/melodies/short/m78.scd new file mode 100644 index 0000000..cc715eb --- /dev/null +++ b/sound_algo/palette/melodies/short/m78.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m78 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m78 = [ + 0, 67, 0, 70, 67, 0, 70, 0, + 72, 0, 70, 0, 67, 70, 0, 65, + 0, 67, 0, 70, 67, 0, 75, 0, + 72, 70, 0, 67, 65, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/m8.scd b/sound_algo/palette/melodies/short/m8.scd new file mode 100644 index 0000000..7491588 --- /dev/null +++ b/sound_algo/palette/melodies/short/m8.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m8 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~m8 = [ + 60, 67, 72, 67, 60, 67, 72, 75, + 60, 67, 72, 67, 65, 72, 77, 72, + 60, 67, 72, 67, 60, 67, 72, 79, + 65, 72, 77, 72, 60, 67, 72, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/m9.scd b/sound_algo/palette/melodies/short/m9.scd new file mode 100644 index 0000000..22f64aa --- /dev/null +++ b/sound_algo/palette/melodies/short/m9.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~m9 -- short melody (32 steps), genre: various +// ===================================================================== +( +~m9 = [ + 60, 0, 63, 0, 67, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 65, 0, 67, 0, 70, 0, 72, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid100.scd b/sound_algo/palette/melodies/short/mAcid100.scd new file mode 100644 index 0000000..ef666f9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid100 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid100 = [ + 40, 60, 39, 36, 55, 41, 55, 41, + 40, 0, 47, 40, 38, 38, 45, 57, + 40, 0, 50, 53, 52, 38, 53, 0, + 0, 0, 0, 48, 47, 53, 60, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid101.scd b/sound_algo/palette/melodies/short/mAcid101.scd new file mode 100644 index 0000000..e753d55 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid101 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid101 = [ + 49, 40, 50, 55, 47, 40, 45, 0, + 0, 40, 0, 38, 49, 50, 0, 55, + 57, 54, 59, 49, 55, 50, 57, 38, + 0, 54, 42, 57, 50, 0, 49, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid102.scd b/sound_algo/palette/melodies/short/mAcid102.scd new file mode 100644 index 0000000..4baf96f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid102 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid102 = [ + 54, 42, 45, 50, 37, 37, 35, 0, + 57, 50, 52, 42, 42, 54, 47, 59, + 54, 47, 57, 0, 49, 40, 42, 0, + 59, 37, 60, 0, 0, 0, 0, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid103.scd b/sound_algo/palette/melodies/short/mAcid103.scd new file mode 100644 index 0000000..3e95083 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid103 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid103 = [ + 55, 50, 40, 38, 0, 38, 0, 52, + 47, 0, 45, 0, 42, 40, 0, 45, + 0, 0, 52, 0, 0, 42, 40, 0, + 0, 0, 40, 50, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid104.scd b/sound_algo/palette/melodies/short/mAcid104.scd new file mode 100644 index 0000000..794653a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid104 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid104 = [ + 0, 45, 0, 43, 59, 36, 60, 40, + 52, 47, 43, 60, 0, 0, 0, 41, + 55, 60, 56, 0, 0, 40, 0, 0, + 0, 55, 0, 0, 55, 0, 57, 47 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid105.scd b/sound_algo/palette/melodies/short/mAcid105.scd new file mode 100644 index 0000000..27f192e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid105 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid105 = [ + 0, 43, 52, 55, 0, 50, 52, 37, + 0, 57, 55, 0, 0, 47, 54, 0, + 0, 0, 43, 54, 45, 42, 47, 0, + 0, 43, 59, 43, 52, 59, 49, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid106.scd b/sound_algo/palette/melodies/short/mAcid106.scd new file mode 100644 index 0000000..b787a97 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid106 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid106 = [ + 59, 47, 61, 0, 0, 0, 0, 0, + 55, 36, 57, 0, 54, 50, 57, 0, + 50, 60, 60, 59, 43, 0, 57, 54, + 59, 43, 60, 40, 43, 0, 47, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid107.scd b/sound_algo/palette/melodies/short/mAcid107.scd new file mode 100644 index 0000000..b27ae4a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid107 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid107 = [ + 57, 59, 58, 0, 0, 0, 47, 54, + 40, 52, 43, 42, 49, 59, 59, 37, + 0, 45, 38, 0, 42, 37, 42, 54, + 49, 0, 0, 52, 0, 0, 0, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid108.scd b/sound_algo/palette/melodies/short/mAcid108.scd new file mode 100644 index 0000000..df96d1a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid108 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid108 = [ + 59, 59, 48, 45, 55, 40, 0, 0, + 50, 60, 59, 0, 59, 60, 58, 48, + 45, 59, 48, 57, 55, 43, 50, 0, + 48, 42, 54, 0, 47, 55, 54, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid109.scd b/sound_algo/palette/melodies/short/mAcid109.scd new file mode 100644 index 0000000..97086e2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid109 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid109 = [ + 45, 50, 37, 0, 40, 57, 59, 43, + 42, 0, 59, 59, 54, 37, 57, 43, + 54, 52, 52, 50, 43, 0, 0, 52, + 38, 0, 42, 38, 37, 47, 36, 37 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid110.scd b/sound_algo/palette/melodies/short/mAcid110.scd new file mode 100644 index 0000000..a33f9ba --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid110 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid110 = [ + 49, 0, 49, 52, 45, 37, 54, 0, + 57, 44, 56, 0, 44, 52, 46, 38, + 45, 59, 47, 0, 59, 0, 38, 45, + 59, 37, 50, 37, 49, 57, 44, 44 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid111.scd b/sound_algo/palette/melodies/short/mAcid111.scd new file mode 100644 index 0000000..e96f6f7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid111 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid111 = [ + 0, 50, 42, 0, 59, 57, 0, 57, + 44, 59, 45, 40, 45, 50, 45, 0, + 0, 47, 57, 45, 57, 54, 0, 40, + 54, 0, 52, 0, 49, 40, 54, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid112.scd b/sound_algo/palette/melodies/short/mAcid112.scd new file mode 100644 index 0000000..f511a0d --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid112 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid112 = [ + 57, 38, 55, 37, 43, 47, 50, 54, + 0, 38, 47, 42, 42, 43, 54, 57, + 54, 49, 0, 0, 55, 59, 47, 0, + 45, 55, 59, 43, 57, 37, 0, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid113.scd b/sound_algo/palette/melodies/short/mAcid113.scd new file mode 100644 index 0000000..6a08a45 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid113 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid113 = [ + 40, 57, 39, 43, 0, 59, 0, 0, + 57, 38, 42, 0, 0, 0, 0, 0, + 37, 38, 54, 0, 57, 0, 42, 52, + 0, 52, 38, 0, 54, 40, 37, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid114.scd b/sound_algo/palette/melodies/short/mAcid114.scd new file mode 100644 index 0000000..b0e735c --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid114 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid114 = [ + 59, 60, 0, 47, 59, 0, 42, 52, + 0, 45, 40, 0, 50, 42, 0, 57, + 36, 40, 0, 57, 36, 45, 0, 45, + 43, 55, 42, 48, 0, 38, 42, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid115.scd b/sound_algo/palette/melodies/short/mAcid115.scd new file mode 100644 index 0000000..3209234 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid115 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid115 = [ + 54, 57, 59, 57, 47, 42, 59, 47, + 45, 45, 0, 49, 38, 56, 57, 37, + 45, 47, 54, 0, 37, 49, 45, 50, + 42, 0, 50, 57, 49, 59, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid116.scd b/sound_algo/palette/melodies/short/mAcid116.scd new file mode 100644 index 0000000..a3fa9db --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid116 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid116 = [ + 47, 43, 57, 0, 40, 52, 38, 53, + 47, 57, 45, 43, 50, 36, 52, 41, + 43, 0, 44, 55, 55, 50, 54, 0, + 36, 48, 0, 0, 55, 43, 56, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid117.scd b/sound_algo/palette/melodies/short/mAcid117.scd new file mode 100644 index 0000000..8d83a1a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid117 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid117 = [ + 54, 57, 0, 57, 54, 0, 52, 52, + 45, 38, 54, 43, 37, 49, 45, 0, + 59, 52, 49, 57, 0, 57, 42, 49, + 49, 59, 55, 54, 49, 59, 48, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid118.scd b/sound_algo/palette/melodies/short/mAcid118.scd new file mode 100644 index 0000000..d7ebf02 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid118 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid118 = [ + 54, 38, 47, 45, 0, 59, 0, 0, + 0, 54, 45, 44, 49, 40, 44, 0, + 59, 50, 60, 0, 40, 59, 52, 0, + 49, 56, 49, 57, 54, 57, 59, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid119.scd b/sound_algo/palette/melodies/short/mAcid119.scd new file mode 100644 index 0000000..36c8e07 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid119 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid119 = [ + 55, 47, 60, 48, 0, 0, 47, 42, + 43, 60, 41, 0, 0, 43, 0, 59, + 48, 60, 43, 40, 50, 57, 48, 42, + 48, 59, 0, 36, 0, 55, 47, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid120.scd b/sound_algo/palette/melodies/short/mAcid120.scd new file mode 100644 index 0000000..11593f1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid120 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid120 = [ + 40, 0, 0, 0, 42, 57, 0, 42, + 37, 43, 59, 43, 43, 57, 54, 38, + 0, 47, 0, 0, 49, 0, 47, 57, + 49, 59, 43, 38, 49, 47, 47, 37 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid121.scd b/sound_algo/palette/melodies/short/mAcid121.scd new file mode 100644 index 0000000..682bbdf --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid121 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid121 = [ + 0, 40, 0, 0, 52, 45, 50, 38, + 55, 50, 57, 48, 55, 0, 38, 38, + 48, 0, 0, 0, 0, 55, 50, 43, + 0, 0, 0, 57, 43, 0, 48, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid122.scd b/sound_algo/palette/melodies/short/mAcid122.scd new file mode 100644 index 0000000..544a78d --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid122 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid122 = [ + 40, 52, 43, 45, 0, 50, 0, 0, + 50, 53, 50, 53, 40, 52, 38, 60, + 36, 53, 34, 41, 0, 53, 60, 43, + 43, 0, 43, 55, 52, 45, 45, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid123.scd b/sound_algo/palette/melodies/short/mAcid123.scd new file mode 100644 index 0000000..1655ce9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid123 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid123 = [ + 49, 44, 38, 0, 42, 37, 49, 59, + 0, 50, 38, 44, 0, 0, 47, 50, + 38, 49, 0, 52, 0, 38, 57, 0, + 42, 50, 37, 40, 0, 0, 40, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid124.scd b/sound_algo/palette/melodies/short/mAcid124.scd new file mode 100644 index 0000000..8547be4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid124 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid124 = [ + 57, 42, 0, 40, 57, 59, 59, 52, + 0, 37, 47, 55, 54, 59, 0, 0, + 42, 54, 40, 40, 54, 57, 0, 57, + 42, 54, 43, 43, 0, 55, 45, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid125.scd b/sound_algo/palette/melodies/short/mAcid125.scd new file mode 100644 index 0000000..ed00751 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid125 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid125 = [ + 0, 37, 0, 54, 45, 0, 57, 50, + 0, 54, 0, 0, 45, 54, 57, 52, + 59, 0, 61, 59, 59, 49, 55, 0, + 0, 0, 52, 45, 50, 40, 51, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid126.scd b/sound_algo/palette/melodies/short/mAcid126.scd new file mode 100644 index 0000000..847bc16 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid126 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid126 = [ + 45, 55, 43, 0, 0, 38, 40, 50, + 0, 0, 0, 0, 45, 41, 0, 48, + 0, 47, 0, 0, 0, 0, 0, 0, + 0, 57, 48, 45, 36, 0, 0, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid127.scd b/sound_algo/palette/melodies/short/mAcid127.scd new file mode 100644 index 0000000..edb5f67 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid127 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid127 = [ + 37, 56, 35, 0, 37, 40, 36, 0, + 0, 47, 47, 47, 54, 59, 59, 40, + 0, 40, 42, 0, 49, 50, 47, 0, + 45, 56, 0, 54, 37, 38, 37, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid128.scd b/sound_algo/palette/melodies/short/mAcid128.scd new file mode 100644 index 0000000..5b801c7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid128 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid128 = [ + 60, 0, 59, 48, 59, 60, 60, 47, + 43, 0, 59, 59, 0, 0, 0, 47, + 43, 45, 60, 45, 42, 47, 44, 59, + 52, 0, 48, 60, 36, 42, 0, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid129.scd b/sound_algo/palette/melodies/short/mAcid129.scd new file mode 100644 index 0000000..865e372 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid129 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid129 = [ + 52, 47, 41, 47, 55, 53, 54, 0, + 0, 48, 55, 0, 48, 60, 53, 0, + 38, 0, 40, 40, 0, 55, 41, 45, + 60, 48, 36, 50, 59, 43, 57, 47 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid130.scd b/sound_algo/palette/melodies/short/mAcid130.scd new file mode 100644 index 0000000..cc6954a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid130 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid130 = [ + 40, 52, 59, 57, 38, 0, 0, 60, + 0, 0, 36, 0, 0, 50, 36, 59, + 52, 59, 0, 38, 52, 0, 60, 47, + 0, 55, 0, 45, 40, 57, 52, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid131.scd b/sound_algo/palette/melodies/short/mAcid131.scd new file mode 100644 index 0000000..707428e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid131 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid131 = [ + 47, 57, 40, 47, 47, 38, 38, 57, + 47, 57, 60, 42, 52, 43, 48, 40, + 52, 60, 42, 0, 48, 43, 47, 52, + 48, 59, 0, 52, 59, 45, 47, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid132.scd b/sound_algo/palette/melodies/short/mAcid132.scd new file mode 100644 index 0000000..e8470e2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid132 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid132 = [ + 0, 59, 0, 48, 47, 55, 47, 52, + 55, 0, 57, 36, 0, 60, 0, 60, + 54, 40, 36, 54, 47, 59, 45, 42, + 55, 42, 47, 54, 47, 59, 43, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid133.scd b/sound_algo/palette/melodies/short/mAcid133.scd new file mode 100644 index 0000000..ee678bb --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid133 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid133 = [ + 52, 47, 40, 47, 60, 52, 36, 41, + 57, 38, 0, 45, 47, 48, 53, 47, + 45, 48, 59, 57, 38, 45, 43, 45, + 52, 52, 40, 50, 40, 48, 38, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid134.scd b/sound_algo/palette/melodies/short/mAcid134.scd new file mode 100644 index 0000000..d53860f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid134 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid134 = [ + 57, 0, 50, 38, 45, 57, 55, 42, + 0, 59, 42, 37, 37, 38, 0, 57, + 0, 59, 0, 40, 59, 37, 50, 50, + 43, 43, 0, 54, 0, 57, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid135.scd b/sound_algo/palette/melodies/short/mAcid135.scd new file mode 100644 index 0000000..fdcbc92 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid135 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid135 = [ + 45, 48, 36, 0, 0, 48, 55, 38, + 0, 47, 0, 45, 0, 52, 59, 45, + 0, 0, 54, 0, 43, 36, 44, 55, + 0, 0, 59, 0, 43, 54, 41, 47 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid136.scd b/sound_algo/palette/melodies/short/mAcid136.scd new file mode 100644 index 0000000..1a27d91 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid136 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid136 = [ + 0, 45, 0, 57, 0, 0, 0, 0, + 52, 60, 55, 55, 59, 42, 38, 38, + 52, 40, 54, 50, 43, 0, 41, 0, + 0, 50, 42, 0, 43, 38, 54, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid137.scd b/sound_algo/palette/melodies/short/mAcid137.scd new file mode 100644 index 0000000..28e4d49 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid137 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid137 = [ + 57, 54, 55, 38, 42, 0, 45, 54, + 0, 54, 56, 59, 49, 52, 44, 54, + 0, 56, 37, 45, 56, 45, 57, 0, + 0, 37, 47, 38, 54, 49, 37, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid138.scd b/sound_algo/palette/melodies/short/mAcid138.scd new file mode 100644 index 0000000..65a9cf8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid138 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid138 = [ + 43, 55, 38, 37, 37, 0, 49, 0, + 0, 38, 37, 43, 54, 45, 52, 0, + 0, 0, 57, 37, 0, 50, 59, 0, + 57, 55, 0, 50, 0, 37, 0, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid139.scd b/sound_algo/palette/melodies/short/mAcid139.scd new file mode 100644 index 0000000..6d88248 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid139 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid139 = [ + 45, 42, 57, 40, 45, 50, 57, 44, + 38, 54, 56, 37, 40, 42, 0, 37, + 42, 47, 0, 50, 42, 37, 41, 0, + 45, 54, 52, 59, 42, 54, 40, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid140.scd b/sound_algo/palette/melodies/short/mAcid140.scd new file mode 100644 index 0000000..aea857f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid140 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid140 = [ + 0, 38, 40, 54, 0, 54, 0, 36, + 0, 0, 50, 0, 45, 40, 47, 60, + 0, 57, 0, 57, 43, 54, 42, 0, + 0, 42, 57, 60, 0, 0, 52, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid141.scd b/sound_algo/palette/melodies/short/mAcid141.scd new file mode 100644 index 0000000..14d512b --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid141 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid141 = [ + 0, 0, 36, 55, 0, 0, 0, 0, + 0, 54, 38, 45, 52, 0, 0, 40, + 60, 0, 0, 52, 0, 55, 40, 36, + 0, 0, 57, 0, 60, 60, 54, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid142.scd b/sound_algo/palette/melodies/short/mAcid142.scd new file mode 100644 index 0000000..c189ff7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid142 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid142 = [ + 0, 0, 0, 47, 52, 60, 57, 0, + 40, 45, 38, 40, 0, 38, 60, 0, + 60, 36, 53, 60, 47, 41, 50, 0, + 0, 43, 38, 52, 40, 47, 38, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid143.scd b/sound_algo/palette/melodies/short/mAcid143.scd new file mode 100644 index 0000000..b91ed74 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid143 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid143 = [ + 37, 56, 36, 57, 52, 37, 0, 0, + 49, 42, 38, 59, 0, 50, 0, 52, + 49, 40, 0, 0, 57, 59, 59, 45, + 0, 0, 47, 50, 49, 0, 56, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid144.scd b/sound_algo/palette/melodies/short/mAcid144.scd new file mode 100644 index 0000000..13524c5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid144 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid144 = [ + 55, 47, 0, 41, 47, 0, 59, 0, + 59, 60, 59, 43, 0, 59, 55, 53, + 52, 0, 0, 0, 0, 40, 55, 40, + 0, 52, 41, 0, 40, 60, 38, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid145.scd b/sound_algo/palette/melodies/short/mAcid145.scd new file mode 100644 index 0000000..bf4a615 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid145 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid145 = [ + 43, 50, 57, 0, 43, 52, 0, 52, + 0, 55, 47, 0, 0, 41, 53, 52, + 55, 0, 57, 0, 43, 38, 45, 0, + 43, 60, 41, 57, 55, 45, 55, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid146.scd b/sound_algo/palette/melodies/short/mAcid146.scd new file mode 100644 index 0000000..60b2870 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid146 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid146 = [ + 55, 0, 54, 0, 0, 42, 0, 57, + 0, 52, 59, 36, 0, 52, 60, 38, + 0, 43, 59, 0, 52, 60, 53, 0, + 40, 0, 54, 0, 52, 57, 51, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid147.scd b/sound_algo/palette/melodies/short/mAcid147.scd new file mode 100644 index 0000000..7bf1ac0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid147 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid147 = [ + 47, 59, 45, 50, 59, 0, 60, 57, + 60, 0, 42, 0, 52, 38, 54, 0, + 57, 36, 59, 54, 0, 38, 47, 43, + 59, 0, 57, 54, 55, 59, 0, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid148.scd b/sound_algo/palette/melodies/short/mAcid148.scd new file mode 100644 index 0000000..4dc1548 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid148 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid148 = [ + 57, 43, 49, 0, 37, 0, 0, 0, + 47, 38, 0, 0, 57, 45, 0, 0, + 45, 0, 47, 49, 49, 0, 50, 40, + 42, 52, 52, 40, 52, 54, 0, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid149.scd b/sound_algo/palette/melodies/short/mAcid149.scd new file mode 100644 index 0000000..011c425 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid149 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid149 = [ + 0, 59, 0, 0, 43, 48, 0, 0, + 43, 43, 42, 47, 52, 52, 51, 45, + 59, 47, 50, 59, 52, 60, 42, 48, + 0, 36, 0, 0, 52, 54, 48, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid150.scd b/sound_algo/palette/melodies/short/mAcid150.scd new file mode 100644 index 0000000..b2a19ab --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid150 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid150 = [ + 52, 54, 0, 57, 0, 52, 0, 48, + 50, 0, 0, 50, 0, 0, 40, 40, + 52, 60, 53, 52, 0, 43, 45, 0, + 52, 60, 43, 0, 59, 0, 42, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid151.scd b/sound_algo/palette/melodies/short/mAcid151.scd new file mode 100644 index 0000000..97a1257 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid151 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid151 = [ + 42, 37, 40, 0, 0, 40, 0, 44, + 45, 0, 59, 50, 0, 50, 50, 0, + 0, 54, 47, 57, 0, 50, 56, 52, + 0, 0, 42, 0, 57, 56, 57, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid152.scd b/sound_algo/palette/melodies/short/mAcid152.scd new file mode 100644 index 0000000..acb9b06 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid152 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid152 = [ + 59, 42, 0, 57, 55, 45, 42, 45, + 55, 50, 0, 0, 48, 54, 52, 36, + 40, 50, 0, 50, 0, 57, 48, 60, + 40, 52, 57, 36, 59, 60, 0, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid153.scd b/sound_algo/palette/melodies/short/mAcid153.scd new file mode 100644 index 0000000..f5423fd --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid153 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid153 = [ + 37, 38, 38, 0, 37, 49, 35, 57, + 0, 44, 0, 47, 0, 40, 40, 0, + 0, 0, 54, 54, 0, 0, 0, 37, + 38, 52, 50, 38, 56, 47, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid154.scd b/sound_algo/palette/melodies/short/mAcid154.scd new file mode 100644 index 0000000..8212c41 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid154 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid154 = [ + 0, 48, 54, 52, 57, 47, 45, 42, + 43, 0, 55, 48, 47, 38, 52, 43, + 0, 50, 55, 0, 40, 0, 59, 47, + 0, 36, 50, 0, 40, 42, 0, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid155.scd b/sound_algo/palette/melodies/short/mAcid155.scd new file mode 100644 index 0000000..2eef237 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid155 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid155 = [ + 0, 44, 37, 0, 47, 49, 0, 54, + 50, 59, 56, 50, 49, 54, 48, 44, + 50, 59, 52, 49, 0, 40, 42, 54, + 42, 56, 0, 0, 37, 49, 52, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid156.scd b/sound_algo/palette/melodies/short/mAcid156.scd new file mode 100644 index 0000000..f1f13d9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid156 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid156 = [ + 0, 0, 59, 40, 0, 0, 53, 40, + 0, 48, 38, 47, 55, 0, 53, 0, + 55, 60, 53, 38, 60, 59, 61, 47, + 40, 0, 42, 57, 55, 0, 0, 47 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid157.scd b/sound_algo/palette/melodies/short/mAcid157.scd new file mode 100644 index 0000000..901a5c3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid157 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid157 = [ + 0, 42, 57, 40, 44, 56, 42, 56, + 38, 0, 39, 0, 45, 0, 54, 40, + 57, 40, 52, 38, 54, 47, 0, 54, + 52, 57, 53, 49, 57, 42, 52, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid158.scd b/sound_algo/palette/melodies/short/mAcid158.scd new file mode 100644 index 0000000..7a87397 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid158 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid158 = [ + 42, 47, 43, 50, 45, 38, 44, 0, + 0, 0, 56, 47, 57, 57, 55, 0, + 0, 44, 54, 42, 45, 45, 37, 44, + 57, 45, 59, 45, 40, 52, 42, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid159.scd b/sound_algo/palette/melodies/short/mAcid159.scd new file mode 100644 index 0000000..1585c6b --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid159 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid159 = [ + 0, 47, 52, 50, 0, 50, 45, 54, + 0, 38, 0, 56, 47, 45, 46, 50, + 54, 40, 42, 57, 44, 52, 52, 0, + 0, 0, 0, 59, 57, 57, 47, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid160.scd b/sound_algo/palette/melodies/short/mAcid160.scd new file mode 100644 index 0000000..2d8184a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid160 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid160 = [ + 52, 52, 54, 57, 54, 56, 38, 44, + 59, 57, 0, 52, 38, 45, 45, 0, + 0, 0, 49, 0, 0, 0, 49, 40, + 0, 42, 0, 0, 0, 40, 38, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid161.scd b/sound_algo/palette/melodies/short/mAcid161.scd new file mode 100644 index 0000000..044533c --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid161 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid161 = [ + 44, 40, 0, 40, 57, 52, 58, 44, + 0, 42, 0, 45, 37, 59, 40, 49, + 49, 0, 37, 57, 37, 42, 50, 42, + 47, 59, 38, 42, 52, 59, 54, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid162.scd b/sound_algo/palette/melodies/short/mAcid162.scd new file mode 100644 index 0000000..b8a2a17 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid162 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid162 = [ + 52, 57, 54, 57, 43, 57, 41, 41, + 0, 47, 0, 57, 0, 48, 36, 55, + 0, 41, 53, 0, 0, 55, 60, 38, + 41, 36, 0, 38, 40, 43, 47, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid163.scd b/sound_algo/palette/melodies/short/mAcid163.scd new file mode 100644 index 0000000..d8c12ed --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid163 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid163 = [ + 57, 56, 37, 49, 49, 40, 48, 44, + 0, 59, 38, 49, 45, 57, 47, 37, + 54, 56, 50, 0, 57, 52, 47, 38, + 37, 0, 59, 38, 54, 47, 50, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid164.scd b/sound_algo/palette/melodies/short/mAcid164.scd new file mode 100644 index 0000000..ee99b7a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid164 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid164 = [ + 55, 55, 47, 50, 40, 50, 38, 52, + 59, 38, 61, 50, 55, 45, 56, 45, + 0, 53, 55, 41, 55, 60, 48, 47, + 47, 50, 60, 43, 0, 45, 59, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid165.scd b/sound_algo/palette/melodies/short/mAcid165.scd new file mode 100644 index 0000000..026c8f3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid165 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid165 = [ + 0, 0, 38, 44, 47, 37, 45, 59, + 38, 50, 54, 0, 0, 54, 44, 45, + 54, 59, 54, 0, 54, 38, 55, 0, + 49, 37, 50, 50, 57, 50, 47, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid166.scd b/sound_algo/palette/melodies/short/mAcid166.scd new file mode 100644 index 0000000..010547e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid166 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid166 = [ + 0, 54, 57, 0, 42, 54, 44, 0, + 0, 55, 0, 49, 54, 50, 43, 52, + 0, 55, 47, 54, 37, 57, 38, 49, + 49, 54, 0, 59, 57, 47, 55, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid167.scd b/sound_algo/palette/melodies/short/mAcid167.scd new file mode 100644 index 0000000..3c91884 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid167 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid167 = [ + 0, 0, 0, 50, 0, 45, 0, 38, + 0, 54, 54, 47, 45, 57, 50, 54, + 42, 0, 55, 0, 0, 57, 52, 0, + 55, 45, 0, 37, 0, 0, 47, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid168.scd b/sound_algo/palette/melodies/short/mAcid168.scd new file mode 100644 index 0000000..02317ea --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid168 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid168 = [ + 45, 47, 46, 42, 37, 0, 36, 54, + 0, 0, 49, 0, 49, 59, 57, 55, + 0, 0, 55, 50, 57, 38, 59, 0, + 0, 50, 55, 47, 37, 49, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid169.scd b/sound_algo/palette/melodies/short/mAcid169.scd new file mode 100644 index 0000000..1ea59b7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid169 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid169 = [ + 55, 60, 53, 38, 0, 0, 55, 57, + 0, 40, 47, 40, 0, 54, 0, 40, + 47, 55, 49, 54, 42, 57, 43, 48, + 52, 52, 0, 48, 42, 0, 54, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid170.scd b/sound_algo/palette/melodies/short/mAcid170.scd new file mode 100644 index 0000000..8272201 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid170 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid170 = [ + 47, 60, 38, 0, 0, 48, 55, 0, + 43, 52, 52, 54, 59, 60, 60, 47, + 55, 52, 40, 48, 48, 0, 47, 43, + 0, 36, 57, 59, 47, 45, 57, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid171.scd b/sound_algo/palette/melodies/short/mAcid171.scd new file mode 100644 index 0000000..793200e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid171 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid171 = [ + 59, 45, 59, 55, 54, 45, 37, 54, + 57, 40, 37, 47, 52, 40, 50, 0, + 55, 47, 42, 59, 0, 43, 45, 0, + 0, 0, 37, 0, 0, 45, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid172.scd b/sound_algo/palette/melodies/short/mAcid172.scd new file mode 100644 index 0000000..e2cef67 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid172 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid172 = [ + 0, 0, 57, 42, 45, 57, 38, 40, + 54, 38, 53, 43, 43, 40, 52, 0, + 37, 54, 47, 47, 52, 59, 0, 45, + 55, 59, 0, 57, 0, 38, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid173.scd b/sound_algo/palette/melodies/short/mAcid173.scd new file mode 100644 index 0000000..caf8bbf --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid173 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid173 = [ + 43, 55, 42, 47, 0, 0, 54, 43, + 52, 42, 48, 45, 47, 59, 57, 55, + 38, 50, 0, 0, 45, 59, 43, 0, + 55, 0, 48, 0, 43, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid174.scd b/sound_algo/palette/melodies/short/mAcid174.scd new file mode 100644 index 0000000..cd3cb14 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid174 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid174 = [ + 0, 60, 36, 50, 0, 59, 36, 55, + 55, 47, 42, 48, 59, 0, 60, 59, + 40, 40, 38, 40, 47, 59, 0, 60, + 55, 59, 45, 47, 59, 55, 47, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid175.scd b/sound_algo/palette/melodies/short/mAcid175.scd new file mode 100644 index 0000000..ac9890f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid175 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid175 = [ + 49, 49, 45, 57, 57, 59, 55, 0, + 52, 37, 54, 0, 37, 38, 0, 40, + 45, 38, 52, 54, 43, 0, 40, 0, + 0, 38, 0, 59, 49, 42, 55, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid176.scd b/sound_algo/palette/melodies/short/mAcid176.scd new file mode 100644 index 0000000..a9ad76b --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid176 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid176 = [ + 50, 36, 50, 59, 59, 43, 38, 52, + 55, 54, 42, 54, 55, 36, 53, 38, + 45, 43, 47, 38, 60, 60, 61, 55, + 0, 52, 54, 54, 60, 40, 62, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid177.scd b/sound_algo/palette/melodies/short/mAcid177.scd new file mode 100644 index 0000000..93e0056 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid177 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid177 = [ + 55, 0, 0, 0, 55, 60, 56, 48, + 60, 47, 55, 47, 52, 47, 50, 0, + 0, 36, 55, 0, 60, 0, 43, 54, + 0, 0, 59, 0, 47, 59, 36, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid178.scd b/sound_algo/palette/melodies/short/mAcid178.scd new file mode 100644 index 0000000..d1b2490 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid178 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid178 = [ + 37, 42, 0, 0, 59, 55, 61, 40, + 54, 55, 52, 54, 37, 40, 0, 59, + 54, 57, 45, 0, 0, 0, 54, 40, + 42, 54, 43, 43, 57, 40, 52, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid179.scd b/sound_algo/palette/melodies/short/mAcid179.scd new file mode 100644 index 0000000..e328e8a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid179 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid179 = [ + 38, 57, 47, 41, 38, 59, 0, 41, + 41, 41, 40, 60, 59, 60, 45, 47, + 60, 0, 55, 50, 48, 38, 46, 0, + 43, 55, 45, 38, 59, 41, 60, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid180.scd b/sound_algo/palette/melodies/short/mAcid180.scd new file mode 100644 index 0000000..ec1b17a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid180 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid180 = [ + 0, 52, 0, 50, 0, 59, 59, 0, + 43, 47, 0, 45, 55, 0, 56, 0, + 52, 0, 47, 48, 0, 38, 42, 57, + 42, 43, 38, 54, 59, 52, 48, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid181.scd b/sound_algo/palette/melodies/short/mAcid181.scd new file mode 100644 index 0000000..ed4b0c0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid181 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid181 = [ + 0, 37, 45, 37, 54, 0, 57, 45, + 49, 59, 0, 0, 57, 45, 58, 47, + 45, 50, 38, 50, 45, 45, 43, 0, + 0, 0, 49, 47, 0, 38, 43, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid182.scd b/sound_algo/palette/melodies/short/mAcid182.scd new file mode 100644 index 0000000..96bce26 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid182 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid182 = [ + 0, 54, 59, 49, 45, 44, 45, 0, + 0, 45, 40, 40, 42, 0, 54, 0, + 45, 49, 40, 56, 45, 49, 40, 38, + 0, 49, 0, 0, 0, 56, 50, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mAcid183.scd b/sound_algo/palette/melodies/short/mAcid183.scd new file mode 100644 index 0000000..9bacab1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAcid183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAcid183 -- short melody (32 steps), genre: acid +// ===================================================================== +( +~mAcid183 = [ + 42, 42, 0, 0, 52, 0, 0, 0, + 55, 36, 0, 40, 0, 47, 43, 43, + 0, 0, 55, 0, 0, 48, 57, 0, + 0, 0, 59, 38, 55, 60, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient100.scd b/sound_algo/palette/melodies/short/mAmbient100.scd new file mode 100644 index 0000000..3a07e29 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient100 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient100 = [ + 0, 0, 71, 65, 0, 0, 0, 0, + 0, 0, 69, 0, 0, 0, 77, 0, + 0, 0, 0, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient101.scd b/sound_algo/palette/melodies/short/mAmbient101.scd new file mode 100644 index 0000000..f1e0734 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient101 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient101 = [ + 0, 0, 81, 0, 0, 77, 0, 0, + 0, 0, 67, 67, 0, 0, 0, 0, + 0, 83, 0, 0, 0, 64, 65, 0, + 0, 0, 60, 0, 81, 0, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient102.scd b/sound_algo/palette/melodies/short/mAmbient102.scd new file mode 100644 index 0000000..745aff6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient102 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient102 = [ + 0, 0, 0, 0, 60, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 64, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient103.scd b/sound_algo/palette/melodies/short/mAmbient103.scd new file mode 100644 index 0000000..e4e4edd --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient103 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient103 = [ + 84, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 70, 0, 0, 0, 64, 0, + 0, 0, 82, 0, 0, 0, 82, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient104.scd b/sound_algo/palette/melodies/short/mAmbient104.scd new file mode 100644 index 0000000..077ab0f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient104 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient104 = [ + 76, 0, 0, 0, 0, 0, 0, 70, + 0, 0, 0, 0, 0, 69, 0, 0, + 0, 84, 0, 0, 0, 0, 0, 84, + 0, 0, 0, 0, 0, 69, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient105.scd b/sound_algo/palette/melodies/short/mAmbient105.scd new file mode 100644 index 0000000..83d85f0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient105 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient105 = [ + 0, 0, 0, 0, 0, 0, 83, 0, + 0, 0, 0, 71, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, + 79, 0, 0, 0, 0, 74, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient106.scd b/sound_algo/palette/melodies/short/mAmbient106.scd new file mode 100644 index 0000000..130a4bb --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient106 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient106 = [ + 0, 0, 0, 0, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 74, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 60, 0, 74, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient107.scd b/sound_algo/palette/melodies/short/mAmbient107.scd new file mode 100644 index 0000000..37c70ad --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient107 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient107 = [ + 0, 79, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 0, 0, 62, 0, 0, + 0, 0, 0, 0, 71, 0, 0, 0, + 0, 62, 0, 0, 0, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient108.scd b/sound_algo/palette/melodies/short/mAmbient108.scd new file mode 100644 index 0000000..1c093a2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient108 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient108 = [ + 0, 0, 67, 0, 0, 72, 0, 0, + 0, 0, 71, 0, 0, 0, 0, 0, + 0, 60, 71, 0, 0, 0, 0, 76, + 0, 74, 0, 0, 0, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient109.scd b/sound_algo/palette/melodies/short/mAmbient109.scd new file mode 100644 index 0000000..1d9e1dc --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient109 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient109 = [ + 0, 0, 0, 0, 79, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 0, + 0, 0, 0, 0, 67, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient110.scd b/sound_algo/palette/melodies/short/mAmbient110.scd new file mode 100644 index 0000000..2fb3eae --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient110 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient110 = [ + 0, 81, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 79, 0, 69, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 64, + 0, 0, 65, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient111.scd b/sound_algo/palette/melodies/short/mAmbient111.scd new file mode 100644 index 0000000..c72767b --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient111 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient111 = [ + 64, 0, 0, 0, 0, 0, 0, 0, + 0, 74, 0, 0, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient112.scd b/sound_algo/palette/melodies/short/mAmbient112.scd new file mode 100644 index 0000000..e3c4e2b --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient112 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient112 = [ + 0, 0, 0, 0, 0, 0, 83, 0, + 0, 0, 72, 0, 0, 0, 84, 0, + 0, 81, 0, 0, 0, 0, 81, 0, + 0, 0, 76, 0, 0, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient113.scd b/sound_algo/palette/melodies/short/mAmbient113.scd new file mode 100644 index 0000000..cb3f4d5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient113 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient113 = [ + 79, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 0, 0, 0, + 0, 0, 65, 0, 0, 0, 0, 69, + 0, 0, 0, 0, 79, 0, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient114.scd b/sound_algo/palette/melodies/short/mAmbient114.scd new file mode 100644 index 0000000..801ded1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient114 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient114 = [ + 77, 0, 0, 0, 0, 0, 0, 0, + 62, 0, 0, 60, 0, 0, 60, 72, + 0, 0, 0, 0, 0, 77, 0, 60, + 0, 0, 0, 64, 0, 0, 0, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient115.scd b/sound_algo/palette/melodies/short/mAmbient115.scd new file mode 100644 index 0000000..d2869ea --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient115 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient115 = [ + 77, 0, 0, 0, 74, 0, 0, 0, + 0, 72, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 77, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient116.scd b/sound_algo/palette/melodies/short/mAmbient116.scd new file mode 100644 index 0000000..31d6904 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient116 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient116 = [ + 76, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 0, 0, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient117.scd b/sound_algo/palette/melodies/short/mAmbient117.scd new file mode 100644 index 0000000..944daca --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient117 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient117 = [ + 0, 0, 66, 0, 0, 72, 0, 0, + 0, 0, 64, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 0, 0, 69, 0, + 0, 84, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient118.scd b/sound_algo/palette/melodies/short/mAmbient118.scd new file mode 100644 index 0000000..bbfa757 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient118 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient118 = [ + 76, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 79, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient119.scd b/sound_algo/palette/melodies/short/mAmbient119.scd new file mode 100644 index 0000000..367c78f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient119 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient119 = [ + 84, 0, 0, 0, 0, 0, 0, 0, + 79, 0, 0, 0, 71, 0, 0, 0, + 0, 76, 0, 0, 0, 0, 0, 0, + 0, 0, 60, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient120.scd b/sound_algo/palette/melodies/short/mAmbient120.scd new file mode 100644 index 0000000..a0c7614 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient120 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient120 = [ + 84, 0, 0, 0, 60, 0, 0, 0, + 0, 0, 0, 0, 82, 0, 0, 0, + 0, 70, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient121.scd b/sound_algo/palette/melodies/short/mAmbient121.scd new file mode 100644 index 0000000..2ffb80e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient121 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient121 = [ + 81, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 76, 0, 0, 60, 0, 0, 0, + 0, 0, 74, 74, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient122.scd b/sound_algo/palette/melodies/short/mAmbient122.scd new file mode 100644 index 0000000..515a56d --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient122 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient122 = [ + 0, 0, 0, 62, 0, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient123.scd b/sound_algo/palette/melodies/short/mAmbient123.scd new file mode 100644 index 0000000..17ff859 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient123 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient123 = [ + 0, 0, 0, 67, 0, 0, 0, 0, + 83, 0, 0, 0, 69, 0, 0, 0, + 0, 60, 0, 65, 0, 0, 77, 0, + 0, 0, 71, 0, 0, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient124.scd b/sound_algo/palette/melodies/short/mAmbient124.scd new file mode 100644 index 0000000..00a5336 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient124 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient124 = [ + 0, 0, 79, 0, 0, 0, 0, 0, + 0, 71, 0, 0, 0, 0, 83, 0, + 0, 0, 72, 0, 0, 0, 0, 0, + 79, 0, 76, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient125.scd b/sound_algo/palette/melodies/short/mAmbient125.scd new file mode 100644 index 0000000..316711f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient125 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient125 = [ + 84, 74, 0, 0, 0, 0, 0, 0, + 77, 0, 0, 0, 0, 0, 0, 83, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 65, 0, 0, 0, 83, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient126.scd b/sound_algo/palette/melodies/short/mAmbient126.scd new file mode 100644 index 0000000..6fa8d8b --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient126 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient126 = [ + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 0, 62, 0, 0, 0, 81, 0, + 0, 0, 0, 77, 0, 0, 0, 0, + 0, 0, 0, 0, 72, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient127.scd b/sound_algo/palette/melodies/short/mAmbient127.scd new file mode 100644 index 0000000..45d7753 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient127 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient127 = [ + 0, 67, 0, 0, 0, 0, 0, 84, + 0, 0, 0, 0, 64, 0, 0, 81, + 0, 0, 81, 0, 0, 0, 0, 65, + 0, 0, 65, 77, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient128.scd b/sound_algo/palette/melodies/short/mAmbient128.scd new file mode 100644 index 0000000..b5a116c --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient128 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient128 = [ + 0, 0, 81, 79, 0, 0, 0, 0, + 0, 0, 65, 0, 84, 0, 0, 0, + 0, 0, 0, 71, 0, 0, 72, 0, + 84, 0, 0, 0, 0, 0, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient129.scd b/sound_algo/palette/melodies/short/mAmbient129.scd new file mode 100644 index 0000000..4c45ee4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient129 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient129 = [ + 0, 0, 0, 67, 0, 74, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 79, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient130.scd b/sound_algo/palette/melodies/short/mAmbient130.scd new file mode 100644 index 0000000..9fe307e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient130 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient130 = [ + 81, 0, 0, 76, 71, 0, 0, 0, + 0, 0, 64, 0, 0, 0, 0, 0, + 0, 79, 0, 0, 64, 0, 0, 0, + 0, 0, 0, 74, 0, 0, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient131.scd b/sound_algo/palette/melodies/short/mAmbient131.scd new file mode 100644 index 0000000..5cfa340 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient131 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient131 = [ + 0, 0, 0, 0, 71, 0, 0, 74, + 76, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 77, + 0, 0, 0, 0, 0, 0, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient132.scd b/sound_algo/palette/melodies/short/mAmbient132.scd new file mode 100644 index 0000000..d0197b6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient132 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient132 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 62, 0, 76, 0, 0, 71, 0, 0, + 0, 60, 0, 0, 0, 62, 65, 0, + 0, 0, 0, 0, 84, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient133.scd b/sound_algo/palette/melodies/short/mAmbient133.scd new file mode 100644 index 0000000..d55790b --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient133 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient133 = [ + 0, 0, 0, 72, 0, 0, 0, 0, + 0, 0, 0, 76, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 60, 0, + 0, 0, 0, 79, 0, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient134.scd b/sound_algo/palette/melodies/short/mAmbient134.scd new file mode 100644 index 0000000..ec5bf2e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient134 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient134 = [ + 84, 0, 0, 0, 0, 0, 64, 0, + 79, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 69, 0, 0, + 0, 0, 70, 0, 0, 84, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient135.scd b/sound_algo/palette/melodies/short/mAmbient135.scd new file mode 100644 index 0000000..b85483c --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient135 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient135 = [ + 0, 64, 0, 0, 0, 0, 0, 76, + 0, 0, 0, 72, 0, 0, 60, 0, + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 71, 0, 0, 0, 83, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient136.scd b/sound_algo/palette/melodies/short/mAmbient136.scd new file mode 100644 index 0000000..00b37e9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient136 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient136 = [ + 0, 81, 0, 0, 0, 0, 0, 0, + 0, 62, 0, 70, 0, 0, 0, 0, + 0, 0, 0, 0, 76, 0, 0, 0, + 0, 0, 0, 0, 84, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient137.scd b/sound_algo/palette/melodies/short/mAmbient137.scd new file mode 100644 index 0000000..45865a0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient137 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient137 = [ + 67, 71, 0, 0, 0, 84, 0, 0, + 0, 0, 71, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 0, 0, 76, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient138.scd b/sound_algo/palette/melodies/short/mAmbient138.scd new file mode 100644 index 0000000..c174afb --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient138 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient138 = [ + 0, 0, 0, 77, 0, 0, 0, 0, + 0, 0, 72, 77, 0, 0, 0, 0, + 74, 67, 0, 72, 0, 0, 67, 0, + 0, 0, 72, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient139.scd b/sound_algo/palette/melodies/short/mAmbient139.scd new file mode 100644 index 0000000..363a149 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient139 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient139 = [ + 0, 0, 62, 0, 0, 0, 0, 0, + 0, 0, 77, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 0, + 0, 0, 67, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient140.scd b/sound_algo/palette/melodies/short/mAmbient140.scd new file mode 100644 index 0000000..c13d441 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient140 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient140 = [ + 0, 0, 0, 0, 77, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 0, 0, + 74, 0, 0, 0, 76, 0, 0, 0, + 0, 0, 0, 65, 0, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient141.scd b/sound_algo/palette/melodies/short/mAmbient141.scd new file mode 100644 index 0000000..04770aa --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient141 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient141 = [ + 67, 0, 0, 0, 0, 0, 76, 0, + 0, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 0, 0, 77, 0, + 0, 0, 0, 72, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient142.scd b/sound_algo/palette/melodies/short/mAmbient142.scd new file mode 100644 index 0000000..17bd0c7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient142 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient142 = [ + 77, 0, 0, 84, 0, 62, 0, 71, + 0, 0, 0, 0, 84, 0, 0, 0, + 0, 0, 0, 0, 0, 83, 0, 0, + 0, 0, 77, 0, 0, 0, 0, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient143.scd b/sound_algo/palette/melodies/short/mAmbient143.scd new file mode 100644 index 0000000..a58bb85 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient143 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient143 = [ + 69, 0, 0, 0, 0, 81, 72, 0, + 0, 82, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 0, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient144.scd b/sound_algo/palette/melodies/short/mAmbient144.scd new file mode 100644 index 0000000..9ddeb4e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient144 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient144 = [ + 0, 81, 0, 0, 0, 67, 0, 0, + 0, 0, 72, 0, 0, 0, 0, 0, + 0, 81, 0, 65, 0, 0, 0, 0, + 0, 77, 0, 0, 0, 71, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient145.scd b/sound_algo/palette/melodies/short/mAmbient145.scd new file mode 100644 index 0000000..6234986 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient145 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient145 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 69, 0, 0, 0, 0, 0, 0, 74, + 72, 0, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 72, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient146.scd b/sound_algo/palette/melodies/short/mAmbient146.scd new file mode 100644 index 0000000..45420e9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient146 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient146 = [ + 79, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 84, 0, 83, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient147.scd b/sound_algo/palette/melodies/short/mAmbient147.scd new file mode 100644 index 0000000..9bc3596 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient147 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient147 = [ + 69, 0, 84, 0, 0, 0, 0, 84, + 77, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 81, 0, 0, 65, + 0, 77, 0, 0, 0, 0, 0, 82 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient148.scd b/sound_algo/palette/melodies/short/mAmbient148.scd new file mode 100644 index 0000000..ed1eee1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient148 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient148 = [ + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 74, 0, 0, 74, 0, 0, 0, + 0, 64, 0, 0, 0, 0, 0, 76, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient149.scd b/sound_algo/palette/melodies/short/mAmbient149.scd new file mode 100644 index 0000000..17834b5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient149 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient149 = [ + 0, 0, 62, 0, 0, 0, 0, 83, + 0, 0, 0, 0, 0, 66, 84, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 62, 64, 0, 0, 0, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient150.scd b/sound_algo/palette/melodies/short/mAmbient150.scd new file mode 100644 index 0000000..68b2f4d --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient150 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient150 = [ + 0, 0, 0, 0, 0, 84, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, + 67, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 76, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient151.scd b/sound_algo/palette/melodies/short/mAmbient151.scd new file mode 100644 index 0000000..e87c47e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient151 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient151 = [ + 67, 0, 0, 0, 0, 0, 0, 0, + 0, 71, 0, 79, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient152.scd b/sound_algo/palette/melodies/short/mAmbient152.scd new file mode 100644 index 0000000..237e52d --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient152 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient152 = [ + 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 76, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 69, 0, + 0, 0, 0, 72, 0, 71, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient153.scd b/sound_algo/palette/melodies/short/mAmbient153.scd new file mode 100644 index 0000000..4351878 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient153 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient153 = [ + 65, 0, 0, 0, 0, 0, 0, 0, + 0, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 70, 0, 69, 0, 0, + 0, 0, 65, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient154.scd b/sound_algo/palette/melodies/short/mAmbient154.scd new file mode 100644 index 0000000..7ab88db --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient154 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient154 = [ + 0, 0, 0, 0, 0, 74, 0, 0, + 0, 0, 0, 0, 0, 79, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 79, 0, 0, 0, 0, 84, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient155.scd b/sound_algo/palette/melodies/short/mAmbient155.scd new file mode 100644 index 0000000..975a212 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient155 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient155 = [ + 0, 77, 0, 0, 0, 0, 0, 0, + 77, 0, 0, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 77, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient156.scd b/sound_algo/palette/melodies/short/mAmbient156.scd new file mode 100644 index 0000000..7bdbdcc --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient156 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient156 = [ + 0, 0, 0, 76, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 64, + 0, 0, 0, 0, 0, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient157.scd b/sound_algo/palette/melodies/short/mAmbient157.scd new file mode 100644 index 0000000..4d01940 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient157 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient157 = [ + 0, 0, 76, 0, 0, 0, 79, 0, + 0, 0, 0, 0, 65, 0, 82, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 60, 0, 0, 79, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient158.scd b/sound_algo/palette/melodies/short/mAmbient158.scd new file mode 100644 index 0000000..c1f4a07 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient158 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient158 = [ + 0, 0, 0, 0, 76, 0, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 60, + 0, 60, 0, 78, 0, 0, 0, 0, + 0, 74, 0, 64, 0, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient159.scd b/sound_algo/palette/melodies/short/mAmbient159.scd new file mode 100644 index 0000000..0de8cba --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient159 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient159 = [ + 60, 0, 0, 69, 0, 0, 0, 0, + 0, 0, 0, 0, 81, 0, 81, 0, + 0, 0, 0, 0, 0, 60, 0, 0, + 84, 0, 0, 74, 81, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient160.scd b/sound_algo/palette/melodies/short/mAmbient160.scd new file mode 100644 index 0000000..f2ba5a3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient160 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient160 = [ + 0, 71, 0, 0, 0, 65, 84, 0, + 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 69, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient161.scd b/sound_algo/palette/melodies/short/mAmbient161.scd new file mode 100644 index 0000000..8a19b01 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient161 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient161 = [ + 64, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 74, 0, 0, 0, 0, + 0, 77, 0, 0, 0, 0, 77, 0, + 0, 0, 67, 0, 0, 79, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient162.scd b/sound_algo/palette/melodies/short/mAmbient162.scd new file mode 100644 index 0000000..c50db21 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient162 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient162 = [ + 0, 0, 0, 69, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient163.scd b/sound_algo/palette/melodies/short/mAmbient163.scd new file mode 100644 index 0000000..1b1a421 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient163 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient163 = [ + 0, 76, 60, 0, 0, 0, 0, 0, + 0, 0, 0, 76, 0, 0, 0, 0, + 0, 72, 0, 0, 0, 0, 69, 0, + 0, 0, 0, 60, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient164.scd b/sound_algo/palette/melodies/short/mAmbient164.scd new file mode 100644 index 0000000..c671b60 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient164 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient164 = [ + 0, 0, 62, 0, 0, 79, 0, 0, + 0, 0, 69, 0, 0, 0, 84, 0, + 0, 0, 72, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient165.scd b/sound_algo/palette/melodies/short/mAmbient165.scd new file mode 100644 index 0000000..c559ef0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient165 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient165 = [ + 65, 0, 0, 0, 60, 72, 0, 0, + 0, 79, 0, 0, 0, 84, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0, + 79, 0, 0, 76, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient166.scd b/sound_algo/palette/melodies/short/mAmbient166.scd new file mode 100644 index 0000000..b9c07fa --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient166 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient166 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 74, 0, 0, 0, 0, + 0, 79, 69, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 0, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient167.scd b/sound_algo/palette/melodies/short/mAmbient167.scd new file mode 100644 index 0000000..15c5c7b --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient167 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient167 = [ + 62, 0, 0, 84, 67, 0, 65, 76, + 0, 0, 0, 84, 0, 0, 0, 84, + 0, 0, 0, 0, 0, 0, 0, 71, + 0, 0, 60, 0, 0, 69, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient168.scd b/sound_algo/palette/melodies/short/mAmbient168.scd new file mode 100644 index 0000000..d132b41 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient168 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient168 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 60, 83, + 0, 0, 72, 0, 0, 0, 74, 72, + 0, 0, 0, 0, 81, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient169.scd b/sound_algo/palette/melodies/short/mAmbient169.scd new file mode 100644 index 0000000..e8a70bd --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient169 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient169 = [ + 76, 0, 0, 0, 60, 65, 0, 0, + 0, 0, 0, 83, 0, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient170.scd b/sound_algo/palette/melodies/short/mAmbient170.scd new file mode 100644 index 0000000..914f872 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient170 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient170 = [ + 0, 0, 0, 0, 0, 0, 0, 72, + 0, 0, 0, 0, 0, 0, 0, 0, + 72, 0, 62, 72, 0, 0, 77, 0, + 0, 0, 0, 71, 0, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient171.scd b/sound_algo/palette/melodies/short/mAmbient171.scd new file mode 100644 index 0000000..db54b76 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient171 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient171 = [ + 0, 0, 0, 0, 0, 0, 60, 0, + 0, 0, 0, 0, 64, 71, 74, 0, + 0, 0, 0, 62, 84, 74, 0, 0, + 0, 0, 0, 0, 0, 0, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient172.scd b/sound_algo/palette/melodies/short/mAmbient172.scd new file mode 100644 index 0000000..a20b1eb --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient172 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient172 = [ + 60, 0, 71, 0, 0, 77, 0, 0, + 0, 0, 0, 0, 72, 0, 0, 0, + 0, 0, 77, 0, 0, 0, 79, 0, + 0, 0, 0, 0, 72, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient173.scd b/sound_algo/palette/melodies/short/mAmbient173.scd new file mode 100644 index 0000000..344c293 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient173 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient173 = [ + 0, 0, 0, 0, 0, 62, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 0, + 72, 0, 0, 0, 72, 82, 0, 0, + 0, 0, 0, 0, 0, 67, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient174.scd b/sound_algo/palette/melodies/short/mAmbient174.scd new file mode 100644 index 0000000..f8f7eb1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient174 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient174 = [ + 0, 0, 0, 62, 0, 0, 0, 0, + 0, 71, 0, 0, 0, 0, 0, 65, + 0, 74, 0, 0, 0, 60, 0, 64, + 0, 0, 0, 83, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient175.scd b/sound_algo/palette/melodies/short/mAmbient175.scd new file mode 100644 index 0000000..bc266a4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient175 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient175 = [ + 0, 0, 79, 0, 0, 76, 0, 0, + 0, 0, 0, 0, 65, 0, 0, 0, + 0, 0, 0, 0, 72, 0, 0, 0, + 0, 0, 0, 0, 77, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient176.scd b/sound_algo/palette/melodies/short/mAmbient176.scd new file mode 100644 index 0000000..49c9cb2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient176 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient176 = [ + 79, 0, 0, 0, 64, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 64, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient177.scd b/sound_algo/palette/melodies/short/mAmbient177.scd new file mode 100644 index 0000000..f52ac06 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient177 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient177 = [ + 0, 0, 0, 79, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 0, 0, 0, 83, + 60, 0, 0, 76, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient178.scd b/sound_algo/palette/melodies/short/mAmbient178.scd new file mode 100644 index 0000000..802734e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient178 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient178 = [ + 0, 60, 0, 0, 0, 0, 0, 0, + 0, 72, 0, 0, 0, 0, 82, 70, + 0, 0, 72, 0, 0, 0, 0, 82, + 0, 0, 0, 0, 0, 81, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient179.scd b/sound_algo/palette/melodies/short/mAmbient179.scd new file mode 100644 index 0000000..dc66658 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient179 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient179 = [ + 0, 79, 0, 0, 0, 74, 0, 0, + 0, 0, 64, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 0, 0, 67, + 0, 0, 0, 0, 0, 77, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient180.scd b/sound_algo/palette/melodies/short/mAmbient180.scd new file mode 100644 index 0000000..5378b48 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient180 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient180 = [ + 0, 0, 0, 0, 79, 0, 0, 0, + 0, 0, 0, 0, 0, 79, 0, 0, + 64, 0, 0, 0, 0, 0, 0, 0, + 0, 65, 0, 74, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient181.scd b/sound_algo/palette/melodies/short/mAmbient181.scd new file mode 100644 index 0000000..5c542dc --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient181 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient181 = [ + 0, 0, 0, 0, 0, 0, 60, 0, + 69, 0, 0, 0, 62, 0, 0, 0, + 72, 0, 0, 0, 0, 0, 0, 0, + 72, 0, 0, 0, 0, 0, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient182.scd b/sound_algo/palette/melodies/short/mAmbient182.scd new file mode 100644 index 0000000..618232e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient182 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient182 = [ + 0, 72, 0, 0, 0, 67, 0, 0, + 0, 0, 77, 0, 0, 0, 0, 0, + 69, 0, 0, 0, 0, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAmbient183.scd b/sound_algo/palette/melodies/short/mAmbient183.scd new file mode 100644 index 0000000..fee5768 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAmbient183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAmbient183 -- short melody (32 steps), genre: ambient +// ===================================================================== +( +~mAmbient183 = [ + 0, 62, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 0, 0, 74, + 0, 0, 72, 0, 0, 60, 0, 0, + 67, 0, 0, 78, 0, 0, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian100.scd b/sound_algo/palette/melodies/short/mAsian100.scd new file mode 100644 index 0000000..8ed108d --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian100 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian100 = [ + 67, 0, 71, 0, 0, 0, 60, 0, + 0, 0, 55, 76, 0, 54, 0, 60, + 0, 0, 0, 52, 0, 64, 0, 59, + 60, 60, 54, 64, 72, 71, 71, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian101.scd b/sound_algo/palette/melodies/short/mAsian101.scd new file mode 100644 index 0000000..441d3b2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian101 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian101 = [ + 72, 71, 52, 0, 69, 0, 0, 60, + 0, 0, 76, 0, 0, 76, 65, 0, + 60, 59, 59, 76, 69, 65, 71, 60, + 64, 0, 53, 0, 52, 52, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian102.scd b/sound_algo/palette/melodies/short/mAsian102.scd new file mode 100644 index 0000000..cb12487 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian102 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian102 = [ + 66, 64, 72, 0, 0, 71, 0, 0, + 0, 0, 54, 0, 55, 0, 0, 0, + 0, 0, 0, 66, 54, 52, 0, 0, + 76, 72, 0, 0, 55, 55, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian103.scd b/sound_algo/palette/melodies/short/mAsian103.scd new file mode 100644 index 0000000..47d1650 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian103 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian103 = [ + 0, 57, 70, 65, 52, 52, 58, 76, + 76, 0, 64, 76, 0, 62, 74, 70, + 76, 0, 52, 70, 52, 58, 52, 0, + 0, 0, 0, 70, 70, 74, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian104.scd b/sound_algo/palette/melodies/short/mAsian104.scd new file mode 100644 index 0000000..a082534 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian104 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian104 = [ + 53, 52, 0, 0, 0, 0, 0, 64, + 70, 69, 65, 76, 0, 65, 62, 0, + 52, 0, 58, 76, 52, 53, 58, 69, + 76, 74, 70, 0, 0, 0, 69, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian105.scd b/sound_algo/palette/melodies/short/mAsian105.scd new file mode 100644 index 0000000..a452594 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian105 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian105 = [ + 0, 71, 0, 72, 0, 0, 60, 60, + 0, 0, 60, 0, 64, 60, 57, 0, + 59, 69, 65, 69, 59, 57, 59, 72, + 52, 0, 72, 0, 0, 0, 76, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian106.scd b/sound_algo/palette/melodies/short/mAsian106.scd new file mode 100644 index 0000000..16c8b17 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian106 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian106 = [ + 52, 0, 66, 0, 0, 0, 0, 0, + 66, 72, 66, 76, 59, 55, 0, 0, + 0, 0, 0, 0, 54, 0, 66, 67, + 0, 54, 76, 52, 76, 72, 0, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian107.scd b/sound_algo/palette/melodies/short/mAsian107.scd new file mode 100644 index 0000000..5072354 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian107 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian107 = [ + 0, 0, 0, 57, 57, 0, 72, 0, + 72, 0, 76, 0, 0, 0, 64, 72, + 0, 71, 76, 52, 0, 0, 0, 0, + 0, 0, 71, 72, 0, 69, 0, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian108.scd b/sound_algo/palette/melodies/short/mAsian108.scd new file mode 100644 index 0000000..80b00f6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian108 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian108 = [ + 58, 57, 0, 70, 0, 70, 52, 58, + 76, 58, 0, 0, 76, 0, 69, 0, + 0, 64, 0, 58, 0, 65, 0, 52, + 70, 52, 58, 0, 0, 0, 52, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian109.scd b/sound_algo/palette/melodies/short/mAsian109.scd new file mode 100644 index 0000000..c00ba41 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian109 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian109 = [ + 72, 71, 64, 0, 0, 0, 71, 76, + 0, 0, 67, 0, 55, 60, 0, 59, + 0, 72, 71, 67, 0, 0, 0, 0, + 71, 67, 59, 64, 0, 76, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian110.scd b/sound_algo/palette/melodies/short/mAsian110.scd new file mode 100644 index 0000000..6052633 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian110 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian110 = [ + 0, 0, 67, 0, 0, 0, 74, 63, + 55, 55, 69, 67, 0, 67, 0, 0, + 63, 62, 69, 62, 67, 63, 74, 70, + 58, 67, 75, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian111.scd b/sound_algo/palette/melodies/short/mAsian111.scd new file mode 100644 index 0000000..5e0ea22 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian111 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian111 = [ + 0, 52, 64, 0, 59, 55, 0, 0, + 59, 0, 72, 71, 76, 66, 0, 59, + 0, 59, 52, 54, 55, 72, 0, 0, + 0, 71, 72, 72, 76, 72, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian112.scd b/sound_algo/palette/melodies/short/mAsian112.scd new file mode 100644 index 0000000..8d5e0fb --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian112 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian112 = [ + 69, 0, 70, 69, 70, 0, 74, 58, + 67, 55, 58, 0, 67, 58, 70, 0, + 0, 63, 75, 0, 0, 67, 74, 57, + 58, 0, 74, 69, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian113.scd b/sound_algo/palette/melodies/short/mAsian113.scd new file mode 100644 index 0000000..a297270 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian113 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian113 = [ + 59, 71, 76, 64, 55, 54, 71, 0, + 59, 0, 66, 0, 72, 71, 0, 55, + 64, 71, 66, 52, 71, 67, 0, 54, + 0, 71, 72, 76, 71, 71, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian114.scd b/sound_algo/palette/melodies/short/mAsian114.scd new file mode 100644 index 0000000..9971c3a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian114 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian114 = [ + 0, 0, 67, 67, 70, 63, 57, 55, + 0, 62, 0, 62, 69, 57, 58, 74, + 0, 63, 70, 0, 57, 0, 74, 69, + 69, 67, 0, 0, 74, 75, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian115.scd b/sound_algo/palette/melodies/short/mAsian115.scd new file mode 100644 index 0000000..db36dd2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian115 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian115 = [ + 58, 57, 76, 0, 76, 74, 70, 52, + 64, 62, 57, 0, 0, 0, 53, 76, + 0, 0, 0, 0, 0, 74, 76, 69, + 58, 57, 76, 64, 52, 0, 0, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian116.scd b/sound_algo/palette/melodies/short/mAsian116.scd new file mode 100644 index 0000000..4961dcb --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian116 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian116 = [ + 0, 0, 60, 64, 71, 71, 64, 52, + 0, 0, 72, 0, 71, 69, 72, 60, + 76, 57, 71, 64, 60, 0, 60, 65, + 60, 59, 0, 57, 52, 76, 57, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian117.scd b/sound_algo/palette/melodies/short/mAsian117.scd new file mode 100644 index 0000000..a1cf750 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian117 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian117 = [ + 69, 65, 62, 0, 76, 74, 65, 0, + 62, 58, 0, 70, 0, 0, 0, 65, + 0, 0, 64, 0, 76, 74, 58, 53, + 62, 58, 0, 0, 0, 62, 69, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian118.scd b/sound_algo/palette/melodies/short/mAsian118.scd new file mode 100644 index 0000000..37feeb3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian118 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian118 = [ + 54, 59, 0, 52, 67, 0, 0, 59, + 59, 55, 66, 0, 0, 72, 0, 76, + 67, 66, 52, 60, 0, 71, 64, 64, + 0, 55, 64, 0, 72, 59, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian119.scd b/sound_algo/palette/melodies/short/mAsian119.scd new file mode 100644 index 0000000..c4c7fab --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian119 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian119 = [ + 52, 0, 64, 57, 71, 57, 0, 0, + 0, 53, 64, 0, 71, 0, 0, 53, + 69, 65, 0, 0, 0, 60, 71, 0, + 72, 0, 59, 53, 57, 76, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian120.scd b/sound_algo/palette/melodies/short/mAsian120.scd new file mode 100644 index 0000000..542881b --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian120 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian120 = [ + 69, 0, 0, 0, 0, 70, 0, 63, + 57, 0, 67, 0, 69, 0, 58, 58, + 0, 0, 57, 63, 69, 67, 69, 0, + 69, 67, 67, 0, 0, 55, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian121.scd b/sound_algo/palette/melodies/short/mAsian121.scd new file mode 100644 index 0000000..5feb0e0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian121 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian121 = [ + 0, 57, 52, 0, 57, 72, 60, 0, + 0, 65, 0, 65, 76, 72, 52, 72, + 57, 57, 0, 71, 0, 0, 0, 0, + 60, 0, 71, 0, 52, 0, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian122.scd b/sound_algo/palette/melodies/short/mAsian122.scd new file mode 100644 index 0000000..87eaf7d --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian122 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian122 = [ + 0, 76, 0, 0, 72, 66, 76, 67, + 0, 67, 59, 0, 54, 52, 67, 59, + 64, 60, 66, 67, 64, 60, 60, 72, + 0, 66, 0, 0, 72, 0, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian123.scd b/sound_algo/palette/melodies/short/mAsian123.scd new file mode 100644 index 0000000..fa69c6a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian123 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian123 = [ + 0, 0, 64, 0, 76, 74, 52, 64, + 76, 0, 57, 0, 0, 53, 0, 0, + 70, 69, 70, 64, 0, 64, 76, 62, + 52, 53, 0, 0, 0, 52, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian124.scd b/sound_algo/palette/melodies/short/mAsian124.scd new file mode 100644 index 0000000..7c621dc --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian124 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian124 = [ + 59, 0, 59, 72, 55, 54, 64, 64, + 0, 55, 0, 0, 71, 67, 0, 0, + 67, 66, 0, 0, 0, 71, 71, 0, + 76, 0, 0, 0, 59, 55, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian125.scd b/sound_algo/palette/melodies/short/mAsian125.scd new file mode 100644 index 0000000..47a224a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian125 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian125 = [ + 55, 59, 55, 76, 72, 67, 0, 72, + 76, 0, 54, 59, 0, 71, 72, 52, + 0, 0, 0, 0, 0, 0, 0, 54, + 64, 60, 59, 76, 59, 55, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian126.scd b/sound_algo/palette/melodies/short/mAsian126.scd new file mode 100644 index 0000000..066db74 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian126 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian126 = [ + 57, 0, 76, 0, 72, 0, 0, 0, + 76, 0, 65, 0, 76, 0, 57, 0, + 0, 64, 0, 57, 52, 0, 0, 60, + 0, 0, 59, 60, 64, 60, 72, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian127.scd b/sound_algo/palette/melodies/short/mAsian127.scd new file mode 100644 index 0000000..1283c63 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian127 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian127 = [ + 0, 55, 75, 0, 70, 0, 0, 57, + 70, 70, 0, 0, 69, 67, 58, 57, + 67, 63, 63, 0, 69, 67, 0, 55, + 57, 55, 0, 55, 57, 55, 62, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian128.scd b/sound_algo/palette/melodies/short/mAsian128.scd new file mode 100644 index 0000000..7a94433 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian128 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian128 = [ + 52, 76, 0, 0, 64, 65, 0, 58, + 62, 58, 0, 76, 64, 0, 0, 58, + 64, 62, 64, 62, 0, 64, 0, 76, + 76, 0, 0, 0, 0, 58, 64, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian129.scd b/sound_algo/palette/melodies/short/mAsian129.scd new file mode 100644 index 0000000..c3b7689 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian129 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian129 = [ + 59, 57, 59, 0, 60, 59, 0, 53, + 64, 0, 60, 0, 57, 53, 0, 72, + 0, 53, 0, 53, 65, 72, 0, 60, + 57, 57, 52, 53, 53, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian130.scd b/sound_algo/palette/melodies/short/mAsian130.scd new file mode 100644 index 0000000..3fbf06d --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian130 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian130 = [ + 0, 0, 0, 0, 69, 0, 0, 0, + 57, 55, 0, 62, 0, 0, 62, 0, + 0, 57, 62, 0, 0, 57, 0, 0, + 69, 67, 69, 75, 0, 55, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian131.scd b/sound_algo/palette/melodies/short/mAsian131.scd new file mode 100644 index 0000000..06f69d9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian131 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian131 = [ + 57, 0, 0, 69, 74, 70, 63, 55, + 0, 57, 69, 0, 55, 0, 0, 58, + 67, 74, 62, 0, 69, 67, 0, 74, + 69, 67, 0, 0, 63, 62, 0, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian132.scd b/sound_algo/palette/melodies/short/mAsian132.scd new file mode 100644 index 0000000..09fe394 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian132 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian132 = [ + 0, 0, 55, 0, 76, 0, 0, 76, + 76, 72, 59, 54, 0, 67, 0, 55, + 71, 0, 72, 0, 72, 0, 60, 55, + 67, 66, 76, 60, 0, 0, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian133.scd b/sound_algo/palette/melodies/short/mAsian133.scd new file mode 100644 index 0000000..1ceffcc --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian133 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian133 = [ + 0, 71, 72, 55, 76, 0, 72, 67, + 67, 55, 0, 67, 0, 55, 66, 71, + 0, 72, 54, 71, 59, 0, 52, 71, + 76, 0, 71, 0, 59, 54, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian134.scd b/sound_algo/palette/melodies/short/mAsian134.scd new file mode 100644 index 0000000..dec4bb5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian134 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian134 = [ + 0, 64, 60, 0, 55, 71, 0, 0, + 0, 52, 0, 55, 59, 60, 0, 0, + 67, 66, 0, 0, 52, 0, 64, 0, + 66, 64, 71, 55, 60, 59, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian135.scd b/sound_algo/palette/melodies/short/mAsian135.scd new file mode 100644 index 0000000..e265f5e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian135 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian135 = [ + 72, 71, 76, 0, 76, 59, 64, 0, + 52, 57, 69, 72, 60, 0, 0, 0, + 0, 72, 72, 72, 60, 59, 64, 57, + 60, 59, 59, 52, 76, 0, 53, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian136.scd b/sound_algo/palette/melodies/short/mAsian136.scd new file mode 100644 index 0000000..970491d --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian136 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian136 = [ + 52, 53, 69, 76, 58, 57, 0, 53, + 76, 52, 62, 57, 0, 70, 53, 76, + 76, 0, 0, 0, 0, 52, 70, 69, + 70, 69, 64, 58, 0, 0, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian137.scd b/sound_algo/palette/melodies/short/mAsian137.scd new file mode 100644 index 0000000..255cbe3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian137 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian137 = [ + 52, 0, 55, 55, 0, 0, 0, 0, + 0, 59, 0, 0, 67, 71, 72, 0, + 76, 0, 54, 71, 0, 59, 76, 71, + 76, 72, 0, 76, 67, 0, 72, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian138.scd b/sound_algo/palette/melodies/short/mAsian138.scd new file mode 100644 index 0000000..9fd6174 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian138 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian138 = [ + 0, 52, 59, 0, 64, 65, 0, 0, + 60, 59, 0, 0, 57, 53, 69, 60, + 0, 0, 0, 72, 0, 0, 0, 60, + 52, 0, 57, 0, 65, 52, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian139.scd b/sound_algo/palette/melodies/short/mAsian139.scd new file mode 100644 index 0000000..e9adff7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian139 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian139 = [ + 0, 58, 74, 57, 55, 0, 0, 62, + 0, 0, 62, 67, 69, 67, 58, 63, + 0, 75, 57, 69, 67, 63, 0, 0, + 57, 62, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian140.scd b/sound_algo/palette/melodies/short/mAsian140.scd new file mode 100644 index 0000000..e83b718 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian140 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian140 = [ + 76, 0, 52, 0, 52, 64, 69, 59, + 0, 0, 57, 0, 72, 52, 0, 65, + 69, 53, 69, 60, 0, 52, 0, 0, + 69, 65, 64, 72, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian141.scd b/sound_algo/palette/melodies/short/mAsian141.scd new file mode 100644 index 0000000..e6ec387 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian141 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian141 = [ + 52, 0, 0, 0, 0, 0, 70, 0, + 64, 62, 0, 0, 0, 74, 76, 58, + 0, 0, 74, 0, 52, 57, 74, 76, + 70, 69, 69, 69, 0, 0, 76, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian142.scd b/sound_algo/palette/melodies/short/mAsian142.scd new file mode 100644 index 0000000..1704b56 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian142 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian142 = [ + 0, 0, 0, 69, 0, 0, 69, 75, + 69, 67, 0, 74, 0, 63, 69, 55, + 0, 75, 0, 74, 57, 55, 55, 75, + 69, 67, 74, 0, 62, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian143.scd b/sound_algo/palette/melodies/short/mAsian143.scd new file mode 100644 index 0000000..74db6e8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian143 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian143 = [ + 0, 67, 70, 75, 0, 0, 63, 0, + 55, 0, 74, 62, 57, 70, 0, 0, + 63, 0, 75, 0, 0, 0, 0, 0, + 0, 0, 70, 57, 0, 0, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian144.scd b/sound_algo/palette/melodies/short/mAsian144.scd new file mode 100644 index 0000000..edbf27e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian144 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian144 = [ + 64, 66, 59, 54, 59, 55, 54, 66, + 0, 60, 72, 54, 66, 64, 67, 0, + 0, 60, 0, 64, 0, 55, 59, 66, + 72, 71, 0, 59, 67, 66, 54, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian145.scd b/sound_algo/palette/melodies/short/mAsian145.scd new file mode 100644 index 0000000..0ae24b1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian145 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian145 = [ + 0, 0, 54, 0, 0, 0, 0, 67, + 55, 0, 59, 60, 0, 54, 0, 0, + 60, 59, 52, 76, 76, 0, 52, 72, + 72, 54, 67, 0, 0, 64, 60, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian146.scd b/sound_algo/palette/melodies/short/mAsian146.scd new file mode 100644 index 0000000..141ae22 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian146 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian146 = [ + 0, 54, 66, 55, 76, 64, 0, 59, + 76, 0, 0, 54, 0, 60, 0, 0, + 64, 55, 0, 67, 52, 71, 52, 0, + 0, 0, 71, 0, 55, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian147.scd b/sound_algo/palette/melodies/short/mAsian147.scd new file mode 100644 index 0000000..bf16ee8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian147 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian147 = [ + 76, 0, 0, 70, 76, 74, 53, 64, + 0, 70, 65, 69, 76, 74, 0, 62, + 0, 64, 69, 0, 76, 52, 70, 74, + 0, 69, 62, 0, 0, 57, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian148.scd b/sound_algo/palette/melodies/short/mAsian148.scd new file mode 100644 index 0000000..86cf619 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian148 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian148 = [ + 52, 71, 0, 0, 0, 0, 72, 76, + 0, 0, 59, 69, 0, 59, 69, 52, + 69, 65, 72, 64, 72, 65, 0, 53, + 0, 64, 57, 72, 76, 0, 65, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian149.scd b/sound_algo/palette/melodies/short/mAsian149.scd new file mode 100644 index 0000000..bd553fa --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian149 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian149 = [ + 72, 71, 0, 0, 0, 76, 71, 0, + 0, 0, 52, 52, 64, 0, 0, 0, + 67, 66, 0, 66, 0, 59, 55, 0, + 71, 67, 72, 66, 0, 67, 0, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian150.scd b/sound_algo/palette/melodies/short/mAsian150.scd new file mode 100644 index 0000000..d2fdf37 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian150 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian150 = [ + 52, 72, 0, 52, 0, 53, 0, 0, + 69, 0, 72, 57, 53, 52, 0, 0, + 0, 72, 76, 69, 65, 64, 65, 0, + 60, 0, 71, 0, 0, 60, 65, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian151.scd b/sound_algo/palette/melodies/short/mAsian151.scd new file mode 100644 index 0000000..eeea30f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian151 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian151 = [ + 71, 0, 52, 66, 55, 0, 67, 0, + 0, 59, 55, 71, 52, 71, 0, 52, + 67, 52, 0, 67, 71, 67, 66, 59, + 71, 67, 0, 0, 64, 55, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian152.scd b/sound_algo/palette/melodies/short/mAsian152.scd new file mode 100644 index 0000000..dd4f196 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian152 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian152 = [ + 52, 0, 66, 0, 67, 71, 0, 54, + 55, 67, 71, 0, 64, 76, 64, 66, + 0, 60, 54, 66, 76, 0, 66, 52, + 64, 60, 0, 52, 59, 76, 54, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian153.scd b/sound_algo/palette/melodies/short/mAsian153.scd new file mode 100644 index 0000000..42b3ad3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian153 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian153 = [ + 57, 57, 0, 59, 0, 69, 72, 0, + 0, 0, 69, 76, 76, 57, 76, 59, + 72, 0, 53, 71, 52, 0, 60, 52, + 71, 69, 52, 53, 57, 64, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian154.scd b/sound_algo/palette/melodies/short/mAsian154.scd new file mode 100644 index 0000000..08e8f56 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian154 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian154 = [ + 0, 75, 75, 67, 0, 0, 58, 0, + 69, 57, 58, 62, 0, 75, 0, 0, + 0, 0, 0, 0, 57, 55, 0, 0, + 58, 0, 62, 0, 63, 70, 57, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian155.scd b/sound_algo/palette/melodies/short/mAsian155.scd new file mode 100644 index 0000000..f8afad9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian155 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian155 = [ + 64, 62, 69, 53, 76, 65, 62, 65, + 57, 53, 62, 64, 0, 74, 76, 52, + 0, 62, 0, 70, 62, 58, 0, 0, + 76, 74, 0, 57, 64, 62, 58, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian156.scd b/sound_algo/palette/melodies/short/mAsian156.scd new file mode 100644 index 0000000..a47ce31 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian156 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian156 = [ + 66, 60, 0, 54, 67, 0, 59, 71, + 64, 60, 76, 60, 0, 67, 0, 55, + 0, 0, 71, 66, 52, 59, 59, 0, + 52, 0, 64, 54, 52, 66, 55, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian157.scd b/sound_algo/palette/melodies/short/mAsian157.scd new file mode 100644 index 0000000..e6cfcae --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian157 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian157 = [ + 66, 0, 55, 72, 64, 64, 59, 0, + 64, 72, 76, 0, 0, 66, 72, 0, + 0, 0, 0, 64, 0, 60, 0, 64, + 64, 71, 76, 59, 0, 0, 60, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian158.scd b/sound_algo/palette/melodies/short/mAsian158.scd new file mode 100644 index 0000000..f7f72b0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian158 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian158 = [ + 67, 54, 0, 0, 60, 0, 0, 0, + 71, 67, 0, 72, 52, 0, 0, 0, + 55, 0, 0, 0, 0, 54, 67, 0, + 0, 0, 0, 0, 55, 54, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian159.scd b/sound_algo/palette/melodies/short/mAsian159.scd new file mode 100644 index 0000000..3b38af9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian159 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian159 = [ + 0, 52, 64, 0, 52, 57, 0, 0, + 76, 64, 59, 65, 59, 69, 53, 0, + 57, 0, 0, 53, 64, 60, 65, 0, + 0, 59, 72, 60, 72, 0, 0, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian160.scd b/sound_algo/palette/melodies/short/mAsian160.scd new file mode 100644 index 0000000..975a8fd --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian160 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian160 = [ + 76, 53, 65, 65, 65, 64, 53, 76, + 52, 0, 0, 57, 58, 57, 62, 76, + 0, 65, 69, 74, 58, 57, 69, 58, + 76, 74, 53, 76, 0, 0, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian161.scd b/sound_algo/palette/melodies/short/mAsian161.scd new file mode 100644 index 0000000..e2a77a0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian161 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian161 = [ + 57, 75, 63, 69, 0, 0, 69, 0, + 0, 0, 0, 55, 69, 67, 57, 62, + 57, 55, 0, 70, 57, 55, 69, 55, + 0, 0, 58, 70, 58, 57, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian162.scd b/sound_algo/palette/melodies/short/mAsian162.scd new file mode 100644 index 0000000..0d1291d --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian162 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian162 = [ + 64, 62, 62, 74, 0, 0, 69, 70, + 70, 0, 0, 52, 0, 57, 0, 0, + 52, 62, 0, 0, 0, 0, 0, 0, + 64, 65, 70, 65, 76, 70, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian163.scd b/sound_algo/palette/melodies/short/mAsian163.scd new file mode 100644 index 0000000..bda86d6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian163 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian163 = [ + 65, 52, 0, 59, 0, 69, 76, 69, + 69, 71, 71, 0, 76, 72, 65, 64, + 0, 53, 64, 0, 0, 69, 52, 57, + 60, 52, 65, 0, 72, 71, 0, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian164.scd b/sound_algo/palette/melodies/short/mAsian164.scd new file mode 100644 index 0000000..16bc3ef --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian164 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian164 = [ + 55, 66, 52, 66, 0, 64, 66, 76, + 55, 60, 72, 52, 67, 66, 0, 64, + 64, 71, 0, 59, 52, 64, 59, 54, + 64, 60, 55, 64, 76, 66, 67, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian165.scd b/sound_algo/palette/melodies/short/mAsian165.scd new file mode 100644 index 0000000..c224bbf --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian165 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian165 = [ + 0, 0, 0, 71, 71, 66, 71, 72, + 71, 67, 0, 72, 0, 0, 66, 0, + 76, 0, 66, 0, 0, 0, 0, 0, + 0, 52, 54, 59, 52, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian166.scd b/sound_algo/palette/melodies/short/mAsian166.scd new file mode 100644 index 0000000..3b40775 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian166 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian166 = [ + 57, 74, 75, 55, 69, 67, 75, 67, + 57, 55, 70, 0, 69, 67, 74, 62, + 58, 57, 62, 0, 69, 70, 0, 70, + 67, 75, 0, 0, 58, 57, 55, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian167.scd b/sound_algo/palette/melodies/short/mAsian167.scd new file mode 100644 index 0000000..198e4b4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian167 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian167 = [ + 52, 0, 52, 71, 67, 71, 66, 0, + 59, 64, 66, 64, 0, 55, 0, 71, + 55, 0, 52, 66, 71, 67, 0, 72, + 0, 64, 60, 0, 0, 0, 67, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian168.scd b/sound_algo/palette/melodies/short/mAsian168.scd new file mode 100644 index 0000000..5f36e30 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian168 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian168 = [ + 57, 0, 52, 69, 52, 59, 65, 0, + 64, 60, 0, 57, 0, 71, 0, 72, + 0, 72, 64, 0, 71, 71, 0, 0, + 76, 52, 60, 57, 52, 60, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian169.scd b/sound_algo/palette/melodies/short/mAsian169.scd new file mode 100644 index 0000000..eaa3c5a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian169 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian169 = [ + 55, 0, 0, 0, 67, 66, 66, 0, + 54, 76, 0, 55, 72, 0, 55, 71, + 0, 0, 76, 0, 64, 60, 0, 67, + 67, 0, 0, 0, 0, 59, 0, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian170.scd b/sound_algo/palette/melodies/short/mAsian170.scd new file mode 100644 index 0000000..0e6230f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian170 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian170 = [ + 76, 0, 58, 0, 0, 53, 64, 0, + 64, 57, 0, 64, 74, 70, 0, 0, + 65, 76, 76, 0, 0, 0, 62, 74, + 64, 62, 76, 58, 0, 70, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian171.scd b/sound_algo/palette/melodies/short/mAsian171.scd new file mode 100644 index 0000000..e8e7c70 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian171 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian171 = [ + 64, 53, 0, 52, 0, 0, 0, 74, + 76, 70, 76, 70, 76, 76, 0, 69, + 0, 74, 57, 0, 76, 74, 76, 52, + 64, 62, 0, 69, 76, 0, 57, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian172.scd b/sound_algo/palette/melodies/short/mAsian172.scd new file mode 100644 index 0000000..46bd544 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian172 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian172 = [ + 67, 55, 0, 67, 54, 52, 0, 0, + 0, 72, 72, 0, 67, 0, 0, 72, + 54, 52, 0, 72, 0, 0, 0, 0, + 71, 64, 71, 67, 72, 66, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian173.scd b/sound_algo/palette/melodies/short/mAsian173.scd new file mode 100644 index 0000000..1860e0c --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian173 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian173 = [ + 64, 60, 0, 60, 0, 0, 55, 59, + 0, 0, 59, 66, 54, 0, 0, 71, + 0, 0, 76, 0, 76, 66, 55, 0, + 52, 0, 66, 0, 0, 54, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian174.scd b/sound_algo/palette/melodies/short/mAsian174.scd new file mode 100644 index 0000000..71da537 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian174 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian174 = [ + 0, 52, 0, 72, 0, 66, 0, 0, + 0, 0, 67, 54, 72, 71, 52, 0, + 54, 72, 66, 60, 59, 71, 64, 60, + 64, 60, 0, 76, 59, 0, 66, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian175.scd b/sound_algo/palette/melodies/short/mAsian175.scd new file mode 100644 index 0000000..7f0e526 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian175 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian175 = [ + 72, 71, 0, 0, 53, 65, 52, 0, + 69, 65, 59, 72, 0, 76, 71, 0, + 0, 0, 52, 0, 53, 52, 60, 60, + 71, 0, 57, 64, 52, 71, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian176.scd b/sound_algo/palette/melodies/short/mAsian176.scd new file mode 100644 index 0000000..64db3c0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian176 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian176 = [ + 57, 0, 0, 57, 0, 0, 75, 0, + 0, 67, 0, 0, 57, 0, 0, 67, + 57, 0, 0, 0, 74, 70, 70, 0, + 58, 57, 58, 0, 0, 55, 75, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian177.scd b/sound_algo/palette/melodies/short/mAsian177.scd new file mode 100644 index 0000000..33c0ef7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian177 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian177 = [ + 0, 60, 0, 0, 0, 60, 0, 54, + 0, 72, 0, 66, 0, 0, 0, 60, + 0, 54, 59, 59, 0, 76, 59, 0, + 64, 0, 0, 0, 0, 67, 76, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian178.scd b/sound_algo/palette/melodies/short/mAsian178.scd new file mode 100644 index 0000000..7a798b5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian178 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian178 = [ + 71, 67, 64, 59, 52, 59, 59, 67, + 55, 54, 67, 55, 59, 55, 72, 0, + 0, 76, 64, 66, 0, 72, 0, 0, + 52, 59, 54, 55, 0, 54, 59, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian179.scd b/sound_algo/palette/melodies/short/mAsian179.scd new file mode 100644 index 0000000..402d8a9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian179 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian179 = [ + 74, 0, 62, 0, 0, 0, 53, 52, + 0, 0, 52, 52, 62, 0, 0, 0, + 0, 0, 62, 0, 52, 70, 64, 0, + 0, 53, 0, 0, 0, 0, 69, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian180.scd b/sound_algo/palette/melodies/short/mAsian180.scd new file mode 100644 index 0000000..d412ed3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian180 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian180 = [ + 0, 57, 71, 53, 71, 69, 71, 0, + 59, 57, 59, 64, 64, 60, 57, 52, + 76, 53, 57, 57, 76, 0, 65, 0, + 76, 72, 60, 59, 72, 59, 69, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian181.scd b/sound_algo/palette/melodies/short/mAsian181.scd new file mode 100644 index 0000000..a48b39a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian181 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian181 = [ + 74, 0, 69, 0, 0, 58, 0, 64, + 0, 69, 0, 62, 0, 70, 76, 0, + 0, 0, 69, 53, 76, 0, 74, 0, + 58, 52, 0, 0, 69, 57, 52, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian182.scd b/sound_algo/palette/melodies/short/mAsian182.scd new file mode 100644 index 0000000..f2754af --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian182 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian182 = [ + 69, 65, 0, 65, 0, 72, 0, 52, + 0, 0, 57, 0, 0, 0, 0, 0, + 64, 60, 71, 0, 0, 76, 59, 0, + 0, 52, 53, 53, 72, 71, 64, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian183.scd b/sound_algo/palette/melodies/short/mAsian183.scd new file mode 100644 index 0000000..16cd4c9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian183 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian183 = [ + 0, 0, 66, 54, 55, 54, 0, 67, + 67, 66, 0, 67, 0, 54, 76, 60, + 0, 0, 66, 76, 67, 66, 59, 67, + 52, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian184.scd b/sound_algo/palette/melodies/short/mAsian184.scd new file mode 100644 index 0000000..c59c0d9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian184.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian184 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian184 = [ + 0, 0, 75, 57, 62, 0, 75, 62, + 0, 62, 58, 0, 69, 55, 69, 0, + 57, 55, 70, 63, 63, 62, 0, 0, + 57, 55, 69, 75, 70, 69, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian185.scd b/sound_algo/palette/melodies/short/mAsian185.scd new file mode 100644 index 0000000..15ed41d --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian185.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian185 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian185 = [ + 58, 62, 62, 0, 0, 0, 67, 0, + 74, 70, 55, 67, 55, 67, 55, 58, + 57, 55, 75, 74, 58, 57, 55, 0, + 62, 58, 58, 74, 57, 55, 75, 75 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian186.scd b/sound_algo/palette/melodies/short/mAsian186.scd new file mode 100644 index 0000000..83a50fc --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian186.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian186 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian186 = [ + 52, 69, 0, 0, 60, 59, 71, 65, + 52, 0, 0, 0, 69, 60, 69, 69, + 60, 59, 57, 71, 0, 0, 0, 0, + 72, 71, 65, 76, 69, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian187.scd b/sound_algo/palette/melodies/short/mAsian187.scd new file mode 100644 index 0000000..03fc4b1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian187.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian187 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian187 = [ + 0, 0, 0, 0, 76, 74, 65, 76, + 76, 74, 62, 62, 76, 64, 58, 57, + 70, 69, 0, 64, 64, 0, 69, 76, + 0, 53, 0, 0, 0, 57, 53, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian188.scd b/sound_algo/palette/melodies/short/mAsian188.scd new file mode 100644 index 0000000..b7d0840 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian188.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian188 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian188 = [ + 0, 53, 65, 0, 64, 69, 64, 0, + 52, 62, 62, 76, 64, 0, 62, 0, + 52, 0, 74, 70, 57, 0, 62, 0, + 76, 74, 0, 64, 0, 57, 76, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian189.scd b/sound_algo/palette/melodies/short/mAsian189.scd new file mode 100644 index 0000000..be64441 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian189.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian189 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian189 = [ + 72, 60, 69, 0, 72, 53, 0, 65, + 60, 59, 76, 0, 0, 57, 52, 0, + 0, 0, 60, 0, 60, 59, 60, 76, + 0, 60, 0, 57, 69, 60, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian190.scd b/sound_algo/palette/melodies/short/mAsian190.scd new file mode 100644 index 0000000..0310d1a --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian190.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian190 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian190 = [ + 64, 62, 0, 0, 76, 65, 0, 0, + 52, 62, 57, 0, 64, 0, 69, 53, + 65, 64, 0, 57, 52, 0, 0, 0, + 76, 74, 76, 0, 52, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian191.scd b/sound_algo/palette/melodies/short/mAsian191.scd new file mode 100644 index 0000000..cd81384 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian191.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian191 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian191 = [ + 76, 74, 0, 0, 70, 58, 0, 74, + 52, 52, 53, 0, 0, 53, 53, 64, + 0, 69, 0, 62, 52, 0, 62, 0, + 0, 74, 52, 0, 0, 70, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian192.scd b/sound_algo/palette/melodies/short/mAsian192.scd new file mode 100644 index 0000000..641f71f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian192.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian192 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian192 = [ + 0, 70, 70, 58, 69, 67, 55, 55, + 0, 0, 67, 63, 58, 67, 57, 70, + 63, 62, 0, 74, 69, 67, 62, 0, + 69, 67, 62, 55, 69, 0, 57, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian193.scd b/sound_algo/palette/melodies/short/mAsian193.scd new file mode 100644 index 0000000..2336a90 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian193.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian193 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian193 = [ + 52, 76, 69, 58, 76, 0, 62, 70, + 64, 0, 0, 0, 62, 58, 0, 64, + 76, 70, 58, 62, 0, 69, 0, 65, + 52, 70, 53, 74, 76, 64, 0, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian194.scd b/sound_algo/palette/melodies/short/mAsian194.scd new file mode 100644 index 0000000..999f5a6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian194.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian194 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian194 = [ + 52, 0, 53, 52, 62, 0, 0, 0, + 64, 64, 52, 69, 0, 70, 0, 53, + 70, 52, 76, 52, 0, 69, 58, 0, + 76, 74, 0, 0, 76, 74, 74, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian195.scd b/sound_algo/palette/melodies/short/mAsian195.scd new file mode 100644 index 0000000..7aad25f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian195.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian195 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian195 = [ + 0, 76, 76, 54, 0, 55, 0, 60, + 59, 0, 66, 0, 59, 55, 55, 52, + 59, 55, 55, 0, 55, 0, 0, 72, + 55, 67, 71, 71, 71, 67, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian196.scd b/sound_algo/palette/melodies/short/mAsian196.scd new file mode 100644 index 0000000..a2b72f7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian196.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian196 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian196 = [ + 63, 62, 0, 70, 55, 63, 0, 58, + 0, 0, 67, 75, 58, 57, 57, 69, + 57, 63, 69, 58, 70, 74, 67, 75, + 69, 69, 58, 62, 69, 67, 75, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian197.scd b/sound_algo/palette/melodies/short/mAsian197.scd new file mode 100644 index 0000000..650d619 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian197.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian197 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian197 = [ + 0, 62, 70, 0, 0, 0, 0, 0, + 67, 62, 67, 70, 74, 70, 0, 63, + 62, 58, 74, 75, 0, 63, 67, 63, + 0, 0, 0, 70, 0, 0, 63, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian198.scd b/sound_algo/palette/melodies/short/mAsian198.scd new file mode 100644 index 0000000..6e38d57 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian198.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian198 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian198 = [ + 74, 53, 52, 74, 70, 69, 52, 0, + 74, 70, 58, 0, 69, 69, 70, 70, + 0, 64, 0, 53, 0, 53, 0, 62, + 52, 0, 74, 76, 58, 58, 57, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian199.scd b/sound_algo/palette/melodies/short/mAsian199.scd new file mode 100644 index 0000000..beed6be --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian199.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian199 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian199 = [ + 0, 72, 0, 54, 0, 0, 71, 0, + 0, 72, 72, 67, 76, 72, 67, 76, + 60, 59, 55, 72, 0, 59, 59, 0, + 60, 59, 52, 52, 71, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian200.scd b/sound_algo/palette/melodies/short/mAsian200.scd new file mode 100644 index 0000000..8ed17c5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian200.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian200 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian200 = [ + 57, 60, 76, 52, 0, 69, 52, 0, + 76, 72, 0, 0, 0, 60, 69, 64, + 0, 57, 65, 69, 52, 72, 76, 71, + 76, 0, 72, 69, 0, 0, 71, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian201.scd b/sound_algo/palette/melodies/short/mAsian201.scd new file mode 100644 index 0000000..a17385e --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian201.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian201 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian201 = [ + 64, 54, 0, 0, 0, 76, 55, 0, + 0, 60, 66, 0, 0, 71, 59, 71, + 0, 54, 0, 66, 76, 72, 60, 0, + 0, 0, 72, 76, 0, 71, 60, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian202.scd b/sound_algo/palette/melodies/short/mAsian202.scd new file mode 100644 index 0000000..6e0fd69 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian202.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian202 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian202 = [ + 0, 53, 0, 57, 69, 60, 0, 0, + 0, 52, 60, 0, 72, 71, 52, 53, + 0, 0, 0, 65, 0, 60, 60, 57, + 0, 0, 60, 52, 65, 71, 0, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian203.scd b/sound_algo/palette/melodies/short/mAsian203.scd new file mode 100644 index 0000000..cefbaa0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian203.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian203 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian203 = [ + 64, 52, 0, 65, 0, 0, 69, 0, + 0, 59, 0, 60, 65, 0, 64, 0, + 71, 64, 0, 65, 65, 64, 0, 60, + 0, 59, 69, 0, 0, 53, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian204.scd b/sound_algo/palette/melodies/short/mAsian204.scd new file mode 100644 index 0000000..e298179 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian204.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian204 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian204 = [ + 58, 57, 0, 0, 62, 70, 62, 69, + 0, 0, 64, 52, 52, 0, 57, 57, + 0, 0, 0, 64, 0, 52, 53, 0, + 69, 0, 53, 0, 52, 0, 52, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian205.scd b/sound_algo/palette/melodies/short/mAsian205.scd new file mode 100644 index 0000000..96e162f --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian205.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian205 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian205 = [ + 76, 0, 69, 0, 0, 0, 64, 76, + 74, 70, 0, 76, 64, 0, 53, 0, + 65, 64, 0, 65, 76, 0, 70, 62, + 64, 70, 70, 0, 52, 74, 52, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian206.scd b/sound_algo/palette/melodies/short/mAsian206.scd new file mode 100644 index 0000000..8b857d9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian206.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian206 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian206 = [ + 0, 69, 62, 74, 63, 62, 69, 75, + 57, 55, 0, 0, 0, 69, 69, 67, + 0, 0, 74, 0, 57, 0, 0, 69, + 69, 67, 70, 55, 57, 55, 75, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian207.scd b/sound_algo/palette/melodies/short/mAsian207.scd new file mode 100644 index 0000000..e189913 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian207.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian207 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian207 = [ + 53, 0, 64, 0, 52, 0, 57, 53, + 0, 59, 71, 0, 52, 0, 0, 0, + 71, 69, 0, 0, 64, 65, 72, 0, + 72, 71, 65, 0, 76, 72, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian208.scd b/sound_algo/palette/melodies/short/mAsian208.scd new file mode 100644 index 0000000..d95b888 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian208.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian208 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian208 = [ + 76, 76, 0, 65, 64, 62, 69, 0, + 52, 0, 53, 58, 0, 0, 53, 0, + 0, 0, 58, 0, 0, 76, 58, 0, + 0, 69, 58, 76, 52, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian209.scd b/sound_algo/palette/melodies/short/mAsian209.scd new file mode 100644 index 0000000..9567474 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian209.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian209 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian209 = [ + 0, 0, 0, 64, 69, 72, 57, 0, + 52, 0, 0, 0, 60, 59, 0, 57, + 0, 0, 60, 71, 71, 69, 0, 52, + 0, 65, 0, 0, 0, 71, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian210.scd b/sound_algo/palette/melodies/short/mAsian210.scd new file mode 100644 index 0000000..e04af10 --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian210.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian210 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian210 = [ + 0, 0, 65, 0, 0, 53, 69, 0, + 76, 57, 65, 62, 53, 0, 0, 76, + 76, 74, 74, 0, 0, 0, 0, 52, + 0, 0, 0, 65, 52, 0, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mAsian211.scd b/sound_algo/palette/melodies/short/mAsian211.scd new file mode 100644 index 0000000..67fa2ff --- /dev/null +++ b/sound_algo/palette/melodies/short/mAsian211.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mAsian211 -- short melody (32 steps), genre: asian +// ===================================================================== +( +~mAsian211 = [ + 70, 70, 57, 62, 69, 58, 69, 57, + 0, 58, 74, 58, 55, 69, 58, 75, + 0, 70, 0, 75, 69, 67, 58, 62, + 63, 75, 0, 55, 0, 70, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues100.scd b/sound_algo/palette/melodies/short/mBlues100.scd new file mode 100644 index 0000000..7c69b58 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues100 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues100 = [ + 67, 67, 0, 55, 0, 50, 64, 64, + 64, 0, 0, 45, 45, 0, 0, 67, + 0, 45, 45, 0, 0, 0, 64, 0, + 0, 0, 63, 0, 60, 60, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues101.scd b/sound_algo/palette/melodies/short/mBlues101.scd new file mode 100644 index 0000000..38ef718 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues101 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues101 = [ + 0, 0, 0, 64, 64, 55, 55, 55, + 0, 64, 47, 47, 0, 62, 52, 50, + 50, 0, 52, 52, 0, 46, 46, 59, + 59, 59, 59, 0, 47, 71, 67, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues102.scd b/sound_algo/palette/melodies/short/mBlues102.scd new file mode 100644 index 0000000..1b7dcf6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues102 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues102 = [ + 0, 63, 64, 0, 69, 60, 60, 60, + 0, 57, 57, 57, 0, 69, 69, 60, + 0, 62, 62, 72, 0, 64, 64, 62, + 0, 45, 72, 72, 72, 0, 0, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues103.scd b/sound_algo/palette/melodies/short/mBlues103.scd new file mode 100644 index 0000000..b1d39d0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues103 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues103 = [ + 52, 52, 64, 64, 0, 50, 0, 69, + 64, 55, 55, 63, 64, 67, 52, 52, + 52, 51, 51, 0, 0, 0, 0, 69, + 0, 63, 64, 51, 52, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues104.scd b/sound_algo/palette/melodies/short/mBlues104.scd new file mode 100644 index 0000000..06c34ad --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues104 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues104 = [ + 59, 47, 0, 62, 0, 69, 69, 71, + 71, 55, 0, 0, 71, 0, 58, 58, + 58, 0, 0, 59, 59, 45, 64, 62, + 62, 62, 47, 52, 52, 64, 46, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues105.scd b/sound_algo/palette/melodies/short/mBlues105.scd new file mode 100644 index 0000000..69a91fa --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues105 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues105 = [ + 0, 69, 0, 45, 59, 59, 0, 52, + 52, 0, 45, 71, 57, 47, 0, 59, + 0, 62, 0, 62, 45, 0, 67, 67, + 47, 50, 50, 50, 47, 47, 46, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues106.scd b/sound_algo/palette/melodies/short/mBlues106.scd new file mode 100644 index 0000000..4dc96c6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues106 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues106 = [ + 0, 0, 69, 0, 0, 47, 45, 0, + 45, 0, 50, 0, 71, 67, 67, 45, + 45, 45, 45, 59, 52, 52, 57, 0, + 46, 46, 59, 62, 69, 59, 46, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues107.scd b/sound_algo/palette/melodies/short/mBlues107.scd new file mode 100644 index 0000000..9d1f3e5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues107 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues107 = [ + 59, 59, 0, 62, 0, 0, 0, 69, + 55, 55, 0, 0, 0, 64, 45, 50, + 50, 0, 59, 64, 59, 59, 59, 0, + 0, 57, 0, 0, 0, 46, 46, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues108.scd b/sound_algo/palette/melodies/short/mBlues108.scd new file mode 100644 index 0000000..ea543b2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues108 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues108 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 50, 0, 46, 46, 46, + 0, 59, 59, 0, 47, 47, 0, 0, + 67, 57, 47, 0, 0, 64, 46, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues109.scd b/sound_algo/palette/melodies/short/mBlues109.scd new file mode 100644 index 0000000..5126b13 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues109 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues109 = [ + 0, 57, 69, 0, 52, 57, 72, 72, + 72, 0, 64, 52, 0, 69, 0, 0, + 57, 57, 60, 0, 0, 0, 63, 63, + 45, 60, 0, 62, 0, 69, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues110.scd b/sound_algo/palette/melodies/short/mBlues110.scd new file mode 100644 index 0000000..259a301 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues110 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues110 = [ + 0, 64, 0, 47, 0, 69, 69, 69, + 70, 0, 59, 0, 67, 0, 0, 0, + 64, 0, 45, 0, 0, 59, 0, 0, + 0, 46, 0, 52, 52, 52, 0, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues111.scd b/sound_algo/palette/melodies/short/mBlues111.scd new file mode 100644 index 0000000..5924732 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues111 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues111 = [ + 52, 0, 64, 64, 59, 0, 50, 50, + 0, 0, 0, 67, 69, 0, 67, 62, + 0, 46, 46, 0, 0, 0, 62, 70, + 58, 0, 50, 64, 0, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues112.scd b/sound_algo/palette/melodies/short/mBlues112.scd new file mode 100644 index 0000000..db63268 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues112 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues112 = [ + 0, 0, 71, 71, 71, 0, 47, 58, + 55, 55, 0, 57, 57, 0, 50, 0, + 67, 62, 62, 0, 0, 67, 50, 62, + 62, 50, 50, 0, 64, 55, 58, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues113.scd b/sound_algo/palette/melodies/short/mBlues113.scd new file mode 100644 index 0000000..bd879cb --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues113 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues113 = [ + 63, 63, 0, 52, 0, 0, 62, 0, + 69, 0, 62, 62, 57, 0, 64, 0, + 64, 64, 64, 45, 0, 64, 63, 0, + 0, 52, 45, 45, 50, 0, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues114.scd b/sound_algo/palette/melodies/short/mBlues114.scd new file mode 100644 index 0000000..a414820 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues114 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues114 = [ + 0, 60, 60, 0, 67, 0, 0, 72, + 64, 50, 57, 51, 0, 52, 0, 60, + 69, 0, 51, 51, 48, 48, 50, 50, + 50, 0, 0, 69, 72, 64, 64, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues115.scd b/sound_algo/palette/melodies/short/mBlues115.scd new file mode 100644 index 0000000..14f3506 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues115 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues115 = [ + 52, 52, 69, 67, 67, 0, 70, 62, + 67, 45, 52, 0, 59, 59, 45, 0, + 0, 0, 0, 67, 67, 0, 0, 0, + 0, 0, 45, 45, 52, 0, 67, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues116.scd b/sound_algo/palette/melodies/short/mBlues116.scd new file mode 100644 index 0000000..cb3f8eb --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues116 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues116 = [ + 45, 45, 45, 60, 57, 57, 0, 0, + 0, 0, 45, 55, 55, 55, 62, 0, + 64, 0, 60, 0, 0, 45, 64, 48, + 48, 69, 0, 0, 64, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues117.scd b/sound_algo/palette/melodies/short/mBlues117.scd new file mode 100644 index 0000000..e6e513d --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues117 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues117 = [ + 0, 71, 0, 47, 47, 47, 0, 0, + 0, 0, 0, 71, 59, 59, 57, 57, + 0, 0, 47, 0, 64, 64, 50, 0, + 67, 58, 58, 58, 47, 47, 67, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues118.scd b/sound_algo/palette/melodies/short/mBlues118.scd new file mode 100644 index 0000000..b1d7fb3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues118 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues118 = [ + 0, 60, 0, 60, 67, 0, 63, 48, + 48, 0, 72, 72, 72, 72, 72, 72, + 72, 0, 64, 0, 69, 62, 62, 0, + 0, 55, 55, 72, 60, 48, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues119.scd b/sound_algo/palette/melodies/short/mBlues119.scd new file mode 100644 index 0000000..b1340bc --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues119 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues119 = [ + 63, 69, 69, 69, 0, 0, 48, 0, + 45, 45, 45, 0, 0, 0, 55, 55, + 0, 0, 0, 0, 45, 55, 64, 0, + 0, 67, 67, 51, 0, 72, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues120.scd b/sound_algo/palette/melodies/short/mBlues120.scd new file mode 100644 index 0000000..c9fd1aa --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues120 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues120 = [ + 47, 0, 0, 59, 0, 71, 0, 59, + 58, 0, 0, 70, 69, 64, 64, 50, + 50, 55, 57, 58, 58, 58, 57, 0, + 64, 64, 0, 0, 58, 58, 57, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues121.scd b/sound_algo/palette/melodies/short/mBlues121.scd new file mode 100644 index 0000000..a9bf951 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues121 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues121 = [ + 47, 58, 0, 62, 71, 45, 45, 45, + 47, 64, 0, 69, 59, 0, 58, 58, + 58, 0, 64, 64, 71, 71, 71, 58, + 0, 0, 64, 0, 0, 52, 0, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues122.scd b/sound_algo/palette/melodies/short/mBlues122.scd new file mode 100644 index 0000000..64a7541 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues122 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues122 = [ + 72, 72, 0, 52, 52, 60, 60, 62, + 62, 63, 51, 67, 64, 62, 62, 62, + 62, 0, 57, 57, 57, 0, 0, 0, + 0, 55, 0, 0, 0, 0, 67, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues123.scd b/sound_algo/palette/melodies/short/mBlues123.scd new file mode 100644 index 0000000..bd1cb5f --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues123 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues123 = [ + 57, 59, 59, 59, 59, 59, 59, 59, + 59, 62, 58, 50, 50, 0, 46, 0, + 52, 0, 71, 69, 69, 67, 47, 0, + 52, 0, 62, 0, 67, 67, 0, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues124.scd b/sound_algo/palette/melodies/short/mBlues124.scd new file mode 100644 index 0000000..d0877f2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues124 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues124 = [ + 46, 58, 0, 0, 0, 70, 70, 70, + 0, 50, 50, 0, 0, 0, 0, 0, + 0, 0, 58, 0, 0, 52, 58, 58, + 59, 70, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues125.scd b/sound_algo/palette/melodies/short/mBlues125.scd new file mode 100644 index 0000000..278d601 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues125 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues125 = [ + 0, 58, 46, 46, 46, 0, 67, 0, + 45, 45, 0, 0, 52, 0, 45, 47, + 59, 59, 46, 67, 64, 57, 0, 59, + 64, 64, 64, 50, 0, 64, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues126.scd b/sound_algo/palette/melodies/short/mBlues126.scd new file mode 100644 index 0000000..7f97788 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues126 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues126 = [ + 55, 59, 59, 58, 67, 0, 0, 0, + 52, 69, 58, 69, 69, 0, 0, 47, + 47, 47, 70, 70, 62, 52, 52, 0, + 45, 45, 45, 59, 0, 69, 0, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mBlues127.scd b/sound_algo/palette/melodies/short/mBlues127.scd new file mode 100644 index 0000000..a755c32 --- /dev/null +++ b/sound_algo/palette/melodies/short/mBlues127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mBlues127 -- short melody (32 steps), genre: blues +// ===================================================================== +( +~mBlues127 = [ + 0, 45, 0, 47, 47, 64, 64, 0, + 0, 52, 59, 64, 0, 46, 58, 58, + 0, 0, 71, 57, 64, 64, 0, 0, + 0, 69, 59, 0, 0, 47, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune100.scd b/sound_algo/palette/melodies/short/mChiptune100.scd new file mode 100644 index 0000000..d719838 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune100 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune100 = [ + 93, 76, 86, 66, 62, 96, 0, 74, + 95, 72, 0, 78, 86, 78, 95, 60, + 91, 84, 66, 0, 83, 83, 74, 60, + 71, 74, 78, 76, 0, 60, 86, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune101.scd b/sound_algo/palette/melodies/short/mChiptune101.scd new file mode 100644 index 0000000..5733098 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune101 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune101 = [ + 62, 66, 69, 79, 88, 60, 71, 74, + 78, 79, 91, 91, 0, 93, 86, 93, + 74, 96, 66, 69, 71, 78, 84, 72, + 74, 67, 90, 62, 95, 66, 93, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune102.scd b/sound_algo/palette/melodies/short/mChiptune102.scd new file mode 100644 index 0000000..7194438 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune102 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune102 = [ + 77, 81, 84, 83, 62, 0, 89, 84, + 0, 79, 74, 93, 74, 77, 81, 0, + 83, 64, 64, 79, 0, 60, 72, 77, + 74, 77, 81, 0, 79, 0, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune103.scd b/sound_algo/palette/melodies/short/mChiptune103.scd new file mode 100644 index 0000000..157c23a --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune103 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune103 = [ + 77, 81, 84, 72, 79, 96, 77, 81, + 84, 88, 91, 74, 96, 81, 60, 69, + 81, 74, 65, 69, 72, 95, 62, 67, + 60, 0, 76, 89, 74, 77, 64, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune104.scd b/sound_algo/palette/melodies/short/mChiptune104.scd new file mode 100644 index 0000000..15d6265 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune104 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune104 = [ + 67, 70, 74, 89, 84, 74, 64, 67, + 69, 89, 96, 0, 64, 70, 96, 0, + 72, 62, 64, 67, 69, 91, 81, 70, + 62, 65, 69, 91, 88, 69, 91, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune105.scd b/sound_algo/palette/melodies/short/mChiptune105.scd new file mode 100644 index 0000000..b71ce22 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune105 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune105 = [ + 64, 0, 91, 82, 0, 82, 74, 77, + 81, 81, 96, 70, 65, 69, 72, 84, + 72, 93, 0, 60, 79, 72, 0, 94, + 67, 74, 67, 65, 62, 67, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune106.scd b/sound_algo/palette/melodies/short/mChiptune106.scd new file mode 100644 index 0000000..9a2a068 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune106 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune106 = [ + 0, 76, 91, 86, 0, 74, 65, 84, + 0, 79, 72, 0, 74, 81, 82, 0, + 91, 88, 70, 74, 77, 84, 76, 0, + 96, 94, 69, 67, 82, 84, 76, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune107.scd b/sound_algo/palette/melodies/short/mChiptune107.scd new file mode 100644 index 0000000..8dac859 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune107 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune107 = [ + 79, 76, 0, 0, 0, 0, 65, 69, + 72, 83, 95, 60, 0, 64, 65, 0, + 65, 83, 67, 0, 76, 62, 69, 89, + 64, 67, 71, 0, 71, 0, 89, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune108.scd b/sound_algo/palette/melodies/short/mChiptune108.scd new file mode 100644 index 0000000..bb12fa3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune108 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune108 = [ + 95, 91, 60, 78, 66, 78, 83, 74, + 69, 96, 88, 90, 60, 64, 67, 86, + 86, 84, 71, 74, 78, 78, 74, 71, + 69, 72, 76, 90, 86, 79, 64, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune109.scd b/sound_algo/palette/melodies/short/mChiptune109.scd new file mode 100644 index 0000000..0581d15 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune109 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune109 = [ + 65, 84, 86, 91, 0, 64, 64, 67, + 71, 0, 0, 84, 79, 84, 93, 84, + 0, 86, 71, 74, 76, 81, 0, 0, + 76, 79, 83, 96, 64, 79, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune110.scd b/sound_algo/palette/melodies/short/mChiptune110.scd new file mode 100644 index 0000000..de09d1d --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune110 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune110 = [ + 62, 65, 69, 96, 82, 77, 77, 62, + 84, 0, 67, 65, 79, 96, 88, 60, + 79, 82, 74, 77, 81, 93, 76, 89, + 94, 79, 79, 0, 0, 86, 70, 88 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune111.scd b/sound_algo/palette/melodies/short/mChiptune111.scd new file mode 100644 index 0000000..563e038 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune111 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune111 = [ + 77, 81, 84, 79, 69, 84, 72, 76, + 79, 74, 0, 0, 72, 72, 0, 60, + 84, 70, 67, 70, 74, 60, 72, 77, + 74, 77, 81, 72, 79, 79, 88, 82 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune112.scd b/sound_algo/palette/melodies/short/mChiptune112.scd new file mode 100644 index 0000000..7c5b621 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune112 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune112 = [ + 88, 74, 0, 60, 0, 89, 67, 60, + 67, 0, 0, 96, 64, 91, 81, 0, + 0, 77, 91, 93, 76, 91, 0, 0, + 67, 60, 93, 62, 0, 74, 76, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune113.scd b/sound_algo/palette/melodies/short/mChiptune113.scd new file mode 100644 index 0000000..bbbcde8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune113 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune113 = [ + 64, 77, 81, 91, 91, 84, 72, 76, + 79, 64, 84, 81, 67, 67, 93, 62, + 91, 84, 67, 94, 72, 93, 96, 64, + 72, 65, 0, 62, 0, 67, 96, 96 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune114.scd b/sound_algo/palette/melodies/short/mChiptune114.scd new file mode 100644 index 0000000..77fc862 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune114 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune114 = [ + 60, 64, 67, 65, 64, 96, 67, 71, + 74, 0, 74, 67, 76, 0, 72, 76, + 67, 84, 0, 79, 64, 86, 76, 96, + 60, 71, 0, 0, 96, 84, 72, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune115.scd b/sound_algo/palette/melodies/short/mChiptune115.scd new file mode 100644 index 0000000..e15d36a --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune115 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune115 = [ + 0, 0, 66, 60, 86, 66, 69, 93, + 60, 66, 64, 0, 84, 62, 81, 0, + 62, 72, 72, 76, 79, 88, 90, 86, + 69, 72, 76, 90, 79, 96, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune116.scd b/sound_algo/palette/melodies/short/mChiptune116.scd new file mode 100644 index 0000000..39ab6fd --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune116 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune116 = [ + 84, 91, 86, 65, 0, 93, 65, 69, + 72, 76, 89, 93, 65, 65, 95, 86, + 86, 96, 72, 95, 64, 0, 93, 89, + 65, 69, 72, 84, 71, 96, 88, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune117.scd b/sound_algo/palette/melodies/short/mChiptune117.scd new file mode 100644 index 0000000..dd67f71 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune117 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune117 = [ + 86, 64, 71, 0, 91, 64, 74, 95, + 0, 67, 0, 81, 91, 0, 0, 62, + 0, 65, 67, 93, 86, 88, 95, 0, + 71, 74, 76, 67, 72, 93, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune118.scd b/sound_algo/palette/melodies/short/mChiptune118.scd new file mode 100644 index 0000000..8d70b64 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune118 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune118 = [ + 66, 69, 71, 88, 95, 62, 64, 67, + 71, 78, 0, 69, 62, 64, 76, 67, + 79, 83, 69, 72, 76, 60, 90, 96, + 72, 76, 79, 93, 62, 60, 90, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune119.scd b/sound_algo/palette/melodies/short/mChiptune119.scd new file mode 100644 index 0000000..70d1375 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune119 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune119 = [ + 79, 96, 0, 76, 91, 70, 64, 67, + 69, 72, 94, 0, 0, 81, 89, 79, + 79, 64, 65, 0, 91, 70, 62, 0, + 67, 70, 74, 93, 88, 84, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune120.scd b/sound_algo/palette/melodies/short/mChiptune120.scd new file mode 100644 index 0000000..240064a --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune120 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune120 = [ + 64, 67, 69, 0, 0, 74, 76, 79, + 81, 67, 0, 84, 62, 65, 69, 0, + 60, 69, 74, 77, 81, 0, 0, 94, + 62, 65, 69, 64, 84, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune121.scd b/sound_algo/palette/melodies/short/mChiptune121.scd new file mode 100644 index 0000000..2745a71 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune121 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune121 = [ + 76, 79, 81, 82, 72, 0, 74, 77, + 81, 82, 0, 0, 60, 77, 88, 69, + 79, 91, 91, 94, 0, 60, 0, 65, + 70, 0, 72, 93, 0, 0, 76, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune122.scd b/sound_algo/palette/melodies/short/mChiptune122.scd new file mode 100644 index 0000000..beb438a --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune122 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune122 = [ + 93, 0, 0, 62, 74, 0, 74, 78, + 81, 90, 90, 0, 60, 88, 0, 86, + 60, 69, 74, 78, 81, 81, 72, 84, + 83, 78, 66, 78, 67, 83, 74, 91 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune123.scd b/sound_algo/palette/melodies/short/mChiptune123.scd new file mode 100644 index 0000000..338ddef --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune123 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune123 = [ + 64, 67, 71, 86, 79, 83, 76, 79, + 83, 64, 64, 60, 71, 74, 78, 0, + 91, 0, 62, 66, 69, 72, 81, 78, + 62, 66, 69, 62, 86, 83, 86, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune124.scd b/sound_algo/palette/melodies/short/mChiptune124.scd new file mode 100644 index 0000000..b5f5886 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune124 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune124 = [ + 62, 65, 69, 89, 62, 0, 74, 0, + 69, 69, 91, 86, 64, 67, 69, 88, + 64, 0, 65, 69, 72, 79, 76, 0, + 67, 70, 74, 81, 67, 0, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune125.scd b/sound_algo/palette/melodies/short/mChiptune125.scd new file mode 100644 index 0000000..b88b653 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune125 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune125 = [ + 62, 65, 69, 72, 84, 79, 76, 79, + 81, 89, 88, 62, 69, 72, 76, 86, + 69, 93, 74, 77, 81, 94, 82, 60, + 67, 77, 84, 81, 76, 62, 76, 89 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune126.scd b/sound_algo/palette/melodies/short/mChiptune126.scd new file mode 100644 index 0000000..32f19a6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune126 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune126 = [ + 72, 76, 79, 69, 67, 79, 62, 65, + 69, 77, 89, 77, 74, 77, 81, 89, + 79, 0, 62, 65, 69, 64, 0, 0, + 62, 65, 69, 67, 96, 0, 89, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune127.scd b/sound_algo/palette/melodies/short/mChiptune127.scd new file mode 100644 index 0000000..fd2351b --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune127 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune127 = [ + 69, 74, 93, 91, 60, 88, 0, 0, + 76, 91, 96, 91, 64, 0, 0, 93, + 88, 0, 77, 81, 84, 96, 91, 81, + 65, 62, 86, 79, 0, 0, 71, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune128.scd b/sound_algo/palette/melodies/short/mChiptune128.scd new file mode 100644 index 0000000..5291754 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune128 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune128 = [ + 88, 79, 84, 72, 0, 0, 76, 79, + 83, 0, 71, 95, 78, 81, 83, 62, + 0, 0, 76, 79, 83, 91, 67, 78, + 72, 76, 79, 86, 62, 69, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune129.scd b/sound_algo/palette/melodies/short/mChiptune129.scd new file mode 100644 index 0000000..728e5bc --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune129 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune129 = [ + 67, 66, 76, 84, 91, 66, 69, 72, + 76, 88, 81, 79, 71, 74, 78, 67, + 83, 62, 78, 81, 83, 79, 95, 60, + 62, 66, 69, 78, 95, 78, 69, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune130.scd b/sound_algo/palette/melodies/short/mChiptune130.scd new file mode 100644 index 0000000..a225b85 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune130 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune130 = [ + 67, 70, 74, 76, 76, 62, 70, 79, + 67, 94, 89, 76, 72, 76, 79, 0, + 0, 0, 67, 70, 74, 94, 60, 0, + 60, 77, 70, 94, 93, 76, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune131.scd b/sound_algo/palette/melodies/short/mChiptune131.scd new file mode 100644 index 0000000..6e934c5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune131 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune131 = [ + 0, 60, 0, 0, 84, 0, 0, 0, + 0, 94, 69, 0, 77, 81, 84, 62, + 96, 81, 65, 69, 72, 0, 82, 81, + 76, 0, 96, 0, 94, 79, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune132.scd b/sound_algo/palette/melodies/short/mChiptune132.scd new file mode 100644 index 0000000..6a2d9be --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune132 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune132 = [ + 64, 67, 69, 64, 64, 93, 64, 77, + 84, 60, 88, 62, 91, 89, 88, 0, + 93, 70, 0, 67, 67, 88, 91, 0, + 82, 67, 89, 72, 76, 0, 91, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune133.scd b/sound_algo/palette/melodies/short/mChiptune133.scd new file mode 100644 index 0000000..0bed320 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune133 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune133 = [ + 60, 64, 67, 74, 94, 0, 86, 65, + 76, 79, 67, 0, 74, 77, 81, 69, + 96, 0, 76, 79, 81, 88, 91, 69, + 88, 96, 69, 84, 77, 0, 86, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune134.scd b/sound_algo/palette/melodies/short/mChiptune134.scd new file mode 100644 index 0000000..6d902e9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune134 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune134 = [ + 74, 62, 0, 74, 91, 0, 0, 62, + 65, 84, 0, 89, 62, 65, 69, 60, + 62, 0, 67, 71, 74, 67, 0, 69, + 65, 76, 81, 81, 91, 88, 76, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune135.scd b/sound_algo/palette/melodies/short/mChiptune135.scd new file mode 100644 index 0000000..0770299 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune135 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune135 = [ + 0, 65, 91, 84, 64, 62, 0, 96, + 0, 93, 65, 72, 83, 96, 0, 76, + 0, 69, 95, 91, 0, 71, 0, 0, + 71, 74, 76, 89, 96, 65, 79, 96 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune136.scd b/sound_algo/palette/melodies/short/mChiptune136.scd new file mode 100644 index 0000000..56a7e53 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune136 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune136 = [ + 96, 84, 89, 81, 60, 86, 0, 81, + 0, 0, 69, 94, 77, 69, 91, 60, + 76, 72, 0, 60, 81, 67, 74, 60, + 94, 0, 0, 88, 64, 79, 60, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune137.scd b/sound_algo/palette/melodies/short/mChiptune137.scd new file mode 100644 index 0000000..b134af3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune137 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune137 = [ + 60, 64, 67, 84, 65, 60, 72, 76, + 79, 0, 88, 86, 76, 93, 91, 69, + 0, 96, 67, 71, 74, 0, 0, 60, + 0, 0, 62, 0, 0, 74, 76, 91 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune138.scd b/sound_algo/palette/melodies/short/mChiptune138.scd new file mode 100644 index 0000000..6b5b67b --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune138 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune138 = [ + 64, 67, 69, 0, 0, 93, 74, 77, + 81, 91, 82, 79, 62, 65, 69, 72, + 88, 82, 0, 0, 76, 89, 0, 89, + 65, 69, 72, 72, 84, 70, 65, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune139.scd b/sound_algo/palette/melodies/short/mChiptune139.scd new file mode 100644 index 0000000..d55b8bd --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune139 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune139 = [ + 69, 77, 60, 76, 0, 0, 69, 72, + 76, 79, 0, 89, 71, 60, 88, 0, + 0, 88, 76, 79, 83, 83, 67, 65, + 64, 67, 71, 91, 96, 79, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune140.scd b/sound_algo/palette/melodies/short/mChiptune140.scd new file mode 100644 index 0000000..8dfedb0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune140 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune140 = [ + 0, 64, 60, 77, 67, 91, 76, 79, + 83, 93, 76, 86, 0, 71, 60, 62, + 93, 89, 64, 67, 71, 86, 81, 91, + 64, 67, 71, 62, 0, 83, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChiptune141.scd b/sound_algo/palette/melodies/short/mChiptune141.scd new file mode 100644 index 0000000..20bb78b --- /dev/null +++ b/sound_algo/palette/melodies/short/mChiptune141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChiptune141 -- short melody (32 steps), genre: chiptune +// ===================================================================== +( +~mChiptune141 = [ + 79, 76, 74, 76, 65, 0, 0, 67, + 79, 76, 84, 77, 71, 65, 71, 69, + 62, 76, 67, 96, 74, 89, 83, 67, + 71, 81, 96, 0, 0, 0, 96, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic100.scd b/sound_algo/palette/melodies/short/mChromatic100.scd new file mode 100644 index 0000000..d95dc11 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic100 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic100 = [ + 0, 66, 0, 0, 68, 84, 72, 74, + 0, 0, 70, 0, 84, 75, 64, 49, + 0, 59, 0, 67, 75, 63, 58, 64, + 64, 0, 61, 0, 52, 0, 0, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic101.scd b/sound_algo/palette/melodies/short/mChromatic101.scd new file mode 100644 index 0000000..8e5e87c --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic101 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic101 = [ + 48, 75, 54, 84, 70, 0, 0, 82, + 84, 59, 49, 59, 49, 53, 53, 0, + 81, 50, 68, 54, 48, 82, 0, 0, + 0, 76, 52, 76, 0, 61, 80, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic102.scd b/sound_algo/palette/melodies/short/mChromatic102.scd new file mode 100644 index 0000000..32ba6c3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic102 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic102 = [ + 63, 64, 62, 75, 77, 49, 74, 53, + 75, 0, 63, 64, 83, 70, 78, 57, + 69, 73, 67, 0, 62, 59, 0, 54, + 55, 63, 56, 65, 57, 64, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic103.scd b/sound_algo/palette/melodies/short/mChromatic103.scd new file mode 100644 index 0000000..17bb6d8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic103 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic103 = [ + 79, 61, 67, 75, 75, 55, 55, 50, + 0, 72, 0, 72, 55, 62, 60, 0, + 81, 58, 55, 54, 0, 72, 58, 84, + 60, 77, 53, 71, 64, 49, 54, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic104.scd b/sound_algo/palette/melodies/short/mChromatic104.scd new file mode 100644 index 0000000..06b7cb8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic104 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic104 = [ + 0, 78, 0, 0, 79, 75, 67, 0, + 84, 60, 62, 71, 70, 50, 57, 57, + 0, 69, 51, 66, 62, 64, 76, 0, + 0, 0, 54, 0, 49, 67, 83, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic105.scd b/sound_algo/palette/melodies/short/mChromatic105.scd new file mode 100644 index 0000000..b9c93ff --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic105 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic105 = [ + 60, 53, 0, 0, 84, 59, 74, 59, + 51, 64, 55, 69, 54, 75, 66, 52, + 51, 0, 52, 59, 0, 52, 60, 68, + 70, 49, 61, 80, 73, 74, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic106.scd b/sound_algo/palette/melodies/short/mChromatic106.scd new file mode 100644 index 0000000..2aa6e17 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic106 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic106 = [ + 84, 56, 59, 59, 51, 56, 81, 75, + 51, 74, 59, 84, 84, 79, 74, 68, + 71, 72, 81, 57, 48, 0, 80, 55, + 51, 50, 53, 71, 62, 54, 75, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic107.scd b/sound_algo/palette/melodies/short/mChromatic107.scd new file mode 100644 index 0000000..e89cc02 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic107 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic107 = [ + 60, 81, 0, 59, 53, 69, 0, 64, + 81, 0, 66, 84, 64, 54, 0, 0, + 0, 81, 83, 78, 0, 62, 51, 52, + 0, 50, 80, 79, 83, 74, 60, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic108.scd b/sound_algo/palette/melodies/short/mChromatic108.scd new file mode 100644 index 0000000..48c2abc --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic108 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic108 = [ + 0, 0, 0, 80, 51, 54, 48, 0, + 69, 58, 71, 66, 75, 0, 0, 81, + 48, 0, 80, 0, 0, 70, 67, 0, + 79, 53, 49, 74, 71, 75, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic109.scd b/sound_algo/palette/melodies/short/mChromatic109.scd new file mode 100644 index 0000000..dc1fcd4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic109 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic109 = [ + 66, 81, 51, 68, 60, 52, 69, 55, + 66, 68, 0, 65, 0, 58, 81, 77, + 51, 82, 67, 64, 74, 72, 78, 56, + 76, 50, 70, 68, 64, 61, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic110.scd b/sound_algo/palette/melodies/short/mChromatic110.scd new file mode 100644 index 0000000..0ada9b1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic110 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic110 = [ + 52, 62, 74, 84, 79, 72, 67, 48, + 76, 73, 81, 0, 49, 77, 78, 0, + 49, 0, 69, 0, 78, 63, 56, 49, + 84, 68, 56, 77, 67, 71, 83, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic111.scd b/sound_algo/palette/melodies/short/mChromatic111.scd new file mode 100644 index 0000000..ed09fd7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic111 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic111 = [ + 0, 0, 52, 0, 48, 0, 0, 58, + 79, 0, 61, 73, 60, 49, 0, 0, + 60, 79, 0, 69, 79, 0, 80, 50, + 48, 0, 81, 0, 55, 0, 75, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic112.scd b/sound_algo/palette/melodies/short/mChromatic112.scd new file mode 100644 index 0000000..302d185 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic112 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic112 = [ + 74, 0, 48, 55, 0, 52, 74, 76, + 75, 60, 63, 58, 79, 80, 77, 82, + 0, 0, 81, 48, 0, 75, 58, 66, + 49, 0, 78, 63, 0, 69, 77, 75 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic113.scd b/sound_algo/palette/melodies/short/mChromatic113.scd new file mode 100644 index 0000000..f5dfb9e --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic113 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic113 = [ + 84, 72, 0, 64, 84, 0, 70, 70, + 0, 0, 0, 78, 0, 60, 84, 62, + 82, 54, 64, 0, 64, 81, 0, 52, + 52, 74, 0, 60, 49, 0, 0, 61 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic114.scd b/sound_algo/palette/melodies/short/mChromatic114.scd new file mode 100644 index 0000000..103d01f --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic114 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic114 = [ + 58, 52, 72, 53, 76, 54, 72, 71, + 79, 0, 51, 81, 53, 0, 79, 66, + 73, 69, 54, 67, 80, 64, 50, 67, + 0, 63, 48, 59, 0, 0, 50, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic115.scd b/sound_algo/palette/melodies/short/mChromatic115.scd new file mode 100644 index 0000000..9f1845c --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic115 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic115 = [ + 78, 73, 54, 80, 82, 0, 0, 79, + 0, 82, 64, 82, 0, 57, 50, 79, + 84, 59, 69, 62, 0, 54, 0, 69, + 0, 59, 0, 0, 0, 0, 70, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic116.scd b/sound_algo/palette/melodies/short/mChromatic116.scd new file mode 100644 index 0000000..9105ccb --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic116 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic116 = [ + 48, 82, 0, 74, 48, 0, 59, 79, + 79, 61, 77, 58, 76, 48, 80, 76, + 67, 58, 77, 61, 66, 62, 57, 56, + 56, 70, 75, 81, 69, 0, 81, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic117.scd b/sound_algo/palette/melodies/short/mChromatic117.scd new file mode 100644 index 0000000..52c1ebd --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic117 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic117 = [ + 55, 58, 61, 0, 0, 52, 80, 64, + 72, 0, 52, 0, 0, 61, 76, 50, + 72, 70, 53, 63, 64, 78, 49, 79, + 63, 50, 56, 61, 0, 0, 75, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic118.scd b/sound_algo/palette/melodies/short/mChromatic118.scd new file mode 100644 index 0000000..a12fe13 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic118 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic118 = [ + 0, 53, 66, 0, 48, 83, 0, 0, + 74, 68, 0, 82, 0, 62, 75, 58, + 0, 55, 70, 80, 63, 49, 79, 0, + 55, 56, 0, 53, 81, 54, 69, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic119.scd b/sound_algo/palette/melodies/short/mChromatic119.scd new file mode 100644 index 0000000..7638978 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic119 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic119 = [ + 48, 58, 61, 60, 0, 0, 70, 50, + 0, 79, 0, 81, 67, 63, 48, 0, + 0, 68, 0, 71, 79, 66, 66, 56, + 72, 75, 48, 81, 75, 0, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic120.scd b/sound_algo/palette/melodies/short/mChromatic120.scd new file mode 100644 index 0000000..6cb6117 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic120 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic120 = [ + 0, 69, 68, 68, 52, 65, 0, 0, + 64, 80, 72, 67, 53, 65, 54, 0, + 55, 56, 82, 59, 60, 70, 72, 74, + 55, 65, 70, 68, 55, 69, 0, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic121.scd b/sound_algo/palette/melodies/short/mChromatic121.scd new file mode 100644 index 0000000..87d2bdc --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic121 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic121 = [ + 56, 58, 0, 64, 0, 0, 0, 74, + 80, 57, 81, 0, 71, 0, 76, 67, + 58, 0, 73, 50, 60, 0, 76, 61, + 55, 79, 0, 0, 0, 84, 0, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic122.scd b/sound_algo/palette/melodies/short/mChromatic122.scd new file mode 100644 index 0000000..12e7f43 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic122 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic122 = [ + 76, 69, 70, 52, 48, 0, 71, 58, + 66, 77, 66, 76, 64, 79, 55, 62, + 69, 0, 77, 50, 0, 81, 53, 68, + 0, 60, 55, 0, 0, 67, 67, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic123.scd b/sound_algo/palette/melodies/short/mChromatic123.scd new file mode 100644 index 0000000..fe33b28 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic123 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic123 = [ + 0, 62, 0, 59, 67, 57, 61, 57, + 65, 0, 49, 73, 51, 0, 67, 0, + 52, 48, 0, 56, 83, 74, 49, 0, + 60, 81, 63, 59, 60, 83, 72, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic124.scd b/sound_algo/palette/melodies/short/mChromatic124.scd new file mode 100644 index 0000000..52d7625 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic124 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic124 = [ + 72, 0, 81, 68, 79, 58, 74, 55, + 72, 0, 50, 67, 51, 76, 0, 66, + 64, 0, 83, 50, 63, 51, 48, 68, + 67, 52, 56, 60, 65, 58, 55, 75 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic125.scd b/sound_algo/palette/melodies/short/mChromatic125.scd new file mode 100644 index 0000000..047c777 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic125 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic125 = [ + 60, 52, 78, 49, 51, 79, 80, 59, + 0, 83, 0, 52, 60, 63, 0, 75, + 75, 70, 0, 48, 55, 73, 76, 51, + 0, 72, 75, 72, 57, 0, 0, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic126.scd b/sound_algo/palette/melodies/short/mChromatic126.scd new file mode 100644 index 0000000..329fdf3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic126 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic126 = [ + 52, 60, 79, 73, 51, 56, 75, 77, + 0, 69, 53, 74, 59, 52, 0, 0, + 72, 65, 51, 64, 50, 56, 73, 76, + 52, 53, 51, 62, 67, 53, 83, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mChromatic127.scd b/sound_algo/palette/melodies/short/mChromatic127.scd new file mode 100644 index 0000000..328445c --- /dev/null +++ b/sound_algo/palette/melodies/short/mChromatic127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mChromatic127 -- short melody (32 steps), genre: chromatic +// ===================================================================== +( +~mChromatic127 = [ + 60, 49, 50, 0, 0, 68, 0, 60, + 75, 74, 72, 0, 48, 80, 0, 68, + 72, 64, 0, 0, 67, 75, 48, 63, + 84, 55, 79, 51, 76, 74, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic100.scd b/sound_algo/palette/melodies/short/mCinematic100.scd new file mode 100644 index 0000000..afde578 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic100 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic100 = [ + 0, 49, 43, 40, 60, 48, 0, 0, + 65, 68, 73, 49, 0, 79, 72, 73, + 0, 76, 0, 41, 77, 60, 77, 80, + 80, 77, 67, 79, 52, 46, 0, 37 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic101.scd b/sound_algo/palette/melodies/short/mCinematic101.scd new file mode 100644 index 0000000..29f7879 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic101 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic101 = [ + 44, 58, 76, 43, 53, 36, 60, 68, + 48, 37, 58, 56, 0, 44, 60, 65, + 48, 0, 77, 58, 70, 72, 40, 52, + 56, 0, 65, 61, 68, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic102.scd b/sound_algo/palette/melodies/short/mCinematic102.scd new file mode 100644 index 0000000..34d51b0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic102 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic102 = [ + 70, 61, 0, 0, 0, 46, 0, 0, + 0, 0, 41, 0, 0, 0, 58, 0, + 40, 0, 0, 82, 0, 64, 52, 0, + 0, 0, 0, 48, 67, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic103.scd b/sound_algo/palette/melodies/short/mCinematic103.scd new file mode 100644 index 0000000..eaa6d1d --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic103 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic103 = [ + 74, 63, 0, 62, 39, 0, 0, 36, + 36, 84, 58, 80, 0, 41, 0, 0, + 77, 44, 62, 84, 84, 58, 0, 75, + 63, 67, 55, 39, 68, 0, 68, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic104.scd b/sound_algo/palette/melodies/short/mCinematic104.scd new file mode 100644 index 0000000..ef03759 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic104 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic104 = [ + 0, 79, 49, 39, 51, 0, 36, 56, + 0, 44, 48, 73, 0, 0, 63, 58, + 68, 0, 0, 46, 82, 0, 51, 80, + 0, 46, 60, 0, 75, 55, 0, 39 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic105.scd b/sound_algo/palette/melodies/short/mCinematic105.scd new file mode 100644 index 0000000..7bc9d89 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic105 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic105 = [ + 48, 63, 37, 46, 0, 0, 0, 0, + 77, 77, 43, 73, 65, 0, 0, 0, + 0, 0, 0, 39, 49, 67, 48, 56, + 0, 60, 79, 44, 56, 65, 77, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic106.scd b/sound_algo/palette/melodies/short/mCinematic106.scd new file mode 100644 index 0000000..c544658 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic106 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic106 = [ + 67, 53, 0, 83, 51, 67, 0, 0, + 36, 44, 0, 65, 75, 0, 36, 43, + 0, 0, 0, 41, 59, 0, 62, 84, + 55, 0, 74, 56, 84, 67, 71, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic107.scd b/sound_algo/palette/melodies/short/mCinematic107.scd new file mode 100644 index 0000000..8f4f5a8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic107 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic107 = [ + 36, 41, 0, 56, 0, 82, 80, 0, + 0, 0, 0, 58, 39, 0, 77, 46, + 48, 55, 0, 0, 63, 55, 51, 70, + 0, 38, 56, 43, 67, 0, 0, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic108.scd b/sound_algo/palette/melodies/short/mCinematic108.scd new file mode 100644 index 0000000..e26aa86 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic108 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic108 = [ + 0, 58, 36, 68, 76, 0, 44, 70, + 0, 76, 48, 0, 60, 40, 43, 56, + 73, 46, 0, 70, 41, 46, 0, 49, + 48, 82, 0, 84, 68, 60, 80, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic109.scd b/sound_algo/palette/melodies/short/mCinematic109.scd new file mode 100644 index 0000000..926799d --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic109 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic109 = [ + 0, 75, 55, 43, 82, 70, 44, 53, + 75, 0, 48, 0, 0, 39, 84, 0, + 39, 84, 36, 0, 58, 43, 41, 77, + 39, 36, 80, 44, 79, 43, 41, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic110.scd b/sound_algo/palette/melodies/short/mCinematic110.scd new file mode 100644 index 0000000..41de229 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic110 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic110 = [ + 72, 55, 0, 44, 72, 64, 41, 64, + 60, 64, 37, 58, 77, 0, 0, 44, + 65, 0, 77, 0, 43, 73, 77, 37, + 43, 41, 37, 64, 77, 0, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic111.scd b/sound_algo/palette/melodies/short/mCinematic111.scd new file mode 100644 index 0000000..d6c37a4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic111 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic111 = [ + 41, 0, 0, 72, 55, 67, 53, 0, + 0, 65, 50, 0, 39, 51, 68, 0, + 0, 63, 0, 55, 60, 65, 0, 50, + 0, 83, 51, 0, 84, 51, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic112.scd b/sound_algo/palette/melodies/short/mCinematic112.scd new file mode 100644 index 0000000..e95d938 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic112 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic112 = [ + 60, 53, 82, 0, 0, 0, 65, 70, + 84, 70, 84, 0, 53, 55, 73, 0, + 44, 58, 53, 49, 56, 67, 0, 46, + 46, 79, 73, 37, 0, 46, 0, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic113.scd b/sound_algo/palette/melodies/short/mCinematic113.scd new file mode 100644 index 0000000..3468907 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic113 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic113 = [ + 0, 64, 0, 41, 0, 79, 43, 0, + 0, 55, 56, 0, 79, 53, 48, 0, + 82, 56, 56, 41, 55, 0, 84, 73, + 43, 70, 43, 0, 61, 72, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic114.scd b/sound_algo/palette/melodies/short/mCinematic114.scd new file mode 100644 index 0000000..bcf5a50 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic114 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic114 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 70, 82, 65, 0, 0, 0, 49, + 46, 0, 0, 0, 0, 0, 0, 39, + 70, 65, 0, 67, 0, 44, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic115.scd b/sound_algo/palette/melodies/short/mCinematic115.scd new file mode 100644 index 0000000..41267ec --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic115 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic115 = [ + 67, 0, 0, 0, 39, 0, 0, 53, + 48, 83, 39, 62, 39, 0, 48, 44, + 60, 41, 0, 0, 0, 65, 38, 0, + 0, 50, 43, 65, 56, 51, 65, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic116.scd b/sound_algo/palette/melodies/short/mCinematic116.scd new file mode 100644 index 0000000..0bbb783 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic116 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic116 = [ + 0, 0, 0, 68, 0, 0, 50, 0, + 67, 47, 39, 0, 0, 0, 68, 43, + 83, 60, 0, 0, 0, 68, 0, 0, + 0, 44, 47, 75, 62, 51, 60, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic117.scd b/sound_algo/palette/melodies/short/mCinematic117.scd new file mode 100644 index 0000000..5026fe4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic117 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic117 = [ + 0, 49, 0, 65, 0, 53, 44, 0, + 41, 0, 41, 0, 0, 0, 61, 67, + 70, 0, 37, 0, 72, 76, 60, 84, + 0, 55, 41, 48, 72, 0, 44, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic118.scd b/sound_algo/palette/melodies/short/mCinematic118.scd new file mode 100644 index 0000000..4042721 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic118 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic118 = [ + 0, 0, 39, 0, 62, 0, 70, 68, + 60, 55, 0, 0, 0, 72, 36, 48, + 0, 43, 80, 0, 62, 0, 0, 56, + 60, 56, 63, 63, 72, 0, 82, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic119.scd b/sound_algo/palette/melodies/short/mCinematic119.scd new file mode 100644 index 0000000..ee5fd53 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic119 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic119 = [ + 0, 0, 61, 0, 0, 53, 0, 0, + 46, 48, 72, 40, 41, 48, 72, 77, + 36, 41, 48, 48, 0, 53, 0, 0, + 0, 48, 46, 79, 82, 52, 80, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic120.scd b/sound_algo/palette/melodies/short/mCinematic120.scd new file mode 100644 index 0000000..0b25745 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic120 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic120 = [ + 0, 0, 62, 0, 62, 74, 0, 0, + 80, 0, 0, 0, 36, 47, 0, 0, + 60, 55, 44, 0, 0, 65, 62, 60, + 59, 55, 84, 0, 36, 71, 36, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic121.scd b/sound_algo/palette/melodies/short/mCinematic121.scd new file mode 100644 index 0000000..03d00e0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic121 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic121 = [ + 0, 80, 61, 67, 0, 41, 44, 53, + 0, 0, 77, 0, 56, 0, 0, 44, + 0, 84, 67, 39, 60, 0, 0, 49, + 58, 0, 56, 79, 80, 0, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic122.scd b/sound_algo/palette/melodies/short/mCinematic122.scd new file mode 100644 index 0000000..efce22b --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic122 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic122 = [ + 0, 41, 65, 67, 0, 79, 37, 0, + 0, 0, 0, 56, 0, 0, 76, 0, + 0, 76, 0, 61, 0, 52, 46, 56, + 68, 0, 40, 44, 84, 64, 84, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic123.scd b/sound_algo/palette/melodies/short/mCinematic123.scd new file mode 100644 index 0000000..f6dbb18 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic123 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic123 = [ + 70, 68, 43, 56, 0, 56, 48, 82, + 37, 48, 82, 48, 48, 40, 0, 84, + 0, 41, 53, 44, 80, 0, 67, 55, + 65, 0, 37, 37, 73, 0, 79, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic124.scd b/sound_algo/palette/melodies/short/mCinematic124.scd new file mode 100644 index 0000000..0a416a5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic124 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic124 = [ + 0, 43, 80, 0, 0, 38, 51, 51, + 0, 55, 68, 55, 0, 79, 43, 0, + 0, 56, 62, 74, 0, 63, 77, 0, + 43, 44, 0, 72, 67, 82, 43, 44 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic125.scd b/sound_algo/palette/melodies/short/mCinematic125.scd new file mode 100644 index 0000000..3f35fde --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic125 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic125 = [ + 51, 60, 0, 48, 63, 0, 72, 43, + 0, 0, 74, 41, 77, 38, 0, 0, + 39, 79, 72, 75, 84, 0, 60, 84, + 0, 0, 67, 59, 39, 60, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic126.scd b/sound_algo/palette/melodies/short/mCinematic126.scd new file mode 100644 index 0000000..12682c5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic126 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic126 = [ + 50, 39, 44, 62, 0, 0, 48, 80, + 0, 0, 46, 53, 51, 80, 0, 55, + 55, 38, 79, 44, 72, 55, 36, 50, + 0, 67, 70, 55, 55, 82, 72, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic127.scd b/sound_algo/palette/melodies/short/mCinematic127.scd new file mode 100644 index 0000000..c2d83e2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic127 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic127 = [ + 0, 41, 0, 65, 0, 56, 0, 80, + 36, 0, 0, 0, 84, 0, 0, 0, + 83, 65, 36, 53, 0, 50, 77, 71, + 0, 65, 65, 72, 36, 80, 41, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic128.scd b/sound_algo/palette/melodies/short/mCinematic128.scd new file mode 100644 index 0000000..c20edd7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic128 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic128 = [ + 36, 0, 0, 0, 0, 0, 0, 80, + 0, 56, 41, 84, 44, 0, 73, 63, + 48, 75, 0, 55, 51, 55, 36, 49, + 84, 49, 73, 72, 0, 72, 37, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic129.scd b/sound_algo/palette/melodies/short/mCinematic129.scd new file mode 100644 index 0000000..0d55329 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic129 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic129 = [ + 41, 0, 0, 73, 0, 55, 43, 41, + 0, 77, 61, 0, 60, 0, 44, 0, + 68, 0, 72, 75, 44, 63, 84, 0, + 77, 75, 0, 72, 53, 44, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic130.scd b/sound_algo/palette/melodies/short/mCinematic130.scd new file mode 100644 index 0000000..fcde272 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic130 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic130 = [ + 36, 70, 0, 43, 56, 0, 43, 48, + 73, 0, 0, 48, 0, 51, 0, 0, + 44, 44, 0, 63, 0, 79, 48, 60, + 84, 58, 46, 80, 60, 77, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic131.scd b/sound_algo/palette/melodies/short/mCinematic131.scd new file mode 100644 index 0000000..53bce29 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic131 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic131 = [ + 68, 0, 0, 0, 0, 80, 77, 0, + 46, 79, 80, 0, 36, 67, 36, 49, + 60, 82, 56, 36, 46, 53, 49, 82, + 41, 49, 61, 36, 0, 0, 75, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic132.scd b/sound_algo/palette/melodies/short/mCinematic132.scd new file mode 100644 index 0000000..f898d7c --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic132 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic132 = [ + 0, 0, 61, 0, 48, 0, 52, 53, + 80, 70, 0, 0, 41, 72, 72, 0, + 77, 76, 60, 65, 0, 0, 55, 0, + 53, 55, 58, 76, 84, 68, 67, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic133.scd b/sound_algo/palette/melodies/short/mCinematic133.scd new file mode 100644 index 0000000..797d2b5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic133 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic133 = [ + 51, 0, 62, 39, 0, 84, 0, 0, + 43, 48, 38, 83, 0, 68, 0, 0, + 43, 0, 59, 0, 43, 0, 0, 72, + 53, 77, 47, 48, 51, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic134.scd b/sound_algo/palette/melodies/short/mCinematic134.scd new file mode 100644 index 0000000..25970ec --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic134 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic134 = [ + 0, 79, 63, 0, 0, 0, 80, 79, + 65, 0, 0, 46, 0, 0, 63, 72, + 44, 75, 0, 53, 65, 0, 0, 0, + 0, 39, 0, 82, 48, 53, 72, 39 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic135.scd b/sound_algo/palette/melodies/short/mCinematic135.scd new file mode 100644 index 0000000..56104ef --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic135 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic135 = [ + 84, 0, 0, 60, 0, 0, 0, 60, + 0, 53, 0, 63, 84, 0, 48, 55, + 67, 61, 0, 60, 51, 0, 56, 77, + 44, 56, 39, 56, 41, 0, 75, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic136.scd b/sound_algo/palette/melodies/short/mCinematic136.scd new file mode 100644 index 0000000..869c94b --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic136 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic136 = [ + 72, 0, 82, 0, 0, 55, 61, 0, + 36, 70, 79, 0, 48, 49, 0, 73, + 72, 49, 0, 80, 0, 0, 0, 0, + 51, 0, 67, 0, 77, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic137.scd b/sound_algo/palette/melodies/short/mCinematic137.scd new file mode 100644 index 0000000..df456bc --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic137 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic137 = [ + 0, 56, 62, 0, 60, 0, 0, 0, + 0, 0, 0, 74, 48, 72, 77, 0, + 72, 63, 0, 0, 79, 72, 79, 51, + 79, 41, 0, 0, 50, 39, 68, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic138.scd b/sound_algo/palette/melodies/short/mCinematic138.scd new file mode 100644 index 0000000..b8f61a7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic138 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic138 = [ + 0, 0, 0, 70, 0, 60, 0, 55, + 65, 79, 0, 46, 72, 82, 63, 75, + 48, 41, 60, 58, 65, 79, 0, 0, + 0, 75, 43, 0, 0, 0, 46, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic139.scd b/sound_algo/palette/melodies/short/mCinematic139.scd new file mode 100644 index 0000000..1328b29 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic139 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic139 = [ + 74, 0, 43, 71, 79, 0, 41, 0, + 0, 0, 48, 84, 0, 38, 47, 56, + 0, 39, 65, 0, 80, 84, 68, 55, + 63, 83, 50, 56, 0, 80, 36, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic140.scd b/sound_algo/palette/melodies/short/mCinematic140.scd new file mode 100644 index 0000000..427dd8d --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic140 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic140 = [ + 79, 0, 0, 77, 0, 39, 0, 0, + 36, 65, 70, 84, 56, 58, 0, 58, + 80, 84, 48, 60, 79, 56, 41, 63, + 39, 60, 79, 0, 68, 74, 55, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic141.scd b/sound_algo/palette/melodies/short/mCinematic141.scd new file mode 100644 index 0000000..8436491 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic141 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic141 = [ + 43, 0, 0, 55, 55, 0, 0, 80, + 0, 75, 63, 39, 0, 67, 65, 56, + 67, 82, 67, 36, 0, 67, 44, 46, + 67, 38, 84, 53, 51, 43, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic142.scd b/sound_algo/palette/melodies/short/mCinematic142.scd new file mode 100644 index 0000000..daf56c5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic142 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic142 = [ + 43, 0, 0, 56, 36, 0, 0, 0, + 56, 53, 0, 79, 48, 56, 72, 0, + 60, 0, 0, 37, 0, 65, 58, 84, + 53, 44, 60, 0, 0, 73, 61, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic143.scd b/sound_algo/palette/melodies/short/mCinematic143.scd new file mode 100644 index 0000000..bf97991 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic143 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic143 = [ + 36, 39, 46, 41, 68, 77, 43, 58, + 44, 0, 0, 75, 0, 0, 82, 41, + 80, 48, 68, 82, 77, 37, 0, 0, + 84, 58, 37, 61, 84, 0, 0, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic144.scd b/sound_algo/palette/melodies/short/mCinematic144.scd new file mode 100644 index 0000000..4843066 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic144 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic144 = [ + 0, 0, 0, 0, 60, 38, 0, 65, + 0, 0, 44, 51, 58, 0, 79, 62, + 56, 80, 60, 80, 65, 84, 0, 75, + 0, 63, 79, 0, 84, 70, 62, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic145.scd b/sound_algo/palette/melodies/short/mCinematic145.scd new file mode 100644 index 0000000..48f07a7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic145 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic145 = [ + 84, 41, 0, 0, 0, 41, 60, 0, + 51, 51, 77, 0, 38, 68, 0, 0, + 0, 41, 50, 0, 0, 82, 70, 51, + 0, 41, 84, 70, 0, 56, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic146.scd b/sound_algo/palette/melodies/short/mCinematic146.scd new file mode 100644 index 0000000..88221d0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic146 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic146 = [ + 0, 51, 46, 84, 60, 39, 55, 62, + 39, 46, 0, 56, 0, 55, 38, 55, + 60, 62, 79, 75, 77, 0, 0, 0, + 63, 67, 43, 41, 80, 0, 79, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic147.scd b/sound_algo/palette/melodies/short/mCinematic147.scd new file mode 100644 index 0000000..9487f4b --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic147 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic147 = [ + 0, 0, 67, 53, 48, 36, 79, 37, + 41, 0, 72, 68, 68, 49, 77, 41, + 73, 40, 44, 0, 0, 61, 82, 48, + 0, 70, 46, 60, 58, 65, 72, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic148.scd b/sound_algo/palette/melodies/short/mCinematic148.scd new file mode 100644 index 0000000..41a70e7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic148 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic148 = [ + 46, 0, 0, 79, 84, 0, 0, 0, + 0, 0, 0, 0, 0, 44, 77, 72, + 63, 0, 62, 0, 0, 60, 0, 48, + 77, 0, 62, 36, 39, 68, 62, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic149.scd b/sound_algo/palette/melodies/short/mCinematic149.scd new file mode 100644 index 0000000..007e67a --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic149 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic149 = [ + 72, 65, 62, 36, 0, 60, 58, 41, + 0, 53, 0, 44, 0, 60, 0, 0, + 80, 51, 77, 51, 72, 36, 62, 62, + 48, 43, 38, 62, 0, 65, 43, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic150.scd b/sound_algo/palette/melodies/short/mCinematic150.scd new file mode 100644 index 0000000..00114c6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic150 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic150 = [ + 0, 72, 49, 73, 55, 55, 0, 0, + 77, 0, 70, 37, 0, 61, 0, 53, + 37, 0, 52, 65, 0, 0, 0, 72, + 68, 72, 73, 56, 70, 46, 56, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic151.scd b/sound_algo/palette/melodies/short/mCinematic151.scd new file mode 100644 index 0000000..dff5023 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic151 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic151 = [ + 72, 0, 55, 52, 0, 46, 0, 0, + 82, 0, 73, 44, 44, 0, 79, 60, + 67, 53, 0, 49, 0, 0, 0, 0, + 72, 55, 44, 48, 0, 76, 67, 44 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic152.scd b/sound_algo/palette/melodies/short/mCinematic152.scd new file mode 100644 index 0000000..8be70eb --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic152 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic152 = [ + 0, 0, 79, 70, 0, 60, 0, 70, + 51, 0, 38, 0, 67, 82, 0, 82, + 0, 55, 74, 0, 43, 60, 0, 41, + 67, 84, 51, 67, 84, 41, 48, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic153.scd b/sound_algo/palette/melodies/short/mCinematic153.scd new file mode 100644 index 0000000..9efe713 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic153 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic153 = [ + 0, 46, 0, 0, 51, 65, 0, 0, + 36, 0, 67, 68, 82, 53, 0, 65, + 43, 77, 55, 51, 55, 0, 80, 65, + 79, 74, 41, 75, 74, 39, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic154.scd b/sound_algo/palette/melodies/short/mCinematic154.scd new file mode 100644 index 0000000..6c26de5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic154 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic154 = [ + 75, 0, 65, 39, 43, 0, 0, 80, + 39, 0, 0, 77, 55, 79, 0, 0, + 0, 50, 0, 0, 0, 84, 43, 0, + 79, 79, 70, 82, 82, 55, 72, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mCinematic155.scd b/sound_algo/palette/melodies/short/mCinematic155.scd new file mode 100644 index 0000000..c8af4db --- /dev/null +++ b/sound_algo/palette/melodies/short/mCinematic155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mCinematic155 -- short melody (32 steps), genre: cinematic +// ===================================================================== +( +~mCinematic155 = [ + 56, 60, 0, 68, 75, 79, 84, 68, + 0, 84, 0, 75, 43, 0, 0, 75, + 39, 0, 48, 63, 63, 83, 60, 38, + 50, 84, 75, 0, 44, 48, 59, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark100.scd b/sound_algo/palette/melodies/short/mDark100.scd new file mode 100644 index 0000000..69d16d7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark100 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark100 = [ + 58, 58, 0, 0, 43, 0, 57, 45, + 0, 0, 55, 0, 38, 0, 0, 0, + 58, 36, 38, 0, 46, 60, 46, 0, + 36, 39, 51, 54, 55, 45, 38, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark101.scd b/sound_algo/palette/melodies/short/mDark101.scd new file mode 100644 index 0000000..b00da29 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark101 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark101 = [ + 0, 0, 52, 48, 0, 0, 0, 40, + 59, 0, 0, 0, 47, 0, 0, 60, + 55, 0, 60, 0, 0, 0, 0, 0, + 0, 0, 45, 59, 55, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark102.scd b/sound_algo/palette/melodies/short/mDark102.scd new file mode 100644 index 0000000..7f5a703 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark102 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark102 = [ + 0, 0, 55, 0, 46, 46, 55, 0, + 58, 53, 0, 49, 0, 44, 0, 58, + 46, 0, 44, 44, 55, 43, 44, 0, + 0, 49, 41, 43, 56, 39, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark103.scd b/sound_algo/palette/melodies/short/mDark103.scd new file mode 100644 index 0000000..53ae097 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark103 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark103 = [ + 52, 40, 43, 0, 40, 40, 0, 0, + 0, 53, 55, 0, 0, 43, 0, 58, + 0, 53, 0, 48, 52, 50, 40, 0, + 43, 0, 40, 41, 0, 48, 0, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark104.scd b/sound_algo/palette/melodies/short/mDark104.scd new file mode 100644 index 0000000..c1d366e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark104 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark104 = [ + 48, 0, 0, 36, 38, 51, 0, 36, + 0, 43, 0, 48, 0, 55, 51, 54, + 0, 48, 42, 38, 43, 36, 57, 50, + 0, 0, 46, 0, 0, 50, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark105.scd b/sound_algo/palette/melodies/short/mDark105.scd new file mode 100644 index 0000000..e4b8133 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark105 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark105 = [ + 58, 58, 53, 0, 48, 43, 52, 57, + 40, 41, 0, 52, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 0, 41, 55, + 0, 41, 46, 53, 43, 60, 43, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark106.scd b/sound_algo/palette/melodies/short/mDark106.scd new file mode 100644 index 0000000..8cadfa5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark106 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark106 = [ + 50, 55, 0, 48, 0, 0, 0, 45, + 0, 0, 36, 0, 39, 58, 0, 0, + 0, 0, 0, 0, 50, 39, 0, 36, + 0, 55, 42, 43, 42, 39, 51, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark107.scd b/sound_algo/palette/melodies/short/mDark107.scd new file mode 100644 index 0000000..b4e5970 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark107 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark107 = [ + 43, 45, 40, 60, 0, 53, 0, 0, + 53, 0, 0, 38, 36, 57, 57, 50, + 0, 50, 50, 0, 52, 36, 36, 50, + 0, 38, 0, 60, 55, 41, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark108.scd b/sound_algo/palette/melodies/short/mDark108.scd new file mode 100644 index 0000000..2e6c5e3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark108 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark108 = [ + 0, 57, 0, 48, 0, 0, 0, 0, + 40, 0, 40, 52, 0, 55, 0, 0, + 0, 0, 43, 0, 40, 0, 0, 0, + 55, 0, 48, 0, 0, 0, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark109.scd b/sound_algo/palette/melodies/short/mDark109.scd new file mode 100644 index 0000000..3589500 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark109 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark109 = [ + 0, 60, 0, 37, 58, 56, 37, 37, + 55, 56, 0, 60, 55, 0, 0, 44, + 39, 0, 56, 0, 43, 0, 51, 49, + 0, 0, 56, 43, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark110.scd b/sound_algo/palette/melodies/short/mDark110.scd new file mode 100644 index 0000000..bedb438 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark110 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark110 = [ + 48, 0, 40, 60, 52, 0, 38, 52, + 0, 0, 57, 48, 55, 0, 36, 45, + 0, 45, 36, 0, 58, 57, 55, 53, + 0, 0, 50, 57, 0, 60, 50, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark111.scd b/sound_algo/palette/melodies/short/mDark111.scd new file mode 100644 index 0000000..57087c0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark111 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark111 = [ + 52, 52, 55, 46, 43, 0, 0, 45, + 43, 0, 60, 0, 0, 45, 46, 0, + 0, 0, 60, 0, 0, 53, 0, 0, + 0, 0, 58, 48, 0, 50, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark112.scd b/sound_algo/palette/melodies/short/mDark112.scd new file mode 100644 index 0000000..f0b287b --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark112 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark112 = [ + 0, 0, 0, 0, 0, 48, 57, 0, + 0, 53, 60, 0, 0, 45, 36, 46, + 52, 0, 55, 0, 43, 50, 40, 58, + 52, 0, 41, 0, 55, 0, 0, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark113.scd b/sound_algo/palette/melodies/short/mDark113.scd new file mode 100644 index 0000000..aaafd15 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark113 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark113 = [ + 60, 48, 0, 38, 38, 0, 0, 39, + 55, 51, 50, 39, 0, 45, 0, 0, + 0, 42, 0, 50, 58, 60, 39, 60, + 46, 51, 0, 0, 0, 48, 45, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark114.scd b/sound_algo/palette/melodies/short/mDark114.scd new file mode 100644 index 0000000..5c518b8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark114 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark114 = [ + 40, 0, 0, 0, 55, 39, 45, 0, + 0, 0, 0, 0, 52, 42, 36, 47, + 0, 0, 43, 0, 59, 0, 0, 45, + 0, 0, 59, 40, 47, 0, 43, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark115.scd b/sound_algo/palette/melodies/short/mDark115.scd new file mode 100644 index 0000000..6cd0290 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark115 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark115 = [ + 43, 46, 55, 0, 0, 0, 39, 60, + 46, 0, 41, 0, 58, 36, 0, 0, + 0, 0, 56, 0, 0, 0, 51, 43, + 0, 0, 0, 39, 0, 37, 36, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark116.scd b/sound_algo/palette/melodies/short/mDark116.scd new file mode 100644 index 0000000..e8dd8bc --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark116 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark116 = [ + 43, 42, 0, 0, 43, 0, 45, 42, + 43, 57, 0, 51, 55, 60, 48, 57, + 59, 43, 60, 0, 57, 0, 0, 43, + 39, 0, 0, 0, 59, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark117.scd b/sound_algo/palette/melodies/short/mDark117.scd new file mode 100644 index 0000000..84f0d64 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark117 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark117 = [ + 0, 52, 45, 0, 0, 55, 48, 57, + 0, 0, 0, 0, 45, 0, 0, 0, + 40, 0, 0, 0, 0, 52, 0, 52, + 0, 42, 52, 47, 0, 52, 54, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark118.scd b/sound_algo/palette/melodies/short/mDark118.scd new file mode 100644 index 0000000..956ec42 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark118 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark118 = [ + 0, 43, 41, 0, 0, 57, 58, 48, + 52, 57, 48, 36, 0, 48, 38, 36, + 0, 38, 58, 36, 0, 0, 50, 45, + 38, 50, 40, 0, 40, 53, 57, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark119.scd b/sound_algo/palette/melodies/short/mDark119.scd new file mode 100644 index 0000000..42c0045 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark119 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark119 = [ + 49, 36, 43, 53, 46, 0, 0, 60, + 55, 0, 0, 36, 43, 0, 0, 0, + 0, 51, 36, 0, 55, 53, 41, 46, + 55, 0, 43, 51, 0, 0, 0, 37 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark120.scd b/sound_algo/palette/melodies/short/mDark120.scd new file mode 100644 index 0000000..15c624d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark120 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark120 = [ + 46, 56, 36, 0, 49, 0, 49, 43, + 53, 0, 0, 37, 0, 43, 43, 41, + 55, 55, 36, 55, 0, 49, 43, 55, + 55, 53, 43, 0, 51, 41, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark121.scd b/sound_algo/palette/melodies/short/mDark121.scd new file mode 100644 index 0000000..6d0459a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark121 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark121 = [ + 40, 55, 60, 54, 43, 40, 0, 36, + 0, 42, 0, 0, 40, 0, 40, 60, + 48, 47, 0, 60, 0, 0, 59, 36, + 0, 52, 0, 36, 48, 45, 42, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark122.scd b/sound_algo/palette/melodies/short/mDark122.scd new file mode 100644 index 0000000..6fe8c33 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark122 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark122 = [ + 47, 43, 40, 52, 40, 0, 0, 0, + 0, 0, 57, 0, 43, 0, 51, 0, + 43, 0, 42, 0, 0, 55, 39, 0, + 55, 0, 54, 51, 0, 59, 0, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark123.scd b/sound_algo/palette/melodies/short/mDark123.scd new file mode 100644 index 0000000..7bb3532 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark123 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark123 = [ + 55, 0, 47, 0, 42, 60, 0, 54, + 0, 54, 59, 0, 47, 0, 47, 0, + 0, 0, 55, 0, 40, 47, 45, 40, + 0, 59, 0, 43, 0, 51, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark124.scd b/sound_algo/palette/melodies/short/mDark124.scd new file mode 100644 index 0000000..32007b4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark124 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark124 = [ + 55, 0, 40, 0, 40, 0, 0, 59, + 0, 0, 54, 0, 59, 0, 42, 59, + 40, 52, 45, 43, 55, 40, 47, 48, + 0, 43, 0, 0, 48, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark125.scd b/sound_algo/palette/melodies/short/mDark125.scd new file mode 100644 index 0000000..9f5ebbb --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark125 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark125 = [ + 0, 0, 48, 0, 58, 55, 38, 0, + 0, 0, 0, 55, 50, 0, 58, 0, + 50, 45, 0, 0, 46, 50, 0, 0, + 60, 0, 0, 42, 51, 43, 60, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark126.scd b/sound_algo/palette/melodies/short/mDark126.scd new file mode 100644 index 0000000..88a25f9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark126 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark126 = [ + 43, 0, 0, 40, 0, 36, 39, 0, + 51, 45, 0, 0, 47, 52, 60, 0, + 0, 42, 60, 0, 55, 40, 45, 43, + 55, 0, 0, 0, 0, 59, 51, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark127.scd b/sound_algo/palette/melodies/short/mDark127.scd new file mode 100644 index 0000000..a8cfba4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark127 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark127 = [ + 55, 50, 52, 0, 40, 46, 38, 50, + 0, 53, 38, 0, 0, 45, 58, 0, + 43, 60, 45, 43, 40, 55, 52, 0, + 0, 0, 40, 0, 0, 0, 40, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark128.scd b/sound_algo/palette/melodies/short/mDark128.scd new file mode 100644 index 0000000..480d2c0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark128 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark128 = [ + 52, 0, 57, 36, 40, 0, 55, 0, + 0, 48, 0, 0, 0, 0, 36, 52, + 40, 40, 50, 0, 43, 57, 50, 52, + 60, 0, 48, 48, 43, 48, 58, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark129.scd b/sound_algo/palette/melodies/short/mDark129.scd new file mode 100644 index 0000000..857cbac --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark129 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark129 = [ + 43, 52, 51, 54, 52, 40, 43, 51, + 0, 40, 39, 0, 0, 0, 54, 43, + 0, 47, 0, 0, 40, 39, 54, 51, + 0, 0, 43, 40, 0, 0, 43, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark130.scd b/sound_algo/palette/melodies/short/mDark130.scd new file mode 100644 index 0000000..cc5a110 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark130 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark130 = [ + 0, 48, 42, 0, 0, 0, 51, 0, + 0, 52, 0, 43, 43, 0, 0, 55, + 0, 0, 36, 0, 0, 0, 51, 0, + 0, 47, 0, 0, 0, 0, 0, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark131.scd b/sound_algo/palette/melodies/short/mDark131.scd new file mode 100644 index 0000000..fa984a1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark131 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark131 = [ + 60, 36, 58, 60, 40, 0, 45, 40, + 0, 0, 0, 0, 0, 58, 58, 0, + 40, 40, 60, 58, 43, 0, 0, 55, + 43, 43, 0, 60, 43, 0, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark132.scd b/sound_algo/palette/melodies/short/mDark132.scd new file mode 100644 index 0000000..d81dd80 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark132 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark132 = [ + 0, 42, 46, 0, 0, 55, 0, 51, + 0, 48, 0, 0, 55, 0, 0, 42, + 60, 50, 55, 54, 38, 0, 0, 48, + 38, 0, 46, 51, 54, 0, 54, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark133.scd b/sound_algo/palette/melodies/short/mDark133.scd new file mode 100644 index 0000000..4feb380 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark133 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark133 = [ + 0, 51, 0, 54, 0, 0, 42, 51, + 36, 57, 0, 46, 50, 0, 0, 60, + 0, 57, 0, 0, 43, 0, 43, 42, + 50, 38, 51, 60, 58, 42, 38, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark134.scd b/sound_algo/palette/melodies/short/mDark134.scd new file mode 100644 index 0000000..5ab8af7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark134 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark134 = [ + 45, 0, 0, 0, 43, 0, 0, 57, + 0, 0, 53, 45, 0, 60, 43, 0, + 48, 50, 46, 46, 52, 38, 0, 0, + 52, 55, 40, 58, 55, 40, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark135.scd b/sound_algo/palette/melodies/short/mDark135.scd new file mode 100644 index 0000000..3974942 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark135 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark135 = [ + 55, 0, 0, 39, 0, 48, 0, 0, + 0, 0, 53, 0, 46, 48, 44, 0, + 0, 39, 0, 44, 55, 51, 37, 53, + 48, 55, 0, 0, 55, 48, 51, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark136.scd b/sound_algo/palette/melodies/short/mDark136.scd new file mode 100644 index 0000000..018977b --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark136 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark136 = [ + 43, 41, 0, 57, 60, 40, 0, 0, + 52, 36, 0, 0, 43, 50, 0, 60, + 52, 53, 0, 0, 40, 43, 0, 36, + 58, 40, 0, 0, 36, 0, 0, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark137.scd b/sound_algo/palette/melodies/short/mDark137.scd new file mode 100644 index 0000000..0b83b00 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark137 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark137 = [ + 0, 38, 60, 50, 0, 57, 40, 0, + 40, 0, 0, 46, 55, 50, 50, 53, + 52, 58, 36, 57, 43, 58, 0, 0, + 0, 40, 0, 55, 0, 0, 53, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark138.scd b/sound_algo/palette/melodies/short/mDark138.scd new file mode 100644 index 0000000..1e50599 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark138 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark138 = [ + 55, 39, 0, 56, 58, 0, 41, 51, + 0, 0, 0, 58, 43, 0, 0, 49, + 55, 37, 39, 51, 46, 37, 0, 46, + 43, 41, 49, 51, 46, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark139.scd b/sound_algo/palette/melodies/short/mDark139.scd new file mode 100644 index 0000000..1222913 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark139 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark139 = [ + 43, 0, 0, 58, 58, 48, 37, 51, + 0, 0, 41, 0, 0, 60, 46, 0, + 43, 44, 60, 44, 60, 51, 49, 0, + 0, 0, 36, 46, 49, 49, 48, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark140.scd b/sound_algo/palette/melodies/short/mDark140.scd new file mode 100644 index 0000000..75064ef --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark140 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark140 = [ + 0, 0, 0, 55, 55, 0, 48, 50, + 46, 48, 0, 45, 42, 57, 58, 60, + 57, 51, 51, 60, 0, 55, 57, 0, + 0, 0, 60, 58, 0, 51, 50, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark141.scd b/sound_algo/palette/melodies/short/mDark141.scd new file mode 100644 index 0000000..49ba3a6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark141 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark141 = [ + 0, 40, 43, 57, 52, 0, 0, 38, + 0, 60, 50, 0, 43, 0, 0, 55, + 55, 52, 0, 52, 0, 48, 0, 41, + 57, 40, 58, 0, 0, 0, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark142.scd b/sound_algo/palette/melodies/short/mDark142.scd new file mode 100644 index 0000000..3cad001 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark142 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark142 = [ + 0, 46, 41, 58, 55, 0, 36, 0, + 41, 41, 0, 39, 55, 0, 55, 43, + 58, 55, 55, 46, 0, 60, 0, 0, + 55, 60, 58, 44, 48, 43, 48, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark143.scd b/sound_algo/palette/melodies/short/mDark143.scd new file mode 100644 index 0000000..941969d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark143 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark143 = [ + 52, 0, 43, 0, 38, 0, 57, 36, + 55, 0, 60, 41, 43, 38, 0, 52, + 48, 48, 50, 48, 0, 46, 36, 0, + 0, 41, 0, 38, 0, 0, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark144.scd b/sound_algo/palette/melodies/short/mDark144.scd new file mode 100644 index 0000000..10b6317 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark144 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark144 = [ + 0, 45, 0, 0, 0, 52, 60, 0, + 52, 42, 0, 54, 0, 48, 55, 52, + 0, 0, 45, 0, 40, 0, 47, 48, + 47, 0, 0, 0, 43, 55, 45, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark145.scd b/sound_algo/palette/melodies/short/mDark145.scd new file mode 100644 index 0000000..fb2927e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark145 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark145 = [ + 52, 52, 0, 38, 0, 52, 0, 43, + 52, 0, 41, 0, 52, 46, 0, 43, + 55, 55, 60, 60, 0, 0, 50, 0, + 55, 0, 0, 52, 48, 0, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark146.scd b/sound_algo/palette/melodies/short/mDark146.scd new file mode 100644 index 0000000..de4ed80 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark146 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark146 = [ + 43, 0, 0, 55, 58, 0, 0, 60, + 46, 0, 37, 39, 39, 58, 0, 0, + 0, 36, 0, 0, 0, 37, 0, 43, + 0, 0, 56, 36, 46, 39, 58, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark147.scd b/sound_algo/palette/melodies/short/mDark147.scd new file mode 100644 index 0000000..dd3a0a9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark147 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark147 = [ + 58, 54, 50, 42, 0, 48, 39, 0, + 46, 0, 43, 0, 58, 60, 0, 0, + 0, 36, 0, 0, 0, 0, 36, 0, + 0, 0, 60, 57, 46, 50, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark148.scd b/sound_algo/palette/melodies/short/mDark148.scd new file mode 100644 index 0000000..122bee7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark148 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark148 = [ + 0, 53, 39, 0, 49, 0, 43, 49, + 58, 48, 0, 0, 43, 39, 43, 49, + 43, 58, 41, 0, 0, 0, 49, 0, + 36, 56, 0, 48, 46, 0, 60, 37 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark149.scd b/sound_algo/palette/melodies/short/mDark149.scd new file mode 100644 index 0000000..5b8cc88 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark149 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark149 = [ + 55, 48, 0, 0, 0, 57, 0, 39, + 58, 0, 0, 55, 0, 0, 0, 0, + 55, 48, 38, 45, 43, 58, 43, 57, + 42, 0, 55, 36, 0, 48, 51, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark150.scd b/sound_algo/palette/melodies/short/mDark150.scd new file mode 100644 index 0000000..3f58b3c --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark150 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark150 = [ + 0, 0, 36, 55, 0, 51, 0, 0, + 57, 55, 42, 45, 58, 54, 36, 0, + 45, 54, 42, 51, 46, 50, 50, 54, + 45, 46, 42, 55, 0, 0, 0, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark151.scd b/sound_algo/palette/melodies/short/mDark151.scd new file mode 100644 index 0000000..d87e61e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark151 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark151 = [ + 59, 0, 0, 0, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 54, 59, 60, + 47, 0, 0, 47, 0, 0, 0, 0, + 54, 39, 0, 60, 0, 55, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark152.scd b/sound_algo/palette/melodies/short/mDark152.scd new file mode 100644 index 0000000..0ddb425 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark152 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark152 = [ + 52, 60, 0, 38, 0, 58, 0, 57, + 43, 0, 55, 45, 40, 0, 0, 0, + 52, 0, 0, 0, 52, 58, 0, 43, + 40, 0, 0, 38, 0, 53, 52, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark153.scd b/sound_algo/palette/melodies/short/mDark153.scd new file mode 100644 index 0000000..5e0faab --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark153 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark153 = [ + 55, 45, 60, 59, 59, 60, 39, 0, + 54, 0, 0, 52, 40, 42, 54, 0, + 43, 0, 45, 42, 0, 0, 0, 43, + 0, 60, 0, 40, 40, 52, 0, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark154.scd b/sound_algo/palette/melodies/short/mDark154.scd new file mode 100644 index 0000000..085d229 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark154 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark154 = [ + 0, 59, 0, 0, 0, 0, 0, 0, + 39, 59, 57, 0, 47, 36, 0, 42, + 0, 0, 45, 42, 0, 57, 59, 43, + 40, 54, 0, 47, 40, 0, 42, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark155.scd b/sound_algo/palette/melodies/short/mDark155.scd new file mode 100644 index 0000000..23dc501 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark155 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark155 = [ + 60, 48, 0, 0, 43, 0, 39, 0, + 0, 51, 46, 46, 58, 46, 50, 46, + 46, 0, 42, 0, 0, 0, 0, 60, + 54, 0, 48, 0, 0, 48, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark156.scd b/sound_algo/palette/melodies/short/mDark156.scd new file mode 100644 index 0000000..99000d0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark156 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark156 = [ + 55, 0, 0, 0, 52, 0, 0, 38, + 52, 43, 0, 53, 52, 38, 41, 0, + 0, 0, 58, 0, 40, 36, 52, 48, + 40, 55, 0, 43, 0, 45, 43, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark157.scd b/sound_algo/palette/melodies/short/mDark157.scd new file mode 100644 index 0000000..42bce85 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark157 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark157 = [ + 0, 51, 48, 0, 0, 0, 60, 0, + 50, 36, 0, 45, 0, 43, 45, 55, + 0, 45, 57, 0, 58, 0, 0, 42, + 43, 0, 0, 0, 0, 0, 45, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark158.scd b/sound_algo/palette/melodies/short/mDark158.scd new file mode 100644 index 0000000..f5329f1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark158 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark158 = [ + 43, 37, 0, 37, 43, 0, 0, 0, + 58, 55, 51, 0, 55, 37, 39, 39, + 0, 49, 43, 46, 0, 37, 0, 55, + 0, 58, 0, 0, 46, 56, 51, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark159.scd b/sound_algo/palette/melodies/short/mDark159.scd new file mode 100644 index 0000000..5487f82 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark159 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark159 = [ + 36, 0, 41, 49, 55, 53, 0, 0, + 43, 56, 0, 0, 0, 0, 0, 39, + 0, 53, 55, 48, 58, 0, 0, 46, + 58, 43, 51, 0, 39, 53, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark160.scd b/sound_algo/palette/melodies/short/mDark160.scd new file mode 100644 index 0000000..a1e7ca0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark160 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark160 = [ + 46, 38, 0, 0, 0, 0, 0, 0, + 55, 0, 0, 54, 45, 43, 0, 0, + 50, 39, 48, 54, 50, 0, 42, 42, + 46, 0, 58, 0, 60, 55, 39, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark161.scd b/sound_algo/palette/melodies/short/mDark161.scd new file mode 100644 index 0000000..308eadc --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark161 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark161 = [ + 0, 53, 0, 43, 0, 43, 0, 0, + 58, 37, 53, 0, 0, 58, 55, 0, + 0, 53, 48, 49, 0, 46, 43, 43, + 55, 43, 0, 49, 43, 0, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark162.scd b/sound_algo/palette/melodies/short/mDark162.scd new file mode 100644 index 0000000..aa2eecb --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark162 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark162 = [ + 0, 58, 0, 52, 0, 46, 45, 43, + 41, 43, 58, 55, 40, 0, 52, 46, + 48, 40, 40, 57, 0, 55, 0, 0, + 0, 43, 40, 53, 43, 0, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark163.scd b/sound_algo/palette/melodies/short/mDark163.scd new file mode 100644 index 0000000..d72bcf9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark163 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark163 = [ + 0, 0, 48, 45, 0, 57, 58, 43, + 60, 48, 57, 36, 0, 0, 48, 55, + 0, 45, 51, 57, 50, 0, 0, 0, + 0, 46, 0, 0, 58, 36, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark164.scd b/sound_algo/palette/melodies/short/mDark164.scd new file mode 100644 index 0000000..a070c83 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark164 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark164 = [ + 48, 0, 58, 56, 60, 0, 48, 56, + 0, 39, 0, 0, 0, 0, 0, 44, + 60, 39, 53, 58, 0, 51, 0, 43, + 51, 0, 55, 0, 58, 51, 56, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark165.scd b/sound_algo/palette/melodies/short/mDark165.scd new file mode 100644 index 0000000..eed3b68 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark165 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark165 = [ + 48, 0, 57, 0, 0, 52, 0, 0, + 0, 55, 0, 36, 0, 52, 0, 52, + 55, 51, 40, 0, 0, 0, 0, 0, + 0, 0, 51, 52, 59, 45, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark166.scd b/sound_algo/palette/melodies/short/mDark166.scd new file mode 100644 index 0000000..6b551c7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark166 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark166 = [ + 0, 0, 46, 48, 0, 49, 58, 0, + 41, 0, 39, 0, 43, 55, 0, 60, + 46, 51, 48, 0, 51, 0, 56, 51, + 49, 46, 48, 44, 0, 46, 56, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark167.scd b/sound_algo/palette/melodies/short/mDark167.scd new file mode 100644 index 0000000..600329d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark167 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark167 = [ + 0, 48, 39, 0, 59, 36, 51, 39, + 0, 54, 43, 48, 55, 43, 51, 42, + 55, 39, 51, 45, 39, 54, 42, 59, + 0, 0, 0, 52, 0, 42, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark168.scd b/sound_algo/palette/melodies/short/mDark168.scd new file mode 100644 index 0000000..c4d042e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark168 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark168 = [ + 0, 0, 60, 0, 57, 55, 38, 36, + 52, 38, 0, 58, 0, 0, 0, 0, + 43, 0, 0, 0, 36, 0, 48, 0, + 38, 52, 52, 41, 0, 52, 46, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark169.scd b/sound_algo/palette/melodies/short/mDark169.scd new file mode 100644 index 0000000..79190d4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark169 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark169 = [ + 55, 0, 0, 0, 55, 55, 0, 0, + 37, 53, 0, 51, 0, 41, 0, 0, + 0, 0, 53, 44, 55, 0, 41, 55, + 0, 0, 39, 0, 58, 0, 58, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark170.scd b/sound_algo/palette/melodies/short/mDark170.scd new file mode 100644 index 0000000..44c9f95 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark170 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark170 = [ + 57, 38, 42, 55, 43, 51, 60, 0, + 43, 36, 0, 48, 0, 0, 0, 0, + 43, 0, 38, 51, 0, 0, 43, 0, + 58, 0, 0, 46, 0, 0, 50, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark171.scd b/sound_algo/palette/melodies/short/mDark171.scd new file mode 100644 index 0000000..5cc8f5c --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark171 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark171 = [ + 38, 58, 0, 38, 50, 50, 0, 0, + 0, 42, 0, 55, 0, 54, 43, 0, + 58, 0, 58, 0, 46, 0, 0, 0, + 43, 0, 54, 39, 51, 43, 38, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark172.scd b/sound_algo/palette/melodies/short/mDark172.scd new file mode 100644 index 0000000..9bc82d3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark172 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark172 = [ + 0, 0, 45, 0, 0, 45, 0, 60, + 46, 58, 38, 57, 0, 0, 58, 0, + 0, 38, 38, 0, 46, 0, 0, 46, + 50, 0, 45, 0, 54, 48, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark173.scd b/sound_algo/palette/melodies/short/mDark173.scd new file mode 100644 index 0000000..b0aaa11 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark173 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark173 = [ + 0, 56, 60, 0, 0, 55, 0, 0, + 46, 43, 0, 43, 0, 60, 0, 53, + 43, 53, 0, 48, 41, 0, 36, 0, + 46, 49, 0, 55, 44, 60, 56, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark174.scd b/sound_algo/palette/melodies/short/mDark174.scd new file mode 100644 index 0000000..88ca849 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark174 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark174 = [ + 41, 40, 45, 55, 0, 0, 58, 52, + 40, 41, 0, 50, 0, 0, 36, 36, + 43, 40, 0, 0, 55, 40, 0, 0, + 0, 41, 36, 0, 0, 36, 52, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark175.scd b/sound_algo/palette/melodies/short/mDark175.scd new file mode 100644 index 0000000..101707c --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark175 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark175 = [ + 45, 60, 54, 48, 40, 0, 0, 57, + 43, 52, 0, 60, 55, 59, 43, 57, + 0, 55, 0, 0, 40, 0, 54, 55, + 52, 57, 0, 47, 0, 57, 0, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark176.scd b/sound_algo/palette/melodies/short/mDark176.scd new file mode 100644 index 0000000..63df175 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark176 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark176 = [ + 0, 59, 0, 59, 55, 55, 0, 0, + 47, 40, 0, 42, 55, 0, 0, 42, + 0, 0, 39, 51, 59, 43, 55, 0, + 55, 0, 43, 42, 0, 39, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark177.scd b/sound_algo/palette/melodies/short/mDark177.scd new file mode 100644 index 0000000..d296eaf --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark177 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark177 = [ + 0, 39, 0, 51, 37, 0, 0, 53, + 0, 0, 0, 53, 55, 48, 41, 0, + 0, 48, 0, 0, 0, 0, 37, 0, + 0, 0, 39, 0, 55, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark178.scd b/sound_algo/palette/melodies/short/mDark178.scd new file mode 100644 index 0000000..1bc2142 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark178 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark178 = [ + 46, 40, 41, 52, 57, 0, 40, 38, + 43, 43, 0, 0, 0, 45, 0, 50, + 45, 0, 0, 52, 40, 50, 0, 36, + 52, 0, 45, 60, 43, 50, 38, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark179.scd b/sound_algo/palette/melodies/short/mDark179.scd new file mode 100644 index 0000000..917ce45 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark179 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark179 = [ + 40, 0, 60, 0, 43, 55, 41, 36, + 45, 50, 52, 46, 45, 43, 48, 60, + 43, 60, 53, 0, 52, 43, 58, 55, + 0, 58, 58, 0, 43, 52, 57, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark180.scd b/sound_algo/palette/melodies/short/mDark180.scd new file mode 100644 index 0000000..7eab763 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark180 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark180 = [ + 59, 0, 0, 0, 0, 0, 0, 51, + 0, 47, 51, 52, 47, 55, 59, 0, + 0, 48, 0, 0, 55, 0, 0, 36, + 0, 0, 0, 0, 54, 52, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark181.scd b/sound_algo/palette/melodies/short/mDark181.scd new file mode 100644 index 0000000..9fc9dc6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark181 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark181 = [ + 52, 48, 45, 57, 42, 0, 51, 54, + 40, 55, 47, 0, 0, 59, 0, 57, + 52, 45, 39, 45, 47, 45, 0, 42, + 55, 55, 0, 0, 54, 42, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark182.scd b/sound_algo/palette/melodies/short/mDark182.scd new file mode 100644 index 0000000..d3edbbd --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark182 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark182 = [ + 52, 0, 40, 40, 0, 45, 0, 55, + 47, 43, 0, 0, 45, 0, 36, 0, + 54, 52, 47, 57, 43, 42, 54, 51, + 43, 45, 0, 59, 0, 0, 55, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark183.scd b/sound_algo/palette/melodies/short/mDark183.scd new file mode 100644 index 0000000..2472eec --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark183 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark183 = [ + 0, 0, 0, 52, 43, 0, 0, 59, + 55, 0, 0, 0, 0, 0, 0, 0, + 54, 42, 40, 51, 55, 39, 0, 60, + 0, 0, 45, 0, 0, 0, 39, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark184.scd b/sound_algo/palette/melodies/short/mDark184.scd new file mode 100644 index 0000000..9f47cc4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark184.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark184 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark184 = [ + 0, 58, 0, 36, 0, 0, 0, 0, + 0, 39, 0, 0, 0, 0, 43, 0, + 0, 0, 0, 0, 0, 0, 55, 58, + 0, 0, 0, 0, 0, 60, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark185.scd b/sound_algo/palette/melodies/short/mDark185.scd new file mode 100644 index 0000000..75f16c1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark185.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark185 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark185 = [ + 48, 51, 38, 38, 50, 60, 0, 38, + 48, 39, 55, 36, 50, 0, 48, 58, + 0, 58, 39, 0, 46, 46, 57, 0, + 0, 0, 0, 46, 46, 0, 0, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark186.scd b/sound_algo/palette/melodies/short/mDark186.scd new file mode 100644 index 0000000..80cee33 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark186.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark186 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark186 = [ + 0, 42, 0, 51, 51, 0, 0, 54, + 0, 55, 45, 42, 0, 38, 55, 45, + 46, 0, 58, 0, 50, 0, 36, 0, + 0, 0, 54, 55, 51, 60, 0, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark187.scd b/sound_algo/palette/melodies/short/mDark187.scd new file mode 100644 index 0000000..1049119 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark187.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark187 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark187 = [ + 46, 0, 0, 60, 43, 0, 0, 45, + 43, 43, 0, 58, 43, 0, 0, 0, + 43, 53, 52, 43, 40, 0, 58, 0, + 0, 46, 0, 52, 0, 60, 52, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark188.scd b/sound_algo/palette/melodies/short/mDark188.scd new file mode 100644 index 0000000..21f5355 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark188.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark188 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark188 = [ + 0, 0, 38, 51, 43, 0, 45, 0, + 0, 0, 0, 42, 0, 0, 50, 0, + 38, 42, 0, 0, 0, 0, 50, 50, + 43, 55, 0, 55, 55, 50, 0, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark189.scd b/sound_algo/palette/melodies/short/mDark189.scd new file mode 100644 index 0000000..05fa745 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark189.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark189 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark189 = [ + 0, 45, 0, 0, 43, 0, 51, 0, + 0, 36, 47, 0, 40, 51, 47, 60, + 52, 0, 52, 36, 0, 0, 0, 0, + 43, 54, 0, 0, 48, 0, 0, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark190.scd b/sound_algo/palette/melodies/short/mDark190.scd new file mode 100644 index 0000000..6bd3aa2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark190.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark190 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark190 = [ + 0, 0, 57, 57, 0, 54, 42, 42, + 48, 0, 57, 60, 54, 58, 50, 57, + 42, 0, 57, 46, 50, 0, 0, 36, + 0, 38, 54, 0, 0, 48, 38, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark191.scd b/sound_algo/palette/melodies/short/mDark191.scd new file mode 100644 index 0000000..936e56a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark191.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark191 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark191 = [ + 58, 60, 46, 45, 40, 0, 0, 43, + 45, 36, 0, 40, 43, 0, 55, 0, + 0, 55, 48, 48, 0, 38, 36, 43, + 43, 0, 0, 58, 40, 60, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark192.scd b/sound_algo/palette/melodies/short/mDark192.scd new file mode 100644 index 0000000..d788991 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark192.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark192 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark192 = [ + 39, 48, 54, 39, 0, 0, 0, 0, + 0, 0, 0, 46, 55, 58, 58, 43, + 0, 0, 58, 58, 43, 39, 50, 0, + 0, 0, 0, 39, 38, 55, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark193.scd b/sound_algo/palette/melodies/short/mDark193.scd new file mode 100644 index 0000000..ed35459 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark193.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark193 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark193 = [ + 60, 39, 58, 43, 58, 43, 0, 0, + 38, 36, 50, 45, 55, 0, 0, 54, + 0, 39, 51, 58, 38, 0, 36, 45, + 43, 0, 0, 36, 58, 54, 42, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark194.scd b/sound_algo/palette/melodies/short/mDark194.scd new file mode 100644 index 0000000..da1dbd9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark194.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark194 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark194 = [ + 40, 50, 0, 40, 43, 45, 55, 0, + 0, 50, 0, 46, 55, 55, 0, 0, + 52, 36, 46, 45, 52, 57, 0, 0, + 52, 48, 36, 57, 50, 52, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark195.scd b/sound_algo/palette/melodies/short/mDark195.scd new file mode 100644 index 0000000..de546be --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark195.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark195 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark195 = [ + 47, 42, 45, 0, 0, 54, 0, 55, + 43, 42, 36, 42, 39, 0, 0, 47, + 47, 55, 43, 0, 0, 59, 39, 43, + 45, 60, 60, 42, 0, 47, 54, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark196.scd b/sound_algo/palette/melodies/short/mDark196.scd new file mode 100644 index 0000000..da6bcaa --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark196.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark196 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark196 = [ + 52, 0, 0, 48, 0, 0, 0, 41, + 43, 0, 0, 55, 0, 0, 50, 0, + 55, 0, 0, 46, 40, 50, 58, 58, + 0, 0, 43, 45, 58, 0, 57, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mDark197.scd b/sound_algo/palette/melodies/short/mDark197.scd new file mode 100644 index 0000000..4ab9495 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDark197.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDark197 -- short melody (32 steps), genre: dark +// ===================================================================== +( +~mDark197 = [ + 39, 55, 0, 41, 0, 0, 58, 0, + 0, 55, 0, 43, 43, 51, 41, 48, + 60, 41, 51, 37, 0, 55, 37, 0, + 0, 49, 0, 39, 0, 58, 39, 39 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit100.scd b/sound_algo/palette/melodies/short/mDetroit100.scd new file mode 100644 index 0000000..4651eb1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit100 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit100 = [ + 0, 0, 58, 0, 68, 48, 50, 0, + 70, 0, 48, 0, 60, 68, 65, 62, + 0, 53, 0, 62, 0, 53, 70, 55, + 0, 55, 0, 60, 48, 70, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit101.scd b/sound_algo/palette/melodies/short/mDetroit101.scd new file mode 100644 index 0000000..02c350c --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit101 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit101 = [ + 50, 67, 67, 70, 55, 0, 65, 57, + 0, 48, 51, 0, 57, 70, 0, 58, + 50, 0, 70, 0, 63, 58, 53, 63, + 0, 53, 58, 48, 0, 63, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit102.scd b/sound_algo/palette/melodies/short/mDetroit102.scd new file mode 100644 index 0000000..00c0355 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit102 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit102 = [ + 0, 51, 51, 0, 48, 72, 48, 53, + 51, 0, 0, 0, 72, 0, 70, 67, + 48, 0, 62, 60, 60, 0, 60, 0, + 68, 70, 0, 56, 56, 0, 60, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit103.scd b/sound_algo/palette/melodies/short/mDetroit103.scd new file mode 100644 index 0000000..325d4fb --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit103 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit103 = [ + 55, 0, 57, 57, 60, 0, 0, 0, + 63, 48, 0, 58, 0, 0, 0, 0, + 60, 69, 70, 0, 63, 0, 0, 0, + 0, 51, 0, 67, 55, 72, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit104.scd b/sound_algo/palette/melodies/short/mDetroit104.scd new file mode 100644 index 0000000..b33a7c7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit104 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit104 = [ + 72, 70, 62, 48, 65, 60, 0, 68, + 0, 72, 56, 51, 50, 62, 70, 63, + 0, 63, 48, 48, 0, 0, 0, 55, + 68, 0, 55, 0, 0, 58, 65, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit105.scd b/sound_algo/palette/melodies/short/mDetroit105.scd new file mode 100644 index 0000000..d008bee --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit105 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit105 = [ + 56, 0, 0, 0, 68, 0, 50, 0, + 0, 0, 65, 56, 56, 0, 0, 0, + 68, 0, 55, 0, 56, 63, 0, 0, + 53, 0, 62, 0, 0, 68, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit106.scd b/sound_algo/palette/melodies/short/mDetroit106.scd new file mode 100644 index 0000000..f0c1cd9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit106 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit106 = [ + 56, 0, 68, 0, 72, 0, 50, 56, + 0, 0, 68, 65, 0, 53, 62, 48, + 0, 0, 0, 0, 0, 62, 72, 62, + 48, 0, 56, 0, 50, 70, 48, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit107.scd b/sound_algo/palette/melodies/short/mDetroit107.scd new file mode 100644 index 0000000..a107763 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit107 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit107 = [ + 53, 0, 0, 60, 48, 0, 0, 65, + 67, 0, 62, 62, 60, 69, 0, 0, + 55, 0, 0, 0, 67, 55, 69, 55, + 72, 55, 0, 65, 69, 60, 58, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit108.scd b/sound_algo/palette/melodies/short/mDetroit108.scd new file mode 100644 index 0000000..ccd6258 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit108 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit108 = [ + 72, 63, 55, 60, 0, 55, 63, 68, + 53, 56, 58, 65, 48, 0, 68, 0, + 0, 0, 0, 0, 58, 65, 0, 72, + 51, 0, 68, 65, 0, 72, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit109.scd b/sound_algo/palette/melodies/short/mDetroit109.scd new file mode 100644 index 0000000..ae82fde --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit109 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit109 = [ + 53, 62, 0, 58, 0, 62, 72, 72, + 0, 0, 53, 55, 0, 58, 0, 0, + 65, 70, 0, 0, 62, 65, 72, 50, + 0, 58, 0, 58, 65, 58, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit110.scd b/sound_algo/palette/melodies/short/mDetroit110.scd new file mode 100644 index 0000000..b7f6e3a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit110 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit110 = [ + 0, 72, 55, 48, 68, 60, 67, 56, + 48, 0, 62, 65, 56, 0, 56, 0, + 0, 50, 0, 0, 0, 0, 0, 72, + 68, 0, 60, 0, 0, 55, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit111.scd b/sound_algo/palette/melodies/short/mDetroit111.scd new file mode 100644 index 0000000..36b58ff --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit111 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit111 = [ + 0, 0, 0, 70, 51, 50, 0, 72, + 0, 0, 0, 0, 0, 63, 70, 48, + 0, 63, 50, 0, 62, 0, 70, 60, + 67, 53, 50, 69, 51, 62, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit112.scd b/sound_algo/palette/melodies/short/mDetroit112.scd new file mode 100644 index 0000000..074d3c0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit112 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit112 = [ + 0, 70, 55, 63, 72, 58, 57, 48, + 48, 0, 0, 48, 60, 57, 60, 0, + 0, 0, 72, 48, 50, 72, 0, 0, + 0, 0, 0, 0, 57, 50, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit113.scd b/sound_algo/palette/melodies/short/mDetroit113.scd new file mode 100644 index 0000000..f014176 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit113 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit113 = [ + 53, 0, 0, 69, 69, 0, 65, 0, + 63, 0, 0, 0, 48, 0, 53, 50, + 0, 51, 58, 0, 55, 65, 50, 51, + 0, 70, 0, 0, 63, 57, 63, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit114.scd b/sound_algo/palette/melodies/short/mDetroit114.scd new file mode 100644 index 0000000..80f14b5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit114 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit114 = [ + 72, 56, 68, 55, 48, 70, 55, 68, + 0, 72, 65, 0, 72, 0, 48, 51, + 63, 72, 0, 0, 0, 0, 63, 0, + 70, 58, 60, 60, 48, 67, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit115.scd b/sound_algo/palette/melodies/short/mDetroit115.scd new file mode 100644 index 0000000..190b8da --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit115 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit115 = [ + 55, 0, 0, 69, 53, 65, 63, 72, + 48, 67, 0, 0, 67, 0, 70, 51, + 0, 53, 0, 48, 0, 0, 0, 0, + 51, 0, 72, 58, 51, 63, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit116.scd b/sound_algo/palette/melodies/short/mDetroit116.scd new file mode 100644 index 0000000..57cac96 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit116 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit116 = [ + 0, 62, 70, 0, 0, 63, 0, 0, + 67, 55, 0, 62, 48, 0, 0, 58, + 0, 57, 0, 0, 0, 60, 0, 0, + 0, 65, 51, 0, 50, 57, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit117.scd b/sound_algo/palette/melodies/short/mDetroit117.scd new file mode 100644 index 0000000..7e9dfc0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit117 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit117 = [ + 0, 65, 63, 67, 0, 0, 0, 0, + 72, 0, 53, 53, 0, 0, 67, 0, + 0, 0, 0, 0, 56, 60, 0, 0, + 0, 60, 62, 51, 0, 60, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit118.scd b/sound_algo/palette/melodies/short/mDetroit118.scd new file mode 100644 index 0000000..37b27c9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit118 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit118 = [ + 63, 0, 0, 0, 0, 62, 58, 0, + 0, 0, 51, 0, 0, 0, 58, 0, + 51, 60, 50, 63, 53, 0, 50, 62, + 56, 0, 62, 0, 0, 53, 70, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit119.scd b/sound_algo/palette/melodies/short/mDetroit119.scd new file mode 100644 index 0000000..297c8f9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit119 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit119 = [ + 0, 0, 0, 62, 51, 70, 0, 67, + 63, 0, 0, 53, 62, 72, 0, 0, + 0, 67, 0, 70, 0, 0, 60, 0, + 72, 0, 53, 51, 0, 65, 57, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit120.scd b/sound_algo/palette/melodies/short/mDetroit120.scd new file mode 100644 index 0000000..fe67a97 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit120 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit120 = [ + 63, 60, 63, 48, 0, 63, 0, 65, + 63, 53, 58, 72, 0, 48, 0, 57, + 55, 72, 72, 69, 50, 51, 0, 0, + 51, 70, 50, 0, 69, 62, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit121.scd b/sound_algo/palette/melodies/short/mDetroit121.scd new file mode 100644 index 0000000..1f5d427 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit121 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit121 = [ + 0, 0, 57, 57, 63, 0, 50, 60, + 60, 48, 70, 0, 72, 58, 70, 0, + 0, 51, 51, 0, 0, 55, 0, 67, + 63, 60, 0, 60, 55, 72, 69, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit122.scd b/sound_algo/palette/melodies/short/mDetroit122.scd new file mode 100644 index 0000000..dfcef00 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit122 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit122 = [ + 0, 48, 0, 63, 48, 68, 58, 51, + 67, 51, 51, 65, 48, 48, 0, 55, + 0, 67, 0, 50, 58, 67, 0, 56, + 0, 72, 72, 68, 0, 60, 0, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit123.scd b/sound_algo/palette/melodies/short/mDetroit123.scd new file mode 100644 index 0000000..644a67c --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit123 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit123 = [ + 0, 68, 51, 70, 68, 55, 63, 0, + 48, 68, 70, 56, 0, 63, 63, 70, + 48, 0, 0, 0, 48, 63, 0, 0, + 0, 62, 62, 56, 0, 67, 60, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit124.scd b/sound_algo/palette/melodies/short/mDetroit124.scd new file mode 100644 index 0000000..95ab8d1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit124 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit124 = [ + 63, 0, 0, 55, 0, 72, 0, 51, + 0, 48, 0, 48, 53, 58, 0, 51, + 0, 51, 72, 0, 67, 0, 0, 58, + 51, 0, 51, 72, 0, 0, 53, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit125.scd b/sound_algo/palette/melodies/short/mDetroit125.scd new file mode 100644 index 0000000..0619709 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit125 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit125 = [ + 63, 0, 65, 0, 0, 0, 67, 0, + 60, 62, 0, 0, 50, 65, 69, 67, + 51, 0, 0, 50, 69, 0, 0, 72, + 69, 0, 51, 55, 0, 69, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit126.scd b/sound_algo/palette/melodies/short/mDetroit126.scd new file mode 100644 index 0000000..dae03c8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit126 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit126 = [ + 0, 0, 0, 0, 67, 62, 0, 0, + 63, 58, 0, 0, 0, 0, 65, 48, + 72, 51, 0, 72, 0, 0, 62, 0, + 72, 58, 0, 65, 51, 60, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit127.scd b/sound_algo/palette/melodies/short/mDetroit127.scd new file mode 100644 index 0000000..aabf3df --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit127 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit127 = [ + 62, 0, 0, 65, 72, 68, 58, 67, + 0, 50, 72, 56, 0, 63, 0, 55, + 0, 51, 56, 56, 70, 48, 0, 0, + 60, 67, 72, 0, 0, 63, 55, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit128.scd b/sound_algo/palette/melodies/short/mDetroit128.scd new file mode 100644 index 0000000..9f6b9ff --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit128 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit128 = [ + 0, 0, 70, 48, 60, 0, 0, 55, + 60, 0, 0, 48, 0, 70, 0, 70, + 48, 72, 0, 63, 0, 0, 70, 60, + 0, 0, 51, 0, 60, 0, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit129.scd b/sound_algo/palette/melodies/short/mDetroit129.scd new file mode 100644 index 0000000..2df3c3d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit129 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit129 = [ + 53, 50, 0, 0, 53, 58, 0, 63, + 0, 0, 53, 0, 0, 48, 58, 56, + 0, 0, 0, 62, 56, 50, 51, 0, + 0, 65, 0, 0, 0, 0, 50, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit130.scd b/sound_algo/palette/melodies/short/mDetroit130.scd new file mode 100644 index 0000000..213565c --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit130 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit130 = [ + 53, 0, 0, 67, 48, 56, 48, 0, + 48, 55, 50, 56, 63, 48, 0, 0, + 0, 0, 53, 0, 67, 65, 58, 0, + 72, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit131.scd b/sound_algo/palette/melodies/short/mDetroit131.scd new file mode 100644 index 0000000..cea7364 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit131 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit131 = [ + 48, 60, 50, 53, 0, 63, 60, 0, + 0, 62, 48, 50, 68, 72, 70, 67, + 0, 0, 50, 72, 0, 63, 0, 0, + 0, 65, 0, 72, 56, 0, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit132.scd b/sound_algo/palette/melodies/short/mDetroit132.scd new file mode 100644 index 0000000..c5b8972 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit132 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit132 = [ + 0, 72, 55, 68, 48, 0, 48, 0, + 60, 0, 48, 0, 0, 56, 62, 0, + 56, 65, 56, 0, 0, 72, 0, 68, + 0, 63, 0, 67, 0, 0, 68, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit133.scd b/sound_algo/palette/melodies/short/mDetroit133.scd new file mode 100644 index 0000000..bea6d10 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit133 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit133 = [ + 0, 0, 48, 51, 55, 69, 60, 0, + 51, 50, 57, 62, 55, 72, 67, 0, + 48, 55, 0, 58, 72, 0, 67, 62, + 72, 50, 60, 0, 60, 0, 65, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit134.scd b/sound_algo/palette/melodies/short/mDetroit134.scd new file mode 100644 index 0000000..baa7314 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit134 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit134 = [ + 60, 0, 0, 0, 63, 0, 0, 0, + 0, 69, 0, 50, 0, 63, 0, 63, + 0, 70, 0, 48, 48, 0, 0, 62, + 53, 50, 0, 0, 0, 0, 69, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit135.scd b/sound_algo/palette/melodies/short/mDetroit135.scd new file mode 100644 index 0000000..bbf22cd --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit135 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit135 = [ + 56, 68, 53, 0, 68, 0, 70, 0, + 0, 58, 50, 0, 48, 0, 65, 63, + 0, 0, 48, 60, 65, 48, 0, 51, + 55, 65, 0, 0, 53, 0, 53, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit136.scd b/sound_algo/palette/melodies/short/mDetroit136.scd new file mode 100644 index 0000000..6138fdf --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit136 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit136 = [ + 50, 0, 69, 67, 51, 67, 55, 0, + 72, 0, 0, 51, 67, 48, 55, 0, + 55, 0, 53, 57, 70, 48, 0, 0, + 0, 72, 62, 57, 57, 60, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit137.scd b/sound_algo/palette/melodies/short/mDetroit137.scd new file mode 100644 index 0000000..e4ad0cf --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit137 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit137 = [ + 0, 0, 0, 55, 0, 60, 55, 0, + 72, 0, 58, 48, 65, 62, 0, 62, + 65, 68, 53, 63, 62, 65, 0, 0, + 51, 72, 0, 51, 0, 56, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit138.scd b/sound_algo/palette/melodies/short/mDetroit138.scd new file mode 100644 index 0000000..b66e0e8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit138 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit138 = [ + 63, 0, 0, 65, 0, 60, 58, 0, + 69, 60, 50, 0, 0, 57, 70, 65, + 0, 0, 65, 62, 0, 55, 0, 63, + 53, 69, 0, 55, 57, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit139.scd b/sound_algo/palette/melodies/short/mDetroit139.scd new file mode 100644 index 0000000..e956bcb --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit139 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit139 = [ + 0, 0, 67, 50, 65, 0, 51, 50, + 53, 0, 48, 63, 0, 65, 0, 50, + 55, 0, 0, 48, 56, 50, 62, 62, + 48, 51, 0, 0, 48, 65, 65, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit140.scd b/sound_algo/palette/melodies/short/mDetroit140.scd new file mode 100644 index 0000000..a469bf2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit140 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit140 = [ + 0, 60, 0, 63, 53, 0, 65, 0, + 51, 0, 53, 0, 0, 50, 0, 48, + 60, 51, 53, 0, 0, 0, 0, 72, + 69, 0, 70, 57, 0, 50, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit141.scd b/sound_algo/palette/melodies/short/mDetroit141.scd new file mode 100644 index 0000000..8c330e1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit141 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit141 = [ + 63, 0, 63, 53, 72, 51, 0, 0, + 0, 50, 0, 48, 0, 0, 0, 72, + 0, 70, 0, 51, 48, 60, 48, 65, + 69, 63, 0, 0, 67, 0, 69, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit142.scd b/sound_algo/palette/melodies/short/mDetroit142.scd new file mode 100644 index 0000000..2c4b9f9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit142 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit142 = [ + 0, 0, 0, 60, 0, 57, 63, 51, + 62, 48, 0, 0, 0, 50, 48, 69, + 0, 53, 0, 62, 67, 67, 0, 65, + 48, 63, 0, 48, 60, 53, 63, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit143.scd b/sound_algo/palette/melodies/short/mDetroit143.scd new file mode 100644 index 0000000..408a508 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit143 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit143 = [ + 63, 0, 67, 55, 0, 0, 0, 65, + 67, 58, 60, 0, 55, 0, 63, 0, + 72, 0, 0, 55, 0, 72, 0, 0, + 0, 0, 0, 0, 0, 0, 57, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit144.scd b/sound_algo/palette/melodies/short/mDetroit144.scd new file mode 100644 index 0000000..75a8efc --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit144 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit144 = [ + 0, 0, 51, 0, 60, 0, 0, 63, + 0, 60, 51, 53, 0, 67, 65, 0, + 0, 72, 53, 0, 60, 48, 63, 57, + 60, 69, 0, 0, 0, 0, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit145.scd b/sound_algo/palette/melodies/short/mDetroit145.scd new file mode 100644 index 0000000..7105b6d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit145 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit145 = [ + 60, 57, 60, 0, 0, 53, 62, 0, + 63, 63, 53, 55, 58, 63, 67, 0, + 0, 60, 0, 65, 0, 0, 53, 0, + 53, 0, 65, 63, 63, 72, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit146.scd b/sound_algo/palette/melodies/short/mDetroit146.scd new file mode 100644 index 0000000..ea851c1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit146 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit146 = [ + 48, 48, 58, 55, 0, 60, 48, 0, + 0, 70, 55, 0, 60, 67, 70, 0, + 60, 70, 56, 0, 0, 0, 0, 0, + 65, 50, 55, 0, 0, 55, 62, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit147.scd b/sound_algo/palette/melodies/short/mDetroit147.scd new file mode 100644 index 0000000..b3f5e29 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit147 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit147 = [ + 0, 60, 53, 0, 0, 65, 53, 0, + 0, 0, 0, 0, 0, 57, 0, 60, + 0, 70, 0, 0, 62, 69, 60, 0, + 72, 0, 60, 0, 55, 63, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit148.scd b/sound_algo/palette/melodies/short/mDetroit148.scd new file mode 100644 index 0000000..22a6f07 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit148 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit148 = [ + 0, 65, 72, 0, 0, 70, 57, 0, + 0, 70, 58, 57, 67, 0, 0, 58, + 72, 60, 55, 62, 63, 60, 0, 55, + 0, 48, 65, 0, 63, 70, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit149.scd b/sound_algo/palette/melodies/short/mDetroit149.scd new file mode 100644 index 0000000..79fc7c6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit149 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit149 = [ + 56, 58, 48, 68, 0, 48, 62, 0, + 0, 0, 70, 50, 72, 0, 0, 55, + 65, 56, 55, 63, 56, 63, 55, 67, + 0, 50, 0, 0, 0, 62, 72, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit150.scd b/sound_algo/palette/melodies/short/mDetroit150.scd new file mode 100644 index 0000000..dc88132 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit150 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit150 = [ + 0, 0, 72, 53, 0, 68, 67, 0, + 50, 62, 0, 65, 48, 67, 50, 0, + 0, 55, 0, 0, 68, 0, 58, 0, + 53, 70, 50, 63, 65, 0, 48, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit151.scd b/sound_algo/palette/melodies/short/mDetroit151.scd new file mode 100644 index 0000000..71640e8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit151 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit151 = [ + 0, 0, 0, 48, 0, 0, 67, 0, + 0, 0, 65, 50, 0, 70, 0, 0, + 72, 69, 70, 67, 51, 58, 58, 69, + 67, 62, 53, 0, 67, 55, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit152.scd b/sound_algo/palette/melodies/short/mDetroit152.scd new file mode 100644 index 0000000..87fca6d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit152 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit152 = [ + 56, 55, 0, 72, 72, 0, 55, 68, + 0, 67, 0, 0, 65, 0, 68, 51, + 72, 48, 0, 60, 53, 67, 0, 0, + 60, 53, 56, 60, 60, 53, 55, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit153.scd b/sound_algo/palette/melodies/short/mDetroit153.scd new file mode 100644 index 0000000..e83c7b2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit153 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit153 = [ + 60, 72, 63, 68, 63, 60, 0, 0, + 0, 72, 53, 0, 0, 53, 58, 63, + 0, 63, 56, 72, 53, 72, 0, 51, + 48, 72, 63, 60, 68, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit154.scd b/sound_algo/palette/melodies/short/mDetroit154.scd new file mode 100644 index 0000000..c429e42 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit154 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit154 = [ + 0, 65, 51, 72, 0, 0, 0, 50, + 70, 58, 53, 55, 67, 0, 0, 50, + 72, 0, 0, 0, 60, 62, 51, 48, + 0, 72, 0, 0, 48, 0, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit155.scd b/sound_algo/palette/melodies/short/mDetroit155.scd new file mode 100644 index 0000000..4b099b9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit155 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit155 = [ + 0, 0, 0, 51, 58, 0, 60, 0, + 60, 51, 0, 60, 0, 55, 0, 0, + 70, 65, 0, 0, 55, 0, 0, 67, + 48, 60, 69, 62, 70, 0, 65, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit156.scd b/sound_algo/palette/melodies/short/mDetroit156.scd new file mode 100644 index 0000000..7d684f0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit156 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit156 = [ + 68, 0, 0, 53, 53, 0, 55, 65, + 53, 72, 50, 0, 65, 0, 0, 65, + 60, 50, 72, 53, 60, 50, 60, 63, + 65, 0, 68, 72, 0, 51, 65, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit157.scd b/sound_algo/palette/melodies/short/mDetroit157.scd new file mode 100644 index 0000000..c5d5d17 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit157 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit157 = [ + 72, 65, 68, 63, 65, 0, 65, 60, + 48, 60, 55, 58, 0, 55, 0, 72, + 0, 63, 53, 62, 56, 0, 56, 51, + 51, 68, 58, 70, 68, 60, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit158.scd b/sound_algo/palette/melodies/short/mDetroit158.scd new file mode 100644 index 0000000..c0e0773 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit158 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit158 = [ + 0, 51, 48, 0, 72, 53, 55, 0, + 0, 50, 50, 0, 58, 48, 0, 0, + 65, 67, 0, 0, 0, 0, 51, 55, + 72, 53, 68, 0, 50, 58, 56, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit159.scd b/sound_algo/palette/melodies/short/mDetroit159.scd new file mode 100644 index 0000000..8e4ad82 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit159 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit159 = [ + 0, 0, 65, 50, 48, 67, 60, 50, + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 65, 0, 69, 48, 57, 48, 0, + 51, 72, 70, 0, 0, 0, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit160.scd b/sound_algo/palette/melodies/short/mDetroit160.scd new file mode 100644 index 0000000..bb8d2d3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit160 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit160 = [ + 63, 0, 51, 50, 48, 0, 0, 69, + 58, 0, 0, 67, 63, 0, 0, 60, + 51, 0, 55, 0, 51, 0, 69, 57, + 0, 67, 58, 0, 48, 0, 0, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit161.scd b/sound_algo/palette/melodies/short/mDetroit161.scd new file mode 100644 index 0000000..e1087b4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit161 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit161 = [ + 56, 63, 67, 0, 72, 0, 67, 50, + 48, 65, 56, 0, 0, 55, 0, 51, + 0, 0, 60, 56, 72, 53, 58, 56, + 0, 72, 0, 58, 68, 0, 62, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit162.scd b/sound_algo/palette/melodies/short/mDetroit162.scd new file mode 100644 index 0000000..ad67925 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit162 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit162 = [ + 0, 51, 0, 56, 60, 0, 0, 53, + 0, 48, 55, 65, 0, 0, 70, 65, + 50, 55, 0, 56, 56, 55, 51, 58, + 0, 53, 0, 58, 68, 65, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit163.scd b/sound_algo/palette/melodies/short/mDetroit163.scd new file mode 100644 index 0000000..509b1a0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit163 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit163 = [ + 65, 56, 0, 60, 0, 60, 0, 0, + 62, 48, 67, 53, 48, 0, 53, 58, + 0, 0, 50, 0, 0, 51, 58, 50, + 0, 0, 0, 0, 48, 65, 62, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit164.scd b/sound_algo/palette/melodies/short/mDetroit164.scd new file mode 100644 index 0000000..3c4146b --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit164 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit164 = [ + 65, 51, 0, 0, 68, 48, 55, 50, + 0, 65, 63, 50, 70, 72, 58, 67, + 48, 56, 63, 48, 53, 0, 55, 72, + 0, 0, 68, 72, 48, 56, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit165.scd b/sound_algo/palette/melodies/short/mDetroit165.scd new file mode 100644 index 0000000..9f57c56 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit165 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit165 = [ + 67, 63, 0, 0, 0, 55, 62, 53, + 51, 0, 0, 0, 0, 65, 0, 0, + 0, 0, 72, 72, 0, 62, 58, 63, + 0, 58, 55, 65, 53, 69, 65, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit166.scd b/sound_algo/palette/melodies/short/mDetroit166.scd new file mode 100644 index 0000000..2ce2832 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit166 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit166 = [ + 58, 51, 57, 0, 0, 0, 0, 0, + 0, 0, 50, 53, 50, 72, 57, 53, + 57, 70, 58, 70, 51, 60, 55, 57, + 0, 72, 0, 0, 72, 50, 57, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit167.scd b/sound_algo/palette/melodies/short/mDetroit167.scd new file mode 100644 index 0000000..f0861bc --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit167 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit167 = [ + 51, 0, 62, 55, 55, 62, 56, 63, + 58, 60, 51, 0, 65, 62, 0, 60, + 0, 65, 0, 72, 63, 0, 70, 60, + 56, 0, 68, 70, 51, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit168.scd b/sound_algo/palette/melodies/short/mDetroit168.scd new file mode 100644 index 0000000..d341545 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit168 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit168 = [ + 67, 51, 55, 0, 67, 0, 0, 0, + 70, 0, 0, 0, 67, 0, 48, 70, + 0, 67, 55, 0, 0, 70, 0, 60, + 0, 0, 57, 50, 0, 50, 48, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit169.scd b/sound_algo/palette/melodies/short/mDetroit169.scd new file mode 100644 index 0000000..45ddb2d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit169 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit169 = [ + 0, 58, 72, 48, 51, 0, 0, 0, + 0, 0, 0, 51, 63, 50, 67, 0, + 72, 58, 0, 0, 0, 0, 72, 48, + 0, 0, 55, 0, 67, 70, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit170.scd b/sound_algo/palette/melodies/short/mDetroit170.scd new file mode 100644 index 0000000..deb89f6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit170 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit170 = [ + 65, 0, 0, 0, 0, 60, 0, 0, + 0, 68, 0, 0, 53, 56, 63, 70, + 72, 60, 60, 65, 53, 67, 0, 48, + 0, 0, 48, 0, 67, 51, 68, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit171.scd b/sound_algo/palette/melodies/short/mDetroit171.scd new file mode 100644 index 0000000..19f6cd6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit171 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit171 = [ + 0, 56, 60, 0, 56, 0, 0, 50, + 53, 0, 70, 0, 0, 72, 0, 0, + 65, 68, 53, 56, 56, 60, 0, 0, + 0, 70, 72, 65, 0, 0, 72, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit172.scd b/sound_algo/palette/melodies/short/mDetroit172.scd new file mode 100644 index 0000000..205508d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit172 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit172 = [ + 0, 51, 56, 0, 0, 0, 68, 65, + 68, 51, 0, 0, 51, 63, 0, 0, + 53, 0, 55, 0, 63, 48, 0, 0, + 48, 55, 0, 67, 53, 67, 72, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit173.scd b/sound_algo/palette/melodies/short/mDetroit173.scd new file mode 100644 index 0000000..f1a20cc --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit173 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit173 = [ + 70, 67, 51, 58, 60, 0, 48, 51, + 53, 58, 62, 62, 65, 58, 0, 0, + 0, 53, 0, 50, 0, 60, 72, 0, + 72, 0, 0, 70, 65, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit174.scd b/sound_algo/palette/melodies/short/mDetroit174.scd new file mode 100644 index 0000000..5a4915f --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit174 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit174 = [ + 0, 72, 53, 62, 65, 0, 53, 0, + 72, 60, 0, 70, 60, 56, 56, 48, + 62, 56, 0, 0, 67, 72, 58, 63, + 72, 63, 0, 67, 72, 56, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit175.scd b/sound_algo/palette/melodies/short/mDetroit175.scd new file mode 100644 index 0000000..b742e61 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit175 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit175 = [ + 0, 51, 48, 68, 0, 60, 50, 50, + 0, 70, 58, 72, 0, 0, 0, 53, + 0, 51, 72, 0, 0, 51, 0, 63, + 53, 65, 53, 0, 0, 63, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit176.scd b/sound_algo/palette/melodies/short/mDetroit176.scd new file mode 100644 index 0000000..f5bd637 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit176 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit176 = [ + 72, 72, 65, 0, 0, 0, 63, 50, + 63, 67, 0, 57, 0, 55, 0, 69, + 63, 55, 57, 70, 70, 0, 62, 55, + 48, 60, 0, 57, 0, 65, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit177.scd b/sound_algo/palette/melodies/short/mDetroit177.scd new file mode 100644 index 0000000..9ce2465 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit177 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit177 = [ + 0, 0, 0, 0, 0, 0, 67, 50, + 48, 0, 55, 0, 50, 53, 0, 60, + 67, 0, 55, 57, 0, 55, 0, 0, + 0, 0, 51, 0, 0, 72, 72, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit178.scd b/sound_algo/palette/melodies/short/mDetroit178.scd new file mode 100644 index 0000000..9c470aa --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit178 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit178 = [ + 50, 67, 67, 70, 72, 62, 0, 0, + 0, 58, 0, 55, 63, 0, 67, 70, + 0, 63, 53, 55, 0, 0, 57, 58, + 51, 58, 0, 67, 0, 69, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit179.scd b/sound_algo/palette/melodies/short/mDetroit179.scd new file mode 100644 index 0000000..f55dc43 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit179 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit179 = [ + 0, 0, 0, 0, 53, 51, 48, 53, + 51, 56, 0, 0, 48, 0, 55, 72, + 0, 60, 50, 0, 70, 60, 0, 0, + 0, 56, 58, 68, 60, 58, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit180.scd b/sound_algo/palette/melodies/short/mDetroit180.scd new file mode 100644 index 0000000..4369ba4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit180 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit180 = [ + 0, 68, 0, 50, 48, 0, 0, 67, + 53, 0, 62, 60, 58, 68, 65, 0, + 0, 0, 62, 68, 70, 0, 70, 70, + 0, 0, 65, 0, 0, 0, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit181.scd b/sound_algo/palette/melodies/short/mDetroit181.scd new file mode 100644 index 0000000..af4c17d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit181 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit181 = [ + 0, 50, 69, 0, 0, 58, 58, 65, + 0, 0, 62, 53, 57, 0, 48, 65, + 51, 0, 0, 0, 55, 65, 0, 0, + 67, 57, 67, 67, 48, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit182.scd b/sound_algo/palette/melodies/short/mDetroit182.scd new file mode 100644 index 0000000..95eb02e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit182 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit182 = [ + 60, 0, 70, 0, 72, 0, 0, 0, + 67, 0, 62, 51, 0, 0, 50, 60, + 63, 58, 0, 57, 51, 51, 0, 0, + 0, 70, 57, 0, 0, 70, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit183.scd b/sound_algo/palette/melodies/short/mDetroit183.scd new file mode 100644 index 0000000..579aff2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit183 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit183 = [ + 67, 0, 0, 60, 0, 0, 0, 72, + 72, 65, 68, 0, 0, 72, 50, 0, + 67, 53, 53, 65, 0, 0, 72, 0, + 0, 48, 0, 55, 48, 50, 56, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit184.scd b/sound_algo/palette/melodies/short/mDetroit184.scd new file mode 100644 index 0000000..4b99d3c --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit184.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit184 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit184 = [ + 60, 65, 72, 0, 53, 62, 50, 68, + 0, 58, 0, 53, 53, 0, 68, 53, + 0, 58, 60, 63, 60, 0, 68, 70, + 0, 60, 56, 70, 50, 67, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit185.scd b/sound_algo/palette/melodies/short/mDetroit185.scd new file mode 100644 index 0000000..60880d7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit185.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit185 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit185 = [ + 0, 60, 0, 65, 65, 50, 51, 50, + 51, 72, 56, 60, 0, 0, 63, 48, + 68, 50, 0, 60, 0, 48, 63, 72, + 0, 62, 56, 60, 0, 0, 67, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit186.scd b/sound_algo/palette/melodies/short/mDetroit186.scd new file mode 100644 index 0000000..d68f2e7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit186.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit186 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit186 = [ + 65, 53, 62, 63, 53, 53, 0, 51, + 0, 55, 67, 65, 65, 53, 0, 70, + 0, 51, 55, 51, 65, 0, 67, 0, + 0, 62, 60, 0, 0, 58, 65, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit187.scd b/sound_algo/palette/melodies/short/mDetroit187.scd new file mode 100644 index 0000000..334fcfa --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit187.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit187 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit187 = [ + 0, 0, 53, 70, 0, 62, 55, 65, + 65, 53, 68, 53, 70, 48, 68, 62, + 48, 55, 62, 53, 50, 0, 48, 70, + 60, 51, 0, 0, 0, 63, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit188.scd b/sound_algo/palette/melodies/short/mDetroit188.scd new file mode 100644 index 0000000..1b54161 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit188.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit188 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit188 = [ + 0, 69, 48, 63, 0, 65, 0, 48, + 60, 70, 0, 63, 58, 69, 0, 72, + 58, 55, 0, 67, 55, 0, 67, 69, + 70, 51, 0, 67, 63, 48, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit189.scd b/sound_algo/palette/melodies/short/mDetroit189.scd new file mode 100644 index 0000000..1b90d7a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit189.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit189 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit189 = [ + 68, 72, 53, 56, 56, 0, 48, 48, + 0, 0, 0, 63, 53, 0, 0, 58, + 72, 62, 0, 72, 72, 53, 0, 0, + 0, 53, 72, 55, 0, 56, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit190.scd b/sound_algo/palette/melodies/short/mDetroit190.scd new file mode 100644 index 0000000..86308e7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit190.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit190 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit190 = [ + 0, 58, 62, 65, 56, 0, 0, 0, + 68, 65, 51, 0, 0, 0, 72, 67, + 72, 72, 0, 48, 65, 0, 68, 70, + 0, 50, 70, 50, 0, 67, 55, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit191.scd b/sound_algo/palette/melodies/short/mDetroit191.scd new file mode 100644 index 0000000..16e4fbd --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit191.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit191 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit191 = [ + 0, 69, 0, 57, 70, 0, 0, 57, + 63, 0, 72, 0, 0, 55, 0, 53, + 51, 0, 51, 53, 63, 60, 0, 0, + 0, 50, 69, 67, 51, 67, 0, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit192.scd b/sound_algo/palette/melodies/short/mDetroit192.scd new file mode 100644 index 0000000..f6eb289 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit192.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit192 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit192 = [ + 67, 60, 65, 70, 0, 53, 51, 0, + 63, 0, 58, 72, 48, 53, 62, 48, + 60, 0, 69, 53, 0, 63, 70, 0, + 0, 55, 65, 69, 0, 65, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit193.scd b/sound_algo/palette/melodies/short/mDetroit193.scd new file mode 100644 index 0000000..1b1737d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit193.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit193 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit193 = [ + 50, 53, 0, 69, 0, 57, 0, 55, + 0, 57, 72, 0, 0, 72, 50, 0, + 55, 50, 67, 0, 67, 0, 58, 0, + 65, 55, 57, 70, 72, 0, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit194.scd b/sound_algo/palette/melodies/short/mDetroit194.scd new file mode 100644 index 0000000..7a94dfa --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit194.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit194 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit194 = [ + 62, 56, 0, 0, 72, 56, 51, 0, + 68, 53, 67, 70, 48, 48, 68, 62, + 68, 56, 67, 58, 65, 72, 53, 0, + 60, 56, 67, 0, 70, 51, 68, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit195.scd b/sound_algo/palette/melodies/short/mDetroit195.scd new file mode 100644 index 0000000..b40b2ea --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit195.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit195 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit195 = [ + 0, 57, 0, 62, 57, 70, 58, 50, + 0, 63, 57, 0, 0, 0, 53, 0, + 63, 72, 53, 70, 0, 0, 67, 0, + 70, 53, 62, 0, 72, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit196.scd b/sound_algo/palette/melodies/short/mDetroit196.scd new file mode 100644 index 0000000..b6d7815 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit196.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit196 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit196 = [ + 55, 67, 56, 0, 48, 65, 50, 58, + 0, 0, 0, 56, 0, 48, 0, 65, + 48, 48, 0, 51, 0, 51, 63, 55, + 68, 50, 0, 60, 0, 0, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit197.scd b/sound_algo/palette/melodies/short/mDetroit197.scd new file mode 100644 index 0000000..89d86ee --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit197.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit197 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit197 = [ + 0, 0, 0, 56, 0, 53, 68, 58, + 60, 58, 48, 0, 0, 0, 51, 50, + 65, 62, 0, 70, 65, 0, 53, 68, + 53, 68, 0, 60, 58, 55, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit198.scd b/sound_algo/palette/melodies/short/mDetroit198.scd new file mode 100644 index 0000000..aeae303 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit198.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit198 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit198 = [ + 60, 55, 0, 53, 55, 70, 0, 69, + 0, 63, 0, 63, 72, 0, 65, 57, + 62, 0, 0, 70, 63, 0, 67, 57, + 67, 0, 60, 69, 0, 0, 58, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit199.scd b/sound_algo/palette/melodies/short/mDetroit199.scd new file mode 100644 index 0000000..c4ac9b8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit199.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit199 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit199 = [ + 63, 60, 58, 72, 68, 56, 72, 0, + 63, 48, 67, 68, 72, 63, 72, 60, + 0, 0, 0, 0, 60, 68, 67, 72, + 56, 51, 53, 50, 72, 62, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit200.scd b/sound_algo/palette/melodies/short/mDetroit200.scd new file mode 100644 index 0000000..12cf347 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit200.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit200 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit200 = [ + 0, 0, 50, 51, 0, 0, 70, 62, + 0, 0, 72, 0, 63, 72, 65, 50, + 0, 62, 0, 0, 48, 0, 60, 0, + 55, 60, 70, 69, 0, 62, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit201.scd b/sound_algo/palette/melodies/short/mDetroit201.scd new file mode 100644 index 0000000..bd664f1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit201.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit201 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit201 = [ + 48, 0, 48, 68, 0, 67, 68, 68, + 0, 63, 67, 67, 0, 0, 68, 60, + 0, 0, 63, 0, 0, 0, 70, 68, + 0, 0, 53, 0, 56, 0, 56, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit202.scd b/sound_algo/palette/melodies/short/mDetroit202.scd new file mode 100644 index 0000000..ec436db --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit202.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit202 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit202 = [ + 48, 0, 63, 0, 63, 58, 0, 50, + 60, 65, 55, 0, 0, 72, 58, 0, + 53, 0, 58, 0, 72, 0, 51, 0, + 67, 60, 67, 0, 68, 67, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit203.scd b/sound_algo/palette/melodies/short/mDetroit203.scd new file mode 100644 index 0000000..67c5f92 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit203.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit203 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit203 = [ + 0, 72, 0, 51, 0, 72, 51, 0, + 58, 0, 0, 0, 60, 60, 58, 55, + 63, 65, 53, 48, 57, 0, 0, 70, + 53, 67, 0, 0, 51, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit204.scd b/sound_algo/palette/melodies/short/mDetroit204.scd new file mode 100644 index 0000000..5076d5a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit204.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit204 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit204 = [ + 68, 53, 0, 51, 0, 0, 0, 63, + 68, 62, 0, 0, 56, 50, 62, 56, + 53, 68, 62, 0, 0, 55, 70, 58, + 60, 67, 56, 0, 51, 0, 62, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit205.scd b/sound_algo/palette/melodies/short/mDetroit205.scd new file mode 100644 index 0000000..681ab3a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit205.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit205 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit205 = [ + 0, 65, 0, 0, 0, 0, 51, 0, + 53, 0, 58, 58, 0, 56, 50, 68, + 0, 0, 56, 63, 55, 0, 70, 0, + 72, 0, 0, 65, 60, 51, 55, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit206.scd b/sound_algo/palette/melodies/short/mDetroit206.scd new file mode 100644 index 0000000..9b3b563 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit206.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit206 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit206 = [ + 68, 0, 56, 68, 68, 72, 0, 65, + 48, 62, 0, 67, 62, 68, 0, 65, + 72, 0, 68, 0, 0, 0, 0, 0, + 0, 60, 0, 48, 0, 48, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit207.scd b/sound_algo/palette/melodies/short/mDetroit207.scd new file mode 100644 index 0000000..8481ec1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit207.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit207 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit207 = [ + 0, 62, 48, 55, 0, 48, 67, 67, + 0, 67, 65, 70, 63, 65, 50, 0, + 0, 67, 55, 72, 51, 0, 0, 0, + 0, 0, 0, 50, 67, 62, 0, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit208.scd b/sound_algo/palette/melodies/short/mDetroit208.scd new file mode 100644 index 0000000..3d78f4d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit208.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit208 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit208 = [ + 63, 0, 72, 0, 51, 70, 48, 50, + 0, 58, 65, 67, 0, 58, 60, 0, + 0, 53, 63, 70, 63, 69, 65, 55, + 51, 0, 0, 57, 69, 53, 51, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit209.scd b/sound_algo/palette/melodies/short/mDetroit209.scd new file mode 100644 index 0000000..edd742c --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit209.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit209 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit209 = [ + 0, 72, 70, 0, 0, 0, 55, 58, + 67, 62, 53, 48, 68, 0, 51, 0, + 65, 62, 51, 63, 53, 65, 0, 51, + 0, 51, 58, 50, 0, 53, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit210.scd b/sound_algo/palette/melodies/short/mDetroit210.scd new file mode 100644 index 0000000..329833d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit210.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit210 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit210 = [ + 67, 0, 72, 0, 0, 0, 62, 70, + 48, 63, 70, 0, 72, 55, 68, 53, + 70, 0, 0, 48, 0, 53, 0, 62, + 58, 0, 0, 0, 0, 60, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mDetroit211.scd b/sound_algo/palette/melodies/short/mDetroit211.scd new file mode 100644 index 0000000..444c333 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDetroit211.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDetroit211 -- short melody (32 steps), genre: detroit +// ===================================================================== +( +~mDetroit211 = [ + 48, 62, 55, 60, 0, 48, 0, 60, + 63, 0, 0, 72, 0, 51, 63, 63, + 55, 0, 60, 0, 60, 0, 50, 0, + 51, 72, 0, 58, 0, 58, 53, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb100.scd b/sound_algo/palette/melodies/short/mDnb100.scd new file mode 100644 index 0000000..3a107ac --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb100 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb100 = [ + 0, 0, 67, 0, 0, 70, 62, 65, + 0, 45, 38, 51, 55, 0, 69, 0, + 38, 43, 60, 50, 62, 0, 0, 58, + 43, 43, 0, 0, 55, 39, 45, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb101.scd b/sound_algo/palette/melodies/short/mDnb101.scd new file mode 100644 index 0000000..afc1e42 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb101 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb101 = [ + 50, 71, 0, 64, 0, 0, 45, 0, + 52, 54, 0, 0, 0, 42, 42, 0, + 71, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 59, 71, 67, 0, 0, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb102.scd b/sound_algo/palette/melodies/short/mDnb102.scd new file mode 100644 index 0000000..2855c1f --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb102 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb102 = [ + 0, 51, 48, 69, 0, 67, 70, 45, + 67, 0, 0, 0, 0, 0, 48, 0, + 0, 70, 0, 45, 0, 0, 0, 0, + 38, 0, 70, 0, 0, 0, 0, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb103.scd b/sound_algo/palette/melodies/short/mDnb103.scd new file mode 100644 index 0000000..81bd14a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb103 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb103 = [ + 67, 67, 39, 70, 0, 0, 0, 0, + 63, 0, 43, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 58, 72, 0, 0, + 65, 39, 0, 46, 58, 58, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb104.scd b/sound_algo/palette/melodies/short/mDnb104.scd new file mode 100644 index 0000000..b1272d7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb104 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb104 = [ + 0, 0, 62, 50, 62, 65, 51, 69, + 46, 0, 57, 0, 0, 36, 0, 0, + 41, 45, 0, 0, 0, 63, 0, 60, + 43, 0, 63, 72, 0, 0, 0, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb105.scd b/sound_algo/palette/melodies/short/mDnb105.scd new file mode 100644 index 0000000..1308111 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb105 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb105 = [ + 0, 0, 0, 0, 59, 45, 0, 57, + 0, 54, 0, 67, 43, 0, 72, 66, + 67, 71, 0, 36, 50, 0, 0, 0, + 0, 0, 0, 0, 52, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb106.scd b/sound_algo/palette/melodies/short/mDnb106.scd new file mode 100644 index 0000000..70d8cd1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb106 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb106 = [ + 47, 0, 52, 0, 0, 0, 36, 0, + 0, 0, 62, 55, 55, 71, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 50, 36, 0, 62, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb107.scd b/sound_algo/palette/melodies/short/mDnb107.scd new file mode 100644 index 0000000..782d9f1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb107 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb107 = [ + 0, 69, 67, 60, 55, 64, 47, 66, + 0, 67, 0, 0, 64, 52, 67, 59, + 64, 0, 0, 0, 0, 0, 57, 45, + 0, 36, 0, 66, 64, 0, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb108.scd b/sound_algo/palette/melodies/short/mDnb108.scd new file mode 100644 index 0000000..fa79c69 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb108 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb108 = [ + 71, 0, 0, 0, 0, 0, 0, 0, + 47, 40, 66, 59, 0, 45, 67, 0, + 0, 42, 40, 40, 0, 0, 36, 0, + 0, 43, 0, 69, 43, 0, 54, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb109.scd b/sound_algo/palette/melodies/short/mDnb109.scd new file mode 100644 index 0000000..eac1ee4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb109 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb109 = [ + 0, 66, 0, 0, 0, 71, 54, 40, + 52, 0, 64, 60, 0, 64, 0, 71, + 43, 0, 69, 54, 0, 0, 36, 0, + 55, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb110.scd b/sound_algo/palette/melodies/short/mDnb110.scd new file mode 100644 index 0000000..f0d39f6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb110 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb110 = [ + 0, 0, 38, 69, 0, 0, 0, 0, + 65, 39, 0, 0, 63, 63, 62, 50, + 46, 65, 0, 0, 36, 0, 0, 36, + 0, 0, 0, 36, 51, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb111.scd b/sound_algo/palette/melodies/short/mDnb111.scd new file mode 100644 index 0000000..f84d969 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb111 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb111 = [ + 43, 55, 0, 36, 0, 0, 69, 0, + 70, 46, 43, 45, 72, 62, 0, 55, + 57, 0, 43, 50, 0, 55, 0, 0, + 0, 51, 0, 0, 38, 0, 0, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb112.scd b/sound_algo/palette/melodies/short/mDnb112.scd new file mode 100644 index 0000000..a76094e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb112 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb112 = [ + 0, 59, 71, 71, 0, 36, 0, 0, + 45, 54, 0, 55, 64, 0, 0, 0, + 0, 0, 60, 55, 64, 57, 0, 59, + 0, 64, 45, 0, 62, 38, 45, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb113.scd b/sound_algo/palette/melodies/short/mDnb113.scd new file mode 100644 index 0000000..3148be1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb113 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb113 = [ + 70, 67, 70, 0, 55, 0, 0, 38, + 46, 0, 0, 53, 0, 0, 0, 0, + 0, 70, 55, 0, 45, 63, 0, 0, + 43, 69, 0, 60, 0, 36, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb114.scd b/sound_algo/palette/melodies/short/mDnb114.scd new file mode 100644 index 0000000..2320682 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb114 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb114 = [ + 46, 50, 0, 0, 0, 69, 41, 0, + 55, 69, 70, 62, 65, 0, 0, 57, + 0, 63, 0, 0, 53, 38, 0, 69, + 43, 0, 67, 0, 0, 53, 39, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb115.scd b/sound_algo/palette/melodies/short/mDnb115.scd new file mode 100644 index 0000000..0692da3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb115 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb115 = [ + 0, 43, 0, 0, 0, 0, 0, 0, + 0, 0, 67, 67, 0, 45, 40, 62, + 0, 47, 64, 0, 52, 48, 0, 0, + 47, 55, 0, 45, 67, 42, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb116.scd b/sound_algo/palette/melodies/short/mDnb116.scd new file mode 100644 index 0000000..ffe7ec3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb116 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb116 = [ + 51, 0, 58, 62, 0, 41, 70, 0, + 43, 57, 70, 0, 50, 50, 0, 70, + 0, 0, 46, 55, 62, 0, 0, 62, + 46, 39, 70, 0, 43, 70, 57, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb117.scd b/sound_algo/palette/melodies/short/mDnb117.scd new file mode 100644 index 0000000..a80d86e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb117 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb117 = [ + 0, 0, 0, 38, 0, 0, 0, 0, + 43, 0, 53, 0, 0, 0, 0, 57, + 0, 0, 0, 0, 70, 0, 55, 0, + 70, 0, 0, 72, 58, 63, 65, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb118.scd b/sound_algo/palette/melodies/short/mDnb118.scd new file mode 100644 index 0000000..f9b82c1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb118 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb118 = [ + 0, 57, 0, 55, 0, 46, 0, 0, + 0, 69, 0, 0, 55, 50, 55, 60, + 0, 58, 0, 53, 70, 0, 57, 57, + 0, 43, 45, 38, 62, 39, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb119.scd b/sound_algo/palette/melodies/short/mDnb119.scd new file mode 100644 index 0000000..45e4181 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb119 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb119 = [ + 57, 0, 39, 0, 0, 51, 0, 38, + 0, 57, 43, 65, 41, 43, 0, 0, + 46, 48, 48, 0, 0, 36, 43, 69, + 45, 48, 70, 0, 50, 45, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb120.scd b/sound_algo/palette/melodies/short/mDnb120.scd new file mode 100644 index 0000000..c22469a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb120 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb120 = [ + 71, 62, 0, 66, 0, 0, 60, 55, + 55, 47, 60, 38, 48, 43, 47, 0, + 0, 62, 0, 40, 47, 67, 54, 0, + 0, 60, 0, 45, 0, 64, 50, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb121.scd b/sound_algo/palette/melodies/short/mDnb121.scd new file mode 100644 index 0000000..dc01059 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb121 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb121 = [ + 52, 40, 54, 45, 36, 62, 0, 0, + 0, 38, 0, 0, 0, 45, 45, 43, + 67, 0, 0, 0, 0, 0, 71, 50, + 52, 60, 55, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb122.scd b/sound_algo/palette/melodies/short/mDnb122.scd new file mode 100644 index 0000000..e0a08b3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb122 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb122 = [ + 67, 69, 69, 48, 0, 0, 0, 62, + 71, 0, 62, 45, 0, 0, 62, 59, + 0, 59, 0, 52, 67, 0, 0, 69, + 59, 0, 55, 71, 0, 0, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb123.scd b/sound_algo/palette/melodies/short/mDnb123.scd new file mode 100644 index 0000000..4c3ae98 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb123 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb123 = [ + 71, 0, 71, 42, 0, 55, 59, 52, + 0, 72, 59, 0, 0, 0, 0, 0, + 0, 0, 0, 38, 55, 52, 0, 47, + 0, 59, 48, 59, 0, 48, 38, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb124.scd b/sound_algo/palette/melodies/short/mDnb124.scd new file mode 100644 index 0000000..d7f3dc1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb124 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb124 = [ + 50, 42, 40, 59, 0, 0, 55, 40, + 0, 55, 57, 60, 40, 0, 0, 0, + 64, 0, 0, 72, 0, 0, 38, 0, + 0, 52, 0, 0, 0, 57, 0, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb125.scd b/sound_algo/palette/melodies/short/mDnb125.scd new file mode 100644 index 0000000..c0994d4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb125 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb125 = [ + 71, 50, 40, 0, 0, 0, 45, 0, + 0, 0, 0, 0, 52, 59, 50, 40, + 55, 0, 36, 0, 43, 64, 66, 57, + 60, 0, 42, 50, 43, 36, 0, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb126.scd b/sound_algo/palette/melodies/short/mDnb126.scd new file mode 100644 index 0000000..0a69768 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb126 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb126 = [ + 50, 0, 53, 39, 0, 0, 0, 0, + 58, 0, 38, 70, 0, 0, 50, 0, + 0, 53, 41, 0, 43, 36, 0, 38, + 0, 0, 45, 36, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb127.scd b/sound_algo/palette/melodies/short/mDnb127.scd new file mode 100644 index 0000000..5b199ed --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb127 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb127 = [ + 0, 0, 41, 0, 0, 0, 0, 0, + 0, 0, 0, 50, 0, 69, 0, 0, + 69, 41, 0, 0, 0, 0, 0, 0, + 39, 67, 0, 43, 0, 46, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb128.scd b/sound_algo/palette/melodies/short/mDnb128.scd new file mode 100644 index 0000000..86429bb --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb128 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb128 = [ + 0, 66, 0, 69, 0, 0, 0, 0, + 0, 40, 0, 71, 0, 0, 50, 59, + 0, 0, 0, 0, 40, 0, 0, 0, + 52, 0, 48, 42, 0, 45, 45, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb129.scd b/sound_algo/palette/melodies/short/mDnb129.scd new file mode 100644 index 0000000..38abc00 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb129 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb129 = [ + 0, 0, 60, 0, 0, 0, 0, 0, + 0, 57, 72, 0, 0, 0, 0, 39, + 0, 50, 48, 0, 0, 70, 0, 0, + 62, 63, 0, 0, 69, 0, 57, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb130.scd b/sound_algo/palette/melodies/short/mDnb130.scd new file mode 100644 index 0000000..96929e4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb130 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb130 = [ + 0, 63, 0, 0, 72, 0, 0, 70, + 0, 67, 0, 0, 55, 0, 0, 39, + 0, 0, 0, 0, 62, 36, 0, 0, + 0, 0, 0, 0, 70, 51, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb131.scd b/sound_algo/palette/melodies/short/mDnb131.scd new file mode 100644 index 0000000..1314669 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb131 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb131 = [ + 0, 39, 50, 0, 0, 41, 0, 53, + 72, 0, 62, 46, 0, 60, 72, 0, + 0, 0, 65, 65, 67, 58, 65, 55, + 0, 55, 0, 0, 58, 72, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb132.scd b/sound_algo/palette/melodies/short/mDnb132.scd new file mode 100644 index 0000000..8715993 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb132 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb132 = [ + 43, 60, 0, 0, 0, 65, 36, 48, + 0, 0, 43, 0, 62, 72, 0, 0, + 65, 0, 57, 67, 50, 69, 48, 0, + 57, 0, 70, 45, 0, 0, 0, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb133.scd b/sound_algo/palette/melodies/short/mDnb133.scd new file mode 100644 index 0000000..641c0ba --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb133 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb133 = [ + 0, 0, 57, 45, 0, 59, 54, 0, + 0, 0, 0, 64, 0, 0, 0, 0, + 0, 0, 0, 50, 40, 0, 66, 60, + 52, 48, 0, 0, 0, 0, 0, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb134.scd b/sound_algo/palette/melodies/short/mDnb134.scd new file mode 100644 index 0000000..5b19a51 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb134 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb134 = [ + 67, 0, 47, 47, 0, 67, 45, 67, + 59, 47, 72, 40, 0, 0, 59, 36, + 0, 0, 40, 59, 0, 0, 0, 45, + 0, 55, 0, 43, 0, 54, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb135.scd b/sound_algo/palette/melodies/short/mDnb135.scd new file mode 100644 index 0000000..f55865e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb135 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb135 = [ + 70, 63, 0, 50, 57, 0, 41, 0, + 38, 57, 0, 0, 48, 0, 46, 36, + 41, 0, 0, 0, 0, 36, 38, 70, + 0, 0, 50, 0, 43, 0, 0, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb136.scd b/sound_algo/palette/melodies/short/mDnb136.scd new file mode 100644 index 0000000..f71096a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb136 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb136 = [ + 0, 0, 62, 0, 0, 55, 52, 43, + 59, 0, 38, 0, 59, 38, 0, 54, + 0, 0, 0, 0, 52, 60, 57, 45, + 0, 0, 55, 0, 52, 54, 40, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb137.scd b/sound_algo/palette/melodies/short/mDnb137.scd new file mode 100644 index 0000000..44d7e30 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb137 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb137 = [ + 43, 45, 0, 0, 0, 38, 0, 57, + 55, 0, 0, 38, 43, 72, 47, 0, + 0, 0, 0, 43, 71, 62, 50, 48, + 42, 42, 0, 72, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb138.scd b/sound_algo/palette/melodies/short/mDnb138.scd new file mode 100644 index 0000000..37323b9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb138 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb138 = [ + 0, 53, 48, 0, 46, 50, 50, 51, + 0, 0, 0, 0, 58, 57, 0, 0, + 67, 38, 50, 57, 46, 0, 0, 0, + 0, 65, 0, 69, 55, 0, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb139.scd b/sound_algo/palette/melodies/short/mDnb139.scd new file mode 100644 index 0000000..2f66608 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb139 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb139 = [ + 0, 0, 0, 71, 0, 43, 0, 0, + 0, 0, 54, 45, 0, 69, 0, 0, + 0, 0, 59, 0, 71, 0, 0, 0, + 57, 50, 0, 45, 42, 60, 0, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb140.scd b/sound_algo/palette/melodies/short/mDnb140.scd new file mode 100644 index 0000000..d550fe6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb140 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb140 = [ + 45, 62, 62, 0, 67, 52, 71, 0, + 0, 42, 59, 0, 0, 52, 0, 0, + 0, 67, 0, 57, 64, 52, 71, 0, + 71, 38, 0, 57, 0, 50, 67, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mDnb141.scd b/sound_algo/palette/melodies/short/mDnb141.scd new file mode 100644 index 0000000..3aa4788 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDnb141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDnb141 -- short melody (32 steps), genre: dnb +// ===================================================================== +( +~mDnb141 = [ + 59, 0, 0, 36, 0, 40, 60, 54, + 62, 0, 0, 40, 47, 0, 0, 0, + 0, 60, 69, 0, 67, 59, 0, 0, + 0, 42, 0, 52, 47, 52, 54, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone100.scd b/sound_algo/palette/melodies/short/mDrone100.scd new file mode 100644 index 0000000..b17c168 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone100 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone100 = [ + 0, 41, 0, 0, 0, 0, 0, 0, + 0, 48, 0, 0, 41, 0, 0, 48, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone101.scd b/sound_algo/palette/melodies/short/mDrone101.scd new file mode 100644 index 0000000..cb973fc --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone101 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone101 = [ + 0, 0, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 29, 0, 0, 27, 0, + 0, 0, 0, 0, 0, 0, 0, 39, + 0, 41, 0, 0, 0, 34, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone102.scd b/sound_algo/palette/melodies/short/mDrone102.scd new file mode 100644 index 0000000..cc190ac --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone102 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone102 = [ + 0, 0, 0, 0, 44, 0, 0, 39, + 0, 0, 0, 34, 29, 0, 0, 0, + 0, 44, 0, 0, 0, 44, 0, 0, + 0, 0, 0, 0, 0, 41, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone103.scd b/sound_algo/palette/melodies/short/mDrone103.scd new file mode 100644 index 0000000..0025beb --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone103 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone103 = [ + 0, 0, 32, 0, 0, 0, 0, 29, + 0, 0, 0, 32, 0, 0, 24, 0, + 0, 0, 0, 34, 0, 0, 0, 0, + 0, 48, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone104.scd b/sound_algo/palette/melodies/short/mDrone104.scd new file mode 100644 index 0000000..ef9088b --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone104 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone104 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 41, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone105.scd b/sound_algo/palette/melodies/short/mDrone105.scd new file mode 100644 index 0000000..985f179 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone105 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone105 = [ + 43, 0, 27, 0, 0, 0, 0, 34, + 0, 0, 0, 0, 0, 46, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 0, 0, 0, 0, 0, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone106.scd b/sound_algo/palette/melodies/short/mDrone106.scd new file mode 100644 index 0000000..ab4baf1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone106 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone106 = [ + 0, 0, 29, 0, 44, 0, 0, 46, + 0, 0, 0, 44, 0, 48, 0, 41, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 44, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone107.scd b/sound_algo/palette/melodies/short/mDrone107.scd new file mode 100644 index 0000000..7cfb60e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone107 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone107 = [ + 0, 0, 46, 0, 0, 0, 0, 0, + 0, 36, 0, 0, 0, 0, 0, 0, + 0, 41, 0, 0, 0, 0, 27, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone108.scd b/sound_algo/palette/melodies/short/mDrone108.scd new file mode 100644 index 0000000..62e9626 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone108 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone108 = [ + 0, 0, 0, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 34, + 0, 0, 0, 0, 0, 0, 41, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone109.scd b/sound_algo/palette/melodies/short/mDrone109.scd new file mode 100644 index 0000000..62074e5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone109 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone109 = [ + 0, 0, 32, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 29, 0, + 29, 0, 0, 0, 0, 29, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone110.scd b/sound_algo/palette/melodies/short/mDrone110.scd new file mode 100644 index 0000000..f57c998 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone110 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone110 = [ + 0, 0, 31, 0, 0, 0, 0, 46, + 0, 0, 0, 0, 0, 0, 0, 46, + 0, 0, 0, 0, 27, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone111.scd b/sound_algo/palette/melodies/short/mDrone111.scd new file mode 100644 index 0000000..e5d8f2a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone111 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone111 = [ + 0, 0, 46, 0, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 46, 0, + 0, 0, 27, 24, 0, 0, 0, 0, + 0, 0, 0, 39, 0, 0, 41, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone112.scd b/sound_algo/palette/melodies/short/mDrone112.scd new file mode 100644 index 0000000..559dda0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone112 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone112 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 41, 0, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 0, 0, 24, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone113.scd b/sound_algo/palette/melodies/short/mDrone113.scd new file mode 100644 index 0000000..def928e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone113 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone113 = [ + 27, 0, 27, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone114.scd b/sound_algo/palette/melodies/short/mDrone114.scd new file mode 100644 index 0000000..ecb7f19 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone114 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone114 = [ + 32, 0, 0, 0, 0, 0, 0, 44, + 0, 0, 0, 0, 29, 39, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone115.scd b/sound_algo/palette/melodies/short/mDrone115.scd new file mode 100644 index 0000000..1339408 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone115 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone115 = [ + 0, 0, 0, 34, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 44, 0, 0, + 0, 0, 44, 0, 0, 39, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone116.scd b/sound_algo/palette/melodies/short/mDrone116.scd new file mode 100644 index 0000000..f6ab903 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone116 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone116 = [ + 44, 36, 0, 0, 0, 0, 44, 0, + 0, 0, 0, 0, 0, 0, 0, 44, + 0, 0, 0, 39, 48, 0, 0, 0, + 0, 27, 0, 32, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone117.scd b/sound_algo/palette/melodies/short/mDrone117.scd new file mode 100644 index 0000000..8ec9d53 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone117 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone117 = [ + 0, 0, 0, 0, 0, 0, 44, 0, + 0, 41, 0, 0, 0, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 34, + 0, 0, 0, 36, 0, 0, 29, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone118.scd b/sound_algo/palette/melodies/short/mDrone118.scd new file mode 100644 index 0000000..7048527 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone118 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone118 = [ + 46, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 0, 31, 0, 0, 0, 0, + 27, 0, 0, 0, 46, 0, 0, 0, + 0, 48, 0, 0, 0, 0, 24, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone119.scd b/sound_algo/palette/melodies/short/mDrone119.scd new file mode 100644 index 0000000..d02c943 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone119 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone119 = [ + 36, 0, 0, 0, 0, 0, 0, 34, + 0, 24, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 24, + 0, 48, 0, 0, 41, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone120.scd b/sound_algo/palette/melodies/short/mDrone120.scd new file mode 100644 index 0000000..2506e3f --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone120 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone120 = [ + 0, 41, 0, 0, 0, 0, 36, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 43, 0, 0, 0, 0, 0, 27, 0, + 0, 0, 0, 0, 0, 46, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone121.scd b/sound_algo/palette/melodies/short/mDrone121.scd new file mode 100644 index 0000000..f5896a1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone121 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone121 = [ + 43, 0, 0, 0, 0, 0, 29, 0, + 0, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 0, 0, 0, 0, 0, + 39, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone122.scd b/sound_algo/palette/melodies/short/mDrone122.scd new file mode 100644 index 0000000..a50c31e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone122 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone122 = [ + 0, 0, 0, 0, 0, 36, 0, 0, + 0, 0, 29, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 0, 0, 0, + 0, 29, 0, 0, 44, 0, 29, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone123.scd b/sound_algo/palette/melodies/short/mDrone123.scd new file mode 100644 index 0000000..1b9327b --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone123 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone123 = [ + 0, 0, 0, 0, 48, 24, 0, 0, + 0, 0, 0, 41, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 24 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone124.scd b/sound_algo/palette/melodies/short/mDrone124.scd new file mode 100644 index 0000000..71e8300 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone124 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone124 = [ + 0, 0, 44, 0, 0, 0, 0, 0, + 0, 0, 0, 24, 0, 0, 0, 36, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone125.scd b/sound_algo/palette/melodies/short/mDrone125.scd new file mode 100644 index 0000000..e4eada8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone125 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone125 = [ + 0, 0, 0, 0, 0, 0, 0, 46, + 0, 0, 0, 0, 27, 0, 0, 0, + 0, 0, 46, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 0, 0, 0, 39 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone126.scd b/sound_algo/palette/melodies/short/mDrone126.scd new file mode 100644 index 0000000..544d6d2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone126 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone126 = [ + 29, 0, 0, 27, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 29, 46, 0, 0, 39, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDrone127.scd b/sound_algo/palette/melodies/short/mDrone127.scd new file mode 100644 index 0000000..949f8d0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDrone127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDrone127 -- short melody (32 steps), genre: drone +// ===================================================================== +( +~mDrone127 = [ + 0, 0, 0, 27, 0, 0, 0, 0, + 41, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 43, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub100.scd b/sound_algo/palette/melodies/short/mDub100.scd new file mode 100644 index 0000000..d299c1a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub100 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub100 = [ + 40, 0, 0, 0, 45, 0, 0, 0, + 40, 0, 0, 0, 38, 0, 0, 0, + 40, 0, 0, 0, 47, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub101.scd b/sound_algo/palette/melodies/short/mDub101.scd new file mode 100644 index 0000000..7fa9af3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub101 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub101 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 50, 0, 0, 0, + 40, 0, 0, 0, 52, 0, 0, 0, + 40, 0, 0, 0, 52, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub102.scd b/sound_algo/palette/melodies/short/mDub102.scd new file mode 100644 index 0000000..33a2cc2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub102 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub102 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 40, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub103.scd b/sound_algo/palette/melodies/short/mDub103.scd new file mode 100644 index 0000000..b50cdfd --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub103 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub103 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 36, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 48, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub104.scd b/sound_algo/palette/melodies/short/mDub104.scd new file mode 100644 index 0000000..d9b926e --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub104 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub104 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 59, 0, 0, 0, + 40, 0, 0, 0, 57, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub105.scd b/sound_algo/palette/melodies/short/mDub105.scd new file mode 100644 index 0000000..a8cbe12 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub105 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub105 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub106.scd b/sound_algo/palette/melodies/short/mDub106.scd new file mode 100644 index 0000000..c778252 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub106 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub106 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 45, 0, 0, 0, + 40, 0, 0, 0, 59, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub107.scd b/sound_algo/palette/melodies/short/mDub107.scd new file mode 100644 index 0000000..0946d01 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub107 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub107 = [ + 40, 0, 0, 0, 40, 0, 0, 0, + 40, 0, 0, 0, 45, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 55, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub108.scd b/sound_algo/palette/melodies/short/mDub108.scd new file mode 100644 index 0000000..50d9a62 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub108 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub108 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 45, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub109.scd b/sound_algo/palette/melodies/short/mDub109.scd new file mode 100644 index 0000000..3319824 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub109 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub109 = [ + 40, 0, 0, 0, 50, 0, 0, 0, + 40, 0, 0, 0, 52, 0, 0, 0, + 40, 0, 0, 0, 57, 0, 0, 0, + 40, 0, 0, 0, 45, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub110.scd b/sound_algo/palette/melodies/short/mDub110.scd new file mode 100644 index 0000000..d8798a1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub110 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub110 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 38, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub111.scd b/sound_algo/palette/melodies/short/mDub111.scd new file mode 100644 index 0000000..894c10a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub111 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub111 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 48, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub112.scd b/sound_algo/palette/melodies/short/mDub112.scd new file mode 100644 index 0000000..8284577 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub112 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub112 = [ + 36, 0, 0, 0, 55, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 48, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub113.scd b/sound_algo/palette/melodies/short/mDub113.scd new file mode 100644 index 0000000..cb0483c --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub113 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub113 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 38, 0, 0, 0, + 40, 0, 0, 0, 57, 0, 0, 0, + 40, 0, 0, 0, 43, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub114.scd b/sound_algo/palette/melodies/short/mDub114.scd new file mode 100644 index 0000000..b77233d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub114 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub114 = [ + 40, 0, 0, 0, 55, 0, 0, 0, + 40, 0, 0, 0, 55, 0, 0, 0, + 40, 0, 0, 0, 45, 0, 0, 0, + 40, 0, 0, 0, 43, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub115.scd b/sound_algo/palette/melodies/short/mDub115.scd new file mode 100644 index 0000000..d7f5d2d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub115 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub115 = [ + 40, 0, 0, 0, 38, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 47, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub116.scd b/sound_algo/palette/melodies/short/mDub116.scd new file mode 100644 index 0000000..4fc5d6d --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub116 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub116 = [ + 36, 0, 0, 0, 51, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 41, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub117.scd b/sound_algo/palette/melodies/short/mDub117.scd new file mode 100644 index 0000000..d6b16e2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub117 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub117 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 36, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub118.scd b/sound_algo/palette/melodies/short/mDub118.scd new file mode 100644 index 0000000..2ea14e9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub118 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub118 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 46, 0, 0, 0, + 36, 0, 0, 0, 60, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub119.scd b/sound_algo/palette/melodies/short/mDub119.scd new file mode 100644 index 0000000..1740acd --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub119 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub119 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 36, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 46, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub120.scd b/sound_algo/palette/melodies/short/mDub120.scd new file mode 100644 index 0000000..eaa9ce6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub120 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub120 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 38, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub121.scd b/sound_algo/palette/melodies/short/mDub121.scd new file mode 100644 index 0000000..a6881e2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub121 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub121 = [ + 36, 0, 0, 0, 53, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 48, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub122.scd b/sound_algo/palette/melodies/short/mDub122.scd new file mode 100644 index 0000000..be1b5cc --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub122 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub122 = [ + 36, 0, 0, 0, 55, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 43, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub123.scd b/sound_algo/palette/melodies/short/mDub123.scd new file mode 100644 index 0000000..f89aa2a --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub123 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub123 = [ + 36, 0, 0, 0, 51, 0, 0, 0, + 36, 0, 0, 0, 58, 0, 0, 0, + 36, 0, 0, 0, 51, 0, 0, 0, + 36, 0, 0, 0, 46, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub124.scd b/sound_algo/palette/melodies/short/mDub124.scd new file mode 100644 index 0000000..a97d9d8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub124 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub124 = [ + 36, 0, 0, 0, 55, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 58, 0, 0, 0, + 36, 0, 0, 0, 55, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub125.scd b/sound_algo/palette/melodies/short/mDub125.scd new file mode 100644 index 0000000..03682f9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub125 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub125 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 55, 0, 0, 0, + 36, 0, 0, 0, 46, 0, 0, 0, + 36, 0, 0, 0, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub126.scd b/sound_algo/palette/melodies/short/mDub126.scd new file mode 100644 index 0000000..505e256 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub126 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub126 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 59, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 52, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mDub127.scd b/sound_algo/palette/melodies/short/mDub127.scd new file mode 100644 index 0000000..c780047 --- /dev/null +++ b/sound_algo/palette/melodies/short/mDub127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mDub127 -- short melody (32 steps), genre: dub +// ===================================================================== +( +~mDub127 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 50, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 50, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore100.scd b/sound_algo/palette/melodies/short/mHardcore100.scd new file mode 100644 index 0000000..d39c4c5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore100 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore100 = [ + 45, 40, 38, 43, 52, 60, 58, 59, + 43, 50, 42, 49, 56, 39, 50, 53, + 55, 38, 37, 49, 55, 56, 42, 55, + 44, 53, 56, 42, 59, 47, 52, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore101.scd b/sound_algo/palette/melodies/short/mHardcore101.scd new file mode 100644 index 0000000..f1e06f7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore101 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore101 = [ + 53, 55, 37, 40, 55, 60, 59, 48, + 56, 0, 59, 51, 40, 40, 57, 57, + 57, 52, 54, 56, 52, 46, 42, 50, + 40, 57, 58, 37, 56, 37, 47, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore102.scd b/sound_algo/palette/melodies/short/mHardcore102.scd new file mode 100644 index 0000000..bfb4452 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore102 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore102 = [ + 58, 37, 46, 44, 45, 45, 48, 46, + 36, 43, 47, 59, 53, 52, 57, 52, + 36, 47, 60, 45, 43, 43, 51, 58, + 47, 60, 48, 58, 45, 50, 49, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore103.scd b/sound_algo/palette/melodies/short/mHardcore103.scd new file mode 100644 index 0000000..a56162c --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore103 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore103 = [ + 55, 45, 43, 38, 56, 53, 55, 42, + 0, 42, 40, 59, 50, 59, 45, 46, + 59, 37, 37, 42, 43, 46, 37, 48, + 49, 47, 50, 37, 36, 47, 56, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore104.scd b/sound_algo/palette/melodies/short/mHardcore104.scd new file mode 100644 index 0000000..6c2f5e8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore104 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore104 = [ + 50, 36, 45, 52, 55, 0, 53, 60, + 55, 0, 58, 48, 40, 38, 48, 57, + 41, 40, 48, 60, 43, 41, 57, 40, + 52, 53, 48, 0, 43, 45, 57, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore105.scd b/sound_algo/palette/melodies/short/mHardcore105.scd new file mode 100644 index 0000000..84d7d15 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore105 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore105 = [ + 53, 43, 47, 37, 0, 42, 40, 56, + 43, 46, 44, 41, 42, 48, 38, 52, + 41, 50, 48, 47, 43, 38, 60, 49, + 47, 48, 43, 60, 40, 50, 58, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore106.scd b/sound_algo/palette/melodies/short/mHardcore106.scd new file mode 100644 index 0000000..d3c9749 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore106 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore106 = [ + 52, 48, 45, 50, 43, 38, 48, 0, + 41, 36, 46, 46, 45, 40, 55, 48, + 43, 60, 50, 36, 53, 46, 60, 43, + 53, 46, 40, 58, 0, 45, 38, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore107.scd b/sound_algo/palette/melodies/short/mHardcore107.scd new file mode 100644 index 0000000..6966910 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore107 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore107 = [ + 60, 37, 51, 60, 44, 41, 38, 60, + 60, 56, 58, 51, 36, 38, 36, 55, + 44, 56, 41, 59, 57, 60, 43, 39, + 60, 60, 53, 42, 51, 47, 57, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore108.scd b/sound_algo/palette/melodies/short/mHardcore108.scd new file mode 100644 index 0000000..eb34b65 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore108 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore108 = [ + 59, 45, 54, 38, 36, 41, 54, 47, + 46, 49, 45, 60, 36, 37, 38, 0, + 36, 53, 36, 52, 43, 50, 45, 46, + 59, 52, 58, 36, 56, 46, 58, 37 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore109.scd b/sound_algo/palette/melodies/short/mHardcore109.scd new file mode 100644 index 0000000..66d721d --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore109 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore109 = [ + 58, 46, 54, 42, 44, 38, 59, 54, + 47, 46, 43, 40, 55, 47, 47, 47, + 47, 57, 36, 38, 48, 55, 36, 44, + 43, 48, 38, 36, 52, 45, 56, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore110.scd b/sound_algo/palette/melodies/short/mHardcore110.scd new file mode 100644 index 0000000..e48b999 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore110 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore110 = [ + 36, 56, 44, 50, 45, 57, 48, 52, + 43, 47, 45, 42, 59, 43, 41, 59, + 59, 53, 54, 53, 56, 41, 48, 48, + 45, 45, 43, 45, 37, 47, 57, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore111.scd b/sound_algo/palette/melodies/short/mHardcore111.scd new file mode 100644 index 0000000..182744d --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore111 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore111 = [ + 45, 45, 55, 37, 57, 39, 50, 60, + 46, 36, 38, 47, 60, 48, 39, 58, + 45, 54, 55, 46, 57, 56, 45, 54, + 41, 47, 52, 40, 36, 51, 48, 37 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore112.scd b/sound_algo/palette/melodies/short/mHardcore112.scd new file mode 100644 index 0000000..67886db --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore112 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore112 = [ + 37, 36, 41, 57, 43, 60, 40, 41, + 52, 36, 48, 46, 47, 49, 45, 52, + 47, 45, 59, 54, 37, 59, 60, 57, + 59, 40, 50, 48, 60, 56, 58, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore113.scd b/sound_algo/palette/melodies/short/mHardcore113.scd new file mode 100644 index 0000000..882554a --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore113 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore113 = [ + 53, 53, 37, 55, 57, 43, 49, 0, + 53, 57, 57, 42, 50, 59, 51, 47, + 45, 45, 47, 54, 57, 41, 37, 46, + 55, 36, 50, 45, 0, 47, 43, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore114.scd b/sound_algo/palette/melodies/short/mHardcore114.scd new file mode 100644 index 0000000..b4e44ef --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore114 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore114 = [ + 53, 38, 36, 36, 55, 41, 38, 57, + 43, 48, 52, 50, 55, 50, 53, 41, + 50, 41, 40, 38, 43, 53, 57, 52, + 60, 43, 55, 58, 50, 41, 36, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore115.scd b/sound_algo/palette/melodies/short/mHardcore115.scd new file mode 100644 index 0000000..2d0c643 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore115 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore115 = [ + 41, 46, 51, 60, 53, 56, 41, 56, + 48, 48, 36, 52, 41, 47, 50, 41, + 60, 55, 53, 38, 59, 58, 51, 37, + 56, 51, 52, 55, 48, 50, 55, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore116.scd b/sound_algo/palette/melodies/short/mHardcore116.scd new file mode 100644 index 0000000..12bcbc1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore116 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore116 = [ + 56, 44, 50, 37, 56, 59, 51, 57, + 47, 41, 44, 43, 55, 54, 49, 52, + 55, 42, 43, 47, 54, 57, 40, 51, + 36, 55, 36, 49, 54, 51, 49, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore117.scd b/sound_algo/palette/melodies/short/mHardcore117.scd new file mode 100644 index 0000000..e8e0d3b --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore117 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore117 = [ + 0, 41, 53, 48, 40, 52, 0, 41, + 0, 41, 0, 36, 40, 60, 43, 38, + 55, 48, 48, 52, 52, 45, 40, 60, + 43, 50, 60, 41, 0, 40, 0, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore118.scd b/sound_algo/palette/melodies/short/mHardcore118.scd new file mode 100644 index 0000000..ad71b4f --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore118 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore118 = [ + 53, 60, 41, 37, 55, 53, 36, 38, + 45, 53, 37, 40, 55, 49, 54, 51, + 56, 52, 36, 51, 49, 37, 41, 43, + 59, 37, 47, 50, 41, 38, 44, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore119.scd b/sound_algo/palette/melodies/short/mHardcore119.scd new file mode 100644 index 0000000..8af3d2a --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore119 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore119 = [ + 36, 42, 48, 60, 53, 55, 46, 58, + 46, 60, 56, 43, 57, 56, 59, 53, + 0, 0, 50, 42, 44, 56, 56, 42, + 60, 56, 53, 37, 57, 42, 37, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore120.scd b/sound_algo/palette/melodies/short/mHardcore120.scd new file mode 100644 index 0000000..4412cfb --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore120 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore120 = [ + 40, 43, 38, 40, 40, 55, 53, 53, + 43, 45, 50, 36, 55, 40, 55, 45, + 43, 60, 46, 60, 43, 36, 52, 48, + 60, 40, 43, 38, 40, 60, 46, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore121.scd b/sound_algo/palette/melodies/short/mHardcore121.scd new file mode 100644 index 0000000..a4b7d2b --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore121 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore121 = [ + 59, 51, 37, 49, 54, 41, 42, 53, + 56, 51, 0, 44, 47, 59, 56, 59, + 37, 46, 54, 41, 53, 41, 53, 0, + 53, 59, 37, 53, 51, 58, 39, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore122.scd b/sound_algo/palette/melodies/short/mHardcore122.scd new file mode 100644 index 0000000..120f49b --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore122 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore122 = [ + 41, 43, 45, 58, 54, 60, 45, 54, + 44, 42, 49, 38, 57, 41, 45, 46, + 60, 42, 55, 42, 57, 37, 49, 49, + 53, 56, 39, 51, 41, 47, 46, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore123.scd b/sound_algo/palette/melodies/short/mHardcore123.scd new file mode 100644 index 0000000..fbef787 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore123 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore123 = [ + 47, 56, 45, 39, 59, 53, 36, 0, + 43, 36, 38, 37, 56, 52, 39, 51, + 47, 48, 38, 60, 59, 46, 51, 51, + 47, 55, 44, 43, 56, 43, 36, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore124.scd b/sound_algo/palette/melodies/short/mHardcore124.scd new file mode 100644 index 0000000..d003880 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore124 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore124 = [ + 56, 54, 46, 51, 58, 57, 57, 51, + 59, 50, 43, 38, 56, 41, 53, 41, + 48, 38, 59, 44, 0, 60, 54, 60, + 46, 36, 43, 42, 37, 36, 60, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore125.scd b/sound_algo/palette/melodies/short/mHardcore125.scd new file mode 100644 index 0000000..eaa6d6a --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore125 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore125 = [ + 52, 59, 49, 48, 47, 47, 45, 36, + 47, 47, 53, 58, 56, 39, 39, 41, + 60, 38, 42, 55, 40, 38, 55, 43, + 50, 52, 38, 49, 54, 51, 41, 39 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore126.scd b/sound_algo/palette/melodies/short/mHardcore126.scd new file mode 100644 index 0000000..c61fcaa --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore126 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore126 = [ + 52, 59, 43, 39, 38, 41, 47, 49, + 41, 57, 54, 52, 43, 39, 38, 54, + 44, 53, 48, 39, 37, 60, 50, 49, + 46, 53, 49, 47, 43, 48, 42, 39 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore127.scd b/sound_algo/palette/melodies/short/mHardcore127.scd new file mode 100644 index 0000000..98e72b1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore127 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore127 = [ + 41, 56, 59, 51, 44, 47, 46, 39, + 41, 42, 42, 58, 44, 49, 51, 42, + 51, 51, 0, 49, 41, 47, 41, 56, + 53, 53, 59, 42, 0, 0, 44, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore128.scd b/sound_algo/palette/melodies/short/mHardcore128.scd new file mode 100644 index 0000000..1aa1273 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore128 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore128 = [ + 53, 36, 48, 48, 52, 58, 57, 54, + 46, 58, 41, 44, 41, 58, 52, 55, + 58, 39, 58, 58, 45, 49, 51, 58, + 38, 50, 60, 59, 41, 52, 59, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore129.scd b/sound_algo/palette/melodies/short/mHardcore129.scd new file mode 100644 index 0000000..56a880c --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore129 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore129 = [ + 53, 44, 51, 46, 54, 46, 49, 49, + 49, 46, 41, 47, 53, 49, 58, 53, + 42, 58, 44, 49, 53, 51, 42, 47, + 53, 51, 47, 37, 44, 41, 53, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore130.scd b/sound_algo/palette/melodies/short/mHardcore130.scd new file mode 100644 index 0000000..9800844 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore130 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore130 = [ + 0, 44, 47, 46, 44, 42, 54, 53, + 44, 42, 37, 59, 46, 47, 41, 41, + 44, 39, 51, 42, 44, 44, 39, 44, + 41, 41, 0, 44, 46, 44, 53, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore131.scd b/sound_algo/palette/melodies/short/mHardcore131.scd new file mode 100644 index 0000000..4e2fa4c --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore131 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore131 = [ + 41, 40, 38, 43, 40, 58, 43, 60, + 43, 43, 52, 41, 52, 40, 55, 55, + 52, 57, 57, 55, 0, 55, 46, 52, + 46, 50, 43, 46, 60, 53, 40, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore132.scd b/sound_algo/palette/melodies/short/mHardcore132.scd new file mode 100644 index 0000000..465e376 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore132 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore132 = [ + 40, 41, 48, 41, 53, 41, 55, 60, + 52, 38, 58, 41, 52, 41, 57, 41, + 55, 46, 43, 40, 55, 40, 36, 45, + 52, 41, 45, 55, 43, 38, 58, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore133.scd b/sound_algo/palette/melodies/short/mHardcore133.scd new file mode 100644 index 0000000..4c6147e --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore133 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore133 = [ + 59, 55, 0, 58, 48, 56, 51, 42, + 43, 46, 45, 39, 47, 41, 47, 45, + 40, 38, 53, 57, 44, 51, 38, 55, + 43, 36, 37, 44, 44, 43, 60, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore134.scd b/sound_algo/palette/melodies/short/mHardcore134.scd new file mode 100644 index 0000000..9396a6d --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore134 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore134 = [ + 47, 40, 39, 0, 40, 52, 59, 49, + 49, 45, 57, 57, 38, 48, 38, 58, + 55, 46, 46, 43, 55, 39, 39, 47, + 44, 39, 57, 44, 59, 46, 47, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore135.scd b/sound_algo/palette/melodies/short/mHardcore135.scd new file mode 100644 index 0000000..791d0eb --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore135 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore135 = [ + 55, 53, 53, 60, 38, 58, 41, 36, + 57, 40, 41, 58, 40, 40, 50, 57, + 43, 43, 53, 48, 55, 55, 41, 52, + 52, 40, 41, 53, 55, 55, 45, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore136.scd b/sound_algo/palette/melodies/short/mHardcore136.scd new file mode 100644 index 0000000..084bebd --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore136 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore136 = [ + 56, 36, 42, 45, 56, 56, 43, 49, + 46, 54, 40, 46, 59, 41, 60, 47, + 56, 55, 59, 42, 36, 57, 59, 58, + 37, 57, 51, 43, 43, 0, 56, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore137.scd b/sound_algo/palette/melodies/short/mHardcore137.scd new file mode 100644 index 0000000..19db77e --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore137 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore137 = [ + 42, 55, 55, 53, 36, 46, 47, 54, + 58, 43, 55, 39, 44, 59, 39, 49, + 60, 43, 46, 58, 59, 53, 52, 59, + 48, 50, 0, 51, 53, 48, 38, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore138.scd b/sound_algo/palette/melodies/short/mHardcore138.scd new file mode 100644 index 0000000..a0e57c4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore138 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore138 = [ + 48, 55, 44, 47, 47, 48, 0, 51, + 48, 44, 41, 58, 52, 55, 38, 48, + 47, 48, 46, 40, 56, 46, 42, 49, + 40, 46, 49, 52, 43, 51, 60, 37 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore139.scd b/sound_algo/palette/melodies/short/mHardcore139.scd new file mode 100644 index 0000000..58212b0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore139 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore139 = [ + 54, 43, 53, 42, 56, 45, 39, 58, + 43, 55, 59, 42, 44, 50, 59, 44, + 45, 48, 42, 52, 0, 53, 36, 44, + 44, 51, 45, 54, 51, 55, 49, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore140.scd b/sound_algo/palette/melodies/short/mHardcore140.scd new file mode 100644 index 0000000..0936fbd --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore140 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore140 = [ + 41, 46, 37, 54, 42, 44, 42, 41, + 56, 47, 58, 47, 49, 49, 59, 49, + 54, 46, 53, 49, 41, 46, 41, 54, + 44, 44, 47, 44, 53, 37, 41, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore141.scd b/sound_algo/palette/melodies/short/mHardcore141.scd new file mode 100644 index 0000000..d7c4d8d --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore141 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore141 = [ + 44, 47, 59, 39, 41, 41, 54, 39, + 51, 54, 58, 56, 42, 44, 56, 42, + 56, 54, 46, 51, 41, 49, 54, 58, + 54, 58, 56, 56, 41, 54, 51, 39 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore142.scd b/sound_algo/palette/melodies/short/mHardcore142.scd new file mode 100644 index 0000000..d8e252c --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore142 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore142 = [ + 40, 60, 43, 36, 43, 0, 40, 0, + 53, 40, 43, 50, 43, 52, 43, 38, + 58, 57, 45, 45, 57, 50, 58, 58, + 55, 55, 40, 50, 41, 43, 58, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore143.scd b/sound_algo/palette/melodies/short/mHardcore143.scd new file mode 100644 index 0000000..de7cf4b --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore143 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore143 = [ + 50, 52, 55, 46, 36, 57, 45, 40, + 55, 41, 41, 38, 52, 38, 43, 0, + 43, 41, 50, 52, 38, 57, 0, 53, + 55, 57, 43, 38, 52, 48, 0, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore144.scd b/sound_algo/palette/melodies/short/mHardcore144.scd new file mode 100644 index 0000000..0298aab --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore144 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore144 = [ + 0, 43, 39, 57, 45, 38, 41, 60, + 55, 60, 53, 54, 42, 60, 47, 36, + 59, 39, 42, 40, 54, 42, 46, 0, + 44, 49, 45, 44, 47, 46, 50, 47 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore145.scd b/sound_algo/palette/melodies/short/mHardcore145.scd new file mode 100644 index 0000000..c2e8b8b --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore145 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore145 = [ + 54, 58, 49, 44, 56, 41, 54, 49, + 53, 37, 46, 58, 47, 59, 39, 54, + 53, 46, 39, 54, 42, 44, 58, 47, + 39, 44, 37, 51, 53, 49, 42, 39 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore146.scd b/sound_algo/palette/melodies/short/mHardcore146.scd new file mode 100644 index 0000000..d525c80 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore146 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore146 = [ + 58, 52, 41, 36, 52, 60, 48, 52, + 57, 38, 53, 60, 55, 40, 38, 55, + 58, 36, 0, 50, 36, 55, 36, 41, + 55, 58, 60, 43, 55, 52, 46, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore147.scd b/sound_algo/palette/melodies/short/mHardcore147.scd new file mode 100644 index 0000000..b8b3d5f --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore147 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore147 = [ + 58, 55, 46, 43, 43, 0, 42, 44, + 40, 36, 44, 57, 59, 41, 50, 59, + 39, 56, 60, 47, 49, 48, 36, 43, + 53, 37, 56, 0, 44, 39, 59, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore148.scd b/sound_algo/palette/melodies/short/mHardcore148.scd new file mode 100644 index 0000000..28ad428 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore148 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore148 = [ + 43, 53, 43, 55, 55, 58, 53, 60, + 57, 46, 40, 36, 45, 53, 48, 36, + 46, 48, 55, 58, 40, 58, 0, 41, + 52, 36, 58, 60, 55, 60, 58, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore149.scd b/sound_algo/palette/melodies/short/mHardcore149.scd new file mode 100644 index 0000000..4916173 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore149 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore149 = [ + 46, 59, 49, 41, 53, 47, 53, 0, + 56, 56, 46, 44, 42, 47, 39, 58, + 53, 42, 44, 39, 51, 46, 59, 59, + 41, 0, 49, 56, 58, 58, 37, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore150.scd b/sound_algo/palette/melodies/short/mHardcore150.scd new file mode 100644 index 0000000..1a98ed8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore150 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore150 = [ + 41, 58, 58, 58, 44, 51, 49, 51, + 0, 44, 59, 0, 56, 51, 51, 42, + 58, 37, 44, 37, 59, 59, 59, 37, + 47, 44, 46, 37, 56, 44, 44, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore151.scd b/sound_algo/palette/melodies/short/mHardcore151.scd new file mode 100644 index 0000000..1e6fb99 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore151 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore151 = [ + 41, 54, 39, 58, 39, 37, 37, 46, + 0, 49, 39, 58, 37, 47, 47, 58, + 41, 59, 0, 0, 44, 42, 54, 44, + 51, 37, 53, 37, 44, 39, 51, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore152.scd b/sound_algo/palette/melodies/short/mHardcore152.scd new file mode 100644 index 0000000..42ea970 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore152 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore152 = [ + 48, 53, 55, 0, 0, 55, 42, 49, + 45, 39, 43, 41, 44, 49, 42, 54, + 0, 52, 59, 39, 48, 57, 48, 55, + 53, 54, 46, 39, 41, 36, 54, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore153.scd b/sound_algo/palette/melodies/short/mHardcore153.scd new file mode 100644 index 0000000..1acb5e9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore153 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore153 = [ + 38, 36, 52, 45, 60, 40, 40, 44, + 53, 40, 50, 49, 48, 50, 59, 46, + 0, 38, 53, 40, 60, 58, 43, 37, + 45, 40, 53, 42, 41, 45, 38, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore154.scd b/sound_algo/palette/melodies/short/mHardcore154.scd new file mode 100644 index 0000000..e677c67 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore154 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore154 = [ + 57, 52, 42, 39, 0, 51, 58, 43, + 50, 38, 49, 59, 44, 60, 40, 51, + 0, 46, 58, 49, 54, 36, 53, 36, + 53, 39, 52, 42, 53, 44, 57, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHardcore155.scd b/sound_algo/palette/melodies/short/mHardcore155.scd new file mode 100644 index 0000000..7edd854 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHardcore155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHardcore155 -- short melody (32 steps), genre: hardcore +// ===================================================================== +( +~mHardcore155 = [ + 52, 43, 54, 40, 40, 44, 41, 53, + 55, 41, 58, 46, 54, 0, 55, 0, + 56, 57, 37, 55, 52, 47, 40, 44, + 44, 41, 55, 36, 44, 59, 44, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic100.scd b/sound_algo/palette/melodies/short/mHypnotic100.scd new file mode 100644 index 0000000..020ed07 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic100 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic100 = [ + 65, 0, 0, 63, 0, 72, 0, 63, + 65, 60, 0, 63, 0, 0, 0, 0, + 65, 0, 0, 63, 65, 0, 0, 63, + 65, 63, 0, 63, 65, 0, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic101.scd b/sound_algo/palette/melodies/short/mHypnotic101.scd new file mode 100644 index 0000000..5667ff8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic101 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic101 = [ + 0, 0, 0, 70, 0, 0, 60, 72, + 0, 0, 60, 0, 0, 0, 60, 70, + 0, 0, 60, 70, 0, 0, 60, 70, + 0, 0, 0, 70, 0, 0, 60, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic102.scd b/sound_algo/palette/melodies/short/mHypnotic102.scd new file mode 100644 index 0000000..dd0a95e --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic102 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic102 = [ + 60, 67, 63, 0, 0, 67, 0, 0, + 60, 67, 0, 0, 60, 67, 63, 0, + 0, 67, 0, 65, 60, 67, 67, 0, + 60, 72, 70, 0, 60, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic103.scd b/sound_algo/palette/melodies/short/mHypnotic103.scd new file mode 100644 index 0000000..2e3e736 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic103 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic103 = [ + 63, 0, 72, 0, 63, 67, 72, 0, + 70, 67, 67, 0, 0, 60, 0, 0, + 63, 0, 72, 72, 0, 67, 0, 0, + 63, 0, 72, 0, 63, 67, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic104.scd b/sound_algo/palette/melodies/short/mHypnotic104.scd new file mode 100644 index 0000000..8ccd440 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic104 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic104 = [ + 67, 0, 67, 67, 67, 67, 0, 63, + 0, 67, 65, 63, 67, 67, 65, 63, + 67, 67, 65, 63, 67, 67, 65, 63, + 67, 67, 65, 63, 67, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic105.scd b/sound_algo/palette/melodies/short/mHypnotic105.scd new file mode 100644 index 0000000..929ae8a --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic105 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic105 = [ + 0, 72, 0, 0, 0, 72, 0, 72, + 0, 72, 0, 0, 0, 72, 0, 0, + 0, 65, 0, 0, 0, 72, 0, 0, + 0, 72, 0, 0, 0, 72, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic106.scd b/sound_algo/palette/melodies/short/mHypnotic106.scd new file mode 100644 index 0000000..f83d49e --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic106 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic106 = [ + 72, 0, 72, 0, 72, 0, 60, 0, + 72, 0, 72, 0, 0, 0, 65, 0, + 72, 0, 72, 0, 0, 0, 72, 0, + 72, 0, 65, 0, 0, 0, 72, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic107.scd b/sound_algo/palette/melodies/short/mHypnotic107.scd new file mode 100644 index 0000000..57f5ffc --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic107 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic107 = [ + 0, 0, 72, 0, 60, 0, 72, 0, + 60, 67, 72, 63, 60, 67, 0, 0, + 60, 67, 72, 0, 0, 67, 0, 0, + 0, 0, 72, 72, 60, 67, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic108.scd b/sound_algo/palette/melodies/short/mHypnotic108.scd new file mode 100644 index 0000000..01eb1ed --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic108 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic108 = [ + 0, 0, 70, 0, 0, 0, 70, 63, + 0, 0, 70, 0, 0, 0, 70, 60, + 0, 0, 70, 0, 0, 0, 0, 0, + 0, 0, 70, 0, 72, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic109.scd b/sound_algo/palette/melodies/short/mHypnotic109.scd new file mode 100644 index 0000000..9f00e25 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic109 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic109 = [ + 0, 0, 63, 0, 70, 0, 0, 0, + 70, 0, 0, 0, 70, 70, 0, 0, + 0, 0, 0, 0, 70, 0, 0, 0, + 70, 0, 0, 0, 70, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic110.scd b/sound_algo/palette/melodies/short/mHypnotic110.scd new file mode 100644 index 0000000..5aa0b9d --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic110 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic110 = [ + 0, 70, 63, 0, 0, 65, 60, 0, + 0, 65, 60, 0, 0, 0, 60, 67, + 0, 65, 60, 0, 60, 65, 0, 0, + 0, 70, 60, 0, 0, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic111.scd b/sound_algo/palette/melodies/short/mHypnotic111.scd new file mode 100644 index 0000000..30324c3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic111 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic111 = [ + 0, 0, 0, 60, 65, 0, 0, 65, + 65, 0, 0, 65, 0, 0, 0, 65, + 65, 0, 0, 0, 0, 72, 0, 65, + 65, 0, 0, 65, 65, 0, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic112.scd b/sound_algo/palette/melodies/short/mHypnotic112.scd new file mode 100644 index 0000000..cc7b286 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic112 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic112 = [ + 0, 0, 0, 65, 0, 65, 0, 65, + 0, 65, 65, 65, 0, 0, 0, 65, + 0, 0, 0, 65, 63, 65, 0, 65, + 0, 65, 0, 65, 0, 65, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic113.scd b/sound_algo/palette/melodies/short/mHypnotic113.scd new file mode 100644 index 0000000..8fc0a06 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic113 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic113 = [ + 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 70, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic114.scd b/sound_algo/palette/melodies/short/mHypnotic114.scd new file mode 100644 index 0000000..5428208 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic114 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic114 = [ + 0, 0, 63, 72, 0, 60, 0, 72, + 0, 60, 0, 72, 70, 0, 0, 0, + 0, 60, 0, 72, 0, 63, 0, 72, + 0, 60, 0, 72, 0, 60, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic115.scd b/sound_algo/palette/melodies/short/mHypnotic115.scd new file mode 100644 index 0000000..8aa2679 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic115 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic115 = [ + 65, 0, 70, 0, 67, 0, 70, 0, + 0, 0, 70, 0, 60, 60, 0, 0, + 0, 0, 70, 0, 72, 0, 0, 0, + 60, 0, 70, 0, 0, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic116.scd b/sound_algo/palette/melodies/short/mHypnotic116.scd new file mode 100644 index 0000000..20c67e3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic116 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic116 = [ + 0, 70, 67, 0, 72, 70, 65, 0, + 0, 70, 72, 63, 0, 70, 60, 0, + 0, 0, 67, 0, 0, 70, 60, 0, + 0, 70, 67, 0, 0, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic117.scd b/sound_algo/palette/melodies/short/mHypnotic117.scd new file mode 100644 index 0000000..ffbb5a3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic117 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic117 = [ + 72, 65, 60, 0, 72, 60, 60, 0, + 72, 65, 60, 0, 72, 70, 60, 0, + 60, 65, 60, 0, 72, 0, 0, 67, + 0, 65, 0, 63, 72, 65, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic118.scd b/sound_algo/palette/melodies/short/mHypnotic118.scd new file mode 100644 index 0000000..bec3b5c --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic118 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic118 = [ + 0, 0, 0, 70, 0, 0, 70, 70, + 0, 0, 70, 0, 0, 0, 70, 63, + 63, 0, 70, 70, 0, 67, 70, 70, + 0, 0, 70, 70, 0, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic119.scd b/sound_algo/palette/melodies/short/mHypnotic119.scd new file mode 100644 index 0000000..8750c41 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic119 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic119 = [ + 0, 67, 0, 0, 0, 67, 72, 0, + 0, 67, 72, 0, 0, 67, 60, 0, + 0, 67, 72, 0, 0, 60, 72, 0, + 0, 67, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic120.scd b/sound_algo/palette/melodies/short/mHypnotic120.scd new file mode 100644 index 0000000..bf862f3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic120 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic120 = [ + 65, 0, 72, 63, 65, 0, 72, 0, + 72, 0, 72, 0, 65, 0, 72, 0, + 0, 0, 72, 0, 0, 0, 72, 0, + 65, 0, 72, 0, 63, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic121.scd b/sound_algo/palette/melodies/short/mHypnotic121.scd new file mode 100644 index 0000000..1ee3ee1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic121 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic121 = [ + 0, 0, 65, 0, 67, 0, 65, 0, + 0, 0, 65, 0, 0, 0, 65, 70, + 0, 0, 65, 0, 0, 0, 65, 0, + 0, 0, 65, 0, 0, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic122.scd b/sound_algo/palette/melodies/short/mHypnotic122.scd new file mode 100644 index 0000000..d691c11 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic122 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic122 = [ + 0, 63, 0, 65, 0, 70, 0, 0, + 0, 63, 60, 70, 0, 0, 0, 0, + 0, 63, 0, 70, 0, 63, 0, 70, + 0, 67, 0, 70, 63, 63, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic123.scd b/sound_algo/palette/melodies/short/mHypnotic123.scd new file mode 100644 index 0000000..859b0ee --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic123 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic123 = [ + 72, 60, 72, 67, 72, 0, 72, 67, + 72, 72, 72, 0, 72, 72, 0, 67, + 65, 72, 72, 0, 72, 72, 0, 67, + 72, 72, 72, 67, 72, 72, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic124.scd b/sound_algo/palette/melodies/short/mHypnotic124.scd new file mode 100644 index 0000000..ea5581c --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic124 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic124 = [ + 60, 65, 63, 0, 67, 65, 0, 0, + 67, 65, 72, 0, 67, 65, 63, 70, + 0, 0, 63, 0, 0, 65, 63, 0, + 0, 0, 63, 0, 67, 65, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic125.scd b/sound_algo/palette/melodies/short/mHypnotic125.scd new file mode 100644 index 0000000..b4e6cc2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic125 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic125 = [ + 60, 67, 67, 0, 60, 72, 67, 0, + 0, 0, 60, 0, 60, 72, 67, 0, + 60, 72, 0, 0, 0, 72, 67, 0, + 60, 72, 67, 0, 60, 72, 67, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic126.scd b/sound_algo/palette/melodies/short/mHypnotic126.scd new file mode 100644 index 0000000..cb4b292 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic126 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic126 = [ + 63, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 63, 0, 63, 0, + 63, 0, 63, 0, 0, 0, 63, 0, + 0, 0, 60, 0, 0, 0, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic127.scd b/sound_algo/palette/melodies/short/mHypnotic127.scd new file mode 100644 index 0000000..1465102 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic127 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic127 = [ + 72, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, 0, 63, + 0, 70, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 60, 67, 0, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic128.scd b/sound_algo/palette/melodies/short/mHypnotic128.scd new file mode 100644 index 0000000..67b64e3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic128 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic128 = [ + 0, 0, 72, 0, 0, 0, 72, 0, + 0, 0, 72, 0, 0, 0, 72, 0, + 0, 0, 0, 67, 0, 0, 72, 0, + 0, 0, 63, 72, 0, 65, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic129.scd b/sound_algo/palette/melodies/short/mHypnotic129.scd new file mode 100644 index 0000000..24405b7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic129 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic129 = [ + 63, 65, 67, 0, 63, 65, 67, 60, + 63, 65, 67, 60, 63, 0, 67, 60, + 63, 0, 0, 70, 63, 65, 67, 60, + 0, 0, 67, 60, 0, 65, 67, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic130.scd b/sound_algo/palette/melodies/short/mHypnotic130.scd new file mode 100644 index 0000000..c36cbeb --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic130 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic130 = [ + 60, 63, 0, 0, 0, 0, 0, 0, + 60, 63, 0, 0, 67, 63, 0, 0, + 60, 63, 0, 0, 0, 63, 0, 72, + 60, 63, 0, 0, 60, 63, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic131.scd b/sound_algo/palette/melodies/short/mHypnotic131.scd new file mode 100644 index 0000000..dbacf4a --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic131 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic131 = [ + 63, 0, 63, 63, 63, 0, 60, 63, + 63, 0, 60, 63, 63, 0, 70, 63, + 63, 0, 60, 70, 63, 0, 0, 63, + 60, 0, 60, 63, 0, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic132.scd b/sound_algo/palette/melodies/short/mHypnotic132.scd new file mode 100644 index 0000000..4a2324f --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic132 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic132 = [ + 0, 0, 70, 60, 0, 0, 0, 60, + 65, 67, 70, 60, 0, 72, 70, 60, + 0, 0, 70, 60, 0, 0, 70, 67, + 0, 0, 70, 60, 0, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic133.scd b/sound_algo/palette/melodies/short/mHypnotic133.scd new file mode 100644 index 0000000..4b76375 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic133 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic133 = [ + 67, 65, 0, 0, 0, 67, 0, 0, + 0, 67, 63, 0, 0, 67, 63, 0, + 0, 67, 63, 0, 0, 67, 63, 0, + 0, 67, 0, 0, 0, 67, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic134.scd b/sound_algo/palette/melodies/short/mHypnotic134.scd new file mode 100644 index 0000000..d178429 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic134 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic134 = [ + 63, 67, 0, 63, 60, 67, 0, 0, + 0, 0, 0, 65, 0, 67, 0, 63, + 0, 67, 0, 63, 0, 60, 0, 63, + 0, 67, 0, 63, 0, 67, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic135.scd b/sound_algo/palette/melodies/short/mHypnotic135.scd new file mode 100644 index 0000000..367a8ec --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic135 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic135 = [ + 63, 0, 67, 0, 63, 0, 67, 0, + 63, 0, 67, 0, 63, 0, 67, 0, + 0, 0, 67, 0, 63, 0, 67, 0, + 63, 0, 0, 0, 63, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic136.scd b/sound_algo/palette/melodies/short/mHypnotic136.scd new file mode 100644 index 0000000..9fb71e9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic136 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic136 = [ + 67, 0, 0, 0, 67, 0, 0, 0, + 67, 0, 72, 0, 67, 0, 0, 0, + 67, 0, 70, 0, 67, 0, 0, 0, + 0, 0, 63, 0, 67, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic137.scd b/sound_algo/palette/melodies/short/mHypnotic137.scd new file mode 100644 index 0000000..042efc0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic137 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic137 = [ + 72, 72, 0, 72, 0, 72, 0, 0, + 0, 72, 0, 72, 67, 0, 0, 72, + 72, 72, 67, 72, 63, 72, 0, 72, + 0, 0, 0, 65, 72, 72, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic138.scd b/sound_algo/palette/melodies/short/mHypnotic138.scd new file mode 100644 index 0000000..9da23a2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic138 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic138 = [ + 60, 63, 72, 0, 0, 63, 0, 0, + 60, 0, 63, 0, 60, 63, 63, 0, + 67, 63, 63, 60, 60, 63, 0, 0, + 60, 63, 63, 0, 60, 0, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic139.scd b/sound_algo/palette/melodies/short/mHypnotic139.scd new file mode 100644 index 0000000..ba3d9cf --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic139 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic139 = [ + 0, 0, 0, 0, 0, 63, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic140.scd b/sound_algo/palette/melodies/short/mHypnotic140.scd new file mode 100644 index 0000000..1e1de14 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic140 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic140 = [ + 0, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 63, 0, 65, 0, 0, 0, + 0, 0, 0, 0, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic141.scd b/sound_algo/palette/melodies/short/mHypnotic141.scd new file mode 100644 index 0000000..5596bc6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic141 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic141 = [ + 63, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 70, 0, 0, + 0, 0, 0, 0, 0, 72, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic142.scd b/sound_algo/palette/melodies/short/mHypnotic142.scd new file mode 100644 index 0000000..1827248 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic142 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic142 = [ + 0, 0, 0, 67, 0, 67, 0, 67, + 0, 0, 0, 67, 0, 0, 70, 0, + 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 67, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic143.scd b/sound_algo/palette/melodies/short/mHypnotic143.scd new file mode 100644 index 0000000..4fbce86 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic143 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic143 = [ + 72, 65, 0, 67, 0, 0, 0, 67, + 0, 0, 0, 67, 67, 72, 0, 67, + 0, 0, 0, 67, 67, 72, 0, 67, + 0, 0, 0, 67, 72, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic144.scd b/sound_algo/palette/melodies/short/mHypnotic144.scd new file mode 100644 index 0000000..b19e5b8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic144 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic144 = [ + 65, 0, 0, 0, 65, 0, 0, 0, + 65, 0, 0, 0, 65, 67, 0, 0, + 65, 0, 60, 0, 65, 0, 0, 0, + 65, 0, 0, 0, 60, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic145.scd b/sound_algo/palette/melodies/short/mHypnotic145.scd new file mode 100644 index 0000000..cd27c99 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic145 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic145 = [ + 60, 0, 63, 72, 67, 0, 0, 70, + 0, 0, 0, 63, 0, 0, 0, 63, + 0, 67, 0, 63, 0, 0, 67, 63, + 63, 0, 0, 0, 0, 0, 72, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic146.scd b/sound_algo/palette/melodies/short/mHypnotic146.scd new file mode 100644 index 0000000..6376a0e --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic146 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic146 = [ + 70, 0, 60, 0, 70, 60, 60, 0, + 70, 0, 60, 0, 70, 0, 60, 0, + 0, 0, 60, 0, 70, 0, 60, 0, + 0, 0, 60, 60, 70, 0, 60, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic147.scd b/sound_algo/palette/melodies/short/mHypnotic147.scd new file mode 100644 index 0000000..ee49c44 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic147 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic147 = [ + 65, 0, 67, 63, 65, 0, 65, 63, + 65, 0, 65, 63, 65, 0, 0, 63, + 67, 0, 65, 63, 65, 60, 65, 63, + 72, 0, 70, 0, 65, 0, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic148.scd b/sound_algo/palette/melodies/short/mHypnotic148.scd new file mode 100644 index 0000000..af26214 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic148 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic148 = [ + 60, 0, 0, 0, 60, 0, 0, 0, + 60, 0, 0, 0, 60, 0, 0, 0, + 60, 0, 0, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 63, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic149.scd b/sound_algo/palette/melodies/short/mHypnotic149.scd new file mode 100644 index 0000000..06f8b6c --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic149 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic149 = [ + 67, 0, 0, 0, 67, 0, 70, 0, + 67, 0, 0, 0, 67, 0, 0, 0, + 67, 72, 0, 67, 67, 0, 0, 0, + 67, 0, 0, 0, 67, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic150.scd b/sound_algo/palette/melodies/short/mHypnotic150.scd new file mode 100644 index 0000000..751f748 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic150 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic150 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 72, 0, 63, 0, 60, + 0, 0, 0, 60, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic151.scd b/sound_algo/palette/melodies/short/mHypnotic151.scd new file mode 100644 index 0000000..bf67ce3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic151 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic151 = [ + 60, 0, 0, 70, 60, 0, 0, 70, + 60, 63, 0, 0, 60, 0, 63, 70, + 60, 63, 0, 70, 0, 63, 0, 70, + 0, 63, 0, 70, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic152.scd b/sound_algo/palette/melodies/short/mHypnotic152.scd new file mode 100644 index 0000000..f93f2ba --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic152 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic152 = [ + 60, 0, 0, 0, 0, 72, 0, 65, + 60, 72, 0, 0, 60, 72, 0, 65, + 60, 72, 70, 65, 60, 72, 0, 67, + 60, 72, 60, 67, 72, 72, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic153.scd b/sound_algo/palette/melodies/short/mHypnotic153.scd new file mode 100644 index 0000000..29b5f05 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic153 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic153 = [ + 72, 0, 0, 0, 72, 0, 70, 0, + 63, 0, 0, 0, 67, 0, 0, 0, + 0, 67, 70, 0, 0, 0, 0, 0, + 72, 0, 0, 0, 72, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic154.scd b/sound_algo/palette/melodies/short/mHypnotic154.scd new file mode 100644 index 0000000..7c8cf93 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic154 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic154 = [ + 60, 60, 0, 0, 60, 63, 0, 0, + 67, 63, 0, 0, 60, 70, 0, 0, + 60, 63, 0, 0, 60, 0, 0, 0, + 63, 63, 63, 0, 0, 63, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic155.scd b/sound_algo/palette/melodies/short/mHypnotic155.scd new file mode 100644 index 0000000..2a003b3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic155 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic155 = [ + 70, 0, 67, 0, 63, 63, 67, 0, + 70, 63, 67, 0, 0, 0, 67, 0, + 70, 65, 67, 0, 70, 65, 67, 0, + 70, 65, 67, 0, 72, 65, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic156.scd b/sound_algo/palette/melodies/short/mHypnotic156.scd new file mode 100644 index 0000000..41eddd9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic156 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic156 = [ + 70, 0, 0, 0, 70, 0, 0, 0, + 70, 65, 0, 0, 70, 0, 0, 0, + 70, 0, 0, 0, 70, 0, 60, 0, + 70, 0, 0, 0, 70, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic157.scd b/sound_algo/palette/melodies/short/mHypnotic157.scd new file mode 100644 index 0000000..c4c2b5d --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic157 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic157 = [ + 0, 70, 0, 72, 63, 0, 0, 72, + 0, 70, 0, 0, 0, 70, 72, 72, + 0, 0, 0, 72, 0, 70, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic158.scd b/sound_algo/palette/melodies/short/mHypnotic158.scd new file mode 100644 index 0000000..8ec337f --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic158 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic158 = [ + 0, 65, 70, 70, 0, 65, 0, 70, + 0, 63, 70, 70, 0, 0, 0, 67, + 0, 65, 70, 70, 0, 65, 70, 70, + 0, 65, 70, 0, 0, 65, 70, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic159.scd b/sound_algo/palette/melodies/short/mHypnotic159.scd new file mode 100644 index 0000000..57b7769 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic159 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic159 = [ + 72, 0, 60, 60, 72, 0, 0, 63, + 72, 0, 0, 63, 72, 0, 60, 0, + 72, 67, 60, 63, 0, 0, 60, 63, + 72, 0, 60, 63, 72, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic160.scd b/sound_algo/palette/melodies/short/mHypnotic160.scd new file mode 100644 index 0000000..c9ad55e --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic160 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic160 = [ + 0, 63, 0, 0, 0, 0, 0, 72, + 0, 60, 0, 0, 0, 60, 0, 0, + 67, 60, 0, 0, 0, 60, 0, 0, + 0, 60, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic161.scd b/sound_algo/palette/melodies/short/mHypnotic161.scd new file mode 100644 index 0000000..64e9e79 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic161 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic161 = [ + 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 70, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic162.scd b/sound_algo/palette/melodies/short/mHypnotic162.scd new file mode 100644 index 0000000..8537d89 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic162 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic162 = [ + 0, 0, 0, 67, 0, 0, 0, 67, + 63, 0, 0, 67, 60, 0, 0, 0, + 72, 0, 0, 0, 0, 0, 72, 67, + 0, 0, 0, 67, 67, 0, 70, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic163.scd b/sound_algo/palette/melodies/short/mHypnotic163.scd new file mode 100644 index 0000000..ee0f352 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic163 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic163 = [ + 0, 0, 0, 0, 0, 63, 0, 0, + 0, 0, 0, 0, 0, 72, 65, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 65, 0, 70, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic164.scd b/sound_algo/palette/melodies/short/mHypnotic164.scd new file mode 100644 index 0000000..87d168f --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic164 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic164 = [ + 72, 0, 0, 65, 70, 0, 67, 65, + 72, 0, 67, 65, 72, 0, 67, 65, + 72, 0, 67, 65, 0, 0, 67, 65, + 0, 0, 0, 65, 72, 0, 67, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic165.scd b/sound_algo/palette/melodies/short/mHypnotic165.scd new file mode 100644 index 0000000..2334fd7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic165 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic165 = [ + 60, 60, 0, 72, 0, 60, 0, 72, + 0, 60, 0, 72, 60, 0, 0, 72, + 0, 67, 0, 0, 60, 60, 0, 0, + 72, 60, 67, 72, 0, 0, 67, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic166.scd b/sound_algo/palette/melodies/short/mHypnotic166.scd new file mode 100644 index 0000000..09e1b22 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic166 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic166 = [ + 63, 67, 0, 0, 63, 67, 72, 63, + 63, 67, 63, 63, 0, 67, 60, 63, + 63, 67, 60, 63, 63, 67, 60, 63, + 63, 0, 60, 63, 63, 67, 60, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic167.scd b/sound_algo/palette/melodies/short/mHypnotic167.scd new file mode 100644 index 0000000..64bf8e3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic167 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic167 = [ + 70, 0, 0, 0, 70, 0, 0, 63, + 70, 0, 0, 60, 70, 0, 0, 0, + 70, 0, 65, 60, 0, 0, 0, 67, + 63, 0, 0, 60, 70, 0, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic168.scd b/sound_algo/palette/melodies/short/mHypnotic168.scd new file mode 100644 index 0000000..e90d34f --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic168 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic168 = [ + 60, 0, 70, 0, 72, 65, 70, 0, + 72, 65, 0, 0, 72, 65, 0, 0, + 72, 65, 70, 0, 72, 0, 70, 0, + 0, 65, 60, 0, 0, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic169.scd b/sound_algo/palette/melodies/short/mHypnotic169.scd new file mode 100644 index 0000000..da65691 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic169 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic169 = [ + 65, 0, 72, 0, 63, 0, 0, 0, + 63, 70, 72, 0, 63, 65, 67, 0, + 0, 65, 0, 0, 60, 65, 72, 0, + 65, 65, 72, 0, 0, 65, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic170.scd b/sound_algo/palette/melodies/short/mHypnotic170.scd new file mode 100644 index 0000000..6219ac6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic170 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic170 = [ + 67, 0, 0, 0, 67, 0, 0, 63, + 67, 0, 0, 63, 72, 0, 0, 0, + 60, 0, 0, 63, 67, 65, 0, 0, + 67, 72, 65, 63, 67, 0, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic171.scd b/sound_algo/palette/melodies/short/mHypnotic171.scd new file mode 100644 index 0000000..8285573 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic171 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic171 = [ + 72, 60, 0, 0, 72, 0, 70, 0, + 0, 60, 0, 0, 63, 60, 0, 0, + 72, 60, 0, 0, 70, 60, 0, 0, + 60, 60, 0, 0, 72, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic172.scd b/sound_algo/palette/melodies/short/mHypnotic172.scd new file mode 100644 index 0000000..b3ba6d9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic172 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic172 = [ + 65, 72, 65, 60, 65, 72, 65, 60, + 65, 0, 65, 60, 65, 72, 0, 60, + 0, 70, 65, 60, 65, 65, 65, 60, + 65, 72, 65, 0, 70, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic173.scd b/sound_algo/palette/melodies/short/mHypnotic173.scd new file mode 100644 index 0000000..5e0da15 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic173 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic173 = [ + 0, 60, 0, 63, 67, 60, 0, 0, + 0, 60, 65, 65, 67, 60, 0, 0, + 67, 60, 0, 0, 72, 60, 0, 0, + 67, 60, 0, 70, 67, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic174.scd b/sound_algo/palette/melodies/short/mHypnotic174.scd new file mode 100644 index 0000000..ada8a91 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic174 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic174 = [ + 0, 0, 72, 0, 0, 0, 72, 0, + 0, 0, 72, 0, 0, 0, 72, 0, + 0, 0, 72, 0, 0, 0, 72, 0, + 0, 0, 72, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic175.scd b/sound_algo/palette/melodies/short/mHypnotic175.scd new file mode 100644 index 0000000..07462d4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic175 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic175 = [ + 72, 0, 65, 60, 67, 63, 65, 60, + 0, 0, 0, 0, 67, 0, 0, 60, + 67, 0, 65, 60, 0, 0, 65, 0, + 67, 0, 65, 60, 67, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic176.scd b/sound_algo/palette/melodies/short/mHypnotic176.scd new file mode 100644 index 0000000..42f13f3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic176 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic176 = [ + 72, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 72, 0, 0, 0, + 72, 0, 0, 0, 72, 0, 0, 0, + 72, 0, 0, 0, 72, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic177.scd b/sound_algo/palette/melodies/short/mHypnotic177.scd new file mode 100644 index 0000000..fa03ae8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic177 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic177 = [ + 0, 0, 60, 0, 0, 0, 60, 0, + 60, 67, 60, 0, 72, 67, 0, 0, + 63, 60, 67, 0, 63, 0, 60, 0, + 63, 67, 60, 0, 63, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic178.scd b/sound_algo/palette/melodies/short/mHypnotic178.scd new file mode 100644 index 0000000..2405553 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic178 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic178 = [ + 70, 67, 60, 72, 70, 67, 63, 60, + 70, 67, 60, 60, 0, 60, 60, 60, + 0, 67, 0, 60, 70, 67, 60, 60, + 70, 67, 60, 60, 70, 67, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic179.scd b/sound_algo/palette/melodies/short/mHypnotic179.scd new file mode 100644 index 0000000..7e59613 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic179 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic179 = [ + 0, 0, 0, 0, 0, 63, 63, 0, + 0, 0, 63, 0, 0, 0, 63, 0, + 0, 0, 0, 0, 0, 0, 63, 0, + 0, 70, 63, 0, 63, 0, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic180.scd b/sound_algo/palette/melodies/short/mHypnotic180.scd new file mode 100644 index 0000000..2141697 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic180 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic180 = [ + 67, 0, 0, 72, 67, 0, 0, 72, + 67, 60, 0, 72, 67, 0, 0, 0, + 67, 0, 0, 72, 67, 0, 0, 72, + 67, 70, 0, 72, 67, 67, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic181.scd b/sound_algo/palette/melodies/short/mHypnotic181.scd new file mode 100644 index 0000000..6047747 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic181 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic181 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic182.scd b/sound_algo/palette/melodies/short/mHypnotic182.scd new file mode 100644 index 0000000..5199aa8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic182 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic182 = [ + 0, 0, 63, 63, 0, 0, 63, 63, + 0, 0, 63, 63, 0, 0, 63, 67, + 0, 0, 60, 70, 0, 0, 0, 63, + 0, 63, 63, 63, 0, 0, 72, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic183.scd b/sound_algo/palette/melodies/short/mHypnotic183.scd new file mode 100644 index 0000000..dd9c381 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic183 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic183 = [ + 0, 65, 70, 67, 0, 65, 0, 0, + 0, 65, 0, 60, 0, 65, 0, 60, + 0, 65, 0, 60, 70, 65, 0, 65, + 0, 65, 0, 60, 67, 65, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic184.scd b/sound_algo/palette/melodies/short/mHypnotic184.scd new file mode 100644 index 0000000..5bce90e --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic184.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic184 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic184 = [ + 0, 67, 0, 60, 63, 0, 0, 0, + 0, 0, 60, 60, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 60, 0, 0, 60, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic185.scd b/sound_algo/palette/melodies/short/mHypnotic185.scd new file mode 100644 index 0000000..0d24afd --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic185.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic185 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic185 = [ + 67, 0, 72, 60, 0, 0, 65, 60, + 67, 0, 65, 0, 67, 0, 0, 0, + 67, 0, 65, 63, 67, 0, 0, 60, + 67, 0, 65, 60, 67, 0, 65, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic186.scd b/sound_algo/palette/melodies/short/mHypnotic186.scd new file mode 100644 index 0000000..653dea7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic186.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic186 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic186 = [ + 63, 60, 0, 65, 63, 0, 0, 65, + 63, 0, 60, 65, 63, 0, 0, 0, + 0, 0, 0, 65, 63, 0, 0, 65, + 63, 0, 0, 0, 63, 0, 70, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic187.scd b/sound_algo/palette/melodies/short/mHypnotic187.scd new file mode 100644 index 0000000..23b1f7d --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic187.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic187 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic187 = [ + 0, 67, 0, 0, 0, 63, 72, 0, + 0, 0, 72, 0, 0, 0, 0, 0, + 0, 67, 60, 0, 0, 0, 65, 0, + 0, 0, 60, 0, 0, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic188.scd b/sound_algo/palette/melodies/short/mHypnotic188.scd new file mode 100644 index 0000000..1f69b74 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic188.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic188 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic188 = [ + 0, 0, 67, 65, 0, 0, 63, 65, + 0, 72, 67, 65, 0, 60, 0, 65, + 0, 72, 0, 0, 0, 72, 70, 65, + 0, 72, 0, 0, 0, 72, 67, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic189.scd b/sound_algo/palette/melodies/short/mHypnotic189.scd new file mode 100644 index 0000000..e4a92e4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic189.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic189 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic189 = [ + 60, 60, 0, 0, 70, 60, 0, 0, + 70, 72, 0, 0, 67, 60, 0, 0, + 70, 70, 70, 0, 0, 60, 0, 0, + 72, 60, 0, 0, 70, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic190.scd b/sound_algo/palette/melodies/short/mHypnotic190.scd new file mode 100644 index 0000000..c1170f1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic190.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic190 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic190 = [ + 72, 72, 0, 72, 0, 72, 70, 72, + 0, 0, 70, 0, 0, 72, 0, 72, + 0, 0, 70, 67, 0, 72, 0, 72, + 0, 72, 0, 72, 0, 72, 70, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic191.scd b/sound_algo/palette/melodies/short/mHypnotic191.scd new file mode 100644 index 0000000..bf3203f --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic191.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic191 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic191 = [ + 0, 70, 63, 60, 0, 65, 63, 60, + 0, 72, 0, 0, 0, 70, 63, 60, + 0, 0, 63, 60, 60, 70, 63, 60, + 0, 0, 70, 60, 0, 70, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic192.scd b/sound_algo/palette/melodies/short/mHypnotic192.scd new file mode 100644 index 0000000..dedeed4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic192.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic192 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic192 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic193.scd b/sound_algo/palette/melodies/short/mHypnotic193.scd new file mode 100644 index 0000000..8d83b50 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic193.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic193 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic193 = [ + 63, 63, 0, 0, 63, 63, 0, 63, + 0, 63, 0, 0, 63, 63, 67, 65, + 60, 63, 72, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 63, 63, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic194.scd b/sound_algo/palette/melodies/short/mHypnotic194.scd new file mode 100644 index 0000000..52ceabc --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic194.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic194 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic194 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 60, 0, 0, 65, + 0, 0, 70, 0, 0, 63, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic195.scd b/sound_algo/palette/melodies/short/mHypnotic195.scd new file mode 100644 index 0000000..0dfb033 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic195.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic195 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic195 = [ + 70, 60, 0, 60, 70, 60, 0, 60, + 72, 60, 0, 60, 70, 60, 63, 0, + 70, 60, 72, 60, 0, 60, 0, 60, + 67, 60, 0, 0, 70, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic196.scd b/sound_algo/palette/melodies/short/mHypnotic196.scd new file mode 100644 index 0000000..732f1be --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic196.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic196 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic196 = [ + 72, 60, 60, 65, 72, 0, 67, 65, + 72, 0, 60, 0, 0, 0, 60, 65, + 72, 0, 60, 65, 72, 0, 60, 65, + 72, 0, 60, 65, 72, 60, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic197.scd b/sound_algo/palette/melodies/short/mHypnotic197.scd new file mode 100644 index 0000000..39ce1a5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic197.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic197 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic197 = [ + 72, 0, 0, 0, 72, 0, 60, 0, + 72, 0, 70, 0, 60, 0, 0, 0, + 72, 0, 0, 0, 72, 0, 60, 0, + 72, 72, 60, 0, 72, 70, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic198.scd b/sound_algo/palette/melodies/short/mHypnotic198.scd new file mode 100644 index 0000000..33f6762 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic198.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic198 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic198 = [ + 0, 60, 65, 0, 0, 72, 0, 60, + 0, 72, 70, 0, 0, 72, 70, 60, + 0, 72, 70, 60, 0, 0, 70, 60, + 0, 0, 0, 0, 0, 70, 70, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic199.scd b/sound_algo/palette/melodies/short/mHypnotic199.scd new file mode 100644 index 0000000..b9d28eb --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic199.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic199 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic199 = [ + 67, 67, 0, 0, 67, 67, 0, 0, + 67, 67, 0, 67, 67, 0, 0, 65, + 0, 67, 0, 0, 67, 67, 0, 70, + 67, 0, 0, 70, 67, 0, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic200.scd b/sound_algo/palette/melodies/short/mHypnotic200.scd new file mode 100644 index 0000000..a9add26 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic200.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic200 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic200 = [ + 0, 0, 65, 0, 0, 0, 65, 65, + 0, 0, 65, 65, 0, 0, 65, 65, + 0, 72, 65, 65, 0, 0, 0, 65, + 0, 0, 65, 65, 0, 72, 65, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic201.scd b/sound_algo/palette/melodies/short/mHypnotic201.scd new file mode 100644 index 0000000..530a628 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic201.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic201 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic201 = [ + 67, 72, 0, 0, 63, 65, 0, 0, + 60, 65, 0, 0, 63, 72, 0, 0, + 67, 72, 0, 0, 63, 72, 0, 0, + 63, 72, 0, 0, 63, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic202.scd b/sound_algo/palette/melodies/short/mHypnotic202.scd new file mode 100644 index 0000000..96a7998 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic202.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic202 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic202 = [ + 0, 0, 65, 60, 60, 0, 0, 60, + 0, 0, 0, 60, 70, 0, 67, 60, + 67, 0, 0, 60, 0, 0, 0, 60, + 0, 0, 0, 60, 0, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic203.scd b/sound_algo/palette/melodies/short/mHypnotic203.scd new file mode 100644 index 0000000..abecf7c --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic203.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic203 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic203 = [ + 67, 65, 0, 0, 63, 63, 63, 0, + 70, 60, 0, 0, 72, 0, 0, 0, + 0, 60, 0, 0, 70, 60, 0, 0, + 70, 72, 0, 0, 70, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic204.scd b/sound_algo/palette/melodies/short/mHypnotic204.scd new file mode 100644 index 0000000..fd2b289 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic204.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic204 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic204 = [ + 63, 65, 60, 0, 63, 65, 60, 0, + 63, 65, 60, 0, 63, 65, 60, 0, + 63, 65, 60, 0, 63, 65, 60, 0, + 63, 65, 60, 0, 63, 65, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic205.scd b/sound_algo/palette/melodies/short/mHypnotic205.scd new file mode 100644 index 0000000..aae8630 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic205.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic205 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic205 = [ + 63, 63, 0, 0, 63, 63, 0, 65, + 63, 67, 0, 0, 63, 63, 0, 65, + 0, 0, 0, 0, 63, 63, 0, 0, + 63, 63, 0, 65, 0, 72, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic206.scd b/sound_algo/palette/melodies/short/mHypnotic206.scd new file mode 100644 index 0000000..627082b --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic206.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic206 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic206 = [ + 65, 0, 63, 0, 70, 0, 63, 72, + 65, 0, 63, 72, 0, 72, 63, 72, + 72, 63, 63, 0, 65, 0, 60, 63, + 65, 0, 63, 72, 65, 0, 63, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic207.scd b/sound_algo/palette/melodies/short/mHypnotic207.scd new file mode 100644 index 0000000..79edbc0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic207.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic207 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic207 = [ + 0, 0, 0, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 0, 70, 65, + 0, 0, 0, 65, 0, 0, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic208.scd b/sound_algo/palette/melodies/short/mHypnotic208.scd new file mode 100644 index 0000000..aee4394 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic208.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic208 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic208 = [ + 0, 0, 65, 0, 63, 67, 67, 0, + 67, 67, 65, 0, 0, 67, 65, 0, + 0, 67, 65, 0, 0, 67, 65, 0, + 0, 67, 65, 0, 0, 67, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic209.scd b/sound_algo/palette/melodies/short/mHypnotic209.scd new file mode 100644 index 0000000..f078a29 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic209.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic209 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic209 = [ + 63, 65, 60, 63, 60, 65, 0, 0, + 67, 0, 67, 0, 0, 70, 60, 65, + 65, 0, 60, 0, 0, 0, 60, 0, + 72, 0, 60, 0, 72, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic210.scd b/sound_algo/palette/melodies/short/mHypnotic210.scd new file mode 100644 index 0000000..2fb3fd3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic210.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic210 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic210 = [ + 0, 65, 0, 0, 0, 0, 65, 0, + 0, 65, 60, 0, 0, 65, 65, 0, + 0, 65, 0, 0, 0, 63, 65, 0, + 0, 67, 65, 63, 67, 72, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mHypnotic211.scd b/sound_algo/palette/melodies/short/mHypnotic211.scd new file mode 100644 index 0000000..eff2ed2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mHypnotic211.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mHypnotic211 -- short melody (32 steps), genre: hypnotic +// ===================================================================== +( +~mHypnotic211 = [ + 60, 0, 63, 67, 60, 0, 63, 60, + 67, 0, 63, 60, 60, 0, 63, 67, + 60, 0, 63, 60, 60, 0, 63, 60, + 60, 0, 63, 60, 60, 0, 63, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial100.scd b/sound_algo/palette/melodies/short/mIndustrial100.scd new file mode 100644 index 0000000..c46ec9b --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial100 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial100 = [ + 42, 0, 42, 0, 42, 0, 42, 0, + 42, 0, 42, 0, 42, 0, 42, 0, + 42, 0, 42, 0, 42, 0, 42, 0, + 42, 0, 42, 0, 42, 0, 42, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial101.scd b/sound_algo/palette/melodies/short/mIndustrial101.scd new file mode 100644 index 0000000..67bbfee --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial101 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial101 = [ + 40, 58, 43, 0, 40, 58, 43, 0, + 40, 58, 43, 0, 40, 58, 43, 0, + 40, 58, 43, 0, 40, 58, 43, 0, + 40, 58, 43, 0, 40, 58, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial102.scd b/sound_algo/palette/melodies/short/mIndustrial102.scd new file mode 100644 index 0000000..a073308 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial102 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial102 = [ + 60, 46, 50, 45, 60, 46, 50, 45, + 60, 46, 50, 45, 60, 46, 50, 45, + 60, 46, 50, 45, 60, 46, 50, 45, + 60, 46, 50, 45, 60, 46, 50, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial103.scd b/sound_algo/palette/melodies/short/mIndustrial103.scd new file mode 100644 index 0000000..a3013f5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial103 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial103 = [ + 50, 54, 42, 56, 50, 54, 42, 56, + 50, 54, 42, 56, 50, 54, 42, 56, + 50, 54, 42, 56, 50, 54, 42, 56, + 50, 54, 42, 56, 50, 54, 42, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial104.scd b/sound_algo/palette/melodies/short/mIndustrial104.scd new file mode 100644 index 0000000..3cfaddf --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial104 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial104 = [ + 56, 42, 53, 0, 56, 42, 53, 0, + 56, 42, 53, 0, 56, 42, 53, 0, + 56, 42, 53, 0, 56, 42, 53, 0, + 56, 42, 53, 0, 56, 42, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial105.scd b/sound_algo/palette/melodies/short/mIndustrial105.scd new file mode 100644 index 0000000..020c663 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial105 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial105 = [ + 53, 48, 57, 43, 53, 48, 57, 43, + 53, 48, 57, 43, 53, 48, 57, 43, + 53, 48, 57, 43, 53, 48, 57, 43, + 53, 48, 57, 43, 53, 48, 57, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial106.scd b/sound_algo/palette/melodies/short/mIndustrial106.scd new file mode 100644 index 0000000..63d51df --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial106 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial106 = [ + 55, 53, 45, 46, 55, 53, 45, 46, + 55, 53, 45, 46, 55, 53, 45, 46, + 55, 53, 45, 46, 55, 53, 45, 46, + 55, 53, 45, 46, 55, 53, 45, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial107.scd b/sound_algo/palette/melodies/short/mIndustrial107.scd new file mode 100644 index 0000000..3dd0a60 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial107 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial107 = [ + 55, 0, 0, 58, 55, 0, 0, 58, + 55, 0, 0, 58, 55, 0, 0, 58, + 55, 0, 0, 58, 55, 0, 0, 58, + 55, 0, 0, 58, 55, 0, 0, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial108.scd b/sound_algo/palette/melodies/short/mIndustrial108.scd new file mode 100644 index 0000000..4e2caf5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial108 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial108 = [ + 39, 0, 44, 56, 39, 0, 44, 56, + 39, 0, 44, 56, 39, 0, 44, 56, + 39, 0, 44, 56, 39, 0, 44, 56, + 39, 0, 44, 56, 39, 0, 44, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial109.scd b/sound_algo/palette/melodies/short/mIndustrial109.scd new file mode 100644 index 0000000..3db9dbd --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial109 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial109 = [ + 38, 0, 0, 60, 38, 0, 0, 60, + 38, 0, 0, 60, 38, 0, 0, 60, + 38, 0, 0, 60, 38, 0, 0, 60, + 38, 0, 0, 60, 38, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial110.scd b/sound_algo/palette/melodies/short/mIndustrial110.scd new file mode 100644 index 0000000..e2ba356 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial110 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial110 = [ + 54, 52, 55, 37, 54, 52, 55, 37, + 54, 52, 55, 37, 54, 52, 55, 37, + 54, 52, 55, 37, 54, 52, 55, 37, + 54, 52, 55, 37, 54, 52, 55, 37 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial111.scd b/sound_algo/palette/melodies/short/mIndustrial111.scd new file mode 100644 index 0000000..bfc445a --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial111 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial111 = [ + 51, 48, 38, 38, 51, 48, 38, 38, + 51, 48, 38, 38, 51, 48, 38, 38, + 51, 48, 38, 38, 51, 48, 38, 38, + 51, 48, 38, 38, 51, 48, 38, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial112.scd b/sound_algo/palette/melodies/short/mIndustrial112.scd new file mode 100644 index 0000000..d107037 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial112 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial112 = [ + 55, 59, 49, 0, 55, 59, 49, 0, + 55, 59, 49, 0, 55, 59, 49, 0, + 55, 59, 49, 0, 55, 59, 49, 0, + 55, 59, 49, 0, 55, 59, 49, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial113.scd b/sound_algo/palette/melodies/short/mIndustrial113.scd new file mode 100644 index 0000000..26fc2e5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial113 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial113 = [ + 0, 46, 44, 0, 0, 46, 44, 0, + 0, 46, 44, 0, 0, 46, 44, 0, + 0, 46, 44, 0, 0, 46, 44, 0, + 0, 46, 44, 0, 0, 46, 44, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial114.scd b/sound_algo/palette/melodies/short/mIndustrial114.scd new file mode 100644 index 0000000..ea83493 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial114 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial114 = [ + 52, 57, 60, 0, 52, 57, 60, 0, + 52, 57, 60, 0, 52, 57, 60, 0, + 52, 57, 60, 0, 52, 57, 60, 0, + 52, 57, 60, 0, 52, 57, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial115.scd b/sound_algo/palette/melodies/short/mIndustrial115.scd new file mode 100644 index 0000000..4a7fecf --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial115 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial115 = [ + 51, 0, 60, 0, 51, 0, 60, 0, + 51, 0, 60, 0, 51, 0, 60, 0, + 51, 0, 60, 0, 51, 0, 60, 0, + 51, 0, 60, 0, 51, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial116.scd b/sound_algo/palette/melodies/short/mIndustrial116.scd new file mode 100644 index 0000000..4ab35e6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial116 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial116 = [ + 53, 38, 47, 48, 53, 38, 47, 48, + 53, 38, 47, 48, 53, 38, 47, 48, + 53, 38, 47, 48, 53, 38, 47, 48, + 53, 38, 47, 48, 53, 38, 47, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial117.scd b/sound_algo/palette/melodies/short/mIndustrial117.scd new file mode 100644 index 0000000..81bcfc0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial117 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial117 = [ + 42, 39, 0, 50, 42, 39, 0, 50, + 42, 39, 0, 50, 42, 39, 0, 50, + 42, 39, 0, 50, 42, 39, 0, 50, + 42, 39, 0, 50, 42, 39, 0, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial118.scd b/sound_algo/palette/melodies/short/mIndustrial118.scd new file mode 100644 index 0000000..321821c --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial118 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial118 = [ + 40, 49, 45, 50, 40, 49, 45, 50, + 40, 49, 45, 50, 40, 49, 45, 50, + 40, 49, 45, 50, 40, 49, 45, 50, + 40, 49, 45, 50, 40, 49, 45, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial119.scd b/sound_algo/palette/melodies/short/mIndustrial119.scd new file mode 100644 index 0000000..622502e --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial119 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial119 = [ + 57, 46, 57, 0, 57, 46, 57, 0, + 57, 46, 57, 0, 57, 46, 57, 0, + 57, 46, 57, 0, 57, 46, 57, 0, + 57, 46, 57, 0, 57, 46, 57, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial120.scd b/sound_algo/palette/melodies/short/mIndustrial120.scd new file mode 100644 index 0000000..06c0ab9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial120 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial120 = [ + 53, 55, 50, 46, 53, 55, 50, 46, + 53, 55, 50, 46, 53, 55, 50, 46, + 53, 55, 50, 46, 53, 55, 50, 46, + 53, 55, 50, 46, 53, 55, 50, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial121.scd b/sound_algo/palette/melodies/short/mIndustrial121.scd new file mode 100644 index 0000000..1c4a6ef --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial121 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial121 = [ + 36, 0, 57, 0, 36, 0, 57, 0, + 36, 0, 57, 0, 36, 0, 57, 0, + 36, 0, 57, 0, 36, 0, 57, 0, + 36, 0, 57, 0, 36, 0, 57, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial122.scd b/sound_algo/palette/melodies/short/mIndustrial122.scd new file mode 100644 index 0000000..2558dc7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial122 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial122 = [ + 36, 54, 50, 38, 36, 54, 50, 38, + 36, 54, 50, 38, 36, 54, 50, 38, + 36, 54, 50, 38, 36, 54, 50, 38, + 36, 54, 50, 38, 36, 54, 50, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial123.scd b/sound_algo/palette/melodies/short/mIndustrial123.scd new file mode 100644 index 0000000..ab250b0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial123 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial123 = [ + 45, 50, 0, 0, 45, 50, 0, 0, + 45, 50, 0, 0, 45, 50, 0, 0, + 45, 50, 0, 0, 45, 50, 0, 0, + 45, 50, 0, 0, 45, 50, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial124.scd b/sound_algo/palette/melodies/short/mIndustrial124.scd new file mode 100644 index 0000000..7eeeab8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial124 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial124 = [ + 45, 36, 45, 46, 45, 36, 45, 46, + 45, 36, 45, 46, 45, 36, 45, 46, + 45, 36, 45, 46, 45, 36, 45, 46, + 45, 36, 45, 46, 45, 36, 45, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial125.scd b/sound_algo/palette/melodies/short/mIndustrial125.scd new file mode 100644 index 0000000..5da4fe3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial125 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial125 = [ + 57, 0, 38, 49, 57, 0, 38, 49, + 57, 0, 38, 49, 57, 0, 38, 49, + 57, 0, 38, 49, 57, 0, 38, 49, + 57, 0, 38, 49, 57, 0, 38, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial126.scd b/sound_algo/palette/melodies/short/mIndustrial126.scd new file mode 100644 index 0000000..a139ecf --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial126 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial126 = [ + 47, 50, 40, 57, 47, 50, 40, 57, + 47, 50, 40, 57, 47, 50, 40, 57, + 47, 50, 40, 57, 47, 50, 40, 57, + 47, 50, 40, 57, 47, 50, 40, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial127.scd b/sound_algo/palette/melodies/short/mIndustrial127.scd new file mode 100644 index 0000000..eccaa12 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial127 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial127 = [ + 55, 39, 51, 48, 55, 39, 51, 48, + 55, 39, 51, 48, 55, 39, 51, 48, + 55, 39, 51, 48, 55, 39, 51, 48, + 55, 39, 51, 48, 55, 39, 51, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial128.scd b/sound_algo/palette/melodies/short/mIndustrial128.scd new file mode 100644 index 0000000..4f305a3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial128 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial128 = [ + 0, 59, 60, 40, 0, 59, 60, 40, + 0, 59, 60, 40, 0, 59, 60, 40, + 0, 59, 60, 40, 0, 59, 60, 40, + 0, 59, 60, 40, 0, 59, 60, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial129.scd b/sound_algo/palette/melodies/short/mIndustrial129.scd new file mode 100644 index 0000000..f08adec --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial129 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial129 = [ + 39, 45, 0, 43, 39, 45, 0, 43, + 39, 45, 0, 43, 39, 45, 0, 43, + 39, 45, 0, 43, 39, 45, 0, 43, + 39, 45, 0, 43, 39, 45, 0, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial130.scd b/sound_algo/palette/melodies/short/mIndustrial130.scd new file mode 100644 index 0000000..e578b37 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial130 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial130 = [ + 48, 55, 0, 46, 48, 55, 0, 46, + 48, 55, 0, 46, 48, 55, 0, 46, + 48, 55, 0, 46, 48, 55, 0, 46, + 48, 55, 0, 46, 48, 55, 0, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial131.scd b/sound_algo/palette/melodies/short/mIndustrial131.scd new file mode 100644 index 0000000..ce4b645 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial131 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial131 = [ + 54, 49, 59, 0, 54, 49, 59, 0, + 54, 49, 59, 0, 54, 49, 59, 0, + 54, 49, 59, 0, 54, 49, 59, 0, + 54, 49, 59, 0, 54, 49, 59, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial132.scd b/sound_algo/palette/melodies/short/mIndustrial132.scd new file mode 100644 index 0000000..c5f9039 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial132 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial132 = [ + 50, 50, 0, 38, 50, 50, 0, 38, + 50, 50, 0, 38, 50, 50, 0, 38, + 50, 50, 0, 38, 50, 50, 0, 38, + 50, 50, 0, 38, 50, 50, 0, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial133.scd b/sound_algo/palette/melodies/short/mIndustrial133.scd new file mode 100644 index 0000000..8056ad8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial133 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial133 = [ + 55, 52, 49, 54, 55, 52, 49, 54, + 55, 52, 49, 54, 55, 52, 49, 54, + 55, 52, 49, 54, 55, 52, 49, 54, + 55, 52, 49, 54, 55, 52, 49, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial134.scd b/sound_algo/palette/melodies/short/mIndustrial134.scd new file mode 100644 index 0000000..b258a6f --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial134 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial134 = [ + 54, 39, 51, 0, 54, 39, 51, 0, + 54, 39, 51, 0, 54, 39, 51, 0, + 54, 39, 51, 0, 54, 39, 51, 0, + 54, 39, 51, 0, 54, 39, 51, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial135.scd b/sound_algo/palette/melodies/short/mIndustrial135.scd new file mode 100644 index 0000000..2098bcb --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial135 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial135 = [ + 0, 40, 42, 40, 0, 40, 42, 40, + 0, 40, 42, 40, 0, 40, 42, 40, + 0, 40, 42, 40, 0, 40, 42, 40, + 0, 40, 42, 40, 0, 40, 42, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial136.scd b/sound_algo/palette/melodies/short/mIndustrial136.scd new file mode 100644 index 0000000..f65cd4f --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial136 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial136 = [ + 51, 0, 55, 46, 51, 0, 55, 46, + 51, 0, 55, 46, 51, 0, 55, 46, + 51, 0, 55, 46, 51, 0, 55, 46, + 51, 0, 55, 46, 51, 0, 55, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial137.scd b/sound_algo/palette/melodies/short/mIndustrial137.scd new file mode 100644 index 0000000..f8a6a62 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial137 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial137 = [ + 0, 0, 39, 41, 0, 0, 39, 41, + 0, 0, 39, 41, 0, 0, 39, 41, + 0, 0, 39, 41, 0, 0, 39, 41, + 0, 0, 39, 41, 0, 0, 39, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial138.scd b/sound_algo/palette/melodies/short/mIndustrial138.scd new file mode 100644 index 0000000..84975fc --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial138 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial138 = [ + 55, 0, 45, 39, 55, 0, 45, 39, + 55, 0, 45, 39, 55, 0, 45, 39, + 55, 0, 45, 39, 55, 0, 45, 39, + 55, 0, 45, 39, 55, 0, 45, 39 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial139.scd b/sound_algo/palette/melodies/short/mIndustrial139.scd new file mode 100644 index 0000000..216a818 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial139 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial139 = [ + 0, 60, 0, 54, 0, 60, 0, 54, + 0, 60, 0, 54, 0, 60, 0, 54, + 0, 60, 0, 54, 0, 60, 0, 54, + 0, 60, 0, 54, 0, 60, 0, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial140.scd b/sound_algo/palette/melodies/short/mIndustrial140.scd new file mode 100644 index 0000000..fb3fe69 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial140 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial140 = [ + 0, 53, 51, 36, 0, 53, 51, 36, + 0, 53, 51, 36, 0, 53, 51, 36, + 0, 53, 51, 36, 0, 53, 51, 36, + 0, 53, 51, 36, 0, 53, 51, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial141.scd b/sound_algo/palette/melodies/short/mIndustrial141.scd new file mode 100644 index 0000000..fe428a0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial141 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial141 = [ + 0, 40, 42, 57, 0, 40, 42, 57, + 0, 40, 42, 57, 0, 40, 42, 57, + 0, 40, 42, 57, 0, 40, 42, 57, + 0, 40, 42, 57, 0, 40, 42, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial142.scd b/sound_algo/palette/melodies/short/mIndustrial142.scd new file mode 100644 index 0000000..2035047 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial142 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial142 = [ + 39, 43, 48, 43, 39, 43, 48, 43, + 39, 43, 48, 43, 39, 43, 48, 43, + 39, 43, 48, 43, 39, 43, 48, 43, + 39, 43, 48, 43, 39, 43, 48, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial143.scd b/sound_algo/palette/melodies/short/mIndustrial143.scd new file mode 100644 index 0000000..17669e8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial143 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial143 = [ + 39, 37, 37, 45, 39, 37, 37, 45, + 39, 37, 37, 45, 39, 37, 37, 45, + 39, 37, 37, 45, 39, 37, 37, 45, + 39, 37, 37, 45, 39, 37, 37, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial144.scd b/sound_algo/palette/melodies/short/mIndustrial144.scd new file mode 100644 index 0000000..9b8bbbe --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial144 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial144 = [ + 45, 39, 43, 58, 45, 39, 43, 58, + 45, 39, 43, 58, 45, 39, 43, 58, + 45, 39, 43, 58, 45, 39, 43, 58, + 45, 39, 43, 58, 45, 39, 43, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial145.scd b/sound_algo/palette/melodies/short/mIndustrial145.scd new file mode 100644 index 0000000..ef6b521 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial145 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial145 = [ + 53, 43, 50, 0, 53, 43, 50, 0, + 53, 43, 50, 0, 53, 43, 50, 0, + 53, 43, 50, 0, 53, 43, 50, 0, + 53, 43, 50, 0, 53, 43, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial146.scd b/sound_algo/palette/melodies/short/mIndustrial146.scd new file mode 100644 index 0000000..f1d5543 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial146 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial146 = [ + 43, 56, 56, 47, 43, 56, 56, 47, + 43, 56, 56, 47, 43, 56, 56, 47, + 43, 56, 56, 47, 43, 56, 56, 47, + 43, 56, 56, 47, 43, 56, 56, 47 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial147.scd b/sound_algo/palette/melodies/short/mIndustrial147.scd new file mode 100644 index 0000000..46e67c2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial147 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial147 = [ + 58, 60, 45, 48, 58, 60, 45, 48, + 58, 60, 45, 48, 58, 60, 45, 48, + 58, 60, 45, 48, 58, 60, 45, 48, + 58, 60, 45, 48, 58, 60, 45, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial148.scd b/sound_algo/palette/melodies/short/mIndustrial148.scd new file mode 100644 index 0000000..3cd739b --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial148 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial148 = [ + 52, 51, 37, 41, 52, 51, 37, 41, + 52, 51, 37, 41, 52, 51, 37, 41, + 52, 51, 37, 41, 52, 51, 37, 41, + 52, 51, 37, 41, 52, 51, 37, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial149.scd b/sound_algo/palette/melodies/short/mIndustrial149.scd new file mode 100644 index 0000000..c5c72e3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial149 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial149 = [ + 46, 53, 55, 60, 46, 53, 55, 60, + 46, 53, 55, 60, 46, 53, 55, 60, + 46, 53, 55, 60, 46, 53, 55, 60, + 46, 53, 55, 60, 46, 53, 55, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial150.scd b/sound_algo/palette/melodies/short/mIndustrial150.scd new file mode 100644 index 0000000..5854a40 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial150 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial150 = [ + 53, 48, 0, 45, 53, 48, 0, 45, + 53, 48, 0, 45, 53, 48, 0, 45, + 53, 48, 0, 45, 53, 48, 0, 45, + 53, 48, 0, 45, 53, 48, 0, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial151.scd b/sound_algo/palette/melodies/short/mIndustrial151.scd new file mode 100644 index 0000000..1978c33 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial151 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial151 = [ + 0, 45, 0, 60, 0, 45, 0, 60, + 0, 45, 0, 60, 0, 45, 0, 60, + 0, 45, 0, 60, 0, 45, 0, 60, + 0, 45, 0, 60, 0, 45, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial152.scd b/sound_algo/palette/melodies/short/mIndustrial152.scd new file mode 100644 index 0000000..7a09da4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial152 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial152 = [ + 42, 56, 0, 42, 42, 56, 0, 42, + 42, 56, 0, 42, 42, 56, 0, 42, + 42, 56, 0, 42, 42, 56, 0, 42, + 42, 56, 0, 42, 42, 56, 0, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial153.scd b/sound_algo/palette/melodies/short/mIndustrial153.scd new file mode 100644 index 0000000..7f85e57 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial153 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial153 = [ + 36, 51, 44, 56, 36, 51, 44, 56, + 36, 51, 44, 56, 36, 51, 44, 56, + 36, 51, 44, 56, 36, 51, 44, 56, + 36, 51, 44, 56, 36, 51, 44, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial154.scd b/sound_algo/palette/melodies/short/mIndustrial154.scd new file mode 100644 index 0000000..f2c5d56 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial154 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial154 = [ + 48, 48, 51, 36, 48, 48, 51, 36, + 48, 48, 51, 36, 48, 48, 51, 36, + 48, 48, 51, 36, 48, 48, 51, 36, + 48, 48, 51, 36, 48, 48, 51, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial155.scd b/sound_algo/palette/melodies/short/mIndustrial155.scd new file mode 100644 index 0000000..a0e95d7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial155 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial155 = [ + 50, 60, 46, 57, 50, 60, 46, 57, + 50, 60, 46, 57, 50, 60, 46, 57, + 50, 60, 46, 57, 50, 60, 46, 57, + 50, 60, 46, 57, 50, 60, 46, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial156.scd b/sound_algo/palette/melodies/short/mIndustrial156.scd new file mode 100644 index 0000000..ffe4f93 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial156 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial156 = [ + 47, 59, 0, 47, 47, 59, 0, 47, + 47, 59, 0, 47, 47, 59, 0, 47, + 47, 59, 0, 47, 47, 59, 0, 47, + 47, 59, 0, 47, 47, 59, 0, 47 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial157.scd b/sound_algo/palette/melodies/short/mIndustrial157.scd new file mode 100644 index 0000000..6d00072 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial157 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial157 = [ + 55, 40, 0, 38, 55, 40, 0, 38, + 55, 40, 0, 38, 55, 40, 0, 38, + 55, 40, 0, 38, 55, 40, 0, 38, + 55, 40, 0, 38, 55, 40, 0, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial158.scd b/sound_algo/palette/melodies/short/mIndustrial158.scd new file mode 100644 index 0000000..8ab3d85 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial158 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial158 = [ + 0, 38, 48, 58, 0, 38, 48, 58, + 0, 38, 48, 58, 0, 38, 48, 58, + 0, 38, 48, 58, 0, 38, 48, 58, + 0, 38, 48, 58, 0, 38, 48, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial159.scd b/sound_algo/palette/melodies/short/mIndustrial159.scd new file mode 100644 index 0000000..90cc7ed --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial159 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial159 = [ + 37, 41, 45, 51, 37, 41, 45, 51, + 37, 41, 45, 51, 37, 41, 45, 51, + 37, 41, 45, 51, 37, 41, 45, 51, + 37, 41, 45, 51, 37, 41, 45, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial160.scd b/sound_algo/palette/melodies/short/mIndustrial160.scd new file mode 100644 index 0000000..b1f55c2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial160 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial160 = [ + 0, 54, 56, 38, 0, 54, 56, 38, + 0, 54, 56, 38, 0, 54, 56, 38, + 0, 54, 56, 38, 0, 54, 56, 38, + 0, 54, 56, 38, 0, 54, 56, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial161.scd b/sound_algo/palette/melodies/short/mIndustrial161.scd new file mode 100644 index 0000000..6272977 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial161 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial161 = [ + 51, 0, 60, 57, 51, 0, 60, 57, + 51, 0, 60, 57, 51, 0, 60, 57, + 51, 0, 60, 57, 51, 0, 60, 57, + 51, 0, 60, 57, 51, 0, 60, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial162.scd b/sound_algo/palette/melodies/short/mIndustrial162.scd new file mode 100644 index 0000000..d23b7af --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial162 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial162 = [ + 37, 53, 0, 54, 37, 53, 0, 54, + 37, 53, 0, 54, 37, 53, 0, 54, + 37, 53, 0, 54, 37, 53, 0, 54, + 37, 53, 0, 54, 37, 53, 0, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial163.scd b/sound_algo/palette/melodies/short/mIndustrial163.scd new file mode 100644 index 0000000..b06a552 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial163 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial163 = [ + 0, 45, 55, 46, 0, 45, 55, 46, + 0, 45, 55, 46, 0, 45, 55, 46, + 0, 45, 55, 46, 0, 45, 55, 46, + 0, 45, 55, 46, 0, 45, 55, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial164.scd b/sound_algo/palette/melodies/short/mIndustrial164.scd new file mode 100644 index 0000000..5eb74b4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial164 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial164 = [ + 0, 0, 47, 45, 0, 0, 47, 45, + 0, 0, 47, 45, 0, 0, 47, 45, + 0, 0, 47, 45, 0, 0, 47, 45, + 0, 0, 47, 45, 0, 0, 47, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial165.scd b/sound_algo/palette/melodies/short/mIndustrial165.scd new file mode 100644 index 0000000..5792adb --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial165 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial165 = [ + 48, 0, 43, 38, 48, 0, 43, 38, + 48, 0, 43, 38, 48, 0, 43, 38, + 48, 0, 43, 38, 48, 0, 43, 38, + 48, 0, 43, 38, 48, 0, 43, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial166.scd b/sound_algo/palette/melodies/short/mIndustrial166.scd new file mode 100644 index 0000000..0137dc0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial166 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial166 = [ + 36, 52, 52, 45, 36, 52, 52, 45, + 36, 52, 52, 45, 36, 52, 52, 45, + 36, 52, 52, 45, 36, 52, 52, 45, + 36, 52, 52, 45, 36, 52, 52, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial167.scd b/sound_algo/palette/melodies/short/mIndustrial167.scd new file mode 100644 index 0000000..01bec04 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial167 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial167 = [ + 59, 37, 57, 43, 59, 37, 57, 43, + 59, 37, 57, 43, 59, 37, 57, 43, + 59, 37, 57, 43, 59, 37, 57, 43, + 59, 37, 57, 43, 59, 37, 57, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial168.scd b/sound_algo/palette/melodies/short/mIndustrial168.scd new file mode 100644 index 0000000..36b6bd3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial168 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial168 = [ + 0, 0, 56, 58, 0, 0, 56, 58, + 0, 0, 56, 58, 0, 0, 56, 58, + 0, 0, 56, 58, 0, 0, 56, 58, + 0, 0, 56, 58, 0, 0, 56, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial169.scd b/sound_algo/palette/melodies/short/mIndustrial169.scd new file mode 100644 index 0000000..43a8ae9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial169 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial169 = [ + 59, 0, 55, 57, 59, 0, 55, 57, + 59, 0, 55, 57, 59, 0, 55, 57, + 59, 0, 55, 57, 59, 0, 55, 57, + 59, 0, 55, 57, 59, 0, 55, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial170.scd b/sound_algo/palette/melodies/short/mIndustrial170.scd new file mode 100644 index 0000000..234035c --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial170 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial170 = [ + 59, 43, 38, 55, 59, 43, 38, 55, + 59, 43, 38, 55, 59, 43, 38, 55, + 59, 43, 38, 55, 59, 43, 38, 55, + 59, 43, 38, 55, 59, 43, 38, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial171.scd b/sound_algo/palette/melodies/short/mIndustrial171.scd new file mode 100644 index 0000000..a37cddc --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial171 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial171 = [ + 0, 45, 36, 0, 0, 45, 36, 0, + 0, 45, 36, 0, 0, 45, 36, 0, + 0, 45, 36, 0, 0, 45, 36, 0, + 0, 45, 36, 0, 0, 45, 36, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial172.scd b/sound_algo/palette/melodies/short/mIndustrial172.scd new file mode 100644 index 0000000..0483bb7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial172 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial172 = [ + 48, 48, 40, 60, 48, 48, 40, 60, + 48, 48, 40, 60, 48, 48, 40, 60, + 48, 48, 40, 60, 48, 48, 40, 60, + 48, 48, 40, 60, 48, 48, 40, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial173.scd b/sound_algo/palette/melodies/short/mIndustrial173.scd new file mode 100644 index 0000000..7a92786 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial173 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial173 = [ + 0, 60, 0, 53, 0, 60, 0, 53, + 0, 60, 0, 53, 0, 60, 0, 53, + 0, 60, 0, 53, 0, 60, 0, 53, + 0, 60, 0, 53, 0, 60, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial174.scd b/sound_algo/palette/melodies/short/mIndustrial174.scd new file mode 100644 index 0000000..23f15e6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial174 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial174 = [ + 0, 38, 40, 42, 0, 38, 40, 42, + 0, 38, 40, 42, 0, 38, 40, 42, + 0, 38, 40, 42, 0, 38, 40, 42, + 0, 38, 40, 42, 0, 38, 40, 42 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial175.scd b/sound_algo/palette/melodies/short/mIndustrial175.scd new file mode 100644 index 0000000..6d231e2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial175 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial175 = [ + 38, 50, 60, 50, 38, 50, 60, 50, + 38, 50, 60, 50, 38, 50, 60, 50, + 38, 50, 60, 50, 38, 50, 60, 50, + 38, 50, 60, 50, 38, 50, 60, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial176.scd b/sound_algo/palette/melodies/short/mIndustrial176.scd new file mode 100644 index 0000000..3f5be71 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial176 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial176 = [ + 43, 55, 0, 40, 43, 55, 0, 40, + 43, 55, 0, 40, 43, 55, 0, 40, + 43, 55, 0, 40, 43, 55, 0, 40, + 43, 55, 0, 40, 43, 55, 0, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial177.scd b/sound_algo/palette/melodies/short/mIndustrial177.scd new file mode 100644 index 0000000..81e1de8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial177 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial177 = [ + 60, 51, 36, 60, 60, 51, 36, 60, + 60, 51, 36, 60, 60, 51, 36, 60, + 60, 51, 36, 60, 60, 51, 36, 60, + 60, 51, 36, 60, 60, 51, 36, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial178.scd b/sound_algo/palette/melodies/short/mIndustrial178.scd new file mode 100644 index 0000000..bc56866 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial178 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial178 = [ + 0, 47, 40, 36, 0, 47, 40, 36, + 0, 47, 40, 36, 0, 47, 40, 36, + 0, 47, 40, 36, 0, 47, 40, 36, + 0, 47, 40, 36, 0, 47, 40, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial179.scd b/sound_algo/palette/melodies/short/mIndustrial179.scd new file mode 100644 index 0000000..a75abc4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial179 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial179 = [ + 48, 45, 52, 0, 48, 45, 52, 0, + 48, 45, 52, 0, 48, 45, 52, 0, + 48, 45, 52, 0, 48, 45, 52, 0, + 48, 45, 52, 0, 48, 45, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial180.scd b/sound_algo/palette/melodies/short/mIndustrial180.scd new file mode 100644 index 0000000..bbda502 --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial180 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial180 = [ + 57, 45, 0, 38, 57, 45, 0, 38, + 57, 45, 0, 38, 57, 45, 0, 38, + 57, 45, 0, 38, 57, 45, 0, 38, + 57, 45, 0, 38, 57, 45, 0, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial181.scd b/sound_algo/palette/melodies/short/mIndustrial181.scd new file mode 100644 index 0000000..f0f1ffe --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial181 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial181 = [ + 47, 42, 47, 59, 47, 42, 47, 59, + 47, 42, 47, 59, 47, 42, 47, 59, + 47, 42, 47, 59, 47, 42, 47, 59, + 47, 42, 47, 59, 47, 42, 47, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial182.scd b/sound_algo/palette/melodies/short/mIndustrial182.scd new file mode 100644 index 0000000..cea94fe --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial182 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial182 = [ + 36, 57, 0, 53, 36, 57, 0, 53, + 36, 57, 0, 53, 36, 57, 0, 53, + 36, 57, 0, 53, 36, 57, 0, 53, + 36, 57, 0, 53, 36, 57, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mIndustrial183.scd b/sound_algo/palette/melodies/short/mIndustrial183.scd new file mode 100644 index 0000000..87e270f --- /dev/null +++ b/sound_algo/palette/melodies/short/mIndustrial183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mIndustrial183 -- short melody (32 steps), genre: industrial +// ===================================================================== +( +~mIndustrial183 = [ + 57, 36, 38, 38, 57, 36, 38, 38, + 57, 36, 38, 38, 57, 36, 38, 38, + 57, 36, 38, 38, 57, 36, 38, 38, + 57, 36, 38, 38, 57, 36, 38, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz100.scd b/sound_algo/palette/melodies/short/mJazz100.scd new file mode 100644 index 0000000..564b246 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz100 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz100 = [ + 72, 74, 67, 72, 55, 51, 84, 51, + 0, 0, 0, 62, 74, 0, 0, 0, + 60, 58, 0, 84, 74, 70, 58, 0, + 51, 0, 0, 77, 51, 81, 50, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz101.scd b/sound_algo/palette/melodies/short/mJazz101.scd new file mode 100644 index 0000000..69d74ca --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz101 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz101 = [ + 55, 84, 0, 79, 0, 0, 0, 0, + 64, 64, 0, 0, 0, 81, 82, 55, + 0, 60, 70, 0, 48, 84, 0, 54, + 55, 0, 0, 61, 60, 81, 82, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz102.scd b/sound_algo/palette/melodies/short/mJazz102.scd new file mode 100644 index 0000000..5096e5c --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz102 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz102 = [ + 55, 0, 84, 0, 0, 0, 68, 74, + 56, 58, 0, 75, 0, 68, 61, 60, + 0, 74, 75, 65, 48, 65, 0, 0, + 77, 0, 80, 79, 0, 74, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz103.scd b/sound_algo/palette/melodies/short/mJazz103.scd new file mode 100644 index 0000000..27d820f --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz103 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz103 = [ + 82, 0, 0, 67, 0, 80, 82, 84, + 80, 81, 82, 0, 81, 82, 72, 0, + 0, 0, 0, 0, 65, 0, 0, 0, + 0, 66, 67, 75, 79, 67, 51, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz104.scd b/sound_algo/palette/melodies/short/mJazz104.scd new file mode 100644 index 0000000..4bbec12 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz104 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz104 = [ + 0, 79, 0, 0, 0, 0, 81, 63, + 67, 55, 53, 77, 55, 81, 57, 0, + 0, 64, 65, 0, 0, 63, 75, 0, + 0, 62, 55, 58, 82, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz105.scd b/sound_algo/palette/melodies/short/mJazz105.scd new file mode 100644 index 0000000..3891b23 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz105 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz105 = [ + 0, 68, 50, 50, 48, 0, 80, 79, + 72, 74, 52, 53, 49, 48, 75, 0, + 0, 74, 0, 67, 80, 0, 82, 84, + 0, 63, 0, 0, 48, 63, 75, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz106.scd b/sound_algo/palette/melodies/short/mJazz106.scd new file mode 100644 index 0000000..0379fc7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz106 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz106 = [ + 49, 0, 0, 0, 69, 83, 61, 49, + 69, 81, 54, 57, 0, 49, 57, 51, + 0, 71, 61, 83, 0, 65, 55, 56, + 54, 0, 65, 71, 53, 0, 73, 61 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz107.scd b/sound_algo/palette/melodies/short/mJazz107.scd new file mode 100644 index 0000000..570198f --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz107 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz107 = [ + 63, 0, 62, 50, 51, 50, 50, 51, + 48, 50, 51, 58, 66, 67, 0, 60, + 0, 58, 81, 50, 57, 81, 82, 62, + 63, 0, 0, 74, 0, 84, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz108.scd b/sound_algo/palette/melodies/short/mJazz108.scd new file mode 100644 index 0000000..95a936f --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz108 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz108 = [ + 83, 82, 79, 0, 56, 77, 84, 82, + 80, 0, 47, 48, 58, 61, 62, 50, + 65, 0, 62, 0, 0, 64, 65, 0, + 0, 84, 62, 53, 74, 50, 58, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz109.scd b/sound_algo/palette/melodies/short/mJazz109.scd new file mode 100644 index 0000000..1b0281a --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz109 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz109 = [ + 79, 81, 74, 80, 79, 0, 82, 58, + 72, 0, 63, 73, 74, 0, 0, 69, + 60, 63, 48, 70, 67, 52, 51, 70, + 63, 60, 77, 79, 0, 58, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz110.scd b/sound_algo/palette/melodies/short/mJazz110.scd new file mode 100644 index 0000000..8242892 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz110 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz110 = [ + 62, 0, 0, 60, 0, 0, 0, 62, + 57, 65, 69, 84, 78, 79, 69, 63, + 84, 79, 63, 50, 82, 0, 75, 57, + 0, 0, 84, 0, 64, 63, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz111.scd b/sound_algo/palette/melodies/short/mJazz111.scd new file mode 100644 index 0000000..df0bc5e --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz111 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz111 = [ + 75, 69, 74, 75, 80, 79, 0, 65, + 0, 62, 51, 0, 55, 48, 69, 63, + 62, 77, 65, 63, 67, 74, 51, 0, + 0, 84, 0, 72, 75, 58, 63, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz112.scd b/sound_algo/palette/melodies/short/mJazz112.scd new file mode 100644 index 0000000..8778660 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz112 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz112 = [ + 0, 0, 0, 0, 0, 65, 54, 81, + 0, 71, 54, 63, 0, 71, 68, 51, + 57, 0, 54, 0, 0, 71, 59, 56, + 0, 65, 65, 0, 53, 0, 66, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz113.scd b/sound_algo/palette/melodies/short/mJazz113.scd new file mode 100644 index 0000000..e9a65c6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz113 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz113 = [ + 48, 67, 50, 72, 70, 0, 63, 69, + 0, 57, 65, 58, 69, 70, 57, 74, + 57, 48, 0, 62, 84, 0, 0, 51, + 0, 51, 74, 0, 53, 51, 77, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz114.scd b/sound_algo/palette/melodies/short/mJazz114.scd new file mode 100644 index 0000000..7af4350 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz114 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz114 = [ + 57, 69, 70, 0, 0, 0, 61, 58, + 60, 0, 0, 0, 68, 0, 65, 64, + 0, 0, 0, 84, 0, 0, 76, 76, + 66, 0, 64, 66, 57, 56, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz115.scd b/sound_algo/palette/melodies/short/mJazz115.scd new file mode 100644 index 0000000..cb17249 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz115 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz115 = [ + 49, 84, 83, 0, 0, 63, 66, 66, + 65, 80, 81, 0, 56, 51, 51, 51, + 61, 51, 51, 81, 65, 0, 71, 66, + 0, 0, 68, 63, 57, 54, 0, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz116.scd b/sound_algo/palette/melodies/short/mJazz116.scd new file mode 100644 index 0000000..746822b --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz116 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz116 = [ + 72, 72, 57, 57, 79, 69, 49, 50, + 76, 77, 65, 67, 63, 64, 0, 0, + 75, 76, 53, 53, 0, 67, 70, 74, + 52, 77, 50, 57, 0, 82, 62, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz117.scd b/sound_algo/palette/melodies/short/mJazz117.scd new file mode 100644 index 0000000..edac779 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz117 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz117 = [ + 0, 71, 51, 0, 62, 61, 73, 75, + 80, 56, 50, 49, 56, 68, 84, 66, + 65, 61, 0, 0, 81, 0, 49, 51, + 66, 0, 65, 80, 0, 0, 77, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz118.scd b/sound_algo/palette/melodies/short/mJazz118.scd new file mode 100644 index 0000000..aac3b00 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz118 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz118 = [ + 0, 70, 65, 81, 69, 0, 77, 0, + 60, 72, 0, 70, 53, 53, 58, 0, + 0, 0, 77, 0, 0, 65, 0, 75, + 74, 63, 55, 0, 82, 67, 75, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz119.scd b/sound_algo/palette/melodies/short/mJazz119.scd new file mode 100644 index 0000000..7c5f753 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz119 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz119 = [ + 0, 64, 0, 0, 0, 76, 77, 76, + 52, 77, 50, 82, 65, 65, 48, 0, + 67, 76, 77, 74, 79, 0, 67, 82, + 79, 70, 74, 69, 64, 82, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz120.scd b/sound_algo/palette/melodies/short/mJazz120.scd new file mode 100644 index 0000000..c839feb --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz120 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz120 = [ + 0, 0, 74, 65, 68, 80, 68, 82, + 63, 81, 82, 0, 0, 62, 72, 50, + 65, 58, 56, 74, 0, 79, 63, 68, + 0, 48, 70, 65, 0, 60, 54, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz121.scd b/sound_algo/palette/melodies/short/mJazz121.scd new file mode 100644 index 0000000..dee3e99 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz121 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz121 = [ + 77, 60, 0, 78, 79, 63, 79, 48, + 0, 65, 48, 51, 0, 48, 77, 82, + 55, 65, 77, 56, 78, 77, 75, 67, + 79, 80, 53, 0, 75, 77, 72, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz122.scd b/sound_algo/palette/melodies/short/mJazz122.scd new file mode 100644 index 0000000..2771c74 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz122 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz122 = [ + 0, 77, 74, 0, 78, 77, 74, 75, + 69, 70, 75, 75, 0, 50, 79, 50, + 48, 0, 74, 56, 57, 72, 60, 57, + 0, 81, 74, 0, 57, 0, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz123.scd b/sound_algo/palette/melodies/short/mJazz123.scd new file mode 100644 index 0000000..d313138 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz123 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz123 = [ + 60, 79, 56, 75, 72, 70, 0, 48, + 0, 84, 63, 68, 83, 84, 75, 0, + 48, 65, 62, 63, 51, 50, 51, 75, + 75, 74, 82, 51, 69, 70, 0, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz124.scd b/sound_algo/palette/melodies/short/mJazz124.scd new file mode 100644 index 0000000..37cc6ff --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz124 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz124 = [ + 53, 0, 0, 51, 57, 0, 50, 0, + 74, 53, 81, 0, 0, 62, 63, 81, + 0, 74, 72, 68, 82, 81, 60, 63, + 0, 0, 0, 51, 0, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz125.scd b/sound_algo/palette/melodies/short/mJazz125.scd new file mode 100644 index 0000000..dd3ef9f --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz125 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz125 = [ + 79, 68, 75, 0, 0, 68, 0, 0, + 0, 0, 0, 50, 74, 77, 65, 48, + 77, 62, 0, 0, 67, 61, 62, 0, + 77, 59, 58, 70, 0, 0, 75, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz126.scd b/sound_algo/palette/melodies/short/mJazz126.scd new file mode 100644 index 0000000..66fdc27 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz126 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz126 = [ + 0, 74, 52, 51, 0, 67, 66, 67, + 0, 0, 79, 62, 67, 68, 75, 83, + 84, 72, 0, 0, 60, 77, 59, 58, + 0, 63, 0, 49, 48, 63, 0, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz127.scd b/sound_algo/palette/melodies/short/mJazz127.scd new file mode 100644 index 0000000..c538d59 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz127 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz127 = [ + 81, 0, 0, 58, 57, 66, 50, 51, + 55, 56, 73, 54, 68, 80, 51, 49, + 76, 77, 83, 68, 69, 0, 75, 61, + 80, 81, 80, 64, 63, 0, 66, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz128.scd b/sound_algo/palette/melodies/short/mJazz128.scd new file mode 100644 index 0000000..265f47b --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz128 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz128 = [ + 0, 58, 74, 48, 62, 74, 74, 51, + 72, 50, 57, 55, 65, 50, 0, 0, + 72, 0, 58, 82, 0, 65, 58, 67, + 55, 82, 67, 53, 77, 0, 81, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz129.scd b/sound_algo/palette/melodies/short/mJazz129.scd new file mode 100644 index 0000000..be0bd96 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz129 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz129 = [ + 0, 0, 0, 69, 0, 79, 82, 72, + 75, 0, 58, 81, 0, 75, 51, 84, + 51, 0, 50, 81, 67, 75, 67, 82, + 75, 55, 58, 0, 51, 49, 48, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz130.scd b/sound_algo/palette/melodies/short/mJazz130.scd new file mode 100644 index 0000000..20228cb --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz130 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz130 = [ + 0, 0, 0, 74, 73, 56, 0, 82, + 84, 0, 58, 76, 0, 66, 58, 76, + 84, 73, 72, 0, 0, 0, 52, 0, + 0, 0, 0, 0, 72, 56, 73, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz131.scd b/sound_algo/palette/melodies/short/mJazz131.scd new file mode 100644 index 0000000..b112fa5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz131 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz131 = [ + 75, 48, 81, 50, 75, 0, 0, 67, + 55, 0, 70, 79, 58, 0, 60, 0, + 0, 81, 0, 0, 0, 80, 81, 0, + 0, 50, 0, 65, 81, 0, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz132.scd b/sound_algo/palette/melodies/short/mJazz132.scd new file mode 100644 index 0000000..d92c577 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz132 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz132 = [ + 0, 0, 0, 48, 77, 67, 72, 77, + 83, 82, 74, 79, 51, 83, 82, 79, + 84, 63, 0, 57, 56, 73, 72, 53, + 56, 64, 65, 76, 61, 62, 82, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz133.scd b/sound_algo/palette/melodies/short/mJazz133.scd new file mode 100644 index 0000000..f0daf48 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz133 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz133 = [ + 72, 48, 75, 0, 75, 74, 62, 75, + 74, 0, 75, 51, 0, 84, 70, 49, + 57, 74, 70, 69, 63, 81, 63, 65, + 84, 77, 0, 0, 84, 0, 56, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz134.scd b/sound_algo/palette/melodies/short/mJazz134.scd new file mode 100644 index 0000000..d50796b --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz134 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz134 = [ + 60, 0, 57, 58, 65, 0, 75, 67, + 0, 72, 81, 51, 0, 84, 65, 0, + 51, 48, 55, 79, 0, 0, 70, 0, + 0, 84, 0, 58, 60, 0, 75, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz135.scd b/sound_algo/palette/melodies/short/mJazz135.scd new file mode 100644 index 0000000..9a407f8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz135 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz135 = [ + 77, 80, 53, 53, 53, 61, 0, 61, + 83, 73, 0, 0, 80, 0, 0, 0, + 72, 71, 0, 0, 49, 69, 0, 69, + 57, 0, 54, 63, 66, 65, 75, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz136.scd b/sound_algo/palette/melodies/short/mJazz136.scd new file mode 100644 index 0000000..f71735f --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz136 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz136 = [ + 0, 71, 70, 69, 72, 48, 0, 0, + 77, 0, 0, 48, 0, 73, 74, 0, + 0, 74, 69, 85, 84, 0, 0, 79, + 63, 62, 0, 62, 57, 0, 72, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz137.scd b/sound_algo/palette/melodies/short/mJazz137.scd new file mode 100644 index 0000000..adebb6e --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz137 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz137 = [ + 68, 0, 56, 60, 71, 70, 82, 66, + 65, 0, 76, 77, 68, 79, 0, 77, + 83, 82, 65, 75, 77, 54, 55, 62, + 82, 82, 0, 55, 0, 0, 50, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz138.scd b/sound_algo/palette/melodies/short/mJazz138.scd new file mode 100644 index 0000000..778eaa9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz138 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz138 = [ + 0, 49, 75, 0, 0, 51, 48, 0, + 0, 72, 0, 80, 0, 73, 0, 66, + 75, 48, 48, 48, 52, 58, 0, 68, + 63, 76, 61, 50, 51, 0, 60, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz139.scd b/sound_algo/palette/melodies/short/mJazz139.scd new file mode 100644 index 0000000..be800d1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz139 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz139 = [ + 60, 0, 65, 72, 0, 53, 63, 51, + 60, 53, 73, 63, 62, 48, 75, 51, + 0, 72, 57, 0, 81, 82, 77, 58, + 0, 55, 71, 72, 60, 0, 58, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz140.scd b/sound_algo/palette/melodies/short/mJazz140.scd new file mode 100644 index 0000000..58ea435 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz140 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz140 = [ + 60, 57, 76, 58, 77, 48, 0, 0, + 60, 62, 81, 60, 60, 57, 70, 58, + 0, 70, 69, 77, 79, 84, 57, 79, + 0, 62, 67, 82, 68, 69, 76, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz141.scd b/sound_algo/palette/melodies/short/mJazz141.scd new file mode 100644 index 0000000..aa35329 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz141 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz141 = [ + 0, 63, 0, 64, 70, 0, 0, 0, + 66, 80, 60, 59, 60, 54, 0, 48, + 0, 75, 0, 49, 59, 58, 0, 59, + 58, 58, 0, 54, 60, 0, 84, 73 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz142.scd b/sound_algo/palette/melodies/short/mJazz142.scd new file mode 100644 index 0000000..afcb371 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz142 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz142 = [ + 73, 66, 76, 64, 0, 56, 54, 0, + 0, 73, 0, 0, 0, 0, 60, 0, + 84, 0, 63, 0, 0, 0, 78, 84, + 0, 78, 69, 68, 68, 0, 0, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz143.scd b/sound_algo/palette/melodies/short/mJazz143.scd new file mode 100644 index 0000000..0613259 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz143 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz143 = [ + 0, 48, 62, 77, 48, 0, 0, 65, + 60, 0, 0, 0, 82, 82, 0, 81, + 0, 0, 65, 77, 50, 0, 75, 84, + 77, 83, 84, 0, 63, 74, 57, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz144.scd b/sound_algo/palette/melodies/short/mJazz144.scd new file mode 100644 index 0000000..97549bc --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz144 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz144 = [ + 79, 76, 55, 50, 0, 0, 50, 0, + 57, 0, 77, 0, 0, 49, 48, 70, + 0, 79, 82, 56, 55, 0, 62, 61, + 62, 58, 55, 84, 55, 82, 81, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz145.scd b/sound_algo/palette/melodies/short/mJazz145.scd new file mode 100644 index 0000000..923f798 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz145 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz145 = [ + 75, 70, 53, 0, 63, 62, 55, 60, + 82, 55, 74, 59, 60, 0, 68, 67, + 51, 0, 72, 63, 84, 75, 74, 0, + 0, 60, 82, 57, 67, 70, 63, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz146.scd b/sound_algo/palette/melodies/short/mJazz146.scd new file mode 100644 index 0000000..7f47e1c --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz146 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz146 = [ + 83, 84, 57, 58, 0, 72, 55, 65, + 0, 67, 75, 82, 72, 81, 81, 70, + 50, 60, 67, 60, 79, 69, 53, 84, + 0, 0, 0, 50, 84, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz147.scd b/sound_algo/palette/melodies/short/mJazz147.scd new file mode 100644 index 0000000..7a8d480 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz147 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz147 = [ + 0, 54, 56, 0, 0, 57, 56, 63, + 0, 84, 73, 64, 0, 52, 49, 78, + 76, 61, 68, 75, 60, 0, 0, 64, + 0, 70, 0, 70, 51, 61, 0, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz148.scd b/sound_algo/palette/melodies/short/mJazz148.scd new file mode 100644 index 0000000..3c93933 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz148 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz148 = [ + 57, 53, 77, 0, 53, 69, 0, 68, + 81, 51, 0, 77, 65, 0, 77, 0, + 68, 68, 56, 57, 78, 0, 69, 0, + 65, 71, 56, 0, 71, 81, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz149.scd b/sound_algo/palette/melodies/short/mJazz149.scd new file mode 100644 index 0000000..9ea3a00 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz149 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz149 = [ + 64, 0, 51, 52, 0, 0, 84, 0, + 0, 78, 77, 67, 0, 51, 52, 65, + 0, 0, 83, 84, 0, 68, 69, 0, + 0, 69, 0, 60, 0, 65, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz150.scd b/sound_algo/palette/melodies/short/mJazz150.scd new file mode 100644 index 0000000..17f27ee --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz150 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz150 = [ + 77, 67, 0, 0, 84, 53, 63, 55, + 56, 63, 0, 53, 0, 65, 75, 0, + 84, 74, 65, 75, 79, 0, 79, 0, + 0, 58, 77, 0, 77, 65, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz151.scd b/sound_algo/palette/melodies/short/mJazz151.scd new file mode 100644 index 0000000..832752a --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz151 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz151 = [ + 60, 82, 0, 63, 60, 0, 0, 0, + 81, 80, 49, 81, 82, 0, 0, 0, + 72, 0, 75, 55, 56, 80, 0, 68, + 56, 48, 0, 0, 70, 73, 72, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz152.scd b/sound_algo/palette/melodies/short/mJazz152.scd new file mode 100644 index 0000000..2d1880f --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz152 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz152 = [ + 77, 53, 0, 71, 68, 53, 61, 63, + 0, 65, 78, 65, 58, 57, 54, 57, + 68, 69, 71, 56, 53, 0, 0, 56, + 57, 58, 77, 65, 66, 0, 58, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz153.scd b/sound_algo/palette/melodies/short/mJazz153.scd new file mode 100644 index 0000000..8ae7649 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz153 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz153 = [ + 64, 79, 0, 74, 55, 0, 0, 60, + 74, 0, 72, 81, 72, 62, 55, 81, + 55, 79, 53, 0, 0, 73, 72, 0, + 64, 70, 0, 72, 0, 57, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz154.scd b/sound_algo/palette/melodies/short/mJazz154.scd new file mode 100644 index 0000000..b0cb757 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz154 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz154 = [ + 55, 57, 55, 0, 72, 0, 52, 49, + 52, 53, 84, 0, 0, 0, 0, 63, + 64, 74, 0, 48, 73, 74, 0, 0, + 70, 0, 79, 58, 0, 60, 51, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mJazz155.scd b/sound_algo/palette/melodies/short/mJazz155.scd new file mode 100644 index 0000000..22b9df4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mJazz155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mJazz155 -- short melody (32 steps), genre: jazz +// ===================================================================== +( +~mJazz155 = [ + 81, 0, 68, 78, 59, 53, 77, 63, + 0, 63, 0, 0, 0, 0, 81, 56, + 57, 78, 75, 0, 82, 62, 63, 0, + 0, 75, 51, 54, 77, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental100.scd b/sound_algo/palette/melodies/short/mOriental100.scd new file mode 100644 index 0000000..c571c1c --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental100 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental100 = [ + 72, 0, 0, 0, 0, 0, 71, 59, + 62, 56, 65, 59, 71, 65, 0, 0, + 56, 72, 53, 0, 71, 59, 62, 55, + 59, 71, 59, 72, 55, 53, 63, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental101.scd b/sound_algo/palette/melodies/short/mOriental101.scd new file mode 100644 index 0000000..9b1d760 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental101 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental101 = [ + 59, 56, 0, 65, 60, 59, 72, 0, + 55, 56, 55, 68, 0, 67, 0, 60, + 60, 55, 0, 67, 50, 0, 0, 0, + 51, 50, 62, 0, 74, 72, 51, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental102.scd b/sound_algo/palette/melodies/short/mOriental102.scd new file mode 100644 index 0000000..77e3736 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental102 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental102 = [ + 55, 0, 69, 0, 54, 51, 0, 0, + 74, 72, 54, 0, 74, 70, 66, 58, + 66, 63, 0, 0, 0, 0, 60, 70, + 0, 74, 50, 62, 0, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental103.scd b/sound_algo/palette/melodies/short/mOriental103.scd new file mode 100644 index 0000000..eaf4924 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental103 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental103 = [ + 63, 62, 63, 74, 59, 56, 72, 71, + 50, 0, 63, 0, 55, 72, 51, 74, + 65, 0, 65, 0, 0, 72, 0, 0, + 62, 0, 67, 72, 71, 53, 74, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental104.scd b/sound_algo/palette/melodies/short/mOriental104.scd new file mode 100644 index 0000000..8a1b80c --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental104 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental104 = [ + 69, 67, 70, 54, 63, 57, 69, 54, + 62, 0, 57, 60, 57, 50, 0, 66, + 60, 58, 70, 51, 0, 69, 62, 54, + 0, 0, 74, 58, 62, 67, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental105.scd b/sound_algo/palette/melodies/short/mOriental105.scd new file mode 100644 index 0000000..8c52db8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental105 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental105 = [ + 0, 0, 53, 56, 71, 65, 68, 59, + 0, 0, 65, 60, 74, 72, 53, 0, + 56, 63, 0, 55, 74, 0, 65, 68, + 65, 74, 0, 53, 0, 60, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental106.scd b/sound_algo/palette/melodies/short/mOriental106.scd new file mode 100644 index 0000000..5a8ad04 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental106 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental106 = [ + 55, 57, 62, 55, 51, 50, 0, 69, + 74, 55, 55, 55, 60, 58, 69, 0, + 74, 54, 50, 60, 0, 0, 0, 60, + 54, 54, 69, 72, 54, 0, 54, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental107.scd b/sound_algo/palette/melodies/short/mOriental107.scd new file mode 100644 index 0000000..9b67807 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental107 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental107 = [ + 0, 54, 50, 70, 72, 70, 70, 70, + 54, 74, 0, 62, 57, 55, 55, 66, + 0, 0, 54, 0, 50, 57, 67, 67, + 62, 60, 69, 63, 50, 74, 54, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental108.scd b/sound_algo/palette/melodies/short/mOriental108.scd new file mode 100644 index 0000000..bb58197 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental108 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental108 = [ + 54, 0, 60, 0, 0, 66, 58, 0, + 51, 50, 0, 0, 63, 54, 0, 74, + 69, 57, 62, 57, 0, 66, 0, 63, + 50, 0, 67, 55, 74, 66, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental109.scd b/sound_algo/palette/melodies/short/mOriental109.scd new file mode 100644 index 0000000..dc8065e --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental109 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental109 = [ + 0, 67, 69, 60, 0, 60, 51, 0, + 0, 0, 70, 0, 54, 51, 70, 55, + 57, 66, 0, 67, 62, 60, 69, 74, + 58, 57, 55, 0, 54, 51, 66, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental110.scd b/sound_algo/palette/melodies/short/mOriental110.scd new file mode 100644 index 0000000..3ba0c97 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental110 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental110 = [ + 71, 0, 56, 68, 62, 60, 55, 0, + 74, 53, 74, 65, 72, 71, 50, 67, + 63, 63, 62, 51, 50, 60, 60, 0, + 51, 50, 68, 0, 0, 51, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental111.scd b/sound_algo/palette/melodies/short/mOriental111.scd new file mode 100644 index 0000000..ced95bb --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental111 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental111 = [ + 0, 55, 60, 63, 0, 0, 63, 60, + 68, 0, 51, 0, 59, 72, 0, 0, + 71, 68, 62, 60, 74, 0, 71, 71, + 0, 59, 71, 55, 65, 63, 55, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental112.scd b/sound_algo/palette/melodies/short/mOriental112.scd new file mode 100644 index 0000000..1646a40 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental112 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental112 = [ + 62, 60, 0, 0, 72, 70, 0, 67, + 51, 50, 70, 72, 54, 51, 50, 67, + 74, 72, 70, 55, 0, 66, 67, 54, + 74, 72, 66, 69, 0, 0, 63, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental113.scd b/sound_algo/palette/melodies/short/mOriental113.scd new file mode 100644 index 0000000..426c6e2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental113 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental113 = [ + 0, 51, 69, 57, 60, 58, 66, 0, + 74, 63, 72, 63, 0, 0, 70, 0, + 57, 66, 54, 0, 0, 54, 0, 0, + 0, 72, 62, 66, 0, 66, 60, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental114.scd b/sound_algo/palette/melodies/short/mOriental114.scd new file mode 100644 index 0000000..06b6227 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental114 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental114 = [ + 0, 66, 0, 60, 0, 0, 62, 63, + 50, 0, 0, 66, 0, 0, 54, 0, + 0, 0, 66, 63, 0, 0, 0, 54, + 66, 63, 0, 66, 63, 60, 57, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental115.scd b/sound_algo/palette/melodies/short/mOriental115.scd new file mode 100644 index 0000000..95f3aef --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental115 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental115 = [ + 0, 55, 67, 69, 0, 58, 0, 67, + 50, 55, 72, 57, 74, 72, 0, 0, + 57, 55, 50, 57, 57, 55, 63, 66, + 66, 63, 70, 54, 66, 63, 72, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental116.scd b/sound_algo/palette/melodies/short/mOriental116.scd new file mode 100644 index 0000000..8e29b14 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental116 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental116 = [ + 71, 68, 68, 51, 0, 67, 0, 63, + 56, 0, 0, 63, 62, 60, 0, 74, + 71, 68, 60, 67, 55, 68, 0, 56, + 0, 0, 71, 0, 71, 68, 53, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental117.scd b/sound_algo/palette/melodies/short/mOriental117.scd new file mode 100644 index 0000000..a503043 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental117 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental117 = [ + 50, 0, 51, 60, 58, 0, 55, 69, + 0, 62, 0, 55, 50, 69, 0, 72, + 0, 60, 50, 62, 62, 0, 54, 60, + 62, 58, 69, 50, 62, 60, 67, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental118.scd b/sound_algo/palette/melodies/short/mOriental118.scd new file mode 100644 index 0000000..e89a1a6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental118 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental118 = [ + 62, 60, 66, 57, 70, 69, 51, 0, + 67, 0, 69, 69, 50, 74, 55, 72, + 0, 54, 51, 62, 63, 0, 69, 57, + 0, 62, 58, 67, 62, 57, 74, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental119.scd b/sound_algo/palette/melodies/short/mOriental119.scd new file mode 100644 index 0000000..1f9eb16 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental119 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental119 = [ + 0, 0, 66, 58, 0, 62, 0, 57, + 0, 67, 0, 67, 55, 0, 66, 69, + 0, 0, 60, 54, 60, 0, 51, 60, + 69, 55, 60, 50, 54, 51, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental120.scd b/sound_algo/palette/melodies/short/mOriental120.scd new file mode 100644 index 0000000..dfa5bc3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental120 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental120 = [ + 0, 62, 67, 0, 69, 67, 58, 0, + 58, 57, 0, 0, 55, 58, 0, 67, + 0, 63, 57, 70, 63, 62, 0, 0, + 69, 67, 57, 55, 0, 60, 55, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental121.scd b/sound_algo/palette/melodies/short/mOriental121.scd new file mode 100644 index 0000000..d038c93 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental121 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental121 = [ + 70, 69, 50, 0, 0, 70, 58, 0, + 66, 63, 57, 0, 0, 51, 0, 66, + 0, 0, 63, 72, 0, 69, 70, 72, + 0, 0, 62, 0, 66, 66, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental122.scd b/sound_algo/palette/melodies/short/mOriental122.scd new file mode 100644 index 0000000..948374e --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental122 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental122 = [ + 50, 74, 62, 0, 55, 53, 0, 72, + 0, 62, 71, 65, 59, 62, 53, 0, + 0, 67, 71, 62, 67, 65, 0, 55, + 71, 51, 55, 60, 72, 0, 51, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental123.scd b/sound_algo/palette/melodies/short/mOriental123.scd new file mode 100644 index 0000000..1296341 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental123 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental123 = [ + 62, 62, 0, 51, 74, 0, 51, 74, + 62, 0, 63, 0, 54, 51, 62, 0, + 69, 67, 55, 58, 0, 70, 51, 66, + 69, 51, 70, 54, 62, 72, 0, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental124.scd b/sound_algo/palette/melodies/short/mOriental124.scd new file mode 100644 index 0000000..64f1b2c --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental124 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental124 = [ + 67, 65, 68, 53, 0, 67, 56, 71, + 0, 0, 60, 0, 55, 53, 65, 0, + 59, 0, 60, 63, 0, 0, 0, 72, + 0, 0, 56, 0, 74, 67, 51, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental125.scd b/sound_algo/palette/melodies/short/mOriental125.scd new file mode 100644 index 0000000..e979674 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental125 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental125 = [ + 50, 58, 62, 0, 69, 54, 0, 67, + 51, 0, 60, 62, 54, 72, 74, 51, + 0, 57, 62, 60, 50, 51, 63, 0, + 69, 74, 67, 55, 72, 70, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental126.scd b/sound_algo/palette/melodies/short/mOriental126.scd new file mode 100644 index 0000000..5c3ef5a --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental126 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental126 = [ + 69, 72, 66, 69, 50, 0, 58, 55, + 50, 62, 0, 74, 62, 60, 60, 69, + 67, 70, 0, 66, 0, 72, 67, 60, + 69, 67, 66, 0, 63, 0, 51, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental127.scd b/sound_algo/palette/melodies/short/mOriental127.scd new file mode 100644 index 0000000..3b68d18 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental127 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental127 = [ + 56, 71, 53, 51, 59, 0, 0, 51, + 0, 62, 65, 0, 55, 0, 65, 67, + 71, 68, 51, 53, 0, 55, 0, 74, + 0, 71, 71, 74, 59, 56, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental128.scd b/sound_algo/palette/melodies/short/mOriental128.scd new file mode 100644 index 0000000..3067e2f --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental128 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental128 = [ + 62, 0, 62, 60, 57, 55, 57, 67, + 66, 62, 63, 72, 69, 67, 57, 58, + 50, 70, 50, 51, 62, 70, 62, 69, + 66, 63, 74, 57, 66, 60, 72, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental129.scd b/sound_algo/palette/melodies/short/mOriental129.scd new file mode 100644 index 0000000..3ea3b73 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental129 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental129 = [ + 69, 69, 62, 63, 69, 67, 72, 74, + 69, 50, 55, 63, 0, 62, 55, 0, + 74, 74, 57, 62, 62, 60, 0, 66, + 0, 51, 0, 50, 62, 0, 62, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental130.scd b/sound_algo/palette/melodies/short/mOriental130.scd new file mode 100644 index 0000000..c84797c --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental130 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental130 = [ + 59, 56, 56, 0, 63, 53, 0, 65, + 60, 0, 51, 65, 0, 0, 72, 0, + 71, 50, 67, 0, 0, 63, 0, 67, + 0, 0, 50, 0, 0, 0, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental131.scd b/sound_algo/palette/melodies/short/mOriental131.scd new file mode 100644 index 0000000..5144b61 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental131 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental131 = [ + 0, 63, 57, 0, 50, 72, 57, 0, + 69, 0, 69, 69, 51, 70, 51, 55, + 0, 50, 67, 0, 60, 58, 70, 60, + 0, 69, 50, 58, 51, 67, 54, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental132.scd b/sound_algo/palette/melodies/short/mOriental132.scd new file mode 100644 index 0000000..097135a --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental132 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental132 = [ + 63, 62, 60, 53, 65, 63, 0, 0, + 74, 72, 51, 72, 67, 65, 51, 51, + 67, 72, 56, 67, 0, 59, 60, 63, + 71, 0, 68, 0, 67, 51, 63, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental133.scd b/sound_algo/palette/melodies/short/mOriental133.scd new file mode 100644 index 0000000..c8b70e8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental133 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental133 = [ + 57, 55, 63, 72, 50, 58, 50, 0, + 51, 50, 74, 0, 66, 74, 66, 72, + 0, 69, 0, 66, 50, 63, 0, 72, + 54, 51, 50, 50, 55, 69, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental134.scd b/sound_algo/palette/melodies/short/mOriental134.scd new file mode 100644 index 0000000..f70b94b --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental134 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental134 = [ + 51, 57, 67, 0, 0, 51, 51, 62, + 0, 57, 0, 54, 67, 63, 51, 69, + 50, 74, 66, 70, 57, 0, 0, 57, + 0, 69, 62, 74, 62, 60, 50, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental135.scd b/sound_algo/palette/melodies/short/mOriental135.scd new file mode 100644 index 0000000..979e20c --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental135 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental135 = [ + 72, 71, 60, 68, 0, 56, 56, 0, + 0, 72, 62, 67, 63, 0, 60, 60, + 0, 56, 67, 0, 67, 0, 51, 60, + 0, 0, 50, 62, 71, 68, 0, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental136.scd b/sound_algo/palette/melodies/short/mOriental136.scd new file mode 100644 index 0000000..7a830b2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental136 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental136 = [ + 74, 0, 0, 72, 68, 0, 50, 50, + 0, 56, 0, 0, 60, 59, 62, 0, + 0, 71, 0, 0, 72, 71, 68, 63, + 55, 62, 74, 0, 50, 60, 63, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental137.scd b/sound_algo/palette/melodies/short/mOriental137.scd new file mode 100644 index 0000000..5930fcc --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental137 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental137 = [ + 55, 0, 62, 0, 50, 55, 70, 57, + 66, 63, 69, 72, 60, 55, 0, 51, + 62, 60, 63, 60, 51, 62, 0, 51, + 57, 57, 70, 72, 0, 72, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental138.scd b/sound_algo/palette/melodies/short/mOriental138.scd new file mode 100644 index 0000000..d0be59d --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental138 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental138 = [ + 54, 72, 0, 51, 0, 74, 60, 63, + 0, 0, 67, 62, 0, 67, 0, 55, + 60, 58, 60, 0, 50, 51, 0, 51, + 0, 67, 70, 72, 0, 70, 67, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental139.scd b/sound_algo/palette/melodies/short/mOriental139.scd new file mode 100644 index 0000000..5b87cfa --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental139 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental139 = [ + 66, 63, 58, 70, 55, 74, 0, 0, + 0, 70, 55, 62, 69, 70, 57, 0, + 0, 0, 54, 55, 66, 63, 72, 74, + 0, 70, 67, 72, 0, 58, 66, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental140.scd b/sound_algo/palette/melodies/short/mOriental140.scd new file mode 100644 index 0000000..7978cb3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental140 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental140 = [ + 0, 63, 0, 0, 57, 0, 70, 0, + 0, 69, 0, 0, 0, 0, 0, 51, + 69, 0, 62, 60, 0, 62, 72, 0, + 54, 0, 0, 60, 74, 0, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental141.scd b/sound_algo/palette/melodies/short/mOriental141.scd new file mode 100644 index 0000000..d3a5591 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental141 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental141 = [ + 69, 67, 0, 62, 66, 63, 0, 70, + 66, 63, 0, 69, 0, 50, 70, 72, + 0, 0, 0, 60, 0, 50, 0, 0, + 50, 0, 67, 67, 54, 51, 54, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental142.scd b/sound_algo/palette/melodies/short/mOriental142.scd new file mode 100644 index 0000000..0dd78d8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental142 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental142 = [ + 54, 57, 62, 60, 69, 51, 0, 55, + 62, 74, 57, 54, 74, 74, 0, 74, + 62, 0, 58, 72, 70, 69, 66, 55, + 50, 63, 57, 70, 0, 72, 51, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental143.scd b/sound_algo/palette/melodies/short/mOriental143.scd new file mode 100644 index 0000000..2fd822f --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental143 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental143 = [ + 55, 67, 55, 59, 0, 68, 72, 51, + 50, 0, 0, 0, 50, 0, 51, 71, + 71, 68, 0, 63, 59, 56, 72, 62, + 0, 59, 53, 67, 0, 74, 63, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental144.scd b/sound_algo/palette/melodies/short/mOriental144.scd new file mode 100644 index 0000000..17f287a --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental144 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental144 = [ + 68, 67, 56, 74, 74, 72, 59, 0, + 50, 71, 56, 67, 59, 67, 67, 59, + 50, 74, 60, 0, 56, 55, 68, 67, + 0, 68, 0, 0, 68, 72, 0, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental145.scd b/sound_algo/palette/melodies/short/mOriental145.scd new file mode 100644 index 0000000..681dbaf --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental145 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental145 = [ + 74, 62, 59, 71, 60, 59, 68, 59, + 55, 53, 59, 50, 68, 67, 0, 51, + 62, 63, 72, 62, 63, 60, 60, 51, + 0, 67, 0, 50, 60, 0, 74, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental146.scd b/sound_algo/palette/melodies/short/mOriental146.scd new file mode 100644 index 0000000..f971e88 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental146 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental146 = [ + 68, 0, 0, 50, 67, 59, 62, 68, + 71, 0, 51, 63, 67, 51, 0, 55, + 74, 71, 0, 0, 62, 71, 62, 0, + 59, 65, 72, 72, 0, 74, 0, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental147.scd b/sound_algo/palette/melodies/short/mOriental147.scd new file mode 100644 index 0000000..cfe89cf --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental147 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental147 = [ + 62, 58, 57, 0, 74, 0, 0, 0, + 58, 54, 67, 0, 51, 50, 0, 0, + 0, 62, 50, 0, 66, 74, 66, 0, + 66, 63, 51, 0, 69, 74, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental148.scd b/sound_algo/palette/melodies/short/mOriental148.scd new file mode 100644 index 0000000..e31056d --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental148 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental148 = [ + 62, 74, 56, 55, 67, 68, 53, 72, + 50, 71, 51, 65, 0, 60, 74, 0, + 50, 62, 0, 72, 0, 72, 68, 50, + 59, 56, 59, 55, 0, 50, 72, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental149.scd b/sound_algo/palette/melodies/short/mOriental149.scd new file mode 100644 index 0000000..79a0948 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental149 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental149 = [ + 50, 51, 67, 55, 59, 0, 63, 60, + 74, 71, 0, 51, 59, 56, 0, 71, + 55, 0, 72, 62, 65, 0, 60, 0, + 62, 62, 72, 0, 65, 63, 74, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental150.scd b/sound_algo/palette/melodies/short/mOriental150.scd new file mode 100644 index 0000000..e2667c2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental150 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental150 = [ + 63, 62, 57, 0, 74, 72, 57, 60, + 63, 62, 0, 0, 60, 62, 55, 0, + 0, 0, 70, 70, 0, 57, 74, 0, + 54, 51, 0, 55, 74, 60, 57, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental151.scd b/sound_algo/palette/melodies/short/mOriental151.scd new file mode 100644 index 0000000..e232877 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental151 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental151 = [ + 59, 56, 0, 53, 0, 67, 59, 53, + 59, 56, 71, 65, 59, 71, 51, 71, + 71, 67, 65, 53, 62, 56, 55, 68, + 67, 62, 74, 50, 50, 59, 67, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental152.scd b/sound_algo/palette/melodies/short/mOriental152.scd new file mode 100644 index 0000000..7463818 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental152 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental152 = [ + 0, 74, 0, 67, 0, 0, 0, 50, + 72, 51, 69, 57, 50, 62, 0, 66, + 50, 0, 0, 69, 0, 58, 50, 67, + 57, 0, 74, 0, 0, 66, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental153.scd b/sound_algo/palette/melodies/short/mOriental153.scd new file mode 100644 index 0000000..b9334b8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental153 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental153 = [ + 50, 63, 59, 0, 59, 56, 0, 59, + 67, 0, 0, 0, 74, 74, 55, 65, + 74, 72, 0, 0, 0, 56, 0, 72, + 55, 51, 0, 0, 0, 0, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental154.scd b/sound_algo/palette/melodies/short/mOriental154.scd new file mode 100644 index 0000000..109bb63 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental154 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental154 = [ + 67, 65, 72, 68, 62, 60, 0, 56, + 0, 60, 72, 0, 0, 63, 0, 55, + 67, 62, 63, 0, 0, 63, 56, 0, + 74, 60, 0, 55, 67, 65, 56, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental155.scd b/sound_algo/palette/melodies/short/mOriental155.scd new file mode 100644 index 0000000..6e5c364 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental155 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental155 = [ + 0, 63, 63, 63, 0, 0, 63, 60, + 0, 0, 0, 0, 59, 0, 63, 67, + 0, 50, 0, 0, 59, 74, 0, 59, + 71, 50, 67, 53, 62, 51, 51, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental156.scd b/sound_algo/palette/melodies/short/mOriental156.scd new file mode 100644 index 0000000..eb5e49e --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental156 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental156 = [ + 0, 0, 74, 0, 62, 70, 60, 0, + 54, 0, 51, 51, 72, 50, 0, 50, + 57, 55, 51, 0, 66, 57, 63, 0, + 74, 50, 63, 63, 0, 67, 74, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental157.scd b/sound_algo/palette/melodies/short/mOriental157.scd new file mode 100644 index 0000000..3a6c261 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental157 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental157 = [ + 54, 51, 66, 74, 63, 62, 74, 54, + 0, 0, 0, 72, 58, 57, 63, 66, + 0, 0, 0, 74, 0, 0, 67, 0, + 0, 70, 72, 0, 74, 58, 72, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental158.scd b/sound_algo/palette/melodies/short/mOriental158.scd new file mode 100644 index 0000000..38ca345 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental158 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental158 = [ + 59, 56, 71, 74, 74, 59, 72, 74, + 67, 56, 72, 65, 62, 53, 53, 74, + 50, 53, 67, 60, 67, 67, 50, 62, + 55, 53, 68, 68, 62, 60, 62, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental159.scd b/sound_algo/palette/melodies/short/mOriental159.scd new file mode 100644 index 0000000..a7c26fb --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental159 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental159 = [ + 74, 0, 0, 53, 0, 0, 60, 67, + 0, 50, 59, 74, 56, 51, 0, 0, + 62, 62, 51, 0, 67, 65, 60, 65, + 0, 0, 0, 0, 0, 68, 0, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental160.scd b/sound_algo/palette/melodies/short/mOriental160.scd new file mode 100644 index 0000000..df515e4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental160 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental160 = [ + 59, 50, 50, 0, 0, 74, 0, 0, + 62, 60, 56, 65, 59, 0, 0, 0, + 51, 50, 0, 0, 71, 0, 68, 55, + 67, 0, 0, 67, 0, 0, 59, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental161.scd b/sound_algo/palette/melodies/short/mOriental161.scd new file mode 100644 index 0000000..5b3ac51 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental161 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental161 = [ + 74, 54, 72, 63, 70, 55, 63, 0, + 55, 54, 58, 69, 74, 72, 0, 57, + 74, 72, 72, 70, 74, 63, 62, 66, + 0, 63, 0, 58, 66, 50, 58, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental162.scd b/sound_algo/palette/melodies/short/mOriental162.scd new file mode 100644 index 0000000..0c150f8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental162 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental162 = [ + 74, 50, 50, 68, 50, 0, 0, 0, + 0, 0, 0, 0, 71, 62, 50, 0, + 67, 50, 0, 65, 0, 0, 67, 72, + 0, 51, 0, 0, 71, 68, 50, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental163.scd b/sound_algo/palette/melodies/short/mOriental163.scd new file mode 100644 index 0000000..494f59a --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental163 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental163 = [ + 50, 53, 56, 0, 0, 60, 60, 72, + 62, 72, 50, 0, 63, 0, 56, 0, + 50, 60, 0, 62, 62, 0, 51, 71, + 63, 62, 62, 60, 0, 55, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental164.scd b/sound_algo/palette/melodies/short/mOriental164.scd new file mode 100644 index 0000000..9d98be5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental164 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental164 = [ + 0, 0, 68, 63, 74, 59, 74, 56, + 0, 0, 0, 63, 62, 62, 0, 0, + 0, 0, 51, 0, 55, 0, 53, 59, + 62, 53, 63, 51, 56, 55, 50, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental165.scd b/sound_algo/palette/melodies/short/mOriental165.scd new file mode 100644 index 0000000..79159a9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental165 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental165 = [ + 60, 58, 0, 66, 0, 0, 72, 0, + 69, 67, 54, 69, 62, 60, 74, 57, + 0, 66, 0, 0, 0, 0, 0, 66, + 66, 0, 63, 69, 66, 63, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental166.scd b/sound_algo/palette/melodies/short/mOriental166.scd new file mode 100644 index 0000000..da2a56e --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental166 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental166 = [ + 69, 67, 69, 0, 54, 51, 62, 50, + 0, 0, 0, 0, 0, 0, 74, 57, + 63, 55, 0, 54, 0, 0, 55, 67, + 0, 74, 0, 50, 69, 67, 67, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental167.scd b/sound_algo/palette/melodies/short/mOriental167.scd new file mode 100644 index 0000000..37d56d3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental167 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental167 = [ + 59, 60, 0, 67, 55, 0, 65, 72, + 0, 59, 51, 56, 0, 53, 55, 53, + 59, 56, 0, 0, 74, 74, 63, 67, + 67, 65, 59, 51, 60, 59, 50, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental168.scd b/sound_algo/palette/melodies/short/mOriental168.scd new file mode 100644 index 0000000..b237eee --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental168 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental168 = [ + 0, 66, 50, 57, 50, 50, 0, 57, + 55, 69, 54, 72, 74, 70, 67, 54, + 62, 57, 72, 74, 57, 69, 60, 0, + 0, 50, 72, 0, 0, 63, 58, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental169.scd b/sound_algo/palette/melodies/short/mOriental169.scd new file mode 100644 index 0000000..ce239f1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental169 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental169 = [ + 66, 63, 0, 55, 63, 0, 67, 0, + 72, 0, 63, 55, 74, 54, 70, 0, + 0, 0, 72, 74, 0, 0, 0, 0, + 0, 51, 0, 58, 54, 51, 58, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental170.scd b/sound_algo/palette/melodies/short/mOriental170.scd new file mode 100644 index 0000000..e8b7856 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental170 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental170 = [ + 50, 0, 71, 0, 50, 0, 56, 59, + 60, 60, 72, 62, 50, 50, 71, 0, + 0, 0, 50, 65, 55, 0, 71, 0, + 71, 63, 53, 0, 0, 55, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental171.scd b/sound_algo/palette/melodies/short/mOriental171.scd new file mode 100644 index 0000000..256ae36 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental171 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental171 = [ + 58, 66, 66, 66, 0, 66, 0, 62, + 0, 0, 0, 54, 0, 57, 51, 0, + 0, 0, 0, 0, 69, 67, 74, 0, + 0, 0, 63, 0, 60, 0, 67, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental172.scd b/sound_algo/palette/melodies/short/mOriental172.scd new file mode 100644 index 0000000..93123e8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental172 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental172 = [ + 74, 72, 63, 59, 0, 50, 50, 63, + 72, 63, 51, 56, 0, 71, 55, 0, + 62, 60, 55, 65, 74, 72, 53, 56, + 65, 74, 53, 50, 55, 74, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental173.scd b/sound_algo/palette/melodies/short/mOriental173.scd new file mode 100644 index 0000000..db5e081 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental173 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental173 = [ + 74, 72, 58, 74, 0, 60, 0, 0, + 54, 62, 0, 0, 66, 63, 72, 54, + 60, 58, 0, 54, 66, 67, 66, 0, + 62, 60, 72, 57, 51, 50, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental174.scd b/sound_algo/palette/melodies/short/mOriental174.scd new file mode 100644 index 0000000..8b05585 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental174 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental174 = [ + 74, 56, 60, 0, 72, 71, 51, 55, + 59, 56, 0, 67, 0, 53, 74, 65, + 0, 0, 0, 55, 71, 59, 72, 74, + 0, 0, 51, 0, 0, 60, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental175.scd b/sound_algo/palette/melodies/short/mOriental175.scd new file mode 100644 index 0000000..eadacea --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental175 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental175 = [ + 0, 66, 0, 54, 0, 0, 54, 69, + 62, 60, 69, 60, 50, 0, 70, 66, + 60, 58, 0, 62, 54, 57, 60, 50, + 50, 51, 51, 67, 57, 55, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental176.scd b/sound_algo/palette/melodies/short/mOriental176.scd new file mode 100644 index 0000000..1eb94bf --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental176 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental176 = [ + 71, 68, 0, 62, 55, 0, 62, 60, + 65, 0, 59, 0, 0, 65, 0, 0, + 0, 51, 53, 51, 0, 60, 59, 72, + 60, 59, 62, 71, 60, 0, 51, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental177.scd b/sound_algo/palette/melodies/short/mOriental177.scd new file mode 100644 index 0000000..24909d5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental177 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental177 = [ + 54, 51, 54, 58, 0, 70, 60, 66, + 62, 50, 0, 70, 0, 70, 54, 63, + 69, 62, 50, 67, 50, 54, 60, 55, + 50, 55, 55, 58, 0, 74, 0, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental178.scd b/sound_algo/palette/melodies/short/mOriental178.scd new file mode 100644 index 0000000..470d1d4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental178 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental178 = [ + 0, 0, 0, 0, 50, 72, 0, 56, + 0, 0, 55, 51, 68, 67, 56, 72, + 67, 59, 62, 59, 0, 74, 0, 72, + 56, 53, 55, 72, 53, 51, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental179.scd b/sound_algo/palette/melodies/short/mOriental179.scd new file mode 100644 index 0000000..6c4a72a --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental179 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental179 = [ + 50, 54, 0, 58, 74, 72, 62, 66, + 54, 55, 50, 0, 57, 55, 51, 55, + 0, 54, 69, 66, 66, 63, 66, 66, + 58, 74, 51, 51, 0, 72, 55, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental180.scd b/sound_algo/palette/melodies/short/mOriental180.scd new file mode 100644 index 0000000..5a946e8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental180 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental180 = [ + 0, 0, 72, 51, 54, 51, 60, 63, + 60, 62, 57, 54, 0, 58, 70, 58, + 69, 0, 62, 60, 54, 50, 57, 0, + 57, 55, 55, 51, 63, 62, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental181.scd b/sound_algo/palette/melodies/short/mOriental181.scd new file mode 100644 index 0000000..bb5a55b --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental181 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental181 = [ + 68, 0, 55, 0, 71, 0, 50, 0, + 0, 74, 71, 0, 62, 0, 0, 74, + 59, 51, 0, 63, 0, 51, 62, 0, + 53, 0, 65, 72, 67, 65, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental182.scd b/sound_algo/palette/melodies/short/mOriental182.scd new file mode 100644 index 0000000..4bea8e5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental182 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental182 = [ + 0, 50, 0, 62, 72, 0, 0, 0, + 55, 72, 53, 51, 62, 50, 60, 51, + 0, 59, 0, 68, 0, 71, 74, 51, + 0, 56, 67, 0, 0, 60, 60, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental183.scd b/sound_algo/palette/melodies/short/mOriental183.scd new file mode 100644 index 0000000..aa8dc10 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental183 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental183 = [ + 54, 0, 0, 74, 62, 60, 69, 66, + 62, 62, 0, 54, 51, 66, 0, 0, + 66, 63, 60, 74, 74, 72, 0, 74, + 51, 50, 67, 72, 60, 58, 0, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental184.scd b/sound_algo/palette/melodies/short/mOriental184.scd new file mode 100644 index 0000000..7770508 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental184.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental184 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental184 = [ + 67, 65, 59, 68, 59, 0, 65, 60, + 0, 50, 56, 0, 0, 53, 68, 0, + 50, 50, 56, 65, 67, 71, 62, 68, + 67, 63, 0, 56, 0, 51, 59, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental185.scd b/sound_algo/palette/melodies/short/mOriental185.scd new file mode 100644 index 0000000..dec82fa --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental185.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental185 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental185 = [ + 55, 63, 0, 50, 68, 67, 0, 50, + 50, 59, 65, 0, 0, 60, 0, 0, + 55, 53, 56, 74, 0, 0, 71, 0, + 0, 72, 0, 0, 55, 67, 0, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental186.scd b/sound_algo/palette/melodies/short/mOriental186.scd new file mode 100644 index 0000000..b03c496 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental186.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental186 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental186 = [ + 0, 51, 50, 67, 56, 55, 72, 53, + 53, 71, 67, 51, 71, 71, 51, 72, + 59, 56, 0, 71, 55, 53, 60, 62, + 53, 65, 0, 71, 74, 72, 62, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental187.scd b/sound_algo/palette/melodies/short/mOriental187.scd new file mode 100644 index 0000000..1be7bb5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental187.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental187 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental187 = [ + 59, 60, 50, 59, 0, 71, 60, 65, + 0, 0, 59, 0, 62, 60, 0, 0, + 53, 60, 51, 53, 0, 0, 60, 63, + 56, 55, 0, 53, 0, 53, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental188.scd b/sound_algo/palette/melodies/short/mOriental188.scd new file mode 100644 index 0000000..763e005 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental188.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental188 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental188 = [ + 74, 68, 67, 71, 0, 0, 67, 56, + 63, 62, 0, 72, 59, 50, 68, 0, + 0, 55, 0, 59, 60, 65, 0, 63, + 0, 53, 74, 71, 62, 60, 50, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental189.scd b/sound_algo/palette/melodies/short/mOriental189.scd new file mode 100644 index 0000000..92679c3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental189.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental189 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental189 = [ + 74, 72, 0, 0, 54, 63, 0, 0, + 66, 60, 0, 0, 0, 60, 0, 50, + 62, 0, 74, 0, 0, 63, 62, 0, + 0, 70, 57, 67, 63, 62, 67, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental190.scd b/sound_algo/palette/melodies/short/mOriental190.scd new file mode 100644 index 0000000..f025545 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental190.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental190 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental190 = [ + 50, 0, 56, 0, 0, 0, 0, 0, + 0, 60, 71, 0, 65, 63, 0, 0, + 62, 60, 59, 50, 71, 68, 63, 62, + 67, 55, 60, 0, 74, 72, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental191.scd b/sound_algo/palette/melodies/short/mOriental191.scd new file mode 100644 index 0000000..1382c13 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental191.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental191 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental191 = [ + 0, 0, 60, 0, 56, 62, 71, 0, + 74, 67, 51, 50, 50, 56, 0, 0, + 55, 53, 50, 0, 0, 63, 62, 0, + 0, 51, 60, 67, 65, 63, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental192.scd b/sound_algo/palette/melodies/short/mOriental192.scd new file mode 100644 index 0000000..7dc9f54 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental192.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental192 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental192 = [ + 0, 0, 0, 57, 57, 55, 57, 66, + 57, 55, 66, 0, 66, 63, 54, 0, + 62, 60, 0, 69, 0, 70, 0, 69, + 51, 0, 58, 66, 0, 69, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental193.scd b/sound_algo/palette/melodies/short/mOriental193.scd new file mode 100644 index 0000000..7b2f816 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental193.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental193 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental193 = [ + 55, 53, 60, 0, 62, 67, 72, 60, + 0, 51, 63, 53, 53, 51, 59, 50, + 71, 0, 62, 0, 0, 0, 55, 62, + 62, 63, 0, 71, 71, 53, 50, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental194.scd b/sound_algo/palette/melodies/short/mOriental194.scd new file mode 100644 index 0000000..06df78a --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental194.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental194 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental194 = [ + 67, 67, 0, 0, 0, 51, 0, 55, + 0, 0, 0, 62, 0, 59, 74, 53, + 0, 74, 60, 53, 72, 56, 0, 59, + 55, 63, 53, 56, 59, 56, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental195.scd b/sound_algo/palette/melodies/short/mOriental195.scd new file mode 100644 index 0000000..20ae89a --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental195.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental195 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental195 = [ + 50, 0, 57, 60, 74, 72, 62, 69, + 60, 58, 0, 57, 54, 54, 0, 57, + 50, 55, 0, 58, 74, 0, 0, 62, + 72, 51, 63, 67, 58, 72, 74, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental196.scd b/sound_algo/palette/melodies/short/mOriental196.scd new file mode 100644 index 0000000..c93b91c --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental196.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental196 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental196 = [ + 59, 56, 0, 71, 72, 71, 0, 51, + 0, 0, 65, 62, 0, 0, 0, 63, + 0, 62, 72, 65, 0, 72, 55, 60, + 0, 55, 68, 0, 0, 74, 67, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental197.scd b/sound_algo/palette/melodies/short/mOriental197.scd new file mode 100644 index 0000000..33d2003 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental197.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental197 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental197 = [ + 71, 68, 59, 67, 0, 0, 72, 50, + 62, 60, 0, 0, 0, 72, 72, 0, + 67, 72, 0, 0, 67, 59, 72, 71, + 74, 72, 63, 62, 72, 71, 71, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental198.scd b/sound_algo/palette/melodies/short/mOriental198.scd new file mode 100644 index 0000000..d69ce94 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental198.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental198 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental198 = [ + 59, 56, 71, 67, 50, 0, 67, 0, + 53, 51, 63, 0, 71, 74, 53, 0, + 71, 0, 63, 0, 74, 72, 71, 68, + 0, 53, 0, 68, 71, 68, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental199.scd b/sound_algo/palette/melodies/short/mOriental199.scd new file mode 100644 index 0000000..ab5b0df --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental199.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental199 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental199 = [ + 50, 0, 71, 68, 62, 72, 72, 72, + 55, 53, 53, 55, 50, 53, 63, 74, + 0, 0, 0, 51, 62, 55, 67, 50, + 71, 0, 0, 0, 67, 60, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental200.scd b/sound_algo/palette/melodies/short/mOriental200.scd new file mode 100644 index 0000000..6880d11 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental200.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental200 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental200 = [ + 74, 72, 0, 63, 55, 57, 0, 62, + 60, 74, 74, 57, 63, 62, 69, 67, + 0, 55, 62, 72, 55, 58, 63, 62, + 69, 67, 0, 55, 69, 51, 69, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental201.scd b/sound_algo/palette/melodies/short/mOriental201.scd new file mode 100644 index 0000000..ab00b4b --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental201.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental201 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental201 = [ + 59, 53, 60, 0, 0, 68, 0, 0, + 71, 65, 0, 53, 55, 53, 0, 67, + 71, 0, 0, 0, 62, 0, 0, 0, + 74, 55, 0, 56, 50, 71, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental202.scd b/sound_algo/palette/melodies/short/mOriental202.scd new file mode 100644 index 0000000..51ae815 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental202.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental202 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental202 = [ + 0, 55, 0, 51, 74, 67, 74, 0, + 57, 66, 60, 62, 0, 0, 72, 50, + 62, 55, 54, 66, 50, 67, 0, 0, + 62, 60, 66, 54, 70, 0, 74, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental203.scd b/sound_algo/palette/melodies/short/mOriental203.scd new file mode 100644 index 0000000..54067e7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental203.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental203 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental203 = [ + 62, 60, 0, 0, 0, 67, 74, 51, + 0, 54, 72, 58, 69, 0, 0, 51, + 74, 0, 74, 74, 50, 57, 0, 66, + 0, 69, 60, 0, 50, 69, 67, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental204.scd b/sound_algo/palette/melodies/short/mOriental204.scd new file mode 100644 index 0000000..743509f --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental204.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental204 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental204 = [ + 0, 0, 60, 0, 59, 0, 63, 63, + 0, 53, 65, 51, 0, 0, 0, 0, + 0, 59, 62, 0, 59, 55, 67, 0, + 56, 55, 0, 55, 0, 0, 62, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental205.scd b/sound_algo/palette/melodies/short/mOriental205.scd new file mode 100644 index 0000000..0e4f323 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental205.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental205 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental205 = [ + 55, 74, 72, 50, 62, 60, 0, 62, + 57, 74, 62, 51, 50, 63, 58, 0, + 60, 58, 62, 66, 50, 70, 74, 57, + 74, 72, 0, 69, 54, 51, 51, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental206.scd b/sound_algo/palette/melodies/short/mOriental206.scd new file mode 100644 index 0000000..e47952c --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental206.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental206 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental206 = [ + 57, 55, 62, 51, 69, 72, 67, 69, + 54, 0, 51, 58, 62, 60, 0, 67, + 0, 60, 50, 60, 0, 0, 54, 0, + 0, 0, 0, 55, 54, 0, 58, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental207.scd b/sound_algo/palette/melodies/short/mOriental207.scd new file mode 100644 index 0000000..9c57129 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental207.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental207 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental207 = [ + 74, 72, 58, 0, 74, 72, 0, 51, + 0, 57, 55, 54, 57, 67, 62, 63, + 66, 63, 72, 58, 74, 72, 0, 58, + 0, 58, 57, 57, 0, 58, 67, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental208.scd b/sound_algo/palette/melodies/short/mOriental208.scd new file mode 100644 index 0000000..eb68119 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental208.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental208 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental208 = [ + 0, 0, 65, 53, 0, 72, 0, 62, + 68, 0, 0, 0, 74, 72, 67, 53, + 65, 63, 0, 0, 74, 72, 62, 74, + 0, 67, 74, 50, 0, 51, 51, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental209.scd b/sound_algo/palette/melodies/short/mOriental209.scd new file mode 100644 index 0000000..5f1c3c3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental209.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental209 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental209 = [ + 72, 65, 65, 0, 0, 0, 72, 51, + 53, 56, 67, 56, 71, 68, 65, 72, + 72, 74, 72, 74, 50, 0, 0, 60, + 74, 68, 67, 0, 0, 56, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental210.scd b/sound_algo/palette/melodies/short/mOriental210.scd new file mode 100644 index 0000000..a6e5eaa --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental210.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental210 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental210 = [ + 0, 67, 60, 63, 69, 51, 54, 70, + 74, 72, 0, 70, 58, 51, 69, 57, + 0, 55, 0, 67, 69, 67, 0, 0, + 72, 70, 0, 51, 0, 0, 57, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental211.scd b/sound_algo/palette/melodies/short/mOriental211.scd new file mode 100644 index 0000000..d20f70e --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental211.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental211 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental211 = [ + 0, 63, 0, 0, 62, 60, 72, 55, + 67, 67, 0, 74, 62, 0, 0, 57, + 0, 57, 51, 0, 62, 0, 74, 0, + 62, 60, 50, 66, 60, 58, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental212.scd b/sound_algo/palette/melodies/short/mOriental212.scd new file mode 100644 index 0000000..e58f770 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental212.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental212 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental212 = [ + 65, 63, 0, 50, 71, 68, 74, 71, + 0, 56, 0, 55, 63, 62, 0, 51, + 50, 62, 0, 51, 0, 0, 68, 63, + 71, 68, 55, 67, 0, 55, 60, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental213.scd b/sound_algo/palette/melodies/short/mOriental213.scd new file mode 100644 index 0000000..644a1f7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental213.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental213 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental213 = [ + 74, 72, 67, 54, 0, 66, 69, 51, + 69, 74, 62, 0, 74, 74, 70, 50, + 70, 69, 69, 0, 57, 0, 58, 70, + 57, 55, 67, 50, 57, 0, 51, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental214.scd b/sound_algo/palette/melodies/short/mOriental214.scd new file mode 100644 index 0000000..c589761 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental214.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental214 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental214 = [ + 50, 59, 0, 51, 55, 53, 0, 0, + 59, 56, 62, 0, 59, 71, 0, 0, + 50, 0, 51, 0, 59, 56, 55, 67, + 60, 0, 0, 0, 0, 0, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental215.scd b/sound_algo/palette/melodies/short/mOriental215.scd new file mode 100644 index 0000000..537e705 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental215.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental215 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental215 = [ + 67, 65, 0, 51, 0, 67, 0, 50, + 0, 74, 0, 59, 0, 67, 0, 74, + 0, 67, 0, 0, 0, 0, 72, 0, + 62, 60, 67, 74, 72, 71, 59, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental216.scd b/sound_algo/palette/melodies/short/mOriental216.scd new file mode 100644 index 0000000..585cfd4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental216.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental216 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental216 = [ + 67, 57, 62, 0, 50, 0, 62, 69, + 62, 67, 62, 50, 54, 51, 51, 57, + 63, 62, 74, 54, 74, 72, 60, 0, + 0, 0, 0, 69, 57, 55, 70, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental217.scd b/sound_algo/palette/melodies/short/mOriental217.scd new file mode 100644 index 0000000..14dcbe0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental217.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental217 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental217 = [ + 0, 74, 51, 65, 67, 65, 0, 67, + 71, 0, 0, 51, 65, 63, 67, 51, + 0, 0, 71, 0, 71, 68, 60, 0, + 0, 0, 0, 53, 62, 67, 68, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental218.scd b/sound_algo/palette/melodies/short/mOriental218.scd new file mode 100644 index 0000000..80146fe --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental218.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental218 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental218 = [ + 55, 53, 67, 53, 50, 71, 71, 60, + 62, 62, 0, 0, 63, 62, 62, 71, + 50, 0, 55, 65, 62, 67, 62, 50, + 0, 0, 0, 62, 74, 72, 50, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental219.scd b/sound_algo/palette/melodies/short/mOriental219.scd new file mode 100644 index 0000000..3e22168 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental219.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental219 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental219 = [ + 51, 58, 57, 0, 50, 57, 0, 0, + 66, 74, 69, 60, 0, 58, 0, 60, + 62, 57, 0, 54, 54, 51, 70, 58, + 0, 54, 69, 51, 66, 63, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental220.scd b/sound_algo/palette/melodies/short/mOriental220.scd new file mode 100644 index 0000000..1aa115f --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental220.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental220 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental220 = [ + 74, 74, 74, 74, 51, 0, 72, 74, + 50, 0, 54, 0, 63, 51, 0, 0, + 0, 69, 63, 72, 0, 69, 54, 0, + 69, 55, 55, 50, 55, 62, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental221.scd b/sound_algo/palette/melodies/short/mOriental221.scd new file mode 100644 index 0000000..324d7bd --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental221.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental221 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental221 = [ + 55, 53, 0, 71, 0, 0, 68, 0, + 56, 0, 63, 0, 71, 0, 68, 0, + 55, 53, 50, 74, 65, 51, 53, 0, + 68, 51, 65, 55, 0, 60, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental222.scd b/sound_algo/palette/melodies/short/mOriental222.scd new file mode 100644 index 0000000..9aa32a8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental222.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental222 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental222 = [ + 71, 68, 68, 71, 0, 0, 50, 60, + 74, 72, 50, 67, 0, 59, 56, 0, + 56, 60, 63, 68, 71, 68, 0, 63, + 50, 63, 0, 59, 0, 59, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental223.scd b/sound_algo/palette/melodies/short/mOriental223.scd new file mode 100644 index 0000000..b32e3b2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental223.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental223 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental223 = [ + 50, 65, 51, 0, 67, 72, 53, 74, + 62, 71, 0, 0, 0, 71, 56, 50, + 0, 65, 0, 71, 50, 72, 72, 71, + 59, 59, 59, 74, 62, 59, 56, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental224.scd b/sound_algo/palette/melodies/short/mOriental224.scd new file mode 100644 index 0000000..edf5b40 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental224.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental224 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental224 = [ + 57, 69, 0, 0, 62, 60, 0, 54, + 0, 72, 57, 74, 0, 58, 0, 63, + 0, 63, 63, 0, 74, 50, 0, 70, + 0, 55, 58, 72, 58, 57, 54, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental225.scd b/sound_algo/palette/melodies/short/mOriental225.scd new file mode 100644 index 0000000..fe7c3b4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental225.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental225 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental225 = [ + 55, 0, 0, 74, 0, 74, 58, 0, + 0, 0, 0, 51, 0, 60, 0, 70, + 50, 51, 70, 70, 51, 57, 58, 67, + 74, 72, 54, 72, 0, 0, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental226.scd b/sound_algo/palette/melodies/short/mOriental226.scd new file mode 100644 index 0000000..7796fc0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental226.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental226 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental226 = [ + 59, 56, 0, 50, 59, 56, 0, 68, + 0, 50, 60, 55, 63, 50, 74, 62, + 0, 0, 74, 51, 72, 0, 0, 53, + 0, 0, 60, 62, 74, 59, 0, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental227.scd b/sound_algo/palette/melodies/short/mOriental227.scd new file mode 100644 index 0000000..ac67313 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental227.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental227 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental227 = [ + 66, 63, 0, 0, 57, 67, 54, 69, + 69, 74, 50, 55, 63, 62, 51, 67, + 62, 60, 0, 72, 50, 0, 0, 66, + 57, 62, 0, 57, 72, 70, 51, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental228.scd b/sound_algo/palette/melodies/short/mOriental228.scd new file mode 100644 index 0000000..7b21f41 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental228.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental228 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental228 = [ + 57, 55, 74, 0, 0, 62, 70, 0, + 74, 72, 72, 0, 69, 0, 63, 72, + 0, 0, 72, 0, 55, 74, 0, 57, + 0, 57, 0, 0, 51, 50, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental229.scd b/sound_algo/palette/melodies/short/mOriental229.scd new file mode 100644 index 0000000..1492297 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental229.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental229 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental229 = [ + 0, 57, 0, 60, 70, 0, 0, 62, + 55, 54, 57, 57, 54, 0, 70, 60, + 62, 60, 69, 72, 74, 0, 74, 0, + 66, 63, 50, 67, 57, 74, 67, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental230.scd b/sound_algo/palette/melodies/short/mOriental230.scd new file mode 100644 index 0000000..cc6baa3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental230.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental230 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental230 = [ + 62, 60, 70, 67, 66, 50, 70, 0, + 62, 67, 67, 0, 50, 54, 0, 63, + 57, 55, 55, 60, 0, 0, 0, 60, + 62, 70, 66, 60, 66, 0, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental231.scd b/sound_algo/palette/melodies/short/mOriental231.scd new file mode 100644 index 0000000..b217d49 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental231.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental231 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental231 = [ + 55, 53, 51, 0, 67, 71, 51, 63, + 0, 71, 0, 65, 0, 63, 0, 67, + 0, 68, 60, 0, 71, 68, 50, 0, + 67, 65, 74, 74, 62, 60, 50, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental232.scd b/sound_algo/palette/melodies/short/mOriental232.scd new file mode 100644 index 0000000..ec47608 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental232.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental232 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental232 = [ + 0, 74, 0, 50, 66, 63, 51, 58, + 67, 0, 60, 55, 0, 66, 0, 0, + 66, 67, 58, 63, 74, 74, 0, 62, + 50, 0, 0, 0, 0, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental233.scd b/sound_algo/palette/melodies/short/mOriental233.scd new file mode 100644 index 0000000..e127e25 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental233.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental233 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental233 = [ + 0, 0, 69, 58, 62, 60, 67, 0, + 58, 57, 0, 0, 50, 0, 57, 0, + 69, 50, 63, 58, 66, 51, 70, 62, + 66, 0, 0, 57, 0, 57, 60, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental234.scd b/sound_algo/palette/melodies/short/mOriental234.scd new file mode 100644 index 0000000..52470c2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental234.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental234 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental234 = [ + 69, 67, 58, 70, 70, 70, 0, 57, + 69, 54, 74, 51, 54, 55, 69, 60, + 66, 50, 0, 70, 57, 55, 57, 0, + 66, 72, 55, 0, 58, 57, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental235.scd b/sound_algo/palette/melodies/short/mOriental235.scd new file mode 100644 index 0000000..d8dba2e --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental235.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental235 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental235 = [ + 0, 63, 55, 68, 74, 0, 0, 50, + 62, 63, 55, 72, 60, 59, 71, 0, + 67, 53, 74, 0, 68, 51, 74, 62, + 55, 67, 50, 68, 50, 65, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental236.scd b/sound_algo/palette/melodies/short/mOriental236.scd new file mode 100644 index 0000000..69d4e80 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental236.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental236 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental236 = [ + 66, 69, 0, 63, 0, 50, 72, 0, + 0, 0, 74, 70, 0, 74, 70, 0, + 74, 0, 62, 51, 50, 60, 0, 58, + 62, 60, 58, 50, 66, 57, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental237.scd b/sound_algo/palette/melodies/short/mOriental237.scd new file mode 100644 index 0000000..62c274d --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental237.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental237 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental237 = [ + 62, 60, 51, 51, 69, 0, 72, 72, + 70, 69, 0, 69, 50, 55, 72, 63, + 57, 0, 62, 51, 50, 0, 62, 74, + 54, 51, 69, 0, 60, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental238.scd b/sound_algo/palette/melodies/short/mOriental238.scd new file mode 100644 index 0000000..9c12647 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental238.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental238 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental238 = [ + 54, 51, 57, 62, 50, 74, 72, 0, + 0, 0, 0, 50, 74, 74, 70, 62, + 72, 0, 0, 0, 70, 69, 69, 57, + 0, 0, 0, 74, 0, 0, 0, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental239.scd b/sound_algo/palette/melodies/short/mOriental239.scd new file mode 100644 index 0000000..4a903a3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental239.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental239 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental239 = [ + 74, 72, 69, 0, 0, 0, 0, 0, + 54, 69, 60, 58, 0, 54, 74, 0, + 0, 0, 57, 74, 74, 0, 57, 57, + 67, 58, 69, 50, 0, 66, 69, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental240.scd b/sound_algo/palette/melodies/short/mOriental240.scd new file mode 100644 index 0000000..7bb238c --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental240.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental240 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental240 = [ + 0, 59, 50, 65, 65, 63, 71, 0, + 71, 0, 53, 72, 62, 60, 0, 60, + 55, 65, 55, 50, 0, 63, 51, 59, + 56, 55, 0, 63, 50, 0, 72, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental241.scd b/sound_algo/palette/melodies/short/mOriental241.scd new file mode 100644 index 0000000..9ba25a0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental241.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental241 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental241 = [ + 59, 56, 51, 59, 71, 74, 72, 72, + 60, 59, 51, 55, 62, 74, 0, 60, + 72, 53, 72, 74, 60, 59, 0, 51, + 0, 55, 50, 0, 50, 0, 62, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental242.scd b/sound_algo/palette/melodies/short/mOriental242.scd new file mode 100644 index 0000000..3aee2b5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental242.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental242 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental242 = [ + 0, 54, 69, 60, 74, 72, 72, 63, + 66, 63, 55, 67, 66, 0, 74, 66, + 0, 57, 0, 50, 54, 63, 55, 72, + 0, 58, 0, 72, 54, 69, 57, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental243.scd b/sound_algo/palette/melodies/short/mOriental243.scd new file mode 100644 index 0000000..c794241 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental243.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental243 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental243 = [ + 71, 0, 55, 0, 59, 0, 0, 55, + 63, 63, 55, 0, 50, 72, 56, 71, + 71, 68, 0, 50, 62, 60, 50, 60, + 50, 55, 67, 72, 62, 63, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental244.scd b/sound_algo/palette/melodies/short/mOriental244.scd new file mode 100644 index 0000000..ebfab7c --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental244.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental244 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental244 = [ + 0, 0, 56, 72, 62, 74, 65, 60, + 62, 60, 74, 74, 74, 0, 68, 50, + 0, 0, 53, 51, 55, 0, 62, 0, + 0, 51, 62, 0, 67, 65, 51, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental245.scd b/sound_algo/palette/melodies/short/mOriental245.scd new file mode 100644 index 0000000..ef66ea9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental245.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental245 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental245 = [ + 0, 67, 0, 68, 59, 72, 53, 71, + 0, 62, 71, 0, 0, 68, 60, 74, + 74, 72, 56, 0, 0, 72, 50, 74, + 74, 68, 72, 72, 67, 71, 0, 51 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental246.scd b/sound_algo/palette/melodies/short/mOriental246.scd new file mode 100644 index 0000000..b16a919 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental246.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental246 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental246 = [ + 71, 68, 68, 0, 0, 67, 55, 59, + 0, 53, 0, 62, 55, 67, 55, 0, + 50, 60, 0, 0, 0, 0, 0, 65, + 50, 72, 67, 53, 0, 63, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental247.scd b/sound_algo/palette/melodies/short/mOriental247.scd new file mode 100644 index 0000000..62329f0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental247.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental247 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental247 = [ + 69, 0, 57, 57, 74, 63, 66, 55, + 72, 51, 63, 0, 0, 0, 66, 69, + 69, 67, 57, 55, 67, 66, 70, 0, + 72, 60, 0, 58, 0, 0, 60, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental248.scd b/sound_algo/palette/melodies/short/mOriental248.scd new file mode 100644 index 0000000..67fd763 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental248.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental248 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental248 = [ + 66, 63, 60, 55, 0, 72, 0, 58, + 0, 70, 0, 58, 67, 66, 50, 0, + 62, 60, 0, 0, 50, 0, 0, 0, + 69, 0, 55, 57, 60, 62, 0, 54 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental249.scd b/sound_algo/palette/melodies/short/mOriental249.scd new file mode 100644 index 0000000..c3913ae --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental249.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental249 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental249 = [ + 71, 60, 0, 68, 55, 53, 0, 0, + 0, 68, 62, 0, 53, 53, 60, 72, + 0, 51, 0, 50, 55, 53, 71, 0, + 59, 0, 0, 71, 0, 71, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental250.scd b/sound_algo/palette/melodies/short/mOriental250.scd new file mode 100644 index 0000000..2b5e656 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental250.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental250 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental250 = [ + 0, 60, 0, 0, 69, 63, 0, 0, + 0, 63, 55, 0, 50, 66, 0, 0, + 66, 0, 62, 0, 0, 62, 0, 50, + 0, 0, 0, 0, 69, 50, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental251.scd b/sound_algo/palette/melodies/short/mOriental251.scd new file mode 100644 index 0000000..4282ee9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental251.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental251 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental251 = [ + 54, 51, 66, 58, 63, 62, 0, 0, + 74, 57, 0, 0, 0, 57, 70, 63, + 74, 72, 72, 0, 57, 57, 67, 0, + 67, 58, 69, 69, 58, 57, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental252.scd b/sound_algo/palette/melodies/short/mOriental252.scd new file mode 100644 index 0000000..619abb7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental252.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental252 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental252 = [ + 0, 60, 50, 55, 55, 59, 50, 71, + 50, 51, 0, 63, 74, 62, 56, 51, + 0, 53, 0, 63, 55, 0, 0, 72, + 74, 74, 0, 0, 74, 55, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mOriental253.scd b/sound_algo/palette/melodies/short/mOriental253.scd new file mode 100644 index 0000000..6b23647 --- /dev/null +++ b/sound_algo/palette/melodies/short/mOriental253.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mOriental253 -- short melody (32 steps), genre: oriental +// ===================================================================== +( +~mOriental253 = [ + 0, 0, 0, 60, 71, 0, 0, 74, + 62, 60, 74, 0, 0, 55, 0, 50, + 0, 0, 0, 51, 65, 0, 0, 67, + 74, 0, 56, 0, 0, 55, 50, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad100.scd b/sound_algo/palette/melodies/short/mPad100.scd new file mode 100644 index 0000000..ccdeba5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad100 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad100 = [ + 0, 72, 0, 0, 0, 72, 0, 79, + 0, 81, 0, 0, 0, 0, 0, 0, + 63, 67, 0, 0, 0, 82, 0, 0, + 63, 69, 0, 0, 0, 0, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad101.scd b/sound_algo/palette/melodies/short/mPad101.scd new file mode 100644 index 0000000..7d64601 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad101 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad101 = [ + 0, 70, 0, 0, 68, 0, 0, 0, + 0, 0, 77, 0, 0, 0, 0, 0, + 77, 0, 0, 68, 0, 0, 0, 0, + 60, 67, 0, 77, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad102.scd b/sound_algo/palette/melodies/short/mPad102.scd new file mode 100644 index 0000000..33ede9d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad102 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad102 = [ + 0, 65, 60, 0, 0, 0, 65, 0, + 0, 0, 60, 0, 0, 0, 65, 0, + 0, 0, 0, 0, 0, 0, 77, 0, + 0, 0, 0, 0, 74, 82, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad103.scd b/sound_algo/palette/melodies/short/mPad103.scd new file mode 100644 index 0000000..b8521c3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad103 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad103 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 76, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad104.scd b/sound_algo/palette/melodies/short/mPad104.scd new file mode 100644 index 0000000..b300d3e --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad104 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad104 = [ + 64, 82, 0, 0, 0, 0, 0, 64, + 0, 0, 0, 0, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 76, + 0, 0, 0, 79, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad105.scd b/sound_algo/palette/melodies/short/mPad105.scd new file mode 100644 index 0000000..8b86e0c --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad105 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad105 = [ + 60, 0, 0, 0, 77, 77, 0, 0, + 0, 0, 0, 0, 0, 0, 74, 0, + 0, 0, 81, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad106.scd b/sound_algo/palette/melodies/short/mPad106.scd new file mode 100644 index 0000000..9bed342 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad106 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad106 = [ + 0, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 60, 82, 0, + 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 79, 77, 0, 0, 0, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad107.scd b/sound_algo/palette/melodies/short/mPad107.scd new file mode 100644 index 0000000..0b0351d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad107 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad107 = [ + 0, 0, 67, 60, 0, 0, 0, 72, + 0, 69, 0, 0, 0, 0, 0, 0, + 0, 74, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 62, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad108.scd b/sound_algo/palette/melodies/short/mPad108.scd new file mode 100644 index 0000000..b212d10 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad108 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad108 = [ + 63, 63, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 84, 0, 0, + 65, 0, 65, 60, 0, 0, 0, 74, + 0, 0, 70, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad109.scd b/sound_algo/palette/melodies/short/mPad109.scd new file mode 100644 index 0000000..861a761 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad109 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad109 = [ + 68, 0, 0, 0, 0, 0, 0, 0, + 80, 0, 0, 0, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 75, 0, 0, 84, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad110.scd b/sound_algo/palette/melodies/short/mPad110.scd new file mode 100644 index 0000000..9c23a65 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad110 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad110 = [ + 0, 79, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 77, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 77, + 0, 0, 0, 69, 0, 77, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad111.scd b/sound_algo/palette/melodies/short/mPad111.scd new file mode 100644 index 0000000..0246821 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad111 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad111 = [ + 0, 70, 0, 0, 0, 0, 67, 0, + 72, 0, 0, 0, 75, 0, 65, 0, + 80, 0, 0, 0, 0, 0, 0, 0, + 80, 0, 0, 60, 0, 0, 0, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad112.scd b/sound_algo/palette/melodies/short/mPad112.scd new file mode 100644 index 0000000..ce32feb --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad112 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad112 = [ + 0, 0, 0, 0, 72, 0, 0, 0, + 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, + 0, 0, 0, 69, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad113.scd b/sound_algo/palette/melodies/short/mPad113.scd new file mode 100644 index 0000000..89598bf --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad113 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad113 = [ + 81, 0, 0, 0, 0, 0, 0, 64, + 76, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad114.scd b/sound_algo/palette/melodies/short/mPad114.scd new file mode 100644 index 0000000..cca9a54 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad114 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad114 = [ + 0, 63, 0, 0, 0, 0, 0, 0, + 77, 0, 0, 0, 0, 79, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 74, 0, 80, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad115.scd b/sound_algo/palette/melodies/short/mPad115.scd new file mode 100644 index 0000000..349e326 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad115 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad115 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 0, + 0, 77, 0, 0, 0, 71, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad116.scd b/sound_algo/palette/melodies/short/mPad116.scd new file mode 100644 index 0000000..bf2f804 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad116 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad116 = [ + 79, 0, 0, 0, 0, 0, 77, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 65, 0, 0, 0, 0, + 79, 0, 0, 0, 0, 81, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad117.scd b/sound_algo/palette/melodies/short/mPad117.scd new file mode 100644 index 0000000..11d2b62 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad117 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad117 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 72, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 84, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad118.scd b/sound_algo/palette/melodies/short/mPad118.scd new file mode 100644 index 0000000..cefe6d0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad118 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad118 = [ + 71, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 65, 0, 0, 0, + 71, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad119.scd b/sound_algo/palette/melodies/short/mPad119.scd new file mode 100644 index 0000000..fb4389a --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad119 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad119 = [ + 0, 0, 0, 0, 0, 0, 0, 76, + 0, 62, 0, 0, 69, 0, 0, 82, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 0, 0, 0, 0, 0, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad120.scd b/sound_algo/palette/melodies/short/mPad120.scd new file mode 100644 index 0000000..7194240 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad120 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad120 = [ + 0, 0, 0, 0, 0, 0, 0, 74, + 0, 0, 0, 0, 0, 72, 0, 0, + 0, 0, 0, 0, 0, 60, 0, 0, + 0, 0, 68, 60, 0, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad121.scd b/sound_algo/palette/melodies/short/mPad121.scd new file mode 100644 index 0000000..f517e2d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad121 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad121 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 72, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad122.scd b/sound_algo/palette/melodies/short/mPad122.scd new file mode 100644 index 0000000..8f7fc26 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad122 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad122 = [ + 0, 67, 77, 0, 0, 0, 81, 0, + 0, 0, 0, 0, 67, 0, 0, 0, + 0, 0, 75, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 79, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad123.scd b/sound_algo/palette/melodies/short/mPad123.scd new file mode 100644 index 0000000..b56e776 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad123 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad123 = [ + 0, 0, 70, 0, 0, 0, 0, 0, + 0, 65, 0, 0, 72, 0, 0, 0, + 80, 0, 0, 60, 0, 79, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad124.scd b/sound_algo/palette/melodies/short/mPad124.scd new file mode 100644 index 0000000..b8c4fe6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad124 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad124 = [ + 65, 0, 0, 0, 0, 0, 79, 0, + 0, 0, 74, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 80, 0, + 0, 0, 84, 0, 0, 60, 68, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad125.scd b/sound_algo/palette/melodies/short/mPad125.scd new file mode 100644 index 0000000..743e745 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad125 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad125 = [ + 63, 0, 75, 0, 0, 0, 0, 63, + 0, 0, 0, 82, 72, 0, 62, 0, + 0, 0, 80, 0, 0, 0, 0, 65, + 0, 0, 82, 0, 0, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad126.scd b/sound_algo/palette/melodies/short/mPad126.scd new file mode 100644 index 0000000..244d9cf --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad126 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad126 = [ + 77, 0, 0, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 0, 0, 67, 0, + 0, 0, 65, 0, 0, 0, 0, 65, + 0, 67, 0, 0, 0, 81, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad127.scd b/sound_algo/palette/melodies/short/mPad127.scd new file mode 100644 index 0000000..9e54348 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad127 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad127 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 77, 0, 0, 0, 75, 0, 0, 0, + 62, 0, 0, 0, 0, 0, 0, 75 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad128.scd b/sound_algo/palette/melodies/short/mPad128.scd new file mode 100644 index 0000000..9872b6b --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad128 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad128 = [ + 72, 0, 0, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 0, 0, 0, 72, + 0, 65, 80, 0, 0, 0, 0, 72, + 0, 0, 65, 0, 0, 0, 0, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad129.scd b/sound_algo/palette/melodies/short/mPad129.scd new file mode 100644 index 0000000..068b687 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad129 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad129 = [ + 0, 0, 69, 0, 0, 0, 69, 0, + 0, 0, 0, 0, 72, 0, 0, 0, + 0, 0, 70, 0, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad130.scd b/sound_algo/palette/melodies/short/mPad130.scd new file mode 100644 index 0000000..a7e9b4d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad130 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad130 = [ + 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 60, 0, 0, 0, 81, 0, + 0, 0, 65, 0, 0, 0, 0, 0, + 81, 0, 0, 0, 0, 72, 84, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad131.scd b/sound_algo/palette/melodies/short/mPad131.scd new file mode 100644 index 0000000..51a304a --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad131 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad131 = [ + 0, 0, 0, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 84, + 0, 0, 0, 0, 0, 82, 0, 0, + 0, 0, 0, 82, 0, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad132.scd b/sound_algo/palette/melodies/short/mPad132.scd new file mode 100644 index 0000000..7c7e29c --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad132 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad132 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 76, 0, + 0, 84, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad133.scd b/sound_algo/palette/melodies/short/mPad133.scd new file mode 100644 index 0000000..b720b4c --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad133 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad133 = [ + 0, 0, 0, 0, 63, 0, 0, 0, + 60, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad134.scd b/sound_algo/palette/melodies/short/mPad134.scd new file mode 100644 index 0000000..a5dda08 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad134 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad134 = [ + 0, 69, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 75, 0, + 84, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 60, 0, 0, 0, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad135.scd b/sound_algo/palette/melodies/short/mPad135.scd new file mode 100644 index 0000000..2d233e9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad135 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad135 = [ + 77, 0, 0, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 79, 0, 0, + 0, 0, 67, 0, 0, 64, 76, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad136.scd b/sound_algo/palette/melodies/short/mPad136.scd new file mode 100644 index 0000000..69f3178 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad136 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad136 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 72, 0, 0, 76, 62, 60, 0, 0, + 0, 0, 72, 0, 0, 0, 0, 0, + 0, 0, 74, 0, 81, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad137.scd b/sound_algo/palette/melodies/short/mPad137.scd new file mode 100644 index 0000000..c5a8c6e --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad137 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad137 = [ + 0, 62, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 75, 0, + 0, 62, 0, 0, 0, 62, 82, 0, + 0, 0, 0, 0, 84, 0, 0, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad138.scd b/sound_algo/palette/melodies/short/mPad138.scd new file mode 100644 index 0000000..ea4b4db --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad138 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad138 = [ + 0, 0, 0, 0, 0, 0, 80, 0, + 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 0, 68, 0, 0, 74, 60, + 0, 0, 84, 0, 0, 0, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad139.scd b/sound_algo/palette/melodies/short/mPad139.scd new file mode 100644 index 0000000..61b17e8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad139 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad139 = [ + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 0, 0, 76, 0, 0, 0, 0, + 0, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad140.scd b/sound_algo/palette/melodies/short/mPad140.scd new file mode 100644 index 0000000..f720681 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad140 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad140 = [ + 0, 0, 0, 0, 67, 0, 0, 0, + 0, 0, 0, 0, 65, 70, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 60, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad141.scd b/sound_algo/palette/melodies/short/mPad141.scd new file mode 100644 index 0000000..1ffd0ff --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad141 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad141 = [ + 0, 0, 0, 69, 0, 74, 0, 0, + 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 77, 0, 0, 0, 0, + 0, 60, 74, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad142.scd b/sound_algo/palette/melodies/short/mPad142.scd new file mode 100644 index 0000000..705ee42 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad142 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad142 = [ + 65, 0, 0, 60, 0, 0, 0, 0, + 84, 70, 0, 0, 65, 0, 0, 0, + 0, 0, 0, 81, 0, 0, 0, 60, + 84, 0, 0, 0, 0, 79, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad143.scd b/sound_algo/palette/melodies/short/mPad143.scd new file mode 100644 index 0000000..66a83b9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad143 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad143 = [ + 64, 0, 0, 0, 79, 0, 0, 0, + 0, 0, 79, 0, 0, 72, 64, 0, + 0, 77, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 0, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad144.scd b/sound_algo/palette/melodies/short/mPad144.scd new file mode 100644 index 0000000..aa90360 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad144 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad144 = [ + 0, 74, 0, 0, 0, 0, 67, 77, + 0, 0, 0, 0, 0, 0, 0, 67, + 69, 0, 0, 0, 0, 0, 0, 82, + 0, 0, 0, 0, 69, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad145.scd b/sound_algo/palette/melodies/short/mPad145.scd new file mode 100644 index 0000000..5e35df3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad145 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad145 = [ + 0, 64, 0, 0, 0, 0, 0, 0, + 79, 0, 0, 0, 0, 62, 0, 0, + 0, 0, 81, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad146.scd b/sound_algo/palette/melodies/short/mPad146.scd new file mode 100644 index 0000000..1d02be5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad146 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad146 = [ + 70, 0, 0, 0, 0, 65, 0, 80, + 0, 0, 0, 75, 0, 0, 0, 0, + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 77, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad147.scd b/sound_algo/palette/melodies/short/mPad147.scd new file mode 100644 index 0000000..2bd357b --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad147 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad147 = [ + 81, 0, 0, 0, 0, 0, 0, 75, + 0, 60, 0, 65, 79, 0, 0, 0, + 0, 0, 0, 0, 75, 0, 67, 0, + 0, 0, 0, 0, 0, 0, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad148.scd b/sound_algo/palette/melodies/short/mPad148.scd new file mode 100644 index 0000000..2789995 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad148 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad148 = [ + 0, 0, 0, 67, 0, 0, 0, 0, + 0, 67, 0, 0, 0, 0, 0, 60, + 0, 0, 0, 0, 0, 64, 0, 0, + 0, 0, 0, 65, 0, 81, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad149.scd b/sound_algo/palette/melodies/short/mPad149.scd new file mode 100644 index 0000000..b630557 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad149 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad149 = [ + 0, 0, 0, 0, 0, 0, 67, 76, + 0, 0, 0, 76, 0, 64, 0, 0, + 0, 0, 84, 0, 65, 0, 0, 0, + 0, 65, 0, 76, 81, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad150.scd b/sound_algo/palette/melodies/short/mPad150.scd new file mode 100644 index 0000000..6f16501 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad150 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad150 = [ + 0, 69, 63, 0, 0, 0, 63, 0, + 0, 0, 0, 79, 67, 0, 0, 0, + 65, 0, 0, 0, 81, 79, 0, 0, + 79, 0, 0, 0, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad151.scd b/sound_algo/palette/melodies/short/mPad151.scd new file mode 100644 index 0000000..00368cd --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad151 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad151 = [ + 0, 60, 0, 0, 0, 60, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 77, + 75, 0, 0, 62, 0, 0, 0, 0, + 60, 69, 67, 0, 75, 0, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad152.scd b/sound_algo/palette/melodies/short/mPad152.scd new file mode 100644 index 0000000..e669462 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad152 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad152 = [ + 0, 0, 0, 0, 65, 0, 0, 0, + 0, 0, 81, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 62, 60, 0, 82, + 0, 0, 76, 0, 0, 81, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad153.scd b/sound_algo/palette/melodies/short/mPad153.scd new file mode 100644 index 0000000..c89624c --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad153 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad153 = [ + 75, 0, 0, 0, 0, 70, 0, 0, + 63, 0, 60, 0, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 65, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad154.scd b/sound_algo/palette/melodies/short/mPad154.scd new file mode 100644 index 0000000..4d4394e --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad154 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad154 = [ + 0, 0, 0, 0, 0, 0, 67, 0, + 0, 0, 0, 0, 0, 76, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPad155.scd b/sound_algo/palette/melodies/short/mPad155.scd new file mode 100644 index 0000000..a01aa15 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPad155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPad155 -- short melody (32 steps), genre: pad +// ===================================================================== +( +~mPad155 = [ + 0, 63, 67, 0, 0, 70, 0, 0, + 0, 0, 0, 82, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 63, 0, 0, + 0, 0, 0, 0, 0, 60, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk100.scd b/sound_algo/palette/melodies/short/mPhonk100.scd new file mode 100644 index 0000000..13de51d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk100 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk100 = [ + 36, 0, 45, 0, 0, 0, 0, 0, + 52, 0, 48, 0, 36, 0, 0, 0, + 60, 0, 0, 60, 0, 0, 0, 0, + 0, 0, 40, 0, 45, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk101.scd b/sound_algo/palette/melodies/short/mPhonk101.scd new file mode 100644 index 0000000..83fbfa7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk101 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk101 = [ + 40, 0, 48, 0, 0, 0, 40, 0, + 0, 0, 0, 0, 52, 0, 0, 0, + 60, 0, 38, 52, 60, 48, 55, 0, + 38, 0, 38, 36, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk102.scd b/sound_algo/palette/melodies/short/mPhonk102.scd new file mode 100644 index 0000000..be41b08 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk102 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk102 = [ + 55, 0, 59, 47, 59, 57, 0, 0, + 43, 0, 0, 0, 0, 0, 43, 59, + 50, 55, 55, 47, 0, 0, 40, 0, + 55, 0, 55, 55, 40, 0, 47, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk103.scd b/sound_algo/palette/melodies/short/mPhonk103.scd new file mode 100644 index 0000000..dcf45ed --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk103 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk103 = [ + 40, 0, 0, 0, 0, 0, 59, 0, + 0, 0, 0, 0, 0, 0, 47, 0, + 0, 0, 0, 0, 52, 0, 52, 0, + 0, 0, 47, 0, 55, 40, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk104.scd b/sound_algo/palette/melodies/short/mPhonk104.scd new file mode 100644 index 0000000..0a1cfe1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk104 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk104 = [ + 0, 0, 40, 0, 50, 0, 0, 0, + 0, 52, 0, 0, 43, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 40, 0, + 0, 0, 0, 0, 43, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk105.scd b/sound_algo/palette/melodies/short/mPhonk105.scd new file mode 100644 index 0000000..8efd6da --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk105 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk105 = [ + 0, 0, 36, 0, 0, 0, 60, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 36, 0, 0, + 0, 0, 0, 0, 55, 0, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk106.scd b/sound_algo/palette/melodies/short/mPhonk106.scd new file mode 100644 index 0000000..9bcdf02 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk106 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk106 = [ + 48, 0, 0, 36, 48, 0, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 55, 0, 0, 0, 0, 0, + 36, 0, 55, 0, 52, 0, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk107.scd b/sound_algo/palette/melodies/short/mPhonk107.scd new file mode 100644 index 0000000..c9c805f --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk107 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk107 = [ + 0, 0, 0, 0, 45, 0, 60, 0, + 0, 0, 0, 0, 0, 0, 45, 0, + 0, 0, 50, 57, 0, 0, 0, 0, + 43, 0, 52, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk108.scd b/sound_algo/palette/melodies/short/mPhonk108.scd new file mode 100644 index 0000000..d84bb7c --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk108 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk108 = [ + 55, 43, 0, 57, 0, 0, 55, 0, + 0, 0, 47, 0, 47, 0, 0, 0, + 57, 0, 45, 59, 0, 0, 0, 0, + 55, 0, 0, 0, 43, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk109.scd b/sound_algo/palette/melodies/short/mPhonk109.scd new file mode 100644 index 0000000..3b90f8b --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk109 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk109 = [ + 48, 0, 0, 0, 36, 45, 0, 0, + 0, 0, 0, 0, 57, 0, 0, 0, + 55, 0, 57, 50, 50, 0, 55, 0, + 0, 0, 55, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk110.scd b/sound_algo/palette/melodies/short/mPhonk110.scd new file mode 100644 index 0000000..a3b7f8c --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk110 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk110 = [ + 0, 0, 0, 0, 0, 47, 59, 0, + 0, 0, 0, 0, 0, 55, 0, 0, + 40, 0, 0, 0, 52, 47, 0, 0, + 0, 0, 0, 0, 45, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk111.scd b/sound_algo/palette/melodies/short/mPhonk111.scd new file mode 100644 index 0000000..2eadbe7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk111 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk111 = [ + 55, 0, 0, 0, 0, 0, 59, 0, + 0, 0, 0, 0, 43, 0, 0, 43, + 40, 0, 0, 40, 43, 0, 0, 43, + 55, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk112.scd b/sound_algo/palette/melodies/short/mPhonk112.scd new file mode 100644 index 0000000..7f00e9a --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk112 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk112 = [ + 52, 0, 0, 0, 0, 0, 0, 0, + 57, 0, 36, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 0, 0, 0, + 48, 0, 0, 0, 0, 0, 36, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk113.scd b/sound_algo/palette/melodies/short/mPhonk113.scd new file mode 100644 index 0000000..9d878e3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk113 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk113 = [ + 52, 0, 52, 38, 0, 0, 47, 55, + 0, 0, 0, 0, 43, 0, 47, 0, + 0, 0, 0, 38, 0, 0, 0, 0, + 0, 52, 0, 0, 55, 0, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk114.scd b/sound_algo/palette/melodies/short/mPhonk114.scd new file mode 100644 index 0000000..5f9745d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk114 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk114 = [ + 0, 0, 0, 0, 0, 0, 43, 0, + 0, 0, 36, 0, 0, 0, 0, 0, + 45, 0, 0, 0, 60, 0, 50, 0, + 0, 0, 0, 0, 36, 0, 45, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk115.scd b/sound_algo/palette/melodies/short/mPhonk115.scd new file mode 100644 index 0000000..a669de0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk115 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk115 = [ + 0, 0, 0, 0, 0, 0, 57, 0, + 0, 0, 0, 0, 57, 0, 43, 0, + 40, 0, 52, 0, 0, 48, 0, 0, + 52, 0, 60, 0, 48, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk116.scd b/sound_algo/palette/melodies/short/mPhonk116.scd new file mode 100644 index 0000000..cb1a3f1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk116 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk116 = [ + 52, 0, 0, 0, 0, 57, 43, 0, + 0, 0, 52, 0, 0, 0, 0, 0, + 43, 40, 0, 0, 0, 0, 0, 0, + 57, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk117.scd b/sound_algo/palette/melodies/short/mPhonk117.scd new file mode 100644 index 0000000..4e04df6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk117 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk117 = [ + 0, 40, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 59, 40, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 43, 0, 59, 55, 59, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk118.scd b/sound_algo/palette/melodies/short/mPhonk118.scd new file mode 100644 index 0000000..9d08b31 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk118 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk118 = [ + 0, 0, 0, 0, 0, 0, 52, 0, + 60, 0, 0, 0, 57, 0, 0, 0, + 0, 0, 60, 36, 40, 0, 36, 60, + 52, 0, 0, 0, 50, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk119.scd b/sound_algo/palette/melodies/short/mPhonk119.scd new file mode 100644 index 0000000..8c1c6a3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk119 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk119 = [ + 36, 0, 38, 0, 57, 0, 0, 0, + 0, 0, 48, 0, 36, 0, 48, 0, + 0, 0, 57, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 55, 0, 0, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk120.scd b/sound_algo/palette/melodies/short/mPhonk120.scd new file mode 100644 index 0000000..33110cb --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk120 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk120 = [ + 0, 0, 0, 0, 0, 0, 45, 52, + 0, 0, 38, 0, 0, 0, 40, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk121.scd b/sound_algo/palette/melodies/short/mPhonk121.scd new file mode 100644 index 0000000..9b323a3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk121 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk121 = [ + 0, 0, 0, 0, 0, 0, 50, 0, + 0, 0, 0, 0, 0, 0, 50, 0, + 0, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk122.scd b/sound_algo/palette/melodies/short/mPhonk122.scd new file mode 100644 index 0000000..f5b7102 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk122 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk122 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 0, 0, 0, + 0, 48, 0, 0, 0, 40, 48, 0, + 36, 0, 52, 57, 43, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk123.scd b/sound_algo/palette/melodies/short/mPhonk123.scd new file mode 100644 index 0000000..7cb33fa --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk123 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk123 = [ + 0, 0, 0, 0, 48, 0, 0, 0, + 0, 0, 40, 0, 0, 0, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 43, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk124.scd b/sound_algo/palette/melodies/short/mPhonk124.scd new file mode 100644 index 0000000..a18b398 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk124 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk124 = [ + 0, 0, 38, 0, 0, 57, 43, 0, + 0, 40, 0, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 40, 0, 0, 0, + 36, 0, 0, 0, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk125.scd b/sound_algo/palette/melodies/short/mPhonk125.scd new file mode 100644 index 0000000..512d725 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk125 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk125 = [ + 0, 0, 50, 0, 0, 0, 57, 57, + 60, 0, 48, 0, 0, 0, 0, 0, + 45, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk126.scd b/sound_algo/palette/melodies/short/mPhonk126.scd new file mode 100644 index 0000000..2b9ec56 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk126 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk126 = [ + 47, 0, 0, 0, 0, 0, 45, 0, + 55, 0, 50, 0, 0, 0, 0, 0, + 52, 0, 45, 59, 40, 0, 55, 0, + 0, 0, 0, 0, 0, 0, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPhonk127.scd b/sound_algo/palette/melodies/short/mPhonk127.scd new file mode 100644 index 0000000..bd9e145 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPhonk127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPhonk127 -- short melody (32 steps), genre: phonk +// ===================================================================== +( +~mPhonk127 = [ + 0, 40, 55, 0, 45, 43, 0, 0, + 0, 0, 45, 0, 0, 0, 45, 43, + 60, 0, 0, 0, 36, 0, 0, 0, + 50, 43, 0, 0, 40, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck100.scd b/sound_algo/palette/melodies/short/mPluck100.scd new file mode 100644 index 0000000..e37a0c3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck100 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck100 = [ + 79, 60, 0, 0, 0, 79, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 60, + 0, 0, 79, 0, 0, 0, 64, 62, + 64, 0, 69, 0, 79, 0, 84, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck101.scd b/sound_algo/palette/melodies/short/mPluck101.scd new file mode 100644 index 0000000..d5b927f --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck101 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck101 = [ + 0, 67, 71, 0, 0, 79, 79, 67, + 0, 64, 0, 74, 64, 0, 0, 69, + 0, 0, 69, 81, 0, 0, 71, 79, + 83, 69, 64, 0, 74, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck102.scd b/sound_algo/palette/melodies/short/mPluck102.scd new file mode 100644 index 0000000..040ca4f --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck102 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck102 = [ + 74, 0, 79, 76, 74, 79, 81, 0, + 0, 0, 0, 0, 67, 0, 0, 0, + 60, 69, 67, 81, 84, 0, 0, 69, + 84, 67, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck103.scd b/sound_algo/palette/melodies/short/mPluck103.scd new file mode 100644 index 0000000..10e3207 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck103 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck103 = [ + 0, 60, 0, 64, 0, 84, 0, 81, + 0, 81, 0, 62, 84, 69, 84, 0, + 74, 67, 69, 0, 60, 76, 0, 81, + 0, 0, 0, 0, 67, 0, 0, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck104.scd b/sound_algo/palette/melodies/short/mPluck104.scd new file mode 100644 index 0000000..7cab3b0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck104 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck104 = [ + 60, 0, 67, 67, 0, 0, 0, 72, + 60, 0, 81, 84, 60, 69, 0, 0, + 64, 79, 67, 76, 81, 74, 79, 84, + 0, 76, 76, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck105.scd b/sound_algo/palette/melodies/short/mPluck105.scd new file mode 100644 index 0000000..ca20cfe --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck105 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck105 = [ + 74, 64, 0, 0, 0, 0, 0, 62, + 67, 0, 60, 76, 0, 81, 79, 72, + 0, 0, 0, 0, 0, 0, 79, 0, + 0, 79, 67, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck106.scd b/sound_algo/palette/melodies/short/mPluck106.scd new file mode 100644 index 0000000..449f9a6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck106 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck106 = [ + 0, 62, 84, 0, 67, 0, 0, 81, + 0, 0, 0, 0, 0, 0, 74, 81, + 79, 64, 0, 0, 81, 64, 84, 0, + 64, 84, 62, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck107.scd b/sound_algo/palette/melodies/short/mPluck107.scd new file mode 100644 index 0000000..81effc6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck107 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck107 = [ + 0, 0, 67, 72, 0, 72, 0, 62, + 0, 64, 84, 76, 0, 69, 0, 60, + 64, 84, 0, 60, 67, 64, 0, 0, + 84, 0, 0, 64, 60, 0, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck108.scd b/sound_algo/palette/melodies/short/mPluck108.scd new file mode 100644 index 0000000..7d55d39 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck108 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck108 = [ + 0, 0, 69, 76, 0, 0, 0, 0, + 74, 0, 79, 62, 79, 81, 83, 0, + 67, 76, 0, 0, 74, 0, 71, 0, + 67, 64, 0, 0, 71, 67, 76, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck109.scd b/sound_algo/palette/melodies/short/mPluck109.scd new file mode 100644 index 0000000..37672c1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck109 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck109 = [ + 84, 0, 0, 0, 62, 67, 0, 62, + 0, 72, 0, 0, 72, 79, 0, 60, + 60, 0, 0, 79, 84, 0, 76, 79, + 64, 0, 81, 0, 0, 0, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck110.scd b/sound_algo/palette/melodies/short/mPluck110.scd new file mode 100644 index 0000000..c782923 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck110 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck110 = [ + 0, 0, 0, 71, 0, 0, 71, 0, + 0, 76, 0, 71, 0, 76, 71, 64, + 0, 69, 0, 71, 74, 0, 0, 0, + 0, 69, 62, 0, 0, 79, 76, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck111.scd b/sound_algo/palette/melodies/short/mPluck111.scd new file mode 100644 index 0000000..130cdee --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck111 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck111 = [ + 0, 81, 76, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 62, 64, 0, + 0, 0, 0, 0, 0, 81, 0, 0, + 0, 79, 0, 60, 0, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck112.scd b/sound_algo/palette/melodies/short/mPluck112.scd new file mode 100644 index 0000000..ae1d239 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck112 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck112 = [ + 0, 0, 0, 81, 71, 83, 0, 0, + 62, 83, 0, 67, 0, 0, 79, 0, + 71, 71, 0, 0, 71, 74, 0, 81, + 0, 76, 0, 76, 0, 0, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPluck113.scd b/sound_algo/palette/melodies/short/mPluck113.scd new file mode 100644 index 0000000..2c55597 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPluck113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPluck113 -- short melody (32 steps), genre: pluck +// ===================================================================== +( +~mPluck113 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 84, 76, 60, 64, 0, 0, 76, 81, + 67, 0, 79, 81, 0, 74, 0, 72, + 67, 0, 76, 0, 0, 84, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop100.scd b/sound_algo/palette/melodies/short/mPop100.scd new file mode 100644 index 0000000..302f81a --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop100 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop100 = [ + 0, 0, 0, 0, 84, 0, 64, 65, + 0, 69, 76, 84, 0, 0, 0, 62, + 0, 0, 76, 0, 0, 71, 74, 81, + 83, 84, 69, 0, 64, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop101.scd b/sound_algo/palette/melodies/short/mPop101.scd new file mode 100644 index 0000000..1b85700 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop101 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop101 = [ + 0, 81, 69, 72, 71, 60, 64, 0, + 0, 0, 64, 78, 0, 0, 0, 67, + 0, 0, 0, 0, 66, 67, 69, 76, + 0, 62, 72, 74, 0, 0, 84, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop102.scd b/sound_algo/palette/melodies/short/mPop102.scd new file mode 100644 index 0000000..3df3eb2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop102 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop102 = [ + 78, 81, 0, 0, 0, 0, 0, 67, + 83, 74, 69, 0, 64, 79, 0, 69, + 81, 67, 62, 72, 83, 64, 76, 62, + 67, 0, 60, 74, 67, 83, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop103.scd b/sound_algo/palette/melodies/short/mPop103.scd new file mode 100644 index 0000000..f41621d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop103 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop103 = [ + 71, 65, 79, 0, 65, 69, 0, 64, + 0, 83, 0, 83, 84, 0, 69, 83, + 62, 0, 72, 71, 84, 0, 0, 72, + 60, 81, 0, 83, 0, 79, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop104.scd b/sound_algo/palette/melodies/short/mPop104.scd new file mode 100644 index 0000000..0d2a787 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop104 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop104 = [ + 0, 0, 77, 60, 62, 0, 65, 76, + 74, 64, 77, 69, 74, 60, 67, 0, + 84, 62, 72, 0, 79, 0, 81, 69, + 0, 72, 77, 77, 72, 67, 62, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop105.scd b/sound_algo/palette/melodies/short/mPop105.scd new file mode 100644 index 0000000..53e663c --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop105 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop105 = [ + 0, 67, 76, 0, 67, 72, 76, 0, + 79, 0, 64, 84, 79, 67, 76, 71, + 67, 74, 0, 76, 79, 81, 84, 60, + 0, 66, 0, 0, 71, 84, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop106.scd b/sound_algo/palette/melodies/short/mPop106.scd new file mode 100644 index 0000000..e6f7c97 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop106 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop106 = [ + 67, 62, 69, 67, 71, 62, 65, 84, + 77, 0, 0, 0, 67, 0, 79, 0, + 84, 62, 69, 0, 0, 65, 71, 83, + 74, 0, 62, 79, 74, 0, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop107.scd b/sound_algo/palette/melodies/short/mPop107.scd new file mode 100644 index 0000000..600e541 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop107 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop107 = [ + 0, 0, 64, 60, 69, 0, 0, 0, + 71, 71, 0, 76, 79, 81, 79, 0, + 72, 72, 83, 83, 79, 0, 0, 0, + 0, 81, 0, 81, 71, 81, 74, 78 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop108.scd b/sound_algo/palette/melodies/short/mPop108.scd new file mode 100644 index 0000000..772e53f --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop108 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop108 = [ + 76, 66, 81, 0, 74, 67, 64, 0, + 79, 69, 0, 62, 62, 0, 0, 0, + 0, 67, 83, 60, 79, 67, 83, 0, + 74, 0, 0, 66, 62, 81, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop109.scd b/sound_algo/palette/melodies/short/mPop109.scd new file mode 100644 index 0000000..679637d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop109 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop109 = [ + 0, 0, 0, 69, 71, 0, 0, 69, + 0, 0, 64, 74, 0, 60, 71, 0, + 74, 0, 0, 66, 84, 0, 0, 0, + 74, 0, 64, 0, 0, 71, 71, 78 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop110.scd b/sound_algo/palette/melodies/short/mPop110.scd new file mode 100644 index 0000000..07cc962 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop110 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop110 = [ + 76, 0, 0, 0, 71, 0, 0, 66, + 79, 0, 0, 0, 0, 0, 76, 71, + 0, 84, 69, 69, 74, 83, 0, 76, + 81, 78, 0, 64, 84, 76, 78, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop111.scd b/sound_algo/palette/melodies/short/mPop111.scd new file mode 100644 index 0000000..1be7ceb --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop111 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop111 = [ + 0, 83, 0, 64, 0, 0, 74, 0, + 0, 65, 67, 0, 60, 0, 64, 62, + 0, 0, 0, 0, 0, 62, 0, 64, + 79, 0, 0, 0, 72, 81, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop112.scd b/sound_algo/palette/melodies/short/mPop112.scd new file mode 100644 index 0000000..034784f --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop112 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop112 = [ + 0, 76, 79, 79, 0, 0, 69, 69, + 64, 66, 81, 64, 0, 72, 84, 0, + 0, 0, 0, 83, 0, 71, 79, 64, + 0, 78, 0, 66, 79, 0, 0, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop113.scd b/sound_algo/palette/melodies/short/mPop113.scd new file mode 100644 index 0000000..aeef6ea --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop113 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop113 = [ + 71, 79, 0, 0, 74, 84, 0, 0, + 0, 81, 66, 81, 62, 81, 0, 0, + 62, 78, 76, 0, 0, 0, 69, 0, + 0, 66, 69, 64, 81, 71, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop114.scd b/sound_algo/palette/melodies/short/mPop114.scd new file mode 100644 index 0000000..7a4030c --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop114 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop114 = [ + 83, 62, 0, 84, 0, 62, 0, 64, + 0, 81, 62, 0, 0, 60, 76, 0, + 0, 0, 0, 72, 62, 0, 74, 0, + 0, 0, 83, 83, 69, 0, 66, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop115.scd b/sound_algo/palette/melodies/short/mPop115.scd new file mode 100644 index 0000000..165c611 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop115 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop115 = [ + 0, 66, 72, 0, 62, 74, 60, 66, + 79, 83, 81, 64, 62, 79, 0, 60, + 66, 62, 0, 0, 0, 0, 67, 72, + 0, 74, 0, 0, 81, 66, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop116.scd b/sound_algo/palette/melodies/short/mPop116.scd new file mode 100644 index 0000000..03fd957 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop116 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop116 = [ + 79, 72, 72, 83, 0, 67, 78, 74, + 62, 62, 84, 0, 71, 0, 79, 0, + 67, 69, 0, 0, 62, 0, 74, 83, + 71, 0, 84, 76, 67, 0, 76, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop117.scd b/sound_algo/palette/melodies/short/mPop117.scd new file mode 100644 index 0000000..96b9ca7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop117 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop117 = [ + 0, 83, 0, 83, 67, 0, 0, 79, + 83, 0, 0, 0, 84, 0, 76, 0, + 83, 0, 79, 0, 66, 72, 60, 0, + 71, 83, 0, 0, 0, 72, 83, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop118.scd b/sound_algo/palette/melodies/short/mPop118.scd new file mode 100644 index 0000000..c0620b0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop118 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop118 = [ + 0, 64, 64, 76, 76, 0, 0, 69, + 79, 84, 77, 64, 0, 0, 67, 83, + 69, 0, 62, 0, 0, 60, 83, 84, + 72, 84, 79, 0, 64, 84, 84, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop119.scd b/sound_algo/palette/melodies/short/mPop119.scd new file mode 100644 index 0000000..253e8fc --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop119 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop119 = [ + 72, 0, 69, 64, 64, 76, 0, 60, + 72, 72, 0, 0, 0, 64, 0, 60, + 0, 79, 71, 0, 79, 0, 0, 0, + 0, 76, 83, 62, 0, 0, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop120.scd b/sound_algo/palette/melodies/short/mPop120.scd new file mode 100644 index 0000000..3996540 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop120 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop120 = [ + 0, 0, 0, 76, 0, 84, 72, 0, + 76, 0, 65, 0, 0, 64, 0, 0, + 76, 0, 0, 74, 67, 0, 0, 76, + 0, 60, 0, 76, 0, 0, 81, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop121.scd b/sound_algo/palette/melodies/short/mPop121.scd new file mode 100644 index 0000000..8f59e0a --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop121 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop121 = [ + 0, 71, 83, 0, 0, 64, 67, 0, + 0, 79, 64, 0, 67, 0, 69, 0, + 0, 83, 78, 83, 78, 79, 66, 81, + 0, 79, 0, 0, 0, 69, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop122.scd b/sound_algo/palette/melodies/short/mPop122.scd new file mode 100644 index 0000000..6871bc1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop122 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop122 = [ + 60, 0, 0, 78, 0, 81, 0, 81, + 78, 84, 0, 83, 0, 81, 0, 0, + 0, 71, 0, 64, 0, 64, 72, 0, + 0, 0, 0, 79, 72, 69, 62, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop123.scd b/sound_algo/palette/melodies/short/mPop123.scd new file mode 100644 index 0000000..aa37ebf --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop123 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop123 = [ + 62, 81, 74, 79, 64, 78, 0, 0, + 74, 0, 0, 62, 0, 62, 0, 0, + 0, 62, 67, 66, 83, 84, 0, 0, + 62, 62, 81, 66, 0, 81, 0, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop124.scd b/sound_algo/palette/melodies/short/mPop124.scd new file mode 100644 index 0000000..07f9e1c --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop124 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop124 = [ + 74, 66, 0, 0, 0, 83, 79, 0, + 0, 0, 0, 66, 83, 78, 74, 78, + 62, 60, 0, 0, 79, 0, 0, 0, + 72, 0, 79, 66, 0, 66, 76, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop125.scd b/sound_algo/palette/melodies/short/mPop125.scd new file mode 100644 index 0000000..4657a98 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop125 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop125 = [ + 0, 66, 69, 74, 0, 62, 74, 0, + 67, 0, 0, 81, 78, 0, 83, 66, + 62, 0, 0, 0, 83, 0, 71, 74, + 0, 62, 0, 0, 0, 0, 64, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop126.scd b/sound_algo/palette/melodies/short/mPop126.scd new file mode 100644 index 0000000..926aae1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop126 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop126 = [ + 0, 0, 81, 0, 0, 0, 65, 0, + 0, 71, 77, 0, 72, 62, 64, 0, + 0, 0, 74, 81, 71, 74, 74, 60, + 60, 0, 0, 0, 67, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop127.scd b/sound_algo/palette/melodies/short/mPop127.scd new file mode 100644 index 0000000..db21f4a --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop127 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop127 = [ + 81, 81, 69, 0, 0, 0, 0, 0, + 0, 74, 69, 62, 0, 0, 0, 0, + 0, 0, 64, 0, 81, 84, 0, 69, + 0, 60, 76, 0, 84, 0, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop128.scd b/sound_algo/palette/melodies/short/mPop128.scd new file mode 100644 index 0000000..3331987 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop128 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop128 = [ + 71, 84, 0, 81, 0, 0, 72, 64, + 67, 0, 84, 0, 81, 0, 0, 74, + 0, 0, 71, 0, 76, 0, 0, 83, + 81, 0, 69, 0, 0, 69, 81, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop129.scd b/sound_algo/palette/melodies/short/mPop129.scd new file mode 100644 index 0000000..cecd180 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop129 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop129 = [ + 84, 0, 0, 64, 67, 83, 0, 0, + 84, 77, 0, 77, 0, 79, 69, 81, + 64, 62, 79, 79, 72, 81, 72, 65, + 74, 60, 62, 65, 0, 0, 74, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop130.scd b/sound_algo/palette/melodies/short/mPop130.scd new file mode 100644 index 0000000..927b153 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop130 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop130 = [ + 0, 0, 0, 0, 62, 67, 79, 0, + 83, 0, 60, 72, 67, 62, 74, 79, + 60, 79, 0, 83, 67, 69, 0, 69, + 79, 0, 0, 0, 0, 60, 74, 78 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop131.scd b/sound_algo/palette/melodies/short/mPop131.scd new file mode 100644 index 0000000..1e9802b --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop131 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop131 = [ + 74, 76, 84, 69, 0, 74, 64, 0, + 60, 84, 67, 0, 67, 69, 83, 0, + 83, 71, 60, 0, 0, 64, 0, 81, + 74, 0, 67, 0, 71, 84, 78, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop132.scd b/sound_algo/palette/melodies/short/mPop132.scd new file mode 100644 index 0000000..719bc5a --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop132 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop132 = [ + 76, 0, 77, 83, 69, 84, 64, 0, + 0, 84, 0, 81, 0, 64, 0, 71, + 0, 77, 0, 64, 74, 0, 0, 79, + 79, 67, 0, 79, 0, 0, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop133.scd b/sound_algo/palette/melodies/short/mPop133.scd new file mode 100644 index 0000000..a685e64 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop133 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop133 = [ + 0, 65, 76, 76, 0, 67, 0, 84, + 0, 65, 84, 65, 0, 62, 0, 67, + 0, 0, 69, 0, 74, 0, 0, 77, + 84, 0, 65, 64, 0, 67, 64, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop134.scd b/sound_algo/palette/melodies/short/mPop134.scd new file mode 100644 index 0000000..30b3259 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop134 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop134 = [ + 0, 64, 62, 62, 0, 0, 69, 71, + 64, 0, 83, 81, 0, 65, 0, 62, + 72, 72, 71, 0, 71, 84, 64, 81, + 0, 0, 60, 76, 83, 79, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop135.scd b/sound_algo/palette/melodies/short/mPop135.scd new file mode 100644 index 0000000..a7a1560 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop135 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop135 = [ + 0, 81, 76, 76, 72, 0, 74, 81, + 84, 79, 0, 0, 83, 69, 72, 77, + 0, 0, 0, 0, 0, 81, 81, 81, + 0, 81, 76, 62, 0, 71, 0, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop136.scd b/sound_algo/palette/melodies/short/mPop136.scd new file mode 100644 index 0000000..3d89867 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop136 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop136 = [ + 84, 76, 71, 79, 64, 81, 0, 76, + 79, 65, 83, 0, 69, 0, 84, 0, + 0, 67, 0, 0, 76, 0, 71, 74, + 77, 74, 81, 65, 67, 0, 64, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop137.scd b/sound_algo/palette/melodies/short/mPop137.scd new file mode 100644 index 0000000..b813086 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop137 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop137 = [ + 79, 65, 0, 81, 79, 62, 71, 67, + 84, 84, 0, 0, 77, 60, 79, 74, + 74, 77, 83, 0, 64, 83, 0, 64, + 69, 65, 71, 0, 0, 62, 76, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop138.scd b/sound_algo/palette/melodies/short/mPop138.scd new file mode 100644 index 0000000..f3ab430 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop138 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop138 = [ + 0, 0, 0, 83, 83, 0, 81, 0, + 0, 83, 0, 0, 60, 64, 84, 0, + 0, 72, 83, 60, 0, 74, 74, 0, + 84, 0, 72, 81, 0, 72, 83, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop139.scd b/sound_algo/palette/melodies/short/mPop139.scd new file mode 100644 index 0000000..fa1dcfb --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop139 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop139 = [ + 83, 64, 0, 66, 78, 71, 60, 0, + 62, 62, 0, 0, 74, 0, 0, 76, + 79, 0, 69, 0, 0, 0, 74, 69, + 0, 74, 0, 84, 83, 78, 79, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop140.scd b/sound_algo/palette/melodies/short/mPop140.scd new file mode 100644 index 0000000..1004f3d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop140 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop140 = [ + 62, 0, 0, 0, 72, 62, 0, 0, + 60, 60, 83, 79, 62, 64, 81, 81, + 79, 0, 0, 65, 81, 77, 62, 0, + 60, 84, 0, 74, 69, 84, 79, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop141.scd b/sound_algo/palette/melodies/short/mPop141.scd new file mode 100644 index 0000000..54506b4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop141 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop141 = [ + 0, 0, 81, 67, 0, 74, 0, 76, + 84, 0, 0, 84, 0, 76, 67, 0, + 79, 81, 0, 72, 0, 77, 0, 64, + 60, 0, 81, 64, 79, 0, 84, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop142.scd b/sound_algo/palette/melodies/short/mPop142.scd new file mode 100644 index 0000000..58297a7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop142 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop142 = [ + 0, 67, 83, 76, 83, 81, 0, 66, + 0, 0, 0, 0, 0, 64, 0, 64, + 0, 0, 0, 0, 0, 67, 72, 0, + 0, 0, 0, 60, 0, 62, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop143.scd b/sound_algo/palette/melodies/short/mPop143.scd new file mode 100644 index 0000000..c138795 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop143 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop143 = [ + 64, 81, 0, 79, 76, 0, 81, 67, + 0, 0, 62, 67, 0, 72, 84, 71, + 0, 0, 81, 62, 0, 71, 83, 67, + 62, 83, 0, 0, 76, 77, 79, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop144.scd b/sound_algo/palette/melodies/short/mPop144.scd new file mode 100644 index 0000000..4dedf21 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop144 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop144 = [ + 67, 74, 0, 0, 0, 0, 79, 0, + 0, 83, 69, 62, 67, 84, 0, 83, + 0, 0, 62, 0, 0, 0, 69, 0, + 62, 0, 0, 0, 62, 83, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop145.scd b/sound_algo/palette/melodies/short/mPop145.scd new file mode 100644 index 0000000..7842cc2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop145 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop145 = [ + 62, 81, 60, 0, 0, 74, 62, 60, + 69, 66, 0, 0, 71, 0, 0, 0, + 0, 67, 69, 76, 83, 0, 72, 64, + 0, 84, 0, 62, 0, 84, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop146.scd b/sound_algo/palette/melodies/short/mPop146.scd new file mode 100644 index 0000000..569aa39 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop146 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop146 = [ + 64, 72, 71, 78, 0, 0, 0, 83, + 79, 0, 84, 0, 79, 76, 81, 0, + 71, 0, 0, 81, 81, 0, 71, 0, + 0, 0, 83, 76, 64, 71, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop147.scd b/sound_algo/palette/melodies/short/mPop147.scd new file mode 100644 index 0000000..bac9576 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop147 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop147 = [ + 0, 81, 74, 81, 60, 77, 0, 0, + 0, 0, 60, 0, 76, 0, 79, 0, + 76, 72, 0, 79, 79, 0, 83, 0, + 64, 74, 62, 64, 0, 71, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop148.scd b/sound_algo/palette/melodies/short/mPop148.scd new file mode 100644 index 0000000..f220e75 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop148 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop148 = [ + 67, 69, 0, 72, 83, 84, 78, 64, + 78, 81, 0, 62, 62, 0, 0, 83, + 67, 0, 69, 71, 67, 0, 64, 81, + 0, 0, 62, 0, 72, 0, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop149.scd b/sound_algo/palette/melodies/short/mPop149.scd new file mode 100644 index 0000000..732b079 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop149 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop149 = [ + 83, 0, 0, 69, 74, 0, 62, 60, + 0, 64, 83, 83, 0, 69, 0, 74, + 71, 0, 76, 0, 66, 0, 66, 74, + 0, 62, 72, 0, 83, 62, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop150.scd b/sound_algo/palette/melodies/short/mPop150.scd new file mode 100644 index 0000000..a5878fb --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop150 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop150 = [ + 67, 65, 62, 0, 76, 0, 84, 67, + 84, 0, 83, 64, 0, 67, 0, 65, + 0, 83, 67, 0, 64, 62, 79, 0, + 60, 65, 76, 65, 67, 0, 0, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop151.scd b/sound_algo/palette/melodies/short/mPop151.scd new file mode 100644 index 0000000..8fabdcf --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop151 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop151 = [ + 67, 77, 0, 65, 60, 69, 76, 0, + 76, 64, 64, 0, 79, 83, 0, 72, + 60, 74, 62, 0, 0, 62, 0, 83, + 72, 62, 62, 0, 67, 0, 71, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop152.scd b/sound_algo/palette/melodies/short/mPop152.scd new file mode 100644 index 0000000..1e8f77a --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop152 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop152 = [ + 79, 62, 76, 81, 79, 0, 67, 83, + 0, 72, 0, 60, 0, 76, 0, 62, + 71, 0, 71, 0, 74, 76, 84, 66, + 0, 81, 0, 62, 81, 83, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop153.scd b/sound_algo/palette/melodies/short/mPop153.scd new file mode 100644 index 0000000..66bc9f5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop153 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop153 = [ + 83, 0, 65, 0, 0, 81, 0, 64, + 0, 0, 83, 0, 84, 62, 0, 65, + 67, 0, 0, 0, 81, 0, 60, 64, + 72, 81, 0, 0, 76, 62, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop154.scd b/sound_algo/palette/melodies/short/mPop154.scd new file mode 100644 index 0000000..fab4491 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop154 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop154 = [ + 0, 64, 0, 79, 0, 0, 0, 0, + 0, 74, 62, 79, 76, 74, 0, 64, + 69, 64, 0, 0, 0, 64, 0, 67, + 0, 0, 0, 0, 0, 0, 72, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop155.scd b/sound_algo/palette/melodies/short/mPop155.scd new file mode 100644 index 0000000..7a46201 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop155 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop155 = [ + 0, 83, 74, 0, 0, 0, 0, 0, + 84, 0, 0, 83, 76, 0, 71, 77, + 65, 0, 0, 77, 0, 79, 84, 0, + 64, 0, 71, 0, 84, 79, 64, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop156.scd b/sound_algo/palette/melodies/short/mPop156.scd new file mode 100644 index 0000000..3d6325b --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop156 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop156 = [ + 0, 81, 69, 67, 72, 65, 0, 84, + 60, 79, 81, 72, 79, 71, 0, 84, + 84, 62, 60, 72, 0, 62, 83, 65, + 0, 69, 76, 0, 62, 60, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop157.scd b/sound_algo/palette/melodies/short/mPop157.scd new file mode 100644 index 0000000..1accd98 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop157 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop157 = [ + 62, 0, 0, 0, 79, 84, 0, 0, + 0, 0, 76, 64, 0, 0, 0, 74, + 74, 60, 0, 72, 83, 62, 0, 79, + 74, 84, 71, 76, 62, 62, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop158.scd b/sound_algo/palette/melodies/short/mPop158.scd new file mode 100644 index 0000000..36141b3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop158 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop158 = [ + 0, 0, 69, 62, 64, 79, 0, 71, + 76, 0, 0, 72, 79, 83, 0, 0, + 0, 0, 66, 0, 0, 78, 0, 0, + 72, 0, 81, 0, 83, 69, 78, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop159.scd b/sound_algo/palette/melodies/short/mPop159.scd new file mode 100644 index 0000000..0136fd6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop159 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop159 = [ + 78, 0, 79, 0, 79, 0, 0, 0, + 79, 60, 0, 0, 79, 0, 0, 62, + 71, 0, 0, 0, 0, 0, 0, 0, + 71, 66, 84, 76, 0, 67, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop160.scd b/sound_algo/palette/melodies/short/mPop160.scd new file mode 100644 index 0000000..9da512a --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop160 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop160 = [ + 0, 0, 71, 72, 83, 0, 74, 0, + 0, 0, 74, 79, 83, 69, 0, 81, + 0, 0, 79, 79, 79, 81, 0, 79, + 0, 71, 66, 0, 84, 81, 72, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop161.scd b/sound_algo/palette/melodies/short/mPop161.scd new file mode 100644 index 0000000..b46acad --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop161 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop161 = [ + 74, 0, 81, 62, 0, 62, 79, 71, + 76, 76, 66, 76, 60, 0, 66, 0, + 0, 0, 83, 71, 0, 71, 0, 76, + 79, 0, 79, 76, 84, 64, 0, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop162.scd b/sound_algo/palette/melodies/short/mPop162.scd new file mode 100644 index 0000000..67fbd8d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop162 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop162 = [ + 0, 0, 0, 0, 0, 72, 66, 0, + 62, 0, 0, 79, 0, 0, 0, 62, + 0, 0, 74, 81, 62, 0, 76, 84, + 83, 79, 71, 72, 67, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop163.scd b/sound_algo/palette/melodies/short/mPop163.scd new file mode 100644 index 0000000..f8b493e --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop163 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop163 = [ + 67, 81, 74, 76, 62, 74, 62, 74, + 0, 79, 0, 0, 0, 69, 84, 60, + 76, 72, 67, 83, 0, 60, 74, 0, + 79, 77, 77, 0, 60, 67, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop164.scd b/sound_algo/palette/melodies/short/mPop164.scd new file mode 100644 index 0000000..080f592 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop164 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop164 = [ + 0, 67, 0, 0, 67, 0, 0, 0, + 65, 84, 0, 0, 67, 67, 60, 83, + 67, 0, 0, 74, 79, 60, 64, 83, + 64, 76, 0, 79, 64, 77, 69, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop165.scd b/sound_algo/palette/melodies/short/mPop165.scd new file mode 100644 index 0000000..1c1d620 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop165 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop165 = [ + 72, 0, 64, 74, 0, 77, 65, 62, + 0, 84, 0, 76, 64, 0, 64, 0, + 0, 69, 74, 67, 60, 0, 67, 72, + 0, 84, 0, 64, 0, 0, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop166.scd b/sound_algo/palette/melodies/short/mPop166.scd new file mode 100644 index 0000000..aeb5f3e --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop166 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop166 = [ + 0, 0, 0, 0, 0, 0, 60, 62, + 79, 79, 0, 0, 77, 0, 0, 0, + 72, 84, 62, 0, 0, 0, 0, 62, + 0, 79, 60, 0, 0, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop167.scd b/sound_algo/palette/melodies/short/mPop167.scd new file mode 100644 index 0000000..6aa5c8c --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop167 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop167 = [ + 83, 0, 0, 74, 71, 69, 0, 83, + 62, 66, 81, 74, 83, 84, 0, 66, + 71, 79, 64, 0, 67, 69, 62, 64, + 74, 0, 0, 76, 71, 84, 81, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop168.scd b/sound_algo/palette/melodies/short/mPop168.scd new file mode 100644 index 0000000..37868ea --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop168 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop168 = [ + 0, 0, 78, 0, 0, 69, 81, 66, + 0, 72, 0, 0, 79, 84, 64, 0, + 62, 0, 0, 66, 83, 0, 0, 0, + 76, 0, 0, 0, 0, 0, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop169.scd b/sound_algo/palette/melodies/short/mPop169.scd new file mode 100644 index 0000000..043e8fa --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop169 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop169 = [ + 0, 0, 0, 0, 0, 0, 64, 0, + 76, 0, 71, 0, 76, 71, 69, 0, + 84, 0, 76, 0, 0, 79, 0, 84, + 0, 0, 0, 60, 76, 0, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop170.scd b/sound_algo/palette/melodies/short/mPop170.scd new file mode 100644 index 0000000..dd1b71c --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop170 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop170 = [ + 69, 0, 65, 0, 84, 0, 76, 0, + 0, 0, 79, 79, 79, 79, 77, 81, + 0, 72, 77, 84, 0, 0, 79, 62, + 0, 71, 0, 0, 0, 72, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop171.scd b/sound_algo/palette/melodies/short/mPop171.scd new file mode 100644 index 0000000..9af899d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop171 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop171 = [ + 81, 0, 0, 83, 0, 62, 0, 72, + 0, 60, 72, 0, 84, 83, 60, 67, + 0, 0, 84, 0, 67, 83, 0, 0, + 74, 0, 79, 0, 0, 0, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop172.scd b/sound_algo/palette/melodies/short/mPop172.scd new file mode 100644 index 0000000..d2a9fa1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop172 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop172 = [ + 0, 69, 64, 76, 0, 78, 72, 62, + 67, 74, 74, 76, 72, 67, 62, 72, + 60, 62, 64, 84, 76, 67, 0, 66, + 74, 0, 0, 67, 76, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop173.scd b/sound_algo/palette/melodies/short/mPop173.scd new file mode 100644 index 0000000..872f273 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop173 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop173 = [ + 0, 65, 67, 81, 72, 0, 81, 0, + 0, 0, 77, 0, 0, 0, 0, 69, + 0, 77, 0, 0, 72, 64, 76, 0, + 0, 62, 0, 0, 0, 67, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop174.scd b/sound_algo/palette/melodies/short/mPop174.scd new file mode 100644 index 0000000..4b882ad --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop174 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop174 = [ + 0, 84, 0, 71, 83, 71, 0, 0, + 0, 69, 0, 60, 69, 77, 0, 0, + 0, 84, 0, 0, 0, 62, 84, 0, + 77, 64, 0, 62, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop175.scd b/sound_algo/palette/melodies/short/mPop175.scd new file mode 100644 index 0000000..cb0d6fe --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop175 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop175 = [ + 74, 0, 0, 81, 71, 0, 66, 64, + 79, 78, 72, 0, 0, 81, 0, 0, + 0, 0, 79, 69, 79, 83, 0, 0, + 74, 81, 66, 0, 0, 78, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop176.scd b/sound_algo/palette/melodies/short/mPop176.scd new file mode 100644 index 0000000..57794d9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop176 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop176 = [ + 0, 77, 81, 0, 0, 74, 71, 83, + 60, 62, 0, 69, 0, 69, 71, 67, + 84, 81, 84, 62, 64, 0, 64, 60, + 0, 72, 81, 72, 0, 81, 62, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop177.scd b/sound_algo/palette/melodies/short/mPop177.scd new file mode 100644 index 0000000..786a244 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop177 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop177 = [ + 84, 71, 84, 71, 0, 83, 69, 0, + 83, 71, 64, 84, 74, 69, 0, 0, + 0, 78, 60, 69, 0, 0, 0, 0, + 78, 62, 84, 60, 62, 69, 62, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop178.scd b/sound_algo/palette/melodies/short/mPop178.scd new file mode 100644 index 0000000..f45e874 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop178 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop178 = [ + 72, 0, 72, 0, 0, 0, 0, 67, + 64, 62, 60, 0, 0, 0, 0, 60, + 60, 84, 0, 84, 0, 0, 0, 62, + 64, 0, 0, 64, 0, 0, 72, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop179.scd b/sound_algo/palette/melodies/short/mPop179.scd new file mode 100644 index 0000000..ad6a5e5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop179 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop179 = [ + 62, 81, 0, 0, 79, 67, 71, 64, + 83, 0, 0, 60, 0, 0, 71, 64, + 72, 78, 83, 83, 0, 64, 60, 0, + 71, 0, 0, 0, 64, 69, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop180.scd b/sound_algo/palette/melodies/short/mPop180.scd new file mode 100644 index 0000000..0e9b31d --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop180 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop180 = [ + 67, 79, 79, 79, 0, 0, 0, 79, + 76, 76, 76, 79, 0, 76, 83, 81, + 83, 67, 0, 0, 81, 81, 62, 0, + 79, 60, 0, 74, 74, 78, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop181.scd b/sound_algo/palette/melodies/short/mPop181.scd new file mode 100644 index 0000000..196da25 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop181 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop181 = [ + 60, 0, 0, 72, 0, 0, 71, 0, + 60, 69, 0, 62, 60, 72, 60, 0, + 0, 62, 74, 72, 0, 0, 0, 0, + 79, 65, 67, 0, 64, 0, 69, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop182.scd b/sound_algo/palette/melodies/short/mPop182.scd new file mode 100644 index 0000000..6b2cf9b --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop182 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop182 = [ + 0, 0, 83, 0, 0, 0, 0, 0, + 71, 79, 64, 71, 81, 67, 79, 0, + 0, 83, 66, 0, 74, 0, 79, 74, + 0, 64, 60, 79, 60, 72, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mPop183.scd b/sound_algo/palette/melodies/short/mPop183.scd new file mode 100644 index 0000000..00d8c40 --- /dev/null +++ b/sound_algo/palette/melodies/short/mPop183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mPop183 -- short melody (32 steps), genre: pop +// ===================================================================== +( +~mPop183 = [ + 0, 64, 0, 69, 64, 81, 71, 0, + 79, 65, 76, 0, 84, 64, 74, 81, + 0, 74, 69, 0, 0, 0, 69, 60, + 0, 65, 65, 0, 67, 65, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro100.scd b/sound_algo/palette/melodies/short/mRetro100.scd new file mode 100644 index 0000000..c89cb2a --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro100 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro100 = [ + 71, 62, 0, 0, 78, 72, 83, 67, + 0, 0, 62, 84, 67, 0, 79, 0, + 0, 60, 81, 0, 76, 0, 72, 0, + 66, 71, 0, 72, 84, 72, 83, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro101.scd b/sound_algo/palette/melodies/short/mRetro101.scd new file mode 100644 index 0000000..e35b9cb --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro101 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro101 = [ + 79, 78, 78, 83, 79, 0, 60, 69, + 0, 0, 0, 76, 67, 0, 79, 0, + 71, 0, 0, 76, 0, 62, 81, 83, + 0, 0, 62, 62, 78, 76, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro102.scd b/sound_algo/palette/melodies/short/mRetro102.scd new file mode 100644 index 0000000..d49ccbc --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro102 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro102 = [ + 0, 0, 79, 71, 76, 81, 81, 0, + 76, 0, 0, 0, 0, 0, 0, 83, + 0, 78, 66, 84, 64, 60, 83, 72, + 81, 0, 0, 81, 0, 0, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro103.scd b/sound_algo/palette/melodies/short/mRetro103.scd new file mode 100644 index 0000000..9100ad1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro103 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro103 = [ + 67, 66, 74, 69, 0, 78, 0, 0, + 83, 0, 81, 69, 71, 81, 0, 79, + 83, 0, 84, 60, 62, 84, 67, 0, + 69, 66, 84, 66, 0, 0, 83, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro104.scd b/sound_algo/palette/melodies/short/mRetro104.scd new file mode 100644 index 0000000..0be8311 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro104 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro104 = [ + 0, 67, 0, 65, 0, 76, 0, 83, + 0, 60, 84, 0, 0, 77, 0, 71, + 79, 0, 71, 62, 0, 67, 71, 65, + 72, 84, 0, 72, 0, 77, 71, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro105.scd b/sound_algo/palette/melodies/short/mRetro105.scd new file mode 100644 index 0000000..d3218ad --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro105 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro105 = [ + 78, 0, 84, 0, 83, 0, 84, 0, + 83, 79, 81, 69, 64, 84, 71, 60, + 0, 69, 0, 72, 67, 83, 79, 60, + 84, 66, 60, 0, 0, 78, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro106.scd b/sound_algo/palette/melodies/short/mRetro106.scd new file mode 100644 index 0000000..de435f2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro106 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro106 = [ + 79, 0, 76, 0, 74, 71, 62, 72, + 62, 66, 0, 0, 0, 67, 83, 64, + 67, 72, 0, 69, 79, 0, 0, 0, + 0, 69, 74, 78, 0, 84, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro107.scd b/sound_algo/palette/melodies/short/mRetro107.scd new file mode 100644 index 0000000..8f3a019 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro107 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro107 = [ + 76, 0, 0, 0, 76, 79, 0, 71, + 0, 0, 74, 84, 0, 77, 83, 67, + 79, 64, 60, 64, 0, 79, 0, 67, + 79, 74, 64, 0, 79, 76, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro108.scd b/sound_algo/palette/melodies/short/mRetro108.scd new file mode 100644 index 0000000..1fee2c8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro108 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro108 = [ + 62, 62, 74, 79, 0, 78, 62, 64, + 76, 67, 0, 84, 66, 0, 81, 0, + 62, 76, 69, 79, 83, 83, 81, 76, + 0, 67, 62, 66, 71, 0, 78, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro109.scd b/sound_algo/palette/melodies/short/mRetro109.scd new file mode 100644 index 0000000..7d177f8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro109 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro109 = [ + 79, 79, 72, 0, 84, 83, 60, 0, + 72, 84, 71, 0, 84, 83, 60, 0, + 84, 79, 67, 79, 0, 64, 0, 64, + 84, 74, 83, 84, 81, 0, 77, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro110.scd b/sound_algo/palette/melodies/short/mRetro110.scd new file mode 100644 index 0000000..639eabe --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro110 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro110 = [ + 79, 76, 65, 72, 65, 69, 0, 65, + 72, 76, 79, 69, 76, 0, 76, 64, + 71, 72, 72, 72, 65, 79, 65, 77, + 64, 0, 0, 76, 67, 0, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro111.scd b/sound_algo/palette/melodies/short/mRetro111.scd new file mode 100644 index 0000000..d8fb978 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro111 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro111 = [ + 76, 81, 0, 62, 84, 66, 0, 84, + 0, 83, 0, 0, 0, 67, 69, 0, + 0, 72, 83, 67, 0, 76, 79, 62, + 84, 0, 67, 74, 64, 0, 60, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro112.scd b/sound_algo/palette/melodies/short/mRetro112.scd new file mode 100644 index 0000000..aafc7ca --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro112 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro112 = [ + 64, 0, 79, 79, 0, 72, 74, 69, + 0, 0, 78, 83, 84, 76, 79, 69, + 0, 79, 0, 0, 67, 0, 0, 79, + 0, 0, 0, 72, 0, 0, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro113.scd b/sound_algo/palette/melodies/short/mRetro113.scd new file mode 100644 index 0000000..b03ffdc --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro113 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro113 = [ + 67, 71, 0, 76, 79, 0, 84, 0, + 0, 64, 0, 0, 83, 81, 84, 67, + 83, 84, 0, 81, 0, 0, 0, 74, + 67, 74, 72, 62, 0, 0, 84, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro114.scd b/sound_algo/palette/melodies/short/mRetro114.scd new file mode 100644 index 0000000..72ebbf5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro114 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro114 = [ + 0, 0, 74, 72, 67, 62, 79, 83, + 60, 0, 0, 66, 72, 76, 0, 81, + 69, 67, 78, 66, 69, 74, 76, 64, + 0, 78, 0, 60, 84, 0, 67, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro115.scd b/sound_algo/palette/melodies/short/mRetro115.scd new file mode 100644 index 0000000..78a28d8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro115 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro115 = [ + 0, 81, 0, 73, 0, 74, 67, 76, + 74, 74, 74, 64, 0, 62, 0, 0, + 73, 0, 67, 78, 66, 0, 71, 74, + 64, 0, 73, 71, 0, 0, 73, 73 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro116.scd b/sound_algo/palette/melodies/short/mRetro116.scd new file mode 100644 index 0000000..eab6a19 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro116 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro116 = [ + 84, 84, 83, 77, 60, 79, 83, 65, + 79, 84, 0, 0, 67, 0, 0, 0, + 0, 74, 0, 77, 76, 62, 0, 83, + 64, 84, 0, 62, 76, 64, 77, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro117.scd b/sound_algo/palette/melodies/short/mRetro117.scd new file mode 100644 index 0000000..d24e356 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro117 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro117 = [ + 0, 76, 0, 67, 0, 62, 83, 0, + 0, 79, 81, 81, 67, 72, 0, 62, + 67, 0, 64, 83, 79, 71, 69, 62, + 0, 60, 0, 81, 72, 64, 76, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro118.scd b/sound_algo/palette/melodies/short/mRetro118.scd new file mode 100644 index 0000000..9cfa429 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro118 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro118 = [ + 0, 0, 62, 67, 65, 67, 77, 79, + 0, 0, 83, 0, 62, 79, 0, 81, + 0, 0, 0, 83, 0, 76, 72, 0, + 84, 0, 67, 0, 84, 77, 64, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro119.scd b/sound_algo/palette/melodies/short/mRetro119.scd new file mode 100644 index 0000000..c8664ee --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro119 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro119 = [ + 81, 83, 78, 0, 62, 67, 0, 74, + 74, 0, 0, 72, 79, 81, 0, 83, + 74, 72, 0, 0, 66, 78, 66, 81, + 0, 67, 83, 0, 0, 0, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro120.scd b/sound_algo/palette/melodies/short/mRetro120.scd new file mode 100644 index 0000000..84a3a41 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro120 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro120 = [ + 0, 0, 0, 64, 84, 77, 0, 0, + 67, 0, 81, 0, 72, 0, 81, 0, + 72, 72, 79, 81, 67, 0, 84, 76, + 79, 0, 65, 0, 79, 76, 81, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro121.scd b/sound_algo/palette/melodies/short/mRetro121.scd new file mode 100644 index 0000000..df826a6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro121 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro121 = [ + 60, 0, 84, 79, 0, 69, 71, 72, + 0, 0, 0, 76, 0, 0, 76, 0, + 76, 72, 83, 84, 77, 83, 83, 0, + 0, 83, 0, 0, 79, 74, 84, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro122.scd b/sound_algo/palette/melodies/short/mRetro122.scd new file mode 100644 index 0000000..2aab2b2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro122 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro122 = [ + 0, 79, 62, 60, 71, 72, 71, 0, + 0, 83, 74, 64, 81, 0, 0, 0, + 71, 0, 64, 0, 60, 76, 78, 69, + 79, 66, 62, 0, 0, 66, 83, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro123.scd b/sound_algo/palette/melodies/short/mRetro123.scd new file mode 100644 index 0000000..4bfb304 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro123 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro123 = [ + 62, 66, 0, 0, 67, 74, 0, 84, + 83, 0, 69, 78, 64, 78, 0, 66, + 0, 0, 78, 79, 0, 62, 74, 84, + 74, 83, 0, 76, 0, 71, 78, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro124.scd b/sound_algo/palette/melodies/short/mRetro124.scd new file mode 100644 index 0000000..ad164e9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro124 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro124 = [ + 0, 69, 71, 62, 66, 69, 81, 0, + 0, 0, 0, 0, 69, 78, 0, 78, + 0, 0, 71, 74, 0, 0, 0, 84, + 66, 0, 66, 64, 0, 0, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro125.scd b/sound_algo/palette/melodies/short/mRetro125.scd new file mode 100644 index 0000000..8d633e9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro125 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro125 = [ + 62, 81, 78, 78, 0, 0, 62, 60, + 64, 66, 84, 60, 72, 0, 60, 0, + 69, 0, 0, 78, 0, 0, 74, 84, + 0, 84, 76, 0, 67, 84, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro126.scd b/sound_algo/palette/melodies/short/mRetro126.scd new file mode 100644 index 0000000..3a147d5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro126 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro126 = [ + 0, 0, 0, 60, 79, 0, 60, 77, + 72, 0, 0, 67, 0, 0, 77, 72, + 0, 0, 77, 0, 83, 0, 0, 0, + 74, 83, 74, 65, 0, 77, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro127.scd b/sound_algo/palette/melodies/short/mRetro127.scd new file mode 100644 index 0000000..af4e26e --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro127 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro127 = [ + 62, 74, 0, 66, 83, 71, 79, 0, + 62, 79, 0, 81, 0, 81, 0, 73, + 67, 0, 73, 66, 69, 0, 66, 78, + 62, 83, 64, 76, 73, 74, 64, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro128.scd b/sound_algo/palette/melodies/short/mRetro128.scd new file mode 100644 index 0000000..6fcc164 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro128 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro128 = [ + 60, 64, 76, 79, 84, 0, 71, 83, + 77, 84, 0, 77, 0, 81, 0, 84, + 0, 84, 81, 67, 64, 79, 64, 65, + 0, 60, 0, 67, 0, 69, 65, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro129.scd b/sound_algo/palette/melodies/short/mRetro129.scd new file mode 100644 index 0000000..88916bc --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro129 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro129 = [ + 0, 64, 60, 0, 84, 69, 76, 74, + 0, 79, 83, 62, 67, 72, 0, 65, + 0, 64, 0, 60, 72, 65, 0, 69, + 76, 71, 81, 74, 62, 83, 72, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro130.scd b/sound_algo/palette/melodies/short/mRetro130.scd new file mode 100644 index 0000000..27c5513 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro130 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro130 = [ + 60, 76, 72, 67, 66, 66, 72, 84, + 81, 84, 81, 78, 84, 71, 74, 78, + 62, 60, 67, 71, 83, 79, 84, 76, + 0, 84, 60, 83, 74, 76, 60, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro131.scd b/sound_algo/palette/melodies/short/mRetro131.scd new file mode 100644 index 0000000..aa86588 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro131 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro131 = [ + 71, 79, 0, 74, 74, 69, 66, 71, + 0, 78, 81, 71, 71, 78, 83, 0, + 83, 72, 67, 0, 79, 72, 69, 67, + 0, 0, 72, 66, 79, 67, 78, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro132.scd b/sound_algo/palette/melodies/short/mRetro132.scd new file mode 100644 index 0000000..1b163dc --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro132 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro132 = [ + 0, 0, 64, 0, 61, 0, 0, 0, + 71, 81, 66, 69, 0, 76, 0, 0, + 79, 83, 0, 67, 71, 0, 0, 79, + 83, 64, 61, 76, 64, 0, 79, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro133.scd b/sound_algo/palette/melodies/short/mRetro133.scd new file mode 100644 index 0000000..c19fe44 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro133 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro133 = [ + 79, 0, 84, 71, 74, 69, 78, 0, + 74, 0, 69, 79, 62, 0, 72, 67, + 74, 60, 0, 72, 67, 0, 71, 0, + 74, 0, 71, 78, 71, 79, 60, 78 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro134.scd b/sound_algo/palette/melodies/short/mRetro134.scd new file mode 100644 index 0000000..4133138 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro134 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro134 = [ + 79, 0, 0, 76, 67, 65, 0, 69, + 79, 77, 0, 77, 84, 64, 83, 81, + 81, 65, 74, 0, 79, 77, 81, 60, + 67, 62, 67, 76, 64, 74, 76, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro135.scd b/sound_algo/palette/melodies/short/mRetro135.scd new file mode 100644 index 0000000..2d3ec23 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro135 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro135 = [ + 0, 0, 71, 72, 67, 72, 64, 76, + 78, 81, 0, 64, 72, 0, 79, 0, + 62, 0, 60, 64, 71, 60, 81, 62, + 76, 67, 0, 81, 67, 62, 62, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro136.scd b/sound_algo/palette/melodies/short/mRetro136.scd new file mode 100644 index 0000000..7d1b7b5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro136 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro136 = [ + 67, 78, 0, 0, 74, 71, 78, 78, + 71, 71, 79, 64, 83, 72, 0, 74, + 74, 0, 0, 79, 66, 67, 62, 62, + 74, 0, 81, 67, 81, 0, 0, 78 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro137.scd b/sound_algo/palette/melodies/short/mRetro137.scd new file mode 100644 index 0000000..a089fd3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro137 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro137 = [ + 60, 79, 83, 76, 76, 60, 72, 60, + 0, 83, 66, 79, 72, 0, 67, 0, + 71, 69, 74, 69, 0, 83, 83, 62, + 67, 0, 81, 74, 0, 78, 66, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro138.scd b/sound_algo/palette/melodies/short/mRetro138.scd new file mode 100644 index 0000000..664e5ce --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro138 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro138 = [ + 79, 0, 0, 62, 74, 67, 0, 79, + 74, 61, 76, 0, 0, 73, 0, 61, + 0, 74, 83, 0, 67, 0, 64, 0, + 62, 62, 79, 64, 71, 0, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro139.scd b/sound_algo/palette/melodies/short/mRetro139.scd new file mode 100644 index 0000000..119e2ed --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro139 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro139 = [ + 66, 67, 0, 78, 0, 61, 61, 66, + 67, 66, 79, 66, 71, 64, 61, 64, + 0, 78, 74, 0, 67, 76, 83, 0, + 0, 73, 0, 0, 74, 66, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro140.scd b/sound_algo/palette/melodies/short/mRetro140.scd new file mode 100644 index 0000000..01f3f0a --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro140 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro140 = [ + 0, 71, 76, 74, 69, 74, 0, 81, + 0, 83, 0, 79, 79, 69, 66, 81, + 0, 60, 84, 60, 62, 84, 81, 74, + 67, 0, 84, 81, 60, 84, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro141.scd b/sound_algo/palette/melodies/short/mRetro141.scd new file mode 100644 index 0000000..0f29188 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro141 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro141 = [ + 0, 0, 62, 0, 0, 81, 78, 62, + 0, 69, 0, 0, 0, 67, 0, 83, + 71, 81, 0, 76, 78, 0, 76, 0, + 0, 0, 0, 74, 79, 79, 83, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro142.scd b/sound_algo/palette/melodies/short/mRetro142.scd new file mode 100644 index 0000000..8bf60a1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro142 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro142 = [ + 0, 64, 69, 64, 0, 81, 64, 79, + 83, 64, 61, 74, 64, 61, 73, 76, + 83, 0, 73, 81, 62, 0, 64, 66, + 0, 69, 74, 69, 0, 0, 0, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro143.scd b/sound_algo/palette/melodies/short/mRetro143.scd new file mode 100644 index 0000000..b5f1438 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro143 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro143 = [ + 76, 60, 78, 81, 0, 0, 62, 78, + 0, 0, 0, 81, 76, 0, 83, 64, + 0, 66, 72, 83, 0, 66, 71, 83, + 79, 84, 66, 79, 62, 67, 74, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro144.scd b/sound_algo/palette/melodies/short/mRetro144.scd new file mode 100644 index 0000000..211ec68 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro144 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro144 = [ + 62, 60, 0, 81, 79, 83, 62, 0, + 62, 0, 83, 78, 71, 66, 67, 0, + 71, 81, 0, 74, 0, 83, 84, 84, + 0, 62, 71, 84, 83, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro145.scd b/sound_algo/palette/melodies/short/mRetro145.scd new file mode 100644 index 0000000..8d27224 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro145 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro145 = [ + 83, 81, 61, 0, 69, 69, 0, 81, + 79, 0, 61, 0, 61, 71, 69, 0, + 0, 73, 0, 62, 79, 61, 0, 0, + 83, 61, 0, 73, 81, 71, 79, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro146.scd b/sound_algo/palette/melodies/short/mRetro146.scd new file mode 100644 index 0000000..f75cab8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro146 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro146 = [ + 81, 0, 62, 0, 76, 64, 83, 79, + 62, 64, 0, 0, 79, 0, 73, 67, + 71, 74, 62, 61, 0, 78, 67, 66, + 0, 0, 76, 79, 79, 74, 64, 78 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro147.scd b/sound_algo/palette/melodies/short/mRetro147.scd new file mode 100644 index 0000000..e7e8313 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro147 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro147 = [ + 83, 0, 64, 83, 0, 66, 78, 81, + 0, 81, 74, 64, 79, 81, 62, 76, + 74, 0, 0, 0, 0, 71, 60, 64, + 67, 69, 0, 64, 62, 84, 78, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro148.scd b/sound_algo/palette/melodies/short/mRetro148.scd new file mode 100644 index 0000000..ce161b8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro148 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro148 = [ + 0, 0, 76, 72, 67, 64, 69, 72, + 0, 83, 76, 0, 72, 76, 0, 78, + 67, 76, 69, 83, 64, 67, 76, 71, + 0, 84, 0, 74, 0, 60, 0, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro149.scd b/sound_algo/palette/melodies/short/mRetro149.scd new file mode 100644 index 0000000..61c7849 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro149 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro149 = [ + 60, 0, 69, 72, 64, 84, 69, 84, + 67, 81, 60, 69, 76, 81, 69, 76, + 67, 0, 77, 67, 74, 79, 64, 60, + 0, 0, 0, 0, 0, 62, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro150.scd b/sound_algo/palette/melodies/short/mRetro150.scd new file mode 100644 index 0000000..978d5e0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro150 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro150 = [ + 64, 0, 81, 76, 65, 65, 72, 74, + 76, 79, 77, 60, 0, 65, 0, 65, + 0, 0, 0, 72, 77, 62, 83, 0, + 0, 71, 0, 0, 76, 65, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro151.scd b/sound_algo/palette/melodies/short/mRetro151.scd new file mode 100644 index 0000000..e080ada --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro151 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro151 = [ + 78, 72, 0, 0, 83, 0, 69, 72, + 83, 74, 84, 76, 0, 81, 62, 84, + 62, 0, 62, 79, 79, 83, 78, 0, + 71, 69, 0, 83, 62, 0, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro152.scd b/sound_algo/palette/melodies/short/mRetro152.scd new file mode 100644 index 0000000..e44c613 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro152 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro152 = [ + 0, 67, 83, 0, 83, 64, 74, 64, + 0, 0, 61, 0, 0, 69, 67, 0, + 69, 67, 73, 79, 0, 0, 0, 62, + 83, 73, 79, 71, 67, 64, 66, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro153.scd b/sound_algo/palette/melodies/short/mRetro153.scd new file mode 100644 index 0000000..df447dd --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro153 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro153 = [ + 0, 64, 64, 66, 83, 0, 69, 66, + 0, 83, 0, 81, 74, 0, 0, 74, + 83, 74, 0, 67, 0, 62, 74, 62, + 0, 0, 73, 61, 61, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro154.scd b/sound_algo/palette/melodies/short/mRetro154.scd new file mode 100644 index 0000000..f99a6a4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro154 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro154 = [ + 72, 81, 78, 83, 0, 72, 72, 83, + 0, 72, 64, 0, 81, 69, 64, 72, + 69, 83, 0, 0, 67, 76, 78, 76, + 0, 60, 62, 62, 0, 67, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro155.scd b/sound_algo/palette/melodies/short/mRetro155.scd new file mode 100644 index 0000000..d46d4e7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro155 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro155 = [ + 62, 0, 60, 72, 0, 72, 0, 62, + 62, 76, 62, 0, 0, 62, 78, 0, + 67, 71, 83, 67, 78, 0, 0, 67, + 0, 0, 64, 60, 0, 0, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro156.scd b/sound_algo/palette/melodies/short/mRetro156.scd new file mode 100644 index 0000000..a4683de --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro156 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro156 = [ + 67, 64, 84, 84, 72, 0, 62, 64, + 83, 74, 0, 0, 79, 0, 74, 83, + 0, 69, 0, 69, 72, 0, 67, 71, + 84, 71, 0, 64, 0, 69, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro157.scd b/sound_algo/palette/melodies/short/mRetro157.scd new file mode 100644 index 0000000..9319aca --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro157 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro157 = [ + 67, 72, 0, 0, 71, 64, 78, 79, + 79, 67, 62, 81, 67, 79, 64, 72, + 83, 60, 62, 78, 71, 69, 0, 78, + 0, 81, 60, 79, 69, 69, 0, 78 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro158.scd b/sound_algo/palette/melodies/short/mRetro158.scd new file mode 100644 index 0000000..2b34d76 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro158 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro158 = [ + 78, 71, 67, 62, 74, 0, 69, 66, + 0, 79, 78, 78, 83, 67, 81, 74, + 79, 66, 81, 62, 83, 74, 0, 0, + 61, 83, 73, 64, 64, 76, 0, 73 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro159.scd b/sound_algo/palette/melodies/short/mRetro159.scd new file mode 100644 index 0000000..18dd1a5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro159 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro159 = [ + 67, 0, 0, 72, 0, 72, 62, 74, + 64, 69, 62, 84, 60, 74, 64, 0, + 0, 0, 74, 0, 60, 0, 81, 0, + 72, 66, 81, 0, 74, 72, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro160.scd b/sound_algo/palette/melodies/short/mRetro160.scd new file mode 100644 index 0000000..5f5d344 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro160 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro160 = [ + 79, 81, 65, 0, 76, 71, 81, 0, + 71, 0, 0, 0, 65, 71, 71, 0, + 79, 62, 81, 71, 67, 83, 0, 81, + 74, 0, 79, 65, 60, 72, 79, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro161.scd b/sound_algo/palette/melodies/short/mRetro161.scd new file mode 100644 index 0000000..8448513 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro161 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro161 = [ + 0, 83, 0, 69, 0, 0, 67, 74, + 74, 61, 61, 73, 67, 79, 78, 76, + 83, 73, 83, 67, 0, 83, 79, 83, + 0, 73, 73, 71, 0, 0, 73, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro162.scd b/sound_algo/palette/melodies/short/mRetro162.scd new file mode 100644 index 0000000..4452424 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro162 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro162 = [ + 71, 76, 64, 71, 0, 66, 67, 81, + 84, 62, 69, 74, 64, 71, 78, 66, + 76, 69, 64, 71, 79, 81, 71, 79, + 67, 81, 81, 0, 72, 66, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro163.scd b/sound_algo/palette/melodies/short/mRetro163.scd new file mode 100644 index 0000000..8901b9a --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro163 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro163 = [ + 69, 0, 79, 0, 62, 67, 72, 64, + 83, 0, 0, 0, 64, 71, 60, 0, + 0, 67, 74, 67, 74, 84, 0, 60, + 0, 83, 0, 69, 0, 0, 66, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro164.scd b/sound_algo/palette/melodies/short/mRetro164.scd new file mode 100644 index 0000000..2e2bca8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro164 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro164 = [ + 79, 64, 83, 72, 76, 0, 79, 0, + 81, 74, 0, 83, 66, 84, 0, 0, + 67, 0, 0, 81, 0, 0, 0, 71, + 0, 72, 0, 72, 83, 72, 79, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro165.scd b/sound_algo/palette/melodies/short/mRetro165.scd new file mode 100644 index 0000000..2bfe2a2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro165 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro165 = [ + 61, 74, 67, 74, 0, 0, 78, 0, + 71, 76, 79, 0, 74, 64, 69, 61, + 62, 83, 71, 62, 79, 66, 66, 66, + 67, 66, 0, 79, 76, 79, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro166.scd b/sound_algo/palette/melodies/short/mRetro166.scd new file mode 100644 index 0000000..24931b5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro166 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro166 = [ + 0, 69, 0, 0, 0, 0, 60, 0, + 0, 67, 0, 0, 79, 78, 62, 84, + 60, 83, 0, 62, 60, 76, 0, 71, + 84, 74, 60, 84, 67, 0, 83, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro167.scd b/sound_algo/palette/melodies/short/mRetro167.scd new file mode 100644 index 0000000..989295e --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro167 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro167 = [ + 0, 83, 78, 66, 67, 83, 76, 64, + 0, 64, 0, 79, 71, 0, 64, 0, + 83, 76, 0, 62, 64, 73, 0, 0, + 67, 61, 67, 61, 78, 0, 0, 61 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro168.scd b/sound_algo/palette/melodies/short/mRetro168.scd new file mode 100644 index 0000000..89f4525 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro168 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro168 = [ + 78, 73, 62, 73, 69, 64, 64, 71, + 71, 67, 61, 79, 0, 66, 0, 61, + 64, 0, 81, 71, 74, 61, 83, 0, + 71, 79, 76, 71, 0, 0, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro169.scd b/sound_algo/palette/melodies/short/mRetro169.scd new file mode 100644 index 0000000..e4ae963 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro169 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro169 = [ + 79, 60, 64, 66, 0, 78, 74, 67, + 84, 67, 0, 0, 0, 64, 0, 79, + 67, 60, 60, 0, 76, 0, 60, 79, + 76, 67, 78, 62, 0, 83, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro170.scd b/sound_algo/palette/melodies/short/mRetro170.scd new file mode 100644 index 0000000..0ddc56e --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro170 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro170 = [ + 66, 0, 69, 66, 0, 64, 0, 79, + 83, 69, 73, 74, 79, 61, 79, 67, + 71, 0, 73, 79, 62, 64, 0, 0, + 74, 78, 0, 74, 0, 0, 73, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro171.scd b/sound_algo/palette/melodies/short/mRetro171.scd new file mode 100644 index 0000000..e06ec32 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro171 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro171 = [ + 0, 60, 62, 0, 64, 64, 79, 84, + 67, 71, 79, 74, 0, 60, 0, 83, + 64, 74, 76, 83, 79, 81, 79, 64, + 64, 79, 0, 79, 67, 72, 71, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro172.scd b/sound_algo/palette/melodies/short/mRetro172.scd new file mode 100644 index 0000000..e0a6524 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro172 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro172 = [ + 0, 74, 64, 60, 0, 0, 0, 67, + 0, 0, 0, 62, 84, 0, 0, 71, + 0, 0, 0, 62, 60, 67, 0, 64, + 67, 71, 0, 71, 60, 67, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro173.scd b/sound_algo/palette/melodies/short/mRetro173.scd new file mode 100644 index 0000000..51bcf54 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro173 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro173 = [ + 0, 69, 76, 0, 60, 0, 0, 0, + 60, 79, 0, 64, 64, 0, 81, 83, + 72, 0, 0, 71, 0, 62, 0, 65, + 64, 77, 69, 0, 79, 0, 83, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro174.scd b/sound_algo/palette/melodies/short/mRetro174.scd new file mode 100644 index 0000000..3877e12 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro174 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro174 = [ + 71, 0, 0, 71, 71, 71, 0, 66, + 0, 0, 79, 0, 0, 71, 0, 0, + 71, 0, 0, 76, 0, 62, 61, 0, + 74, 0, 83, 0, 76, 0, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro175.scd b/sound_algo/palette/melodies/short/mRetro175.scd new file mode 100644 index 0000000..83f1b2e --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro175 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro175 = [ + 64, 78, 67, 67, 83, 64, 78, 60, + 67, 0, 0, 78, 81, 66, 0, 67, + 71, 76, 0, 0, 0, 81, 78, 71, + 83, 76, 66, 0, 74, 84, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro176.scd b/sound_algo/palette/melodies/short/mRetro176.scd new file mode 100644 index 0000000..b0f185a --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro176 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro176 = [ + 62, 0, 0, 69, 74, 0, 0, 73, + 0, 73, 73, 0, 83, 71, 64, 0, + 74, 61, 64, 61, 79, 0, 62, 0, + 76, 66, 0, 83, 71, 73, 0, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro177.scd b/sound_algo/palette/melodies/short/mRetro177.scd new file mode 100644 index 0000000..39c1364 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro177 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro177 = [ + 76, 69, 78, 60, 64, 76, 69, 69, + 76, 84, 78, 60, 84, 81, 64, 84, + 84, 60, 84, 0, 78, 78, 76, 66, + 64, 0, 0, 78, 67, 84, 76, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro178.scd b/sound_algo/palette/melodies/short/mRetro178.scd new file mode 100644 index 0000000..91f4a7d --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro178 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro178 = [ + 64, 64, 0, 84, 84, 67, 0, 0, + 79, 76, 71, 65, 0, 60, 65, 0, + 76, 77, 71, 69, 79, 83, 84, 83, + 64, 77, 0, 0, 69, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro179.scd b/sound_algo/palette/melodies/short/mRetro179.scd new file mode 100644 index 0000000..e2c1322 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro179 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro179 = [ + 65, 0, 60, 81, 67, 79, 60, 84, + 77, 0, 74, 81, 67, 77, 0, 0, + 0, 71, 64, 74, 64, 84, 62, 79, + 64, 0, 0, 60, 0, 79, 67, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro180.scd b/sound_algo/palette/melodies/short/mRetro180.scd new file mode 100644 index 0000000..2c85cea --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro180 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro180 = [ + 64, 0, 0, 62, 0, 76, 66, 74, + 81, 67, 0, 60, 0, 0, 69, 67, + 0, 0, 0, 67, 0, 79, 0, 74, + 71, 0, 0, 76, 67, 67, 71, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro181.scd b/sound_algo/palette/melodies/short/mRetro181.scd new file mode 100644 index 0000000..52d1fbc --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro181 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro181 = [ + 83, 74, 0, 72, 60, 62, 60, 0, + 76, 72, 0, 62, 76, 0, 72, 69, + 0, 72, 67, 0, 66, 0, 0, 62, + 67, 64, 76, 0, 0, 64, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro182.scd b/sound_algo/palette/melodies/short/mRetro182.scd new file mode 100644 index 0000000..62a66f5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro182 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro182 = [ + 72, 81, 78, 64, 66, 83, 0, 71, + 62, 0, 0, 67, 83, 67, 60, 67, + 0, 66, 62, 66, 0, 71, 78, 0, + 74, 64, 60, 81, 0, 60, 69, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mRetro183.scd b/sound_algo/palette/melodies/short/mRetro183.scd new file mode 100644 index 0000000..d08dab3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mRetro183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mRetro183 -- short melody (32 steps), genre: retro +// ===================================================================== +( +~mRetro183 = [ + 0, 0, 69, 61, 74, 0, 0, 73, + 0, 73, 0, 71, 0, 71, 76, 66, + 0, 0, 76, 69, 83, 67, 0, 74, + 71, 76, 79, 0, 83, 61, 67, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub100.scd b/sound_algo/palette/melodies/short/mSub100.scd new file mode 100644 index 0000000..7b43eac --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub100 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub100 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub101.scd b/sound_algo/palette/melodies/short/mSub101.scd new file mode 100644 index 0000000..a40c48c --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub101 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub101 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub102.scd b/sound_algo/palette/melodies/short/mSub102.scd new file mode 100644 index 0000000..d4766ca --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub102 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub102 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub103.scd b/sound_algo/palette/melodies/short/mSub103.scd new file mode 100644 index 0000000..9725ebf --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub103 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub103 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub104.scd b/sound_algo/palette/melodies/short/mSub104.scd new file mode 100644 index 0000000..cefaf91 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub104 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub104 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub105.scd b/sound_algo/palette/melodies/short/mSub105.scd new file mode 100644 index 0000000..3f12d3e --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub105 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub105 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub106.scd b/sound_algo/palette/melodies/short/mSub106.scd new file mode 100644 index 0000000..4762951 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub106 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub106 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub107.scd b/sound_algo/palette/melodies/short/mSub107.scd new file mode 100644 index 0000000..008fd07 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub107 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub107 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub108.scd b/sound_algo/palette/melodies/short/mSub108.scd new file mode 100644 index 0000000..7bce9ec --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub108 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub108 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub109.scd b/sound_algo/palette/melodies/short/mSub109.scd new file mode 100644 index 0000000..3482686 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub109 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub109 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub110.scd b/sound_algo/palette/melodies/short/mSub110.scd new file mode 100644 index 0000000..55accc3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub110 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub110 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub111.scd b/sound_algo/palette/melodies/short/mSub111.scd new file mode 100644 index 0000000..fb76654 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub111 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub111 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub112.scd b/sound_algo/palette/melodies/short/mSub112.scd new file mode 100644 index 0000000..49bb455 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub112 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub112 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub113.scd b/sound_algo/palette/melodies/short/mSub113.scd new file mode 100644 index 0000000..edf1ca3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub113 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub113 = [ + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub114.scd b/sound_algo/palette/melodies/short/mSub114.scd new file mode 100644 index 0000000..a6a07ce --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub114 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub114 = [ + 24, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub115.scd b/sound_algo/palette/melodies/short/mSub115.scd new file mode 100644 index 0000000..b86cdf0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub115 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub115 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub116.scd b/sound_algo/palette/melodies/short/mSub116.scd new file mode 100644 index 0000000..037e0a6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub116 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub116 = [ + 28, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub117.scd b/sound_algo/palette/melodies/short/mSub117.scd new file mode 100644 index 0000000..58503ba --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub117 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub117 = [ + 33, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub118.scd b/sound_algo/palette/melodies/short/mSub118.scd new file mode 100644 index 0000000..3d5ea81 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub118 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub118 = [ + 38, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub119.scd b/sound_algo/palette/melodies/short/mSub119.scd new file mode 100644 index 0000000..290d01b --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub119 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub119 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub120.scd b/sound_algo/palette/melodies/short/mSub120.scd new file mode 100644 index 0000000..59bceaf --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub120 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub120 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub121.scd b/sound_algo/palette/melodies/short/mSub121.scd new file mode 100644 index 0000000..9902619 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub121 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub121 = [ + 24, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub122.scd b/sound_algo/palette/melodies/short/mSub122.scd new file mode 100644 index 0000000..0586a87 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub122 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub122 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub123.scd b/sound_algo/palette/melodies/short/mSub123.scd new file mode 100644 index 0000000..319d55f --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub123 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub123 = [ + 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub124.scd b/sound_algo/palette/melodies/short/mSub124.scd new file mode 100644 index 0000000..9c988d7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub124 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub124 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub125.scd b/sound_algo/palette/melodies/short/mSub125.scd new file mode 100644 index 0000000..54f83fb --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub125 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub125 = [ + 24, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub126.scd b/sound_algo/palette/melodies/short/mSub126.scd new file mode 100644 index 0000000..7335f95 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub126 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub126 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub127.scd b/sound_algo/palette/melodies/short/mSub127.scd new file mode 100644 index 0000000..543056e --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub127 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub127 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub128.scd b/sound_algo/palette/melodies/short/mSub128.scd new file mode 100644 index 0000000..4d861ab --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub128 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub128 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub129.scd b/sound_algo/palette/melodies/short/mSub129.scd new file mode 100644 index 0000000..9ff4b54 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub129 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub129 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub130.scd b/sound_algo/palette/melodies/short/mSub130.scd new file mode 100644 index 0000000..2e062cd --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub130 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub130 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub131.scd b/sound_algo/palette/melodies/short/mSub131.scd new file mode 100644 index 0000000..6f21146 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub131 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub131 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub132.scd b/sound_algo/palette/melodies/short/mSub132.scd new file mode 100644 index 0000000..404f328 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub132 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub132 = [ + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub133.scd b/sound_algo/palette/melodies/short/mSub133.scd new file mode 100644 index 0000000..8ae875d --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub133 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub133 = [ + 24, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub134.scd b/sound_algo/palette/melodies/short/mSub134.scd new file mode 100644 index 0000000..edc398f --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub134 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub134 = [ + 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub135.scd b/sound_algo/palette/melodies/short/mSub135.scd new file mode 100644 index 0000000..9a0f3f4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub135 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub135 = [ + 34, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub136.scd b/sound_algo/palette/melodies/short/mSub136.scd new file mode 100644 index 0000000..a14ad78 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub136 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub136 = [ + 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub137.scd b/sound_algo/palette/melodies/short/mSub137.scd new file mode 100644 index 0000000..69e9137 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub137 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub137 = [ + 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub138.scd b/sound_algo/palette/melodies/short/mSub138.scd new file mode 100644 index 0000000..9d58afe --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub138 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub138 = [ + 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub139.scd b/sound_algo/palette/melodies/short/mSub139.scd new file mode 100644 index 0000000..f44beb1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub139 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub139 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub140.scd b/sound_algo/palette/melodies/short/mSub140.scd new file mode 100644 index 0000000..fc21e53 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub140 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub140 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub141.scd b/sound_algo/palette/melodies/short/mSub141.scd new file mode 100644 index 0000000..fcc859d --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub141 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub141 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub142.scd b/sound_algo/palette/melodies/short/mSub142.scd new file mode 100644 index 0000000..9dc2703 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub142 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub142 = [ + 26, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub143.scd b/sound_algo/palette/melodies/short/mSub143.scd new file mode 100644 index 0000000..5e9b52f --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub143 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub143 = [ + 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub144.scd b/sound_algo/palette/melodies/short/mSub144.scd new file mode 100644 index 0000000..10e200d --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub144 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub144 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub145.scd b/sound_algo/palette/melodies/short/mSub145.scd new file mode 100644 index 0000000..3da4917 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub145 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub145 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub146.scd b/sound_algo/palette/melodies/short/mSub146.scd new file mode 100644 index 0000000..2f51752 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub146 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub146 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub147.scd b/sound_algo/palette/melodies/short/mSub147.scd new file mode 100644 index 0000000..390770f --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub147 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub147 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub148.scd b/sound_algo/palette/melodies/short/mSub148.scd new file mode 100644 index 0000000..26e35e6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub148 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub148 = [ + 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub149.scd b/sound_algo/palette/melodies/short/mSub149.scd new file mode 100644 index 0000000..731f42b --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub149 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub149 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub150.scd b/sound_algo/palette/melodies/short/mSub150.scd new file mode 100644 index 0000000..c64fd7d --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub150 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub150 = [ + 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub151.scd b/sound_algo/palette/melodies/short/mSub151.scd new file mode 100644 index 0000000..d147a71 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub151 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub151 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub152.scd b/sound_algo/palette/melodies/short/mSub152.scd new file mode 100644 index 0000000..b9cb778 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub152 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub152 = [ + 27, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub153.scd b/sound_algo/palette/melodies/short/mSub153.scd new file mode 100644 index 0000000..3f52708 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub153 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub153 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub154.scd b/sound_algo/palette/melodies/short/mSub154.scd new file mode 100644 index 0000000..671c74f --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub154 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub154 = [ + 34, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub155.scd b/sound_algo/palette/melodies/short/mSub155.scd new file mode 100644 index 0000000..2395ac0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub155 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub155 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub156.scd b/sound_algo/palette/melodies/short/mSub156.scd new file mode 100644 index 0000000..56361e9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub156 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub156 = [ + 34, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub157.scd b/sound_algo/palette/melodies/short/mSub157.scd new file mode 100644 index 0000000..4b727e0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub157 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub157 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub158.scd b/sound_algo/palette/melodies/short/mSub158.scd new file mode 100644 index 0000000..fb85887 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub158 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub158 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub159.scd b/sound_algo/palette/melodies/short/mSub159.scd new file mode 100644 index 0000000..09bc69d --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub159 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub159 = [ + 29, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub160.scd b/sound_algo/palette/melodies/short/mSub160.scd new file mode 100644 index 0000000..e0ad904 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub160 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub160 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub161.scd b/sound_algo/palette/melodies/short/mSub161.scd new file mode 100644 index 0000000..fadc3d9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub161 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub161 = [ + 26, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub162.scd b/sound_algo/palette/melodies/short/mSub162.scd new file mode 100644 index 0000000..565761c --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub162 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub162 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub163.scd b/sound_algo/palette/melodies/short/mSub163.scd new file mode 100644 index 0000000..0da790e --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub163 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub163 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub164.scd b/sound_algo/palette/melodies/short/mSub164.scd new file mode 100644 index 0000000..a9a43f5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub164 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub164 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub165.scd b/sound_algo/palette/melodies/short/mSub165.scd new file mode 100644 index 0000000..6a17050 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub165 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub165 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub166.scd b/sound_algo/palette/melodies/short/mSub166.scd new file mode 100644 index 0000000..dc6cf83 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub166 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub166 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub167.scd b/sound_algo/palette/melodies/short/mSub167.scd new file mode 100644 index 0000000..7cb6465 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub167 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub167 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub168.scd b/sound_algo/palette/melodies/short/mSub168.scd new file mode 100644 index 0000000..d86c73d --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub168 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub168 = [ + 38, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSub169.scd b/sound_algo/palette/melodies/short/mSub169.scd new file mode 100644 index 0000000..0dfc3b7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSub169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSub169 -- short melody (32 steps), genre: sub +// ===================================================================== +( +~mSub169 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave100.scd b/sound_algo/palette/melodies/short/mSynthwave100.scd new file mode 100644 index 0000000..a8a1281 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave100 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave100 = [ + 0, 55, 48, 0, 50, 58, 65, 0, + 0, 84, 81, 81, 81, 70, 60, 0, + 0, 53, 74, 81, 67, 69, 62, 69, + 58, 67, 62, 82, 62, 72, 79, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave101.scd b/sound_algo/palette/melodies/short/mSynthwave101.scd new file mode 100644 index 0000000..391c8f9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave101 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave101 = [ + 57, 0, 0, 81, 48, 74, 60, 48, + 62, 52, 57, 52, 60, 84, 83, 0, + 0, 71, 72, 53, 76, 79, 0, 0, + 0, 0, 0, 52, 76, 0, 83, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave102.scd b/sound_algo/palette/melodies/short/mSynthwave102.scd new file mode 100644 index 0000000..2f4b6c0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave102 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave102 = [ + 72, 0, 62, 67, 72, 0, 50, 0, + 69, 83, 74, 48, 69, 0, 71, 60, + 48, 0, 60, 71, 0, 0, 79, 79, + 77, 76, 50, 79, 59, 0, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave103.scd b/sound_algo/palette/melodies/short/mSynthwave103.scd new file mode 100644 index 0000000..9c32d36 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave103 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave103 = [ + 69, 0, 0, 0, 0, 0, 55, 81, + 0, 48, 0, 0, 50, 0, 0, 0, + 65, 62, 65, 0, 69, 81, 60, 0, + 74, 0, 0, 0, 67, 0, 84, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave104.scd b/sound_algo/palette/melodies/short/mSynthwave104.scd new file mode 100644 index 0000000..ef669a3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave104 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave104 = [ + 0, 77, 55, 82, 77, 0, 69, 0, + 0, 58, 70, 52, 62, 74, 62, 64, + 65, 60, 0, 74, 60, 72, 0, 69, + 79, 0, 79, 52, 81, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave105.scd b/sound_algo/palette/melodies/short/mSynthwave105.scd new file mode 100644 index 0000000..47ebd39 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave105 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave105 = [ + 81, 74, 53, 72, 48, 60, 0, 0, + 0, 0, 52, 57, 0, 72, 79, 65, + 84, 0, 0, 0, 0, 64, 77, 0, + 76, 76, 55, 81, 72, 69, 52, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave106.scd b/sound_algo/palette/melodies/short/mSynthwave106.scd new file mode 100644 index 0000000..3109b04 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave106 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave106 = [ + 50, 60, 81, 58, 0, 67, 50, 0, + 74, 69, 48, 74, 69, 0, 57, 79, + 81, 52, 70, 70, 0, 0, 48, 69, + 48, 0, 77, 50, 0, 50, 74, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave107.scd b/sound_algo/palette/melodies/short/mSynthwave107.scd new file mode 100644 index 0000000..a239f92 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave107 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave107 = [ + 0, 55, 69, 48, 81, 0, 74, 83, + 0, 0, 0, 62, 81, 62, 65, 69, + 48, 59, 0, 71, 64, 0, 62, 53, + 0, 83, 57, 0, 69, 81, 71, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave108.scd b/sound_algo/palette/melodies/short/mSynthwave108.scd new file mode 100644 index 0000000..03e1b37 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave108 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave108 = [ + 74, 72, 65, 79, 0, 77, 0, 0, + 0, 58, 57, 84, 74, 0, 77, 65, + 57, 0, 0, 60, 50, 52, 0, 82, + 0, 64, 0, 0, 0, 58, 55, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave109.scd b/sound_algo/palette/melodies/short/mSynthwave109.scd new file mode 100644 index 0000000..4c3a1b9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave109 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave109 = [ + 48, 0, 64, 62, 67, 83, 50, 83, + 0, 69, 65, 0, 76, 77, 65, 48, + 0, 0, 0, 53, 53, 60, 52, 83, + 83, 79, 0, 74, 57, 0, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave110.scd b/sound_algo/palette/melodies/short/mSynthwave110.scd new file mode 100644 index 0000000..b5275b9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave110 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave110 = [ + 64, 0, 82, 70, 0, 67, 0, 67, + 0, 0, 50, 64, 0, 0, 82, 72, + 0, 70, 58, 67, 53, 70, 53, 0, + 0, 0, 79, 69, 81, 50, 58, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave111.scd b/sound_algo/palette/melodies/short/mSynthwave111.scd new file mode 100644 index 0000000..0c30f28 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave111 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave111 = [ + 0, 82, 0, 57, 69, 65, 81, 0, + 53, 67, 69, 0, 65, 55, 57, 69, + 74, 0, 0, 64, 50, 50, 82, 52, + 53, 0, 0, 0, 69, 0, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave112.scd b/sound_algo/palette/melodies/short/mSynthwave112.scd new file mode 100644 index 0000000..50069a2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave112 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave112 = [ + 0, 71, 77, 79, 76, 0, 52, 77, + 52, 64, 65, 0, 0, 76, 64, 64, + 65, 0, 0, 0, 0, 60, 0, 81, + 0, 60, 0, 0, 0, 0, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave113.scd b/sound_algo/palette/melodies/short/mSynthwave113.scd new file mode 100644 index 0000000..62ebe5c --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave113 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave113 = [ + 0, 52, 77, 83, 0, 74, 60, 64, + 69, 62, 0, 72, 60, 71, 48, 0, + 84, 0, 69, 0, 48, 57, 0, 0, + 76, 0, 52, 0, 57, 67, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave114.scd b/sound_algo/palette/melodies/short/mSynthwave114.scd new file mode 100644 index 0000000..cf20eb0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave114 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave114 = [ + 79, 70, 57, 0, 0, 53, 0, 62, + 0, 52, 0, 50, 50, 50, 0, 72, + 58, 77, 84, 79, 69, 77, 52, 0, + 0, 0, 79, 0, 0, 57, 84, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave115.scd b/sound_algo/palette/melodies/short/mSynthwave115.scd new file mode 100644 index 0000000..3af5212 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave115 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave115 = [ + 57, 79, 0, 0, 77, 0, 0, 76, + 50, 81, 84, 62, 62, 69, 52, 81, + 57, 65, 0, 77, 82, 58, 60, 57, + 0, 76, 76, 57, 65, 72, 65, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave116.scd b/sound_algo/palette/melodies/short/mSynthwave116.scd new file mode 100644 index 0000000..2c36f3d --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave116 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave116 = [ + 69, 0, 50, 0, 48, 82, 69, 58, + 52, 50, 0, 74, 74, 65, 52, 58, + 53, 74, 0, 84, 53, 0, 64, 52, + 81, 50, 0, 0, 0, 0, 81, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave117.scd b/sound_algo/palette/melodies/short/mSynthwave117.scd new file mode 100644 index 0000000..bb01eff --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave117 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave117 = [ + 65, 62, 0, 0, 62, 0, 76, 0, + 65, 0, 62, 0, 0, 81, 0, 0, + 55, 52, 65, 0, 67, 82, 0, 48, + 53, 72, 0, 69, 65, 0, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave118.scd b/sound_algo/palette/melodies/short/mSynthwave118.scd new file mode 100644 index 0000000..8ef62dd --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave118 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave118 = [ + 0, 0, 76, 79, 76, 0, 55, 81, + 72, 67, 67, 0, 0, 84, 83, 0, + 81, 0, 0, 0, 0, 53, 57, 72, + 0, 50, 0, 53, 0, 67, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave119.scd b/sound_algo/palette/melodies/short/mSynthwave119.scd new file mode 100644 index 0000000..027936e --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave119 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave119 = [ + 52, 69, 0, 84, 57, 81, 0, 53, + 0, 0, 48, 64, 0, 53, 67, 72, + 81, 62, 0, 59, 48, 74, 0, 74, + 64, 60, 0, 74, 84, 69, 72, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave120.scd b/sound_algo/palette/melodies/short/mSynthwave120.scd new file mode 100644 index 0000000..e5563c9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave120 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave120 = [ + 81, 67, 62, 59, 53, 0, 71, 67, + 64, 57, 0, 0, 0, 48, 52, 76, + 0, 0, 81, 0, 0, 0, 0, 52, + 0, 64, 71, 50, 0, 77, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave121.scd b/sound_algo/palette/melodies/short/mSynthwave121.scd new file mode 100644 index 0000000..f24be1a --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave121 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave121 = [ + 60, 62, 0, 77, 0, 0, 60, 0, + 0, 60, 60, 55, 77, 48, 0, 76, + 52, 79, 0, 59, 69, 83, 76, 64, + 0, 64, 69, 0, 76, 0, 69, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave122.scd b/sound_algo/palette/melodies/short/mSynthwave122.scd new file mode 100644 index 0000000..4fa91cd --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave122 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave122 = [ + 64, 0, 60, 59, 48, 0, 0, 76, + 50, 65, 69, 0, 77, 71, 79, 0, + 48, 0, 83, 64, 59, 0, 74, 74, + 52, 55, 60, 67, 0, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave123.scd b/sound_algo/palette/melodies/short/mSynthwave123.scd new file mode 100644 index 0000000..500f086 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave123 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave123 = [ + 64, 58, 0, 81, 0, 62, 74, 0, + 69, 52, 52, 0, 69, 79, 60, 72, + 69, 0, 79, 0, 0, 69, 81, 53, + 53, 82, 79, 0, 70, 79, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave124.scd b/sound_algo/palette/melodies/short/mSynthwave124.scd new file mode 100644 index 0000000..d916f1c --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave124 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave124 = [ + 0, 48, 59, 62, 0, 0, 62, 0, + 84, 83, 83, 0, 52, 0, 48, 72, + 76, 53, 83, 0, 65, 60, 79, 77, + 60, 84, 0, 83, 60, 59, 83, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave125.scd b/sound_algo/palette/melodies/short/mSynthwave125.scd new file mode 100644 index 0000000..be84661 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave125 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave125 = [ + 53, 57, 62, 53, 81, 62, 65, 57, + 0, 0, 84, 0, 55, 0, 53, 69, + 74, 77, 0, 0, 0, 62, 84, 64, + 69, 0, 0, 72, 65, 48, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave126.scd b/sound_algo/palette/melodies/short/mSynthwave126.scd new file mode 100644 index 0000000..75da481 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave126 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave126 = [ + 50, 48, 0, 64, 72, 79, 76, 65, + 81, 79, 0, 81, 65, 0, 84, 0, + 65, 76, 82, 0, 0, 58, 65, 0, + 0, 55, 0, 0, 65, 76, 57, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave127.scd b/sound_algo/palette/melodies/short/mSynthwave127.scd new file mode 100644 index 0000000..e415f2c --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave127 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave127 = [ + 69, 83, 67, 48, 0, 77, 72, 72, + 57, 62, 81, 72, 76, 55, 0, 77, + 84, 0, 0, 48, 0, 77, 0, 84, + 48, 64, 0, 0, 57, 60, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave128.scd b/sound_algo/palette/melodies/short/mSynthwave128.scd new file mode 100644 index 0000000..0dd0360 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave128 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave128 = [ + 50, 0, 60, 0, 62, 74, 82, 84, + 0, 0, 58, 0, 58, 0, 60, 77, + 0, 60, 57, 62, 0, 77, 81, 76, + 53, 81, 55, 0, 81, 0, 0, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave129.scd b/sound_algo/palette/melodies/short/mSynthwave129.scd new file mode 100644 index 0000000..3eb9825 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave129 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave129 = [ + 0, 57, 76, 0, 69, 60, 0, 62, + 69, 48, 62, 55, 70, 57, 0, 72, + 0, 62, 74, 55, 77, 64, 0, 0, + 74, 52, 57, 65, 0, 79, 53, 70 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave130.scd b/sound_algo/palette/melodies/short/mSynthwave130.scd new file mode 100644 index 0000000..57aa90f --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave130 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave130 = [ + 69, 0, 72, 0, 77, 55, 67, 0, + 52, 48, 72, 76, 48, 62, 52, 0, + 48, 60, 74, 57, 50, 48, 64, 0, + 76, 48, 48, 60, 52, 57, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave131.scd b/sound_algo/palette/melodies/short/mSynthwave131.scd new file mode 100644 index 0000000..203e868 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave131 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave131 = [ + 0, 76, 60, 62, 76, 84, 0, 55, + 84, 67, 0, 0, 0, 74, 69, 72, + 0, 0, 81, 64, 0, 74, 84, 57, + 50, 0, 81, 53, 62, 64, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave132.scd b/sound_algo/palette/melodies/short/mSynthwave132.scd new file mode 100644 index 0000000..1427375 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave132 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave132 = [ + 0, 77, 0, 83, 50, 53, 0, 57, + 64, 55, 77, 79, 0, 79, 84, 0, + 0, 84, 79, 74, 52, 0, 0, 0, + 0, 0, 81, 84, 60, 0, 57, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave133.scd b/sound_algo/palette/melodies/short/mSynthwave133.scd new file mode 100644 index 0000000..1cc4ada --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave133 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave133 = [ + 0, 76, 76, 59, 76, 74, 62, 76, + 64, 0, 76, 84, 84, 71, 67, 0, + 76, 79, 79, 57, 69, 0, 50, 0, + 84, 62, 0, 0, 0, 57, 57, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave134.scd b/sound_algo/palette/melodies/short/mSynthwave134.scd new file mode 100644 index 0000000..af15f90 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave134 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave134 = [ + 71, 60, 59, 52, 0, 52, 60, 0, + 59, 64, 50, 59, 64, 60, 50, 0, + 52, 60, 50, 0, 0, 57, 55, 72, + 76, 69, 72, 60, 57, 52, 0, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave135.scd b/sound_algo/palette/melodies/short/mSynthwave135.scd new file mode 100644 index 0000000..6aaeb49 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave135 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave135 = [ + 62, 64, 57, 0, 57, 67, 64, 53, + 0, 52, 0, 55, 0, 81, 84, 71, + 0, 0, 74, 74, 52, 0, 55, 53, + 0, 0, 0, 71, 72, 60, 72, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave136.scd b/sound_algo/palette/melodies/short/mSynthwave136.scd new file mode 100644 index 0000000..be18c43 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave136 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave136 = [ + 69, 57, 84, 0, 48, 77, 71, 62, + 0, 60, 59, 0, 0, 64, 59, 76, + 53, 79, 60, 53, 64, 67, 64, 50, + 67, 0, 0, 81, 0, 0, 0, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave137.scd b/sound_algo/palette/melodies/short/mSynthwave137.scd new file mode 100644 index 0000000..9b17869 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave137 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave137 = [ + 0, 0, 0, 79, 62, 60, 0, 0, + 0, 0, 52, 57, 65, 72, 62, 57, + 0, 72, 60, 70, 81, 64, 79, 0, + 84, 52, 67, 0, 48, 64, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave138.scd b/sound_algo/palette/melodies/short/mSynthwave138.scd new file mode 100644 index 0000000..4888f07 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave138 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave138 = [ + 50, 0, 81, 69, 0, 52, 74, 62, + 0, 0, 0, 58, 58, 69, 57, 62, + 0, 0, 0, 0, 0, 64, 0, 50, + 69, 79, 48, 77, 77, 62, 69, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave139.scd b/sound_algo/palette/melodies/short/mSynthwave139.scd new file mode 100644 index 0000000..39a0507 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave139 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave139 = [ + 0, 59, 55, 52, 64, 79, 53, 67, + 55, 0, 84, 60, 53, 0, 83, 77, + 48, 0, 53, 52, 64, 62, 65, 84, + 57, 53, 0, 0, 72, 74, 0, 59 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave140.scd b/sound_algo/palette/melodies/short/mSynthwave140.scd new file mode 100644 index 0000000..8744e0a --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave140 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave140 = [ + 0, 81, 55, 0, 0, 70, 0, 0, + 65, 65, 76, 0, 57, 55, 0, 69, + 69, 52, 69, 62, 74, 0, 74, 67, + 50, 0, 82, 64, 0, 0, 0, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mSynthwave141.scd b/sound_algo/palette/melodies/short/mSynthwave141.scd new file mode 100644 index 0000000..67fe7f8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mSynthwave141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mSynthwave141 -- short melody (32 steps), genre: synthwave +// ===================================================================== +( +~mSynthwave141 = [ + 0, 60, 64, 82, 64, 67, 58, 76, + 76, 60, 69, 82, 57, 84, 0, 0, + 69, 55, 0, 79, 81, 0, 64, 67, + 57, 81, 0, 67, 53, 62, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension100.scd b/sound_algo/palette/melodies/short/mTension100.scd new file mode 100644 index 0000000..c1d6a8c --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension100 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension100 = [ + 0, 0, 0, 41, 50, 41, 0, 0, + 0, 56, 46, 59, 38, 55, 0, 0, + 0, 58, 58, 58, 0, 53, 0, 40, + 49, 41, 0, 0, 38, 46, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension101.scd b/sound_algo/palette/melodies/short/mTension101.scd new file mode 100644 index 0000000..6039824 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension101 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension101 = [ + 55, 54, 58, 48, 0, 0, 37, 36, + 55, 0, 0, 0, 55, 0, 48, 51, + 0, 0, 52, 0, 0, 39, 57, 49, + 0, 0, 48, 0, 40, 55, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension102.scd b/sound_algo/palette/melodies/short/mTension102.scd new file mode 100644 index 0000000..1a204ed --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension102 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension102 = [ + 50, 57, 55, 52, 59, 57, 0, 0, + 50, 50, 55, 60, 43, 0, 43, 47, + 0, 0, 52, 0, 0, 57, 48, 0, + 0, 47, 36, 52, 52, 59, 45, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension103.scd b/sound_algo/palette/melodies/short/mTension103.scd new file mode 100644 index 0000000..077c7b2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension103 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension103 = [ + 0, 38, 0, 60, 52, 48, 0, 52, + 0, 57, 58, 0, 43, 0, 50, 0, + 52, 43, 36, 60, 60, 55, 0, 0, + 0, 55, 52, 48, 53, 0, 38, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension104.scd b/sound_algo/palette/melodies/short/mTension104.scd new file mode 100644 index 0000000..8ea43fa --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension104 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension104 = [ + 55, 47, 38, 46, 0, 38, 0, 56, + 38, 40, 0, 47, 59, 38, 56, 41, + 44, 38, 47, 43, 46, 58, 49, 52, + 38, 41, 56, 58, 46, 47, 59, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension105.scd b/sound_algo/palette/melodies/short/mTension105.scd new file mode 100644 index 0000000..6f9cf4a --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension105 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension105 = [ + 40, 48, 0, 55, 55, 0, 0, 53, + 53, 55, 48, 48, 43, 38, 43, 55, + 57, 0, 38, 53, 55, 53, 0, 50, + 0, 48, 41, 50, 43, 0, 0, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension106.scd b/sound_algo/palette/melodies/short/mTension106.scd new file mode 100644 index 0000000..7865757 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension106 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension106 = [ + 38, 0, 57, 0, 52, 58, 0, 55, + 52, 41, 41, 43, 48, 36, 55, 0, + 43, 52, 48, 45, 0, 40, 0, 55, + 0, 40, 41, 57, 40, 45, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension107.scd b/sound_algo/palette/melodies/short/mTension107.scd new file mode 100644 index 0000000..a325e46 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension107 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension107 = [ + 48, 41, 58, 58, 55, 41, 53, 0, + 55, 46, 55, 58, 40, 0, 57, 0, + 40, 45, 43, 53, 0, 0, 45, 40, + 36, 0, 45, 60, 55, 57, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension108.scd b/sound_algo/palette/melodies/short/mTension108.scd new file mode 100644 index 0000000..5425905 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension108 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension108 = [ + 44, 0, 0, 0, 59, 59, 53, 59, + 0, 47, 44, 53, 56, 40, 0, 52, + 43, 0, 55, 56, 0, 52, 40, 55, + 47, 0, 0, 47, 0, 40, 0, 44 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension109.scd b/sound_algo/palette/melodies/short/mTension109.scd new file mode 100644 index 0000000..3ceb835 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension109 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension109 = [ + 41, 0, 56, 47, 58, 50, 41, 40, + 47, 43, 40, 49, 38, 43, 0, 49, + 58, 59, 0, 0, 50, 46, 56, 59, + 50, 46, 0, 40, 58, 59, 44, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension110.scd b/sound_algo/palette/melodies/short/mTension110.scd new file mode 100644 index 0000000..a96e0bc --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension110 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension110 = [ + 47, 0, 36, 0, 53, 52, 0, 0, + 40, 0, 52, 48, 43, 0, 50, 0, + 0, 40, 59, 47, 48, 40, 43, 0, + 60, 60, 0, 52, 0, 45, 0, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension111.scd b/sound_algo/palette/melodies/short/mTension111.scd new file mode 100644 index 0000000..a903f66 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension111 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension111 = [ + 55, 41, 58, 53, 40, 60, 36, 0, + 58, 40, 40, 0, 45, 43, 46, 57, + 52, 41, 40, 58, 0, 0, 36, 43, + 0, 43, 0, 53, 36, 0, 0, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension112.scd b/sound_algo/palette/melodies/short/mTension112.scd new file mode 100644 index 0000000..8bcc19a --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension112 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension112 = [ + 52, 0, 0, 0, 52, 0, 0, 41, + 46, 57, 41, 57, 0, 36, 0, 41, + 0, 0, 52, 0, 40, 52, 0, 0, + 46, 0, 46, 58, 55, 48, 40, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension113.scd b/sound_algo/palette/melodies/short/mTension113.scd new file mode 100644 index 0000000..ef7b2da --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension113 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension113 = [ + 0, 0, 41, 47, 58, 0, 56, 55, + 38, 0, 56, 55, 0, 0, 0, 46, + 0, 43, 58, 46, 0, 43, 50, 52, + 43, 55, 0, 52, 0, 53, 41, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension114.scd b/sound_algo/palette/melodies/short/mTension114.scd new file mode 100644 index 0000000..ef5a1e5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension114 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension114 = [ + 46, 0, 46, 37, 0, 58, 57, 39, + 52, 48, 46, 55, 43, 0, 0, 58, + 0, 37, 51, 0, 55, 36, 0, 36, + 55, 0, 43, 42, 37, 58, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension115.scd b/sound_algo/palette/melodies/short/mTension115.scd new file mode 100644 index 0000000..1f0701d --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension115 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension115 = [ + 56, 43, 46, 59, 41, 0, 58, 41, + 37, 44, 0, 40, 50, 46, 49, 41, + 59, 0, 0, 47, 50, 37, 0, 43, + 0, 0, 53, 52, 0, 37, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension116.scd b/sound_algo/palette/melodies/short/mTension116.scd new file mode 100644 index 0000000..45f6c9b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension116 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension116 = [ + 41, 0, 47, 44, 47, 0, 59, 37, + 38, 53, 49, 59, 43, 59, 0, 43, + 0, 46, 50, 46, 0, 55, 0, 0, + 38, 0, 38, 47, 59, 44, 53, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension117.scd b/sound_algo/palette/melodies/short/mTension117.scd new file mode 100644 index 0000000..d0f8132 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension117 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension117 = [ + 0, 0, 0, 59, 38, 0, 47, 0, + 0, 52, 38, 40, 50, 47, 52, 55, + 59, 58, 37, 46, 53, 58, 38, 43, + 0, 58, 0, 40, 50, 37, 55, 47 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension118.scd b/sound_algo/palette/melodies/short/mTension118.scd new file mode 100644 index 0000000..1a39220 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension118 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension118 = [ + 49, 0, 43, 55, 50, 43, 46, 58, + 0, 52, 50, 0, 38, 0, 53, 58, + 0, 53, 40, 41, 53, 44, 50, 0, + 59, 46, 41, 47, 38, 40, 56, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension119.scd b/sound_algo/palette/melodies/short/mTension119.scd new file mode 100644 index 0000000..55fa993 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension119 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension119 = [ + 43, 40, 0, 58, 0, 39, 0, 57, + 0, 39, 52, 0, 0, 58, 0, 0, + 0, 43, 45, 40, 60, 0, 42, 0, + 42, 39, 0, 54, 45, 52, 0, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension120.scd b/sound_algo/palette/melodies/short/mTension120.scd new file mode 100644 index 0000000..919f2ce --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension120 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension120 = [ + 59, 53, 0, 0, 59, 0, 0, 41, + 38, 59, 45, 38, 0, 40, 43, 52, + 0, 0, 0, 52, 36, 0, 0, 52, + 47, 40, 41, 0, 47, 55, 0, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension121.scd b/sound_algo/palette/melodies/short/mTension121.scd new file mode 100644 index 0000000..b0978b3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension121 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension121 = [ + 59, 50, 0, 0, 50, 44, 50, 47, + 38, 44, 40, 0, 50, 38, 0, 47, + 38, 41, 0, 0, 47, 0, 37, 41, + 55, 47, 52, 0, 38, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension122.scd b/sound_algo/palette/melodies/short/mTension122.scd new file mode 100644 index 0000000..57bcd81 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension122 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension122 = [ + 55, 0, 40, 43, 0, 0, 55, 45, + 0, 55, 0, 39, 37, 39, 40, 0, + 0, 49, 43, 0, 52, 55, 37, 42, + 45, 43, 55, 54, 40, 43, 54, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension123.scd b/sound_algo/palette/melodies/short/mTension123.scd new file mode 100644 index 0000000..913479f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension123 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension123 = [ + 0, 48, 0, 46, 53, 52, 0, 50, + 43, 36, 0, 0, 50, 40, 50, 55, + 40, 0, 46, 57, 52, 38, 0, 46, + 43, 52, 0, 40, 43, 50, 55, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension124.scd b/sound_algo/palette/melodies/short/mTension124.scd new file mode 100644 index 0000000..fd200b1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension124 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension124 = [ + 0, 0, 0, 36, 0, 57, 0, 0, + 47, 48, 43, 0, 38, 50, 0, 0, + 50, 50, 0, 0, 55, 0, 0, 45, + 0, 0, 47, 50, 55, 48, 43, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension125.scd b/sound_algo/palette/melodies/short/mTension125.scd new file mode 100644 index 0000000..8194cd0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension125 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension125 = [ + 0, 48, 37, 43, 0, 0, 58, 48, + 40, 0, 58, 37, 54, 52, 43, 45, + 0, 42, 60, 0, 52, 40, 45, 0, + 55, 0, 0, 51, 0, 46, 45, 40 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension126.scd b/sound_algo/palette/melodies/short/mTension126.scd new file mode 100644 index 0000000..69c547b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension126 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension126 = [ + 57, 36, 58, 40, 55, 48, 43, 58, + 52, 53, 0, 0, 41, 40, 52, 57, + 40, 52, 58, 0, 40, 0, 55, 46, + 43, 0, 53, 36, 52, 0, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension127.scd b/sound_algo/palette/melodies/short/mTension127.scd new file mode 100644 index 0000000..3827110 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension127 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension127 = [ + 48, 0, 0, 0, 40, 39, 48, 43, + 43, 0, 42, 46, 52, 43, 36, 49, + 0, 40, 52, 58, 43, 51, 52, 57, + 0, 51, 43, 36, 57, 54, 46, 58 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension128.scd b/sound_algo/palette/melodies/short/mTension128.scd new file mode 100644 index 0000000..6fb96ef --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension128 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension128 = [ + 52, 0, 55, 41, 0, 0, 50, 50, + 0, 0, 60, 0, 55, 45, 40, 46, + 0, 53, 58, 36, 0, 0, 53, 0, + 57, 52, 0, 58, 46, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension129.scd b/sound_algo/palette/melodies/short/mTension129.scd new file mode 100644 index 0000000..53ae659 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension129 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension129 = [ + 0, 47, 37, 0, 47, 50, 53, 47, + 0, 56, 59, 55, 0, 47, 44, 0, + 0, 50, 55, 46, 55, 0, 46, 52, + 50, 0, 46, 0, 50, 0, 43, 47 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension130.scd b/sound_algo/palette/melodies/short/mTension130.scd new file mode 100644 index 0000000..97134dc --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension130 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension130 = [ + 59, 55, 44, 0, 44, 0, 0, 0, + 0, 59, 41, 0, 47, 0, 44, 59, + 0, 0, 55, 41, 0, 47, 0, 0, + 0, 37, 0, 0, 0, 40, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension131.scd b/sound_algo/palette/melodies/short/mTension131.scd new file mode 100644 index 0000000..cf59a0f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension131 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension131 = [ + 41, 0, 0, 0, 47, 41, 0, 43, + 0, 0, 0, 41, 46, 52, 0, 53, + 38, 0, 37, 41, 47, 59, 0, 0, + 59, 52, 0, 41, 59, 52, 0, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension132.scd b/sound_algo/palette/melodies/short/mTension132.scd new file mode 100644 index 0000000..24bbf5e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension132 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension132 = [ + 52, 36, 52, 48, 52, 0, 55, 55, + 46, 55, 50, 0, 0, 45, 52, 55, + 52, 52, 48, 60, 46, 41, 50, 0, + 43, 43, 46, 40, 43, 57, 60, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension133.scd b/sound_algo/palette/melodies/short/mTension133.scd new file mode 100644 index 0000000..0b7b777 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension133 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension133 = [ + 40, 52, 60, 55, 41, 57, 0, 0, + 38, 0, 41, 36, 0, 55, 47, 47, + 48, 48, 0, 0, 45, 55, 0, 0, + 57, 36, 0, 0, 0, 57, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension134.scd b/sound_algo/palette/melodies/short/mTension134.scd new file mode 100644 index 0000000..60662f4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension134 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension134 = [ + 38, 0, 0, 0, 43, 38, 36, 52, + 38, 36, 53, 0, 57, 0, 50, 53, + 0, 57, 0, 48, 53, 40, 45, 52, + 60, 53, 52, 55, 60, 47, 59, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension135.scd b/sound_algo/palette/melodies/short/mTension135.scd new file mode 100644 index 0000000..ca4ca96 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension135 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension135 = [ + 38, 47, 56, 41, 52, 0, 56, 53, + 0, 55, 0, 0, 0, 0, 0, 58, + 0, 41, 46, 53, 52, 59, 56, 58, + 0, 46, 56, 55, 0, 43, 0, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension136.scd b/sound_algo/palette/melodies/short/mTension136.scd new file mode 100644 index 0000000..85ae965 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension136 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension136 = [ + 59, 41, 0, 43, 47, 59, 55, 59, + 0, 53, 38, 53, 59, 43, 45, 45, + 47, 38, 0, 0, 38, 43, 0, 36, + 0, 0, 0, 43, 59, 40, 45, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension137.scd b/sound_algo/palette/melodies/short/mTension137.scd new file mode 100644 index 0000000..ad657e3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension137 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension137 = [ + 55, 0, 52, 41, 40, 53, 46, 0, + 55, 45, 0, 48, 55, 0, 60, 36, + 0, 0, 0, 55, 43, 46, 0, 46, + 50, 46, 36, 0, 0, 52, 46, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension138.scd b/sound_algo/palette/melodies/short/mTension138.scd new file mode 100644 index 0000000..f75a83a --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension138 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension138 = [ + 59, 55, 40, 52, 41, 38, 0, 50, + 38, 55, 41, 38, 50, 48, 0, 52, + 55, 53, 0, 52, 43, 0, 0, 55, + 0, 57, 40, 60, 0, 45, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension139.scd b/sound_algo/palette/melodies/short/mTension139.scd new file mode 100644 index 0000000..e44b416 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension139 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension139 = [ + 39, 48, 0, 36, 0, 43, 0, 0, + 43, 36, 42, 0, 55, 40, 0, 40, + 37, 52, 49, 40, 40, 42, 39, 0, + 39, 0, 0, 58, 46, 49, 43, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension140.scd b/sound_algo/palette/melodies/short/mTension140.scd new file mode 100644 index 0000000..bc8b2df --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension140 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension140 = [ + 0, 55, 0, 55, 43, 0, 0, 40, + 41, 52, 0, 36, 0, 60, 58, 45, + 43, 53, 58, 60, 55, 0, 60, 0, + 0, 41, 0, 55, 0, 55, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension141.scd b/sound_algo/palette/melodies/short/mTension141.scd new file mode 100644 index 0000000..81b0460 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension141 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension141 = [ + 55, 40, 60, 48, 47, 0, 0, 38, + 38, 50, 0, 48, 60, 0, 38, 0, + 59, 0, 0, 60, 0, 38, 48, 0, + 36, 60, 0, 43, 0, 0, 40, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension142.scd b/sound_algo/palette/melodies/short/mTension142.scd new file mode 100644 index 0000000..147ef0f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension142 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension142 = [ + 50, 43, 48, 0, 50, 0, 0, 36, + 0, 53, 47, 60, 52, 48, 0, 0, + 0, 45, 59, 38, 60, 0, 48, 0, + 60, 43, 50, 0, 59, 0, 43, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension143.scd b/sound_algo/palette/melodies/short/mTension143.scd new file mode 100644 index 0000000..c114b88 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension143 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension143 = [ + 0, 48, 52, 50, 0, 59, 0, 57, + 48, 55, 0, 0, 0, 0, 0, 0, + 50, 36, 55, 0, 38, 48, 53, 0, + 38, 0, 36, 41, 0, 0, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension144.scd b/sound_algo/palette/melodies/short/mTension144.scd new file mode 100644 index 0000000..aaad954 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension144 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension144 = [ + 41, 55, 58, 40, 55, 0, 52, 36, + 55, 0, 55, 55, 40, 58, 43, 50, + 55, 57, 60, 40, 0, 53, 0, 43, + 55, 36, 45, 0, 0, 0, 45, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension145.scd b/sound_algo/palette/melodies/short/mTension145.scd new file mode 100644 index 0000000..c311521 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension145 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension145 = [ + 0, 48, 0, 39, 0, 0, 0, 42, + 0, 0, 58, 0, 52, 0, 57, 46, + 43, 0, 36, 40, 55, 0, 51, 46, + 51, 42, 0, 37, 39, 55, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension146.scd b/sound_algo/palette/melodies/short/mTension146.scd new file mode 100644 index 0000000..7639cd1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension146 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension146 = [ + 0, 0, 58, 38, 0, 53, 52, 0, + 58, 38, 40, 52, 38, 44, 50, 52, + 38, 0, 44, 0, 41, 50, 58, 0, + 50, 0, 52, 43, 0, 0, 38, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension147.scd b/sound_algo/palette/melodies/short/mTension147.scd new file mode 100644 index 0000000..e9adefc --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension147 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension147 = [ + 40, 41, 0, 0, 47, 46, 49, 0, + 0, 0, 0, 0, 0, 50, 49, 50, + 44, 47, 58, 0, 47, 56, 44, 41, + 0, 0, 0, 56, 0, 41, 50, 37 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension148.scd b/sound_algo/palette/melodies/short/mTension148.scd new file mode 100644 index 0000000..ce557a1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension148 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension148 = [ + 0, 46, 50, 46, 52, 48, 46, 41, + 57, 53, 0, 50, 38, 60, 0, 52, + 55, 40, 45, 60, 0, 41, 0, 40, + 50, 55, 58, 53, 52, 40, 45, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension149.scd b/sound_algo/palette/melodies/short/mTension149.scd new file mode 100644 index 0000000..18e2fd4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension149 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension149 = [ + 38, 0, 0, 55, 0, 47, 43, 49, + 0, 0, 37, 49, 0, 47, 50, 46, + 56, 44, 55, 0, 50, 50, 44, 49, + 38, 46, 0, 41, 40, 47, 0, 49 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension150.scd b/sound_algo/palette/melodies/short/mTension150.scd new file mode 100644 index 0000000..197b76c --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension150 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension150 = [ + 48, 0, 52, 40, 40, 52, 40, 45, + 40, 41, 36, 60, 55, 58, 41, 48, + 40, 45, 57, 36, 43, 58, 41, 0, + 55, 40, 0, 53, 53, 58, 38, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension151.scd b/sound_algo/palette/melodies/short/mTension151.scd new file mode 100644 index 0000000..1ca9bc7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension151 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension151 = [ + 40, 52, 46, 50, 40, 48, 45, 58, + 0, 0, 0, 0, 0, 58, 38, 58, + 0, 0, 36, 48, 36, 60, 41, 40, + 40, 36, 50, 0, 41, 58, 55, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension152.scd b/sound_algo/palette/melodies/short/mTension152.scd new file mode 100644 index 0000000..665da7b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension152 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension152 = [ + 0, 0, 48, 0, 57, 0, 48, 57, + 0, 0, 0, 53, 36, 60, 36, 48, + 60, 0, 57, 0, 52, 38, 60, 50, + 58, 41, 0, 48, 43, 48, 0, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension153.scd b/sound_algo/palette/melodies/short/mTension153.scd new file mode 100644 index 0000000..c41c004 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension153 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension153 = [ + 40, 0, 36, 47, 59, 0, 57, 60, + 0, 0, 41, 47, 38, 50, 0, 60, + 0, 41, 0, 57, 0, 36, 0, 52, + 0, 0, 0, 0, 0, 0, 53, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension154.scd b/sound_algo/palette/melodies/short/mTension154.scd new file mode 100644 index 0000000..f7a6ed5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension154 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension154 = [ + 48, 40, 0, 57, 59, 57, 45, 57, + 59, 57, 48, 40, 0, 0, 50, 55, + 48, 0, 0, 0, 0, 0, 59, 47, + 59, 55, 50, 57, 38, 40, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension155.scd b/sound_algo/palette/melodies/short/mTension155.scd new file mode 100644 index 0000000..dd3b349 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension155 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension155 = [ + 40, 0, 55, 53, 38, 0, 37, 0, + 0, 58, 0, 0, 58, 0, 0, 50, + 0, 0, 0, 55, 38, 55, 0, 0, + 0, 55, 37, 46, 59, 0, 56, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension156.scd b/sound_algo/palette/melodies/short/mTension156.scd new file mode 100644 index 0000000..52061fb --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension156 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension156 = [ + 50, 52, 53, 59, 53, 0, 55, 52, + 0, 0, 43, 59, 47, 0, 52, 0, + 0, 59, 0, 0, 0, 0, 0, 0, + 59, 38, 48, 0, 52, 0, 40, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension157.scd b/sound_algo/palette/melodies/short/mTension157.scd new file mode 100644 index 0000000..1bd8559 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension157 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension157 = [ + 43, 0, 0, 50, 43, 0, 52, 48, + 38, 40, 45, 52, 59, 0, 0, 0, + 48, 55, 0, 40, 47, 0, 53, 40, + 36, 50, 48, 50, 47, 43, 57, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension158.scd b/sound_algo/palette/melodies/short/mTension158.scd new file mode 100644 index 0000000..8aa31ac --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension158 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension158 = [ + 58, 0, 57, 0, 0, 52, 58, 60, + 43, 60, 48, 36, 52, 46, 48, 45, + 40, 41, 0, 57, 0, 41, 0, 43, + 0, 0, 45, 55, 0, 60, 40, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension159.scd b/sound_algo/palette/melodies/short/mTension159.scd new file mode 100644 index 0000000..daa94f8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension159 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension159 = [ + 0, 37, 49, 41, 0, 58, 0, 46, + 47, 0, 0, 0, 47, 58, 0, 47, + 37, 49, 44, 40, 59, 50, 44, 0, + 0, 40, 0, 52, 50, 0, 44, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension160.scd b/sound_algo/palette/melodies/short/mTension160.scd new file mode 100644 index 0000000..323d91b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension160 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension160 = [ + 43, 0, 0, 0, 52, 45, 0, 48, + 0, 53, 0, 36, 40, 0, 0, 50, + 40, 53, 0, 38, 40, 0, 0, 0, + 40, 38, 0, 0, 0, 45, 0, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension161.scd b/sound_algo/palette/melodies/short/mTension161.scd new file mode 100644 index 0000000..5647a5e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension161 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension161 = [ + 40, 60, 36, 41, 45, 52, 0, 0, + 46, 55, 45, 57, 0, 45, 0, 43, + 52, 38, 0, 0, 52, 40, 60, 48, + 0, 48, 0, 0, 0, 58, 0, 46 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension162.scd b/sound_algo/palette/melodies/short/mTension162.scd new file mode 100644 index 0000000..0a6995d --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension162 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension162 = [ + 0, 0, 0, 0, 55, 50, 45, 46, + 57, 36, 48, 43, 0, 40, 52, 0, + 0, 0, 48, 0, 43, 41, 55, 60, + 40, 50, 48, 0, 0, 50, 38, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension163.scd b/sound_algo/palette/melodies/short/mTension163.scd new file mode 100644 index 0000000..e29d53e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension163 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension163 = [ + 50, 37, 50, 58, 0, 47, 0, 46, + 47, 37, 52, 41, 38, 58, 49, 50, + 38, 59, 0, 0, 38, 40, 0, 56, + 38, 0, 40, 0, 41, 49, 59, 44 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension164.scd b/sound_algo/palette/melodies/short/mTension164.scd new file mode 100644 index 0000000..8129495 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension164 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension164 = [ + 38, 50, 0, 0, 52, 58, 49, 40, + 38, 40, 55, 0, 49, 0, 0, 47, + 53, 0, 40, 46, 49, 0, 41, 43, + 59, 56, 0, 38, 59, 0, 50, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension165.scd b/sound_algo/palette/melodies/short/mTension165.scd new file mode 100644 index 0000000..d23cd7b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension165 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension165 = [ + 52, 43, 45, 45, 0, 52, 46, 0, + 52, 60, 0, 53, 52, 60, 58, 52, + 43, 48, 0, 38, 41, 58, 0, 53, + 55, 38, 0, 58, 43, 48, 55, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension166.scd b/sound_algo/palette/melodies/short/mTension166.scd new file mode 100644 index 0000000..2ec6805 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension166 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension166 = [ + 52, 58, 0, 0, 0, 0, 0, 40, + 0, 37, 0, 0, 55, 0, 0, 40, + 40, 0, 57, 43, 0, 37, 48, 36, + 46, 39, 0, 0, 60, 58, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension167.scd b/sound_algo/palette/melodies/short/mTension167.scd new file mode 100644 index 0000000..90cbfee --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension167 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension167 = [ + 59, 43, 0, 46, 0, 0, 49, 53, + 50, 47, 0, 0, 59, 56, 37, 50, + 0, 58, 53, 58, 47, 0, 50, 0, + 0, 0, 0, 37, 47, 0, 0, 56 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension168.scd b/sound_algo/palette/melodies/short/mTension168.scd new file mode 100644 index 0000000..9b79cee --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension168 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension168 = [ + 53, 50, 0, 45, 46, 41, 0, 41, + 0, 57, 60, 50, 41, 53, 45, 0, + 50, 50, 43, 60, 40, 53, 0, 0, + 52, 0, 52, 0, 52, 43, 36, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mTension169.scd b/sound_algo/palette/melodies/short/mTension169.scd new file mode 100644 index 0000000..5bc5a59 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTension169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTension169 -- short melody (32 steps), genre: tension +// ===================================================================== +( +~mTension169 = [ + 0, 55, 45, 60, 0, 0, 52, 0, + 41, 46, 0, 36, 0, 36, 55, 38, + 40, 58, 48, 60, 0, 43, 40, 40, + 0, 36, 0, 0, 48, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance100.scd b/sound_algo/palette/melodies/short/mTrance100.scd new file mode 100644 index 0000000..2736902 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance100 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance100 = [ + 60, 62, 64, 65, 60, 83, 71, 69, + 71, 72, 74, 76, 65, 72, 62, 77, + 62, 64, 65, 67, 64, 71, 65, 81, + 69, 71, 72, 74, 60, 74, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance101.scd b/sound_algo/palette/melodies/short/mTrance101.scd new file mode 100644 index 0000000..61991a9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance101 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance101 = [ + 62, 65, 66, 68, 69, 71, 83, 66, + 0, 0, 78, 80, 68, 73, 77, 65, + 69, 71, 73, 74, 62, 73, 83, 71, + 0, 0, 77, 81, 78, 68, 66, 73 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance102.scd b/sound_algo/palette/melodies/short/mTrance102.scd new file mode 100644 index 0000000..360fc77 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance102 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance102 = [ + 71, 73, 74, 77, 61, 71, 74, 0, + 69, 71, 73, 74, 0, 68, 61, 65, + 68, 69, 71, 73, 73, 68, 71, 62, + 0, 0, 73, 65, 0, 83, 62, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance103.scd b/sound_algo/palette/melodies/short/mTrance103.scd new file mode 100644 index 0000000..2ab108f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance103 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance103 = [ + 69, 71, 72, 74, 65, 0, 0, 77, + 69, 71, 72, 74, 76, 77, 77, 0, + 60, 72, 71, 81, 69, 71, 62, 64, + 67, 69, 71, 72, 74, 0, 0, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance104.scd b/sound_algo/palette/melodies/short/mTrance104.scd new file mode 100644 index 0000000..b7c47b4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance104 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance104 = [ + 69, 71, 73, 74, 74, 74, 0, 0, + 66, 68, 69, 71, 81, 80, 68, 68, + 68, 69, 71, 73, 81, 73, 0, 61, + 68, 69, 71, 73, 81, 77, 71, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance105.scd b/sound_algo/palette/melodies/short/mTrance105.scd new file mode 100644 index 0000000..fb28e76 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance105 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance105 = [ + 71, 73, 74, 77, 61, 65, 81, 61, + 66, 68, 69, 71, 61, 62, 74, 80, + 65, 66, 68, 69, 68, 66, 65, 80, + 68, 69, 71, 73, 0, 65, 78, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance106.scd b/sound_algo/palette/melodies/short/mTrance106.scd new file mode 100644 index 0000000..3c9f88e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance106 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance106 = [ + 71, 73, 74, 77, 69, 78, 68, 0, + 61, 62, 65, 66, 61, 78, 78, 0, + 61, 0, 65, 74, 66, 61, 69, 68, + 71, 73, 74, 77, 73, 83, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance107.scd b/sound_algo/palette/melodies/short/mTrance107.scd new file mode 100644 index 0000000..77c0dc7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance107 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance107 = [ + 68, 69, 71, 73, 0, 76, 74, 80, + 0, 0, 69, 83, 81, 64, 0, 0, + 81, 61, 0, 0, 73, 68, 64, 80, + 81, 0, 78, 76, 69, 0, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance108.scd b/sound_algo/palette/melodies/short/mTrance108.scd new file mode 100644 index 0000000..51887d9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance108 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance108 = [ + 62, 64, 65, 68, 65, 65, 84, 0, + 0, 69, 0, 60, 76, 77, 80, 62, + 68, 69, 71, 72, 84, 84, 72, 0, + 0, 0, 71, 60, 80, 84, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance109.scd b/sound_algo/palette/melodies/short/mTrance109.scd new file mode 100644 index 0000000..ff01297 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance109 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance109 = [ + 66, 0, 78, 62, 62, 71, 64, 74, + 62, 64, 66, 68, 69, 69, 69, 68, + 68, 69, 71, 73, 0, 73, 78, 80, + 66, 62, 64, 78, 81, 76, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance110.scd b/sound_algo/palette/melodies/short/mTrance110.scd new file mode 100644 index 0000000..9d7d6d6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance110 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance110 = [ + 0, 81, 83, 78, 65, 65, 69, 66, + 74, 74, 0, 62, 80, 73, 81, 66, + 62, 65, 66, 68, 62, 73, 83, 73, + 71, 73, 74, 77, 73, 66, 83, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance111.scd b/sound_algo/palette/melodies/short/mTrance111.scd new file mode 100644 index 0000000..e1114cb --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance111 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance111 = [ + 69, 71, 73, 74, 78, 0, 74, 0, + 61, 62, 64, 66, 71, 0, 81, 83, + 62, 64, 66, 68, 69, 62, 83, 66, + 0, 83, 81, 76, 76, 78, 68, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance112.scd b/sound_algo/palette/melodies/short/mTrance112.scd new file mode 100644 index 0000000..c673fc9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance112 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance112 = [ + 62, 64, 65, 68, 60, 0, 0, 0, + 64, 76, 0, 62, 64, 0, 76, 0, + 77, 0, 72, 0, 80, 68, 71, 65, + 64, 65, 68, 69, 68, 62, 81, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance113.scd b/sound_algo/palette/melodies/short/mTrance113.scd new file mode 100644 index 0000000..81e7692 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance113 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance113 = [ + 78, 83, 69, 83, 80, 81, 0, 76, + 69, 71, 73, 74, 73, 0, 74, 68, + 61, 62, 64, 66, 61, 69, 73, 73, + 69, 71, 73, 74, 66, 68, 62, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance114.scd b/sound_algo/palette/melodies/short/mTrance114.scd new file mode 100644 index 0000000..78cd99e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance114 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance114 = [ + 67, 69, 71, 72, 84, 62, 76, 69, + 65, 67, 69, 71, 0, 60, 74, 62, + 60, 62, 64, 65, 0, 62, 67, 0, + 62, 64, 65, 67, 60, 0, 69, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance115.scd b/sound_algo/palette/melodies/short/mTrance115.scd new file mode 100644 index 0000000..d6d664a --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance115 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance115 = [ + 69, 71, 72, 74, 60, 64, 83, 69, + 67, 69, 71, 72, 0, 81, 71, 81, + 71, 72, 74, 76, 60, 83, 83, 60, + 72, 67, 0, 60, 60, 72, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance116.scd b/sound_algo/palette/melodies/short/mTrance116.scd new file mode 100644 index 0000000..ffc77ec --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance116 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance116 = [ + 62, 65, 66, 68, 78, 0, 0, 0, + 68, 69, 71, 73, 78, 68, 71, 0, + 68, 69, 71, 73, 66, 74, 77, 77, + 0, 0, 61, 83, 0, 71, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance117.scd b/sound_algo/palette/melodies/short/mTrance117.scd new file mode 100644 index 0000000..b0f908e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance117 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance117 = [ + 61, 62, 64, 66, 74, 0, 0, 78, + 64, 66, 68, 69, 61, 74, 76, 0, + 61, 62, 64, 66, 0, 0, 64, 62, + 69, 80, 0, 73, 0, 61, 61, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance118.scd b/sound_algo/palette/melodies/short/mTrance118.scd new file mode 100644 index 0000000..7d88f82 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance118 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance118 = [ + 64, 66, 68, 69, 81, 78, 74, 80, + 78, 0, 78, 61, 61, 81, 76, 69, + 64, 66, 68, 69, 69, 69, 73, 83, + 64, 66, 68, 69, 0, 68, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance119.scd b/sound_algo/palette/melodies/short/mTrance119.scd new file mode 100644 index 0000000..71d5a82 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance119 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance119 = [ + 73, 69, 66, 0, 66, 76, 0, 68, + 64, 66, 68, 69, 78, 76, 61, 62, + 61, 62, 64, 66, 83, 83, 0, 62, + 69, 71, 73, 74, 73, 83, 64, 68 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance120.scd b/sound_algo/palette/melodies/short/mTrance120.scd new file mode 100644 index 0000000..039749c --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance120 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance120 = [ + 66, 68, 69, 71, 81, 74, 74, 74, + 61, 0, 74, 68, 78, 0, 66, 0, + 61, 62, 64, 66, 78, 76, 68, 0, + 61, 62, 64, 66, 80, 64, 78, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance121.scd b/sound_algo/palette/melodies/short/mTrance121.scd new file mode 100644 index 0000000..dd42feb --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance121 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance121 = [ + 71, 72, 74, 76, 76, 69, 71, 60, + 71, 72, 74, 76, 72, 67, 0, 74, + 65, 67, 69, 71, 0, 83, 81, 74, + 0, 81, 0, 0, 0, 74, 0, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance122.scd b/sound_algo/palette/melodies/short/mTrance122.scd new file mode 100644 index 0000000..54ec764 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance122 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance122 = [ + 69, 71, 73, 74, 62, 68, 81, 0, + 62, 65, 66, 68, 66, 62, 83, 68, + 68, 69, 71, 73, 73, 74, 83, 77, + 69, 71, 73, 74, 81, 68, 0, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance123.scd b/sound_algo/palette/melodies/short/mTrance123.scd new file mode 100644 index 0000000..c8b22fa --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance123 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance123 = [ + 65, 68, 69, 71, 69, 0, 64, 74, + 60, 62, 64, 65, 72, 77, 77, 80, + 60, 62, 64, 65, 84, 72, 76, 62, + 71, 0, 68, 77, 60, 83, 71, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance124.scd b/sound_algo/palette/melodies/short/mTrance124.scd new file mode 100644 index 0000000..ffcd39c --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance124 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance124 = [ + 66, 68, 69, 71, 66, 66, 66, 61, + 80, 80, 62, 71, 78, 0, 69, 0, + 71, 73, 74, 77, 69, 73, 66, 81, + 71, 73, 74, 77, 78, 68, 80, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance125.scd b/sound_algo/palette/melodies/short/mTrance125.scd new file mode 100644 index 0000000..330928f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance125 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance125 = [ + 71, 73, 74, 77, 61, 77, 71, 65, + 65, 66, 68, 69, 61, 0, 73, 83, + 61, 62, 65, 66, 66, 62, 62, 66, + 69, 71, 73, 74, 78, 81, 80, 61 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance126.scd b/sound_algo/palette/melodies/short/mTrance126.scd new file mode 100644 index 0000000..8d84d18 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance126 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance126 = [ + 62, 81, 73, 81, 78, 69, 83, 0, + 62, 66, 61, 81, 69, 68, 0, 0, + 68, 69, 71, 73, 61, 78, 69, 62, + 68, 69, 71, 73, 77, 77, 74, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance127.scd b/sound_algo/palette/melodies/short/mTrance127.scd new file mode 100644 index 0000000..64607c7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance127 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance127 = [ + 65, 73, 74, 71, 81, 73, 78, 73, + 65, 66, 68, 69, 61, 66, 62, 80, + 69, 71, 73, 74, 61, 77, 65, 0, + 62, 65, 66, 68, 69, 65, 62, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance128.scd b/sound_algo/palette/melodies/short/mTrance128.scd new file mode 100644 index 0000000..2213827 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance128 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance128 = [ + 69, 62, 81, 84, 0, 69, 64, 74, + 69, 71, 72, 74, 64, 83, 83, 76, + 65, 68, 69, 71, 72, 83, 83, 0, + 62, 64, 65, 68, 0, 60, 74, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance129.scd b/sound_algo/palette/melodies/short/mTrance129.scd new file mode 100644 index 0000000..04f76c5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance129 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance129 = [ + 71, 72, 74, 76, 74, 81, 0, 76, + 64, 0, 0, 83, 72, 84, 69, 83, + 67, 69, 71, 72, 69, 60, 0, 79, + 65, 67, 69, 71, 84, 81, 72, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance130.scd b/sound_algo/palette/melodies/short/mTrance130.scd new file mode 100644 index 0000000..befb81e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance130 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance130 = [ + 80, 65, 0, 68, 81, 61, 61, 81, + 66, 62, 68, 81, 69, 83, 83, 0, + 69, 0, 80, 66, 81, 0, 0, 0, + 66, 68, 69, 71, 0, 65, 69, 73 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance131.scd b/sound_algo/palette/melodies/short/mTrance131.scd new file mode 100644 index 0000000..45557f6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance131 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance131 = [ + 60, 62, 64, 65, 84, 60, 80, 60, + 60, 62, 64, 65, 0, 77, 69, 0, + 71, 72, 74, 76, 69, 0, 0, 62, + 84, 64, 84, 81, 0, 60, 83, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance132.scd b/sound_algo/palette/melodies/short/mTrance132.scd new file mode 100644 index 0000000..70b0b1f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance132 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance132 = [ + 65, 66, 68, 69, 80, 65, 74, 69, + 61, 62, 65, 66, 0, 78, 68, 61, + 66, 68, 69, 71, 81, 62, 78, 62, + 68, 69, 71, 73, 0, 81, 69, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance133.scd b/sound_algo/palette/melodies/short/mTrance133.scd new file mode 100644 index 0000000..d8c5c58 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance133 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance133 = [ + 69, 71, 73, 74, 66, 0, 80, 80, + 0, 66, 68, 80, 0, 66, 71, 71, + 69, 71, 73, 74, 73, 64, 0, 62, + 62, 64, 66, 68, 69, 0, 80, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance134.scd b/sound_algo/palette/melodies/short/mTrance134.scd new file mode 100644 index 0000000..344dc9f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance134 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance134 = [ + 61, 62, 65, 66, 73, 77, 74, 83, + 71, 73, 74, 77, 71, 65, 80, 69, + 66, 68, 69, 71, 61, 83, 80, 61, + 65, 66, 68, 69, 0, 62, 73, 78 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance135.scd b/sound_algo/palette/melodies/short/mTrance135.scd new file mode 100644 index 0000000..6a008f6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance135 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance135 = [ + 60, 62, 64, 65, 60, 81, 0, 65, + 69, 71, 72, 74, 84, 74, 84, 60, + 60, 62, 64, 65, 64, 83, 0, 64, + 69, 71, 72, 74, 0, 62, 69, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance136.scd b/sound_algo/palette/melodies/short/mTrance136.scd new file mode 100644 index 0000000..7119152 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance136 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance136 = [ + 61, 62, 64, 66, 69, 61, 0, 0, + 61, 71, 78, 0, 76, 83, 73, 76, + 61, 62, 64, 66, 83, 80, 68, 76, + 61, 62, 64, 66, 0, 83, 76, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance137.scd b/sound_algo/palette/melodies/short/mTrance137.scd new file mode 100644 index 0000000..4efcfc6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance137 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance137 = [ + 0, 0, 71, 81, 0, 66, 65, 74, + 69, 71, 73, 74, 73, 0, 66, 77, + 69, 71, 73, 74, 71, 83, 68, 0, + 66, 68, 69, 71, 81, 74, 61, 73 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance138.scd b/sound_algo/palette/melodies/short/mTrance138.scd new file mode 100644 index 0000000..1a6f66f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance138 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance138 = [ + 71, 73, 74, 76, 66, 0, 68, 0, + 62, 64, 66, 68, 83, 80, 62, 69, + 0, 71, 80, 83, 80, 68, 81, 76, + 62, 64, 66, 68, 83, 71, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance139.scd b/sound_algo/palette/melodies/short/mTrance139.scd new file mode 100644 index 0000000..9e860b0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance139 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance139 = [ + 68, 69, 71, 72, 69, 71, 69, 0, + 69, 0, 83, 0, 68, 69, 0, 62, + 84, 77, 0, 76, 64, 0, 0, 69, + 60, 62, 64, 65, 81, 0, 77, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance140.scd b/sound_algo/palette/melodies/short/mTrance140.scd new file mode 100644 index 0000000..5ac019b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance140 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance140 = [ + 62, 65, 66, 68, 71, 0, 73, 83, + 69, 71, 73, 74, 0, 80, 81, 80, + 73, 65, 71, 71, 61, 61, 61, 0, + 66, 68, 69, 71, 61, 0, 78, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance141.scd b/sound_algo/palette/melodies/short/mTrance141.scd new file mode 100644 index 0000000..41fa323 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance141 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance141 = [ + 66, 68, 69, 71, 66, 0, 66, 69, + 62, 65, 66, 68, 66, 80, 77, 83, + 66, 68, 69, 71, 74, 65, 69, 0, + 81, 0, 0, 66, 69, 0, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance142.scd b/sound_algo/palette/melodies/short/mTrance142.scd new file mode 100644 index 0000000..7a0b754 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance142 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance142 = [ + 69, 71, 73, 74, 0, 74, 78, 0, + 73, 83, 80, 74, 73, 73, 64, 66, + 71, 73, 74, 76, 81, 68, 0, 78, + 71, 73, 74, 76, 78, 0, 69, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance143.scd b/sound_algo/palette/melodies/short/mTrance143.scd new file mode 100644 index 0000000..0fe7ba5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance143 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance143 = [ + 62, 64, 66, 68, 61, 69, 78, 81, + 61, 62, 64, 66, 61, 68, 0, 69, + 69, 71, 73, 74, 81, 71, 76, 0, + 62, 64, 66, 68, 0, 81, 64, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance144.scd b/sound_algo/palette/melodies/short/mTrance144.scd new file mode 100644 index 0000000..e9b6741 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance144 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance144 = [ + 64, 66, 68, 69, 61, 74, 62, 73, + 66, 68, 69, 71, 61, 69, 74, 73, + 66, 0, 0, 0, 80, 66, 62, 71, + 61, 62, 64, 66, 78, 83, 69, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance145.scd b/sound_algo/palette/melodies/short/mTrance145.scd new file mode 100644 index 0000000..1767a8c --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance145 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance145 = [ + 0, 68, 78, 0, 73, 68, 0, 83, + 71, 61, 69, 71, 66, 61, 71, 0, + 64, 66, 68, 69, 66, 61, 76, 61, + 66, 73, 66, 66, 0, 0, 74, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance146.scd b/sound_algo/palette/melodies/short/mTrance146.scd new file mode 100644 index 0000000..f7f52f3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance146 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance146 = [ + 0, 0, 0, 0, 81, 62, 0, 62, + 76, 76, 80, 0, 68, 84, 71, 74, + 64, 65, 68, 69, 64, 72, 65, 0, + 84, 0, 84, 65, 84, 0, 60, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance147.scd b/sound_algo/palette/melodies/short/mTrance147.scd new file mode 100644 index 0000000..d4725be --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance147 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance147 = [ + 69, 76, 81, 65, 76, 67, 62, 76, + 62, 64, 65, 67, 72, 71, 0, 76, + 65, 67, 69, 71, 0, 76, 62, 69, + 64, 65, 67, 69, 64, 64, 71, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance148.scd b/sound_algo/palette/melodies/short/mTrance148.scd new file mode 100644 index 0000000..db1b619 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance148 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance148 = [ + 65, 67, 69, 71, 83, 74, 77, 79, + 60, 62, 64, 65, 62, 72, 67, 67, + 60, 62, 64, 65, 0, 0, 83, 67, + 62, 64, 65, 67, 76, 0, 65, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance149.scd b/sound_algo/palette/melodies/short/mTrance149.scd new file mode 100644 index 0000000..15d983d --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance149 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance149 = [ + 62, 71, 0, 83, 65, 77, 81, 0, + 68, 69, 71, 73, 78, 68, 0, 61, + 81, 65, 73, 81, 81, 73, 65, 65, + 71, 73, 74, 77, 62, 0, 78, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance150.scd b/sound_algo/palette/melodies/short/mTrance150.scd new file mode 100644 index 0000000..69992da --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance150 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance150 = [ + 78, 0, 81, 78, 61, 69, 81, 0, + 65, 66, 68, 69, 0, 0, 66, 78, + 68, 69, 71, 73, 78, 80, 80, 81, + 69, 71, 73, 74, 83, 0, 61, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance151.scd b/sound_algo/palette/melodies/short/mTrance151.scd new file mode 100644 index 0000000..fb35a4c --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance151 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance151 = [ + 69, 71, 72, 74, 76, 64, 83, 64, + 62, 64, 65, 67, 0, 0, 60, 83, + 67, 84, 0, 74, 0, 76, 69, 72, + 64, 65, 67, 69, 65, 72, 76, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance152.scd b/sound_algo/palette/melodies/short/mTrance152.scd new file mode 100644 index 0000000..e426ec2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance152 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance152 = [ + 69, 0, 69, 60, 69, 64, 0, 77, + 64, 65, 67, 69, 0, 0, 64, 69, + 71, 72, 74, 76, 0, 64, 0, 77, + 0, 71, 69, 76, 74, 65, 62, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance153.scd b/sound_algo/palette/melodies/short/mTrance153.scd new file mode 100644 index 0000000..f9b8582 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance153 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance153 = [ + 62, 64, 66, 68, 62, 74, 71, 74, + 61, 76, 69, 74, 69, 83, 61, 71, + 69, 71, 73, 74, 78, 83, 68, 62, + 68, 69, 71, 73, 66, 68, 61, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance154.scd b/sound_algo/palette/melodies/short/mTrance154.scd new file mode 100644 index 0000000..094e8ab --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance154 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance154 = [ + 73, 76, 0, 80, 74, 62, 61, 71, + 71, 73, 74, 76, 66, 66, 0, 78, + 66, 68, 69, 71, 0, 64, 0, 0, + 62, 64, 66, 68, 73, 0, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance155.scd b/sound_algo/palette/melodies/short/mTrance155.scd new file mode 100644 index 0000000..b1e42fc --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance155 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance155 = [ + 65, 66, 68, 69, 65, 62, 74, 81, + 66, 74, 0, 66, 81, 74, 66, 65, + 71, 73, 74, 77, 73, 62, 71, 80, + 62, 65, 66, 68, 66, 73, 0, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance156.scd b/sound_algo/palette/melodies/short/mTrance156.scd new file mode 100644 index 0000000..d3511da --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance156 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance156 = [ + 71, 72, 74, 76, 64, 69, 62, 72, + 69, 71, 72, 74, 81, 68, 0, 76, + 65, 68, 69, 71, 76, 72, 60, 76, + 72, 69, 83, 71, 65, 81, 68, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance157.scd b/sound_algo/palette/melodies/short/mTrance157.scd new file mode 100644 index 0000000..2c65c08 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance157 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance157 = [ + 69, 81, 78, 81, 66, 61, 65, 0, + 78, 61, 74, 74, 0, 62, 0, 74, + 62, 65, 66, 68, 80, 83, 0, 0, + 65, 66, 68, 69, 81, 71, 0, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance158.scd b/sound_algo/palette/melodies/short/mTrance158.scd new file mode 100644 index 0000000..5440085 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance158 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance158 = [ + 71, 72, 74, 76, 74, 0, 0, 0, + 68, 69, 71, 72, 0, 84, 60, 84, + 62, 64, 65, 68, 74, 0, 84, 68, + 69, 71, 72, 74, 83, 69, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance159.scd b/sound_algo/palette/melodies/short/mTrance159.scd new file mode 100644 index 0000000..294f59a --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance159 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance159 = [ + 64, 65, 68, 69, 60, 83, 65, 72, + 65, 68, 69, 71, 0, 80, 64, 62, + 64, 65, 68, 69, 72, 71, 74, 80, + 69, 69, 64, 77, 69, 83, 71, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance160.scd b/sound_algo/palette/melodies/short/mTrance160.scd new file mode 100644 index 0000000..a63c9c0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance160 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance160 = [ + 66, 68, 69, 71, 0, 83, 80, 0, + 66, 68, 69, 71, 69, 0, 61, 73, + 69, 71, 73, 74, 81, 77, 0, 61, + 65, 66, 68, 69, 61, 74, 69, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance161.scd b/sound_algo/palette/melodies/short/mTrance161.scd new file mode 100644 index 0000000..c2f401c --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance161 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance161 = [ + 65, 66, 68, 69, 61, 73, 65, 71, + 68, 69, 71, 73, 0, 71, 69, 77, + 80, 61, 74, 66, 66, 78, 65, 62, + 71, 73, 74, 77, 0, 68, 83, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance162.scd b/sound_algo/palette/melodies/short/mTrance162.scd new file mode 100644 index 0000000..7ab05da --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance162 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance162 = [ + 64, 0, 83, 64, 76, 74, 84, 77, + 71, 72, 74, 76, 0, 0, 84, 76, + 71, 72, 74, 76, 84, 71, 0, 64, + 65, 69, 83, 81, 72, 0, 84, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance163.scd b/sound_algo/palette/melodies/short/mTrance163.scd new file mode 100644 index 0000000..d82a448 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance163 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance163 = [ + 66, 71, 0, 66, 0, 78, 0, 74, + 81, 80, 83, 66, 81, 62, 81, 61, + 62, 64, 66, 68, 0, 66, 61, 80, + 66, 68, 69, 71, 0, 80, 71, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance164.scd b/sound_algo/palette/melodies/short/mTrance164.scd new file mode 100644 index 0000000..1524cbe --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance164 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance164 = [ + 69, 71, 73, 74, 69, 83, 0, 0, + 65, 66, 68, 69, 0, 73, 69, 62, + 62, 65, 66, 68, 0, 65, 83, 77, + 71, 73, 74, 77, 68, 80, 62, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance165.scd b/sound_algo/palette/melodies/short/mTrance165.scd new file mode 100644 index 0000000..b70ad9f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance165 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance165 = [ + 60, 77, 60, 65, 72, 64, 0, 62, + 69, 74, 65, 81, 72, 60, 71, 81, + 76, 80, 0, 64, 68, 0, 81, 69, + 84, 83, 69, 84, 62, 84, 77, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance166.scd b/sound_algo/palette/melodies/short/mTrance166.scd new file mode 100644 index 0000000..585e632 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance166 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance166 = [ + 68, 69, 71, 72, 72, 80, 74, 65, + 60, 62, 64, 65, 69, 83, 71, 0, + 69, 71, 72, 74, 83, 0, 0, 80, + 60, 62, 64, 65, 80, 76, 68, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance167.scd b/sound_algo/palette/melodies/short/mTrance167.scd new file mode 100644 index 0000000..fb2e54e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance167 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance167 = [ + 61, 62, 64, 66, 0, 66, 69, 73, + 66, 68, 69, 71, 78, 61, 68, 71, + 66, 68, 69, 71, 81, 76, 81, 81, + 71, 73, 74, 76, 69, 62, 64, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance168.scd b/sound_algo/palette/melodies/short/mTrance168.scd new file mode 100644 index 0000000..958912d --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance168 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance168 = [ + 69, 71, 73, 74, 69, 80, 0, 0, + 61, 62, 65, 66, 69, 71, 65, 0, + 62, 65, 66, 68, 61, 65, 77, 62, + 61, 62, 65, 66, 0, 65, 61, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance169.scd b/sound_algo/palette/melodies/short/mTrance169.scd new file mode 100644 index 0000000..6d34b66 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance169 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance169 = [ + 64, 69, 69, 69, 60, 77, 84, 84, + 72, 71, 0, 80, 72, 74, 84, 0, + 68, 69, 71, 72, 76, 72, 74, 0, + 0, 60, 76, 0, 60, 76, 81, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance170.scd b/sound_algo/palette/melodies/short/mTrance170.scd new file mode 100644 index 0000000..98014f2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance170 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance170 = [ + 0, 68, 68, 61, 78, 0, 68, 64, + 66, 68, 69, 71, 69, 66, 61, 61, + 71, 73, 74, 76, 78, 0, 62, 61, + 83, 76, 78, 66, 73, 76, 81, 73 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance171.scd b/sound_algo/palette/melodies/short/mTrance171.scd new file mode 100644 index 0000000..7ae58b6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance171 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance171 = [ + 62, 64, 65, 67, 76, 77, 71, 62, + 72, 62, 62, 77, 79, 74, 76, 0, + 67, 69, 71, 72, 72, 72, 76, 67, + 71, 72, 74, 76, 81, 81, 81, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance172.scd b/sound_algo/palette/melodies/short/mTrance172.scd new file mode 100644 index 0000000..2a1ee39 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance172 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance172 = [ + 60, 62, 64, 65, 72, 84, 65, 64, + 62, 64, 65, 67, 64, 69, 62, 62, + 64, 65, 67, 69, 72, 65, 71, 60, + 74, 62, 79, 0, 0, 84, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance173.scd b/sound_algo/palette/melodies/short/mTrance173.scd new file mode 100644 index 0000000..2ace76b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance173 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance173 = [ + 65, 0, 79, 0, 81, 84, 64, 0, + 0, 65, 0, 83, 0, 62, 60, 79, + 65, 0, 83, 65, 62, 71, 64, 0, + 60, 62, 64, 65, 79, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance174.scd b/sound_algo/palette/melodies/short/mTrance174.scd new file mode 100644 index 0000000..931fa15 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance174 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance174 = [ + 68, 68, 83, 64, 69, 71, 0, 74, + 71, 72, 74, 76, 81, 80, 74, 62, + 62, 64, 65, 68, 60, 0, 68, 77, + 62, 76, 65, 62, 60, 71, 65, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance175.scd b/sound_algo/palette/melodies/short/mTrance175.scd new file mode 100644 index 0000000..b1b4808 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance175 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance175 = [ + 71, 72, 74, 76, 0, 0, 64, 0, + 69, 71, 72, 74, 69, 74, 83, 0, + 60, 62, 64, 65, 0, 76, 83, 76, + 0, 62, 0, 60, 72, 0, 81, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance176.scd b/sound_algo/palette/melodies/short/mTrance176.scd new file mode 100644 index 0000000..e9e3893 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance176 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance176 = [ + 61, 62, 65, 66, 78, 83, 0, 74, + 61, 62, 73, 69, 61, 65, 78, 73, + 71, 73, 74, 77, 0, 61, 74, 77, + 61, 62, 65, 66, 61, 73, 66, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance177.scd b/sound_algo/palette/melodies/short/mTrance177.scd new file mode 100644 index 0000000..2adb3f5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance177 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance177 = [ + 69, 71, 72, 74, 65, 0, 0, 83, + 68, 69, 71, 72, 0, 77, 71, 0, + 62, 64, 65, 68, 0, 84, 0, 60, + 64, 65, 68, 69, 84, 81, 81, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance178.scd b/sound_algo/palette/melodies/short/mTrance178.scd new file mode 100644 index 0000000..f6189a4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance178 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance178 = [ + 79, 81, 0, 0, 64, 84, 72, 81, + 60, 62, 64, 65, 76, 0, 74, 60, + 67, 69, 71, 72, 0, 83, 0, 0, + 67, 69, 71, 72, 0, 74, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance179.scd b/sound_algo/palette/melodies/short/mTrance179.scd new file mode 100644 index 0000000..357d6b7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance179 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance179 = [ + 81, 77, 0, 65, 69, 0, 79, 0, + 67, 69, 71, 72, 76, 69, 67, 72, + 65, 79, 62, 67, 0, 81, 72, 62, + 0, 69, 77, 60, 69, 0, 74, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance180.scd b/sound_algo/palette/melodies/short/mTrance180.scd new file mode 100644 index 0000000..4f4608a --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance180 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance180 = [ + 65, 68, 69, 71, 65, 84, 71, 69, + 64, 65, 68, 69, 0, 81, 84, 0, + 62, 64, 65, 68, 69, 0, 83, 64, + 60, 62, 64, 65, 81, 69, 60, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance181.scd b/sound_algo/palette/melodies/short/mTrance181.scd new file mode 100644 index 0000000..4da9194 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance181 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance181 = [ + 62, 64, 66, 68, 66, 78, 62, 62, + 71, 73, 74, 76, 69, 74, 68, 74, + 64, 66, 68, 69, 61, 0, 76, 61, + 61, 62, 64, 66, 73, 81, 66, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance182.scd b/sound_algo/palette/melodies/short/mTrance182.scd new file mode 100644 index 0000000..0aefb6f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance182 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance182 = [ + 69, 71, 72, 74, 0, 76, 72, 65, + 62, 64, 65, 67, 0, 60, 69, 76, + 64, 65, 67, 69, 81, 74, 0, 76, + 69, 71, 72, 74, 79, 71, 83, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance183.scd b/sound_algo/palette/melodies/short/mTrance183.scd new file mode 100644 index 0000000..edfad9a --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance183 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance183 = [ + 67, 69, 71, 72, 60, 74, 79, 0, + 71, 72, 74, 76, 84, 0, 67, 76, + 62, 64, 65, 67, 64, 62, 81, 77, + 0, 60, 84, 69, 77, 0, 71, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance184.scd b/sound_algo/palette/melodies/short/mTrance184.scd new file mode 100644 index 0000000..73f0bf5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance184.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance184 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance184 = [ + 66, 64, 74, 76, 81, 64, 81, 68, + 61, 62, 64, 66, 61, 66, 0, 62, + 69, 62, 0, 76, 61, 73, 81, 64, + 66, 68, 69, 71, 69, 83, 71, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance185.scd b/sound_algo/palette/melodies/short/mTrance185.scd new file mode 100644 index 0000000..b574233 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance185.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance185 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance185 = [ + 68, 69, 71, 73, 69, 83, 61, 68, + 61, 62, 64, 66, 78, 64, 76, 0, + 68, 69, 71, 73, 69, 74, 0, 80, + 0, 81, 73, 73, 66, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance186.scd b/sound_algo/palette/melodies/short/mTrance186.scd new file mode 100644 index 0000000..fb3b162 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance186.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance186 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance186 = [ + 68, 69, 71, 73, 81, 81, 71, 73, + 61, 62, 65, 66, 66, 0, 69, 62, + 69, 71, 73, 74, 81, 0, 81, 0, + 62, 65, 66, 68, 0, 65, 68, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance187.scd b/sound_algo/palette/melodies/short/mTrance187.scd new file mode 100644 index 0000000..3ee1705 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance187.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance187 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance187 = [ + 71, 72, 74, 76, 60, 67, 60, 76, + 62, 65, 65, 64, 72, 76, 83, 60, + 76, 72, 69, 71, 71, 0, 71, 0, + 69, 71, 72, 74, 60, 71, 83, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance188.scd b/sound_algo/palette/melodies/short/mTrance188.scd new file mode 100644 index 0000000..4e50e0b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance188.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance188 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance188 = [ + 71, 72, 74, 76, 81, 64, 77, 0, + 68, 69, 71, 72, 69, 60, 84, 62, + 62, 64, 65, 68, 64, 64, 64, 65, + 71, 72, 74, 76, 84, 68, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance189.scd b/sound_algo/palette/melodies/short/mTrance189.scd new file mode 100644 index 0000000..c951e0c --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance189.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance189 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance189 = [ + 65, 71, 68, 61, 0, 69, 83, 69, + 65, 66, 68, 69, 77, 73, 68, 61, + 78, 62, 73, 74, 61, 71, 81, 78, + 65, 66, 68, 69, 81, 74, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance190.scd b/sound_algo/palette/melodies/short/mTrance190.scd new file mode 100644 index 0000000..be806ba --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance190.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance190 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance190 = [ + 71, 73, 74, 76, 83, 61, 66, 81, + 66, 68, 69, 71, 61, 78, 66, 71, + 62, 64, 64, 83, 68, 0, 81, 74, + 71, 73, 74, 76, 76, 68, 64, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance191.scd b/sound_algo/palette/melodies/short/mTrance191.scd new file mode 100644 index 0000000..f6ea147 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance191.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance191 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance191 = [ + 60, 62, 64, 65, 81, 74, 77, 60, + 62, 64, 65, 68, 0, 65, 0, 64, + 76, 76, 84, 62, 69, 0, 81, 72, + 69, 71, 72, 74, 60, 80, 77, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance192.scd b/sound_algo/palette/melodies/short/mTrance192.scd new file mode 100644 index 0000000..72b4e55 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance192.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance192 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance192 = [ + 0, 71, 71, 62, 73, 69, 76, 68, + 80, 0, 66, 0, 80, 80, 80, 71, + 64, 66, 68, 69, 81, 83, 61, 78, + 61, 62, 64, 66, 61, 73, 0, 61 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance193.scd b/sound_algo/palette/melodies/short/mTrance193.scd new file mode 100644 index 0000000..5b6067b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance193.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance193 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance193 = [ + 61, 62, 64, 66, 81, 68, 0, 61, + 66, 78, 69, 0, 78, 62, 61, 76, + 69, 71, 73, 74, 66, 0, 62, 78, + 73, 68, 66, 76, 78, 74, 73, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance194.scd b/sound_algo/palette/melodies/short/mTrance194.scd new file mode 100644 index 0000000..f68f239 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance194.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance194 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance194 = [ + 62, 65, 66, 68, 69, 65, 68, 71, + 0, 0, 77, 81, 69, 69, 81, 0, + 66, 71, 81, 74, 0, 0, 0, 61, + 61, 62, 65, 66, 81, 73, 69, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance195.scd b/sound_algo/palette/melodies/short/mTrance195.scd new file mode 100644 index 0000000..58fade4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance195.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance195 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance195 = [ + 62, 64, 65, 68, 83, 0, 0, 60, + 71, 72, 74, 76, 72, 62, 0, 0, + 64, 0, 76, 0, 0, 64, 80, 80, + 84, 72, 0, 74, 76, 84, 60, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance196.scd b/sound_algo/palette/melodies/short/mTrance196.scd new file mode 100644 index 0000000..3e544d1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance196.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance196 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance196 = [ + 64, 66, 68, 69, 69, 78, 71, 76, + 68, 69, 71, 73, 66, 61, 81, 69, + 68, 69, 71, 73, 0, 64, 78, 0, + 69, 80, 61, 66, 78, 0, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance197.scd b/sound_algo/palette/melodies/short/mTrance197.scd new file mode 100644 index 0000000..5a7cff9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance197.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance197 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance197 = [ + 65, 66, 68, 69, 71, 73, 81, 80, + 83, 0, 81, 0, 66, 62, 73, 69, + 71, 73, 74, 77, 69, 71, 77, 65, + 68, 69, 71, 73, 66, 66, 61, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance198.scd b/sound_algo/palette/melodies/short/mTrance198.scd new file mode 100644 index 0000000..9efe335 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance198.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance198 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance198 = [ + 74, 65, 69, 0, 0, 0, 73, 62, + 81, 61, 0, 83, 73, 78, 74, 62, + 65, 66, 68, 69, 61, 81, 83, 68, + 65, 66, 68, 69, 0, 68, 66, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance199.scd b/sound_algo/palette/melodies/short/mTrance199.scd new file mode 100644 index 0000000..505c74b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance199.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance199 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance199 = [ + 66, 74, 66, 71, 80, 66, 83, 71, + 64, 66, 68, 69, 69, 71, 71, 66, + 0, 69, 64, 66, 69, 0, 74, 0, + 62, 64, 66, 68, 81, 76, 62, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance200.scd b/sound_algo/palette/melodies/short/mTrance200.scd new file mode 100644 index 0000000..e12629c --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance200.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance200 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance200 = [ + 62, 65, 66, 68, 81, 68, 0, 0, + 71, 73, 74, 77, 81, 73, 81, 74, + 66, 68, 69, 71, 61, 0, 80, 68, + 66, 68, 69, 71, 61, 61, 71, 74 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance201.scd b/sound_algo/palette/melodies/short/mTrance201.scd new file mode 100644 index 0000000..2357eaf --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance201.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance201 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance201 = [ + 0, 60, 65, 60, 76, 0, 77, 83, + 60, 65, 76, 64, 77, 69, 76, 64, + 64, 65, 67, 69, 64, 0, 76, 71, + 72, 83, 0, 0, 69, 0, 64, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance202.scd b/sound_algo/palette/melodies/short/mTrance202.scd new file mode 100644 index 0000000..c867815 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance202.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance202 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance202 = [ + 64, 66, 68, 69, 0, 0, 0, 71, + 62, 64, 66, 68, 73, 71, 0, 71, + 64, 66, 68, 69, 69, 0, 74, 62, + 64, 66, 68, 69, 69, 69, 76, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance203.scd b/sound_algo/palette/melodies/short/mTrance203.scd new file mode 100644 index 0000000..856ba35 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance203.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance203 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance203 = [ + 65, 66, 68, 69, 81, 78, 0, 74, + 71, 73, 74, 77, 69, 73, 78, 71, + 62, 65, 66, 68, 81, 74, 83, 78, + 71, 73, 74, 77, 80, 81, 66, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance204.scd b/sound_algo/palette/melodies/short/mTrance204.scd new file mode 100644 index 0000000..f5e1558 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance204.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance204 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance204 = [ + 69, 71, 73, 74, 77, 0, 80, 69, + 66, 61, 68, 61, 66, 65, 68, 68, + 62, 65, 66, 68, 69, 65, 0, 73, + 66, 68, 69, 71, 69, 0, 65, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance205.scd b/sound_algo/palette/melodies/short/mTrance205.scd new file mode 100644 index 0000000..fe35269 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance205.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance205 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance205 = [ + 64, 65, 67, 69, 84, 65, 60, 81, + 65, 67, 69, 71, 0, 81, 79, 84, + 62, 64, 65, 67, 69, 60, 0, 64, + 62, 64, 65, 67, 0, 81, 71, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance206.scd b/sound_algo/palette/melodies/short/mTrance206.scd new file mode 100644 index 0000000..60a366c --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance206.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance206 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance206 = [ + 65, 68, 69, 71, 0, 60, 76, 77, + 81, 0, 64, 65, 0, 71, 62, 74, + 60, 62, 64, 65, 65, 60, 64, 71, + 84, 84, 76, 0, 72, 83, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance207.scd b/sound_algo/palette/melodies/short/mTrance207.scd new file mode 100644 index 0000000..c50e336 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance207.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance207 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance207 = [ + 73, 78, 83, 71, 61, 0, 80, 78, + 62, 64, 66, 68, 69, 78, 68, 81, + 66, 68, 69, 71, 61, 74, 64, 71, + 61, 62, 64, 66, 74, 0, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance208.scd b/sound_algo/palette/melodies/short/mTrance208.scd new file mode 100644 index 0000000..391f9d9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance208.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance208 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance208 = [ + 71, 73, 74, 77, 69, 62, 68, 0, + 61, 62, 65, 66, 78, 0, 81, 69, + 0, 0, 73, 66, 78, 68, 66, 71, + 66, 68, 69, 71, 0, 68, 66, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance209.scd b/sound_algo/palette/melodies/short/mTrance209.scd new file mode 100644 index 0000000..3943203 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance209.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance209 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance209 = [ + 60, 62, 64, 65, 64, 81, 79, 74, + 60, 62, 64, 65, 84, 83, 74, 77, + 65, 67, 69, 71, 64, 0, 74, 81, + 76, 60, 83, 60, 72, 72, 71, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance210.scd b/sound_algo/palette/melodies/short/mTrance210.scd new file mode 100644 index 0000000..d8edbe2 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance210.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance210 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance210 = [ + 83, 81, 83, 74, 0, 76, 66, 66, + 61, 0, 74, 76, 0, 71, 0, 74, + 73, 61, 64, 0, 78, 62, 0, 81, + 66, 68, 69, 71, 0, 0, 71, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance211.scd b/sound_algo/palette/melodies/short/mTrance211.scd new file mode 100644 index 0000000..9dde55f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance211.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance211 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance211 = [ + 76, 64, 0, 78, 81, 81, 0, 68, + 66, 68, 69, 71, 73, 80, 78, 71, + 62, 64, 66, 68, 80, 74, 76, 73, + 69, 71, 73, 74, 69, 73, 74, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance212.scd b/sound_algo/palette/melodies/short/mTrance212.scd new file mode 100644 index 0000000..4abbedf --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance212.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance212 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance212 = [ + 71, 73, 74, 76, 78, 74, 71, 0, + 62, 64, 66, 68, 71, 83, 0, 62, + 66, 64, 64, 76, 0, 80, 83, 68, + 61, 69, 73, 74, 81, 0, 66, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance213.scd b/sound_algo/palette/melodies/short/mTrance213.scd new file mode 100644 index 0000000..9bb486d --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance213.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance213 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance213 = [ + 64, 66, 68, 69, 80, 68, 68, 68, + 66, 68, 69, 71, 0, 80, 64, 0, + 64, 66, 68, 69, 0, 78, 83, 0, + 71, 73, 74, 76, 64, 68, 0, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance214.scd b/sound_algo/palette/melodies/short/mTrance214.scd new file mode 100644 index 0000000..bb8db64 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance214.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance214 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance214 = [ + 69, 71, 73, 74, 81, 62, 73, 80, + 69, 71, 73, 74, 81, 80, 77, 69, + 69, 71, 73, 74, 81, 74, 80, 66, + 61, 0, 0, 81, 69, 80, 80, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance215.scd b/sound_algo/palette/melodies/short/mTrance215.scd new file mode 100644 index 0000000..0c7f0e6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance215.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance215 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance215 = [ + 61, 62, 65, 66, 68, 0, 81, 0, + 65, 66, 68, 69, 0, 73, 0, 80, + 0, 80, 0, 68, 66, 0, 65, 83, + 80, 80, 71, 65, 71, 73, 80, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance216.scd b/sound_algo/palette/melodies/short/mTrance216.scd new file mode 100644 index 0000000..f660ff5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance216.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance216 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance216 = [ + 60, 62, 64, 65, 60, 65, 71, 84, + 60, 62, 64, 65, 84, 67, 76, 65, + 71, 72, 74, 76, 83, 74, 72, 71, + 81, 79, 0, 76, 84, 64, 72, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance217.scd b/sound_algo/palette/melodies/short/mTrance217.scd new file mode 100644 index 0000000..10c0db3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance217.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance217 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance217 = [ + 65, 67, 69, 71, 67, 71, 64, 74, + 65, 67, 69, 71, 69, 67, 65, 62, + 60, 62, 64, 65, 67, 69, 72, 71, + 60, 81, 60, 79, 64, 65, 69, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance218.scd b/sound_algo/palette/melodies/short/mTrance218.scd new file mode 100644 index 0000000..318abc0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance218.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance218 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance218 = [ + 62, 65, 66, 68, 61, 74, 61, 71, + 61, 62, 65, 66, 61, 61, 61, 74, + 81, 69, 0, 69, 0, 68, 62, 65, + 68, 69, 71, 73, 71, 66, 80, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance219.scd b/sound_algo/palette/melodies/short/mTrance219.scd new file mode 100644 index 0000000..1265b93 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance219.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance219 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance219 = [ + 66, 68, 69, 71, 78, 66, 66, 64, + 61, 64, 76, 83, 0, 69, 68, 71, + 71, 73, 74, 76, 81, 81, 69, 81, + 71, 73, 74, 76, 78, 66, 83, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance220.scd b/sound_algo/palette/melodies/short/mTrance220.scd new file mode 100644 index 0000000..a51c87d --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance220.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance220 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance220 = [ + 0, 0, 66, 0, 71, 62, 81, 0, + 68, 69, 71, 73, 0, 80, 66, 74, + 69, 71, 73, 74, 66, 0, 71, 77, + 69, 71, 73, 74, 0, 74, 0, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance221.scd b/sound_algo/palette/melodies/short/mTrance221.scd new file mode 100644 index 0000000..6f13a9e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance221.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance221 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance221 = [ + 69, 77, 77, 81, 71, 83, 74, 71, + 71, 73, 74, 77, 66, 73, 81, 61, + 71, 73, 74, 77, 0, 65, 68, 62, + 61, 62, 65, 66, 69, 80, 83, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance222.scd b/sound_algo/palette/melodies/short/mTrance222.scd new file mode 100644 index 0000000..329a05f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance222.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance222 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance222 = [ + 62, 64, 65, 67, 77, 77, 84, 67, + 64, 65, 67, 69, 76, 62, 0, 69, + 62, 79, 76, 76, 65, 67, 0, 84, + 65, 67, 69, 71, 81, 79, 62, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance223.scd b/sound_algo/palette/melodies/short/mTrance223.scd new file mode 100644 index 0000000..70ddfde --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance223.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance223 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance223 = [ + 62, 61, 0, 65, 0, 74, 71, 0, + 0, 74, 0, 62, 0, 66, 62, 0, + 62, 65, 66, 68, 0, 66, 61, 77, + 0, 83, 0, 66, 0, 62, 73, 80 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance224.scd b/sound_algo/palette/melodies/short/mTrance224.scd new file mode 100644 index 0000000..cf76aa9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance224.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance224 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance224 = [ + 65, 66, 68, 69, 68, 65, 73, 68, + 80, 77, 71, 74, 73, 62, 81, 0, + 69, 71, 73, 74, 0, 78, 69, 61, + 66, 68, 69, 71, 78, 69, 69, 78 +]; +) diff --git a/sound_algo/palette/melodies/short/mTrance225.scd b/sound_algo/palette/melodies/short/mTrance225.scd new file mode 100644 index 0000000..08a79e6 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTrance225.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTrance225 -- short melody (32 steps), genre: trance +// ===================================================================== +( +~mTrance225 = [ + 68, 69, 71, 73, 0, 61, 62, 78, + 69, 71, 73, 74, 66, 0, 78, 73, + 71, 73, 74, 77, 62, 78, 0, 66, + 74, 71, 0, 81, 61, 0, 78, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal100.scd b/sound_algo/palette/melodies/short/mTribal100.scd new file mode 100644 index 0000000..cae2acf --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal100 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal100 = [ + 60, 50, 0, 52, 43, 45, 0, 0, + 60, 50, 0, 52, 43, 45, 0, 0, + 60, 50, 0, 52, 43, 45, 0, 0, + 60, 50, 0, 52, 43, 45, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal101.scd b/sound_algo/palette/melodies/short/mTribal101.scd new file mode 100644 index 0000000..fc44c3f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal101 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal101 = [ + 50, 53, 60, 41, 36, 55, 50, 0, + 50, 53, 60, 41, 36, 55, 50, 0, + 50, 53, 60, 41, 36, 55, 50, 0, + 50, 53, 60, 41, 36, 55, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal102.scd b/sound_algo/palette/melodies/short/mTribal102.scd new file mode 100644 index 0000000..83f1e35 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal102 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal102 = [ + 60, 45, 55, 53, 0, 0, 0, 0, + 60, 45, 55, 53, 0, 0, 0, 0, + 60, 45, 55, 53, 0, 0, 0, 0, + 60, 45, 55, 53, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal103.scd b/sound_algo/palette/melodies/short/mTribal103.scd new file mode 100644 index 0000000..d95d38a --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal103 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal103 = [ + 0, 0, 0, 45, 0, 48, 43, 38, + 0, 0, 0, 45, 0, 48, 43, 38, + 0, 0, 0, 45, 0, 48, 43, 38, + 0, 0, 0, 45, 0, 48, 43, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal104.scd b/sound_algo/palette/melodies/short/mTribal104.scd new file mode 100644 index 0000000..517df98 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal104 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal104 = [ + 0, 55, 53, 41, 60, 55, 38, 53, + 0, 55, 53, 41, 60, 55, 38, 53, + 0, 55, 53, 41, 60, 55, 38, 53, + 0, 55, 53, 41, 60, 55, 38, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal105.scd b/sound_algo/palette/melodies/short/mTribal105.scd new file mode 100644 index 0000000..7fbe8fb --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal105 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal105 = [ + 0, 57, 0, 60, 0, 0, 60, 0, + 0, 57, 0, 60, 0, 0, 60, 0, + 0, 57, 0, 60, 0, 0, 60, 0, + 0, 57, 0, 60, 0, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal106.scd b/sound_algo/palette/melodies/short/mTribal106.scd new file mode 100644 index 0000000..1147b91 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal106 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal106 = [ + 36, 45, 43, 0, 0, 0, 48, 57, + 36, 45, 43, 0, 0, 0, 48, 57, + 36, 45, 43, 0, 0, 0, 48, 57, + 36, 45, 43, 0, 0, 0, 48, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal107.scd b/sound_algo/palette/melodies/short/mTribal107.scd new file mode 100644 index 0000000..d6ac001 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal107 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal107 = [ + 0, 0, 41, 38, 41, 48, 41, 50, + 0, 0, 41, 38, 41, 48, 41, 50, + 0, 0, 41, 38, 41, 48, 41, 50, + 0, 0, 41, 38, 41, 48, 41, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal108.scd b/sound_algo/palette/melodies/short/mTribal108.scd new file mode 100644 index 0000000..18b4a29 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal108 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal108 = [ + 0, 0, 45, 36, 50, 45, 40, 52, + 0, 0, 45, 36, 50, 45, 40, 52, + 0, 0, 45, 36, 50, 45, 40, 52, + 0, 0, 45, 36, 50, 45, 40, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal109.scd b/sound_algo/palette/melodies/short/mTribal109.scd new file mode 100644 index 0000000..8aa2229 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal109 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal109 = [ + 48, 50, 36, 0, 53, 0, 57, 0, + 48, 50, 36, 0, 53, 0, 57, 0, + 48, 50, 36, 0, 53, 0, 57, 0, + 48, 50, 36, 0, 53, 0, 57, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal110.scd b/sound_algo/palette/melodies/short/mTribal110.scd new file mode 100644 index 0000000..e2dcf29 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal110 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal110 = [ + 50, 52, 60, 0, 52, 40, 55, 52, + 50, 52, 60, 0, 52, 40, 55, 52, + 50, 52, 60, 0, 52, 40, 55, 52, + 50, 52, 60, 0, 52, 40, 55, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal111.scd b/sound_algo/palette/melodies/short/mTribal111.scd new file mode 100644 index 0000000..d60f82e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal111 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal111 = [ + 45, 0, 0, 60, 0, 0, 0, 45, + 45, 0, 0, 60, 0, 0, 0, 45, + 45, 0, 0, 60, 0, 0, 0, 45, + 45, 0, 0, 60, 0, 0, 0, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal112.scd b/sound_algo/palette/melodies/short/mTribal112.scd new file mode 100644 index 0000000..b8cdc38 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal112 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal112 = [ + 43, 40, 43, 50, 0, 50, 55, 0, + 43, 40, 43, 50, 0, 50, 55, 0, + 43, 40, 43, 50, 0, 50, 55, 0, + 43, 40, 43, 50, 0, 50, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal113.scd b/sound_algo/palette/melodies/short/mTribal113.scd new file mode 100644 index 0000000..901ab96 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal113 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal113 = [ + 50, 48, 38, 0, 50, 60, 57, 57, + 50, 48, 38, 0, 50, 60, 57, 57, + 50, 48, 38, 0, 50, 60, 57, 57, + 50, 48, 38, 0, 50, 60, 57, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal114.scd b/sound_algo/palette/melodies/short/mTribal114.scd new file mode 100644 index 0000000..9dbdd8f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal114 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal114 = [ + 43, 38, 0, 43, 48, 38, 41, 0, + 43, 38, 0, 43, 48, 38, 41, 0, + 43, 38, 0, 43, 48, 38, 41, 0, + 43, 38, 0, 43, 48, 38, 41, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal115.scd b/sound_algo/palette/melodies/short/mTribal115.scd new file mode 100644 index 0000000..6f3eb84 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal115 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal115 = [ + 36, 48, 55, 55, 52, 40, 55, 0, + 36, 48, 55, 55, 52, 40, 55, 0, + 36, 48, 55, 55, 52, 40, 55, 0, + 36, 48, 55, 55, 52, 40, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal116.scd b/sound_algo/palette/melodies/short/mTribal116.scd new file mode 100644 index 0000000..3d80ee9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal116 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal116 = [ + 0, 0, 36, 0, 57, 57, 52, 50, + 0, 0, 36, 0, 57, 57, 52, 50, + 0, 0, 36, 0, 57, 57, 52, 50, + 0, 0, 36, 0, 57, 57, 52, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal117.scd b/sound_algo/palette/melodies/short/mTribal117.scd new file mode 100644 index 0000000..e5d0652 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal117 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal117 = [ + 36, 36, 0, 60, 36, 0, 48, 0, + 36, 36, 0, 60, 36, 0, 48, 0, + 36, 36, 0, 60, 36, 0, 48, 0, + 36, 36, 0, 60, 36, 0, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal118.scd b/sound_algo/palette/melodies/short/mTribal118.scd new file mode 100644 index 0000000..b42e542 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal118 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal118 = [ + 57, 0, 55, 0, 50, 40, 43, 45, + 57, 0, 55, 0, 50, 40, 43, 45, + 57, 0, 55, 0, 50, 40, 43, 45, + 57, 0, 55, 0, 50, 40, 43, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal119.scd b/sound_algo/palette/melodies/short/mTribal119.scd new file mode 100644 index 0000000..812c23b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal119 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal119 = [ + 0, 0, 53, 0, 50, 43, 48, 0, + 0, 0, 53, 0, 50, 43, 48, 0, + 0, 0, 53, 0, 50, 43, 48, 0, + 0, 0, 53, 0, 50, 43, 48, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal120.scd b/sound_algo/palette/melodies/short/mTribal120.scd new file mode 100644 index 0000000..6b2c737 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal120 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal120 = [ + 38, 0, 57, 40, 40, 0, 45, 45, + 38, 0, 57, 40, 40, 0, 45, 45, + 38, 0, 57, 40, 40, 0, 45, 45, + 38, 0, 57, 40, 40, 0, 45, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal121.scd b/sound_algo/palette/melodies/short/mTribal121.scd new file mode 100644 index 0000000..6d41be8 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal121 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal121 = [ + 0, 50, 45, 38, 43, 57, 41, 57, + 0, 50, 45, 38, 43, 57, 41, 57, + 0, 50, 45, 38, 43, 57, 41, 57, + 0, 50, 45, 38, 43, 57, 41, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal122.scd b/sound_algo/palette/melodies/short/mTribal122.scd new file mode 100644 index 0000000..10e1dae --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal122 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal122 = [ + 60, 0, 43, 48, 0, 55, 57, 45, + 60, 0, 43, 48, 0, 55, 57, 45, + 60, 0, 43, 48, 0, 55, 57, 45, + 60, 0, 43, 48, 0, 55, 57, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal123.scd b/sound_algo/palette/melodies/short/mTribal123.scd new file mode 100644 index 0000000..c3d77f4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal123 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal123 = [ + 41, 57, 45, 60, 50, 45, 0, 41, + 41, 57, 45, 60, 50, 45, 0, 41, + 41, 57, 45, 60, 50, 45, 0, 41, + 41, 57, 45, 60, 50, 45, 0, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal124.scd b/sound_algo/palette/melodies/short/mTribal124.scd new file mode 100644 index 0000000..329b552 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal124 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal124 = [ + 0, 57, 43, 0, 0, 0, 0, 43, + 0, 57, 43, 0, 0, 0, 0, 43, + 0, 57, 43, 0, 0, 0, 0, 43, + 0, 57, 43, 0, 0, 0, 0, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal125.scd b/sound_algo/palette/melodies/short/mTribal125.scd new file mode 100644 index 0000000..e606c1e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal125 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal125 = [ + 52, 48, 60, 36, 0, 48, 0, 60, + 52, 48, 60, 36, 0, 48, 0, 60, + 52, 48, 60, 36, 0, 48, 0, 60, + 52, 48, 60, 36, 0, 48, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal126.scd b/sound_algo/palette/melodies/short/mTribal126.scd new file mode 100644 index 0000000..be0ae5f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal126 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal126 = [ + 0, 48, 55, 55, 40, 48, 57, 50, + 0, 48, 55, 55, 40, 48, 57, 50, + 0, 48, 55, 55, 40, 48, 57, 50, + 0, 48, 55, 55, 40, 48, 57, 50 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal127.scd b/sound_algo/palette/melodies/short/mTribal127.scd new file mode 100644 index 0000000..eaa3c2b --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal127 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal127 = [ + 57, 52, 43, 38, 40, 0, 40, 0, + 57, 52, 43, 38, 40, 0, 40, 0, + 57, 52, 43, 38, 40, 0, 40, 0, + 57, 52, 43, 38, 40, 0, 40, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal128.scd b/sound_algo/palette/melodies/short/mTribal128.scd new file mode 100644 index 0000000..cffedac --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal128 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal128 = [ + 45, 45, 0, 52, 36, 52, 55, 0, + 45, 45, 0, 52, 36, 52, 55, 0, + 45, 45, 0, 52, 36, 52, 55, 0, + 45, 45, 0, 52, 36, 52, 55, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal129.scd b/sound_algo/palette/melodies/short/mTribal129.scd new file mode 100644 index 0000000..f2dceee --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal129 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal129 = [ + 0, 0, 0, 55, 45, 57, 0, 53, + 0, 0, 0, 55, 45, 57, 0, 53, + 0, 0, 0, 55, 45, 57, 0, 53, + 0, 0, 0, 55, 45, 57, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal130.scd b/sound_algo/palette/melodies/short/mTribal130.scd new file mode 100644 index 0000000..8c8daee --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal130 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal130 = [ + 57, 40, 0, 0, 50, 0, 0, 0, + 57, 40, 0, 0, 50, 0, 0, 0, + 57, 40, 0, 0, 50, 0, 0, 0, + 57, 40, 0, 0, 50, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal131.scd b/sound_algo/palette/melodies/short/mTribal131.scd new file mode 100644 index 0000000..12363fd --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal131 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal131 = [ + 36, 0, 43, 55, 48, 48, 45, 55, + 36, 0, 43, 55, 48, 48, 45, 55, + 36, 0, 43, 55, 48, 48, 45, 55, + 36, 0, 43, 55, 48, 48, 45, 55 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal132.scd b/sound_algo/palette/melodies/short/mTribal132.scd new file mode 100644 index 0000000..bdc7400 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal132 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal132 = [ + 0, 57, 50, 0, 41, 50, 57, 38, + 0, 57, 50, 0, 41, 50, 57, 38, + 0, 57, 50, 0, 41, 50, 57, 38, + 0, 57, 50, 0, 41, 50, 57, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal133.scd b/sound_algo/palette/melodies/short/mTribal133.scd new file mode 100644 index 0000000..269f55e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal133 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal133 = [ + 57, 38, 60, 40, 0, 45, 50, 0, + 57, 38, 60, 40, 0, 45, 50, 0, + 57, 38, 60, 40, 0, 45, 50, 0, + 57, 38, 60, 40, 0, 45, 50, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal134.scd b/sound_algo/palette/melodies/short/mTribal134.scd new file mode 100644 index 0000000..4afe4ec --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal134 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal134 = [ + 55, 0, 60, 50, 50, 0, 0, 0, + 55, 0, 60, 50, 50, 0, 0, 0, + 55, 0, 60, 50, 50, 0, 0, 0, + 55, 0, 60, 50, 50, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal135.scd b/sound_algo/palette/melodies/short/mTribal135.scd new file mode 100644 index 0000000..94fee3e --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal135 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal135 = [ + 0, 50, 0, 55, 45, 0, 38, 41, + 0, 50, 0, 55, 45, 0, 38, 41, + 0, 50, 0, 55, 45, 0, 38, 41, + 0, 50, 0, 55, 45, 0, 38, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal136.scd b/sound_algo/palette/melodies/short/mTribal136.scd new file mode 100644 index 0000000..74c27cf --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal136 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal136 = [ + 53, 53, 45, 53, 0, 41, 45, 43, + 53, 53, 45, 53, 0, 41, 45, 43, + 53, 53, 45, 53, 0, 41, 45, 43, + 53, 53, 45, 53, 0, 41, 45, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal137.scd b/sound_algo/palette/melodies/short/mTribal137.scd new file mode 100644 index 0000000..656c6cb --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal137 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal137 = [ + 38, 57, 48, 60, 0, 36, 0, 52, + 38, 57, 48, 60, 0, 36, 0, 52, + 38, 57, 48, 60, 0, 36, 0, 52, + 38, 57, 48, 60, 0, 36, 0, 52 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal138.scd b/sound_algo/palette/melodies/short/mTribal138.scd new file mode 100644 index 0000000..b66cbb5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal138 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal138 = [ + 60, 0, 0, 43, 45, 48, 0, 48, + 60, 0, 0, 43, 45, 48, 0, 48, + 60, 0, 0, 43, 45, 48, 0, 48, + 60, 0, 0, 43, 45, 48, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal139.scd b/sound_algo/palette/melodies/short/mTribal139.scd new file mode 100644 index 0000000..a049b64 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal139 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal139 = [ + 60, 45, 50, 50, 38, 57, 0, 48, + 60, 45, 50, 50, 38, 57, 0, 48, + 60, 45, 50, 50, 38, 57, 0, 48, + 60, 45, 50, 50, 38, 57, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal140.scd b/sound_algo/palette/melodies/short/mTribal140.scd new file mode 100644 index 0000000..d87dca1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal140 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal140 = [ + 60, 57, 57, 0, 55, 43, 0, 0, + 60, 57, 57, 0, 55, 43, 0, 0, + 60, 57, 57, 0, 55, 43, 0, 0, + 60, 57, 57, 0, 55, 43, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal141.scd b/sound_algo/palette/melodies/short/mTribal141.scd new file mode 100644 index 0000000..fa1b92a --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal141 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal141 = [ + 57, 50, 55, 0, 48, 43, 36, 43, + 57, 50, 55, 0, 48, 43, 36, 43, + 57, 50, 55, 0, 48, 43, 36, 43, + 57, 50, 55, 0, 48, 43, 36, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal142.scd b/sound_algo/palette/melodies/short/mTribal142.scd new file mode 100644 index 0000000..9d2495a --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal142 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal142 = [ + 50, 0, 0, 41, 0, 0, 43, 0, + 50, 0, 0, 41, 0, 0, 43, 0, + 50, 0, 0, 41, 0, 0, 43, 0, + 50, 0, 0, 41, 0, 0, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal143.scd b/sound_algo/palette/melodies/short/mTribal143.scd new file mode 100644 index 0000000..89d3b3f --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal143 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal143 = [ + 0, 0, 40, 45, 52, 45, 38, 57, + 0, 0, 40, 45, 52, 45, 38, 57, + 0, 0, 40, 45, 52, 45, 38, 57, + 0, 0, 40, 45, 52, 45, 38, 57 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal144.scd b/sound_algo/palette/melodies/short/mTribal144.scd new file mode 100644 index 0000000..a609e00 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal144 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal144 = [ + 0, 0, 0, 0, 0, 50, 0, 38, + 0, 0, 0, 0, 0, 50, 0, 38, + 0, 0, 0, 0, 0, 50, 0, 38, + 0, 0, 0, 0, 0, 50, 0, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal145.scd b/sound_algo/palette/melodies/short/mTribal145.scd new file mode 100644 index 0000000..1f475b5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal145 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal145 = [ + 60, 43, 60, 36, 60, 43, 41, 45, + 60, 43, 60, 36, 60, 43, 41, 45, + 60, 43, 60, 36, 60, 43, 41, 45, + 60, 43, 60, 36, 60, 43, 41, 45 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal146.scd b/sound_algo/palette/melodies/short/mTribal146.scd new file mode 100644 index 0000000..639087c --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal146 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal146 = [ + 45, 0, 48, 52, 0, 55, 48, 38, + 45, 0, 48, 52, 0, 55, 48, 38, + 45, 0, 48, 52, 0, 55, 48, 38, + 45, 0, 48, 52, 0, 55, 48, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal147.scd b/sound_algo/palette/melodies/short/mTribal147.scd new file mode 100644 index 0000000..5b44332 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal147 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal147 = [ + 57, 0, 60, 0, 52, 36, 38, 43, + 57, 0, 60, 0, 52, 36, 38, 43, + 57, 0, 60, 0, 52, 36, 38, 43, + 57, 0, 60, 0, 52, 36, 38, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal148.scd b/sound_algo/palette/melodies/short/mTribal148.scd new file mode 100644 index 0000000..8ab1392 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal148 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal148 = [ + 60, 36, 43, 36, 55, 50, 0, 41, + 60, 36, 43, 36, 55, 50, 0, 41, + 60, 36, 43, 36, 55, 50, 0, 41, + 60, 36, 43, 36, 55, 50, 0, 41 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal149.scd b/sound_algo/palette/melodies/short/mTribal149.scd new file mode 100644 index 0000000..eb5069d --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal149 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal149 = [ + 36, 52, 55, 0, 0, 57, 36, 0, + 36, 52, 55, 0, 0, 57, 36, 0, + 36, 52, 55, 0, 0, 57, 36, 0, + 36, 52, 55, 0, 0, 57, 36, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal150.scd b/sound_algo/palette/melodies/short/mTribal150.scd new file mode 100644 index 0000000..e78ebcf --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal150 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal150 = [ + 0, 0, 50, 0, 41, 55, 55, 43, + 0, 0, 50, 0, 41, 55, 55, 43, + 0, 0, 50, 0, 41, 55, 55, 43, + 0, 0, 50, 0, 41, 55, 55, 43 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal151.scd b/sound_algo/palette/melodies/short/mTribal151.scd new file mode 100644 index 0000000..d6f7e66 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal151 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal151 = [ + 43, 55, 40, 0, 45, 60, 0, 0, + 43, 55, 40, 0, 45, 60, 0, 0, + 43, 55, 40, 0, 45, 60, 0, 0, + 43, 55, 40, 0, 45, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal152.scd b/sound_algo/palette/melodies/short/mTribal152.scd new file mode 100644 index 0000000..dd2cd87 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal152 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal152 = [ + 0, 50, 57, 55, 45, 36, 36, 38, + 0, 50, 57, 55, 45, 36, 36, 38, + 0, 50, 57, 55, 45, 36, 36, 38, + 0, 50, 57, 55, 45, 36, 36, 38 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal153.scd b/sound_algo/palette/melodies/short/mTribal153.scd new file mode 100644 index 0000000..86c8a49 --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal153 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal153 = [ + 57, 43, 0, 38, 53, 48, 0, 0, + 57, 43, 0, 38, 53, 48, 0, 0, + 57, 43, 0, 38, 53, 48, 0, 0, + 57, 43, 0, 38, 53, 48, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal154.scd b/sound_algo/palette/melodies/short/mTribal154.scd new file mode 100644 index 0000000..d39f19d --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal154 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal154 = [ + 0, 38, 60, 57, 0, 48, 55, 36, + 0, 38, 60, 57, 0, 48, 55, 36, + 0, 38, 60, 57, 0, 48, 55, 36, + 0, 38, 60, 57, 0, 48, 55, 36 +]; +) diff --git a/sound_algo/palette/melodies/short/mTribal155.scd b/sound_algo/palette/melodies/short/mTribal155.scd new file mode 100644 index 0000000..8f3c0dc --- /dev/null +++ b/sound_algo/palette/melodies/short/mTribal155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mTribal155 -- short melody (32 steps), genre: tribal +// ===================================================================== +( +~mTribal155 = [ + 38, 41, 60, 0, 57, 53, 57, 0, + 38, 41, 60, 0, 57, 53, 57, 0, + 38, 41, 60, 0, 57, 53, 57, 0, + 38, 41, 60, 0, 57, 53, 57, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld100.scd b/sound_algo/palette/melodies/short/mWorld100.scd new file mode 100644 index 0000000..77080dd --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld100.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld100 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld100 = [ + 77, 67, 76, 64, 0, 0, 71, 0, + 74, 0, 72, 69, 60, 77, 0, 79, + 0, 72, 81, 71, 79, 64, 71, 76, + 0, 0, 76, 0, 77, 65, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld101.scd b/sound_algo/palette/melodies/short/mWorld101.scd new file mode 100644 index 0000000..c36b5dd --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld101.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld101 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld101 = [ + 74, 0, 64, 60, 81, 81, 74, 65, + 62, 62, 67, 0, 81, 64, 84, 69, + 83, 67, 84, 81, 65, 69, 81, 71, + 71, 76, 0, 76, 65, 76, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld102.scd b/sound_algo/palette/melodies/short/mWorld102.scd new file mode 100644 index 0000000..1d8f07b --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld102.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld102 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld102 = [ + 62, 65, 0, 67, 77, 0, 0, 67, + 76, 0, 76, 79, 64, 83, 60, 76, + 62, 71, 74, 0, 79, 74, 69, 60, + 81, 0, 0, 81, 81, 72, 79, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld103.scd b/sound_algo/palette/melodies/short/mWorld103.scd new file mode 100644 index 0000000..980d985 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld103.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld103 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld103 = [ + 79, 60, 79, 0, 65, 74, 60, 62, + 65, 84, 0, 79, 84, 67, 60, 0, + 0, 0, 0, 0, 82, 70, 70, 84, + 67, 74, 65, 64, 0, 67, 67, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld104.scd b/sound_algo/palette/melodies/short/mWorld104.scd new file mode 100644 index 0000000..e168c39 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld104.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld104 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld104 = [ + 67, 84, 72, 0, 0, 65, 79, 76, + 0, 72, 0, 0, 0, 60, 77, 0, + 0, 69, 0, 67, 74, 60, 82, 0, + 0, 65, 0, 65, 0, 82, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld105.scd b/sound_algo/palette/melodies/short/mWorld105.scd new file mode 100644 index 0000000..da332cc --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld105.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld105 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld105 = [ + 76, 76, 60, 64, 74, 77, 79, 77, + 0, 60, 76, 60, 67, 69, 76, 62, + 64, 69, 70, 79, 62, 64, 70, 79, + 74, 0, 69, 84, 62, 0, 0, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld106.scd b/sound_algo/palette/melodies/short/mWorld106.scd new file mode 100644 index 0000000..4e4b78f --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld106.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld106 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld106 = [ + 62, 76, 0, 71, 0, 81, 79, 69, + 65, 62, 0, 0, 77, 0, 67, 65, + 77, 72, 69, 69, 79, 67, 84, 74, + 0, 0, 0, 0, 0, 60, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld107.scd b/sound_algo/palette/melodies/short/mWorld107.scd new file mode 100644 index 0000000..7542c44 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld107.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld107 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld107 = [ + 0, 0, 67, 0, 74, 84, 77, 67, + 64, 76, 76, 84, 72, 60, 84, 62, + 79, 65, 0, 0, 67, 76, 65, 62, + 83, 77, 65, 65, 0, 69, 74, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld108.scd b/sound_algo/palette/melodies/short/mWorld108.scd new file mode 100644 index 0000000..e4e52aa --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld108.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld108 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld108 = [ + 66, 64, 62, 83, 0, 0, 67, 84, + 66, 81, 62, 79, 62, 0, 66, 0, + 79, 60, 0, 69, 0, 78, 0, 72, + 62, 66, 78, 0, 62, 62, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld109.scd b/sound_algo/palette/melodies/short/mWorld109.scd new file mode 100644 index 0000000..5ad9434 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld109.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld109 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld109 = [ + 62, 76, 66, 64, 74, 72, 67, 76, + 0, 0, 0, 66, 60, 74, 0, 83, + 78, 0, 0, 74, 60, 67, 84, 84, + 0, 0, 0, 83, 67, 0, 81, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld110.scd b/sound_algo/palette/melodies/short/mWorld110.scd new file mode 100644 index 0000000..670e42f --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld110.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld110 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld110 = [ + 0, 74, 0, 81, 74, 0, 77, 0, + 0, 0, 0, 64, 79, 0, 64, 0, + 62, 0, 71, 0, 0, 69, 83, 0, + 0, 69, 69, 0, 79, 62, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld111.scd b/sound_algo/palette/melodies/short/mWorld111.scd new file mode 100644 index 0000000..1a5b753 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld111.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld111 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld111 = [ + 77, 0, 69, 60, 64, 72, 71, 79, + 69, 64, 0, 71, 74, 71, 60, 0, + 74, 0, 0, 0, 81, 0, 65, 72, + 0, 67, 71, 0, 74, 0, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld112.scd b/sound_algo/palette/melodies/short/mWorld112.scd new file mode 100644 index 0000000..fdb3c58 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld112.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld112 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld112 = [ + 62, 74, 0, 0, 0, 0, 81, 0, + 64, 79, 83, 0, 76, 0, 0, 0, + 79, 0, 74, 83, 62, 0, 60, 72, + 0, 69, 0, 0, 62, 83, 72, 71 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld113.scd b/sound_algo/palette/melodies/short/mWorld113.scd new file mode 100644 index 0000000..ee2b490 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld113.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld113 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld113 = [ + 81, 0, 0, 0, 71, 69, 0, 79, + 71, 72, 71, 0, 62, 0, 65, 64, + 71, 0, 62, 72, 74, 84, 67, 0, + 64, 60, 74, 0, 0, 74, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld114.scd b/sound_algo/palette/melodies/short/mWorld114.scd new file mode 100644 index 0000000..569f141 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld114.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld114 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld114 = [ + 60, 69, 0, 60, 81, 69, 60, 76, + 78, 78, 69, 0, 66, 0, 0, 62, + 74, 78, 0, 74, 64, 83, 76, 71, + 0, 0, 0, 83, 74, 81, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld115.scd b/sound_algo/palette/melodies/short/mWorld115.scd new file mode 100644 index 0000000..0ecee2c --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld115.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld115 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld115 = [ + 0, 62, 74, 70, 81, 76, 72, 65, + 67, 72, 81, 69, 0, 82, 81, 69, + 84, 60, 70, 60, 74, 81, 62, 74, + 70, 0, 0, 77, 70, 0, 64, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld116.scd b/sound_algo/palette/melodies/short/mWorld116.scd new file mode 100644 index 0000000..b0a2b29 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld116.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld116 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld116 = [ + 76, 81, 0, 83, 64, 67, 0, 0, + 79, 67, 74, 67, 0, 0, 0, 71, + 0, 83, 72, 0, 81, 0, 0, 0, + 69, 79, 76, 0, 0, 69, 0, 78 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld117.scd b/sound_algo/palette/melodies/short/mWorld117.scd new file mode 100644 index 0000000..eac2aa5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld117.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld117 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld117 = [ + 81, 71, 84, 79, 81, 65, 0, 0, + 81, 69, 71, 83, 62, 72, 65, 76, + 76, 0, 81, 69, 69, 65, 0, 67, + 62, 62, 0, 0, 0, 71, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld118.scd b/sound_algo/palette/melodies/short/mWorld118.scd new file mode 100644 index 0000000..12bcbed --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld118.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld118 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld118 = [ + 66, 81, 0, 66, 0, 76, 74, 66, + 62, 84, 71, 79, 74, 69, 0, 78, + 81, 0, 76, 0, 81, 81, 69, 84, + 0, 60, 62, 60, 71, 64, 84, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld119.scd b/sound_algo/palette/melodies/short/mWorld119.scd new file mode 100644 index 0000000..4cd68f5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld119.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld119 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld119 = [ + 0, 71, 81, 64, 83, 0, 81, 81, + 84, 72, 62, 64, 83, 0, 67, 0, + 83, 0, 84, 84, 83, 74, 0, 60, + 0, 0, 0, 81, 62, 71, 64, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld120.scd b/sound_algo/palette/melodies/short/mWorld120.scd new file mode 100644 index 0000000..b04cfb4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld120.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld120 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld120 = [ + 0, 69, 74, 79, 71, 69, 77, 65, + 67, 64, 0, 0, 62, 64, 83, 79, + 84, 65, 67, 65, 0, 62, 71, 77, + 0, 67, 67, 79, 67, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld121.scd b/sound_algo/palette/melodies/short/mWorld121.scd new file mode 100644 index 0000000..39da742 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld121.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld121 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld121 = [ + 0, 76, 62, 65, 71, 84, 0, 0, + 62, 0, 62, 83, 0, 0, 0, 71, + 83, 0, 79, 65, 0, 84, 0, 67, + 74, 72, 0, 62, 71, 60, 74, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld122.scd b/sound_algo/palette/melodies/short/mWorld122.scd new file mode 100644 index 0000000..8346b1e --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld122.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld122 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld122 = [ + 72, 0, 70, 64, 79, 69, 0, 0, + 0, 62, 77, 81, 0, 0, 64, 67, + 67, 82, 79, 0, 62, 0, 64, 64, + 82, 77, 74, 74, 64, 84, 76, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld123.scd b/sound_algo/palette/melodies/short/mWorld123.scd new file mode 100644 index 0000000..b03761c --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld123.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld123 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld123 = [ + 69, 60, 0, 64, 74, 81, 0, 0, + 62, 65, 0, 72, 0, 67, 60, 0, + 62, 71, 81, 64, 81, 84, 77, 64, + 79, 76, 0, 81, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld124.scd b/sound_algo/palette/melodies/short/mWorld124.scd new file mode 100644 index 0000000..c7f1a67 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld124.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld124 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld124 = [ + 72, 79, 62, 62, 64, 0, 64, 0, + 71, 60, 60, 83, 84, 67, 0, 0, + 0, 81, 0, 62, 0, 0, 62, 0, + 0, 64, 72, 0, 64, 74, 64, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld125.scd b/sound_algo/palette/melodies/short/mWorld125.scd new file mode 100644 index 0000000..f83d9dc --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld125.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld125 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld125 = [ + 0, 0, 82, 72, 0, 60, 0, 79, + 0, 0, 0, 67, 74, 0, 72, 69, + 79, 62, 74, 67, 0, 82, 0, 67, + 69, 0, 76, 67, 0, 0, 67, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld126.scd b/sound_algo/palette/melodies/short/mWorld126.scd new file mode 100644 index 0000000..76912bf --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld126.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld126 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld126 = [ + 67, 62, 60, 0, 71, 69, 77, 0, + 0, 67, 71, 74, 83, 0, 83, 72, + 81, 0, 72, 0, 67, 74, 83, 60, + 0, 62, 0, 76, 72, 67, 81, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld127.scd b/sound_algo/palette/melodies/short/mWorld127.scd new file mode 100644 index 0000000..5a56c9b --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld127.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld127 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld127 = [ + 84, 0, 78, 67, 60, 78, 67, 76, + 78, 0, 60, 71, 76, 72, 81, 83, + 0, 69, 83, 84, 0, 66, 79, 0, + 74, 0, 60, 0, 78, 74, 79, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld128.scd b/sound_algo/palette/melodies/short/mWorld128.scd new file mode 100644 index 0000000..a668cc7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld128.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld128 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld128 = [ + 0, 65, 84, 71, 71, 65, 71, 69, + 74, 81, 84, 83, 81, 65, 0, 0, + 0, 74, 64, 62, 71, 67, 0, 65, + 0, 0, 67, 65, 0, 84, 67, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld129.scd b/sound_algo/palette/melodies/short/mWorld129.scd new file mode 100644 index 0000000..38f0e17 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld129.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld129 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld129 = [ + 76, 0, 65, 65, 83, 0, 62, 0, + 0, 62, 0, 79, 67, 60, 0, 0, + 0, 84, 0, 0, 71, 0, 83, 76, + 83, 0, 0, 0, 0, 67, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld130.scd b/sound_algo/palette/melodies/short/mWorld130.scd new file mode 100644 index 0000000..6abb655 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld130.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld130 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld130 = [ + 74, 0, 77, 72, 62, 74, 72, 0, + 67, 0, 70, 0, 0, 0, 70, 0, + 0, 82, 0, 64, 0, 62, 76, 84, + 64, 0, 65, 79, 74, 60, 77, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld131.scd b/sound_algo/palette/melodies/short/mWorld131.scd new file mode 100644 index 0000000..15f8ae5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld131.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld131 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld131 = [ + 67, 0, 76, 76, 0, 72, 74, 79, + 83, 83, 0, 64, 67, 0, 0, 65, + 0, 79, 72, 77, 65, 77, 65, 0, + 0, 0, 0, 81, 71, 60, 64, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld132.scd b/sound_algo/palette/melodies/short/mWorld132.scd new file mode 100644 index 0000000..84c2b9d --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld132.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld132 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld132 = [ + 81, 62, 69, 71, 74, 67, 0, 78, + 72, 62, 69, 0, 0, 67, 64, 78, + 72, 0, 60, 72, 81, 76, 0, 0, + 78, 74, 62, 74, 0, 83, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld133.scd b/sound_algo/palette/melodies/short/mWorld133.scd new file mode 100644 index 0000000..acdb1ba --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld133.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld133 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld133 = [ + 71, 67, 69, 0, 0, 0, 0, 0, + 62, 67, 62, 0, 62, 0, 62, 72, + 81, 60, 79, 64, 0, 67, 64, 74, + 0, 83, 0, 74, 83, 65, 77, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld134.scd b/sound_algo/palette/melodies/short/mWorld134.scd new file mode 100644 index 0000000..e550fd1 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld134.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld134 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld134 = [ + 0, 69, 77, 79, 70, 74, 0, 65, + 0, 0, 84, 74, 70, 79, 69, 67, + 74, 0, 74, 84, 79, 74, 0, 0, + 62, 0, 79, 79, 0, 0, 77, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld135.scd b/sound_algo/palette/melodies/short/mWorld135.scd new file mode 100644 index 0000000..d945035 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld135.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld135 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld135 = [ + 62, 69, 0, 60, 0, 69, 69, 60, + 78, 84, 69, 60, 0, 0, 79, 60, + 74, 84, 69, 74, 62, 69, 78, 60, + 78, 66, 71, 71, 66, 0, 67, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld136.scd b/sound_algo/palette/melodies/short/mWorld136.scd new file mode 100644 index 0000000..ef4a5e3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld136.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld136 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld136 = [ + 69, 66, 71, 71, 0, 76, 71, 0, + 74, 0, 0, 67, 66, 64, 0, 76, + 0, 0, 79, 62, 0, 62, 0, 0, + 66, 0, 0, 0, 74, 0, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld137.scd b/sound_algo/palette/melodies/short/mWorld137.scd new file mode 100644 index 0000000..75f94b3 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld137.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld137 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld137 = [ + 0, 0, 71, 0, 0, 74, 66, 0, + 0, 60, 66, 74, 66, 0, 60, 84, + 66, 0, 71, 0, 74, 74, 0, 69, + 0, 0, 69, 0, 69, 0, 69, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld138.scd b/sound_algo/palette/melodies/short/mWorld138.scd new file mode 100644 index 0000000..1a05232 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld138.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld138 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld138 = [ + 67, 60, 79, 70, 82, 82, 65, 69, + 62, 77, 82, 84, 70, 0, 64, 70, + 74, 81, 82, 81, 79, 77, 0, 70, + 0, 65, 0, 72, 74, 70, 69, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld139.scd b/sound_algo/palette/melodies/short/mWorld139.scd new file mode 100644 index 0000000..016a5df --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld139.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld139 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld139 = [ + 0, 0, 81, 64, 0, 71, 65, 67, + 77, 76, 81, 0, 0, 0, 64, 81, + 74, 60, 71, 0, 69, 0, 72, 62, + 67, 64, 79, 81, 77, 79, 60, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld140.scd b/sound_algo/palette/melodies/short/mWorld140.scd new file mode 100644 index 0000000..6953ede --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld140.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld140 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld140 = [ + 62, 72, 62, 74, 0, 0, 74, 84, + 77, 83, 74, 64, 62, 77, 0, 76, + 65, 60, 74, 65, 0, 79, 64, 0, + 72, 76, 77, 67, 0, 0, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld141.scd b/sound_algo/palette/melodies/short/mWorld141.scd new file mode 100644 index 0000000..9c47c16 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld141.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld141 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld141 = [ + 71, 65, 60, 81, 79, 83, 62, 81, + 74, 65, 79, 71, 79, 0, 65, 0, + 79, 64, 79, 77, 0, 60, 72, 77, + 83, 81, 0, 0, 74, 74, 62, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld142.scd b/sound_algo/palette/melodies/short/mWorld142.scd new file mode 100644 index 0000000..f265b60 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld142.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld142 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld142 = [ + 71, 0, 0, 0, 81, 0, 0, 62, + 67, 0, 69, 62, 0, 76, 71, 0, + 0, 0, 77, 0, 0, 74, 64, 65, + 72, 0, 72, 0, 83, 76, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld143.scd b/sound_algo/palette/melodies/short/mWorld143.scd new file mode 100644 index 0000000..b787d6a --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld143.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld143 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld143 = [ + 71, 67, 0, 0, 81, 83, 74, 65, + 60, 0, 81, 81, 0, 76, 62, 0, + 76, 74, 0, 79, 62, 84, 83, 0, + 62, 84, 76, 0, 62, 69, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld144.scd b/sound_algo/palette/melodies/short/mWorld144.scd new file mode 100644 index 0000000..1eccb5e --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld144.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld144 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld144 = [ + 0, 62, 0, 60, 84, 0, 74, 76, + 71, 0, 79, 69, 0, 81, 69, 74, + 74, 81, 0, 0, 79, 0, 69, 67, + 74, 72, 79, 0, 67, 81, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld145.scd b/sound_algo/palette/melodies/short/mWorld145.scd new file mode 100644 index 0000000..add73a5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld145.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld145 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld145 = [ + 81, 76, 72, 65, 0, 76, 0, 60, + 70, 77, 79, 77, 0, 74, 0, 0, + 65, 74, 67, 70, 0, 60, 82, 64, + 0, 84, 64, 81, 0, 0, 65, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld146.scd b/sound_algo/palette/melodies/short/mWorld146.scd new file mode 100644 index 0000000..b1ce150 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld146.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld146 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld146 = [ + 65, 64, 64, 0, 69, 0, 0, 69, + 0, 60, 69, 72, 0, 81, 0, 0, + 0, 0, 60, 74, 0, 74, 72, 0, + 79, 64, 64, 76, 0, 0, 0, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld147.scd b/sound_algo/palette/melodies/short/mWorld147.scd new file mode 100644 index 0000000..884241b --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld147.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld147 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld147 = [ + 60, 84, 60, 79, 81, 66, 76, 0, + 0, 74, 0, 60, 0, 64, 0, 64, + 0, 62, 64, 66, 0, 84, 71, 83, + 78, 79, 81, 67, 78, 62, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld148.scd b/sound_algo/palette/melodies/short/mWorld148.scd new file mode 100644 index 0000000..917013e --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld148.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld148 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld148 = [ + 62, 74, 0, 84, 69, 81, 0, 84, + 77, 79, 69, 0, 67, 77, 67, 72, + 64, 81, 67, 69, 74, 79, 0, 81, + 69, 0, 84, 0, 0, 0, 81, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld149.scd b/sound_algo/palette/melodies/short/mWorld149.scd new file mode 100644 index 0000000..0928b94 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld149.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld149 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld149 = [ + 81, 81, 0, 0, 0, 0, 79, 72, + 60, 83, 77, 0, 62, 67, 79, 60, + 71, 60, 0, 67, 79, 0, 77, 71, + 0, 0, 76, 0, 0, 0, 81, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld150.scd b/sound_algo/palette/melodies/short/mWorld150.scd new file mode 100644 index 0000000..5e5a898 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld150.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld150 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld150 = [ + 79, 60, 60, 70, 70, 0, 72, 76, + 74, 79, 77, 64, 0, 60, 74, 0, + 0, 0, 82, 64, 0, 60, 81, 76, + 82, 67, 72, 77, 0, 76, 82, 79 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld151.scd b/sound_algo/palette/melodies/short/mWorld151.scd new file mode 100644 index 0000000..d4585fe --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld151.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld151 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld151 = [ + 0, 60, 74, 0, 0, 64, 67, 67, + 0, 0, 0, 67, 79, 82, 82, 79, + 0, 65, 72, 76, 70, 69, 0, 70, + 72, 84, 67, 0, 0, 79, 70, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld152.scd b/sound_algo/palette/melodies/short/mWorld152.scd new file mode 100644 index 0000000..e8b2c39 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld152.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld152 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld152 = [ + 62, 79, 69, 64, 0, 67, 0, 67, + 70, 65, 76, 60, 79, 0, 69, 67, + 79, 0, 65, 69, 62, 72, 0, 67, + 74, 84, 60, 0, 0, 0, 69, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld153.scd b/sound_algo/palette/melodies/short/mWorld153.scd new file mode 100644 index 0000000..0dba92d --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld153.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld153 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld153 = [ + 0, 0, 79, 83, 69, 60, 0, 0, + 79, 0, 84, 76, 0, 0, 81, 67, + 62, 69, 81, 81, 62, 0, 0, 74, + 83, 74, 62, 0, 79, 0, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld154.scd b/sound_algo/palette/melodies/short/mWorld154.scd new file mode 100644 index 0000000..07efaac --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld154.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld154 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld154 = [ + 0, 0, 62, 83, 74, 64, 62, 72, + 67, 81, 0, 83, 79, 84, 62, 62, + 62, 0, 0, 65, 71, 0, 76, 65, + 0, 0, 0, 65, 67, 71, 83, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld155.scd b/sound_algo/palette/melodies/short/mWorld155.scd new file mode 100644 index 0000000..8dbabd5 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld155.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld155 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld155 = [ + 74, 74, 84, 65, 62, 67, 84, 77, + 82, 70, 0, 82, 62, 72, 70, 64, + 79, 74, 79, 0, 0, 0, 65, 0, + 72, 84, 72, 0, 60, 64, 77, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld156.scd b/sound_algo/palette/melodies/short/mWorld156.scd new file mode 100644 index 0000000..64f76ad --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld156.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld156 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld156 = [ + 67, 0, 0, 0, 0, 65, 72, 72, + 64, 65, 0, 82, 0, 76, 67, 72, + 0, 79, 0, 0, 70, 0, 76, 0, + 67, 72, 72, 60, 67, 72, 84, 82 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld157.scd b/sound_algo/palette/melodies/short/mWorld157.scd new file mode 100644 index 0000000..352d8d0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld157.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld157 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld157 = [ + 69, 0, 74, 81, 66, 83, 0, 60, + 74, 79, 76, 64, 81, 78, 67, 67, + 0, 78, 60, 0, 83, 0, 84, 0, + 78, 0, 0, 0, 76, 67, 84, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld158.scd b/sound_algo/palette/melodies/short/mWorld158.scd new file mode 100644 index 0000000..427f6ba --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld158.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld158 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld158 = [ + 76, 78, 79, 62, 0, 67, 72, 76, + 69, 0, 81, 67, 74, 66, 76, 0, + 69, 74, 78, 79, 72, 0, 74, 0, + 62, 0, 0, 0, 66, 83, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld159.scd b/sound_algo/palette/melodies/short/mWorld159.scd new file mode 100644 index 0000000..eb27e65 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld159.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld159 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld159 = [ + 0, 79, 69, 74, 60, 60, 65, 0, + 64, 71, 0, 79, 0, 84, 83, 0, + 81, 0, 72, 0, 79, 0, 0, 71, + 69, 60, 74, 64, 76, 84, 77, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld160.scd b/sound_algo/palette/melodies/short/mWorld160.scd new file mode 100644 index 0000000..6530cb0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld160.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld160 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld160 = [ + 74, 60, 77, 74, 69, 0, 0, 83, + 79, 0, 64, 0, 0, 64, 77, 0, + 0, 65, 69, 0, 0, 83, 0, 0, + 83, 62, 83, 0, 0, 83, 71, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld161.scd b/sound_algo/palette/melodies/short/mWorld161.scd new file mode 100644 index 0000000..6085f87 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld161.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld161 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld161 = [ + 70, 0, 82, 81, 74, 72, 77, 70, + 74, 79, 70, 72, 0, 0, 74, 60, + 62, 74, 74, 64, 70, 0, 72, 70, + 70, 81, 74, 0, 72, 65, 72, 76 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld162.scd b/sound_algo/palette/melodies/short/mWorld162.scd new file mode 100644 index 0000000..9dd98ae --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld162.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld162 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld162 = [ + 60, 60, 77, 0, 72, 0, 64, 0, + 74, 69, 0, 69, 77, 64, 0, 77, + 0, 69, 62, 60, 0, 0, 0, 65, + 77, 77, 0, 0, 67, 81, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld163.scd b/sound_algo/palette/melodies/short/mWorld163.scd new file mode 100644 index 0000000..65c2ba0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld163.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld163 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld163 = [ + 0, 0, 0, 0, 70, 72, 82, 60, + 62, 0, 60, 67, 79, 74, 60, 0, + 0, 79, 72, 67, 79, 0, 0, 62, + 82, 62, 77, 64, 62, 67, 84, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld164.scd b/sound_algo/palette/melodies/short/mWorld164.scd new file mode 100644 index 0000000..b84613d --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld164.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld164 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld164 = [ + 74, 79, 77, 65, 79, 76, 74, 71, + 84, 0, 81, 77, 0, 76, 0, 0, + 81, 69, 64, 0, 83, 81, 0, 0, + 60, 79, 69, 83, 81, 0, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld165.scd b/sound_algo/palette/melodies/short/mWorld165.scd new file mode 100644 index 0000000..9a04662 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld165.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld165 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld165 = [ + 0, 81, 71, 0, 0, 77, 0, 60, + 0, 0, 72, 76, 0, 62, 0, 0, + 0, 79, 65, 60, 74, 77, 67, 0, + 65, 0, 0, 71, 81, 77, 0, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld166.scd b/sound_algo/palette/melodies/short/mWorld166.scd new file mode 100644 index 0000000..9b40a4c --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld166.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld166 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld166 = [ + 81, 69, 0, 84, 69, 81, 77, 0, + 77, 0, 74, 84, 81, 0, 72, 0, + 69, 71, 0, 0, 69, 69, 74, 60, + 0, 64, 83, 0, 81, 0, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld167.scd b/sound_algo/palette/melodies/short/mWorld167.scd new file mode 100644 index 0000000..4de696e --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld167.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld167 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld167 = [ + 70, 0, 72, 0, 65, 74, 79, 0, + 0, 0, 60, 0, 70, 0, 65, 81, + 0, 0, 0, 62, 64, 84, 0, 70, + 0, 0, 77, 0, 70, 77, 0, 81 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld168.scd b/sound_algo/palette/melodies/short/mWorld168.scd new file mode 100644 index 0000000..d53a30f --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld168.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld168 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld168 = [ + 74, 79, 0, 66, 69, 71, 83, 0, + 0, 78, 81, 0, 0, 60, 62, 0, + 79, 0, 0, 76, 74, 0, 0, 67, + 60, 0, 71, 79, 0, 83, 78, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld169.scd b/sound_algo/palette/melodies/short/mWorld169.scd new file mode 100644 index 0000000..999ec66 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld169.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld169 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld169 = [ + 0, 83, 64, 62, 65, 60, 0, 62, + 67, 79, 69, 83, 71, 67, 81, 81, + 84, 84, 71, 79, 71, 0, 60, 65, + 74, 64, 79, 0, 71, 83, 74, 83 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld170.scd b/sound_algo/palette/melodies/short/mWorld170.scd new file mode 100644 index 0000000..be984ea --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld170.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld170 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld170 = [ + 79, 62, 60, 74, 67, 60, 65, 81, + 83, 64, 76, 84, 71, 84, 0, 81, + 83, 60, 69, 0, 62, 79, 62, 72, + 0, 62, 62, 0, 0, 71, 62, 72 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld171.scd b/sound_algo/palette/melodies/short/mWorld171.scd new file mode 100644 index 0000000..2b1c23c --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld171.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld171 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld171 = [ + 0, 0, 0, 60, 0, 0, 78, 0, + 0, 66, 78, 62, 66, 84, 60, 0, + 66, 0, 0, 0, 62, 66, 0, 76, + 0, 69, 62, 0, 69, 84, 62, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld172.scd b/sound_algo/palette/melodies/short/mWorld172.scd new file mode 100644 index 0000000..d0fcd1f --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld172.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld172 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld172 = [ + 0, 76, 74, 0, 78, 64, 74, 66, + 0, 0, 67, 78, 74, 83, 66, 0, + 71, 64, 67, 78, 84, 84, 76, 64, + 81, 64, 78, 76, 74, 60, 71, 66 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld173.scd b/sound_algo/palette/melodies/short/mWorld173.scd new file mode 100644 index 0000000..e6dde03 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld173.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld173 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld173 = [ + 0, 72, 79, 0, 79, 78, 0, 60, + 69, 72, 81, 67, 0, 71, 67, 66, + 0, 0, 0, 84, 0, 0, 79, 0, + 0, 83, 67, 0, 62, 84, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld174.scd b/sound_algo/palette/melodies/short/mWorld174.scd new file mode 100644 index 0000000..1e1f854 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld174.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld174 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld174 = [ + 62, 79, 78, 69, 78, 0, 62, 79, + 66, 83, 0, 79, 81, 0, 0, 69, + 66, 62, 74, 76, 60, 76, 84, 60, + 66, 78, 78, 74, 0, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld175.scd b/sound_algo/palette/melodies/short/mWorld175.scd new file mode 100644 index 0000000..092c5d0 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld175.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld175 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld175 = [ + 62, 67, 81, 78, 0, 0, 74, 69, + 69, 0, 81, 78, 0, 74, 71, 76, + 74, 64, 0, 84, 78, 67, 60, 81, + 72, 64, 81, 69, 66, 0, 74, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld176.scd b/sound_algo/palette/melodies/short/mWorld176.scd new file mode 100644 index 0000000..36c6bef --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld176.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld176 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld176 = [ + 83, 0, 0, 78, 78, 81, 71, 79, + 0, 81, 67, 67, 0, 0, 71, 83, + 0, 81, 71, 67, 78, 62, 0, 83, + 0, 81, 79, 78, 81, 76, 79, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld177.scd b/sound_algo/palette/melodies/short/mWorld177.scd new file mode 100644 index 0000000..b63a492 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld177.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld177 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld177 = [ + 62, 60, 0, 65, 0, 83, 0, 71, + 0, 83, 64, 0, 69, 77, 65, 81, + 0, 81, 0, 79, 0, 81, 62, 69, + 74, 64, 65, 0, 77, 74, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld178.scd b/sound_algo/palette/melodies/short/mWorld178.scd new file mode 100644 index 0000000..c1fa4d4 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld178.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld178 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld178 = [ + 83, 0, 67, 81, 0, 67, 0, 77, + 69, 0, 77, 0, 81, 84, 0, 0, + 0, 64, 0, 67, 65, 74, 79, 81, + 83, 0, 79, 69, 0, 65, 0, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld179.scd b/sound_algo/palette/melodies/short/mWorld179.scd new file mode 100644 index 0000000..67af1b9 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld179.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld179 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld179 = [ + 0, 0, 69, 74, 66, 0, 67, 79, + 74, 74, 64, 79, 78, 67, 81, 79, + 62, 0, 64, 78, 79, 0, 0, 0, + 81, 81, 71, 67, 71, 72, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld180.scd b/sound_algo/palette/melodies/short/mWorld180.scd new file mode 100644 index 0000000..04cafce --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld180.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld180 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld180 = [ + 82, 69, 67, 0, 0, 72, 77, 0, + 82, 76, 72, 65, 62, 0, 0, 67, + 0, 0, 0, 76, 0, 77, 0, 77, + 69, 0, 84, 65, 67, 81, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld181.scd b/sound_algo/palette/melodies/short/mWorld181.scd new file mode 100644 index 0000000..f036901 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld181.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld181 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld181 = [ + 70, 0, 0, 60, 0, 62, 0, 0, + 0, 72, 74, 72, 82, 79, 77, 0, + 0, 82, 79, 84, 70, 0, 81, 0, + 0, 76, 82, 79, 0, 76, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld182.scd b/sound_algo/palette/melodies/short/mWorld182.scd new file mode 100644 index 0000000..42c5fdd --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld182.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld182 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld182 = [ + 62, 81, 84, 60, 79, 77, 79, 81, + 70, 0, 84, 79, 0, 77, 0, 69, + 82, 74, 0, 82, 60, 84, 69, 67, + 79, 0, 65, 65, 62, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld183.scd b/sound_algo/palette/melodies/short/mWorld183.scd new file mode 100644 index 0000000..52f6290 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld183.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld183 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld183 = [ + 62, 79, 84, 67, 70, 0, 0, 0, + 69, 74, 69, 72, 64, 0, 64, 82, + 74, 60, 60, 64, 62, 77, 0, 65, + 0, 65, 84, 0, 62, 70, 64, 65 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld184.scd b/sound_algo/palette/melodies/short/mWorld184.scd new file mode 100644 index 0000000..0e277b7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld184.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld184 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld184 = [ + 64, 0, 0, 79, 0, 77, 84, 77, + 0, 65, 71, 0, 83, 0, 62, 71, + 84, 62, 62, 0, 67, 65, 83, 79, + 62, 64, 79, 81, 0, 76, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld185.scd b/sound_algo/palette/melodies/short/mWorld185.scd new file mode 100644 index 0000000..3546910 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld185.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld185 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld185 = [ + 62, 62, 0, 0, 0, 82, 79, 0, + 69, 64, 0, 76, 77, 0, 0, 0, + 0, 67, 0, 0, 79, 77, 79, 82, + 81, 62, 65, 62, 82, 0, 69, 84 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld186.scd b/sound_algo/palette/melodies/short/mWorld186.scd new file mode 100644 index 0000000..96af62f --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld186.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld186 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld186 = [ + 62, 62, 0, 84, 0, 84, 0, 83, + 69, 64, 60, 76, 79, 71, 0, 79, + 76, 69, 0, 64, 69, 71, 72, 62, + 0, 83, 64, 81, 0, 81, 60, 60 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld187.scd b/sound_algo/palette/melodies/short/mWorld187.scd new file mode 100644 index 0000000..d8ad904 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld187.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld187 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld187 = [ + 0, 79, 81, 0, 83, 71, 83, 72, + 0, 0, 0, 84, 0, 0, 0, 79, + 67, 60, 81, 83, 77, 77, 69, 0, + 0, 69, 0, 62, 62, 83, 0, 64 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld188.scd b/sound_algo/palette/melodies/short/mWorld188.scd new file mode 100644 index 0000000..324ed9f --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld188.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld188 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld188 = [ + 82, 0, 81, 62, 0, 62, 76, 69, + 0, 69, 74, 65, 70, 74, 65, 60, + 0, 81, 0, 79, 70, 76, 65, 60, + 70, 76, 0, 82, 67, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld189.scd b/sound_algo/palette/melodies/short/mWorld189.scd new file mode 100644 index 0000000..ca7dc89 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld189.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld189 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld189 = [ + 0, 67, 0, 79, 64, 0, 69, 69, + 64, 0, 83, 72, 0, 67, 0, 84, + 79, 76, 69, 84, 64, 84, 0, 84, + 71, 69, 0, 76, 0, 0, 0, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld190.scd b/sound_algo/palette/melodies/short/mWorld190.scd new file mode 100644 index 0000000..20980c7 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld190.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld190 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld190 = [ + 67, 84, 79, 0, 0, 64, 64, 83, + 0, 84, 64, 62, 0, 84, 83, 0, + 83, 65, 84, 0, 0, 0, 76, 0, + 71, 77, 0, 81, 71, 0, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld191.scd b/sound_algo/palette/melodies/short/mWorld191.scd new file mode 100644 index 0000000..daed03a --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld191.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld191 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld191 = [ + 0, 74, 77, 0, 74, 0, 62, 62, + 0, 0, 0, 77, 74, 60, 65, 69, + 62, 70, 70, 70, 64, 76, 84, 67, + 67, 69, 70, 74, 70, 77, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld192.scd b/sound_algo/palette/melodies/short/mWorld192.scd new file mode 100644 index 0000000..775866e --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld192.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld192 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld192 = [ + 0, 72, 0, 0, 60, 67, 0, 65, + 81, 0, 77, 0, 69, 84, 84, 77, + 69, 74, 0, 60, 0, 69, 0, 0, + 60, 71, 0, 64, 0, 81, 64, 62 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld193.scd b/sound_algo/palette/melodies/short/mWorld193.scd new file mode 100644 index 0000000..b8569eb --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld193.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld193 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld193 = [ + 69, 0, 65, 0, 81, 0, 0, 0, + 65, 0, 71, 72, 72, 0, 79, 0, + 0, 62, 60, 0, 81, 64, 0, 84, + 69, 0, 79, 62, 81, 0, 67, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld194.scd b/sound_algo/palette/melodies/short/mWorld194.scd new file mode 100644 index 0000000..8aa884c --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld194.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld194 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld194 = [ + 0, 77, 81, 74, 62, 60, 65, 0, + 72, 65, 0, 83, 69, 74, 77, 71, + 67, 0, 76, 79, 65, 74, 0, 83, + 77, 81, 67, 67, 0, 71, 71, 77 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld195.scd b/sound_algo/palette/melodies/short/mWorld195.scd new file mode 100644 index 0000000..fa39f25 --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld195.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld195 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld195 = [ + 77, 76, 0, 81, 60, 74, 0, 84, + 72, 0, 0, 74, 77, 67, 0, 0, + 65, 62, 0, 76, 81, 77, 83, 0, + 77, 0, 0, 69, 0, 81, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld196.scd b/sound_algo/palette/melodies/short/mWorld196.scd new file mode 100644 index 0000000..39b116a --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld196.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld196 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld196 = [ + 0, 0, 0, 74, 82, 70, 65, 62, + 70, 72, 70, 62, 0, 81, 0, 0, + 79, 70, 77, 60, 0, 60, 0, 60, + 0, 65, 82, 76, 70, 82, 82, 69 +]; +) diff --git a/sound_algo/palette/melodies/short/mWorld197.scd b/sound_algo/palette/melodies/short/mWorld197.scd new file mode 100644 index 0000000..df643dc --- /dev/null +++ b/sound_algo/palette/melodies/short/mWorld197.scd @@ -0,0 +1,11 @@ +// ===================================================================== +// ~mWorld197 -- short melody (32 steps), genre: world +// ===================================================================== +( +~mWorld197 = [ + 69, 76, 62, 74, 67, 72, 0, 0, + 67, 0, 67, 0, 84, 82, 70, 79, + 82, 60, 70, 67, 81, 65, 77, 0, + 0, 77, 82, 77, 67, 70, 62, 79 +]; +) diff --git a/sound_algo/palette/melodies/tracks.scd b/sound_algo/palette/melodies/tracks.scd new file mode 100644 index 0000000..d55eaa8 --- /dev/null +++ b/sound_algo/palette/melodies/tracks.scd @@ -0,0 +1,322 @@ +// ===================================================================== +// palette/melodies/tracks.scd +// Systeme multi-pistes melodiques -- jusqu'a N voix simultanees. +// +// Le legacy \melodySeq de engine.scd continue a fonctionner ; ce +// systeme s'AJOUTE en parallele. Chaque piste a son propre Pdef +// (\<name>Seq) construit a partir d'un Event de parametres stocke +// dans ~mel[\name]. +// +// HELPERS EXPOSES +// ~melTrackAdd.(\name, params) cree une piste + Pdef +// ~melTrackRemove.(\name) stop + remove +// ~melTrackOn.(\name) / Off play / stop +// ~melTrackSet.(\name, key, val) edite un param + reload Pdef +// ~melTrackSetAll.(\name, params) edite plusieurs params en bloc +// ~melTrackList.() etat de toutes les pistes +// ~melTrackSolo.(\name) / Unsolo mute toutes sauf une +// ~melTrackChoke.() stop toutes +// ~melTrackReload.(\name) / All +// ~melTrackHarm.(\src, \dst, \pres) ajoute une harmonie auto +// ~melTrackByGenre.(\name, \genre) melodie aleatoire du melodyBank +// +// PARAMS d'une piste (Event) : +// notes inst cutoff rq attack release drive amp dur boost pan octave +// +// Charge en DERNIER par index.scd (apres scales/short/long/.../bank). +// Un seul bloc top-level (compatible .load). +// ===================================================================== +( +// ---------- Etat global --------------------------------------------- +~mel = ~mel ?? { () }; // dict des pistes melodiques (Event) +~melSoloed = ~melSoloed ?? { nil }; // backup amp pendant un solo + +// ---------- Builder : construit (ou rebuild) le Pdef d'une piste ---- +~melTrackBuildPdef = { |name| + var t = ~mel[name]; + var sym = (name.asString ++ "Seq").asSymbol; // ex: \m1Seq + if (t.isNil) { + ("[melTrack] " ++ name ++ " inconnue").postln; + } { + // Defaults par champ : on guarantit que rien ne plante + var notes = (t[\notes] ?? { (0 ! 32) }); + var inst = (t[\inst] ?? \pad); + var cutoff = (t[\cutoff] ?? 2400); + var rq = (t[\rq] ?? 0.5); + var attack = (t[\attack] ?? 0.01); + var release = (t[\release] ?? 0.3); + var drive = (t[\drive] ?? 1.2); + var amp = (t[\amp] ?? 0.14); + var dur = (t[\dur] ?? 0.25); + var boost = (t[\boost] ?? 1.0); + var pan = (t[\pan] ?? 0); + var octave = (t[\octave] ?? 0); + var sawAmt = (t[\sawAmt] ?? 0.6); + var detune = (t[\detune] ?? 0.006); + var subAmt = (t[\subAmt] ?? 0.4); + if (notes.isEmpty) { notes = (0 ! 32) }; + Pdef(sym, Pbind( + \instrument, inst, \dur, dur, + \legato, 0.9, + \type, Pseq(notes.collect { |n| if(n > 0) { \note } { \rest } }, inf), + \midinote, Pseq(notes.collect { |n| if(n > 0) { n + (octave * 12) } { 60 } }, inf), + \cutoff, cutoff, + \rq, rq, + \attack, attack, + \release, release, + \drive, drive, + \sawAmt, sawAmt, + \detune, detune, + \subAmt, subAmt, + \pan, pan, + \amp, amp * boost, + \scBus, if (~scBus.notNil) { ~scBus.index } { 0 }, + \scAmt, (~leadScAmt ?? 0.5), + )); + sym + }; +}; + +// ---------- ADD : enregistre (ou met a jour) une piste -------------- +~melTrackAdd = { |name, params| + var existing = ~mel[name]; + var p = params ?? { () }; + if (existing.isNil) { + ~mel[name] = p; + } { + // Merge : on garde l'ancien et on ecrase avec les nouveaux champs + p.keysValuesDo { |k, v| existing[k] = v }; + ~mel[name] = existing; + }; + ~melTrackBuildPdef.(name); + ("[melTrack] add " ++ name).postln; + name +}; + +// ---------- REMOVE : stop + supprime du dict ------------------------ +~melTrackRemove = { |name| + var sym = (name.asString ++ "Seq").asSymbol; + Pdef(sym).stop; + Pdef(sym).clear; + ~mel[name] = nil; + ("[melTrack] remove " ++ name).postln; +}; + +// ---------- ON / OFF ----------------------------------------------- +~melTrackOn = { |name| + var sym = (name.asString ++ "Seq").asSymbol; + if (~mel[name].isNil) { + ("[melTrack] " ++ name ++ " inconnue").postln; + } { + ~melTrackBuildPdef.(name); + Pdef(sym).play; + ("[melTrack] ON " ++ name).postln; + }; +}; +~melTrackOff = { |name| + var sym = (name.asString ++ "Seq").asSymbol; + Pdef(sym).stop; + ("[melTrack] OFF " ++ name).postln; +}; + +// ---------- SET / SETALL : edition + rebuild ------------------------ +~melTrackSet = { |name, key, val| + var t = ~mel[name]; + if (t.isNil) { + ("[melTrack] " ++ name ++ " inconnue").postln; + } { + t[key] = val; + ~melTrackBuildPdef.(name); + ("[melTrack] " ++ name ++ " ." ++ key ++ " = " ++ val).postln; + }; +}; +~melTrackSetAll = { |name, params| + var t = ~mel[name]; + if (t.isNil) { + ("[melTrack] " ++ name ++ " inconnue").postln; + } { + params.keysValuesDo { |k, v| t[k] = v }; + ~melTrackBuildPdef.(name); + ("[melTrack] " ++ name ++ " setAll " ++ params.keys.asArray).postln; + }; +}; + +// ---------- LIST ---------------------------------------------------- +~melTrackList = { + "=== melodic tracks ===".postln; + if (~mel.isEmpty) { + " (aucune piste)".postln; + } { + ~mel.keysValuesDo { |k, v| + var sym = (k.asString ++ "Seq").asSymbol; + // Pdef.player vaut nil si jamais joue, sinon a un EventStreamPlayer. + var pl = Pdef(sym).player; + var st = if (pl.notNil and: { pl.isPlaying }) { "ON " } { "off" }; + (" [" ++ st ++ "] " ++ k + ++ " inst=" ++ (v[\inst] ? \unknown) + ++ " amp=" ++ (v[\amp] ? \unknown) + ++ " oct=" ++ (v[\octave] ? 0) + ++ " notes=" ++ (v[\notes].notNil.if({v[\notes].size}, {0})) ++ "n" + ).postln; + }; + }; +}; + +// ---------- SOLO / UNSOLO ------------------------------------------ +~melTrackSolo = { |name| + if (~mel[name].isNil) { + ("[melTrack] solo : " ++ name ++ " inconnue").postln; + } { + // Backup amp courant avant le solo (si pas deja en solo) + if (~melSoloed.isNil) { + ~melSoloed = (); + ~mel.keysValuesDo { |k, v| ~melSoloed[k] = (v[\amp] ? 0) }; + }; + ~mel.keysValuesDo { |k, v| + if (k != name) { + v[\amp] = 0; + ~melTrackBuildPdef.(k); + }; + }; + ("[melTrack] solo " ++ name).postln; + }; +}; +~melTrackUnsolo = { + if (~melSoloed.isNil) { + "[melTrack] pas de solo actif".postln; + } { + ~melSoloed.keysValuesDo { |k, v| + if (~mel[k].notNil) { + ~mel[k][\amp] = v; + ~melTrackBuildPdef.(k); + }; + }; + ~melSoloed = nil; + "[melTrack] unsolo (amps restaures)".postln; + }; +}; + +// ---------- CHOKE : stop tout --------------------------------------- +~melTrackChoke = { + ~mel.keysDo { |k| + var sym = (k.asString ++ "Seq").asSymbol; + Pdef(sym).stop; + }; + "[melTrack] choke (toutes les pistes off)".postln; +}; + +// ---------- RELOAD -------------------------------------------------- +~melTrackReload = { |name| + if (~mel[name].isNil) { + ("[melTrack] reload : " ++ name ++ " inconnue").postln; + } { + ~melTrackBuildPdef.(name); + ("[melTrack] reload " ++ name).postln; + }; +}; +~melTrackReloadAll = { + ~mel.keysDo { |k| ~melTrackBuildPdef.(k) }; + ("[melTrack] reloadAll (" ++ ~mel.size ++ " pistes)").postln; +}; + +// ---------- HARMONIE AUTO : derive une piste d'une autre ----------- +// ~melTrackHarm.(\src, \dst, \preset) +// presets : \third \fifth \sixth \octave \counter \bassline \arp +~melTrackHarm = { |srcName, dstName, preset = \third| + var src = ~mel[srcName]; + if (src.isNil) { + ("[melTrack] harm : src " ++ srcName ++ " inconnue").postln; + } { + var srcNotes = src[\notes] ?? { (0 ! 32) }; + var dstNotes, dstInst, dstAmp, dstDur, dstAttack, dstRelease; + switch (preset, + \third, { + dstNotes = (~genThirdHarmony ?? {{ |m, s = 4| m.collect { |n| if(n>0){n+s}{0} } }}).(srcNotes); + dstInst = \warmPad; dstAmp = 0.12; dstDur = 0.25; + dstAttack = 0.3; dstRelease = 1.2; + }, + \fifth, { + dstNotes = (~genFifthHarmony ?? {{ |m| m.collect { |n| if(n>0){n+7}{0} } }}).(srcNotes); + dstInst = \warmPad; dstAmp = 0.12; dstDur = 0.25; + dstAttack = 0.3; dstRelease = 1.2; + }, + \sixth, { + dstNotes = srcNotes.collect { |n| if (n > 0) { n + 9 } { 0 } }; + dstInst = \warmPad; dstAmp = 0.12; dstDur = 0.25; + dstAttack = 0.3; dstRelease = 1.2; + }, + \octave, { + dstNotes = srcNotes.collect { |n| if (n > 0) { n + 12 } { 0 } }; + dstInst = \organLead; dstAmp = 0.12; dstDur = 0.25; + dstAttack = 0.005; dstRelease = 0.2; + }, + \counter, { + dstNotes = (~genCounterMelody + ?? {{ |m, p = 132| m.collect { |n| if(n>0){(p-n).max(48).min(96)}{0} } }} + ).(srcNotes); + dstInst = \pluck; dstAmp = 0.13; dstDur = 0.25; + dstAttack = 0.005; dstRelease = 0.4; + }, + \bassline, { + dstNotes = srcNotes.collect { |n| if (n > 0) { (n - 24).max(24) } { 0 } }; + dstInst = \subBoom; dstAmp = 0.30; dstDur = 0.5; + dstAttack = 0.005; dstRelease = 0.6; + }, + \arp, { + dstNotes = srcNotes.collect { |n| if (n > 0) { n + 12 } { 0 } }; + dstInst = \pluck; dstAmp = 0.13; dstDur = 0.125; + dstAttack = 0.001; dstRelease = 0.2; + } + ); + ~melTrackAdd.(dstName, ( + notes: dstNotes, inst: dstInst, amp: dstAmp, dur: dstDur, + attack: dstAttack, release: dstRelease, + cutoff: 2500, rq: 0.5, drive: 1.2, boost: 1.0, pan: 0, octave: 0 + )); + ("[melTrack] harm " ++ srcName ++ " -> " ++ dstName ++ " (" ++ preset ++ ")").postln; + }; +}; + +// ---------- LIEN MELODYBANK : tirage par genre ---------------------- +~melTrackByGenre = { |name, genre| + var pool = ~melodyBank !? { ~melodyBank[genre] }; + if (pool.isNil or: { pool.size == 0 }) { + ("[melTrack] byGenre : " ++ genre ++ " inconnu / vide").postln; + } { + var key = pool.choose; + var notes = currentEnvironment[key]; + if (notes.notNil and: { notes.isArray }) { + if (~mel[name].isNil) { + ~melTrackAdd.(name, (notes: notes.copy)); + } { + ~mel[name][\notes] = notes.copy; + ~melTrackBuildPdef.(name); + }; + ("[melTrack] byGenre " ++ name ++ " <- " ++ genre ++ "/" ++ key).postln; + } { ("[melTrack] byGenre : " ++ key ++ " inconnue").postln }; + }; +}; + +// ---------- 3 PISTES PAR DEFAUT (inactives) ------------------------- +// m1 = lead pad, m2 = counter pluck, m3 = sub boom +~melTrackAdd.(\m1, ( + notes: (~m1 ?? { (0 ! 32) }).copy, + inst: \pad, cutoff: 2400, rq: 0.5, + attack: 0.4, release: 1.5, drive: 1.0, + amp: 0.14, dur: 0.25, boost: 1.0, pan: 0, octave: 0 +)); +~melTrackAdd.(\m2, ( + notes: (~m25 ?? { (0 ! 32) }).copy, + inst: \pluck, cutoff: 4500, rq: 0.5, + attack: 0.005, release: 0.4, drive: 1.0, + amp: 0.12, dur: 0.25, boost: 1.0, pan: -0.3, octave: 0 +)); +~melTrackAdd.(\m3, ( + notes: (~m31 ?? { (0 ! 32) }).copy, + inst: \subBoom, cutoff: 800, rq: 0.4, + attack: 0.005, release: 0.6, drive: 1.2, + amp: 0.25, dur: 0.5, boost: 1.0, pan: 0, octave: -1 +)); + +"[melodies/tracks] systeme multi-pistes pret -- 3 pistes par defaut (m1 m2 m3, off). ~melTrackOn.(\\m1) pour lancer.".postln; +) diff --git a/sound_algo/palette/melodies/xlong.scd b/sound_algo/palette/melodies/xlong.scd new file mode 100644 index 0000000..744e1f3 --- /dev/null +++ b/sound_algo/palette/melodies/xlong.scd @@ -0,0 +1,144 @@ +// ===================================================================== +// palette/melodies/xlong.scd +// ~mxl1..~mxl15 -- 15 patterns melodiques de 96 pas (6 mesures, AABA) +// +// Charge par palette/melodies/index.scd. Un seul bloc top-level. +// ===================================================================== +( +~mxl1 = [ + 60, 0, 0, 0, 67, 0, 0, 0, 72, 0, 0, 0, 70, 0, 0, 0, + 60, 0, 0, 0, 67, 0, 70, 0, 72, 0, 0, 0, 75, 0, 72, 70, + 60, 67, 72, 67, 65, 67, 70, 72, 75, 72, 70, 67, 70, 72, 75, 79, + 60, 67, 72, 75, 72, 67, 60, 67, 65, 72, 77, 79, 77, 72, 65, 72, + 79, 77, 75, 72, 79, 77, 75, 72, 82, 79, 77, 75, 84, 82, 79, 77, + 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0, 0 +]; + +~mxl2 = [ + 63, 0, 70, 0, 65, 0, 72, 0, 63, 0, 70, 0, 65, 0, 72, 75, + 65, 0, 72, 0, 67, 0, 75, 0, 65, 0, 72, 0, 67, 0, 75, 79, + 63, 70, 65, 72, 67, 75, 70, 77, 72, 79, 75, 82, 77, 84, 79, 86, + 65, 72, 67, 75, 70, 77, 72, 79, 75, 82, 77, 84, 79, 86, 82, 89, + 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 65, 0, 67, 0, + 65, 67, 63, 65, 60, 63, 65, 67, 63, 65, 60, 63, 0, 0, 0, 0 +]; + +~mxl3 = [ + 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 70, 0, 0, 0, 72, 0, 0, 0, 75, 0, 0, 0, + 77, 0, 0, 0, 75, 0, 0, 0, 72, 0, 0, 0, 70, 0, 0, 0, + 67, 0, 0, 0, 65, 0, 0, 0, 63, 0, 0, 0, 60, 0, 0, 0 +]; + +~mxl4 = [ + 60, 61, 0, 64, 65, 0, 67, 68, 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 68, 71, 72, 71, 68, 67, 65, 64, 61, 60, 0, + 63, 64, 67, 68, 70, 71, 0, 73, 75, 73, 71, 70, 68, 67, 64, 63, + 60, 61, 64, 65, 67, 68, 71, 72, 75, 72, 71, 68, 67, 64, 61, 60, + 65, 67, 68, 71, 72, 73, 76, 75, 76, 75, 73, 72, 71, 68, 67, 65, + 72, 73, 76, 75, 73, 72, 71, 68, 67, 65, 64, 61, 60, 0, 0, 0 +]; + +~mxl5 = [ + 36, 0, 48, 0, 36, 39, 0, 48, 36, 0, 51, 39, 0, 36, 48, 0, + 36, 0, 48, 51, 36, 39, 48, 51, 39, 0, 36, 48, 0, 39, 0, 36, + 36, 51, 48, 36, 39, 0, 51, 48, 36, 0, 51, 53, 39, 36, 48, 0, + 36, 53, 51, 48, 39, 0, 36, 48, 36, 0, 51, 0, 48, 39, 36, 0, + 39, 0, 51, 0, 39, 41, 0, 51, 39, 0, 53, 41, 0, 39, 51, 0, + 36, 39, 41, 43, 41, 39, 36, 0, 36, 0, 48, 0, 36, 0, 0, 0 +]; + +~mxl6 = [ + 67, 0, 72, 0, 70, 0, 67, 65, 63, 0, 67, 0, 70, 0, 72, 75, + 75, 0, 72, 0, 70, 0, 67, 65, 63, 0, 60, 0, 65, 0, 67, 70, + 72, 0, 75, 0, 79, 0, 75, 72, 70, 0, 75, 0, 72, 0, 70, 67, + 72, 0, 75, 0, 79, 0, 82, 79, 75, 0, 79, 0, 75, 0, 72, 70, + 79, 0, 75, 0, 72, 0, 70, 67, 65, 0, 67, 0, 70, 0, 72, 75, + 72, 0, 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0, 0 +]; + +~mxl7 = [ + 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 0, + 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 0, 60, 67, 65, 70, + 63, 70, 67, 0, 63, 70, 67, 0, 65, 72, 70, 0, 65, 72, 70, 75, + 67, 74, 72, 0, 67, 74, 72, 77, 70, 77, 75, 0, 72, 79, 77, 82, + 63, 70, 67, 0, 63, 70, 67, 0, 60, 67, 65, 70, 60, 67, 65, 70, + 60, 67, 65, 0, 60, 67, 65, 0, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~mxl8 = [ + 60, 61, 63, 0, 65, 63, 61, 60, 0, 67, 65, 0, 68, 67, 65, 63, + 60, 61, 63, 0, 65, 63, 61, 60, 67, 65, 63, 61, 60, 0, 0, 0, + 63, 65, 67, 0, 68, 67, 65, 63, 0, 70, 68, 0, 72, 70, 68, 67, + 65, 67, 68, 0, 70, 68, 67, 65, 0, 72, 70, 0, 73, 72, 70, 68, + 67, 68, 70, 0, 72, 70, 68, 67, 65, 63, 61, 60, 61, 63, 65, 67, + 65, 0, 63, 0, 61, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0 +]; + +~mxl9 = [ + 60, 0, 0, 0, 60, 0, 60, 0, 73, 0, 0, 0, 73, 0, 73, 0, + 60, 60, 0, 73, 73, 0, 60, 73, 79, 0, 73, 0, 60, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 65, 0, 78, 0, 0, 0, 78, 0, 78, 0, + 65, 65, 0, 78, 78, 0, 65, 78, 84, 0, 78, 0, 65, 0, 0, 0, + 67, 0, 0, 0, 67, 0, 80, 0, 80, 67, 80, 67, 80, 84, 80, 67, + 72, 84, 72, 84, 72, 84, 72, 84, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~mxl10 = [ + 67, 67, 0, 70, 72, 0, 70, 67, 65, 0, 67, 0, 0, 0, 0, 0, + 67, 67, 0, 70, 72, 0, 75, 72, 70, 0, 67, 0, 0, 0, 0, 0, + 72, 75, 0, 77, 79, 0, 77, 75, 72, 0, 70, 0, 67, 0, 65, 0, + 77, 79, 0, 80, 79, 0, 77, 75, 72, 0, 75, 0, 77, 0, 79, 0, + 72, 75, 0, 77, 79, 0, 84, 79, 77, 0, 75, 0, 72, 0, 70, 0, + 67, 0, 70, 0, 72, 0, 75, 0, 72, 70, 67, 65, 67, 0, 0, 0 +]; + +~mxl11 = [ + 72, 0, 0, 67, 0, 65, 0, 62, 60, 0, 62, 0, 65, 0, 67, 72, + 74, 0, 0, 69, 0, 67, 0, 65, 62, 0, 65, 0, 67, 0, 72, 0, + 74, 0, 77, 0, 79, 0, 77, 74, 72, 0, 69, 0, 67, 0, 65, 62, + 77, 0, 79, 0, 81, 0, 79, 77, 74, 0, 72, 0, 69, 0, 67, 65, + 79, 81, 84, 86, 84, 81, 79, 77, 74, 72, 69, 67, 65, 62, 60, 0, + 72, 0, 67, 0, 65, 0, 62, 0, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +~mxl12 = [ + 48, 0, 54, 0, 48, 0, 54, 0, 60, 0, 54, 0, 48, 0, 54, 0, + 48, 54, 60, 54, 48, 0, 54, 0, 60, 54, 48, 54, 60, 54, 48, 0, + 36, 0, 42, 0, 36, 0, 42, 0, 48, 0, 42, 0, 36, 0, 42, 0, + 48, 54, 60, 66, 60, 54, 48, 42, 36, 42, 48, 54, 60, 54, 48, 36, + 48, 54, 60, 66, 72, 66, 60, 54, 48, 42, 36, 42, 48, 54, 60, 66, + 72, 0, 66, 0, 60, 0, 54, 0, 48, 0, 36, 0, 0, 0, 0, 0 +]; + +~mxl13 = [ + 60, 64, 67, 72, 60, 64, 67, 72, 62, 65, 69, 74, 62, 65, 69, 74, + 63, 67, 70, 75, 63, 67, 70, 75, 60, 64, 67, 72, 65, 67, 70, 72, + 65, 69, 72, 77, 65, 69, 72, 77, 67, 71, 74, 79, 67, 71, 74, 79, + 72, 76, 79, 84, 72, 76, 79, 84, 75, 79, 82, 87, 75, 79, 82, 87, + 79, 83, 86, 91, 79, 83, 86, 91, 77, 81, 84, 89, 77, 81, 84, 89, + 72, 76, 79, 84, 65, 69, 72, 77, 60, 64, 67, 72, 60, 64, 67, 72 +]; + +~mxl14 = [ + 60, 61, 0, 64, 65, 0, 67, 68, 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 0, 68, 71, 72, 71, 68, 67, 65, 64, 61, 60, + 65, 67, 0, 68, 71, 0, 72, 73, 76, 0, 73, 72, 71, 68, 0, 67, + 72, 73, 76, 73, 72, 71, 68, 67, 65, 64, 61, 60, 64, 65, 67, 68, + 71, 72, 73, 76, 79, 76, 73, 72, 71, 68, 67, 65, 64, 61, 60, 61, + 65, 67, 71, 72, 73, 76, 73, 72, 71, 68, 67, 65, 61, 60, 0, 0 +]; + +~mxl15 = [ + 72, 0, 70, 0, 67, 70, 0, 65, 63, 0, 65, 67, 70, 0, 72, 75, + 77, 0, 75, 0, 72, 75, 0, 70, 67, 0, 70, 72, 75, 0, 77, 79, + 75, 0, 77, 0, 75, 72, 0, 70, 67, 0, 65, 67, 70, 0, 75, 72, + 79, 0, 82, 0, 79, 77, 0, 75, 72, 0, 70, 75, 77, 0, 82, 79, + 75, 0, 72, 0, 70, 67, 0, 65, 63, 0, 60, 0, 65, 0, 67, 0, + 70, 0, 67, 0, 65, 0, 63, 0, 60, 0, 0, 0, 0, 0, 0, 0 +]; + +"[melodies/xlong] mxl1..mxl15 (96 steps) prets".postln; +) diff --git a/sound_algo/palette/melodies/xlong/mxl1.scd b/sound_algo/palette/melodies/xlong/mxl1.scd new file mode 100644 index 0000000..4ad926f --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl1.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl1 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxl1 = [ + 60, 0, 0, 0, 67, 0, 0, 0, + 72, 0, 0, 0, 70, 0, 0, 0, + 60, 0, 0, 0, 67, 0, 70, 0, + 72, 0, 0, 0, 75, 0, 72, 70, + 60, 67, 72, 67, 65, 67, 70, 72, + 75, 72, 70, 67, 70, 72, 75, 79, + 60, 67, 72, 75, 72, 67, 60, 67, + 65, 72, 77, 79, 77, 72, 65, 72, + 79, 77, 75, 72, 79, 77, 75, 72, + 82, 79, 77, 75, 84, 82, 79, 77, + 72, 0, 70, 0, 67, 0, 65, 0, + 63, 0, 60, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl10.scd b/sound_algo/palette/melodies/xlong/mxl10.scd new file mode 100644 index 0000000..a1f83da --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl10.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl10 -- xlong melody (96 steps), genre: pop +// ===================================================================== +( +~mxl10 = [ + 67, 67, 0, 70, 72, 0, 70, 67, + 65, 0, 67, 0, 0, 0, 0, 0, + 67, 67, 0, 70, 72, 0, 75, 72, + 70, 0, 67, 0, 0, 0, 0, 0, + 72, 75, 0, 77, 79, 0, 77, 75, + 72, 0, 70, 0, 67, 0, 65, 0, + 77, 79, 0, 80, 79, 0, 77, 75, + 72, 0, 75, 0, 77, 0, 79, 0, + 72, 75, 0, 77, 79, 0, 84, 79, + 77, 0, 75, 0, 72, 0, 70, 0, + 67, 0, 70, 0, 72, 0, 75, 0, + 72, 70, 67, 65, 67, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl11.scd b/sound_algo/palette/melodies/xlong/mxl11.scd new file mode 100644 index 0000000..b748e4a --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl11.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl11 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxl11 = [ + 72, 0, 0, 67, 0, 65, 0, 62, + 60, 0, 62, 0, 65, 0, 67, 72, + 74, 0, 0, 69, 0, 67, 0, 65, + 62, 0, 65, 0, 67, 0, 72, 0, + 74, 0, 77, 0, 79, 0, 77, 74, + 72, 0, 69, 0, 67, 0, 65, 62, + 77, 0, 79, 0, 81, 0, 79, 77, + 74, 0, 72, 0, 69, 0, 67, 65, + 79, 81, 84, 86, 84, 81, 79, 77, + 74, 72, 69, 67, 65, 62, 60, 0, + 72, 0, 67, 0, 65, 0, 62, 0, + 60, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl12.scd b/sound_algo/palette/melodies/xlong/mxl12.scd new file mode 100644 index 0000000..8109975 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl12.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl12 -- xlong melody (96 steps), genre: tribal +// ===================================================================== +( +~mxl12 = [ + 48, 0, 54, 0, 48, 0, 54, 0, + 60, 0, 54, 0, 48, 0, 54, 0, + 48, 54, 60, 54, 48, 0, 54, 0, + 60, 54, 48, 54, 60, 54, 48, 0, + 36, 0, 42, 0, 36, 0, 42, 0, + 48, 0, 42, 0, 36, 0, 42, 0, + 48, 54, 60, 66, 60, 54, 48, 42, + 36, 42, 48, 54, 60, 54, 48, 36, + 48, 54, 60, 66, 72, 66, 60, 54, + 48, 42, 36, 42, 48, 54, 60, 66, + 72, 0, 66, 0, 60, 0, 54, 0, + 48, 0, 36, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl13.scd b/sound_algo/palette/melodies/xlong/mxl13.scd new file mode 100644 index 0000000..47b63c6 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl13.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl13 -- xlong melody (96 steps), genre: chiptune +// ===================================================================== +( +~mxl13 = [ + 60, 64, 67, 72, 60, 64, 67, 72, + 62, 65, 69, 74, 62, 65, 69, 74, + 63, 67, 70, 75, 63, 67, 70, 75, + 60, 64, 67, 72, 65, 67, 70, 72, + 65, 69, 72, 77, 65, 69, 72, 77, + 67, 71, 74, 79, 67, 71, 74, 79, + 72, 76, 79, 84, 72, 76, 79, 84, + 75, 79, 82, 87, 75, 79, 82, 87, + 79, 83, 86, 91, 79, 83, 86, 91, + 77, 81, 84, 89, 77, 81, 84, 89, + 72, 76, 79, 84, 65, 69, 72, 77, + 60, 64, 67, 72, 60, 64, 67, 72 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl14.scd b/sound_algo/palette/melodies/xlong/mxl14.scd new file mode 100644 index 0000000..0c8367b --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl14.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl14 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxl14 = [ + 60, 61, 0, 64, 65, 0, 67, 68, + 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 0, 68, 71, + 72, 71, 68, 67, 65, 64, 61, 60, + 65, 67, 0, 68, 71, 0, 72, 73, + 76, 0, 73, 72, 71, 68, 0, 67, + 72, 73, 76, 73, 72, 71, 68, 67, + 65, 64, 61, 60, 64, 65, 67, 68, + 71, 72, 73, 76, 79, 76, 73, 72, + 71, 68, 67, 65, 64, 61, 60, 61, + 65, 67, 71, 72, 73, 76, 73, 72, + 71, 68, 67, 65, 61, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl15.scd b/sound_algo/palette/melodies/xlong/mxl15.scd new file mode 100644 index 0000000..4d34dc4 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl15.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl15 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxl15 = [ + 72, 0, 70, 0, 67, 70, 0, 65, + 63, 0, 65, 67, 70, 0, 72, 75, + 77, 0, 75, 0, 72, 75, 0, 70, + 67, 0, 70, 72, 75, 0, 77, 79, + 75, 0, 77, 0, 75, 72, 0, 70, + 67, 0, 65, 67, 70, 0, 75, 72, + 79, 0, 82, 0, 79, 77, 0, 75, + 72, 0, 70, 75, 77, 0, 82, 79, + 75, 0, 72, 0, 70, 67, 0, 65, + 63, 0, 60, 0, 65, 0, 67, 0, + 70, 0, 67, 0, 65, 0, 63, 0, + 60, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl2.scd b/sound_algo/palette/melodies/xlong/mxl2.scd new file mode 100644 index 0000000..8c28ba2 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl2.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl2 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxl2 = [ + 63, 0, 70, 0, 65, 0, 72, 0, + 63, 0, 70, 0, 65, 0, 72, 75, + 65, 0, 72, 0, 67, 0, 75, 0, + 65, 0, 72, 0, 67, 0, 75, 79, + 63, 70, 65, 72, 67, 75, 70, 77, + 72, 79, 75, 82, 77, 84, 79, 86, + 65, 72, 67, 75, 70, 77, 72, 79, + 75, 82, 77, 84, 79, 86, 82, 89, + 72, 0, 70, 0, 67, 0, 65, 0, + 63, 0, 60, 0, 65, 0, 67, 0, + 65, 67, 63, 65, 60, 63, 65, 67, + 63, 65, 60, 63, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl3.scd b/sound_algo/palette/melodies/xlong/mxl3.scd new file mode 100644 index 0000000..21f5f73 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl3.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl3 -- xlong melody (96 steps), genre: ambient +// ===================================================================== +( +~mxl3 = [ + 60, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 70, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 70, 0, 0, 0, + 72, 0, 0, 0, 75, 0, 0, 0, + 77, 0, 0, 0, 75, 0, 0, 0, + 72, 0, 0, 0, 70, 0, 0, 0, + 67, 0, 0, 0, 65, 0, 0, 0, + 63, 0, 0, 0, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl4.scd b/sound_algo/palette/melodies/xlong/mxl4.scd new file mode 100644 index 0000000..91ee3ba --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl4.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl4 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxl4 = [ + 60, 61, 0, 64, 65, 0, 67, 68, + 71, 0, 68, 67, 65, 64, 0, 61, + 60, 0, 64, 65, 67, 68, 71, 72, + 71, 68, 67, 65, 64, 61, 60, 0, + 63, 64, 67, 68, 70, 71, 0, 73, + 75, 73, 71, 70, 68, 67, 64, 63, + 60, 61, 64, 65, 67, 68, 71, 72, + 75, 72, 71, 68, 67, 64, 61, 60, + 65, 67, 68, 71, 72, 73, 76, 75, + 76, 75, 73, 72, 71, 68, 67, 65, + 72, 73, 76, 75, 73, 72, 71, 68, + 67, 65, 64, 61, 60, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl5.scd b/sound_algo/palette/melodies/xlong/mxl5.scd new file mode 100644 index 0000000..ca1de11 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl5.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl5 -- xlong melody (96 steps), genre: acid +// ===================================================================== +( +~mxl5 = [ + 36, 0, 48, 0, 36, 39, 0, 48, + 36, 0, 51, 39, 0, 36, 48, 0, + 36, 0, 48, 51, 36, 39, 48, 51, + 39, 0, 36, 48, 0, 39, 0, 36, + 36, 51, 48, 36, 39, 0, 51, 48, + 36, 0, 51, 53, 39, 36, 48, 0, + 36, 53, 51, 48, 39, 0, 36, 48, + 36, 0, 51, 0, 48, 39, 36, 0, + 39, 0, 51, 0, 39, 41, 0, 51, + 39, 0, 53, 41, 0, 39, 51, 0, + 36, 39, 41, 43, 41, 39, 36, 0, + 36, 0, 48, 0, 36, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl6.scd b/sound_algo/palette/melodies/xlong/mxl6.scd new file mode 100644 index 0000000..2afb85b --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl6.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl6 -- xlong melody (96 steps), genre: retro +// ===================================================================== +( +~mxl6 = [ + 67, 0, 72, 0, 70, 0, 67, 65, + 63, 0, 67, 0, 70, 0, 72, 75, + 75, 0, 72, 0, 70, 0, 67, 65, + 63, 0, 60, 0, 65, 0, 67, 70, + 72, 0, 75, 0, 79, 0, 75, 72, + 70, 0, 75, 0, 72, 0, 70, 67, + 72, 0, 75, 0, 79, 0, 82, 79, + 75, 0, 79, 0, 75, 0, 72, 70, + 79, 0, 75, 0, 72, 0, 70, 67, + 65, 0, 67, 0, 70, 0, 72, 75, + 72, 0, 70, 0, 67, 0, 65, 0, + 63, 0, 60, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl7.scd b/sound_algo/palette/melodies/xlong/mxl7.scd new file mode 100644 index 0000000..10675ea --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl7.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl7 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxl7 = [ + 60, 67, 65, 0, 60, 67, 65, 0, + 60, 67, 65, 0, 60, 67, 65, 0, + 60, 67, 65, 0, 60, 67, 65, 0, + 60, 67, 65, 0, 60, 67, 65, 70, + 63, 70, 67, 0, 63, 70, 67, 0, + 65, 72, 70, 0, 65, 72, 70, 75, + 67, 74, 72, 0, 67, 74, 72, 77, + 70, 77, 75, 0, 72, 79, 77, 82, + 63, 70, 67, 0, 63, 70, 67, 0, + 60, 67, 65, 70, 60, 67, 65, 70, + 60, 67, 65, 0, 60, 67, 65, 0, + 60, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl8.scd b/sound_algo/palette/melodies/xlong/mxl8.scd new file mode 100644 index 0000000..1eef2bb --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl8.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl8 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxl8 = [ + 60, 61, 63, 0, 65, 63, 61, 60, + 0, 67, 65, 0, 68, 67, 65, 63, + 60, 61, 63, 0, 65, 63, 61, 60, + 67, 65, 63, 61, 60, 0, 0, 0, + 63, 65, 67, 0, 68, 67, 65, 63, + 0, 70, 68, 0, 72, 70, 68, 67, + 65, 67, 68, 0, 70, 68, 67, 65, + 0, 72, 70, 0, 73, 72, 70, 68, + 67, 68, 70, 0, 72, 70, 68, 67, + 65, 63, 61, 60, 61, 63, 65, 67, + 65, 0, 63, 0, 61, 0, 60, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxl9.scd b/sound_algo/palette/melodies/xlong/mxl9.scd new file mode 100644 index 0000000..13e7257 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxl9.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxl9 -- xlong melody (96 steps), genre: industrial +// ===================================================================== +( +~mxl9 = [ + 60, 0, 0, 0, 60, 0, 60, 0, + 73, 0, 0, 0, 73, 0, 73, 0, + 60, 60, 0, 73, 73, 0, 60, 73, + 79, 0, 73, 0, 60, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 65, 0, + 78, 0, 0, 0, 78, 0, 78, 0, + 65, 65, 0, 78, 78, 0, 65, 78, + 84, 0, 78, 0, 65, 0, 0, 0, + 67, 0, 0, 0, 67, 0, 80, 0, + 80, 67, 80, 67, 80, 84, 80, 67, + 72, 84, 72, 84, 72, 84, 72, 84, + 60, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAcid100.scd b/sound_algo/palette/melodies/xlong/mxlAcid100.scd new file mode 100644 index 0000000..96689cb --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAcid100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAcid100 -- xlong melody (96 steps), genre: acid +// ===================================================================== +( +~mxlAcid100 = [ + 47, 40, 48, 0, 0, 38, 36, 48, + 0, 53, 60, 60, 47, 40, 53, 36, + 47, 52, 45, 55, 55, 36, 56, 59, + 47, 40, 48, 0, 0, 38, 36, 48, + 0, 53, 60, 60, 47, 40, 53, 36, + 47, 52, 45, 55, 55, 36, 56, 59, + 0, 0, 60, 50, 55, 0, 50, 36, + 47, 59, 38, 45, 38, 55, 45, 52, + 0, 0, 47, 41, 47, 59, 0, 0, + 47, 40, 48, 0, 0, 38, 36, 48, + 0, 55, 59, 59, 45, 38, 54, 34, + 46, 50, 44, 56, 56, 35, 57, 57 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAcid101.scd b/sound_algo/palette/melodies/xlong/mxlAcid101.scd new file mode 100644 index 0000000..8d0039d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAcid101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAcid101 -- xlong melody (96 steps), genre: acid +// ===================================================================== +( +~mxlAcid101 = [ + 45, 43, 54, 50, 45, 49, 0, 57, + 49, 43, 51, 38, 55, 37, 0, 37, + 45, 50, 46, 47, 37, 45, 39, 47, + 45, 43, 54, 50, 45, 49, 0, 57, + 49, 43, 51, 38, 55, 37, 0, 37, + 45, 50, 46, 47, 37, 45, 39, 47, + 49, 37, 43, 0, 37, 49, 49, 0, + 37, 43, 38, 40, 38, 55, 49, 50, + 45, 59, 55, 50, 0, 0, 0, 38, + 45, 43, 54, 50, 45, 49, 0, 57, + 49, 43, 51, 38, 55, 37, 0, 37, + 45, 50, 46, 47, 37, 45, 39, 47 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAcid102.scd b/sound_algo/palette/melodies/xlong/mxlAcid102.scd new file mode 100644 index 0000000..71aa399 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAcid102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAcid102 -- xlong melody (96 steps), genre: acid +// ===================================================================== +( +~mxlAcid102 = [ + 0, 40, 55, 54, 0, 47, 47, 50, + 38, 50, 43, 0, 54, 52, 0, 59, + 37, 57, 0, 37, 57, 52, 43, 55, + 57, 50, 0, 42, 49, 54, 40, 43, + 0, 0, 0, 42, 54, 0, 42, 49, + 49, 38, 48, 0, 0, 0, 59, 49, + 0, 47, 37, 59, 0, 50, 0, 49, + 37, 49, 54, 47, 0, 47, 0, 43, + 37, 37, 54, 37, 0, 40, 55, 37, + 0, 59, 0, 55, 42, 45, 41, 55, + 0, 57, 0, 47, 49, 49, 40, 50, + 0, 40, 0, 52, 47, 37, 0, 38 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAcid103.scd b/sound_algo/palette/melodies/xlong/mxlAcid103.scd new file mode 100644 index 0000000..1a11ebc --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAcid103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAcid103 -- xlong melody (96 steps), genre: acid +// ===================================================================== +( +~mxlAcid103 = [ + 59, 38, 54, 38, 55, 38, 36, 45, + 43, 55, 55, 59, 0, 0, 52, 50, + 0, 47, 50, 38, 43, 36, 42, 60, + 59, 38, 54, 38, 55, 38, 36, 45, + 43, 55, 55, 59, 0, 0, 52, 50, + 0, 47, 50, 38, 43, 36, 42, 60, + 54, 36, 36, 47, 52, 38, 60, 60, + 52, 0, 38, 42, 57, 0, 57, 55, + 40, 40, 45, 54, 0, 0, 47, 38, + 59, 38, 54, 38, 55, 38, 36, 45, + 43, 55, 55, 59, 0, 0, 52, 50, + 0, 47, 50, 38, 43, 36, 42, 60 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAcid104.scd b/sound_algo/palette/melodies/xlong/mxlAcid104.scd new file mode 100644 index 0000000..1acd3dd --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAcid104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAcid104 -- xlong melody (96 steps), genre: acid +// ===================================================================== +( +~mxlAcid104 = [ + 45, 57, 57, 38, 59, 40, 58, 49, + 57, 0, 58, 38, 45, 0, 44, 0, + 40, 40, 41, 42, 57, 49, 37, 42, + 45, 57, 57, 38, 59, 40, 58, 49, + 57, 0, 58, 38, 45, 0, 44, 0, + 40, 40, 41, 42, 57, 49, 37, 42, + 54, 0, 54, 38, 0, 0, 52, 56, + 59, 0, 0, 54, 45, 52, 47, 57, + 0, 49, 38, 49, 0, 0, 45, 38, + 45, 57, 57, 38, 59, 40, 58, 49, + 57, 0, 58, 38, 45, 0, 44, 0, + 40, 40, 41, 42, 57, 49, 37, 42 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAcid105.scd b/sound_algo/palette/melodies/xlong/mxlAcid105.scd new file mode 100644 index 0000000..f07e1b2 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAcid105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAcid105 -- xlong melody (96 steps), genre: acid +// ===================================================================== +( +~mxlAcid105 = [ + 38, 0, 40, 50, 0, 36, 36, 0, + 36, 59, 42, 52, 43, 55, 38, 60, + 0, 47, 38, 0, 0, 38, 0, 0, + 40, 50, 38, 50, 59, 60, 38, 0, + 0, 59, 59, 0, 36, 52, 42, 43, + 43, 43, 54, 0, 0, 0, 36, 48, + 43, 55, 47, 42, 59, 60, 0, 0, + 0, 48, 0, 45, 43, 60, 45, 47, + 0, 54, 40, 45, 52, 57, 0, 0, + 0, 54, 43, 42, 0, 36, 45, 45, + 48, 58, 47, 46, 54, 52, 0, 58, + 52, 42, 38, 0, 58, 46, 48, 37 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAcid106.scd b/sound_algo/palette/melodies/xlong/mxlAcid106.scd new file mode 100644 index 0000000..9aa00a0 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAcid106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAcid106 -- xlong melody (96 steps), genre: acid +// ===================================================================== +( +~mxlAcid106 = [ + 54, 0, 42, 49, 45, 54, 0, 40, + 52, 40, 59, 56, 0, 0, 49, 44, + 37, 52, 59, 56, 49, 45, 0, 49, + 54, 0, 42, 49, 45, 54, 0, 40, + 52, 40, 59, 56, 0, 0, 49, 44, + 37, 52, 59, 56, 49, 45, 0, 49, + 0, 59, 0, 56, 0, 47, 49, 37, + 57, 49, 58, 52, 54, 0, 37, 0, + 59, 56, 52, 0, 0, 54, 38, 38, + 54, 0, 42, 49, 45, 54, 0, 40, + 51, 39, 58, 54, 0, 0, 50, 42, + 35, 53, 57, 56, 47, 47, 0, 49 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAcid107.scd b/sound_algo/palette/melodies/xlong/mxlAcid107.scd new file mode 100644 index 0000000..1239206 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAcid107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAcid107 -- xlong melody (96 steps), genre: acid +// ===================================================================== +( +~mxlAcid107 = [ + 0, 0, 0, 52, 0, 36, 0, 59, + 0, 41, 0, 55, 40, 41, 0, 53, + 0, 0, 43, 38, 55, 60, 38, 0, + 47, 36, 0, 0, 40, 0, 0, 53, + 41, 53, 0, 47, 0, 40, 47, 41, + 47, 48, 49, 45, 48, 0, 0, 59, + 55, 55, 53, 0, 0, 55, 0, 55, + 0, 57, 41, 36, 0, 53, 40, 45, + 55, 0, 38, 59, 0, 48, 53, 0, + 43, 40, 0, 52, 47, 59, 41, 45, + 52, 60, 0, 0, 0, 47, 43, 0, + 55, 43, 0, 0, 0, 52, 0, 45 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAcid108.scd b/sound_algo/palette/melodies/xlong/mxlAcid108.scd new file mode 100644 index 0000000..9ea9671 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAcid108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAcid108 -- xlong melody (96 steps), genre: acid +// ===================================================================== +( +~mxlAcid108 = [ + 52, 47, 0, 43, 48, 47, 47, 0, + 0, 38, 55, 59, 40, 52, 53, 48, + 0, 0, 36, 43, 0, 57, 0, 45, + 0, 0, 0, 0, 52, 47, 0, 36, + 52, 50, 0, 0, 47, 59, 49, 52, + 0, 45, 0, 0, 47, 36, 43, 0, + 40, 47, 38, 40, 0, 0, 43, 48, + 0, 59, 0, 0, 0, 36, 45, 52, + 0, 0, 0, 55, 55, 47, 55, 53, + 0, 60, 38, 0, 52, 59, 0, 0, + 40, 54, 57, 0, 40, 60, 39, 45, + 53, 45, 56, 0, 42, 53, 41, 56 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAcid109.scd b/sound_algo/palette/melodies/xlong/mxlAcid109.scd new file mode 100644 index 0000000..7777b72 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAcid109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAcid109 -- xlong melody (96 steps), genre: acid +// ===================================================================== +( +~mxlAcid109 = [ + 0, 59, 44, 59, 42, 0, 52, 47, + 52, 52, 38, 56, 54, 52, 54, 45, + 57, 50, 56, 0, 42, 56, 0, 44, + 0, 59, 44, 59, 42, 0, 52, 47, + 52, 52, 38, 56, 54, 52, 54, 45, + 57, 50, 56, 0, 42, 56, 0, 44, + 0, 59, 0, 47, 0, 0, 47, 0, + 47, 59, 45, 59, 56, 47, 55, 0, + 0, 38, 56, 56, 45, 56, 57, 44, + 0, 59, 44, 59, 42, 0, 52, 47, + 54, 53, 39, 54, 56, 50, 54, 43, + 56, 51, 54, 0, 43, 54, 0, 45 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAmbient100.scd b/sound_algo/palette/melodies/xlong/mxlAmbient100.scd new file mode 100644 index 0000000..f98b671 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAmbient100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAmbient100 -- xlong melody (96 steps), genre: ambient +// ===================================================================== +( +~mxlAmbient100 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 0, 0, 83, + 0, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 0, 0, 83, + 0, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0, + 0, 83, 0, 0, 0, 0, 0, 0, + 77, 0, 0, 0, 65, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 81, + 0, 0, 0, 80, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAmbient101.scd b/sound_algo/palette/melodies/xlong/mxlAmbient101.scd new file mode 100644 index 0000000..8b18826 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAmbient101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAmbient101 -- xlong melody (96 steps), genre: ambient +// ===================================================================== +( +~mxlAmbient101 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 69, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 0, 84, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 69, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 0, 84, 0, 0, 0, 0, + 0, 0, 62, 83, 0, 79, 65, 0, + 0, 0, 0, 60, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 0, 86, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAmbient102.scd b/sound_algo/palette/melodies/xlong/mxlAmbient102.scd new file mode 100644 index 0000000..62c0b6d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAmbient102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAmbient102 -- xlong melody (96 steps), genre: ambient +// ===================================================================== +( +~mxlAmbient102 = [ + 71, 0, 74, 0, 0, 0, 74, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 64, 0, 0, 0, + 71, 0, 74, 0, 0, 0, 74, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 64, 0, 0, 0, + 0, 69, 79, 0, 0, 0, 0, 0, + 79, 0, 0, 0, 0, 0, 0, 81, + 0, 0, 0, 0, 0, 77, 0, 0, + 71, 0, 74, 0, 0, 0, 74, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 63, 0, 0, 65, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAmbient103.scd b/sound_algo/palette/melodies/xlong/mxlAmbient103.scd new file mode 100644 index 0000000..5d37821 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAmbient103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAmbient103 -- xlong melody (96 steps), genre: ambient +// ===================================================================== +( +~mxlAmbient103 = [ + 0, 0, 79, 0, 0, 79, 83, 0, + 0, 72, 0, 0, 84, 65, 0, 0, + 0, 0, 71, 0, 0, 0, 64, 0, + 0, 0, 0, 62, 0, 0, 0, 0, + 76, 0, 0, 60, 0, 67, 0, 0, + 64, 0, 0, 84, 0, 0, 0, 77, + 0, 0, 0, 0, 0, 84, 0, 0, + 0, 0, 76, 71, 0, 0, 69, 0, + 0, 0, 77, 72, 0, 0, 0, 0, + 0, 84, 0, 0, 60, 0, 0, 0, + 0, 61, 0, 0, 0, 0, 0, 0, + 85, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAmbient104.scd b/sound_algo/palette/melodies/xlong/mxlAmbient104.scd new file mode 100644 index 0000000..e1ad52d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAmbient104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAmbient104 -- xlong melody (96 steps), genre: ambient +// ===================================================================== +( +~mxlAmbient104 = [ + 60, 0, 0, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 0, + 0, 77, 0, 0, 0, 0, 60, 0, + 60, 0, 0, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 0, + 0, 77, 0, 0, 0, 0, 60, 0, + 0, 0, 0, 0, 0, 71, 0, 0, + 60, 0, 0, 0, 0, 76, 0, 0, + 0, 0, 76, 84, 0, 0, 0, 0, + 60, 0, 0, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 0, + 0, 77, 0, 0, 0, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAmbient105.scd b/sound_algo/palette/melodies/xlong/mxlAmbient105.scd new file mode 100644 index 0000000..4297f96 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAmbient105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAmbient105 -- xlong melody (96 steps), genre: ambient +// ===================================================================== +( +~mxlAmbient105 = [ + 81, 0, 0, 0, 0, 0, 72, 0, + 0, 0, 0, 74, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 81, 0, 0, 0, 0, 0, 72, 0, + 0, 0, 0, 74, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 0, 62, 0, + 0, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, + 81, 0, 0, 0, 0, 0, 72, 0, + 0, 0, 0, 72, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAmbient106.scd b/sound_algo/palette/melodies/xlong/mxlAmbient106.scd new file mode 100644 index 0000000..44a367f --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAmbient106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAmbient106 -- xlong melody (96 steps), genre: ambient +// ===================================================================== +( +~mxlAmbient106 = [ + 0, 0, 0, 72, 0, 0, 70, 0, + 0, 0, 0, 0, 0, 0, 0, 70, + 0, 0, 0, 0, 0, 0, 0, 79, + 0, 65, 0, 0, 0, 76, 0, 0, + 0, 74, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 84, 0, 0, + 0, 0, 0, 82, 0, 0, 0, 70, + 0, 0, 0, 0, 0, 76, 77, 0, + 0, 60, 0, 0, 72, 0, 0, 0, + 0, 0, 74, 0, 0, 0, 0, 81, + 0, 0, 0, 0, 0, 72, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAmbient107.scd b/sound_algo/palette/melodies/xlong/mxlAmbient107.scd new file mode 100644 index 0000000..972f8bc --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAmbient107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAmbient107 -- xlong melody (96 steps), genre: ambient +// ===================================================================== +( +~mxlAmbient107 = [ + 79, 78, 66, 0, 0, 0, 0, 0, + 0, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 79, 0, + 0, 0, 0, 0, 62, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 0, 79, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0, + 76, 0, 0, 69, 0, 0, 81, 0, + 0, 0, 0, 76, 0, 76, 0, 0, + 0, 67, 0, 0, 0, 0, 0, 0, + 58, 0, 0, 0, 0, 0, 0, 84, + 0, 82, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAmbient108.scd b/sound_algo/palette/melodies/xlong/mxlAmbient108.scd new file mode 100644 index 0000000..3bbe1a8 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAmbient108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAmbient108 -- xlong melody (96 steps), genre: ambient +// ===================================================================== +( +~mxlAmbient108 = [ + 0, 0, 0, 0, 0, 0, 67, 0, + 0, 0, 0, 0, 0, 0, 60, 0, + 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0, 67, 0, + 0, 0, 0, 0, 0, 0, 60, 0, + 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 71, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 65, 0, + 0, 0, 0, 0, 0, 0, 67, 0, + 0, 0, 0, 0, 0, 0, 60, 0, + 0, 0, 0, 0, 0, 0, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAmbient109.scd b/sound_algo/palette/melodies/xlong/mxlAmbient109.scd new file mode 100644 index 0000000..0089809 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAmbient109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAmbient109 -- xlong melody (96 steps), genre: ambient +// ===================================================================== +( +~mxlAmbient109 = [ + 84, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 65, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 72, 0, 0, 0, + 84, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 65, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 72, 0, 0, 0, + 0, 0, 0, 82, 0, 0, 65, 0, + 0, 0, 0, 0, 76, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 82, + 84, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 63, 0, 0, 0, 61, 0, + 0, 0, 0, 0, 74, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian100.scd b/sound_algo/palette/melodies/xlong/mxlAsian100.scd new file mode 100644 index 0000000..ff20b12 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian100 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian100 = [ + 71, 67, 71, 72, 54, 0, 72, 59, + 72, 71, 55, 0, 54, 55, 64, 71, + 52, 54, 71, 67, 64, 55, 71, 55, + 0, 0, 0, 52, 71, 71, 0, 0, + 0, 0, 71, 54, 64, 67, 60, 66, + 0, 76, 54, 55, 64, 60, 54, 66, + 55, 60, 0, 64, 54, 52, 55, 0, + 0, 60, 0, 0, 64, 54, 0, 0, + 64, 0, 71, 72, 71, 67, 0, 66, + 0, 0, 71, 0, 0, 0, 72, 0, + 0, 0, 52, 0, 71, 55, 0, 0, + 64, 60, 76, 52, 52, 54, 0, 54 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian101.scd b/sound_algo/palette/melodies/xlong/mxlAsian101.scd new file mode 100644 index 0000000..23695bf --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian101 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian101 = [ + 0, 0, 0, 52, 0, 60, 0, 0, + 0, 54, 55, 66, 0, 0, 67, 54, + 64, 60, 54, 54, 0, 54, 67, 0, + 64, 60, 72, 0, 52, 64, 60, 72, + 76, 0, 76, 76, 67, 71, 66, 55, + 67, 66, 76, 60, 55, 72, 0, 0, + 59, 0, 0, 52, 52, 54, 60, 66, + 59, 0, 76, 0, 76, 72, 71, 52, + 76, 72, 54, 0, 59, 67, 0, 60, + 0, 54, 0, 72, 71, 59, 0, 64, + 71, 55, 59, 0, 0, 0, 54, 0, + 0, 71, 0, 72, 0, 55, 64, 71 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian102.scd b/sound_algo/palette/melodies/xlong/mxlAsian102.scd new file mode 100644 index 0000000..d0046c4 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian102 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian102 = [ + 57, 53, 65, 64, 57, 53, 0, 0, + 57, 53, 59, 0, 0, 0, 0, 0, + 69, 59, 72, 0, 72, 0, 0, 59, + 72, 71, 0, 71, 60, 59, 57, 60, + 65, 64, 0, 0, 64, 53, 52, 0, + 72, 0, 69, 0, 0, 57, 72, 0, + 0, 64, 64, 53, 72, 0, 0, 0, + 0, 57, 0, 60, 60, 0, 60, 0, + 69, 72, 0, 0, 57, 0, 59, 52, + 52, 0, 53, 0, 0, 0, 0, 0, + 0, 59, 0, 0, 59, 52, 57, 77, + 56, 0, 51, 70, 0, 0, 74, 70 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian103.scd b/sound_algo/palette/melodies/xlong/mxlAsian103.scd new file mode 100644 index 0000000..1ab0619 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian103 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian103 = [ + 64, 0, 0, 0, 53, 0, 71, 52, + 0, 0, 59, 72, 0, 60, 0, 72, + 65, 65, 60, 0, 0, 59, 0, 0, + 0, 0, 0, 71, 0, 0, 0, 53, + 53, 52, 64, 0, 57, 59, 64, 0, + 64, 0, 64, 0, 0, 76, 64, 0, + 71, 65, 0, 0, 71, 71, 71, 0, + 69, 65, 0, 72, 0, 0, 65, 60, + 69, 71, 60, 0, 0, 0, 0, 0, + 64, 71, 65, 0, 0, 0, 65, 0, + 61, 61, 0, 0, 72, 0, 0, 0, + 0, 0, 65, 0, 0, 65, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian104.scd b/sound_algo/palette/melodies/xlong/mxlAsian104.scd new file mode 100644 index 0000000..192406d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian104 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian104 = [ + 76, 52, 0, 0, 0, 58, 52, 57, + 65, 57, 70, 53, 0, 74, 52, 58, + 64, 0, 57, 0, 0, 69, 0, 58, + 76, 52, 0, 0, 0, 58, 52, 57, + 65, 57, 70, 53, 0, 74, 52, 58, + 64, 0, 57, 0, 0, 69, 0, 58, + 64, 58, 0, 0, 0, 0, 0, 0, + 64, 53, 0, 70, 64, 62, 64, 64, + 0, 0, 0, 0, 76, 53, 76, 76, + 76, 52, 0, 0, 0, 58, 52, 57, + 67, 56, 69, 52, 0, 76, 53, 59, + 66, 0, 58, 0, 0, 68, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian105.scd b/sound_algo/palette/melodies/xlong/mxlAsian105.scd new file mode 100644 index 0000000..f674836 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian105 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian105 = [ + 69, 65, 76, 70, 0, 58, 0, 0, + 0, 0, 58, 57, 0, 57, 0, 0, + 64, 0, 0, 53, 76, 52, 0, 69, + 0, 53, 53, 53, 57, 52, 0, 0, + 52, 52, 0, 0, 0, 0, 57, 62, + 0, 0, 70, 57, 0, 65, 0, 52, + 52, 0, 57, 70, 0, 0, 70, 0, + 0, 0, 52, 0, 0, 0, 53, 0, + 0, 0, 0, 76, 70, 69, 74, 76, + 65, 70, 57, 58, 0, 58, 58, 0, + 0, 0, 76, 0, 52, 53, 76, 52, + 52, 76, 0, 0, 74, 70, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian106.scd b/sound_algo/palette/melodies/xlong/mxlAsian106.scd new file mode 100644 index 0000000..9e29d0f --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian106 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian106 = [ + 70, 67, 57, 0, 57, 0, 62, 74, + 55, 75, 0, 0, 0, 0, 0, 69, + 57, 55, 0, 75, 0, 67, 0, 57, + 0, 0, 67, 57, 69, 67, 0, 0, + 0, 63, 69, 75, 70, 69, 0, 58, + 57, 55, 0, 0, 63, 62, 0, 58, + 57, 55, 0, 55, 0, 0, 70, 57, + 74, 70, 58, 0, 0, 74, 69, 58, + 0, 57, 58, 0, 69, 67, 0, 63, + 69, 63, 70, 57, 75, 74, 74, 0, + 57, 55, 67, 76, 64, 0, 0, 0, + 0, 62, 68, 0, 71, 59, 68, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian107.scd b/sound_algo/palette/melodies/xlong/mxlAsian107.scd new file mode 100644 index 0000000..13742ea --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian107 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian107 = [ + 0, 0, 75, 62, 57, 55, 62, 62, + 0, 69, 57, 0, 0, 0, 75, 0, + 57, 55, 58, 55, 67, 63, 0, 0, + 0, 67, 55, 70, 0, 0, 62, 69, + 0, 57, 63, 0, 0, 0, 0, 70, + 0, 0, 62, 55, 69, 67, 55, 67, + 63, 62, 70, 0, 69, 0, 75, 0, + 0, 67, 0, 0, 69, 67, 57, 58, + 69, 0, 0, 0, 58, 0, 62, 0, + 69, 67, 62, 55, 74, 75, 0, 0, + 0, 58, 73, 0, 0, 73, 67, 0, + 0, 0, 0, 77, 70, 0, 0, 68 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian108.scd b/sound_algo/palette/melodies/xlong/mxlAsian108.scd new file mode 100644 index 0000000..c462155 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian108 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian108 = [ + 0, 53, 53, 0, 0, 76, 53, 0, + 60, 59, 0, 72, 0, 0, 65, 69, + 0, 53, 64, 0, 57, 53, 69, 0, + 0, 0, 72, 0, 64, 64, 72, 60, + 72, 71, 64, 59, 52, 71, 0, 0, + 69, 0, 0, 59, 76, 72, 59, 0, + 0, 59, 72, 59, 0, 57, 59, 0, + 0, 53, 71, 0, 0, 64, 57, 0, + 0, 0, 52, 57, 69, 65, 53, 69, + 76, 0, 64, 0, 0, 0, 0, 71, + 53, 67, 0, 67, 0, 77, 0, 70, + 74, 0, 0, 69, 0, 0, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian109.scd b/sound_algo/palette/melodies/xlong/mxlAsian109.scd new file mode 100644 index 0000000..f93e8b7 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian109 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian109 = [ + 0, 0, 0, 74, 69, 57, 0, 63, + 57, 55, 0, 0, 0, 63, 62, 58, + 57, 55, 0, 70, 69, 70, 0, 74, + 57, 0, 74, 63, 69, 75, 0, 0, + 69, 67, 63, 0, 55, 58, 55, 63, + 0, 74, 69, 0, 0, 55, 0, 63, + 57, 62, 0, 74, 0, 55, 67, 0, + 69, 63, 0, 0, 69, 67, 55, 69, + 69, 74, 0, 0, 57, 57, 63, 63, + 69, 0, 57, 58, 0, 63, 74, 74, + 76, 76, 56, 0, 67, 0, 56, 0, + 57, 54, 57, 53, 77, 73, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian110.scd b/sound_algo/palette/melodies/xlong/mxlAsian110.scd new file mode 100644 index 0000000..cc6d3c7 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian110.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian110 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian110 = [ + 57, 0, 0, 72, 59, 57, 0, 76, + 0, 0, 57, 76, 0, 53, 69, 0, + 0, 65, 0, 57, 0, 59, 0, 60, + 60, 71, 69, 0, 0, 57, 0, 57, + 0, 59, 0, 71, 0, 0, 53, 57, + 0, 76, 72, 76, 0, 57, 72, 59, + 0, 0, 0, 59, 57, 69, 0, 65, + 59, 76, 59, 76, 0, 59, 0, 0, + 64, 0, 52, 60, 0, 65, 60, 53, + 69, 65, 0, 64, 72, 64, 53, 76, + 57, 53, 65, 0, 64, 60, 0, 60, + 0, 0, 0, 65, 57, 53, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian111.scd b/sound_algo/palette/melodies/xlong/mxlAsian111.scd new file mode 100644 index 0000000..777d2d1 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian111.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian111 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian111 = [ + 0, 58, 57, 70, 0, 64, 0, 0, + 0, 0, 0, 0, 62, 0, 0, 0, + 76, 0, 53, 0, 0, 76, 76, 0, + 0, 58, 57, 70, 0, 64, 0, 0, + 0, 0, 0, 0, 62, 0, 0, 0, + 76, 0, 53, 0, 0, 76, 76, 0, + 76, 74, 0, 58, 76, 65, 0, 65, + 0, 0, 0, 57, 52, 57, 0, 0, + 0, 62, 74, 0, 76, 0, 69, 69, + 0, 58, 57, 70, 0, 64, 0, 0, + 0, 0, 0, 0, 63, 0, 0, 0, + 75, 0, 53, 0, 0, 75, 75, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlAsian112.scd b/sound_algo/palette/melodies/xlong/mxlAsian112.scd new file mode 100644 index 0000000..cc0838d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlAsian112.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlAsian112 -- xlong melody (96 steps), genre: asian +// ===================================================================== +( +~mxlAsian112 = [ + 0, 75, 57, 62, 0, 55, 75, 0, + 69, 67, 62, 57, 57, 0, 69, 57, + 57, 62, 55, 63, 57, 0, 69, 0, + 0, 75, 57, 62, 0, 55, 75, 0, + 69, 67, 62, 57, 57, 0, 69, 57, + 57, 62, 55, 63, 57, 0, 69, 0, + 69, 55, 75, 63, 57, 67, 67, 0, + 57, 55, 58, 57, 69, 57, 0, 58, + 70, 69, 69, 74, 57, 58, 63, 75, + 0, 75, 57, 62, 0, 55, 75, 0, + 69, 67, 62, 57, 57, 0, 69, 57, + 57, 62, 55, 63, 57, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlBlues100.scd b/sound_algo/palette/melodies/xlong/mxlBlues100.scd new file mode 100644 index 0000000..8cf2f05 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlBlues100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlBlues100 -- xlong melody (96 steps), genre: blues +// ===================================================================== +( +~mxlBlues100 = [ + 0, 46, 46, 0, 55, 58, 0, 0, + 67, 0, 0, 0, 0, 70, 69, 69, + 55, 55, 52, 0, 55, 62, 62, 62, + 0, 45, 59, 46, 46, 71, 70, 0, + 71, 52, 69, 46, 55, 57, 0, 0, + 71, 55, 55, 58, 0, 71, 0, 70, + 70, 70, 0, 55, 0, 0, 70, 70, + 62, 0, 55, 0, 0, 0, 69, 62, + 67, 0, 0, 50, 50, 0, 69, 69, + 71, 57, 69, 0, 0, 62, 0, 69, + 72, 73, 0, 47, 46, 44, 0, 0, + 0, 0, 53, 46, 69, 0, 69, 66 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlBlues101.scd b/sound_algo/palette/melodies/xlong/mxlBlues101.scd new file mode 100644 index 0000000..313f9ec --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlBlues101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlBlues101 -- xlong melody (96 steps), genre: blues +// ===================================================================== +( +~mxlBlues101 = [ + 69, 67, 72, 72, 45, 67, 45, 51, + 69, 72, 72, 0, 0, 0, 62, 67, + 63, 62, 69, 69, 0, 0, 62, 0, + 0, 0, 0, 0, 64, 64, 55, 0, + 0, 50, 52, 67, 72, 48, 0, 62, + 62, 0, 63, 51, 60, 60, 60, 60, + 62, 51, 51, 60, 60, 0, 64, 69, + 57, 62, 55, 55, 55, 55, 57, 62, + 64, 64, 64, 0, 0, 72, 57, 67, + 48, 48, 50, 0, 0, 63, 0, 0, + 58, 61, 73, 66, 69, 0, 56, 0, + 0, 0, 46, 49, 48, 0, 58, 58 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlBlues102.scd b/sound_algo/palette/melodies/xlong/mxlBlues102.scd new file mode 100644 index 0000000..57dc24d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlBlues102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlBlues102 -- xlong melody (96 steps), genre: blues +// ===================================================================== +( +~mxlBlues102 = [ + 0, 62, 0, 71, 71, 46, 52, 0, + 0, 0, 52, 67, 64, 55, 64, 45, + 69, 71, 0, 0, 0, 67, 0, 0, + 0, 62, 0, 71, 71, 46, 52, 0, + 0, 0, 52, 67, 64, 55, 64, 45, + 69, 71, 0, 0, 0, 67, 0, 0, + 0, 0, 55, 58, 47, 47, 52, 52, + 52, 0, 0, 0, 0, 0, 0, 45, + 45, 45, 71, 0, 0, 0, 55, 64, + 0, 62, 0, 71, 71, 46, 52, 0, + 0, 0, 52, 67, 64, 55, 64, 45, + 69, 71, 0, 0, 0, 67, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlChiptune100.scd b/sound_algo/palette/melodies/xlong/mxlChiptune100.scd new file mode 100644 index 0000000..2d3ae9e --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlChiptune100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlChiptune100 -- xlong melody (96 steps), genre: chiptune +// ===================================================================== +( +~mxlChiptune100 = [ + 78, 84, 76, 66, 0, 69, 84, 67, + 0, 83, 86, 72, 0, 96, 72, 69, + 79, 71, 74, 78, 81, 79, 86, 66, + 78, 84, 76, 66, 0, 69, 84, 67, + 0, 83, 86, 72, 0, 96, 72, 69, + 79, 71, 74, 78, 81, 79, 86, 66, + 66, 69, 71, 83, 83, 0, 84, 0, + 91, 62, 91, 76, 76, 79, 83, 0, + 71, 67, 79, 66, 67, 96, 64, 74, + 78, 84, 76, 66, 0, 69, 84, 67, + 0, 81, 86, 72, 0, 95, 72, 71, + 78, 71, 75, 78, 83, 81, 87, 64 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlChiptune101.scd b/sound_algo/palette/melodies/xlong/mxlChiptune101.scd new file mode 100644 index 0000000..f0e0519 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlChiptune101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlChiptune101 -- xlong melody (96 steps), genre: chiptune +// ===================================================================== +( +~mxlChiptune101 = [ + 0, 60, 96, 77, 67, 93, 0, 79, + 64, 86, 0, 84, 74, 77, 81, 81, + 71, 74, 76, 64, 74, 89, 69, 96, + 60, 64, 86, 93, 77, 84, 0, 95, + 64, 60, 72, 96, 76, 96, 0, 60, + 67, 79, 79, 71, 79, 69, 93, 69, + 77, 81, 84, 65, 96, 62, 86, 72, + 0, 88, 79, 76, 79, 60, 67, 67, + 88, 81, 60, 64, 67, 60, 77, 81, + 62, 65, 69, 0, 71, 76, 79, 74, + 79, 0, 87, 74, 69, 76, 77, 89, + 68, 69, 60, 64, 77, 95, 86, 71 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlChiptune102.scd b/sound_algo/palette/melodies/xlong/mxlChiptune102.scd new file mode 100644 index 0000000..f2fff9a --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlChiptune102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlChiptune102 -- xlong melody (96 steps), genre: chiptune +// ===================================================================== +( +~mxlChiptune102 = [ + 76, 79, 83, 79, 0, 69, 74, 77, + 81, 96, 0, 0, 0, 0, 0, 95, + 91, 0, 96, 67, 79, 95, 0, 0, + 60, 0, 83, 96, 79, 62, 60, 64, + 67, 88, 0, 62, 65, 69, 72, 64, + 84, 60, 74, 77, 81, 96, 0, 91, + 67, 64, 95, 72, 81, 0, 76, 83, + 84, 77, 72, 72, 62, 65, 69, 0, + 74, 0, 65, 69, 67, 93, 77, 95, + 72, 76, 79, 67, 64, 76, 0, 76, + 88, 81, 65, 69, 60, 64, 67, 62, + 67, 91, 64, 0, 62, 93, 88, 81 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlChiptune103.scd b/sound_algo/palette/melodies/xlong/mxlChiptune103.scd new file mode 100644 index 0000000..3c80aa0 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlChiptune103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlChiptune103 -- xlong melody (96 steps), genre: chiptune +// ===================================================================== +( +~mxlChiptune103 = [ + 62, 66, 69, 0, 0, 60, 64, 67, + 71, 0, 0, 0, 71, 74, 78, 78, + 0, 71, 69, 72, 76, 0, 66, 60, + 71, 62, 71, 0, 0, 0, 76, 79, + 83, 88, 83, 86, 74, 72, 0, 66, + 71, 0, 74, 78, 81, 69, 96, 0, + 60, 64, 67, 66, 79, 91, 66, 69, + 71, 69, 67, 74, 69, 67, 0, 83, + 67, 88, 76, 79, 83, 64, 62, 72, + 67, 71, 74, 62, 91, 72, 84, 79, + 71, 0, 0, 64, 90, 96, 93, 0, + 88, 77, 67, 69, 72, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlChiptune104.scd b/sound_algo/palette/melodies/xlong/mxlChiptune104.scd new file mode 100644 index 0000000..ef6df89 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlChiptune104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlChiptune104 -- xlong melody (96 steps), genre: chiptune +// ===================================================================== +( +~mxlChiptune104 = [ + 91, 96, 88, 0, 62, 67, 0, 93, + 0, 76, 84, 0, 0, 74, 76, 0, + 79, 86, 74, 91, 79, 0, 74, 88, + 91, 96, 88, 0, 62, 67, 0, 93, + 0, 76, 84, 0, 0, 74, 76, 0, + 79, 86, 74, 91, 79, 0, 74, 88, + 0, 93, 86, 71, 86, 81, 74, 77, + 81, 62, 76, 64, 77, 81, 84, 91, + 86, 83, 71, 0, 0, 0, 95, 60, + 91, 96, 88, 0, 62, 67, 0, 93, + 0, 77, 82, 0, 0, 72, 76, 0, + 79, 88, 74, 90, 80, 0, 72, 86 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlChromatic100.scd b/sound_algo/palette/melodies/xlong/mxlChromatic100.scd new file mode 100644 index 0000000..438fcf7 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlChromatic100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlChromatic100 -- xlong melody (96 steps), genre: chromatic +// ===================================================================== +( +~mxlChromatic100 = [ + 0, 73, 52, 65, 52, 60, 81, 82, + 59, 65, 71, 80, 63, 81, 61, 61, + 0, 62, 58, 0, 76, 57, 50, 81, + 76, 67, 0, 0, 0, 76, 0, 56, + 0, 49, 62, 79, 72, 54, 78, 73, + 55, 84, 72, 72, 74, 72, 82, 0, + 72, 69, 58, 53, 79, 0, 72, 70, + 61, 0, 70, 76, 79, 0, 77, 48, + 0, 60, 67, 0, 0, 56, 0, 58, + 76, 62, 79, 82, 0, 0, 76, 84, + 64, 52, 0, 71, 0, 62, 56, 74, + 0, 55, 67, 64, 55, 71, 49, 77 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlChromatic101.scd b/sound_algo/palette/melodies/xlong/mxlChromatic101.scd new file mode 100644 index 0000000..a79eca2 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlChromatic101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlChromatic101 -- xlong melody (96 steps), genre: chromatic +// ===================================================================== +( +~mxlChromatic101 = [ + 63, 58, 83, 0, 80, 0, 61, 68, + 78, 0, 57, 0, 80, 79, 67, 52, + 64, 0, 58, 73, 56, 77, 0, 68, + 48, 64, 55, 0, 55, 57, 56, 48, + 81, 82, 66, 64, 67, 50, 56, 83, + 79, 0, 0, 66, 0, 76, 58, 80, + 82, 68, 67, 49, 0, 80, 75, 59, + 72, 59, 0, 63, 0, 53, 74, 59, + 52, 71, 0, 72, 82, 55, 0, 48, + 77, 65, 76, 78, 56, 66, 61, 48, + 66, 0, 71, 0, 0, 57, 58, 82, + 0, 0, 77, 0, 0, 57, 59, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlChromatic102.scd b/sound_algo/palette/melodies/xlong/mxlChromatic102.scd new file mode 100644 index 0000000..8fbb976 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlChromatic102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlChromatic102 -- xlong melody (96 steps), genre: chromatic +// ===================================================================== +( +~mxlChromatic102 = [ + 78, 62, 65, 48, 52, 77, 63, 68, + 51, 63, 83, 54, 70, 78, 48, 50, + 0, 48, 67, 69, 75, 54, 51, 56, + 51, 56, 75, 75, 0, 52, 78, 0, + 72, 50, 69, 48, 76, 0, 78, 68, + 52, 50, 0, 78, 67, 0, 0, 63, + 55, 78, 66, 53, 58, 0, 84, 0, + 67, 64, 67, 78, 52, 0, 0, 60, + 52, 0, 64, 64, 0, 81, 54, 84, + 64, 64, 81, 0, 54, 67, 68, 51, + 82, 71, 80, 54, 78, 80, 79, 64, + 56, 81, 53, 65, 59, 0, 0, 56 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlCinematic100.scd b/sound_algo/palette/melodies/xlong/mxlCinematic100.scd new file mode 100644 index 0000000..93f1138 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlCinematic100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlCinematic100 -- xlong melody (96 steps), genre: cinematic +// ===================================================================== +( +~mxlCinematic100 = [ + 39, 72, 0, 39, 84, 0, 51, 0, + 63, 41, 0, 56, 39, 36, 59, 55, + 41, 0, 68, 51, 68, 56, 71, 79, + 0, 0, 43, 0, 84, 39, 43, 41, + 59, 77, 62, 51, 0, 0, 0, 80, + 0, 75, 84, 67, 0, 38, 41, 0, + 0, 59, 74, 0, 55, 59, 84, 77, + 36, 72, 43, 43, 67, 75, 0, 59, + 84, 62, 50, 84, 36, 0, 39, 77, + 50, 65, 83, 38, 77, 83, 65, 60, + 62, 49, 0, 51, 55, 79, 82, 38, + 78, 0, 41, 69, 38, 66, 55, 84 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlCinematic101.scd b/sound_algo/palette/melodies/xlong/mxlCinematic101.scd new file mode 100644 index 0000000..3e967ab --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlCinematic101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlCinematic101 -- xlong melody (96 steps), genre: cinematic +// ===================================================================== +( +~mxlCinematic101 = [ + 0, 0, 44, 56, 0, 0, 0, 75, + 48, 0, 77, 0, 0, 0, 79, 77, + 0, 39, 41, 80, 73, 55, 0, 36, + 0, 0, 44, 56, 0, 0, 0, 75, + 48, 0, 77, 0, 0, 0, 79, 77, + 0, 39, 41, 80, 73, 55, 0, 36, + 61, 0, 63, 0, 77, 0, 0, 79, + 48, 75, 51, 61, 77, 55, 46, 0, + 77, 41, 0, 63, 77, 70, 0, 0, + 0, 0, 44, 56, 0, 0, 0, 75, + 48, 0, 79, 0, 0, 0, 77, 75, + 0, 41, 43, 82, 74, 57, 0, 38 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlCinematic102.scd b/sound_algo/palette/melodies/xlong/mxlCinematic102.scd new file mode 100644 index 0000000..0ac5640 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlCinematic102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlCinematic102 -- xlong melody (96 steps), genre: cinematic +// ===================================================================== +( +~mxlCinematic102 = [ + 58, 0, 0, 0, 0, 84, 84, 62, + 48, 0, 0, 82, 72, 0, 77, 67, + 60, 70, 0, 0, 60, 41, 0, 79, + 67, 84, 0, 75, 48, 75, 0, 65, + 48, 84, 56, 0, 0, 0, 80, 0, + 38, 0, 39, 80, 0, 0, 58, 62, + 39, 0, 84, 74, 48, 63, 0, 70, + 82, 77, 67, 0, 51, 48, 60, 72, + 0, 67, 51, 44, 80, 0, 74, 0, + 48, 0, 50, 0, 79, 82, 39, 43, + 39, 43, 68, 51, 75, 0, 77, 65, + 43, 36, 0, 0, 72, 70, 72, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlCinematic103.scd b/sound_algo/palette/melodies/xlong/mxlCinematic103.scd new file mode 100644 index 0000000..cfe2cb8 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlCinematic103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlCinematic103 -- xlong melody (96 steps), genre: cinematic +// ===================================================================== +( +~mxlCinematic103 = [ + 67, 0, 72, 68, 0, 0, 0, 0, + 46, 51, 56, 0, 0, 38, 46, 0, + 60, 0, 63, 0, 43, 36, 0, 0, + 67, 0, 72, 68, 0, 0, 0, 0, + 46, 51, 56, 0, 0, 38, 46, 0, + 60, 0, 63, 0, 43, 36, 0, 0, + 75, 0, 75, 74, 70, 58, 0, 72, + 55, 48, 0, 50, 0, 55, 38, 50, + 0, 0, 75, 70, 0, 36, 39, 63, + 67, 0, 72, 68, 0, 0, 0, 0, + 46, 51, 56, 0, 0, 38, 46, 0, + 60, 0, 63, 0, 43, 36, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlCinematic104.scd b/sound_algo/palette/melodies/xlong/mxlCinematic104.scd new file mode 100644 index 0000000..4d3573e --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlCinematic104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlCinematic104 -- xlong melody (96 steps), genre: cinematic +// ===================================================================== +( +~mxlCinematic104 = [ + 0, 65, 0, 55, 0, 52, 82, 40, + 58, 52, 80, 0, 82, 0, 37, 0, + 60, 37, 0, 49, 49, 84, 73, 58, + 0, 65, 0, 55, 0, 52, 82, 40, + 58, 52, 80, 0, 82, 0, 37, 0, + 60, 37, 0, 49, 49, 84, 73, 58, + 0, 0, 0, 77, 43, 65, 44, 0, + 0, 36, 61, 0, 61, 43, 61, 56, + 0, 67, 0, 72, 0, 0, 80, 56, + 0, 65, 0, 55, 0, 52, 82, 40, + 60, 51, 81, 0, 84, 0, 36, 0, + 58, 38, 0, 51, 48, 83, 75, 57 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlCinematic105.scd b/sound_algo/palette/melodies/xlong/mxlCinematic105.scd new file mode 100644 index 0000000..2d48556 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlCinematic105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlCinematic105 -- xlong melody (96 steps), genre: cinematic +// ===================================================================== +( +~mxlCinematic105 = [ + 0, 53, 0, 56, 70, 60, 0, 0, + 65, 0, 46, 64, 56, 68, 55, 43, + 73, 67, 76, 76, 56, 0, 84, 40, + 72, 67, 0, 61, 65, 0, 80, 82, + 65, 79, 56, 68, 0, 0, 80, 37, + 79, 61, 77, 37, 61, 82, 0, 52, + 67, 53, 72, 0, 44, 70, 65, 60, + 44, 67, 0, 84, 77, 56, 76, 0, + 84, 84, 82, 0, 0, 0, 65, 0, + 60, 0, 76, 58, 60, 77, 43, 68, + 72, 46, 80, 43, 60, 60, 44, 68, + 44, 41, 61, 36, 76, 58, 53, 52 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDark100.scd b/sound_algo/palette/melodies/xlong/mxlDark100.scd new file mode 100644 index 0000000..43dd4db --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDark100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDark100 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxlDark100 = [ + 0, 48, 46, 0, 58, 0, 0, 55, + 43, 0, 36, 41, 0, 55, 0, 0, + 0, 0, 0, 0, 43, 41, 0, 0, + 46, 53, 0, 0, 0, 36, 0, 46, + 0, 37, 0, 55, 0, 0, 0, 0, + 0, 0, 0, 51, 37, 58, 46, 49, + 46, 49, 0, 46, 55, 0, 39, 0, + 0, 44, 0, 60, 43, 0, 39, 48, + 53, 49, 0, 0, 58, 0, 39, 0, + 55, 0, 0, 41, 0, 36, 0, 60, + 55, 0, 0, 0, 55, 0, 0, 0, + 60, 0, 0, 56, 0, 51, 46, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDark101.scd b/sound_algo/palette/melodies/xlong/mxlDark101.scd new file mode 100644 index 0000000..e420402 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDark101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDark101 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxlDark101 = [ + 0, 45, 38, 0, 53, 53, 43, 58, + 50, 38, 0, 0, 40, 46, 36, 0, + 0, 0, 0, 57, 0, 0, 60, 60, + 0, 40, 40, 0, 58, 55, 58, 40, + 0, 45, 0, 40, 52, 53, 46, 43, + 0, 58, 0, 52, 0, 38, 52, 0, + 55, 52, 38, 0, 60, 58, 0, 53, + 52, 45, 0, 58, 0, 36, 41, 55, + 43, 0, 45, 43, 38, 38, 50, 43, + 55, 52, 0, 0, 40, 52, 43, 36, + 50, 42, 52, 54, 45, 57, 0, 58, + 40, 0, 51, 0, 0, 0, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDark102.scd b/sound_algo/palette/melodies/xlong/mxlDark102.scd new file mode 100644 index 0000000..3b2a008 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDark102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDark102 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxlDark102 = [ + 55, 60, 0, 55, 0, 43, 52, 51, + 47, 36, 0, 45, 52, 0, 42, 51, + 0, 0, 48, 0, 0, 0, 0, 40, + 59, 42, 48, 59, 42, 39, 54, 51, + 52, 0, 39, 40, 40, 0, 48, 0, + 59, 43, 48, 0, 0, 0, 0, 43, + 0, 0, 51, 47, 0, 0, 48, 39, + 40, 55, 45, 42, 0, 52, 0, 36, + 47, 42, 57, 0, 0, 54, 51, 55, + 43, 57, 0, 54, 39, 0, 48, 57, + 49, 0, 41, 42, 0, 36, 51, 40, + 43, 0, 0, 0, 0, 0, 0, 59 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDark103.scd b/sound_algo/palette/melodies/xlong/mxlDark103.scd new file mode 100644 index 0000000..5b30d1a --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDark103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDark103 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxlDark103 = [ + 40, 0, 38, 38, 45, 45, 0, 0, + 50, 36, 38, 0, 55, 50, 0, 48, + 52, 53, 0, 55, 0, 36, 57, 41, + 40, 40, 48, 0, 0, 0, 50, 0, + 0, 0, 38, 0, 0, 0, 0, 53, + 52, 0, 38, 53, 50, 52, 0, 43, + 52, 36, 0, 0, 43, 38, 43, 0, + 43, 0, 48, 0, 40, 0, 0, 52, + 52, 58, 53, 50, 0, 57, 57, 0, + 52, 0, 50, 0, 0, 48, 38, 52, + 43, 0, 55, 52, 43, 0, 0, 60, + 43, 0, 48, 0, 43, 50, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDark104.scd b/sound_algo/palette/melodies/xlong/mxlDark104.scd new file mode 100644 index 0000000..745a492 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDark104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDark104 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxlDark104 = [ + 40, 40, 0, 46, 0, 0, 0, 40, + 55, 0, 41, 58, 53, 0, 0, 52, + 55, 41, 57, 38, 50, 43, 48, 0, + 57, 38, 0, 0, 52, 0, 0, 46, + 41, 0, 0, 50, 50, 45, 46, 0, + 52, 53, 60, 0, 0, 45, 0, 45, + 52, 40, 0, 0, 40, 0, 58, 45, + 55, 48, 57, 0, 43, 50, 43, 0, + 0, 0, 58, 45, 0, 40, 0, 45, + 43, 0, 53, 0, 0, 0, 0, 46, + 55, 45, 0, 45, 52, 46, 50, 0, + 36, 53, 36, 0, 53, 38, 0, 41 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDark105.scd b/sound_algo/palette/melodies/xlong/mxlDark105.scd new file mode 100644 index 0000000..9b9464f --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDark105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDark105 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxlDark105 = [ + 55, 56, 0, 48, 0, 49, 0, 41, + 56, 44, 39, 0, 0, 44, 43, 49, + 0, 0, 41, 36, 43, 41, 0, 0, + 55, 56, 0, 48, 0, 49, 0, 41, + 56, 44, 39, 0, 0, 44, 43, 49, + 0, 0, 41, 36, 43, 41, 0, 0, + 0, 0, 0, 0, 48, 56, 48, 0, + 0, 41, 0, 56, 0, 60, 43, 0, + 43, 0, 0, 0, 43, 43, 39, 0, + 55, 56, 0, 48, 0, 49, 0, 41, + 56, 44, 39, 0, 0, 44, 43, 49, + 0, 0, 41, 36, 43, 41, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDark106.scd b/sound_algo/palette/melodies/xlong/mxlDark106.scd new file mode 100644 index 0000000..02d3bf5 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDark106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDark106 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxlDark106 = [ + 40, 50, 0, 36, 0, 0, 45, 40, + 60, 48, 0, 0, 0, 48, 45, 0, + 40, 0, 41, 57, 0, 48, 40, 0, + 40, 50, 0, 36, 0, 0, 45, 40, + 60, 48, 0, 0, 0, 48, 45, 0, + 40, 0, 41, 57, 0, 48, 40, 0, + 45, 0, 0, 0, 52, 55, 45, 0, + 60, 41, 0, 0, 0, 50, 38, 40, + 0, 53, 0, 0, 48, 0, 0, 0, + 40, 50, 0, 36, 0, 0, 45, 40, + 60, 48, 0, 0, 0, 48, 45, 0, + 40, 0, 41, 57, 0, 48, 40, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDark107.scd b/sound_algo/palette/melodies/xlong/mxlDark107.scd new file mode 100644 index 0000000..d63b152 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDark107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDark107 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxlDark107 = [ + 52, 41, 60, 0, 0, 52, 53, 55, + 58, 58, 53, 0, 43, 50, 60, 41, + 0, 0, 60, 60, 40, 52, 41, 50, + 52, 41, 60, 0, 0, 52, 53, 55, + 58, 58, 53, 0, 43, 50, 60, 41, + 0, 0, 60, 60, 40, 52, 41, 50, + 0, 0, 41, 45, 0, 0, 41, 40, + 52, 40, 50, 38, 52, 41, 57, 36, + 0, 0, 38, 43, 0, 0, 0, 58, + 52, 41, 60, 0, 0, 52, 53, 55, + 58, 60, 51, 0, 45, 51, 61, 39, + 0, 0, 61, 60, 40, 51, 41, 51 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDark108.scd b/sound_algo/palette/melodies/xlong/mxlDark108.scd new file mode 100644 index 0000000..810b969 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDark108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDark108 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxlDark108 = [ + 0, 0, 57, 43, 55, 43, 53, 0, + 52, 60, 0, 60, 40, 0, 53, 57, + 40, 0, 0, 40, 52, 53, 38, 60, + 0, 0, 48, 43, 43, 0, 0, 48, + 55, 0, 52, 45, 52, 45, 45, 45, + 43, 0, 50, 43, 0, 0, 55, 46, + 38, 0, 43, 0, 0, 0, 38, 0, + 52, 36, 0, 0, 52, 58, 46, 40, + 55, 40, 36, 0, 60, 57, 46, 0, + 55, 60, 38, 41, 0, 0, 57, 0, + 52, 36, 0, 55, 0, 46, 60, 46, + 38, 0, 0, 50, 0, 60, 57, 43 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDark109.scd b/sound_algo/palette/melodies/xlong/mxlDark109.scd new file mode 100644 index 0000000..0820600 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDark109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDark109 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxlDark109 = [ + 52, 57, 38, 0, 0, 41, 60, 0, + 57, 58, 52, 50, 55, 0, 0, 0, + 60, 41, 0, 0, 0, 41, 40, 60, + 43, 0, 0, 45, 41, 38, 58, 36, + 55, 46, 45, 0, 0, 60, 53, 0, + 43, 43, 53, 0, 0, 0, 43, 40, + 40, 41, 36, 0, 40, 0, 43, 0, + 48, 55, 55, 0, 46, 0, 46, 53, + 0, 50, 60, 0, 0, 52, 48, 0, + 40, 45, 57, 40, 52, 38, 0, 52, + 40, 46, 43, 52, 50, 58, 0, 52, + 43, 0, 55, 0, 40, 0, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDark110.scd b/sound_algo/palette/melodies/xlong/mxlDark110.scd new file mode 100644 index 0000000..74cc71c --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDark110.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDark110 -- xlong melody (96 steps), genre: dark +// ===================================================================== +( +~mxlDark110 = [ + 58, 0, 0, 0, 43, 0, 48, 0, + 46, 0, 51, 0, 0, 0, 0, 0, + 43, 39, 0, 54, 0, 45, 43, 0, + 58, 0, 0, 0, 43, 0, 48, 0, + 46, 0, 51, 0, 0, 0, 0, 0, + 43, 39, 0, 54, 0, 45, 43, 0, + 38, 58, 0, 38, 0, 51, 55, 0, + 0, 57, 0, 0, 55, 0, 0, 46, + 0, 46, 0, 58, 38, 0, 38, 0, + 58, 0, 0, 0, 43, 0, 48, 0, + 46, 0, 51, 0, 0, 0, 0, 0, + 43, 39, 0, 54, 0, 45, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit100.scd b/sound_algo/palette/melodies/xlong/mxlDetroit100.scd new file mode 100644 index 0000000..a7ebfc9 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit100 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit100 = [ + 63, 53, 0, 0, 51, 72, 65, 58, + 60, 0, 57, 60, 62, 0, 65, 0, + 0, 0, 58, 53, 60, 67, 70, 70, + 63, 53, 0, 0, 51, 72, 65, 58, + 60, 0, 57, 60, 62, 0, 65, 0, + 0, 0, 58, 53, 60, 67, 70, 70, + 60, 0, 0, 69, 0, 58, 0, 69, + 0, 50, 60, 62, 0, 72, 50, 0, + 55, 51, 48, 51, 60, 0, 55, 0, + 63, 53, 0, 0, 51, 72, 65, 58, + 60, 0, 57, 60, 62, 0, 65, 0, + 0, 0, 58, 53, 60, 67, 70, 70 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit101.scd b/sound_algo/palette/melodies/xlong/mxlDetroit101.scd new file mode 100644 index 0000000..8a51d55 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit101 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit101 = [ + 0, 55, 0, 65, 51, 0, 67, 65, + 0, 69, 0, 67, 62, 72, 0, 0, + 0, 0, 70, 0, 0, 65, 0, 55, + 0, 69, 0, 0, 55, 69, 60, 0, + 0, 0, 63, 0, 0, 51, 0, 63, + 55, 51, 58, 57, 0, 69, 72, 0, + 48, 65, 63, 0, 70, 0, 55, 0, + 48, 0, 0, 53, 0, 67, 0, 0, + 0, 70, 0, 67, 67, 57, 0, 0, + 0, 0, 0, 0, 0, 67, 0, 62, + 68, 57, 52, 66, 0, 54, 0, 0, + 60, 0, 59, 69, 56, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit102.scd b/sound_algo/palette/melodies/xlong/mxlDetroit102.scd new file mode 100644 index 0000000..214e2a2 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit102 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit102 = [ + 0, 62, 67, 60, 67, 0, 63, 0, + 51, 0, 0, 0, 0, 0, 63, 0, + 0, 55, 70, 0, 0, 0, 0, 0, + 63, 51, 51, 0, 56, 63, 0, 60, + 0, 68, 0, 0, 68, 53, 53, 65, + 53, 65, 55, 0, 48, 0, 50, 0, + 51, 48, 0, 0, 56, 0, 0, 70, + 0, 0, 0, 0, 48, 0, 0, 72, + 0, 0, 0, 63, 0, 53, 0, 0, + 51, 0, 63, 0, 0, 0, 0, 65, + 0, 51, 72, 63, 48, 0, 65, 68, + 72, 0, 60, 0, 0, 65, 65, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit103.scd b/sound_algo/palette/melodies/xlong/mxlDetroit103.scd new file mode 100644 index 0000000..a5fa97d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit103 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit103 = [ + 0, 0, 0, 0, 53, 48, 0, 0, + 0, 60, 65, 56, 65, 0, 48, 0, + 72, 56, 72, 48, 0, 62, 51, 0, + 55, 67, 58, 0, 60, 0, 0, 0, + 0, 0, 55, 48, 0, 51, 56, 58, + 0, 58, 0, 0, 0, 67, 53, 0, + 0, 55, 48, 58, 68, 0, 0, 48, + 0, 70, 67, 55, 0, 0, 0, 0, + 0, 0, 70, 0, 68, 53, 0, 0, + 60, 0, 72, 0, 65, 0, 56, 0, + 48, 50, 48, 70, 0, 63, 50, 65, + 0, 0, 0, 58, 0, 63, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit104.scd b/sound_algo/palette/melodies/xlong/mxlDetroit104.scd new file mode 100644 index 0000000..0c3eec7 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit104 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit104 = [ + 51, 70, 0, 62, 0, 62, 60, 63, + 51, 53, 63, 62, 0, 58, 0, 55, + 0, 67, 70, 0, 50, 0, 70, 57, + 51, 70, 0, 62, 0, 62, 60, 63, + 51, 53, 63, 62, 0, 58, 0, 55, + 0, 67, 70, 0, 50, 0, 70, 57, + 65, 62, 53, 65, 0, 50, 50, 0, + 48, 72, 48, 67, 48, 0, 0, 57, + 63, 51, 63, 0, 0, 0, 0, 0, + 51, 70, 0, 62, 0, 62, 60, 63, + 51, 53, 63, 62, 0, 58, 0, 55, + 0, 67, 70, 0, 50, 0, 70, 57 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit105.scd b/sound_algo/palette/melodies/xlong/mxlDetroit105.scd new file mode 100644 index 0000000..2c98111 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit105 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit105 = [ + 0, 0, 60, 48, 48, 67, 0, 0, + 65, 0, 51, 0, 0, 0, 55, 0, + 72, 62, 0, 56, 50, 70, 0, 53, + 0, 0, 60, 48, 48, 67, 0, 0, + 65, 0, 51, 0, 0, 0, 55, 0, + 72, 62, 0, 56, 50, 70, 0, 53, + 53, 72, 56, 68, 48, 72, 56, 67, + 56, 0, 53, 68, 0, 0, 0, 58, + 53, 0, 48, 55, 0, 56, 0, 72, + 0, 0, 60, 48, 48, 67, 0, 0, + 63, 0, 51, 0, 0, 0, 54, 0, + 71, 63, 0, 54, 49, 70, 0, 51 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit106.scd b/sound_algo/palette/melodies/xlong/mxlDetroit106.scd new file mode 100644 index 0000000..dd104e1 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit106 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit106 = [ + 68, 67, 0, 60, 63, 60, 48, 0, + 0, 0, 51, 63, 68, 51, 0, 0, + 0, 0, 70, 67, 0, 0, 0, 68, + 56, 65, 58, 51, 68, 55, 0, 0, + 0, 0, 63, 0, 48, 62, 0, 0, + 63, 65, 63, 50, 72, 62, 0, 0, + 65, 67, 55, 0, 60, 0, 48, 65, + 60, 0, 0, 0, 68, 63, 55, 53, + 65, 0, 0, 0, 0, 0, 0, 0, + 48, 50, 0, 50, 72, 0, 0, 68, + 0, 64, 0, 0, 0, 66, 0, 70, + 69, 60, 0, 0, 60, 61, 0, 48 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit107.scd b/sound_algo/palette/melodies/xlong/mxlDetroit107.scd new file mode 100644 index 0000000..05c72c2 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit107 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit107 = [ + 0, 68, 50, 62, 0, 68, 67, 60, + 68, 0, 51, 0, 55, 53, 65, 51, + 60, 0, 51, 0, 0, 56, 62, 50, + 0, 68, 50, 62, 0, 68, 67, 60, + 68, 0, 51, 0, 55, 53, 65, 51, + 60, 0, 51, 0, 0, 56, 62, 50, + 72, 63, 70, 0, 0, 60, 72, 48, + 0, 48, 0, 0, 72, 0, 0, 0, + 53, 50, 0, 0, 48, 70, 0, 50, + 0, 68, 50, 62, 0, 68, 67, 60, + 70, 0, 51, 0, 53, 54, 64, 52, + 61, 0, 51, 0, 0, 54, 60, 50 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit108.scd b/sound_algo/palette/melodies/xlong/mxlDetroit108.scd new file mode 100644 index 0000000..91f04cd --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit108 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit108 = [ + 72, 0, 55, 0, 0, 70, 67, 0, + 0, 70, 0, 0, 72, 0, 51, 48, + 50, 62, 0, 67, 70, 56, 56, 67, + 72, 0, 56, 0, 60, 0, 0, 0, + 0, 55, 0, 0, 0, 62, 0, 0, + 60, 0, 51, 0, 62, 0, 48, 0, + 53, 58, 0, 55, 0, 0, 0, 0, + 72, 55, 50, 0, 48, 0, 0, 65, + 60, 0, 60, 56, 51, 0, 0, 53, + 72, 63, 51, 48, 0, 67, 55, 51, + 0, 60, 60, 58, 53, 72, 0, 0, + 48, 51, 0, 72, 48, 55, 0, 53 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit109.scd b/sound_algo/palette/melodies/xlong/mxlDetroit109.scd new file mode 100644 index 0000000..0c72683 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit109 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit109 = [ + 48, 63, 69, 0, 0, 72, 69, 0, + 0, 0, 63, 65, 0, 50, 48, 0, + 0, 55, 0, 0, 0, 60, 57, 57, + 0, 72, 67, 0, 55, 70, 0, 51, + 72, 72, 58, 51, 69, 0, 62, 0, + 51, 51, 0, 0, 0, 0, 63, 69, + 0, 0, 70, 69, 51, 0, 0, 0, + 0, 48, 0, 72, 53, 0, 72, 48, + 60, 58, 67, 0, 50, 0, 70, 50, + 55, 0, 72, 0, 48, 0, 50, 0, + 58, 62, 54, 68, 0, 69, 58, 57, + 49, 50, 0, 67, 54, 0, 46, 71 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit110.scd b/sound_algo/palette/melodies/xlong/mxlDetroit110.scd new file mode 100644 index 0000000..617b80c --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit110.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit110 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit110 = [ + 0, 58, 0, 0, 0, 0, 56, 0, + 0, 0, 48, 55, 68, 55, 0, 53, + 0, 50, 55, 50, 60, 0, 0, 0, + 0, 58, 0, 0, 0, 0, 56, 0, + 0, 0, 48, 55, 68, 55, 0, 53, + 0, 50, 55, 50, 60, 0, 0, 0, + 48, 62, 0, 67, 0, 56, 0, 62, + 0, 0, 0, 50, 68, 0, 55, 0, + 0, 62, 0, 60, 48, 0, 0, 68, + 0, 58, 0, 0, 0, 0, 56, 0, + 0, 0, 47, 56, 70, 53, 0, 55, + 0, 48, 55, 50, 59, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit111.scd b/sound_algo/palette/melodies/xlong/mxlDetroit111.scd new file mode 100644 index 0000000..5f5e4d8 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit111.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit111 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit111 = [ + 51, 58, 58, 53, 67, 62, 48, 60, + 60, 72, 0, 62, 48, 50, 62, 62, + 63, 63, 0, 65, 48, 0, 0, 0, + 0, 0, 0, 55, 63, 70, 0, 67, + 69, 60, 55, 0, 50, 69, 0, 0, + 0, 48, 0, 62, 55, 48, 0, 50, + 0, 48, 60, 72, 0, 62, 58, 62, + 60, 70, 65, 0, 51, 0, 60, 58, + 72, 72, 0, 50, 0, 63, 0, 57, + 0, 67, 62, 53, 0, 72, 0, 0, + 59, 51, 0, 55, 60, 0, 0, 50, + 0, 57, 58, 65, 0, 65, 54, 72 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDetroit112.scd b/sound_algo/palette/melodies/xlong/mxlDetroit112.scd new file mode 100644 index 0000000..351e6f8 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDetroit112.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDetroit112 -- xlong melody (96 steps), genre: detroit +// ===================================================================== +( +~mxlDetroit112 = [ + 68, 63, 63, 72, 48, 0, 0, 58, + 56, 70, 0, 0, 0, 53, 50, 58, + 48, 58, 70, 62, 63, 0, 48, 0, + 0, 0, 68, 50, 48, 60, 0, 51, + 60, 56, 60, 58, 48, 0, 0, 0, + 0, 0, 0, 70, 0, 0, 62, 0, + 0, 0, 63, 68, 60, 0, 68, 0, + 48, 58, 67, 55, 0, 60, 0, 50, + 68, 0, 0, 0, 0, 56, 0, 58, + 0, 53, 51, 56, 62, 65, 67, 58, + 48, 68, 0, 0, 0, 68, 62, 50, + 60, 0, 0, 55, 68, 72, 53, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDnb100.scd b/sound_algo/palette/melodies/xlong/mxlDnb100.scd new file mode 100644 index 0000000..8d8d97c --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDnb100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDnb100 -- xlong melody (96 steps), genre: dnb +// ===================================================================== +( +~mxlDnb100 = [ + 0, 39, 45, 51, 0, 51, 58, 46, + 62, 48, 51, 0, 38, 48, 72, 72, + 0, 0, 39, 50, 58, 0, 0, 60, + 0, 39, 45, 51, 0, 51, 58, 46, + 62, 48, 51, 0, 38, 48, 72, 72, + 0, 0, 39, 50, 58, 0, 0, 60, + 38, 41, 51, 0, 50, 69, 0, 57, + 67, 67, 0, 0, 38, 0, 58, 0, + 58, 63, 41, 0, 58, 46, 0, 0, + 0, 39, 45, 51, 0, 51, 58, 46, + 63, 47, 49, 0, 40, 50, 73, 71, + 0, 0, 41, 50, 58, 0, 0, 60 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDnb101.scd b/sound_algo/palette/melodies/xlong/mxlDnb101.scd new file mode 100644 index 0000000..ec7dc04 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDnb101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDnb101 -- xlong melody (96 steps), genre: dnb +// ===================================================================== +( +~mxlDnb101 = [ + 0, 0, 48, 67, 0, 40, 52, 0, + 0, 57, 57, 43, 0, 0, 38, 55, + 62, 0, 36, 50, 0, 48, 60, 0, + 0, 69, 40, 0, 59, 0, 0, 52, + 52, 59, 38, 40, 47, 67, 54, 47, + 0, 67, 0, 40, 67, 67, 55, 0, + 71, 69, 69, 0, 55, 66, 43, 0, + 52, 0, 0, 0, 0, 0, 0, 67, + 0, 52, 0, 0, 0, 47, 59, 0, + 50, 0, 0, 0, 52, 0, 42, 0, + 0, 0, 0, 53, 0, 0, 0, 0, + 61, 45, 0, 64, 70, 57, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDnb102.scd b/sound_algo/palette/melodies/xlong/mxlDnb102.scd new file mode 100644 index 0000000..6d02684 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDnb102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDnb102 -- xlong melody (96 steps), genre: dnb +// ===================================================================== +( +~mxlDnb102 = [ + 52, 0, 0, 0, 0, 0, 72, 0, + 48, 0, 50, 0, 0, 0, 0, 60, + 0, 48, 0, 57, 72, 64, 0, 0, + 67, 0, 0, 36, 0, 0, 47, 0, + 71, 0, 0, 0, 40, 62, 47, 0, + 59, 0, 0, 72, 55, 57, 67, 0, + 66, 54, 0, 36, 0, 71, 0, 0, + 0, 0, 0, 52, 47, 50, 42, 0, + 0, 60, 47, 0, 60, 69, 0, 50, + 0, 0, 0, 67, 47, 50, 38, 62, + 37, 0, 0, 0, 61, 55, 0, 60, + 39, 67, 70, 0, 46, 42, 59, 68 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDnb103.scd b/sound_algo/palette/melodies/xlong/mxlDnb103.scd new file mode 100644 index 0000000..2797a69 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDnb103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDnb103 -- xlong melody (96 steps), genre: dnb +// ===================================================================== +( +~mxlDnb103 = [ + 0, 0, 0, 39, 0, 53, 0, 67, + 55, 46, 0, 46, 0, 0, 0, 0, + 51, 0, 58, 0, 0, 67, 72, 62, + 0, 0, 0, 39, 0, 53, 0, 67, + 55, 46, 0, 46, 0, 0, 0, 0, + 51, 0, 58, 0, 0, 67, 72, 62, + 0, 70, 0, 69, 43, 48, 0, 72, + 0, 57, 0, 0, 50, 41, 0, 60, + 70, 72, 72, 0, 70, 0, 0, 0, + 0, 0, 0, 39, 0, 53, 0, 67, + 55, 48, 0, 47, 0, 0, 0, 0, + 49, 0, 60, 0, 0, 68, 72, 60 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDnb104.scd b/sound_algo/palette/melodies/xlong/mxlDnb104.scd new file mode 100644 index 0000000..f54cf0a --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDnb104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDnb104 -- xlong melody (96 steps), genre: dnb +// ===================================================================== +( +~mxlDnb104 = [ + 55, 0, 0, 50, 55, 72, 52, 0, + 0, 71, 0, 50, 0, 0, 0, 54, + 43, 42, 0, 0, 60, 0, 0, 0, + 0, 0, 36, 0, 0, 72, 50, 55, + 0, 66, 66, 69, 55, 0, 45, 38, + 0, 0, 0, 0, 42, 0, 72, 0, + 40, 0, 0, 42, 52, 40, 0, 69, + 0, 67, 0, 42, 47, 0, 0, 0, + 0, 0, 0, 62, 50, 0, 66, 0, + 0, 0, 0, 64, 72, 48, 62, 0, + 0, 0, 42, 45, 60, 60, 0, 0, + 64, 64, 69, 0, 0, 0, 45, 38 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDrone100.scd b/sound_algo/palette/melodies/xlong/mxlDrone100.scd new file mode 100644 index 0000000..0b7ea42 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDrone100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDrone100 -- xlong melody (96 steps), genre: drone +// ===================================================================== +( +~mxlDrone100 = [ + 0, 0, 0, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 43, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 41, 0, + 0, 0, 0, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 43, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 41, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 46, 0, 0, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 43, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 42, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDrone101.scd b/sound_algo/palette/melodies/xlong/mxlDrone101.scd new file mode 100644 index 0000000..835073c --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDrone101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDrone101 -- xlong melody (96 steps), genre: drone +// ===================================================================== +( +~mxlDrone101 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 46, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 27, 0, + 0, 0, 0, 0, 24, 0, 0, 0, + 0, 0, 0, 34, 0, 0, 0, 0, + 0, 29, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 28, 0, 41, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDrone102.scd b/sound_algo/palette/melodies/xlong/mxlDrone102.scd new file mode 100644 index 0000000..01c3499 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDrone102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDrone102 -- xlong melody (96 steps), genre: drone +// ===================================================================== +( +~mxlDrone102 = [ + 0, 0, 0, 27, 0, 0, 0, 0, + 0, 0, 0, 34, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 46, 0, 48, + 0, 0, 0, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 44, + 0, 0, 0, 34, 0, 0, 0, 0, + 32, 46, 0, 0, 0, 44, 48, 0, + 0, 0, 0, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDub100.scd b/sound_algo/palette/melodies/xlong/mxlDub100.scd new file mode 100644 index 0000000..aa83faf --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDub100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDub100 -- xlong melody (96 steps), genre: dub +// ===================================================================== +( +~mxlDub100 = [ + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 47, 0, 0, 0, + 40, 0, 0, 0, 38, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 45, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 57, 0, 0, 0, + 40, 0, 0, 0, 59, 0, 0, 0, + 40, 0, 0, 0, 52, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDub101.scd b/sound_algo/palette/melodies/xlong/mxlDub101.scd new file mode 100644 index 0000000..063a254 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDub101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDub101 -- xlong melody (96 steps), genre: dub +// ===================================================================== +( +~mxlDub101 = [ + 40, 0, 0, 0, 43, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 55, 0, 0, 0, + 40, 0, 0, 0, 57, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 43, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 59, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 55, 0, 0, 0, + 40, 0, 0, 0, 51, 0, 0, 0, + 41, 0, 0, 0, 38, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlDub102.scd b/sound_algo/palette/melodies/xlong/mxlDub102.scd new file mode 100644 index 0000000..e0373f0 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlDub102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlDub102 -- xlong melody (96 steps), genre: dub +// ===================================================================== +( +~mxlDub102 = [ + 36, 0, 0, 0, 39, 0, 0, 0, + 36, 0, 0, 0, 58, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 39, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 43, 0, 0, 0, + 36, 0, 0, 0, 60, 0, 0, 0, + 36, 0, 0, 0, 43, 0, 0, 0, + 36, 0, 0, 0, 51, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHardcore100.scd b/sound_algo/palette/melodies/xlong/mxlHardcore100.scd new file mode 100644 index 0000000..f7436bf --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHardcore100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHardcore100 -- xlong melody (96 steps), genre: hardcore +// ===================================================================== +( +~mxlHardcore100 = [ + 59, 39, 56, 41, 41, 51, 59, 58, + 51, 49, 37, 54, 56, 41, 59, 41, + 44, 56, 59, 59, 53, 46, 51, 51, + 44, 51, 54, 58, 47, 41, 39, 49, + 0, 42, 47, 37, 41, 56, 42, 42, + 59, 51, 58, 54, 41, 41, 56, 42, + 56, 54, 49, 44, 41, 58, 37, 49, + 54, 58, 49, 58, 44, 54, 47, 58, + 53, 49, 49, 42, 53, 41, 39, 46, + 56, 41, 56, 59, 53, 58, 46, 44, + 44, 37, 39, 49, 39, 37, 56, 49, + 44, 59, 58, 46, 37, 49, 42, 59 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHardcore101.scd b/sound_algo/palette/melodies/xlong/mxlHardcore101.scd new file mode 100644 index 0000000..dbc5333 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHardcore101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHardcore101 -- xlong melody (96 steps), genre: hardcore +// ===================================================================== +( +~mxlHardcore101 = [ + 56, 54, 46, 56, 41, 53, 39, 37, + 41, 0, 44, 39, 58, 58, 44, 46, + 0, 51, 56, 39, 53, 44, 56, 53, + 56, 46, 47, 59, 41, 59, 59, 37, + 53, 51, 44, 47, 37, 37, 56, 59, + 58, 46, 54, 47, 0, 39, 56, 58, + 56, 53, 46, 46, 41, 59, 46, 42, + 46, 42, 59, 37, 51, 46, 53, 47, + 56, 54, 54, 53, 53, 58, 49, 39, + 51, 56, 44, 37, 51, 44, 59, 42, + 57, 37, 46, 43, 0, 35, 45, 55, + 54, 46, 42, 45, 44, 56, 38, 51 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHardcore102.scd b/sound_algo/palette/melodies/xlong/mxlHardcore102.scd new file mode 100644 index 0000000..069627b --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHardcore102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHardcore102 -- xlong melody (96 steps), genre: hardcore +// ===================================================================== +( +~mxlHardcore102 = [ + 56, 46, 42, 56, 56, 42, 42, 46, + 44, 42, 44, 49, 51, 42, 37, 47, + 0, 44, 49, 42, 56, 53, 53, 41, + 56, 46, 42, 56, 56, 42, 42, 46, + 44, 42, 44, 49, 51, 42, 37, 47, + 0, 44, 49, 42, 56, 53, 53, 41, + 58, 39, 42, 59, 53, 39, 51, 46, + 49, 47, 42, 51, 49, 49, 46, 59, + 41, 54, 51, 59, 47, 37, 39, 58, + 56, 46, 42, 56, 56, 42, 42, 46, + 44, 42, 44, 49, 51, 42, 37, 47, + 0, 44, 49, 42, 56, 53, 53, 41 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHardcore103.scd b/sound_algo/palette/melodies/xlong/mxlHardcore103.scd new file mode 100644 index 0000000..c81727c --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHardcore103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHardcore103 -- xlong melody (96 steps), genre: hardcore +// ===================================================================== +( +~mxlHardcore103 = [ + 57, 39, 57, 48, 42, 56, 49, 43, + 57, 47, 40, 56, 41, 46, 60, 36, + 44, 48, 44, 60, 59, 51, 40, 36, + 56, 55, 51, 60, 41, 44, 56, 58, + 57, 36, 44, 47, 56, 52, 42, 51, + 52, 59, 46, 56, 58, 36, 59, 57, + 53, 56, 41, 51, 45, 57, 38, 36, + 58, 55, 60, 36, 48, 45, 39, 58, + 45, 38, 52, 41, 57, 38, 37, 40, + 57, 43, 37, 47, 56, 48, 39, 58, + 44, 50, 52, 46, 60, 50, 49, 45, + 57, 59, 55, 53, 58, 0, 54, 36 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHardcore104.scd b/sound_algo/palette/melodies/xlong/mxlHardcore104.scd new file mode 100644 index 0000000..3534c43 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHardcore104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHardcore104 -- xlong melody (96 steps), genre: hardcore +// ===================================================================== +( +~mxlHardcore104 = [ + 43, 38, 50, 36, 60, 48, 52, 40, + 36, 36, 46, 48, 40, 52, 43, 52, + 43, 57, 38, 43, 46, 0, 55, 58, + 45, 58, 52, 45, 52, 43, 0, 58, + 48, 36, 52, 40, 52, 58, 60, 36, + 55, 58, 52, 58, 52, 60, 58, 36, + 60, 50, 57, 36, 0, 60, 53, 55, + 40, 45, 55, 0, 46, 0, 57, 40, + 55, 57, 0, 48, 60, 0, 52, 52, + 40, 52, 43, 53, 58, 38, 55, 53, + 56, 53, 53, 58, 38, 36, 55, 50, + 54, 51, 43, 36, 51, 62, 44, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHardcore105.scd b/sound_algo/palette/melodies/xlong/mxlHardcore105.scd new file mode 100644 index 0000000..88e2834 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHardcore105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHardcore105 -- xlong melody (96 steps), genre: hardcore +// ===================================================================== +( +~mxlHardcore105 = [ + 53, 47, 51, 56, 41, 53, 47, 42, + 58, 44, 46, 37, 56, 59, 58, 42, + 56, 59, 42, 46, 42, 41, 56, 39, + 53, 47, 51, 56, 41, 53, 47, 42, + 58, 44, 46, 37, 56, 59, 58, 42, + 56, 59, 42, 46, 42, 41, 56, 39, + 53, 56, 51, 39, 44, 46, 47, 58, + 49, 41, 51, 37, 56, 58, 44, 44, + 41, 46, 44, 53, 53, 39, 59, 51, + 53, 47, 51, 56, 41, 53, 47, 42, + 58, 44, 46, 37, 56, 59, 58, 42, + 56, 59, 42, 46, 42, 41, 56, 39 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic100.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic100.scd new file mode 100644 index 0000000..f568069 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic100 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic100 = [ + 0, 0, 60, 70, 0, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 60, 70, 0, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 72, 0, 0, 0, 0, + 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 67, 0, + 0, 0, 60, 70, 0, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic101.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic101.scd new file mode 100644 index 0000000..cff86eb --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic101 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic101 = [ + 70, 60, 0, 0, 60, 60, 0, 0, + 60, 70, 0, 0, 60, 0, 72, 0, + 72, 60, 0, 0, 60, 60, 0, 0, + 70, 60, 0, 0, 60, 60, 0, 0, + 60, 70, 0, 0, 60, 0, 72, 0, + 72, 60, 0, 0, 60, 60, 0, 0, + 60, 60, 0, 0, 67, 60, 72, 0, + 0, 60, 72, 0, 60, 60, 72, 67, + 60, 60, 72, 0, 60, 60, 72, 0, + 70, 60, 0, 0, 60, 60, 0, 0, + 60, 70, 0, 0, 60, 0, 72, 0, + 72, 60, 0, 0, 60, 60, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic102.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic102.scd new file mode 100644 index 0000000..16d0646 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic102 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic102 = [ + 63, 0, 0, 0, 63, 0, 0, 0, + 63, 63, 0, 70, 63, 63, 0, 0, + 63, 63, 70, 0, 63, 0, 67, 0, + 63, 0, 0, 0, 63, 0, 0, 0, + 63, 63, 0, 70, 63, 63, 0, 0, + 63, 63, 70, 0, 63, 0, 67, 0, + 63, 0, 0, 0, 60, 63, 0, 0, + 63, 63, 0, 0, 63, 63, 0, 0, + 63, 63, 0, 0, 63, 63, 0, 65, + 63, 0, 0, 0, 63, 0, 0, 0, + 65, 62, 0, 69, 61, 61, 0, 0, + 61, 61, 68, 0, 64, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic103.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic103.scd new file mode 100644 index 0000000..db2450b --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic103 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic103 = [ + 72, 72, 0, 72, 72, 72, 0, 72, + 72, 72, 0, 0, 72, 72, 0, 72, + 72, 72, 0, 72, 72, 72, 0, 72, + 72, 72, 0, 72, 72, 72, 0, 72, + 72, 72, 0, 0, 72, 72, 0, 72, + 72, 72, 0, 72, 72, 72, 0, 72, + 0, 72, 0, 72, 0, 72, 0, 72, + 72, 72, 0, 65, 72, 72, 0, 72, + 72, 60, 0, 0, 72, 72, 72, 72, + 72, 72, 0, 72, 72, 72, 0, 72, + 72, 72, 0, 0, 72, 72, 0, 72, + 72, 72, 0, 72, 72, 72, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic104.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic104.scd new file mode 100644 index 0000000..b041fd2 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic104 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic104 = [ + 67, 65, 70, 63, 67, 0, 63, 0, + 63, 65, 70, 0, 67, 65, 70, 0, + 67, 65, 63, 70, 67, 65, 70, 70, + 67, 65, 70, 63, 67, 0, 63, 0, + 63, 65, 70, 0, 67, 65, 70, 0, + 67, 65, 63, 70, 67, 65, 70, 70, + 67, 0, 0, 0, 67, 0, 70, 70, + 67, 65, 70, 70, 0, 65, 70, 0, + 67, 63, 70, 70, 67, 65, 70, 70, + 67, 65, 70, 63, 67, 0, 63, 0, + 63, 65, 70, 0, 67, 65, 70, 0, + 67, 65, 63, 70, 67, 65, 70, 70 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic105.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic105.scd new file mode 100644 index 0000000..b7a6205 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic105 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic105 = [ + 0, 0, 60, 60, 0, 0, 60, 60, + 0, 0, 0, 60, 0, 0, 65, 67, + 0, 0, 63, 60, 0, 60, 0, 60, + 0, 0, 60, 60, 0, 0, 60, 60, + 0, 0, 0, 60, 0, 0, 65, 67, + 0, 0, 63, 60, 0, 60, 0, 60, + 0, 72, 60, 60, 0, 0, 60, 72, + 0, 0, 60, 60, 0, 0, 60, 60, + 72, 0, 60, 70, 0, 0, 60, 0, + 0, 0, 60, 60, 0, 0, 60, 60, + 0, 0, 0, 62, 0, 0, 65, 68, + 0, 0, 65, 59, 0, 60, 0, 58 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic106.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic106.scd new file mode 100644 index 0000000..570fc01 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic106 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic106 = [ + 65, 67, 0, 0, 65, 0, 0, 72, + 65, 0, 0, 0, 65, 0, 0, 0, + 72, 0, 0, 0, 0, 0, 72, 70, + 0, 0, 0, 0, 0, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 0, 0, + 65, 0, 67, 0, 0, 0, 0, 0, + 65, 0, 0, 70, 60, 0, 0, 0, + 65, 0, 0, 0, 65, 0, 0, 0, + 60, 0, 0, 0, 0, 0, 0, 0, + 70, 0, 72, 72, 65, 0, 0, 0, + 63, 0, 0, 0, 64, 0, 0, 0, + 63, 0, 0, 0, 64, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic107.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic107.scd new file mode 100644 index 0000000..64bc561 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic107 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic107 = [ + 60, 72, 63, 0, 65, 0, 0, 0, + 65, 72, 65, 70, 65, 72, 63, 60, + 0, 72, 0, 0, 65, 72, 63, 0, + 65, 72, 63, 0, 0, 0, 0, 0, + 65, 72, 63, 0, 0, 60, 63, 0, + 65, 72, 63, 0, 65, 72, 63, 72, + 65, 72, 0, 65, 0, 72, 63, 0, + 65, 0, 60, 0, 65, 0, 63, 0, + 65, 0, 70, 70, 65, 72, 63, 0, + 65, 72, 63, 72, 65, 72, 63, 0, + 66, 73, 65, 0, 0, 74, 63, 0, + 66, 70, 69, 0, 61, 0, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic108.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic108.scd new file mode 100644 index 0000000..960ec62 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic108 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic108 = [ + 70, 60, 72, 72, 70, 72, 72, 0, + 70, 0, 72, 0, 70, 72, 60, 0, + 70, 72, 72, 0, 70, 72, 72, 70, + 70, 72, 72, 0, 70, 72, 72, 0, + 70, 72, 0, 0, 70, 72, 0, 0, + 70, 0, 72, 0, 70, 72, 72, 0, + 70, 72, 72, 65, 70, 0, 72, 0, + 70, 72, 72, 0, 72, 72, 72, 0, + 70, 72, 72, 0, 70, 72, 72, 0, + 70, 72, 72, 0, 70, 72, 0, 0, + 70, 72, 72, 0, 0, 0, 72, 0, + 70, 72, 72, 0, 70, 72, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic109.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic109.scd new file mode 100644 index 0000000..0477c33 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic109 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic109 = [ + 67, 63, 0, 63, 70, 63, 0, 63, + 70, 63, 0, 0, 70, 63, 67, 63, + 70, 67, 0, 0, 70, 60, 0, 63, + 67, 63, 0, 63, 70, 63, 0, 63, + 70, 63, 0, 0, 70, 63, 67, 63, + 70, 67, 0, 0, 70, 60, 0, 63, + 70, 63, 0, 63, 0, 0, 0, 0, + 70, 70, 0, 0, 70, 63, 67, 0, + 70, 63, 0, 63, 70, 0, 67, 63, + 67, 63, 0, 63, 70, 63, 0, 63, + 70, 63, 0, 0, 70, 63, 67, 63, + 70, 67, 0, 0, 70, 60, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic110.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic110.scd new file mode 100644 index 0000000..a04563f --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic110.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic110 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic110 = [ + 0, 65, 0, 72, 72, 65, 0, 72, + 72, 65, 65, 72, 72, 65, 0, 72, + 72, 65, 0, 72, 72, 65, 0, 72, + 72, 65, 0, 72, 0, 65, 0, 72, + 72, 67, 67, 72, 72, 0, 0, 60, + 72, 65, 0, 72, 72, 65, 0, 72, + 60, 65, 0, 0, 0, 65, 70, 0, + 72, 65, 0, 72, 72, 65, 0, 0, + 0, 0, 0, 72, 72, 0, 0, 72, + 72, 65, 70, 63, 72, 65, 0, 72, + 73, 68, 0, 73, 70, 64, 0, 65, + 0, 66, 0, 73, 73, 64, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic111.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic111.scd new file mode 100644 index 0000000..c27ff1b --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic111.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic111 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic111 = [ + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 0, 63, 0, 0, 0, 0, 60, + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 0, 60, 60, 0, 0, 72, 60, + 0, 0, 0, 60, 72, 0, 0, 60, + 0, 72, 0, 60, 0, 0, 0, 60, + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 0, 0, 60, 72, 0, 0, 70, + 0, 67, 0, 60, 0, 0, 0, 60, + 0, 0, 0, 60, 0, 60, 0, 60, + 0, 0, 0, 60, 0, 0, 67, 60 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlHypnotic112.scd b/sound_algo/palette/melodies/xlong/mxlHypnotic112.scd new file mode 100644 index 0000000..081aead --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlHypnotic112.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlHypnotic112 -- xlong melody (96 steps), genre: hypnotic +// ===================================================================== +( +~mxlHypnotic112 = [ + 67, 67, 65, 0, 67, 67, 0, 0, + 67, 67, 0, 0, 0, 67, 0, 0, + 63, 0, 0, 0, 67, 67, 0, 0, + 67, 67, 65, 0, 67, 67, 0, 0, + 67, 67, 0, 0, 0, 67, 0, 0, + 63, 0, 0, 0, 67, 67, 0, 0, + 67, 67, 0, 0, 67, 67, 0, 0, + 67, 67, 0, 0, 67, 67, 0, 0, + 67, 67, 0, 0, 67, 67, 0, 0, + 67, 67, 65, 0, 67, 67, 0, 0, + 67, 67, 0, 0, 0, 67, 0, 0, + 63, 0, 0, 0, 67, 67, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlIndustrial100.scd b/sound_algo/palette/melodies/xlong/mxlIndustrial100.scd new file mode 100644 index 0000000..3af28d3 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlIndustrial100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlIndustrial100 -- xlong melody (96 steps), genre: industrial +// ===================================================================== +( +~mxlIndustrial100 = [ + 49, 51, 59, 60, 49, 51, 59, 60, + 49, 51, 59, 60, 49, 51, 59, 60, + 49, 51, 59, 60, 49, 51, 59, 60, + 49, 51, 59, 60, 49, 51, 59, 60, + 49, 51, 59, 60, 49, 51, 59, 60, + 49, 51, 59, 60, 49, 51, 59, 60, + 49, 51, 59, 60, 49, 51, 59, 60, + 49, 51, 59, 60, 49, 51, 59, 60, + 49, 51, 59, 60, 49, 51, 59, 60, + 49, 51, 59, 60, 49, 51, 59, 60, + 47, 49, 59, 62, 50, 49, 57, 60, + 47, 49, 58, 62, 48, 52, 59, 61 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlIndustrial101.scd b/sound_algo/palette/melodies/xlong/mxlIndustrial101.scd new file mode 100644 index 0000000..3866cf8 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlIndustrial101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlIndustrial101 -- xlong melody (96 steps), genre: industrial +// ===================================================================== +( +~mxlIndustrial101 = [ + 43, 0, 53, 58, 43, 0, 53, 58, + 43, 0, 53, 58, 43, 0, 53, 58, + 43, 0, 53, 58, 43, 0, 53, 58, + 43, 0, 53, 58, 43, 0, 53, 58, + 43, 0, 53, 58, 43, 0, 53, 58, + 43, 0, 53, 58, 43, 0, 53, 58, + 43, 0, 53, 58, 43, 0, 53, 58, + 43, 0, 53, 58, 43, 0, 53, 58, + 43, 0, 53, 58, 43, 0, 53, 58, + 43, 0, 53, 58, 43, 0, 53, 58, + 43, 0, 53, 58, 43, 0, 53, 58, + 43, 0, 53, 58, 43, 0, 53, 58 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlIndustrial102.scd b/sound_algo/palette/melodies/xlong/mxlIndustrial102.scd new file mode 100644 index 0000000..fece564 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlIndustrial102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlIndustrial102 -- xlong melody (96 steps), genre: industrial +// ===================================================================== +( +~mxlIndustrial102 = [ + 59, 45, 49, 0, 59, 45, 49, 0, + 59, 45, 49, 0, 59, 45, 49, 0, + 59, 45, 49, 0, 59, 45, 49, 0, + 59, 45, 49, 0, 59, 45, 49, 0, + 59, 45, 49, 0, 59, 45, 49, 0, + 59, 45, 49, 0, 59, 45, 49, 0, + 59, 45, 49, 0, 59, 45, 49, 0, + 59, 45, 49, 0, 59, 45, 49, 0, + 59, 45, 49, 0, 59, 45, 49, 0, + 59, 45, 49, 0, 59, 45, 49, 0, + 61, 47, 51, 0, 59, 46, 50, 0, + 59, 43, 48, 0, 60, 43, 51, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlIndustrial103.scd b/sound_algo/palette/melodies/xlong/mxlIndustrial103.scd new file mode 100644 index 0000000..a4c4e24 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlIndustrial103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlIndustrial103 -- xlong melody (96 steps), genre: industrial +// ===================================================================== +( +~mxlIndustrial103 = [ + 45, 43, 60, 47, 45, 43, 60, 47, + 45, 43, 60, 47, 45, 43, 60, 47, + 45, 43, 60, 47, 45, 43, 60, 47, + 45, 43, 60, 47, 45, 43, 60, 47, + 45, 43, 60, 47, 45, 43, 60, 47, + 45, 43, 60, 47, 45, 43, 60, 47, + 45, 43, 60, 47, 45, 43, 60, 47, + 45, 43, 60, 47, 45, 43, 60, 47, + 45, 43, 60, 47, 45, 43, 60, 47, + 45, 43, 60, 47, 45, 43, 60, 47, + 45, 43, 60, 47, 45, 43, 60, 47, + 45, 43, 60, 47, 45, 43, 60, 47 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlIndustrial104.scd b/sound_algo/palette/melodies/xlong/mxlIndustrial104.scd new file mode 100644 index 0000000..6a47927 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlIndustrial104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlIndustrial104 -- xlong melody (96 steps), genre: industrial +// ===================================================================== +( +~mxlIndustrial104 = [ + 0, 0, 43, 57, 0, 0, 43, 57, + 0, 0, 43, 57, 0, 0, 43, 57, + 0, 0, 43, 57, 0, 0, 43, 57, + 0, 0, 43, 57, 0, 0, 43, 57, + 0, 0, 43, 57, 0, 0, 43, 57, + 0, 0, 43, 57, 0, 0, 43, 57, + 0, 0, 43, 57, 0, 0, 43, 57, + 0, 0, 43, 57, 0, 0, 43, 57, + 0, 0, 43, 57, 0, 0, 43, 57, + 0, 0, 43, 57, 0, 0, 43, 57, + 0, 0, 43, 57, 0, 0, 43, 57, + 0, 0, 43, 57, 0, 0, 43, 57 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlIndustrial105.scd b/sound_algo/palette/melodies/xlong/mxlIndustrial105.scd new file mode 100644 index 0000000..4679bef --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlIndustrial105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlIndustrial105 -- xlong melody (96 steps), genre: industrial +// ===================================================================== +( +~mxlIndustrial105 = [ + 48, 57, 41, 43, 48, 57, 41, 43, + 48, 57, 41, 43, 48, 57, 41, 43, + 48, 57, 41, 43, 48, 57, 41, 43, + 48, 57, 41, 43, 48, 57, 41, 43, + 48, 57, 41, 43, 48, 57, 41, 43, + 48, 57, 41, 43, 48, 57, 41, 43, + 48, 57, 41, 43, 48, 57, 41, 43, + 48, 57, 41, 43, 48, 57, 41, 43, + 48, 57, 41, 43, 48, 57, 41, 43, + 48, 57, 41, 43, 48, 57, 41, 43, + 48, 57, 41, 43, 48, 57, 41, 43, + 48, 57, 41, 43, 48, 57, 41, 43 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlIndustrial106.scd b/sound_algo/palette/melodies/xlong/mxlIndustrial106.scd new file mode 100644 index 0000000..d832d66 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlIndustrial106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlIndustrial106 -- xlong melody (96 steps), genre: industrial +// ===================================================================== +( +~mxlIndustrial106 = [ + 60, 51, 0, 43, 60, 51, 0, 43, + 60, 51, 0, 43, 60, 51, 0, 43, + 60, 51, 0, 43, 60, 51, 0, 43, + 60, 51, 0, 43, 60, 51, 0, 43, + 60, 51, 0, 43, 60, 51, 0, 43, + 60, 51, 0, 43, 60, 51, 0, 43, + 60, 51, 0, 43, 60, 51, 0, 43, + 60, 51, 0, 43, 60, 51, 0, 43, + 60, 51, 0, 43, 60, 51, 0, 43, + 60, 51, 0, 43, 60, 51, 0, 43, + 60, 51, 0, 43, 60, 51, 0, 43, + 60, 51, 0, 43, 60, 51, 0, 43 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlIndustrial107.scd b/sound_algo/palette/melodies/xlong/mxlIndustrial107.scd new file mode 100644 index 0000000..aad3847 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlIndustrial107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlIndustrial107 -- xlong melody (96 steps), genre: industrial +// ===================================================================== +( +~mxlIndustrial107 = [ + 40, 52, 50, 43, 40, 52, 50, 43, + 40, 52, 50, 43, 40, 52, 50, 43, + 40, 52, 50, 43, 40, 52, 50, 43, + 40, 52, 50, 43, 40, 52, 50, 43, + 40, 52, 50, 43, 40, 52, 50, 43, + 40, 52, 50, 43, 40, 52, 50, 43, + 40, 52, 50, 43, 40, 52, 50, 43, + 40, 52, 50, 43, 40, 52, 50, 43, + 40, 52, 50, 43, 40, 52, 50, 43, + 40, 52, 50, 43, 40, 52, 50, 43, + 40, 52, 50, 43, 40, 52, 50, 43, + 40, 52, 50, 43, 40, 52, 50, 43 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlIndustrial108.scd b/sound_algo/palette/melodies/xlong/mxlIndustrial108.scd new file mode 100644 index 0000000..0feb1aa --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlIndustrial108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlIndustrial108 -- xlong melody (96 steps), genre: industrial +// ===================================================================== +( +~mxlIndustrial108 = [ + 59, 0, 37, 0, 59, 0, 37, 0, + 59, 0, 37, 0, 59, 0, 37, 0, + 59, 0, 37, 0, 59, 0, 37, 0, + 59, 0, 37, 0, 59, 0, 37, 0, + 59, 0, 37, 0, 59, 0, 37, 0, + 59, 0, 37, 0, 59, 0, 37, 0, + 59, 0, 37, 0, 59, 0, 37, 0, + 59, 0, 37, 0, 59, 0, 37, 0, + 59, 0, 37, 0, 59, 0, 37, 0, + 59, 0, 37, 0, 59, 0, 37, 0, + 59, 0, 37, 0, 59, 0, 37, 0, + 59, 0, 37, 0, 59, 0, 37, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlIndustrial109.scd b/sound_algo/palette/melodies/xlong/mxlIndustrial109.scd new file mode 100644 index 0000000..f5367e0 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlIndustrial109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlIndustrial109 -- xlong melody (96 steps), genre: industrial +// ===================================================================== +( +~mxlIndustrial109 = [ + 40, 49, 60, 55, 40, 49, 60, 55, + 40, 49, 60, 55, 40, 49, 60, 55, + 40, 49, 60, 55, 40, 49, 60, 55, + 40, 49, 60, 55, 40, 49, 60, 55, + 40, 49, 60, 55, 40, 49, 60, 55, + 40, 49, 60, 55, 40, 49, 60, 55, + 40, 49, 60, 55, 40, 49, 60, 55, + 40, 49, 60, 55, 40, 49, 60, 55, + 40, 49, 60, 55, 40, 49, 60, 55, + 40, 49, 60, 55, 40, 49, 60, 55, + 40, 49, 60, 55, 40, 49, 60, 55, + 40, 49, 60, 55, 40, 49, 60, 55 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlJazz100.scd b/sound_algo/palette/melodies/xlong/mxlJazz100.scd new file mode 100644 index 0000000..4367f1e --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlJazz100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlJazz100 -- xlong melody (96 steps), genre: jazz +// ===================================================================== +( +~mxlJazz100 = [ + 60, 0, 67, 68, 61, 60, 60, 55, + 0, 0, 75, 60, 68, 80, 0, 0, + 0, 68, 51, 0, 79, 0, 0, 84, + 60, 0, 67, 68, 61, 60, 60, 55, + 0, 0, 75, 60, 68, 80, 0, 0, + 0, 68, 51, 0, 79, 0, 0, 84, + 0, 74, 74, 67, 0, 63, 0, 65, + 77, 0, 55, 53, 60, 55, 0, 53, + 72, 0, 65, 0, 60, 0, 0, 62, + 60, 0, 67, 68, 61, 60, 60, 55, + 0, 0, 75, 60, 68, 80, 0, 0, + 0, 68, 51, 0, 79, 0, 0, 84 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlJazz101.scd b/sound_algo/palette/melodies/xlong/mxlJazz101.scd new file mode 100644 index 0000000..0d9e038 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlJazz101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlJazz101 -- xlong melody (96 steps), genre: jazz +// ===================================================================== +( +~mxlJazz101 = [ + 0, 60, 0, 74, 0, 60, 82, 81, + 72, 82, 65, 0, 0, 74, 0, 65, + 64, 76, 63, 64, 51, 50, 56, 57, + 0, 60, 0, 74, 0, 60, 82, 81, + 72, 82, 65, 0, 0, 74, 0, 65, + 64, 76, 63, 64, 51, 50, 56, 57, + 67, 65, 62, 81, 0, 52, 52, 82, + 52, 67, 76, 0, 67, 65, 0, 63, + 64, 0, 84, 72, 76, 0, 64, 55, + 0, 60, 0, 74, 0, 60, 82, 81, + 72, 82, 65, 0, 0, 74, 0, 65, + 64, 76, 63, 64, 51, 50, 56, 57 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlJazz102.scd b/sound_algo/palette/melodies/xlong/mxlJazz102.scd new file mode 100644 index 0000000..88739bd --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlJazz102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlJazz102 -- xlong melody (96 steps), genre: jazz +// ===================================================================== +( +~mxlJazz102 = [ + 0, 80, 48, 48, 78, 79, 0, 77, + 0, 75, 55, 0, 0, 68, 0, 79, + 72, 55, 53, 82, 77, 48, 71, 70, + 0, 80, 48, 48, 78, 79, 0, 77, + 0, 75, 55, 0, 0, 68, 0, 79, + 72, 55, 53, 82, 77, 48, 71, 70, + 0, 56, 74, 0, 60, 0, 80, 72, + 60, 63, 67, 56, 60, 70, 84, 55, + 56, 0, 0, 72, 72, 70, 50, 80, + 0, 80, 48, 48, 78, 79, 0, 77, + 0, 75, 55, 0, 0, 68, 0, 79, + 72, 55, 53, 82, 77, 48, 71, 70 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlJazz103.scd b/sound_algo/palette/melodies/xlong/mxlJazz103.scd new file mode 100644 index 0000000..08f3cbd --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlJazz103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlJazz103 -- xlong melody (96 steps), genre: jazz +// ===================================================================== +( +~mxlJazz103 = [ + 0, 65, 0, 65, 0, 61, 51, 0, + 56, 0, 83, 81, 0, 56, 62, 68, + 69, 0, 77, 0, 80, 0, 56, 83, + 0, 65, 0, 65, 0, 61, 51, 0, + 56, 0, 83, 81, 0, 56, 62, 68, + 69, 0, 77, 0, 80, 0, 56, 83, + 0, 51, 0, 0, 60, 76, 75, 0, + 51, 81, 0, 0, 0, 49, 0, 51, + 56, 0, 63, 0, 70, 69, 66, 0, + 0, 65, 0, 65, 0, 61, 51, 0, + 56, 0, 83, 81, 0, 56, 62, 68, + 69, 0, 77, 0, 80, 0, 56, 83 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlJazz104.scd b/sound_algo/palette/melodies/xlong/mxlJazz104.scd new file mode 100644 index 0000000..af604c7 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlJazz104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlJazz104 -- xlong melody (96 steps), genre: jazz +// ===================================================================== +( +~mxlJazz104 = [ + 76, 0, 74, 84, 0, 0, 60, 0, + 0, 70, 0, 60, 0, 49, 48, 0, + 67, 76, 67, 53, 52, 0, 67, 67, + 83, 84, 48, 82, 64, 0, 0, 50, + 0, 49, 48, 0, 52, 57, 53, 0, + 48, 55, 60, 55, 78, 79, 0, 50, + 61, 60, 0, 0, 52, 55, 0, 72, + 0, 53, 53, 0, 0, 84, 75, 74, + 0, 0, 73, 72, 53, 74, 55, 0, + 67, 0, 0, 62, 50, 66, 67, 82, + 52, 0, 0, 48, 55, 64, 72, 84, + 69, 70, 76, 72, 0, 62, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlJazz105.scd b/sound_algo/palette/melodies/xlong/mxlJazz105.scd new file mode 100644 index 0000000..e9f6a2d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlJazz105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlJazz105 -- xlong melody (96 steps), genre: jazz +// ===================================================================== +( +~mxlJazz105 = [ + 0, 77, 59, 58, 55, 0, 57, 74, + 63, 60, 63, 0, 63, 73, 74, 0, + 66, 67, 60, 0, 51, 61, 62, 84, + 0, 81, 55, 73, 72, 0, 51, 0, + 48, 0, 0, 72, 79, 57, 64, 63, + 67, 0, 0, 63, 77, 65, 55, 62, + 55, 60, 0, 53, 49, 48, 69, 72, + 0, 67, 0, 0, 72, 0, 0, 60, + 48, 75, 67, 58, 75, 51, 65, 82, + 0, 0, 0, 0, 75, 74, 71, 72, + 0, 52, 62, 82, 0, 72, 58, 0, + 0, 0, 0, 0, 86, 50, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental100.scd b/sound_algo/palette/melodies/xlong/mxlOriental100.scd new file mode 100644 index 0000000..b17ce46 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental100 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental100 = [ + 69, 0, 58, 63, 0, 60, 58, 74, + 74, 54, 0, 66, 74, 0, 0, 66, + 0, 54, 62, 60, 74, 50, 62, 72, + 50, 72, 63, 70, 0, 0, 74, 0, + 57, 66, 74, 63, 0, 0, 63, 0, + 0, 74, 0, 72, 62, 60, 0, 0, + 0, 62, 66, 72, 70, 0, 0, 50, + 50, 0, 69, 74, 0, 72, 0, 58, + 0, 0, 51, 63, 66, 50, 57, 58, + 0, 63, 51, 54, 54, 51, 58, 57, + 66, 54, 0, 0, 57, 0, 0, 50, + 67, 66, 51, 69, 58, 57, 69, 74 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental101.scd b/sound_algo/palette/melodies/xlong/mxlOriental101.scd new file mode 100644 index 0000000..dde0657 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental101 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental101 = [ + 0, 74, 0, 0, 55, 0, 62, 0, + 50, 0, 59, 74, 0, 55, 72, 0, + 0, 0, 67, 50, 67, 0, 65, 0, + 0, 74, 0, 0, 55, 0, 62, 0, + 50, 0, 59, 74, 0, 55, 72, 0, + 0, 0, 67, 50, 67, 0, 65, 0, + 55, 72, 72, 53, 0, 62, 56, 0, + 0, 50, 60, 72, 59, 68, 56, 0, + 53, 51, 71, 74, 71, 68, 0, 60, + 0, 74, 0, 0, 55, 0, 62, 0, + 50, 0, 57, 76, 0, 56, 70, 0, + 0, 0, 69, 50, 68, 0, 63, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental102.scd b/sound_algo/palette/melodies/xlong/mxlOriental102.scd new file mode 100644 index 0000000..d3dda5f --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental102 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental102 = [ + 59, 55, 0, 0, 53, 0, 72, 62, + 0, 0, 59, 67, 0, 72, 74, 50, + 50, 67, 0, 71, 53, 65, 0, 63, + 59, 55, 0, 0, 53, 0, 72, 62, + 0, 0, 59, 67, 0, 72, 74, 50, + 50, 67, 0, 71, 53, 65, 0, 63, + 53, 63, 72, 68, 0, 68, 0, 56, + 59, 56, 50, 74, 0, 0, 0, 0, + 59, 62, 71, 0, 0, 51, 55, 55, + 59, 55, 0, 0, 53, 0, 72, 62, + 0, 0, 59, 67, 0, 72, 74, 50, + 50, 67, 0, 71, 53, 65, 0, 63 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental103.scd b/sound_algo/palette/melodies/xlong/mxlOriental103.scd new file mode 100644 index 0000000..17f1c2b --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental103 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental103 = [ + 0, 0, 69, 72, 0, 67, 67, 74, + 50, 0, 0, 70, 74, 55, 0, 70, + 62, 54, 62, 70, 0, 0, 0, 69, + 62, 0, 62, 0, 0, 66, 50, 51, + 74, 51, 74, 72, 62, 57, 69, 66, + 66, 0, 69, 51, 54, 51, 69, 0, + 60, 58, 0, 62, 57, 58, 67, 60, + 57, 74, 67, 58, 0, 0, 67, 51, + 0, 0, 69, 50, 0, 57, 0, 63, + 50, 57, 58, 0, 54, 0, 0, 72, + 54, 54, 0, 67, 50, 74, 0, 55, + 51, 63, 66, 69, 74, 72, 55, 70 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental104.scd b/sound_algo/palette/melodies/xlong/mxlOriental104.scd new file mode 100644 index 0000000..55cf8e7 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental104 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental104 = [ + 70, 62, 72, 0, 74, 51, 55, 0, + 58, 57, 0, 54, 66, 54, 66, 57, + 72, 70, 54, 70, 0, 54, 58, 58, + 70, 62, 72, 0, 74, 51, 55, 0, + 58, 57, 0, 54, 66, 54, 66, 57, + 72, 70, 54, 70, 0, 54, 58, 58, + 0, 0, 51, 51, 54, 70, 50, 74, + 62, 60, 0, 58, 66, 0, 54, 63, + 74, 72, 69, 0, 66, 72, 60, 69, + 70, 62, 72, 0, 74, 51, 55, 0, + 58, 57, 0, 54, 66, 54, 66, 57, + 72, 70, 54, 70, 0, 54, 58, 58 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental105.scd b/sound_algo/palette/melodies/xlong/mxlOriental105.scd new file mode 100644 index 0000000..fa50e18 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental105 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental105 = [ + 0, 0, 74, 62, 57, 51, 51, 66, + 74, 0, 72, 74, 0, 69, 0, 62, + 62, 69, 74, 66, 66, 62, 62, 67, + 0, 0, 74, 62, 57, 51, 51, 66, + 74, 0, 72, 74, 0, 69, 0, 62, + 62, 69, 74, 66, 66, 62, 62, 67, + 0, 0, 0, 60, 63, 60, 55, 74, + 57, 55, 0, 69, 0, 57, 0, 58, + 63, 62, 72, 55, 0, 0, 69, 63, + 0, 0, 74, 62, 57, 51, 51, 66, + 76, 0, 73, 74, 0, 68, 0, 61, + 61, 67, 74, 64, 68, 61, 64, 65 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental106.scd b/sound_algo/palette/melodies/xlong/mxlOriental106.scd new file mode 100644 index 0000000..62e36ab --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental106 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental106 = [ + 0, 60, 57, 69, 66, 63, 58, 69, + 0, 54, 74, 72, 72, 70, 69, 51, + 66, 63, 62, 55, 63, 0, 60, 67, + 0, 60, 57, 69, 66, 63, 58, 69, + 0, 54, 74, 72, 72, 70, 69, 51, + 66, 63, 62, 55, 63, 0, 60, 67, + 69, 57, 55, 69, 54, 51, 57, 0, + 0, 57, 69, 66, 57, 55, 0, 55, + 60, 58, 0, 70, 60, 70, 74, 58, + 0, 60, 57, 69, 66, 63, 58, 69, + 0, 53, 76, 74, 70, 69, 70, 53, + 65, 61, 63, 53, 62, 0, 61, 67 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental107.scd b/sound_algo/palette/melodies/xlong/mxlOriental107.scd new file mode 100644 index 0000000..6660bdf --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental107 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental107 = [ + 60, 67, 63, 50, 0, 0, 0, 58, + 0, 70, 72, 66, 57, 54, 0, 66, + 0, 0, 69, 63, 70, 69, 51, 74, + 60, 67, 63, 50, 0, 0, 0, 58, + 0, 70, 72, 66, 57, 54, 0, 66, + 0, 0, 69, 63, 70, 69, 51, 74, + 54, 54, 0, 67, 74, 57, 69, 69, + 70, 69, 51, 0, 67, 58, 0, 55, + 74, 72, 0, 67, 0, 54, 66, 67, + 60, 67, 63, 50, 0, 0, 0, 58, + 0, 70, 72, 66, 57, 54, 0, 66, + 0, 0, 69, 63, 70, 69, 51, 74 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental108.scd b/sound_algo/palette/melodies/xlong/mxlOriental108.scd new file mode 100644 index 0000000..e7e7f1d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental108 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental108 = [ + 0, 0, 59, 0, 67, 63, 63, 60, + 56, 0, 0, 62, 62, 60, 72, 53, + 0, 56, 0, 0, 68, 51, 67, 67, + 0, 0, 59, 0, 67, 63, 63, 60, + 56, 0, 0, 62, 62, 60, 72, 53, + 0, 56, 0, 0, 68, 51, 67, 67, + 0, 62, 74, 0, 60, 59, 59, 0, + 55, 53, 71, 0, 0, 67, 51, 0, + 0, 72, 53, 53, 68, 65, 71, 59, + 0, 0, 59, 0, 67, 63, 63, 60, + 58, 0, 0, 61, 62, 58, 73, 52, + 0, 56, 0, 0, 66, 53, 67, 69 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental109.scd b/sound_algo/palette/melodies/xlong/mxlOriental109.scd new file mode 100644 index 0000000..b37f5ed --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental109 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental109 = [ + 0, 0, 0, 0, 0, 0, 74, 56, + 0, 62, 0, 0, 72, 53, 0, 50, + 71, 68, 0, 59, 0, 62, 55, 50, + 62, 0, 67, 53, 0, 56, 0, 0, + 67, 55, 55, 60, 72, 0, 71, 51, + 71, 68, 53, 59, 74, 67, 0, 0, + 55, 53, 67, 0, 0, 63, 0, 0, + 53, 0, 68, 0, 0, 0, 63, 53, + 60, 59, 59, 65, 0, 0, 74, 56, + 50, 67, 59, 68, 55, 65, 0, 56, + 71, 68, 71, 63, 55, 0, 62, 56, + 50, 56, 0, 65, 59, 56, 71, 65 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental110.scd b/sound_algo/palette/melodies/xlong/mxlOriental110.scd new file mode 100644 index 0000000..199412f --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental110.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental110 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental110 = [ + 54, 63, 0, 50, 57, 0, 0, 66, + 54, 51, 0, 0, 62, 67, 0, 67, + 72, 72, 0, 55, 62, 72, 54, 0, + 54, 63, 0, 50, 57, 0, 0, 66, + 54, 51, 0, 0, 62, 67, 0, 67, + 72, 72, 0, 55, 62, 72, 54, 0, + 74, 72, 58, 63, 0, 62, 0, 0, + 72, 0, 55, 69, 50, 54, 66, 74, + 54, 70, 74, 72, 0, 58, 55, 0, + 54, 63, 0, 50, 57, 0, 0, 66, + 54, 51, 0, 0, 62, 67, 0, 67, + 72, 72, 0, 55, 62, 72, 54, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental111.scd b/sound_algo/palette/melodies/xlong/mxlOriental111.scd new file mode 100644 index 0000000..43ec39c --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental111.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental111 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental111 = [ + 57, 55, 0, 51, 0, 50, 54, 0, + 0, 55, 54, 58, 74, 72, 54, 72, + 54, 51, 0, 57, 50, 0, 54, 72, + 50, 0, 63, 0, 74, 72, 70, 0, + 0, 67, 57, 0, 74, 62, 57, 70, + 62, 60, 54, 0, 54, 74, 55, 67, + 0, 0, 63, 57, 60, 58, 69, 67, + 0, 0, 72, 74, 55, 54, 74, 0, + 0, 74, 57, 63, 54, 57, 54, 55, + 74, 72, 60, 57, 66, 63, 57, 66, + 63, 0, 59, 52, 0, 0, 0, 0, + 0, 71, 0, 0, 0, 51, 60, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental112.scd b/sound_algo/palette/melodies/xlong/mxlOriental112.scd new file mode 100644 index 0000000..a711097 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental112.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental112 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental112 = [ + 0, 66, 63, 67, 60, 58, 60, 69, + 54, 0, 51, 60, 57, 0, 69, 50, + 60, 58, 67, 58, 0, 55, 0, 0, + 0, 66, 63, 67, 60, 58, 60, 69, + 54, 0, 51, 60, 57, 0, 69, 50, + 60, 58, 67, 58, 0, 55, 0, 0, + 0, 70, 63, 0, 0, 50, 50, 0, + 58, 66, 57, 51, 62, 0, 54, 0, + 0, 0, 51, 0, 57, 55, 74, 70, + 0, 66, 63, 67, 60, 58, 60, 69, + 54, 0, 51, 60, 57, 0, 69, 50, + 60, 58, 67, 58, 0, 55, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental113.scd b/sound_algo/palette/melodies/xlong/mxlOriental113.scd new file mode 100644 index 0000000..c16069f --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental113.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental113 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental113 = [ + 0, 0, 62, 70, 62, 60, 0, 58, + 0, 72, 0, 55, 66, 63, 0, 66, + 66, 0, 57, 0, 0, 72, 57, 72, + 0, 0, 62, 70, 62, 60, 0, 58, + 0, 72, 0, 55, 66, 63, 0, 66, + 66, 0, 57, 0, 0, 72, 57, 72, + 72, 74, 54, 50, 54, 72, 72, 57, + 69, 67, 0, 60, 57, 55, 69, 66, + 0, 62, 58, 69, 0, 66, 50, 69, + 0, 0, 62, 70, 62, 60, 0, 58, + 0, 72, 0, 55, 66, 63, 0, 66, + 66, 0, 57, 0, 0, 72, 57, 72 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental114.scd b/sound_algo/palette/melodies/xlong/mxlOriental114.scd new file mode 100644 index 0000000..9e1f7b6 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental114.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental114 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental114 = [ + 60, 59, 67, 63, 55, 68, 56, 0, + 0, 60, 67, 56, 53, 51, 0, 65, + 74, 50, 60, 53, 62, 0, 74, 59, + 50, 0, 59, 53, 0, 0, 56, 55, + 0, 0, 72, 74, 55, 72, 50, 0, + 51, 50, 51, 50, 62, 63, 68, 0, + 67, 65, 60, 71, 0, 60, 50, 72, + 0, 72, 71, 0, 0, 68, 62, 50, + 63, 0, 0, 0, 67, 65, 0, 0, + 0, 0, 68, 62, 59, 56, 68, 0, + 56, 59, 0, 0, 0, 0, 65, 0, + 67, 65, 65, 56, 74, 72, 50, 74 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental115.scd b/sound_algo/palette/melodies/xlong/mxlOriental115.scd new file mode 100644 index 0000000..719cfba --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental115.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental115 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental115 = [ + 68, 0, 53, 72, 50, 0, 0, 71, + 50, 51, 67, 62, 0, 59, 50, 0, + 0, 50, 74, 59, 71, 68, 0, 59, + 68, 0, 53, 72, 50, 0, 0, 71, + 50, 51, 67, 62, 0, 59, 50, 0, + 0, 50, 74, 59, 71, 68, 0, 59, + 0, 0, 62, 71, 72, 71, 63, 0, + 0, 62, 0, 0, 55, 53, 50, 0, + 0, 50, 59, 0, 74, 72, 60, 0, + 68, 0, 53, 72, 50, 0, 0, 71, + 50, 51, 67, 62, 0, 59, 50, 0, + 0, 50, 74, 59, 71, 68, 0, 59 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental116.scd b/sound_algo/palette/melodies/xlong/mxlOriental116.scd new file mode 100644 index 0000000..10a7cd7 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental116.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental116 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental116 = [ + 0, 0, 0, 62, 0, 72, 72, 50, + 71, 68, 67, 56, 0, 74, 55, 65, + 0, 63, 68, 65, 0, 0, 68, 74, + 0, 62, 51, 0, 62, 72, 0, 63, + 55, 53, 60, 67, 0, 59, 51, 67, + 55, 0, 0, 72, 74, 0, 60, 67, + 0, 55, 62, 0, 0, 56, 0, 67, + 0, 67, 0, 50, 59, 62, 60, 50, + 53, 0, 0, 0, 53, 74, 72, 72, + 50, 0, 0, 56, 0, 72, 68, 0, + 0, 68, 59, 53, 62, 60, 0, 55, + 0, 50, 0, 63, 55, 53, 74, 51 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlOriental117.scd b/sound_algo/palette/melodies/xlong/mxlOriental117.scd new file mode 100644 index 0000000..0ccfdf4 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlOriental117.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlOriental117 -- xlong melody (96 steps), genre: oriental +// ===================================================================== +( +~mxlOriental117 = [ + 67, 66, 72, 57, 74, 72, 57, 62, + 72, 70, 0, 50, 66, 63, 66, 0, + 66, 63, 0, 0, 50, 0, 0, 60, + 69, 67, 66, 57, 74, 72, 0, 50, + 67, 66, 58, 58, 55, 66, 58, 0, + 54, 51, 60, 62, 66, 70, 60, 0, + 54, 51, 63, 54, 74, 0, 67, 62, + 66, 74, 55, 58, 57, 67, 0, 62, + 66, 60, 0, 70, 57, 55, 72, 62, + 74, 72, 55, 60, 70, 66, 57, 66, + 59, 55, 74, 66, 66, 74, 0, 55, + 54, 73, 68, 0, 74, 50, 69, 64 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPad100.scd b/sound_algo/palette/melodies/xlong/mxlPad100.scd new file mode 100644 index 0000000..a9d4ceb --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPad100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPad100 -- xlong melody (96 steps), genre: pad +// ===================================================================== +( +~mxlPad100 = [ + 0, 0, 0, 0, 0, 79, 0, 0, + 0, 0, 0, 77, 0, 0, 60, 0, + 0, 0, 77, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 79, 0, 0, + 0, 0, 0, 77, 0, 0, 60, 0, + 0, 0, 77, 0, 0, 0, 0, 65, + 60, 0, 0, 0, 0, 0, 0, 74, + 0, 0, 0, 0, 0, 0, 0, 0, + 84, 0, 0, 77, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 79, 0, 0, + 0, 0, 0, 77, 0, 0, 60, 0, + 0, 0, 77, 0, 0, 0, 0, 65 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPad101.scd b/sound_algo/palette/melodies/xlong/mxlPad101.scd new file mode 100644 index 0000000..84be0fd --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPad101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPad101 -- xlong melody (96 steps), genre: pad +// ===================================================================== +( +~mxlPad101 = [ + 0, 83, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 71, 0, 67, 0, 81, + 77, 0, 0, 0, 0, 79, 0, 0, + 0, 0, 0, 0, 77, 0, 0, 79, + 83, 0, 0, 0, 79, 0, 0, 0, + 0, 0, 65, 0, 0, 0, 0, 0, + 72, 0, 83, 0, 60, 0, 0, 65, + 0, 0, 0, 0, 79, 0, 0, 0, + 64, 84, 0, 0, 0, 0, 71, 0, + 0, 0, 0, 0, 77, 0, 0, 0, + 0, 64, 0, 0, 0, 0, 0, 0, + 72, 0, 0, 69, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPad102.scd b/sound_algo/palette/melodies/xlong/mxlPad102.scd new file mode 100644 index 0000000..c62fafa --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPad102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPad102 -- xlong melody (96 steps), genre: pad +// ===================================================================== +( +~mxlPad102 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 84, 0, 0, 74, 0, 0, 0, + 0, 0, 76, 0, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 84, 0, 0, 74, 0, 0, 0, + 0, 0, 76, 0, 0, 0, 0, 79, + 0, 0, 0, 0, 69, 0, 0, 0, + 0, 0, 0, 64, 72, 0, 70, 0, + 0, 0, 60, 0, 69, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 83, 0, 0, 75, 0, 0, 0, + 0, 0, 75, 0, 0, 0, 0, 77 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPad103.scd b/sound_algo/palette/melodies/xlong/mxlPad103.scd new file mode 100644 index 0000000..eaaf888 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPad103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPad103 -- xlong melody (96 steps), genre: pad +// ===================================================================== +( +~mxlPad103 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 62, 0, 0, 70, 0, 0, + 0, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 70, 0, 0, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 65, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 67, 0, 0, 72, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 62, + 0, 0, 0, 84, 0, 75, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPad104.scd b/sound_algo/palette/melodies/xlong/mxlPad104.scd new file mode 100644 index 0000000..65ec6c8 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPad104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPad104 -- xlong melody (96 steps), genre: pad +// ===================================================================== +( +~mxlPad104 = [ + 0, 0, 62, 0, 64, 0, 0, 0, + 79, 65, 0, 0, 0, 0, 65, 0, + 64, 0, 0, 76, 69, 62, 0, 0, + 0, 0, 0, 69, 0, 0, 83, 72, + 0, 71, 0, 0, 0, 62, 0, 0, + 0, 0, 81, 0, 0, 0, 0, 64, + 0, 0, 79, 71, 0, 0, 84, 74, + 0, 71, 84, 0, 0, 79, 0, 0, + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 72, 0, 0, 0, 0, 0, 83, + 0, 0, 0, 0, 0, 79, 0, 0, + 0, 60, 0, 0, 0, 0, 79, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPad105.scd b/sound_algo/palette/melodies/xlong/mxlPad105.scd new file mode 100644 index 0000000..d059132 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPad105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPad105 -- xlong melody (96 steps), genre: pad +// ===================================================================== +( +~mxlPad105 = [ + 0, 0, 0, 81, 64, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0, + 0, 0, 0, 81, 64, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0, + 0, 67, 0, 0, 0, 0, 76, 0, + 0, 0, 0, 60, 0, 0, 0, 0, + 0, 0, 62, 0, 0, 0, 0, 0, + 0, 0, 0, 81, 64, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPhonk100.scd b/sound_algo/palette/melodies/xlong/mxlPhonk100.scd new file mode 100644 index 0000000..374e5d7 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPhonk100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPhonk100 -- xlong melody (96 steps), genre: phonk +// ===================================================================== +( +~mxlPhonk100 = [ + 0, 0, 0, 0, 0, 0, 57, 0, + 0, 52, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 55, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 43, 38, 0, 0, + 36, 0, 0, 0, 48, 0, 48, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 0, 0, 0, + 0, 0, 45, 0, 45, 0, 36, 0, + 0, 0, 0, 0, 0, 55, 43, 45, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPhonk101.scd b/sound_algo/palette/melodies/xlong/mxlPhonk101.scd new file mode 100644 index 0000000..9cd1dc6 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPhonk101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPhonk101 -- xlong melody (96 steps), genre: phonk +// ===================================================================== +( +~mxlPhonk101 = [ + 0, 0, 0, 0, 48, 0, 0, 36, + 60, 0, 0, 0, 36, 0, 50, 0, + 0, 0, 0, 0, 45, 0, 0, 45, + 0, 0, 0, 0, 48, 0, 0, 36, + 60, 0, 0, 0, 36, 0, 50, 0, + 0, 0, 0, 0, 45, 0, 0, 45, + 40, 0, 0, 0, 50, 50, 0, 0, + 0, 0, 57, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 50, 57, 0, 0, + 0, 0, 0, 0, 48, 0, 0, 36, + 58, 0, 0, 0, 34, 0, 51, 0, + 0, 0, 0, 0, 47, 0, 0, 46 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPhonk102.scd b/sound_algo/palette/melodies/xlong/mxlPhonk102.scd new file mode 100644 index 0000000..db6af8c --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPhonk102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPhonk102 -- xlong melody (96 steps), genre: phonk +// ===================================================================== +( +~mxlPhonk102 = [ + 0, 0, 48, 0, 0, 0, 0, 50, + 0, 48, 52, 0, 0, 0, 0, 0, + 52, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 60, 0, 0, 60, 0, 55, + 0, 0, 45, 48, 0, 0, 45, 0, + 0, 0, 0, 0, 45, 0, 0, 0, + 36, 52, 43, 0, 0, 0, 0, 0, + 48, 0, 0, 0, 40, 57, 57, 0, + 0, 0, 40, 0, 52, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 57, 48, 0, 0, + 0, 0, 0, 0, 50, 0, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPluck100.scd b/sound_algo/palette/melodies/xlong/mxlPluck100.scd new file mode 100644 index 0000000..550fdbe --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPluck100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPluck100 -- xlong melody (96 steps), genre: pluck +// ===================================================================== +( +~mxlPluck100 = [ + 74, 0, 0, 0, 81, 62, 0, 79, + 60, 76, 0, 0, 81, 69, 0, 0, + 76, 81, 0, 60, 0, 84, 0, 0, + 74, 0, 0, 0, 81, 62, 0, 79, + 60, 76, 0, 0, 81, 69, 0, 0, + 76, 81, 0, 60, 0, 84, 0, 0, + 69, 76, 0, 0, 0, 0, 72, 0, + 81, 84, 74, 81, 0, 0, 0, 0, + 0, 62, 0, 0, 76, 62, 0, 0, + 74, 0, 0, 0, 81, 62, 0, 79, + 60, 76, 0, 0, 81, 69, 0, 0, + 76, 81, 0, 60, 0, 84, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPluck101.scd b/sound_algo/palette/melodies/xlong/mxlPluck101.scd new file mode 100644 index 0000000..9933e1d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPluck101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPluck101 -- xlong melody (96 steps), genre: pluck +// ===================================================================== +( +~mxlPluck101 = [ + 0, 0, 81, 0, 0, 0, 0, 62, + 0, 0, 71, 0, 83, 0, 0, 83, + 74, 0, 0, 83, 67, 69, 0, 67, + 62, 64, 0, 0, 62, 0, 0, 64, + 0, 62, 0, 0, 0, 0, 74, 0, + 67, 0, 0, 0, 79, 71, 62, 81, + 0, 0, 76, 0, 0, 64, 76, 71, + 62, 0, 0, 64, 83, 81, 71, 81, + 67, 71, 81, 0, 81, 71, 0, 0, + 69, 0, 0, 0, 0, 64, 0, 76, + 80, 0, 0, 73, 84, 0, 84, 0, + 73, 0, 62, 0, 80, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPop100.scd b/sound_algo/palette/melodies/xlong/mxlPop100.scd new file mode 100644 index 0000000..fe89ef7 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPop100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPop100 -- xlong melody (96 steps), genre: pop +// ===================================================================== +( +~mxlPop100 = [ + 0, 0, 0, 77, 72, 71, 74, 81, + 0, 72, 0, 74, 76, 0, 83, 0, + 0, 64, 0, 69, 76, 0, 84, 69, + 0, 0, 0, 77, 72, 71, 74, 81, + 0, 72, 0, 74, 76, 0, 83, 0, + 0, 64, 0, 69, 76, 0, 84, 69, + 76, 0, 65, 72, 79, 65, 79, 69, + 79, 0, 71, 0, 67, 72, 77, 65, + 67, 65, 83, 65, 84, 71, 69, 0, + 0, 0, 0, 77, 72, 71, 74, 81, + 0, 72, 0, 74, 76, 0, 83, 0, + 0, 64, 0, 69, 76, 0, 84, 69 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPop101.scd b/sound_algo/palette/melodies/xlong/mxlPop101.scd new file mode 100644 index 0000000..606f5e7 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPop101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPop101 -- xlong melody (96 steps), genre: pop +// ===================================================================== +( +~mxlPop101 = [ + 0, 69, 71, 81, 67, 0, 0, 0, + 67, 69, 79, 0, 76, 0, 67, 79, + 71, 60, 66, 78, 0, 67, 0, 0, + 71, 84, 0, 0, 0, 67, 74, 60, + 0, 64, 0, 81, 0, 67, 76, 79, + 71, 0, 76, 62, 67, 76, 76, 0, + 69, 84, 0, 0, 74, 67, 74, 66, + 83, 0, 67, 64, 0, 0, 79, 62, + 79, 0, 72, 74, 83, 67, 81, 0, + 0, 83, 69, 72, 83, 60, 62, 0, + 67, 0, 71, 0, 0, 0, 0, 62, + 74, 0, 71, 64, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPop102.scd b/sound_algo/palette/melodies/xlong/mxlPop102.scd new file mode 100644 index 0000000..ae56db0 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPop102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPop102 -- xlong melody (96 steps), genre: pop +// ===================================================================== +( +~mxlPop102 = [ + 83, 0, 79, 0, 0, 84, 78, 0, + 0, 0, 60, 67, 0, 84, 0, 66, + 0, 76, 0, 78, 71, 62, 0, 79, + 71, 0, 69, 0, 0, 0, 0, 83, + 79, 69, 83, 60, 0, 67, 0, 0, + 76, 0, 0, 0, 79, 67, 0, 84, + 0, 64, 0, 84, 0, 83, 60, 76, + 0, 0, 0, 69, 62, 78, 72, 67, + 74, 72, 62, 0, 62, 0, 76, 72, + 62, 83, 69, 71, 79, 81, 0, 72, + 67, 76, 72, 64, 0, 0, 0, 72, + 74, 62, 81, 66, 0, 79, 0, 64 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPop103.scd b/sound_algo/palette/melodies/xlong/mxlPop103.scd new file mode 100644 index 0000000..f2fdbcd --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPop103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPop103 -- xlong melody (96 steps), genre: pop +// ===================================================================== +( +~mxlPop103 = [ + 0, 64, 78, 72, 0, 71, 79, 78, + 0, 62, 0, 0, 0, 0, 72, 79, + 71, 72, 0, 76, 71, 0, 79, 64, + 0, 64, 78, 72, 0, 71, 79, 78, + 0, 62, 0, 0, 0, 0, 72, 79, + 71, 72, 0, 76, 71, 0, 79, 64, + 0, 78, 0, 0, 0, 84, 78, 74, + 71, 64, 81, 79, 79, 0, 71, 0, + 0, 66, 71, 64, 79, 67, 84, 64, + 0, 64, 78, 72, 0, 71, 79, 78, + 0, 62, 0, 0, 0, 0, 71, 79, + 69, 72, 0, 76, 73, 0, 80, 66 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPop104.scd b/sound_algo/palette/melodies/xlong/mxlPop104.scd new file mode 100644 index 0000000..78ca2ac --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPop104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPop104 -- xlong melody (96 steps), genre: pop +// ===================================================================== +( +~mxlPop104 = [ + 72, 64, 84, 0, 74, 67, 84, 60, + 83, 0, 76, 79, 71, 76, 0, 83, + 0, 0, 67, 0, 74, 0, 64, 78, + 0, 67, 0, 0, 67, 67, 0, 67, + 71, 0, 72, 0, 0, 81, 0, 0, + 0, 66, 72, 74, 0, 83, 0, 0, + 0, 0, 66, 84, 0, 0, 72, 0, + 62, 79, 67, 60, 60, 0, 62, 60, + 0, 67, 0, 0, 0, 66, 60, 0, + 0, 72, 84, 0, 83, 72, 74, 78, + 71, 60, 74, 0, 79, 79, 60, 79, + 67, 0, 72, 0, 0, 62, 67, 60 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPop105.scd b/sound_algo/palette/melodies/xlong/mxlPop105.scd new file mode 100644 index 0000000..bf7a001 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPop105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPop105 -- xlong melody (96 steps), genre: pop +// ===================================================================== +( +~mxlPop105 = [ + 0, 0, 84, 79, 60, 69, 83, 60, + 0, 67, 0, 69, 0, 0, 81, 84, + 0, 72, 0, 67, 0, 76, 0, 84, + 74, 64, 0, 0, 67, 0, 72, 62, + 77, 0, 0, 60, 84, 0, 0, 0, + 0, 0, 65, 0, 72, 76, 0, 0, + 0, 84, 69, 0, 0, 0, 0, 74, + 0, 0, 0, 0, 0, 0, 0, 64, + 0, 69, 0, 77, 0, 0, 77, 74, + 0, 60, 0, 76, 0, 60, 0, 0, + 0, 85, 0, 72, 0, 75, 0, 0, + 65, 61, 74, 0, 65, 63, 0, 83 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPop106.scd b/sound_algo/palette/melodies/xlong/mxlPop106.scd new file mode 100644 index 0000000..dcbbe96 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPop106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPop106 -- xlong melody (96 steps), genre: pop +// ===================================================================== +( +~mxlPop106 = [ + 83, 72, 0, 78, 0, 0, 72, 79, + 79, 0, 0, 83, 84, 0, 0, 66, + 0, 71, 0, 81, 0, 62, 0, 84, + 83, 72, 0, 78, 0, 0, 72, 79, + 79, 0, 0, 83, 84, 0, 0, 66, + 0, 71, 0, 81, 0, 62, 0, 84, + 62, 84, 67, 64, 69, 60, 0, 83, + 0, 0, 84, 76, 0, 0, 67, 66, + 71, 66, 83, 72, 62, 83, 66, 0, + 83, 72, 0, 78, 0, 0, 72, 79, + 79, 0, 0, 83, 84, 0, 0, 66, + 0, 71, 0, 81, 0, 62, 0, 84 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPop107.scd b/sound_algo/palette/melodies/xlong/mxlPop107.scd new file mode 100644 index 0000000..0411a71 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPop107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPop107 -- xlong melody (96 steps), genre: pop +// ===================================================================== +( +~mxlPop107 = [ + 0, 79, 60, 81, 74, 81, 0, 0, + 67, 67, 71, 78, 0, 0, 0, 81, + 0, 0, 78, 60, 62, 83, 0, 0, + 79, 64, 0, 84, 0, 83, 0, 0, + 0, 72, 72, 0, 0, 78, 81, 0, + 74, 67, 0, 0, 84, 81, 81, 64, + 0, 0, 0, 0, 0, 72, 0, 60, + 71, 76, 62, 74, 69, 66, 64, 83, + 79, 81, 83, 76, 79, 0, 0, 81, + 71, 69, 69, 67, 67, 83, 0, 0, + 74, 74, 0, 74, 76, 0, 76, 78, + 0, 67, 67, 84, 0, 83, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPop108.scd b/sound_algo/palette/melodies/xlong/mxlPop108.scd new file mode 100644 index 0000000..d9a5558 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPop108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPop108 -- xlong melody (96 steps), genre: pop +// ===================================================================== +( +~mxlPop108 = [ + 0, 0, 67, 64, 0, 0, 78, 62, + 0, 60, 0, 0, 78, 78, 84, 79, + 83, 71, 62, 67, 62, 76, 0, 0, + 0, 0, 67, 64, 0, 0, 78, 62, + 0, 60, 0, 0, 78, 78, 84, 79, + 83, 71, 62, 67, 62, 76, 0, 0, + 0, 69, 0, 81, 0, 72, 0, 74, + 76, 72, 81, 76, 0, 60, 62, 83, + 0, 78, 60, 67, 62, 0, 78, 62, + 0, 0, 67, 64, 0, 0, 78, 62, + 0, 60, 0, 0, 78, 78, 84, 79, + 83, 71, 62, 67, 62, 76, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlPop109.scd b/sound_algo/palette/melodies/xlong/mxlPop109.scd new file mode 100644 index 0000000..3fc1996 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlPop109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlPop109 -- xlong melody (96 steps), genre: pop +// ===================================================================== +( +~mxlPop109 = [ + 0, 0, 83, 81, 79, 0, 81, 74, + 0, 0, 0, 60, 64, 0, 0, 0, + 76, 0, 81, 83, 0, 60, 0, 0, + 69, 65, 60, 0, 76, 84, 0, 60, + 0, 64, 0, 0, 83, 60, 84, 0, + 0, 81, 67, 74, 81, 0, 76, 0, + 0, 79, 67, 0, 0, 62, 0, 74, + 81, 74, 83, 84, 72, 0, 0, 0, + 0, 79, 0, 65, 0, 77, 0, 0, + 0, 83, 0, 0, 67, 69, 72, 60, + 0, 0, 0, 65, 59, 83, 68, 0, + 62, 0, 60, 0, 0, 78, 74, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlRetro100.scd b/sound_algo/palette/melodies/xlong/mxlRetro100.scd new file mode 100644 index 0000000..33fafd5 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlRetro100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlRetro100 -- xlong melody (96 steps), genre: retro +// ===================================================================== +( +~mxlRetro100 = [ + 0, 0, 0, 84, 62, 78, 0, 60, + 0, 71, 69, 62, 79, 60, 72, 81, + 76, 64, 0, 0, 67, 71, 0, 0, + 79, 72, 74, 69, 78, 79, 76, 69, + 0, 79, 81, 64, 0, 72, 78, 60, + 62, 84, 84, 0, 81, 64, 60, 0, + 71, 0, 60, 64, 79, 74, 0, 84, + 66, 67, 66, 71, 71, 78, 0, 83, + 62, 83, 62, 76, 71, 0, 60, 79, + 0, 60, 83, 67, 79, 66, 0, 62, + 70, 83, 61, 68, 81, 0, 81, 72, + 66, 74, 62, 81, 74, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlRetro101.scd b/sound_algo/palette/melodies/xlong/mxlRetro101.scd new file mode 100644 index 0000000..3ab7757 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlRetro101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlRetro101 -- xlong melody (96 steps), genre: retro +// ===================================================================== +( +~mxlRetro101 = [ + 71, 0, 79, 77, 79, 77, 81, 0, + 65, 74, 65, 0, 0, 83, 67, 67, + 84, 62, 0, 69, 76, 0, 0, 0, + 71, 0, 79, 77, 79, 77, 81, 0, + 65, 74, 65, 0, 0, 83, 67, 67, + 84, 62, 0, 69, 76, 0, 0, 0, + 72, 0, 74, 64, 79, 60, 0, 64, + 76, 84, 83, 0, 67, 69, 60, 0, + 84, 83, 64, 69, 0, 77, 0, 77, + 71, 0, 79, 77, 79, 77, 81, 0, + 66, 75, 67, 0, 0, 85, 69, 67, + 86, 60, 0, 69, 75, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlRetro102.scd b/sound_algo/palette/melodies/xlong/mxlRetro102.scd new file mode 100644 index 0000000..2aef8bf --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlRetro102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlRetro102 -- xlong melody (96 steps), genre: retro +// ===================================================================== +( +~mxlRetro102 = [ + 78, 0, 83, 66, 0, 0, 0, 60, + 60, 84, 72, 0, 66, 62, 0, 0, + 66, 0, 0, 79, 76, 69, 83, 71, + 71, 0, 0, 62, 0, 60, 74, 0, + 0, 64, 0, 81, 79, 0, 79, 84, + 0, 72, 0, 81, 0, 69, 0, 78, + 0, 79, 78, 60, 79, 0, 81, 0, + 66, 79, 76, 74, 84, 0, 64, 72, + 84, 71, 62, 0, 76, 0, 0, 74, + 67, 66, 0, 0, 0, 69, 0, 0, + 60, 67, 60, 84, 79, 62, 0, 71, + 76, 0, 0, 0, 79, 0, 0, 64 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlRetro103.scd b/sound_algo/palette/melodies/xlong/mxlRetro103.scd new file mode 100644 index 0000000..815b5fe --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlRetro103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlRetro103 -- xlong melody (96 steps), genre: retro +// ===================================================================== +( +~mxlRetro103 = [ + 0, 66, 64, 61, 69, 67, 76, 69, + 67, 74, 71, 66, 0, 62, 73, 71, + 71, 67, 61, 62, 67, 0, 61, 0, + 0, 66, 64, 61, 69, 67, 76, 69, + 67, 74, 71, 66, 0, 62, 73, 71, + 71, 67, 61, 62, 67, 0, 61, 0, + 71, 71, 76, 0, 79, 71, 81, 76, + 79, 79, 0, 0, 62, 67, 71, 0, + 83, 79, 61, 74, 62, 83, 64, 73, + 0, 66, 64, 61, 69, 67, 76, 69, + 67, 74, 71, 66, 0, 62, 73, 71, + 71, 67, 61, 62, 67, 0, 61, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlRetro104.scd b/sound_algo/palette/melodies/xlong/mxlRetro104.scd new file mode 100644 index 0000000..503b590 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlRetro104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlRetro104 -- xlong melody (96 steps), genre: retro +// ===================================================================== +( +~mxlRetro104 = [ + 0, 72, 79, 64, 81, 72, 0, 62, + 84, 0, 65, 83, 76, 76, 81, 0, + 67, 0, 62, 81, 62, 83, 60, 0, + 0, 72, 79, 64, 81, 72, 0, 62, + 84, 0, 65, 83, 76, 76, 81, 0, + 67, 0, 62, 81, 62, 83, 60, 0, + 0, 72, 64, 76, 64, 0, 0, 69, + 81, 76, 0, 71, 0, 0, 0, 74, + 0, 62, 77, 74, 60, 69, 65, 71, + 0, 72, 79, 64, 81, 72, 0, 62, + 84, 0, 67, 81, 74, 74, 81, 0, + 65, 0, 61, 82, 61, 83, 61, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlRetro105.scd b/sound_algo/palette/melodies/xlong/mxlRetro105.scd new file mode 100644 index 0000000..a56049e --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlRetro105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlRetro105 -- xlong melody (96 steps), genre: retro +// ===================================================================== +( +~mxlRetro105 = [ + 0, 79, 66, 0, 74, 69, 81, 64, + 67, 84, 0, 0, 67, 66, 66, 71, + 0, 0, 0, 60, 83, 0, 0, 83, + 0, 79, 66, 0, 74, 69, 81, 64, + 67, 84, 0, 0, 67, 66, 66, 71, + 0, 0, 0, 60, 83, 0, 0, 83, + 60, 0, 62, 0, 60, 0, 83, 0, + 0, 83, 64, 84, 0, 0, 64, 72, + 0, 84, 76, 0, 0, 0, 84, 79, + 0, 79, 66, 0, 74, 69, 81, 64, + 67, 84, 0, 0, 67, 66, 66, 71, + 0, 0, 0, 60, 83, 0, 0, 83 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlRetro106.scd b/sound_algo/palette/melodies/xlong/mxlRetro106.scd new file mode 100644 index 0000000..0ad324c --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlRetro106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlRetro106 -- xlong melody (96 steps), genre: retro +// ===================================================================== +( +~mxlRetro106 = [ + 84, 0, 74, 76, 84, 0, 69, 0, + 0, 66, 81, 72, 69, 83, 64, 62, + 84, 67, 83, 0, 78, 0, 71, 72, + 84, 0, 74, 76, 84, 0, 69, 0, + 0, 66, 81, 72, 69, 83, 64, 62, + 84, 67, 83, 0, 78, 0, 71, 72, + 0, 67, 84, 66, 0, 0, 81, 0, + 60, 71, 0, 74, 76, 71, 72, 67, + 0, 69, 0, 0, 0, 0, 84, 0, + 84, 0, 74, 76, 84, 0, 69, 0, + 0, 66, 81, 72, 69, 83, 64, 62, + 84, 67, 83, 0, 78, 0, 71, 72 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlRetro107.scd b/sound_algo/palette/melodies/xlong/mxlRetro107.scd new file mode 100644 index 0000000..349c246 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlRetro107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlRetro107 -- xlong melody (96 steps), genre: retro +// ===================================================================== +( +~mxlRetro107 = [ + 81, 74, 76, 74, 67, 79, 83, 0, + 78, 73, 0, 74, 67, 66, 76, 83, + 62, 78, 64, 66, 62, 0, 0, 79, + 67, 78, 0, 83, 74, 61, 78, 61, + 0, 0, 69, 78, 0, 81, 61, 83, + 79, 67, 69, 0, 71, 64, 0, 62, + 0, 83, 81, 0, 0, 62, 73, 71, + 0, 61, 79, 62, 0, 62, 66, 0, + 71, 78, 81, 0, 67, 67, 83, 74, + 0, 0, 74, 0, 71, 71, 74, 78, + 0, 79, 62, 0, 71, 62, 69, 61, + 0, 0, 81, 71, 0, 0, 71, 76 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlRetro108.scd b/sound_algo/palette/melodies/xlong/mxlRetro108.scd new file mode 100644 index 0000000..943d243 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlRetro108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlRetro108 -- xlong melody (96 steps), genre: retro +// ===================================================================== +( +~mxlRetro108 = [ + 61, 73, 74, 0, 61, 81, 76, 0, + 62, 76, 0, 0, 67, 66, 62, 69, + 73, 74, 78, 74, 74, 67, 0, 78, + 61, 73, 74, 0, 61, 81, 76, 0, + 62, 76, 0, 0, 67, 66, 62, 69, + 73, 74, 78, 74, 74, 67, 0, 78, + 76, 78, 61, 71, 67, 67, 0, 83, + 0, 74, 76, 62, 76, 61, 83, 64, + 78, 61, 66, 0, 0, 83, 0, 64, + 61, 73, 74, 0, 61, 81, 76, 0, + 62, 76, 0, 0, 67, 66, 62, 69, + 73, 74, 78, 74, 74, 67, 0, 78 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlRetro109.scd b/sound_algo/palette/melodies/xlong/mxlRetro109.scd new file mode 100644 index 0000000..423f2d7 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlRetro109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlRetro109 -- xlong melody (96 steps), genre: retro +// ===================================================================== +( +~mxlRetro109 = [ + 72, 62, 81, 69, 79, 60, 83, 84, + 79, 0, 62, 74, 84, 62, 0, 79, + 83, 0, 84, 60, 67, 62, 60, 66, + 62, 67, 64, 0, 0, 83, 74, 81, + 79, 0, 69, 69, 0, 0, 60, 84, + 0, 71, 0, 66, 69, 0, 0, 62, + 78, 74, 69, 60, 79, 72, 79, 0, + 62, 0, 69, 74, 0, 0, 0, 72, + 62, 62, 76, 64, 0, 83, 72, 66, + 0, 60, 69, 0, 72, 62, 69, 64, + 82, 83, 70, 72, 61, 64, 72, 80, + 0, 60, 78, 75, 66, 78, 75, 73 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSub100.scd b/sound_algo/palette/melodies/xlong/mxlSub100.scd new file mode 100644 index 0000000..bba499f --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSub100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSub100 -- xlong melody (96 steps), genre: sub +// ===================================================================== +( +~mxlSub100 = [ + 36, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSub101.scd b/sound_algo/palette/melodies/xlong/mxlSub101.scd new file mode 100644 index 0000000..6edce79 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSub101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSub101 -- xlong melody (96 steps), genre: sub +// ===================================================================== +( +~mxlSub101 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSub102.scd b/sound_algo/palette/melodies/xlong/mxlSub102.scd new file mode 100644 index 0000000..0a71f91 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSub102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSub102 -- xlong melody (96 steps), genre: sub +// ===================================================================== +( +~mxlSub102 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSub103.scd b/sound_algo/palette/melodies/xlong/mxlSub103.scd new file mode 100644 index 0000000..959d047 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSub103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSub103 -- xlong melody (96 steps), genre: sub +// ===================================================================== +( +~mxlSub103 = [ + 28, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSub104.scd b/sound_algo/palette/melodies/xlong/mxlSub104.scd new file mode 100644 index 0000000..8859827 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSub104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSub104 -- xlong melody (96 steps), genre: sub +// ===================================================================== +( +~mxlSub104 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 37, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSub105.scd b/sound_algo/palette/melodies/xlong/mxlSub105.scd new file mode 100644 index 0000000..dd0e12c --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSub105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSub105 -- xlong melody (96 steps), genre: sub +// ===================================================================== +( +~mxlSub105 = [ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSub106.scd b/sound_algo/palette/melodies/xlong/mxlSub106.scd new file mode 100644 index 0000000..8bb3ed3 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSub106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSub106 -- xlong melody (96 steps), genre: sub +// ===================================================================== +( +~mxlSub106 = [ + 31, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSub107.scd b/sound_algo/palette/melodies/xlong/mxlSub107.scd new file mode 100644 index 0000000..a93c218 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSub107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSub107 -- xlong melody (96 steps), genre: sub +// ===================================================================== +( +~mxlSub107 = [ + 27, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 0, 0, 0, 0, + 25, 0, 0, 0, 0, 0, 0, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSynthwave100.scd b/sound_algo/palette/melodies/xlong/mxlSynthwave100.scd new file mode 100644 index 0000000..06961b6 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSynthwave100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSynthwave100 -- xlong melody (96 steps), genre: synthwave +// ===================================================================== +( +~mxlSynthwave100 = [ + 84, 0, 0, 62, 0, 71, 84, 0, + 69, 76, 71, 79, 74, 84, 76, 53, + 0, 62, 55, 53, 52, 79, 52, 0, + 84, 77, 50, 52, 0, 83, 53, 60, + 57, 0, 48, 81, 60, 0, 0, 77, + 0, 60, 0, 59, 0, 52, 62, 76, + 84, 0, 60, 77, 64, 48, 83, 53, + 0, 0, 84, 67, 65, 0, 84, 60, + 76, 83, 81, 50, 48, 0, 59, 0, + 57, 0, 55, 71, 0, 81, 65, 0, + 0, 0, 0, 0, 55, 0, 55, 0, + 0, 0, 67, 74, 0, 55, 52, 81 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSynthwave101.scd b/sound_algo/palette/melodies/xlong/mxlSynthwave101.scd new file mode 100644 index 0000000..4e2cd78 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSynthwave101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSynthwave101 -- xlong melody (96 steps), genre: synthwave +// ===================================================================== +( +~mxlSynthwave101 = [ + 77, 76, 0, 0, 0, 0, 58, 0, + 62, 82, 50, 48, 77, 53, 77, 0, + 81, 74, 0, 0, 0, 70, 67, 0, + 81, 70, 67, 62, 69, 0, 50, 0, + 0, 0, 72, 55, 81, 48, 0, 77, + 53, 65, 74, 82, 53, 72, 0, 50, + 53, 0, 60, 60, 57, 0, 57, 65, + 58, 0, 70, 64, 0, 0, 77, 0, + 0, 0, 48, 0, 62, 53, 79, 72, + 72, 58, 69, 64, 57, 0, 52, 0, + 81, 76, 0, 60, 53, 76, 79, 62, + 52, 72, 76, 62, 62, 0, 77, 67 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSynthwave102.scd b/sound_algo/palette/melodies/xlong/mxlSynthwave102.scd new file mode 100644 index 0000000..e0cfe30 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSynthwave102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSynthwave102 -- xlong melody (96 steps), genre: synthwave +// ===================================================================== +( +~mxlSynthwave102 = [ + 50, 50, 0, 65, 0, 0, 67, 0, + 70, 0, 53, 65, 65, 84, 50, 82, + 77, 69, 67, 72, 0, 62, 70, 64, + 50, 50, 0, 65, 0, 0, 67, 0, + 70, 0, 53, 65, 65, 84, 50, 82, + 77, 69, 67, 72, 0, 62, 70, 64, + 62, 79, 64, 57, 0, 0, 76, 72, + 65, 0, 53, 76, 62, 0, 0, 70, + 53, 72, 0, 84, 0, 60, 0, 58, + 50, 50, 0, 65, 0, 0, 67, 0, + 70, 0, 53, 65, 65, 84, 50, 82, + 77, 69, 67, 72, 0, 62, 70, 64 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSynthwave103.scd b/sound_algo/palette/melodies/xlong/mxlSynthwave103.scd new file mode 100644 index 0000000..3f257cd --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSynthwave103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSynthwave103 -- xlong melody (96 steps), genre: synthwave +// ===================================================================== +( +~mxlSynthwave103 = [ + 0, 65, 0, 0, 0, 48, 57, 83, + 0, 67, 0, 81, 64, 0, 65, 50, + 0, 55, 71, 0, 60, 0, 0, 71, + 0, 65, 0, 0, 0, 48, 57, 83, + 0, 67, 0, 81, 64, 0, 65, 50, + 0, 55, 71, 0, 60, 0, 0, 71, + 0, 55, 72, 0, 59, 57, 0, 69, + 0, 0, 0, 81, 67, 0, 53, 59, + 84, 48, 0, 72, 0, 71, 52, 81, + 0, 65, 0, 0, 0, 48, 57, 83, + 0, 66, 0, 80, 64, 0, 67, 48, + 0, 55, 69, 0, 62, 0, 0, 72 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlSynthwave104.scd b/sound_algo/palette/melodies/xlong/mxlSynthwave104.scd new file mode 100644 index 0000000..acc7904 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlSynthwave104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlSynthwave104 -- xlong melody (96 steps), genre: synthwave +// ===================================================================== +( +~mxlSynthwave104 = [ + 57, 59, 50, 84, 79, 0, 0, 52, + 83, 69, 0, 55, 83, 79, 83, 83, + 57, 72, 71, 0, 0, 55, 84, 50, + 0, 60, 72, 55, 0, 0, 57, 52, + 52, 50, 59, 84, 50, 74, 50, 74, + 81, 0, 76, 0, 79, 0, 0, 0, + 0, 72, 79, 72, 0, 59, 83, 65, + 64, 0, 0, 74, 0, 76, 77, 64, + 64, 50, 81, 62, 0, 60, 55, 74, + 59, 0, 48, 72, 81, 64, 65, 50, + 84, 64, 78, 73, 63, 49, 0, 0, + 0, 0, 77, 0, 61, 0, 54, 52 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTension100.scd b/sound_algo/palette/melodies/xlong/mxlTension100.scd new file mode 100644 index 0000000..20ce34f --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTension100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTension100 -- xlong melody (96 steps), genre: tension +// ===================================================================== +( +~mxlTension100 = [ + 50, 46, 45, 58, 55, 60, 38, 40, + 57, 48, 58, 46, 57, 45, 0, 53, + 52, 43, 60, 36, 0, 46, 53, 43, + 50, 46, 45, 58, 55, 60, 38, 40, + 57, 48, 58, 46, 57, 45, 0, 53, + 52, 43, 60, 36, 0, 46, 53, 43, + 60, 43, 41, 0, 0, 53, 46, 0, + 0, 0, 0, 50, 40, 46, 53, 0, + 52, 0, 53, 40, 41, 45, 0, 36, + 50, 46, 45, 58, 55, 60, 38, 40, + 56, 50, 59, 44, 55, 47, 0, 53, + 53, 43, 59, 35, 0, 48, 55, 42 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTension101.scd b/sound_algo/palette/melodies/xlong/mxlTension101.scd new file mode 100644 index 0000000..6cb401e --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTension101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTension101 -- xlong melody (96 steps), genre: tension +// ===================================================================== +( +~mxlTension101 = [ + 52, 0, 49, 0, 0, 0, 51, 52, + 55, 57, 49, 37, 52, 0, 57, 0, + 57, 37, 49, 0, 55, 36, 42, 42, + 49, 45, 49, 46, 0, 54, 52, 40, + 43, 0, 55, 0, 55, 0, 48, 51, + 0, 55, 55, 40, 55, 48, 45, 54, + 0, 52, 0, 52, 60, 54, 0, 60, + 42, 55, 52, 43, 0, 36, 40, 58, + 43, 0, 36, 46, 37, 52, 0, 42, + 58, 48, 54, 0, 40, 0, 42, 0, + 0, 0, 47, 0, 0, 55, 37, 0, + 60, 0, 38, 40, 53, 61, 43, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTension102.scd b/sound_algo/palette/melodies/xlong/mxlTension102.scd new file mode 100644 index 0000000..69ad68a --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTension102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTension102 -- xlong melody (96 steps), genre: tension +// ===================================================================== +( +~mxlTension102 = [ + 0, 38, 0, 0, 53, 0, 47, 0, + 0, 36, 48, 50, 0, 47, 57, 0, + 0, 0, 59, 47, 0, 50, 0, 38, + 0, 38, 0, 0, 53, 0, 47, 0, + 0, 36, 48, 50, 0, 47, 57, 0, + 0, 0, 59, 47, 0, 50, 0, 38, + 0, 41, 41, 0, 47, 0, 45, 52, + 43, 60, 53, 0, 36, 57, 47, 43, + 0, 0, 0, 45, 47, 0, 0, 0, + 0, 38, 0, 0, 53, 0, 47, 0, + 0, 35, 47, 49, 0, 45, 57, 0, + 0, 0, 60, 49, 0, 51, 0, 39 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTension103.scd b/sound_algo/palette/melodies/xlong/mxlTension103.scd new file mode 100644 index 0000000..687c9ae --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTension103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTension103 -- xlong melody (96 steps), genre: tension +// ===================================================================== +( +~mxlTension103 = [ + 52, 42, 55, 39, 0, 46, 0, 0, + 58, 36, 52, 0, 0, 36, 0, 0, + 52, 46, 52, 0, 52, 49, 0, 0, + 0, 49, 55, 52, 40, 0, 0, 54, + 36, 36, 0, 60, 0, 39, 37, 40, + 0, 52, 46, 0, 42, 45, 43, 60, + 40, 49, 40, 55, 0, 0, 55, 0, + 40, 49, 49, 0, 52, 0, 37, 40, + 45, 52, 43, 60, 37, 51, 54, 0, + 40, 60, 57, 52, 0, 40, 46, 0, + 51, 0, 0, 51, 40, 49, 37, 48, + 43, 55, 39, 60, 40, 60, 37, 36 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTension104.scd b/sound_algo/palette/melodies/xlong/mxlTension104.scd new file mode 100644 index 0000000..9db3a4c --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTension104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTension104 -- xlong melody (96 steps), genre: tension +// ===================================================================== +( +~mxlTension104 = [ + 0, 40, 53, 48, 40, 41, 0, 38, + 38, 48, 36, 43, 38, 60, 38, 0, + 59, 36, 0, 60, 50, 40, 40, 43, + 47, 0, 55, 36, 0, 53, 0, 38, + 50, 47, 41, 43, 38, 0, 60, 0, + 43, 57, 60, 38, 55, 53, 0, 38, + 0, 0, 53, 55, 0, 53, 59, 36, + 50, 48, 40, 53, 50, 47, 59, 47, + 50, 0, 40, 59, 52, 53, 38, 38, + 0, 0, 0, 47, 38, 55, 45, 43, + 38, 0, 36, 52, 0, 0, 48, 52, + 0, 0, 52, 45, 45, 38, 53, 59 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTension105.scd b/sound_algo/palette/melodies/xlong/mxlTension105.scd new file mode 100644 index 0000000..42fe516 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTension105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTension105 -- xlong melody (96 steps), genre: tension +// ===================================================================== +( +~mxlTension105 = [ + 0, 0, 43, 45, 50, 0, 57, 52, + 0, 48, 0, 0, 0, 53, 57, 0, + 38, 0, 0, 0, 41, 0, 41, 0, + 0, 0, 43, 45, 50, 0, 57, 52, + 0, 48, 0, 0, 0, 53, 57, 0, + 38, 0, 0, 0, 41, 0, 41, 0, + 47, 0, 57, 36, 53, 0, 50, 50, + 38, 38, 0, 0, 0, 43, 36, 41, + 38, 0, 0, 48, 47, 57, 38, 0, + 0, 0, 43, 45, 50, 0, 57, 52, + 0, 49, 0, 0, 0, 54, 56, 0, + 39, 0, 0, 0, 40, 0, 40, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTension106.scd b/sound_algo/palette/melodies/xlong/mxlTension106.scd new file mode 100644 index 0000000..edade1b --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTension106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTension106 -- xlong melody (96 steps), genre: tension +// ===================================================================== +( +~mxlTension106 = [ + 0, 0, 0, 50, 52, 0, 48, 50, + 48, 40, 57, 48, 52, 60, 43, 52, + 43, 52, 52, 40, 0, 46, 52, 0, + 0, 0, 0, 50, 52, 0, 48, 50, + 48, 40, 57, 48, 52, 60, 43, 52, + 43, 52, 52, 40, 0, 46, 52, 0, + 48, 41, 38, 60, 52, 57, 55, 57, + 45, 0, 0, 0, 58, 0, 46, 52, + 43, 41, 55, 53, 55, 55, 40, 0, + 0, 0, 0, 50, 52, 0, 48, 50, + 48, 40, 57, 48, 52, 60, 43, 52, + 43, 52, 52, 40, 0, 46, 52, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTension107.scd b/sound_algo/palette/melodies/xlong/mxlTension107.scd new file mode 100644 index 0000000..07a621a --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTension107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTension107 -- xlong melody (96 steps), genre: tension +// ===================================================================== +( +~mxlTension107 = [ + 0, 58, 0, 38, 50, 0, 53, 55, + 0, 43, 59, 53, 47, 52, 0, 58, + 59, 37, 38, 41, 44, 44, 55, 52, + 50, 38, 0, 0, 56, 37, 0, 0, + 40, 55, 0, 0, 59, 43, 41, 46, + 0, 0, 43, 47, 0, 50, 0, 37, + 0, 50, 0, 52, 59, 43, 56, 43, + 59, 37, 56, 59, 53, 47, 46, 55, + 59, 55, 50, 44, 59, 46, 43, 58, + 0, 0, 52, 38, 59, 46, 50, 47, + 0, 58, 41, 0, 0, 58, 0, 41, + 38, 0, 37, 40, 38, 46, 38, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance100.scd b/sound_algo/palette/melodies/xlong/mxlTrance100.scd new file mode 100644 index 0000000..786464c --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance100 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance100 = [ + 64, 66, 68, 69, 61, 71, 73, 62, + 69, 71, 78, 0, 76, 69, 81, 69, + 66, 68, 69, 71, 81, 76, 0, 74, + 64, 66, 68, 69, 61, 71, 73, 62, + 69, 71, 78, 0, 76, 69, 81, 69, + 66, 68, 69, 71, 81, 76, 0, 74, + 81, 71, 0, 0, 78, 0, 78, 66, + 69, 71, 73, 74, 81, 69, 71, 80, + 64, 66, 68, 69, 64, 73, 64, 0, + 64, 66, 68, 69, 61, 71, 73, 62, + 67, 73, 79, 0, 77, 71, 80, 69, + 66, 67, 71, 69, 81, 74, 0, 76 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance101.scd b/sound_algo/palette/melodies/xlong/mxlTrance101.scd new file mode 100644 index 0000000..1aa6246 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance101 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance101 = [ + 81, 0, 78, 61, 61, 83, 66, 81, + 77, 62, 62, 61, 74, 81, 83, 71, + 65, 66, 68, 69, 62, 78, 62, 73, + 81, 0, 78, 61, 61, 83, 66, 81, + 77, 62, 62, 61, 74, 81, 83, 71, + 65, 66, 68, 69, 62, 78, 62, 73, + 61, 62, 65, 66, 62, 77, 77, 83, + 66, 68, 69, 71, 68, 66, 80, 81, + 66, 68, 69, 71, 61, 74, 74, 62, + 81, 0, 78, 61, 61, 83, 66, 81, + 77, 62, 62, 61, 74, 81, 83, 71, + 65, 66, 68, 69, 62, 78, 62, 73 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance102.scd b/sound_algo/palette/melodies/xlong/mxlTrance102.scd new file mode 100644 index 0000000..620d046 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance102 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance102 = [ + 64, 65, 68, 69, 64, 74, 76, 0, + 74, 72, 84, 64, 72, 74, 62, 72, + 69, 68, 64, 72, 72, 74, 74, 83, + 69, 71, 72, 74, 64, 80, 69, 80, + 62, 64, 65, 68, 72, 0, 60, 71, + 69, 71, 72, 74, 69, 84, 68, 72, + 68, 69, 71, 72, 83, 71, 71, 81, + 60, 62, 64, 65, 69, 60, 71, 76, + 65, 68, 69, 71, 72, 76, 0, 64, + 68, 69, 71, 72, 0, 76, 0, 80, + 62, 64, 65, 68, 74, 0, 83, 72, + 64, 65, 68, 69, 69, 77, 69, 62 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance103.scd b/sound_algo/palette/melodies/xlong/mxlTrance103.scd new file mode 100644 index 0000000..e6f9863 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance103 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance103 = [ + 61, 62, 65, 66, 69, 0, 0, 69, + 68, 69, 71, 73, 83, 78, 73, 0, + 0, 80, 69, 65, 81, 71, 77, 0, + 66, 68, 69, 71, 66, 81, 71, 77, + 71, 73, 74, 77, 78, 74, 80, 78, + 68, 69, 71, 73, 0, 0, 81, 77, + 0, 0, 62, 69, 81, 0, 74, 80, + 69, 0, 69, 0, 0, 77, 74, 74, + 66, 68, 69, 71, 77, 61, 73, 77, + 71, 73, 74, 77, 78, 83, 0, 83, + 66, 66, 70, 70, 67, 67, 71, 0, + 66, 67, 69, 67, 73, 77, 76, 81 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance104.scd b/sound_algo/palette/melodies/xlong/mxlTrance104.scd new file mode 100644 index 0000000..5b80811 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance104 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance104 = [ + 60, 62, 64, 65, 69, 74, 81, 64, + 64, 65, 67, 69, 81, 81, 76, 67, + 65, 67, 69, 71, 84, 65, 69, 79, + 60, 62, 64, 65, 69, 74, 81, 64, + 64, 65, 67, 69, 81, 81, 76, 67, + 65, 67, 69, 71, 84, 65, 69, 79, + 84, 69, 69, 60, 81, 60, 72, 76, + 62, 64, 65, 67, 0, 79, 67, 71, + 69, 71, 72, 74, 0, 0, 84, 64, + 60, 62, 64, 65, 69, 74, 81, 64, + 64, 65, 67, 69, 81, 81, 76, 67, + 65, 67, 69, 71, 84, 65, 69, 79 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance105.scd b/sound_algo/palette/melodies/xlong/mxlTrance105.scd new file mode 100644 index 0000000..45e32cd --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance105 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance105 = [ + 68, 69, 71, 72, 74, 80, 62, 0, + 74, 68, 80, 74, 69, 60, 71, 83, + 69, 71, 72, 74, 69, 72, 80, 72, + 68, 69, 71, 72, 74, 80, 62, 0, + 74, 68, 80, 74, 69, 60, 71, 83, + 69, 71, 72, 74, 69, 72, 80, 72, + 71, 72, 74, 76, 60, 76, 84, 64, + 64, 65, 68, 69, 60, 76, 76, 68, + 69, 71, 72, 74, 84, 0, 60, 77, + 68, 69, 71, 72, 74, 80, 62, 0, + 76, 68, 79, 72, 69, 58, 72, 83, + 67, 71, 71, 75, 69, 70, 80, 70 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance106.scd b/sound_algo/palette/melodies/xlong/mxlTrance106.scd new file mode 100644 index 0000000..b29460d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance106 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance106 = [ + 66, 0, 81, 80, 76, 74, 78, 0, + 78, 73, 81, 0, 81, 68, 71, 62, + 64, 66, 68, 69, 81, 69, 68, 76, + 62, 64, 66, 68, 61, 61, 0, 81, + 61, 62, 64, 66, 0, 66, 0, 69, + 71, 73, 74, 76, 78, 83, 81, 64, + 68, 69, 71, 73, 68, 64, 0, 73, + 64, 66, 68, 69, 0, 0, 78, 80, + 62, 64, 66, 68, 69, 81, 0, 71, + 71, 73, 74, 76, 0, 83, 0, 74, + 66, 68, 69, 71, 73, 62, 61, 76, + 61, 62, 64, 66, 61, 76, 80, 78 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance107.scd b/sound_algo/palette/melodies/xlong/mxlTrance107.scd new file mode 100644 index 0000000..87f5c53 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance107 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance107 = [ + 65, 67, 69, 71, 84, 65, 60, 64, + 69, 71, 72, 74, 0, 84, 74, 77, + 84, 0, 83, 81, 65, 60, 83, 84, + 65, 67, 69, 71, 84, 65, 60, 64, + 69, 71, 72, 74, 0, 84, 74, 77, + 84, 0, 83, 81, 65, 60, 83, 84, + 83, 83, 74, 0, 81, 0, 64, 0, + 64, 65, 67, 69, 64, 74, 81, 72, + 65, 67, 69, 71, 83, 62, 0, 64, + 65, 67, 69, 71, 84, 65, 60, 64, + 69, 71, 72, 74, 0, 84, 74, 77, + 84, 0, 83, 81, 65, 60, 83, 84 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance108.scd b/sound_algo/palette/melodies/xlong/mxlTrance108.scd new file mode 100644 index 0000000..9f2660e --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance108 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance108 = [ + 71, 72, 74, 76, 68, 71, 65, 80, + 64, 65, 68, 69, 81, 84, 77, 69, + 64, 65, 68, 69, 65, 64, 0, 83, + 60, 62, 64, 65, 71, 65, 71, 60, + 81, 0, 77, 62, 72, 81, 71, 64, + 71, 72, 74, 76, 76, 80, 0, 68, + 64, 65, 68, 69, 80, 64, 77, 62, + 71, 72, 74, 76, 84, 69, 84, 72, + 0, 77, 0, 81, 62, 76, 64, 83, + 62, 64, 65, 68, 64, 71, 84, 65, + 63, 67, 69, 70, 62, 82, 0, 0, + 68, 70, 69, 71, 61, 82, 76, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance109.scd b/sound_algo/palette/melodies/xlong/mxlTrance109.scd new file mode 100644 index 0000000..6212646 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance109 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance109 = [ + 67, 69, 71, 72, 60, 0, 74, 65, + 84, 60, 74, 0, 76, 76, 71, 69, + 76, 76, 60, 62, 72, 0, 79, 72, + 71, 72, 74, 76, 81, 0, 0, 0, + 67, 69, 71, 72, 60, 83, 65, 81, + 65, 81, 69, 72, 72, 69, 79, 69, + 81, 72, 62, 81, 60, 77, 77, 62, + 77, 81, 81, 0, 60, 0, 76, 83, + 72, 60, 76, 71, 0, 71, 76, 79, + 65, 60, 62, 69, 60, 83, 0, 60, + 65, 67, 83, 68, 0, 69, 80, 73, + 63, 66, 64, 66, 83, 0, 0, 66 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance110.scd b/sound_algo/palette/melodies/xlong/mxlTrance110.scd new file mode 100644 index 0000000..1319bbc --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance110.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance110 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance110 = [ + 64, 66, 68, 69, 68, 66, 62, 71, + 69, 0, 73, 62, 61, 62, 68, 62, + 64, 66, 68, 69, 61, 71, 0, 0, + 61, 62, 64, 66, 0, 80, 71, 0, + 0, 71, 66, 81, 81, 0, 0, 62, + 69, 71, 73, 74, 69, 0, 71, 0, + 61, 0, 71, 64, 66, 0, 76, 68, + 78, 0, 0, 83, 0, 74, 69, 83, + 83, 73, 81, 68, 76, 78, 0, 74, + 66, 68, 69, 71, 0, 83, 68, 66, + 64, 66, 68, 69, 76, 78, 80, 81, + 69, 71, 73, 74, 0, 0, 73, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance111.scd b/sound_algo/palette/melodies/xlong/mxlTrance111.scd new file mode 100644 index 0000000..30762f6 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance111.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance111 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance111 = [ + 79, 65, 0, 84, 79, 77, 0, 72, + 60, 62, 64, 65, 81, 83, 81, 0, + 71, 72, 74, 76, 0, 0, 69, 0, + 79, 65, 0, 84, 79, 77, 0, 72, + 60, 62, 64, 65, 81, 83, 81, 0, + 71, 72, 74, 76, 0, 0, 69, 0, + 62, 84, 67, 77, 76, 0, 81, 69, + 69, 71, 72, 74, 0, 84, 77, 0, + 0, 72, 0, 67, 79, 60, 74, 62, + 79, 65, 0, 84, 79, 77, 0, 72, + 60, 62, 64, 65, 81, 83, 81, 0, + 71, 72, 74, 76, 0, 0, 69, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance112.scd b/sound_algo/palette/melodies/xlong/mxlTrance112.scd new file mode 100644 index 0000000..f5bb441 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance112.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance112 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance112 = [ + 71, 73, 74, 76, 0, 71, 83, 68, + 69, 71, 73, 74, 74, 62, 76, 73, + 61, 69, 0, 0, 66, 66, 64, 0, + 71, 73, 74, 76, 0, 71, 83, 68, + 69, 71, 73, 74, 74, 62, 76, 73, + 61, 69, 0, 0, 66, 66, 64, 0, + 62, 64, 66, 68, 0, 0, 64, 0, + 68, 69, 71, 73, 66, 0, 83, 0, + 71, 73, 74, 76, 69, 66, 0, 62, + 71, 73, 74, 76, 0, 71, 83, 68, + 69, 71, 73, 74, 74, 62, 76, 73, + 61, 69, 0, 0, 66, 66, 64, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTrance113.scd b/sound_algo/palette/melodies/xlong/mxlTrance113.scd new file mode 100644 index 0000000..a4ab22d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTrance113.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTrance113 -- xlong melody (96 steps), genre: trance +// ===================================================================== +( +~mxlTrance113 = [ + 71, 73, 74, 76, 69, 0, 80, 69, + 62, 64, 66, 68, 73, 62, 0, 0, + 66, 76, 76, 80, 66, 83, 64, 69, + 71, 73, 74, 76, 76, 76, 66, 69, + 61, 62, 64, 66, 61, 80, 0, 64, + 66, 68, 69, 71, 64, 71, 73, 80, + 68, 69, 71, 73, 71, 61, 0, 61, + 61, 62, 64, 66, 64, 68, 0, 81, + 69, 71, 73, 74, 81, 83, 61, 73, + 62, 64, 66, 68, 66, 71, 76, 0, + 68, 69, 71, 73, 0, 0, 0, 74, + 0, 69, 69, 0, 78, 0, 73, 76 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTribal100.scd b/sound_algo/palette/melodies/xlong/mxlTribal100.scd new file mode 100644 index 0000000..076cb24 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTribal100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTribal100 -- xlong melody (96 steps), genre: tribal +// ===================================================================== +( +~mxlTribal100 = [ + 57, 48, 0, 57, 0, 36, 43, 60, + 57, 48, 0, 57, 0, 36, 43, 60, + 57, 48, 0, 57, 0, 36, 43, 60, + 57, 48, 0, 57, 0, 36, 43, 60, + 57, 48, 0, 57, 0, 36, 43, 60, + 57, 48, 0, 57, 0, 36, 43, 60, + 57, 48, 0, 57, 0, 36, 43, 60, + 57, 48, 0, 57, 0, 36, 43, 60, + 57, 48, 0, 57, 0, 36, 43, 60, + 57, 48, 0, 57, 0, 36, 43, 60, + 57, 48, 0, 57, 0, 36, 43, 60, + 57, 48, 0, 57, 0, 36, 43, 60 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTribal101.scd b/sound_algo/palette/melodies/xlong/mxlTribal101.scd new file mode 100644 index 0000000..ec92d9e --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTribal101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTribal101 -- xlong melody (96 steps), genre: tribal +// ===================================================================== +( +~mxlTribal101 = [ + 55, 45, 55, 0, 55, 55, 40, 45, + 55, 45, 55, 0, 55, 55, 40, 45, + 55, 45, 55, 0, 55, 55, 40, 45, + 55, 45, 55, 0, 55, 55, 40, 45, + 55, 45, 55, 0, 55, 55, 40, 45, + 55, 45, 55, 0, 55, 55, 40, 45, + 55, 45, 55, 0, 55, 55, 40, 45, + 55, 45, 55, 0, 55, 55, 40, 45, + 55, 45, 55, 0, 55, 55, 40, 45, + 55, 45, 55, 0, 55, 55, 40, 45, + 55, 45, 55, 0, 55, 55, 40, 45, + 55, 45, 55, 0, 55, 55, 40, 45 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTribal102.scd b/sound_algo/palette/melodies/xlong/mxlTribal102.scd new file mode 100644 index 0000000..e3cf26d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTribal102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTribal102 -- xlong melody (96 steps), genre: tribal +// ===================================================================== +( +~mxlTribal102 = [ + 57, 48, 0, 0, 36, 38, 36, 0, + 57, 48, 0, 0, 36, 38, 36, 0, + 57, 48, 0, 0, 36, 38, 36, 0, + 57, 48, 0, 0, 36, 38, 36, 0, + 57, 48, 0, 0, 36, 38, 36, 0, + 57, 48, 0, 0, 36, 38, 36, 0, + 57, 48, 0, 0, 36, 38, 36, 0, + 57, 48, 0, 0, 36, 38, 36, 0, + 57, 48, 0, 0, 36, 38, 36, 0, + 57, 48, 0, 0, 36, 38, 36, 0, + 57, 48, 0, 0, 36, 38, 36, 0, + 57, 48, 0, 0, 36, 38, 36, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTribal103.scd b/sound_algo/palette/melodies/xlong/mxlTribal103.scd new file mode 100644 index 0000000..dff1250 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTribal103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTribal103 -- xlong melody (96 steps), genre: tribal +// ===================================================================== +( +~mxlTribal103 = [ + 60, 0, 0, 38, 36, 38, 0, 43, + 60, 0, 0, 38, 36, 38, 0, 43, + 60, 0, 0, 38, 36, 38, 0, 43, + 60, 0, 0, 38, 36, 38, 0, 43, + 60, 0, 0, 38, 36, 38, 0, 43, + 60, 0, 0, 38, 36, 38, 0, 43, + 60, 0, 0, 38, 36, 38, 0, 43, + 60, 0, 0, 38, 36, 38, 0, 43, + 60, 0, 0, 38, 36, 38, 0, 43, + 60, 0, 0, 38, 36, 38, 0, 43, + 61, 0, 0, 37, 38, 39, 0, 42, + 61, 0, 0, 37, 34, 38, 0, 44 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTribal104.scd b/sound_algo/palette/melodies/xlong/mxlTribal104.scd new file mode 100644 index 0000000..48d2b93 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTribal104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTribal104 -- xlong melody (96 steps), genre: tribal +// ===================================================================== +( +~mxlTribal104 = [ + 0, 38, 45, 48, 0, 38, 55, 60, + 0, 38, 45, 48, 0, 38, 55, 60, + 0, 38, 45, 48, 0, 38, 55, 60, + 0, 38, 45, 48, 0, 38, 55, 60, + 0, 38, 45, 48, 0, 38, 55, 60, + 0, 38, 45, 48, 0, 38, 55, 60, + 0, 38, 45, 48, 0, 38, 55, 60, + 0, 38, 45, 48, 0, 38, 55, 60, + 0, 38, 45, 48, 0, 38, 55, 60, + 0, 38, 45, 48, 0, 38, 55, 60, + 0, 37, 46, 48, 0, 38, 55, 62, + 0, 38, 43, 48, 0, 40, 56, 60 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlTribal105.scd b/sound_algo/palette/melodies/xlong/mxlTribal105.scd new file mode 100644 index 0000000..e4a021d --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlTribal105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlTribal105 -- xlong melody (96 steps), genre: tribal +// ===================================================================== +( +~mxlTribal105 = [ + 43, 41, 55, 43, 55, 41, 43, 50, + 43, 41, 55, 43, 55, 41, 43, 50, + 43, 41, 55, 43, 55, 41, 43, 50, + 43, 41, 55, 43, 55, 41, 43, 50, + 43, 41, 55, 43, 55, 41, 43, 50, + 43, 41, 55, 43, 55, 41, 43, 50, + 43, 41, 55, 43, 55, 41, 43, 50, + 43, 41, 55, 43, 55, 41, 43, 50, + 43, 41, 55, 43, 55, 41, 43, 50, + 43, 41, 55, 43, 55, 41, 43, 50, + 43, 41, 55, 43, 55, 41, 43, 50, + 43, 41, 55, 43, 55, 41, 43, 50 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlWorld100.scd b/sound_algo/palette/melodies/xlong/mxlWorld100.scd new file mode 100644 index 0000000..7054048 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlWorld100.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlWorld100 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxlWorld100 = [ + 78, 74, 79, 0, 74, 0, 66, 71, + 0, 62, 62, 0, 62, 0, 62, 0, + 74, 78, 0, 76, 0, 72, 78, 66, + 0, 81, 0, 64, 74, 60, 84, 66, + 81, 67, 60, 0, 84, 0, 79, 71, + 81, 71, 69, 62, 71, 84, 0, 0, + 64, 69, 79, 71, 62, 81, 71, 60, + 0, 83, 79, 60, 0, 83, 81, 64, + 0, 60, 79, 0, 66, 0, 64, 67, + 0, 0, 0, 60, 66, 0, 0, 67, + 0, 83, 81, 81, 62, 69, 60, 0, + 62, 71, 69, 67, 0, 72, 83, 81 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlWorld101.scd b/sound_algo/palette/melodies/xlong/mxlWorld101.scd new file mode 100644 index 0000000..59bdff6 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlWorld101.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlWorld101 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxlWorld101 = [ + 70, 77, 81, 62, 76, 64, 0, 0, + 67, 67, 0, 62, 0, 0, 77, 64, + 69, 0, 84, 64, 67, 0, 0, 0, + 79, 0, 67, 79, 70, 79, 74, 67, + 62, 0, 0, 77, 70, 62, 64, 0, + 82, 67, 0, 0, 77, 84, 67, 60, + 82, 0, 0, 0, 77, 67, 60, 84, + 67, 0, 69, 0, 70, 64, 0, 64, + 0, 79, 77, 74, 0, 81, 0, 0, + 0, 0, 64, 69, 0, 82, 62, 60, + 74, 0, 0, 82, 0, 0, 84, 0, + 70, 60, 69, 74, 82, 74, 82, 79 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlWorld102.scd b/sound_algo/palette/melodies/xlong/mxlWorld102.scd new file mode 100644 index 0000000..2eededa --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlWorld102.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlWorld102 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxlWorld102 = [ + 79, 0, 0, 0, 0, 62, 0, 82, + 0, 64, 62, 74, 70, 60, 69, 84, + 76, 0, 0, 0, 0, 82, 0, 70, + 79, 0, 0, 0, 0, 62, 0, 82, + 0, 64, 62, 74, 70, 60, 69, 84, + 76, 0, 0, 0, 0, 82, 0, 70, + 62, 84, 74, 0, 72, 77, 84, 69, + 0, 64, 0, 77, 74, 0, 0, 67, + 0, 81, 82, 0, 0, 0, 62, 74, + 79, 0, 0, 0, 0, 62, 0, 82, + 0, 64, 62, 74, 70, 60, 69, 84, + 76, 0, 0, 0, 0, 82, 0, 70 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlWorld103.scd b/sound_algo/palette/melodies/xlong/mxlWorld103.scd new file mode 100644 index 0000000..fa99d21 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlWorld103.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlWorld103 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxlWorld103 = [ + 79, 64, 81, 0, 81, 65, 67, 0, + 62, 60, 77, 0, 0, 0, 84, 77, + 81, 76, 0, 72, 74, 84, 69, 76, + 0, 64, 79, 84, 84, 77, 62, 0, + 62, 69, 0, 83, 83, 0, 60, 0, + 62, 64, 83, 72, 65, 0, 60, 77, + 67, 0, 72, 69, 74, 79, 67, 0, + 0, 64, 79, 0, 83, 76, 0, 76, + 65, 0, 69, 62, 77, 81, 81, 69, + 65, 81, 69, 72, 81, 76, 64, 71, + 62, 65, 62, 0, 0, 64, 0, 62, + 60, 72, 0, 67, 69, 64, 0, 84 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlWorld104.scd b/sound_algo/palette/melodies/xlong/mxlWorld104.scd new file mode 100644 index 0000000..6299986 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlWorld104.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlWorld104 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxlWorld104 = [ + 81, 64, 78, 0, 66, 84, 66, 81, + 62, 0, 81, 67, 0, 0, 0, 0, + 76, 0, 0, 72, 62, 0, 0, 67, + 81, 64, 78, 0, 66, 84, 66, 81, + 62, 0, 81, 67, 0, 0, 0, 0, + 76, 0, 0, 72, 62, 0, 0, 67, + 74, 67, 66, 0, 69, 0, 71, 69, + 84, 74, 76, 79, 0, 76, 0, 84, + 69, 76, 81, 0, 78, 0, 0, 83, + 81, 64, 78, 0, 66, 84, 66, 81, + 62, 0, 81, 67, 0, 0, 0, 0, + 76, 0, 0, 72, 62, 0, 0, 67 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlWorld105.scd b/sound_algo/palette/melodies/xlong/mxlWorld105.scd new file mode 100644 index 0000000..322a925 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlWorld105.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlWorld105 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxlWorld105 = [ + 62, 65, 0, 0, 0, 84, 70, 77, + 76, 70, 84, 0, 65, 81, 69, 77, + 79, 0, 82, 69, 69, 84, 69, 62, + 76, 82, 72, 76, 67, 76, 70, 84, + 0, 60, 62, 60, 62, 84, 0, 64, + 70, 76, 84, 74, 0, 74, 0, 0, + 70, 70, 0, 0, 62, 82, 77, 0, + 84, 64, 60, 72, 0, 76, 0, 77, + 62, 65, 0, 64, 0, 76, 84, 72, + 0, 0, 60, 70, 67, 67, 74, 0, + 0, 76, 76, 66, 76, 77, 75, 0, + 0, 79, 76, 63, 67, 72, 60, 68 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlWorld106.scd b/sound_algo/palette/melodies/xlong/mxlWorld106.scd new file mode 100644 index 0000000..46492b8 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlWorld106.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlWorld106 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxlWorld106 = [ + 0, 71, 64, 74, 83, 84, 0, 0, + 81, 71, 66, 76, 74, 71, 67, 78, + 81, 74, 71, 74, 74, 69, 84, 0, + 74, 0, 81, 60, 78, 69, 66, 62, + 0, 76, 66, 72, 74, 79, 71, 83, + 79, 79, 64, 83, 72, 83, 0, 0, + 0, 64, 76, 79, 78, 78, 84, 69, + 66, 0, 84, 62, 62, 72, 83, 78, + 81, 67, 76, 0, 0, 72, 69, 76, + 69, 64, 69, 0, 83, 76, 83, 71, + 68, 76, 0, 71, 81, 80, 80, 60, + 76, 0, 74, 60, 0, 65, 60, 60 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlWorld107.scd b/sound_algo/palette/melodies/xlong/mxlWorld107.scd new file mode 100644 index 0000000..1d18739 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlWorld107.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlWorld107 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxlWorld107 = [ + 0, 0, 72, 0, 74, 0, 79, 0, + 65, 69, 77, 79, 79, 72, 84, 81, + 65, 69, 69, 60, 81, 62, 83, 77, + 62, 0, 62, 67, 0, 0, 71, 0, + 64, 77, 81, 64, 62, 76, 71, 81, + 65, 77, 81, 65, 0, 65, 79, 0, + 72, 0, 76, 0, 65, 81, 60, 81, + 62, 62, 84, 69, 0, 76, 83, 81, + 62, 71, 74, 60, 83, 79, 0, 0, + 62, 77, 60, 62, 79, 84, 67, 0, + 0, 72, 65, 81, 65, 65, 67, 69, + 62, 72, 84, 72, 74, 76, 67, 64 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlWorld108.scd b/sound_algo/palette/melodies/xlong/mxlWorld108.scd new file mode 100644 index 0000000..788e87e --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlWorld108.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlWorld108 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxlWorld108 = [ + 69, 0, 70, 76, 77, 65, 60, 70, + 74, 60, 84, 62, 62, 77, 76, 0, + 82, 81, 69, 0, 82, 84, 79, 72, + 0, 60, 81, 72, 0, 0, 74, 0, + 74, 72, 82, 62, 81, 0, 72, 0, + 81, 0, 79, 72, 79, 62, 0, 0, + 0, 0, 0, 77, 0, 84, 0, 72, + 81, 84, 0, 69, 0, 74, 0, 0, + 70, 69, 0, 0, 62, 72, 72, 0, + 67, 0, 0, 0, 0, 77, 76, 79, + 75, 70, 61, 0, 85, 66, 82, 82, + 80, 0, 67, 60, 67, 0, 71, 0 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlWorld109.scd b/sound_algo/palette/melodies/xlong/mxlWorld109.scd new file mode 100644 index 0000000..49a6dd3 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlWorld109.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlWorld109 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxlWorld109 = [ + 67, 81, 0, 84, 67, 0, 60, 84, + 65, 77, 0, 65, 67, 64, 60, 72, + 74, 62, 0, 0, 79, 0, 76, 0, + 0, 0, 0, 77, 79, 0, 74, 81, + 62, 0, 74, 60, 84, 65, 0, 72, + 67, 76, 0, 71, 0, 65, 60, 0, + 0, 0, 79, 0, 74, 0, 65, 0, + 72, 77, 79, 69, 0, 76, 81, 74, + 83, 67, 0, 69, 0, 69, 72, 67, + 64, 60, 65, 72, 72, 83, 84, 67, + 0, 76, 64, 84, 67, 77, 81, 84, + 71, 0, 0, 83, 71, 0, 0, 76 +]; +) diff --git a/sound_algo/palette/melodies/xlong/mxlWorld110.scd b/sound_algo/palette/melodies/xlong/mxlWorld110.scd new file mode 100644 index 0000000..7c61598 --- /dev/null +++ b/sound_algo/palette/melodies/xlong/mxlWorld110.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// ~mxlWorld110 -- xlong melody (96 steps), genre: world +// ===================================================================== +( +~mxlWorld110 = [ + 77, 62, 60, 72, 70, 82, 69, 74, + 60, 64, 62, 79, 82, 0, 70, 60, + 0, 81, 79, 69, 0, 81, 84, 69, + 77, 79, 0, 76, 0, 0, 60, 0, + 67, 65, 82, 64, 0, 81, 0, 74, + 82, 84, 0, 69, 67, 60, 0, 0, + 70, 0, 0, 0, 64, 76, 62, 74, + 0, 84, 62, 82, 82, 64, 0, 81, + 0, 0, 72, 74, 74, 0, 62, 0, + 70, 77, 0, 69, 65, 64, 62, 0, + 0, 0, 75, 74, 0, 68, 62, 77, + 67, 83, 63, 75, 72, 69, 59, 79 +]; +) diff --git a/sound_algo/palette/rhythm/_index.scd b/sound_algo/palette/rhythm/_index.scd new file mode 100644 index 0000000..b7c0ba9 --- /dev/null +++ b/sound_algo/palette/rhythm/_index.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// palette/rhythm/_index.scd -- Auto-glob loader recursif +// +// Charge UNIQUEMENT les fichiers helpers/fonctions au boot : +// - fills/ (~snareFill / ~tomFill : helpers, pas de mutation d'etat) +// - sequences/ (~seqPlay / ~seqIntro / ~seqDrop / ... : helpers) +// +// Les sous-dossiers drum_kits/, patterns_genre/, kicks/ et percussions/ +// contiennent des PRESETS INTERACTIFS (mutent ~kickSteps / ~hatSteps /... +// + appellent ~reload). Les charger au boot serait destructif : +// le dernier preset chargé ecraserait tous les patterns. +// -> Ces dossiers sont evalues manuellement (Cmd+Entree dans l'IDE). +// ===================================================================== +( +var dir = thisProcess.nowExecutingPath.dirname; +[ "fills", "sequences" ].do { |sub| + PathName(dir +/+ sub).deepFiles + .select { |f| f.extension == "scd" } + .sort { |a, b| a.fullPath < b.fullPath } + .do { |f| f.fullPath.load }; +}; +"=== palette/rhythm loaded (fills + sequences) ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits.scd b/sound_algo/palette/rhythm/drum_kits.scd new file mode 100644 index 0000000..dd1d37f --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits.scd @@ -0,0 +1,268 @@ +// ===================================================================== +// drum_kits.scd +// 21 drum kits complets : +// Originaux : TECHNO / DUBSTEP / DnB / TRAP / HOUSE / BREAKBEAT +// Nouveaux : HARDSTYLE / DRUM'N'BASS / JUNGLE / GARAGE 2-STEP / +// TRAP808 / PHONK / FOOTWORK / LIQUID DnB / SYNTHWAVE / +// INDUSTRIAL / TRIBAL WORLD / HARDCORE / LO-FI HIP-HOP / +// FUTURE GARAGE / DETROIT DEEP +// +// PREREQUIS : engine.scd evalue. Cmd+Entree sur un bloc pour l'appliquer. +// ===================================================================== + + + +// ===================================================================== +// KITS ORIGINAUX (conserves) +// ===================================================================== + +// --- KIT TECHNO ----------------------------------------------------- +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickDrive = 1.3; ~kickClick = 0.2; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; +~snareSteps = (0 ! 16); ~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT TECHNO ===".postln; +) + +// --- KIT DUBSTEP ---------------------------------------------------- +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.6; +~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.5; ~kickDrive = 1.5; ~kickClick = 0.15; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~snareFreq = 220; ~snareNoiseAmt = 0.65; ~snareDecay = 0.16; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT DUBSTEP ===".postln; +) + +// --- KIT DRUM'N'BASS ----------------------------------------------- +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; ~kickDrive = 1.5; ~kickClick = 0.3; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.5; +~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.12; +~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT DnB ===".postln; +) + +// --- KIT TRAP ------------------------------------------------------ +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq = 42; ~kickPitchAmt = 2.5; ~kickDecay = 0.6; ~kickDrive = 1.2; ~kickClick = 0.08; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.10; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,1,0,0, 1,0,1,0, 0,1,0,1]; ~percAmp = 0.2; +~snareSteps = (0 ! 16); +~reload.value; "=== KIT TRAP ===".postln; +) + +// --- KIT HOUSE ------------------------------------------------------ +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.35; ~kickDrive = 1.2; ~kickClick = 0.12; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; +~snareSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT HOUSE ===".postln; +) + +// --- KIT BREAKBEAT -------------------------------------------------- +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,1, 0,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; ~kickDrive = 1.3; ~kickClick = 0.25; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.45; +~snareFreq = 200; ~snareNoiseAmt = 0.6; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.10; +~percInst = \openHat; ~percSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,0]; ~percAmp = 0.22; +~clapSteps = (0 ! 16); +~reload.value; "=== KIT BREAKBEAT ===".postln; +) + + + +// ===================================================================== +// NOUVEAUX KITS +// ===================================================================== + +// --- KIT HARDSTYLE -- kick gabber + clap large + tail "reverse" ----- +( +~kickSteps = [1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0]; ~kickAmp = 0.65; +~kickFreq = 62; ~kickPitchAmt = 5.5; ~kickDecay = 0.30; ~kickDrive = 4.0; ~kickClick = 0.45; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~snareFreq = 230; ~snareNoiseAmt = 0.7; ~snareDecay = 0.18; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.12; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.45; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,1]; ~percAmp = 0.22; +~reload.value; "=== KIT HARDSTYLE ===".postln; +) + +// --- KIT DRUM'N'BASS PUNCHY (alt) -- kick punchy + amen + hat fast -- +( +~kickSteps = [1,0,0,1, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq = 58; ~kickPitchAmt = 4.5; ~kickDecay = 0.16; ~kickDrive = 1.8; ~kickClick = 0.4; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,1]; ~snareAmp = 0.55; +~snareFreq = 250; ~snareNoiseAmt = 0.75; ~snareDecay = 0.09; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.13; +~clapSteps = (0 ! 16); +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== KIT DRUM'N'BASS PUNCHY ===".postln; +) + +// --- KIT JUNGLE -- chopped breakbeat + ragga rim -------------------- +( +~kickSteps = [1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.20; ~kickDrive = 1.6; ~kickClick = 0.32; +~snareSteps = [0,0,0,0, 1,0,1,0, 0,0,0,1, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq = 220; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; +~hatSteps = [1,1,0,1, 1,0,1,1, 1,1,0,1, 1,0,1,1]; ~hatAmp = 0.12; +~clapSteps = (0 ! 16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.30; +~reload.value; "=== KIT JUNGLE ===".postln; +) + +// --- KIT GARAGE 2-STEP -- clap shuffled + snare pad ----------------- +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.35; ~kickDrive = 1.2; ~kickClick = 0.15; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 0,1,0,0]; ~snareAmp = 0.4; +~snareFreq = 200; ~snareNoiseAmt = 0.55; ~snareDecay = 0.20; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.11; +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = (0 ! 16); +~reload.value; "=== KIT GARAGE 2-STEP ===".postln; +) + +// --- KIT TRAP808 -- 808 boom + clap + hi-hat trap rolls ------------- +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.6; +~kickFreq = 38; ~kickPitchAmt = 1.8; ~kickDecay = 0.85; ~kickDrive = 1.0; ~kickClick = 0.05; +~snareSteps = (0 ! 16); +~hatSteps = [1,1,1,0, 1,1,1,1, 1,1,1,0, 1,1,1,1]; ~hatAmp = 0.09; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; +~percInst = \rim; ~percSteps = [0,0,1,1, 0,1,0,0, 1,0,1,0, 0,1,1,0]; ~percAmp = 0.18; +~reload.value; "=== KIT TRAP808 ===".postln; +) + +// --- KIT PHONK -- cowbell + 808 + pitched snare -------------------- +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.6; +~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.7; ~kickDrive = 1.2; ~kickClick = 0.08; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; +~snareFreq = 280; ~snareNoiseAmt = 0.65; ~snareDecay = 0.14; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.11; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percInst = \cowbell; ~cowbellFreq = 800; +~percSteps = [0,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.32; +~reload.value; "=== KIT PHONK ===".postln; +) + +// --- KIT FOOTWORK -- rapid hat + 808 + clap stutter ----------------- +( +~kickSteps = [1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0]; ~kickAmp = 0.55; +~kickFreq = 42; ~kickPitchAmt = 2.4; ~kickDecay = 0.5; ~kickDrive = 1.3; ~kickClick = 0.10; +~snareSteps = (0 ! 16); +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~clapSteps = [0,0,0,1, 1,0,0,0, 0,0,0,1, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = [0,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,0,1]; ~percAmp = 0.22; +~reload.value; "=== KIT FOOTWORK ===".postln; +) + +// --- KIT LIQUID DnB -- subtle kick + breakbeat + smooth hat --------- +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq = 50; ~kickPitchAmt = 3.0; ~kickDecay = 0.28; ~kickDrive = 1.2; ~kickClick = 0.18; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.42; +~snareFreq = 220; ~snareNoiseAmt = 0.55; ~snareDecay = 0.14; +~hatSteps = [1,0,1,1, 0,1,0,1, 1,0,1,1, 0,1,0,1]; ~hatAmp = 0.09; +~clapSteps = (0 ! 16); +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== KIT LIQUID DnB ===".postln; +) + +// --- KIT SYNTHWAVE -- kick 80s + reverb snare + hat soft ------------ +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.30; ~kickDrive = 1.2; ~kickClick = 0.18; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~snareFreq = 180; ~snareNoiseAmt = 0.55; ~snareDecay = 0.22; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percSteps = (0 ! 16); +~reload.value; "=== KIT SYNTHWAVE ===".postln; +) + +// --- KIT INDUSTRIAL -- kick metal + snare reverse + perc clang ------ +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; ~kickDrive = 3.5; ~kickClick = 0.4; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~snareFreq = 260; ~snareNoiseAmt = 0.8; ~snareDecay = 0.10; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.13; +~clapSteps = (0 ! 16); +~percInst = \rim; ~percSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,1]; ~percAmp = 0.4; +~reload.value; "=== KIT INDUSTRIAL ===".postln; +) + +// --- KIT TRIBAL WORLD -- perc layered + kick small + shaker --------- +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.4; +~kickFreq = 48; ~kickPitchAmt = 2.2; ~kickDecay = 0.4; ~kickDrive = 1.0; ~kickClick = 0.06; +~snareSteps = (0 ! 16); +~hatSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,0,1,1]; ~hatAmp = 0.08; +~clapSteps = (0 ! 16); +~percInst = \tom; ~tomFreq = 95; +~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; ~percAmp = 0.4; +~reload.value; "=== KIT TRIBAL WORLD ===".postln; +) + +// --- KIT HARDCORE -- kick sature + snare 909 distordu + claps ------- +( +~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.65; +~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.20; ~kickDrive = 4.0; ~kickClick = 0.35; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq = 240; ~snareNoiseAmt = 0.85; ~snareDecay = 0.10; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.12; +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.42; +~percSteps = (0 ! 16); +~reload.value; "=== KIT HARDCORE ===".postln; +) + +// --- KIT LO-FI HIP-HOP -- kick muted + snare vinyl + perc dust ------ +( +~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~kickAmp = 0.45; +~kickFreq = 45; ~kickPitchAmt = 2.0; ~kickDecay = 0.55; ~kickDrive = 1.0; ~kickClick = 0.04; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.40; +~snareFreq = 190; ~snareNoiseAmt = 0.45; ~snareDecay = 0.15; +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.08; +~clapSteps = (0 ! 16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.14; +~reload.value; "=== KIT LO-FI HIP-HOP ===".postln; +) + +// --- KIT FUTURE GARAGE -- kick rolling + snare ghost + 16th hat ----- +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.5; ~kickDrive = 1.2; ~kickClick = 0.10; +~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,1,0,0]; ~snareAmp = 0.30; +~snareFreq = 210; ~snareNoiseAmt = 0.5; ~snareDecay = 0.15; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.10; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.32; +~percSteps = (0 ! 16); +~reload.value; "=== KIT FUTURE GARAGE ===".postln; +) + +// --- KIT DETROIT DEEP -- kick 909 + clap warm + perc minimal -------- +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.32; ~kickDrive = 1.3; ~kickClick = 0.16; +~snareSteps = (0 ! 16); +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.13; +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== KIT DETROIT DEEP ===".postln; +) + + + diff --git a/sound_algo/palette/rhythm/drum_kits/kit_breakbeat.scd b/sound_algo/palette/rhythm/drum_kits/kit_breakbeat.scd new file mode 100644 index 0000000..3d3af9a --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_breakbeat.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT BREAKBEAT -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,1, 0,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; ~kickDrive = 1.3; ~kickClick = 0.25; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.45; +~snareFreq = 200; ~snareNoiseAmt = 0.6; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.10; +~percInst = \openHat; ~percSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,0]; ~percAmp = 0.22; +~clapSteps = (0 ! 16); +~reload.value; "=== KIT BREAKBEAT ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_detroit_deep_--_kick_909_clap_warm_perc_minimal.scd b/sound_algo/palette/rhythm/drum_kits/kit_detroit_deep_--_kick_909_clap_warm_perc_minimal.scd new file mode 100644 index 0000000..1ebc387 --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_detroit_deep_--_kick_909_clap_warm_perc_minimal.scd @@ -0,0 +1,12 @@ +// ========================================================= +// KIT DETROIT DEEP -- kick 909 + clap warm + perc minimal -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.32; ~kickDrive = 1.3; ~kickClick = 0.16; +~snareSteps = (0 ! 16); +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.13; +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== KIT DETROIT DEEP ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_drumnbass.scd b/sound_algo/palette/rhythm/drum_kits/kit_drumnbass.scd new file mode 100644 index 0000000..4058b0f --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_drumnbass.scd @@ -0,0 +1,12 @@ +// ========================================================= +// KIT DRUM'N'BASS -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; ~kickDrive = 1.5; ~kickClick = 0.3; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.5; +~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.12; +~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT DnB ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_drumnbass_punchy_alt_--_kick_punchy_amen_hat_fast.scd b/sound_algo/palette/rhythm/drum_kits/kit_drumnbass_punchy_alt_--_kick_punchy_amen_hat_fast.scd new file mode 100644 index 0000000..ccad448 --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_drumnbass_punchy_alt_--_kick_punchy_amen_hat_fast.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT DRUM'N'BASS PUNCHY (alt) -- kick punchy + amen + hat fast -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,1, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq = 58; ~kickPitchAmt = 4.5; ~kickDecay = 0.16; ~kickDrive = 1.8; ~kickClick = 0.4; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,1]; ~snareAmp = 0.55; +~snareFreq = 250; ~snareNoiseAmt = 0.75; ~snareDecay = 0.09; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.13; +~clapSteps = (0 ! 16); +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== KIT DRUM'N'BASS PUNCHY ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_dubstep.scd b/sound_algo/palette/rhythm/drum_kits/kit_dubstep.scd new file mode 100644 index 0000000..fc54ff5 --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_dubstep.scd @@ -0,0 +1,12 @@ +// ========================================================= +// KIT DUBSTEP -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.6; +~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.5; ~kickDrive = 1.5; ~kickClick = 0.15; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~snareFreq = 220; ~snareNoiseAmt = 0.65; ~snareDecay = 0.16; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT DUBSTEP ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_footwork_--_rapid_hat_808_clap_stutter.scd b/sound_algo/palette/rhythm/drum_kits/kit_footwork_--_rapid_hat_808_clap_stutter.scd new file mode 100644 index 0000000..3a87766 --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_footwork_--_rapid_hat_808_clap_stutter.scd @@ -0,0 +1,12 @@ +// ========================================================= +// KIT FOOTWORK -- rapid hat + 808 + clap stutter -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0]; ~kickAmp = 0.55; +~kickFreq = 42; ~kickPitchAmt = 2.4; ~kickDecay = 0.5; ~kickDrive = 1.3; ~kickClick = 0.10; +~snareSteps = (0 ! 16); +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~clapSteps = [0,0,0,1, 1,0,0,0, 0,0,0,1, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = [0,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,0,1]; ~percAmp = 0.22; +~reload.value; "=== KIT FOOTWORK ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_future_garage_--_kick_rolling_snare_ghost_16th_hat.scd b/sound_algo/palette/rhythm/drum_kits/kit_future_garage_--_kick_rolling_snare_ghost_16th_hat.scd new file mode 100644 index 0000000..bc55321 --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_future_garage_--_kick_rolling_snare_ghost_16th_hat.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT FUTURE GARAGE -- kick rolling + snare ghost + 16th hat -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.5; ~kickDrive = 1.2; ~kickClick = 0.10; +~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,1,0,0]; ~snareAmp = 0.30; +~snareFreq = 210; ~snareNoiseAmt = 0.5; ~snareDecay = 0.15; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.10; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.32; +~percSteps = (0 ! 16); +~reload.value; "=== KIT FUTURE GARAGE ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_garage_2-step_--_clap_shuffled_snare_pad.scd b/sound_algo/palette/rhythm/drum_kits/kit_garage_2-step_--_clap_shuffled_snare_pad.scd new file mode 100644 index 0000000..a338f97 --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_garage_2-step_--_clap_shuffled_snare_pad.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT GARAGE 2-STEP -- clap shuffled + snare pad -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.35; ~kickDrive = 1.2; ~kickClick = 0.15; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 0,1,0,0]; ~snareAmp = 0.4; +~snareFreq = 200; ~snareNoiseAmt = 0.55; ~snareDecay = 0.20; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.11; +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = (0 ! 16); +~reload.value; "=== KIT GARAGE 2-STEP ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_hardcore_--_kick_sature_snare_909_distordu_claps.scd b/sound_algo/palette/rhythm/drum_kits/kit_hardcore_--_kick_sature_snare_909_distordu_claps.scd new file mode 100644 index 0000000..5e67cc2 --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_hardcore_--_kick_sature_snare_909_distordu_claps.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT HARDCORE -- kick sature + snare 909 distordu + claps -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.65; +~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.20; ~kickDrive = 4.0; ~kickClick = 0.35; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq = 240; ~snareNoiseAmt = 0.85; ~snareDecay = 0.10; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.12; +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.42; +~percSteps = (0 ! 16); +~reload.value; "=== KIT HARDCORE ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_hardstyle_--_kick_gabber_clap_large_tail_reverse.scd b/sound_algo/palette/rhythm/drum_kits/kit_hardstyle_--_kick_gabber_clap_large_tail_reverse.scd new file mode 100644 index 0000000..f8c5d8a --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_hardstyle_--_kick_gabber_clap_large_tail_reverse.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT HARDSTYLE -- kick gabber + clap large + tail "reverse" -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0]; ~kickAmp = 0.65; +~kickFreq = 62; ~kickPitchAmt = 5.5; ~kickDecay = 0.30; ~kickDrive = 4.0; ~kickClick = 0.45; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~snareFreq = 230; ~snareNoiseAmt = 0.7; ~snareDecay = 0.18; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.12; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.45; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,1]; ~percAmp = 0.22; +~reload.value; "=== KIT HARDSTYLE ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_house.scd b/sound_algo/palette/rhythm/drum_kits/kit_house.scd new file mode 100644 index 0000000..1e39dc9 --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_house.scd @@ -0,0 +1,11 @@ +// ========================================================= +// KIT HOUSE -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.35; ~kickDrive = 1.2; ~kickClick = 0.12; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; +~snareSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT HOUSE ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_industrial_--_kick_metal_snare_reverse_perc_clang.scd b/sound_algo/palette/rhythm/drum_kits/kit_industrial_--_kick_metal_snare_reverse_perc_clang.scd new file mode 100644 index 0000000..e56411b --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_industrial_--_kick_metal_snare_reverse_perc_clang.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT INDUSTRIAL -- kick metal + snare reverse + perc clang -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; ~kickDrive = 3.5; ~kickClick = 0.4; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~snareFreq = 260; ~snareNoiseAmt = 0.8; ~snareDecay = 0.10; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.13; +~clapSteps = (0 ! 16); +~percInst = \rim; ~percSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,1]; ~percAmp = 0.4; +~reload.value; "=== KIT INDUSTRIAL ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_jungle_--_chopped_breakbeat_ragga_rim.scd b/sound_algo/palette/rhythm/drum_kits/kit_jungle_--_chopped_breakbeat_ragga_rim.scd new file mode 100644 index 0000000..f2ba316 --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_jungle_--_chopped_breakbeat_ragga_rim.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT JUNGLE -- chopped breakbeat + ragga rim -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.20; ~kickDrive = 1.6; ~kickClick = 0.32; +~snareSteps = [0,0,0,0, 1,0,1,0, 0,0,0,1, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq = 220; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; +~hatSteps = [1,1,0,1, 1,0,1,1, 1,1,0,1, 1,0,1,1]; ~hatAmp = 0.12; +~clapSteps = (0 ! 16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.30; +~reload.value; "=== KIT JUNGLE ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_liquid_dnb_--_subtle_kick_breakbeat_smooth_hat.scd b/sound_algo/palette/rhythm/drum_kits/kit_liquid_dnb_--_subtle_kick_breakbeat_smooth_hat.scd new file mode 100644 index 0000000..4ca320b --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_liquid_dnb_--_subtle_kick_breakbeat_smooth_hat.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT LIQUID DnB -- subtle kick + breakbeat + smooth hat -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq = 50; ~kickPitchAmt = 3.0; ~kickDecay = 0.28; ~kickDrive = 1.2; ~kickClick = 0.18; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.42; +~snareFreq = 220; ~snareNoiseAmt = 0.55; ~snareDecay = 0.14; +~hatSteps = [1,0,1,1, 0,1,0,1, 1,0,1,1, 0,1,0,1]; ~hatAmp = 0.09; +~clapSteps = (0 ! 16); +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== KIT LIQUID DnB ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_lo-fi_hip-hop_--_kick_muted_snare_vinyl_perc_dust.scd b/sound_algo/palette/rhythm/drum_kits/kit_lo-fi_hip-hop_--_kick_muted_snare_vinyl_perc_dust.scd new file mode 100644 index 0000000..2458f3a --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_lo-fi_hip-hop_--_kick_muted_snare_vinyl_perc_dust.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT LO-FI HIP-HOP -- kick muted + snare vinyl + perc dust -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~kickAmp = 0.45; +~kickFreq = 45; ~kickPitchAmt = 2.0; ~kickDecay = 0.55; ~kickDrive = 1.0; ~kickClick = 0.04; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.40; +~snareFreq = 190; ~snareNoiseAmt = 0.45; ~snareDecay = 0.15; +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.08; +~clapSteps = (0 ! 16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.14; +~reload.value; "=== KIT LO-FI HIP-HOP ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_phonk_--_cowbell_808_pitched_snare.scd b/sound_algo/palette/rhythm/drum_kits/kit_phonk_--_cowbell_808_pitched_snare.scd new file mode 100644 index 0000000..b1a41cc --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_phonk_--_cowbell_808_pitched_snare.scd @@ -0,0 +1,14 @@ +// ========================================================= +// KIT PHONK -- cowbell + 808 + pitched snare -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.6; +~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.7; ~kickDrive = 1.2; ~kickClick = 0.08; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; +~snareFreq = 280; ~snareNoiseAmt = 0.65; ~snareDecay = 0.14; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.11; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percInst = \cowbell; ~cowbellFreq = 800; +~percSteps = [0,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.32; +~reload.value; "=== KIT PHONK ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_synthwave_--_kick_80s_reverb_snare_hat_soft.scd b/sound_algo/palette/rhythm/drum_kits/kit_synthwave_--_kick_80s_reverb_snare_hat_soft.scd new file mode 100644 index 0000000..62ade1f --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_synthwave_--_kick_80s_reverb_snare_hat_soft.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT SYNTHWAVE -- kick 80s + reverb snare + hat soft -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.30; ~kickDrive = 1.2; ~kickClick = 0.18; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~snareFreq = 180; ~snareNoiseAmt = 0.55; ~snareDecay = 0.22; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percSteps = (0 ! 16); +~reload.value; "=== KIT SYNTHWAVE ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_techno.scd b/sound_algo/palette/rhythm/drum_kits/kit_techno.scd new file mode 100644 index 0000000..ca4577a --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_techno.scd @@ -0,0 +1,10 @@ +// ========================================================= +// KIT TECHNO -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickDrive = 1.3; ~kickClick = 0.2; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; +~snareSteps = (0 ! 16); ~clapSteps = (0 ! 16); ~percSteps = (0 ! 16); +~reload.value; "=== KIT TECHNO ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_trap.scd b/sound_algo/palette/rhythm/drum_kits/kit_trap.scd new file mode 100644 index 0000000..5f64401 --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_trap.scd @@ -0,0 +1,12 @@ +// ========================================================= +// KIT TRAP -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq = 42; ~kickPitchAmt = 2.5; ~kickDecay = 0.6; ~kickDrive = 1.2; ~kickClick = 0.08; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.10; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,1,0,0, 1,0,1,0, 0,1,0,1]; ~percAmp = 0.2; +~snareSteps = (0 ! 16); +~reload.value; "=== KIT TRAP ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_trap808_--_808_boom_clap_hi-hat_trap_rolls.scd b/sound_algo/palette/rhythm/drum_kits/kit_trap808_--_808_boom_clap_hi-hat_trap_rolls.scd new file mode 100644 index 0000000..7767bfd --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_trap808_--_808_boom_clap_hi-hat_trap_rolls.scd @@ -0,0 +1,12 @@ +// ========================================================= +// KIT TRAP808 -- 808 boom + clap + hi-hat trap rolls -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.6; +~kickFreq = 38; ~kickPitchAmt = 1.8; ~kickDecay = 0.85; ~kickDrive = 1.0; ~kickClick = 0.05; +~snareSteps = (0 ! 16); +~hatSteps = [1,1,1,0, 1,1,1,1, 1,1,1,0, 1,1,1,1]; ~hatAmp = 0.09; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; +~percInst = \rim; ~percSteps = [0,0,1,1, 0,1,0,0, 1,0,1,0, 0,1,1,0]; ~percAmp = 0.18; +~reload.value; "=== KIT TRAP808 ===".postln; +) diff --git a/sound_algo/palette/rhythm/drum_kits/kit_tribal_world_--_perc_layered_kick_small_shaker.scd b/sound_algo/palette/rhythm/drum_kits/kit_tribal_world_--_perc_layered_kick_small_shaker.scd new file mode 100644 index 0000000..3e72ab1 --- /dev/null +++ b/sound_algo/palette/rhythm/drum_kits/kit_tribal_world_--_perc_layered_kick_small_shaker.scd @@ -0,0 +1,13 @@ +// ========================================================= +// KIT TRIBAL WORLD -- perc layered + kick small + shaker -- extrait de drum_kits.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.4; +~kickFreq = 48; ~kickPitchAmt = 2.2; ~kickDecay = 0.4; ~kickDrive = 1.0; ~kickClick = 0.06; +~snareSteps = (0 ! 16); +~hatSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,0,1,1]; ~hatAmp = 0.08; +~clapSteps = (0 ! 16); +~percInst = \tom; ~tomFreq = 95; +~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; ~percAmp = 0.4; +~reload.value; "=== KIT TRIBAL WORLD ===".postln; +) diff --git a/sound_algo/palette/rhythm/fills.scd b/sound_algo/palette/rhythm/fills.scd new file mode 100644 index 0000000..ba60fda --- /dev/null +++ b/sound_algo/palette/rhythm/fills.scd @@ -0,0 +1,37 @@ +// ===================================================================== +// fills.scd +// Helpers rythmiques : ~snareFill / ~tomFill +// +// PREREQUIS : engine.scd evalue. Cmd+Entree sur le bloc pour l'appliquer. +// Compatible avec .load (un seul bloc top-level). +// ===================================================================== + +( +// --- Snare fill (8 hits sur 1s, accelerando d'amp) ----------------- +~snareFill = { |hits = 8, dur = 1, ampStart = 0.3, ampEnd = 0.5| + Routine({ + hits.do { |k| + var a = ampStart + ((ampEnd - ampStart) * (k / hits.max(1))); + Synth(\snare, [\amp, a, \decay, 0.06, \freq, 200 + (k * 10)]); + (dur / hits).wait; + }; + }).play; +}; + +// --- Tom fill (descente sur 4 toms) ------------------------------- +~tomFill = { + Routine({ + [180, 140, 110, 85].do { |f| + Synth(\tom, [\freq, f, \decay, 0.25, \amp, 0.5]); + 0.15.wait; + }; + }).play; +}; + +"helpers ~snareFill / ~tomFill prets".postln; +) + +// Exemples manuels (Cmd+Entree, ne PAS evaluer au .load) : + ( ~snareFill.value; ) // fill standard 8 hits / 1s + ( ~snareFill.(16, 2, 0.2, 0.55); ) // fill long accelerando + ( ~tomFill.value; ) // descente 4 toms diff --git a/sound_algo/palette/rhythm/fills/_demo_exemples_manuels.scd b/sound_algo/palette/rhythm/fills/_demo_exemples_manuels.scd new file mode 100644 index 0000000..0a7d1d9 --- /dev/null +++ b/sound_algo/palette/rhythm/fills/_demo_exemples_manuels.scd @@ -0,0 +1,4 @@ +// ========================================================= +// Exemples manuels (Cmd+Entree, ne PAS evaluer au .load) : -- extrait de fills.scd +// ========================================================= +( ~snareFill.value; ) diff --git a/sound_algo/palette/rhythm/fills/_demo_snarefill_call.scd b/sound_algo/palette/rhythm/fills/_demo_snarefill_call.scd new file mode 100644 index 0000000..46c1b68 --- /dev/null +++ b/sound_algo/palette/rhythm/fills/_demo_snarefill_call.scd @@ -0,0 +1,4 @@ +// ========================================================= +// block -- extrait de fills.scd +// ========================================================= +( ~snareFill.(16, 2, 0.2, 0.55); ) diff --git a/sound_algo/palette/rhythm/fills/_demo_tomfill_call.scd b/sound_algo/palette/rhythm/fills/_demo_tomfill_call.scd new file mode 100644 index 0000000..04256df --- /dev/null +++ b/sound_algo/palette/rhythm/fills/_demo_tomfill_call.scd @@ -0,0 +1,4 @@ +// ========================================================= +// block -- extrait de fills.scd +// ========================================================= +( ~tomFill.value; ) diff --git a/sound_algo/palette/rhythm/fills/fill_helpers.scd b/sound_algo/palette/rhythm/fills/fill_helpers.scd new file mode 100644 index 0000000..dbf4369 --- /dev/null +++ b/sound_algo/palette/rhythm/fills/fill_helpers.scd @@ -0,0 +1,27 @@ +// ========================================================= +// Compatible avec .load (un seul bloc top-level). -- extrait de fills.scd +// ========================================================= +( +// --- Snare fill (8 hits sur 1s, accelerando d'amp) ----------------- +~snareFill = { |hits = 8, dur = 1, ampStart = 0.3, ampEnd = 0.5| + Routine({ + hits.do { |k| + var a = ampStart + ((ampEnd - ampStart) * (k / hits.max(1))); + Synth(\snare, [\amp, a, \decay, 0.06, \freq, 200 + (k * 10)]); + (dur / hits).wait; + }; + }).play; +}; + +// --- Tom fill (descente sur 4 toms) ------------------------------- +~tomFill = { + Routine({ + [180, 140, 110, 85].do { |f| + Synth(\tom, [\freq, f, \decay, 0.25, \amp, 0.5]); + 0.15.wait; + }; + }).play; +}; + +"helpers ~snareFill / ~tomFill prets".postln; +) diff --git a/sound_algo/palette/rhythm/kicks.scd b/sound_algo/palette/rhythm/kicks.scd new file mode 100644 index 0000000..2a12ba3 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks.scd @@ -0,0 +1,223 @@ +// ===================================================================== +// kicks.scd +// ~25 patterns kick (K1-K25) + ~12 timbres kick (T1-T12) +// +// PREREQUIS : engine.scd evalue. Cmd+Entree sur un bloc pour l'appliquer. +// +// En plus des blocs auto-applicants, chaque pattern est stocke dans +// ~kK1..~kK25 (tableau 16 steps brut, sans appliquer). Util pour +// ~seqPlay.([[16, { ~kickSteps = ~kK3; ~reload.value }], ...]) +// cf. palette/sequences.scd. +// ===================================================================== + + + +// ===================================================================== +// STOCKAGE (variables ~kK1..~kK25) -- evaluer ce bloc une fois pour +// enregistrer tous les patterns sous forme de variables reutilisables +// par sequences.scd. +// ===================================================================== +( +// --- 4-on-floor classique ------------------------------------------- +~kK1 = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; +// --- techno syncope (8th deplaces) ---------------------------------- +~kK2 = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; +// --- gabber double-temps (toutes 8th notes) ------------------------- +~kK3 = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; +// --- dembow / latin (1 + 1+e + 3 + 3+e) ----------------------------- +~kK4 = [ 1,0,0,1, 0,0,1,0, 1,0,0,1, 0,0,1,0 ]; +// --- half-time (1 et 9 -- dubstep / phonk / hip-hop) ---------------- +~kK5 = [ 1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; +// --- breakbeat amen-like -------------------------------------------- +~kK6 = [ 1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0 ]; +// --- techno triplet feel (3 over 4) --------------------------------- +~kK7 = [ 1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,1 ]; +// --- minimal -- 1 kick par mesure (downtempo) ----------------------- +~kK8 = [ 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ]; + +// --- 4-on-floor + ghost offbeat (techno minimal) -------------------- +~kK9 = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; +// --- 4-on-floor syncope avancee ------------------------------------- +~kK10 = [ 1,0,1,0, 1,0,0,1, 1,0,1,0, 1,0,1,1 ]; +// --- double-time (1, 5, 9, 13 + 3, 7, 11, 15) ----------------------- +~kK11 = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; +// --- breakbeat (drum'n'bass / jungle base) -------------------------- +~kK12 = [ 1,0,0,1, 0,0,0,0, 0,0,1,0, 0,0,1,0 ]; +// --- amen break kick pattern (jungle origine) ----------------------- +~kK13 = [ 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 ]; +// --- gabber dense (kick sur tous 16th) ------------------------------ +~kK14 = [ 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1 ]; +// --- hardstyle (kick + reverse + tail simulee) ---------------------- +~kK15 = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0 ]; +// --- techno minimal kick fantome ------------------------------------ +~kK16 = [ 1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0 ]; +// --- trance gros kick (4/4 punchy + ghost 16) ----------------------- +~kK17 = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,1 ]; +// --- house classique (kick 4/4 + offbeat hat impl) ------------------ +~kK18 = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; +// --- electro syncope ------------------------------------------------ +~kK19 = [ 1,0,0,1, 0,0,0,0, 1,0,0,0, 0,0,1,0 ]; +// --- trip-hop lazy -------------------------------------------------- +~kK20 = [ 1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0 ]; +// --- jungle rapid breakbeat ----------------------------------------- +~kK21 = [ 1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0 ]; +// --- reggae / dub one-drop (kick sur 3) ----------------------------- +~kK22 = [ 0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; +// --- afrobeat (kick polyrhythmique) --------------------------------- +~kK23 = [ 1,0,0,1, 0,1,0,0, 1,0,1,0, 0,1,0,0 ]; +// --- garage 2-step -------------------------------------------------- +~kK24 = [ 1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0 ]; +// --- footwork / juke (160 BPM, kick triple) ------------------------- +~kK25 = [ 1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0 ]; +"=== kicks : 25 patterns stockes dans ~kK1..~kK25 ===".postln; +) + + + +// ===================================================================== +// PATTERNS RYTHMIQUES (blocs auto-applicants) +// ===================================================================== + +// --- K1 : 4-on-the-floor (defaut) ----------------------------------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; ~reload.value; "K1 4/4".postln; ) + +// --- K2 : techno syncope (8th notes deplaces) ----------------------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; ~reload.value; "K2 syncope".postln; ) + +// --- K3 : gabber double-temps (toutes les 2 doubles-croches) -------- +( ~kickSteps = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; ~reload.value; "K3 gabber".postln; ) + +// --- K4 : dembow / latin (1 + 1+e + 3 + 3+e) ------------------------ +( ~kickSteps = [ 1,0,0,1, 0,0,1,0, 1,0,0,1, 0,0,1,0 ]; ~reload.value; "K4 dembow".postln; ) + +// --- K5 : half-time (kick 1 et 9 -- dubstep/phonk/hip-hop) ---------- +( ~kickSteps = [ 1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; ~reload.value; "K5 half-time".postln; ) + +// --- K6 : breakbeat (Amen-like) ------------------------------------- +( ~kickSteps = [ 1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0 ]; ~reload.value; "K6 breakbeat".postln; ) + +// --- K7 : techno triplet feel (3 over 4) ---------------------------- +( ~kickSteps = [ 1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,1 ]; ~reload.value; "K7 triplet feel".postln; ) + +// --- K8 : minimal -- 1 kick par mesure (downtempo) ----------------- +( ~kickSteps = [ 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ]; ~reload.value; "K8 minimal".postln; ) + +// --- K9 : 4-on-floor + ghost offbeat (techno minimaliste) ---------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; ~reload.value; "K9 minimal ghost".postln; ) + +// --- K10 : 4-on-floor syncope avance (drive +) --------------------- +( ~kickSteps = [ 1,0,1,0, 1,0,0,1, 1,0,1,0, 1,0,1,1 ]; ~reload.value; "K10 syncope avance".postln; ) + +// --- K11 : double-time (8th sur tous les temps) -------------------- +( ~kickSteps = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; ~reload.value; "K11 double-time".postln; ) + +// --- K12 : breakbeat irregulier (DnB / jungle) --------------------- +( ~kickSteps = [ 1,0,0,1, 0,0,0,0, 0,0,1,0, 0,0,1,0 ]; ~reload.value; "K12 breakbeat irreg".postln; ) + +// --- K13 : amen break kick pattern (jungle classique) -------------- +( ~kickSteps = [ 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 ]; ~reload.value; "K13 amen break".postln; ) + +// --- K14 : gabber tres dense (kick partout) ------------------------ +( ~kickSteps = [ 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1 ]; ~reload.value; "K14 gabber dense".postln; ) + +// --- K15 : hardstyle (kick + reverse + tail simulee) --------------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0 ]; ~reload.value; "K15 hardstyle".postln; ) + +// --- K16 : techno minimaliste avec kick fantome -------------------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0 ]; ~reload.value; "K16 techno minimal".postln; ) + +// --- K17 : trance kick gros + ghost 16 ------------------------------ +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,1 ]; ~reload.value; "K17 trance".postln; ) + +// --- K18 : house 4/4 classique -------------------------------------- +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; ~reload.value; "K18 house".postln; ) + +// --- K19 : electro syncope ------------------------------------------ +( ~kickSteps = [ 1,0,0,1, 0,0,0,0, 1,0,0,0, 0,0,1,0 ]; ~reload.value; "K19 electro".postln; ) + +// --- K20 : trip-hop lazy kick --------------------------------------- +( ~kickSteps = [ 1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0 ]; ~reload.value; "K20 trip-hop".postln; ) + +// --- K21 : jungle rapid breakbeat ----------------------------------- +( ~kickSteps = [ 1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0 ]; ~reload.value; "K21 jungle".postln; ) + +// --- K22 : reggae / dub one-drop (kick sur 3) ----------------------- +( ~kickSteps = [ 0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; ~reload.value; "K22 one-drop".postln; ) + +// --- K23 : afrobeat polyrythmique ----------------------------------- +( ~kickSteps = [ 1,0,0,1, 0,1,0,0, 1,0,1,0, 0,1,0,0 ]; ~reload.value; "K23 afrobeat".postln; ) + +// --- K24 : garage 2-step -------------------------------------------- +( ~kickSteps = [ 1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0 ]; ~reload.value; "K24 2-step".postln; ) + +// --- K25 : footwork / juke (160 BPM, kick triple) ------------------- +( ~kickSteps = [ 1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0 ]; ~reload.value; "K25 footwork".postln; ) + + + +// ===================================================================== +// VARIATIONS DE TIMBRE (T1..T12) +// ===================================================================== + +// --- T1 : kick rond (defaut) -- techno classique -------------------- +( ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.3; ~kickClick = 0.2; + ~reload.value; "T1 rond".postln; ) + +// --- T2 : kick claquant -- snare-like, drive plus haut -------------- +( ~kickFreq = 65; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.45; + ~reload.value; "T2 claquant".postln; ) + +// --- T3 : kick boomy -- queue longue, sub fort, peu de click -------- +( ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.6; + ~kickDrive = 1.2; ~kickClick = 0.08; + ~reload.value; "T3 boomy".postln; ) + +// --- T4 : kick distordu -- gabber/hardcore -------------------------- +( ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~reload.value; "T4 distordu".postln; ) + +// --- T5 : kick sub deep -- pour dub / techno minimal ---------------- +( ~kickFreq = 42; ~kickPitchAmt = 2.0; ~kickDecay = 0.5; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~reload.value; "T5 sub deep".postln; ) + +// --- T6 : kick punchy -- tres tight, snappy attack ------------------ +( ~kickFreq = 70; ~kickPitchAmt = 3.5; ~kickDecay = 0.22; + ~kickDrive = 2.0; ~kickClick = 0.35; + ~reload.value; "T6 punchy".postln; ) + +// --- T7 : clap-style (melange kick + snare body) ------------------- +( ~kickFreq = 75; ~kickPitchAmt = 4.5; ~kickDecay = 0.16; + ~kickDrive = 1.5; ~kickClick = 0.55; + ~reload.value; "T7 clap-style".postln; ) + +// --- T8 : 909 vintage (long decay, soft click) --------------------- +( ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.45; + ~kickDrive = 1.1; ~kickClick = 0.12; + ~reload.value; "T8 909 vintage".postln; ) + +// --- T9 : 808 boom (ultra sub, decay tres long) -------------------- +( ~kickFreq = 38; ~kickPitchAmt = 1.8; ~kickDecay = 0.85; + ~kickDrive = 1.0; ~kickClick = 0.04; + ~reload.value; "T9 808 boom".postln; ) + +// --- T10 : gabber distorded (drive max + click) -------------------- +( ~kickFreq = 62; ~kickPitchAmt = 5.5; ~kickDecay = 0.22; + ~kickDrive = 4.5; ~kickClick = 0.5; + ~reload.value; "T10 gabber distorded".postln; ) + +// --- T11 : breakcore (tres court, metallique) --------------------- +( ~kickFreq = 80; ~kickPitchAmt = 4.0; ~kickDecay = 0.10; + ~kickDrive = 2.5; ~kickClick = 0.6; + ~reload.value; "T11 breakcore".postln; ) + +// --- T12 : dub kick (long sub tail, peu de click) ------------------ +( ~kickFreq = 40; ~kickPitchAmt = 1.5; ~kickDecay = 0.95; + ~kickDrive = 1.0; ~kickClick = 0.03; + ~reload.value; "T12 dub kick".postln; ) + + + diff --git a/sound_algo/palette/rhythm/kicks/_demo_k10_4-on-floor_syncope_avance.scd b/sound_algo/palette/rhythm/kicks/_demo_k10_4-on-floor_syncope_avance.scd new file mode 100644 index 0000000..61155d7 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k10_4-on-floor_syncope_avance.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K10 : 4-on-floor syncope avance -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,1,0, 1,0,0,1, 1,0,1,0, 1,0,1,1 ]; ~reload.value; "K10 syncope avance".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k11_double-time.scd b/sound_algo/palette/rhythm/kicks/_demo_k11_double-time.scd new file mode 100644 index 0000000..b55f25e --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k11_double-time.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K11 : double-time -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; ~reload.value; "K11 double-time".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k12_breakbeat_irregulier.scd b/sound_algo/palette/rhythm/kicks/_demo_k12_breakbeat_irregulier.scd new file mode 100644 index 0000000..924a218 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k12_breakbeat_irregulier.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K12 : breakbeat irregulier -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,1, 0,0,0,0, 0,0,1,0, 0,0,1,0 ]; ~reload.value; "K12 breakbeat irreg".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k13_amen_break_kick_pattern.scd b/sound_algo/palette/rhythm/kicks/_demo_k13_amen_break_kick_pattern.scd new file mode 100644 index 0000000..cfe1cf6 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k13_amen_break_kick_pattern.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K13 : amen break kick pattern -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 ]; ~reload.value; "K13 amen break".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k14_gabber_tres_dense.scd b/sound_algo/palette/rhythm/kicks/_demo_k14_gabber_tres_dense.scd new file mode 100644 index 0000000..cd7c559 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k14_gabber_tres_dense.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K14 : gabber tres dense -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1 ]; ~reload.value; "K14 gabber dense".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k15_hardstyle.scd b/sound_algo/palette/rhythm/kicks/_demo_k15_hardstyle.scd new file mode 100644 index 0000000..33547c3 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k15_hardstyle.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K15 : hardstyle -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0 ]; ~reload.value; "K15 hardstyle".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k16_techno_minimaliste_avec_kick_fantome.scd b/sound_algo/palette/rhythm/kicks/_demo_k16_techno_minimaliste_avec_kick_fantome.scd new file mode 100644 index 0000000..88e8fba --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k16_techno_minimaliste_avec_kick_fantome.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K16 : techno minimaliste avec kick fantome -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0 ]; ~reload.value; "K16 techno minimal".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k17_trance_kick_gros_ghost_16.scd b/sound_algo/palette/rhythm/kicks/_demo_k17_trance_kick_gros_ghost_16.scd new file mode 100644 index 0000000..c2879a7 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k17_trance_kick_gros_ghost_16.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K17 : trance kick gros + ghost 16 -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,1 ]; ~reload.value; "K17 trance".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k18_house_44_classique.scd b/sound_algo/palette/rhythm/kicks/_demo_k18_house_44_classique.scd new file mode 100644 index 0000000..4fcaacd --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k18_house_44_classique.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K18 : house 4/4 classique -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; ~reload.value; "K18 house".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k19_electro_syncope.scd b/sound_algo/palette/rhythm/kicks/_demo_k19_electro_syncope.scd new file mode 100644 index 0000000..b1e9fc5 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k19_electro_syncope.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K19 : electro syncope -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,1, 0,0,0,0, 1,0,0,0, 0,0,1,0 ]; ~reload.value; "K19 electro".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k1_4-on-the-floor.scd b/sound_algo/palette/rhythm/kicks/_demo_k1_4-on-the-floor.scd new file mode 100644 index 0000000..795f1f7 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k1_4-on-the-floor.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K1 : 4-on-the-floor -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; ~reload.value; "K1 4/4".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k20_trip-hop_lazy_kick.scd b/sound_algo/palette/rhythm/kicks/_demo_k20_trip-hop_lazy_kick.scd new file mode 100644 index 0000000..60a3709 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k20_trip-hop_lazy_kick.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K20 : trip-hop lazy kick -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0 ]; ~reload.value; "K20 trip-hop".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k21_jungle_rapid_breakbeat.scd b/sound_algo/palette/rhythm/kicks/_demo_k21_jungle_rapid_breakbeat.scd new file mode 100644 index 0000000..1b1ed6a --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k21_jungle_rapid_breakbeat.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K21 : jungle rapid breakbeat -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0 ]; ~reload.value; "K21 jungle".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k22_reggae_dub_one-drop.scd b/sound_algo/palette/rhythm/kicks/_demo_k22_reggae_dub_one-drop.scd new file mode 100644 index 0000000..d42c891 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k22_reggae_dub_one-drop.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K22 : reggae / dub one-drop -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; ~reload.value; "K22 one-drop".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k23_afrobeat_polyrythmique.scd b/sound_algo/palette/rhythm/kicks/_demo_k23_afrobeat_polyrythmique.scd new file mode 100644 index 0000000..3ebe11c --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k23_afrobeat_polyrythmique.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K23 : afrobeat polyrythmique -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,1, 0,1,0,0, 1,0,1,0, 0,1,0,0 ]; ~reload.value; "K23 afrobeat".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k24_garage_2-step.scd b/sound_algo/palette/rhythm/kicks/_demo_k24_garage_2-step.scd new file mode 100644 index 0000000..d67b14e --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k24_garage_2-step.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K24 : garage 2-step -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0 ]; ~reload.value; "K24 2-step".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k25_footwork_juke.scd b/sound_algo/palette/rhythm/kicks/_demo_k25_footwork_juke.scd new file mode 100644 index 0000000..eebfbc9 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k25_footwork_juke.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K25 : footwork / juke -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0 ]; ~reload.value; "K25 footwork".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k2_techno_syncope.scd b/sound_algo/palette/rhythm/kicks/_demo_k2_techno_syncope.scd new file mode 100644 index 0000000..11841c0 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k2_techno_syncope.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K2 : techno syncope -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; ~reload.value; "K2 syncope".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k3_gabber_double-temps.scd b/sound_algo/palette/rhythm/kicks/_demo_k3_gabber_double-temps.scd new file mode 100644 index 0000000..3ef7762 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k3_gabber_double-temps.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K3 : gabber double-temps -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; ~reload.value; "K3 gabber".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k4_dembow_latin.scd b/sound_algo/palette/rhythm/kicks/_demo_k4_dembow_latin.scd new file mode 100644 index 0000000..ba3b627 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k4_dembow_latin.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K4 : dembow / latin -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,1, 0,0,1,0, 1,0,0,1, 0,0,1,0 ]; ~reload.value; "K4 dembow".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k5_half-time.scd b/sound_algo/palette/rhythm/kicks/_demo_k5_half-time.scd new file mode 100644 index 0000000..e19ccb8 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k5_half-time.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K5 : half-time -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; ~reload.value; "K5 half-time".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k6_breakbeat.scd b/sound_algo/palette/rhythm/kicks/_demo_k6_breakbeat.scd new file mode 100644 index 0000000..4d45b87 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k6_breakbeat.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K6 : breakbeat -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0 ]; ~reload.value; "K6 breakbeat".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k7_techno_triplet_feel.scd b/sound_algo/palette/rhythm/kicks/_demo_k7_techno_triplet_feel.scd new file mode 100644 index 0000000..6b8e4f4 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k7_techno_triplet_feel.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K7 : techno triplet feel -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,1 ]; ~reload.value; "K7 triplet feel".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k8_minimal_--_1_kick_par_mesure.scd b/sound_algo/palette/rhythm/kicks/_demo_k8_minimal_--_1_kick_par_mesure.scd new file mode 100644 index 0000000..f23bbeb --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k8_minimal_--_1_kick_par_mesure.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K8 : minimal -- 1 kick par mesure -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ]; ~reload.value; "K8 minimal".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_k9_4-on-floor_ghost_offbeat.scd b/sound_algo/palette/rhythm/kicks/_demo_k9_4-on-floor_ghost_offbeat.scd new file mode 100644 index 0000000..afa7529 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_k9_4-on-floor_ghost_offbeat.scd @@ -0,0 +1,4 @@ +// ========================================================= +// K9 : 4-on-floor + ghost offbeat -- extrait de kicks.scd +// ========================================================= +( ~kickSteps = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; ~reload.value; "K9 minimal ghost".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t10_gabber_distorded.scd b/sound_algo/palette/rhythm/kicks/_demo_t10_gabber_distorded.scd new file mode 100644 index 0000000..256ed73 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t10_gabber_distorded.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T10 : gabber distorded -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 62; ~kickPitchAmt = 5.5; ~kickDecay = 0.22; + ~kickDrive = 4.5; ~kickClick = 0.5; + ~reload.value; "T10 gabber distorded".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t11_breakcore.scd b/sound_algo/palette/rhythm/kicks/_demo_t11_breakcore.scd new file mode 100644 index 0000000..29bac2f --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t11_breakcore.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T11 : breakcore -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 80; ~kickPitchAmt = 4.0; ~kickDecay = 0.10; + ~kickDrive = 2.5; ~kickClick = 0.6; + ~reload.value; "T11 breakcore".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t12_dub_kick.scd b/sound_algo/palette/rhythm/kicks/_demo_t12_dub_kick.scd new file mode 100644 index 0000000..f089d88 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t12_dub_kick.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T12 : dub kick -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 40; ~kickPitchAmt = 1.5; ~kickDecay = 0.95; + ~kickDrive = 1.0; ~kickClick = 0.03; + ~reload.value; "T12 dub kick".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t1_kick_rond_defaut_--_techno_classique.scd b/sound_algo/palette/rhythm/kicks/_demo_t1_kick_rond_defaut_--_techno_classique.scd new file mode 100644 index 0000000..6cbb938 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t1_kick_rond_defaut_--_techno_classique.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T1 : kick rond (defaut) -- techno classique -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.3; ~kickClick = 0.2; + ~reload.value; "T1 rond".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t2_kick_claquant_--_snare-like_drive_plus_haut.scd b/sound_algo/palette/rhythm/kicks/_demo_t2_kick_claquant_--_snare-like_drive_plus_haut.scd new file mode 100644 index 0000000..42a9862 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t2_kick_claquant_--_snare-like_drive_plus_haut.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T2 : kick claquant -- snare-like, drive plus haut -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 65; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.45; + ~reload.value; "T2 claquant".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t3_kick_boomy_--_queue_longue_sub_fort_peu_de_click.scd b/sound_algo/palette/rhythm/kicks/_demo_t3_kick_boomy_--_queue_longue_sub_fort_peu_de_click.scd new file mode 100644 index 0000000..c661c55 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t3_kick_boomy_--_queue_longue_sub_fort_peu_de_click.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T3 : kick boomy -- queue longue, sub fort, peu de click -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.6; + ~kickDrive = 1.2; ~kickClick = 0.08; + ~reload.value; "T3 boomy".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t4_kick_distordu_--_gabberhardcore.scd b/sound_algo/palette/rhythm/kicks/_demo_t4_kick_distordu_--_gabberhardcore.scd new file mode 100644 index 0000000..df8a497 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t4_kick_distordu_--_gabberhardcore.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T4 : kick distordu -- gabber/hardcore -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~reload.value; "T4 distordu".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t5_kick_sub_deep_--_pour_dub_techno_minimal.scd b/sound_algo/palette/rhythm/kicks/_demo_t5_kick_sub_deep_--_pour_dub_techno_minimal.scd new file mode 100644 index 0000000..bfb02b3 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t5_kick_sub_deep_--_pour_dub_techno_minimal.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T5 : kick sub deep -- pour dub / techno minimal -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 42; ~kickPitchAmt = 2.0; ~kickDecay = 0.5; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~reload.value; "T5 sub deep".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t6_kick_punchy_--_tres_tight_snappy_attack.scd b/sound_algo/palette/rhythm/kicks/_demo_t6_kick_punchy_--_tres_tight_snappy_attack.scd new file mode 100644 index 0000000..98346c1 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t6_kick_punchy_--_tres_tight_snappy_attack.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T6 : kick punchy -- tres tight, snappy attack -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 70; ~kickPitchAmt = 3.5; ~kickDecay = 0.22; + ~kickDrive = 2.0; ~kickClick = 0.35; + ~reload.value; "T6 punchy".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t7_clap-style.scd b/sound_algo/palette/rhythm/kicks/_demo_t7_clap-style.scd new file mode 100644 index 0000000..47b1508 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t7_clap-style.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T7 : clap-style -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 75; ~kickPitchAmt = 4.5; ~kickDecay = 0.16; + ~kickDrive = 1.5; ~kickClick = 0.55; + ~reload.value; "T7 clap-style".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t8_909_vintage.scd b/sound_algo/palette/rhythm/kicks/_demo_t8_909_vintage.scd new file mode 100644 index 0000000..d2b12cb --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t8_909_vintage.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T8 : 909 vintage -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.45; + ~kickDrive = 1.1; ~kickClick = 0.12; + ~reload.value; "T8 909 vintage".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_demo_t9_808_boom.scd b/sound_algo/palette/rhythm/kicks/_demo_t9_808_boom.scd new file mode 100644 index 0000000..1f230f5 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_demo_t9_808_boom.scd @@ -0,0 +1,6 @@ +// ========================================================= +// T9 : 808 boom -- extrait de kicks.scd +// ========================================================= +( ~kickFreq = 38; ~kickPitchAmt = 1.8; ~kickDecay = 0.85; + ~kickDrive = 1.0; ~kickClick = 0.04; + ~reload.value; "T9 808 boom".postln; ) diff --git a/sound_algo/palette/rhythm/kicks/_stockage_kicks.scd b/sound_algo/palette/rhythm/kicks/_stockage_kicks.scd new file mode 100644 index 0000000..12858c3 --- /dev/null +++ b/sound_algo/palette/rhythm/kicks/_stockage_kicks.scd @@ -0,0 +1,57 @@ +// ========================================================= +// par sequences.scd. -- extrait de kicks.scd +// ========================================================= +( +// --- 4-on-floor classique ------------------------------------------- +~kK1 = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; +// --- techno syncope (8th deplaces) ---------------------------------- +~kK2 = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; +// --- gabber double-temps (toutes 8th notes) ------------------------- +~kK3 = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; +// --- dembow / latin (1 + 1+e + 3 + 3+e) ----------------------------- +~kK4 = [ 1,0,0,1, 0,0,1,0, 1,0,0,1, 0,0,1,0 ]; +// --- half-time (1 et 9 -- dubstep / phonk / hip-hop) ---------------- +~kK5 = [ 1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; +// --- breakbeat amen-like -------------------------------------------- +~kK6 = [ 1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0 ]; +// --- techno triplet feel (3 over 4) --------------------------------- +~kK7 = [ 1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,1 ]; +// --- minimal -- 1 kick par mesure (downtempo) ----------------------- +~kK8 = [ 1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ]; + +// --- 4-on-floor + ghost offbeat (techno minimal) -------------------- +~kK9 = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0 ]; +// --- 4-on-floor syncope avancee ------------------------------------- +~kK10 = [ 1,0,1,0, 1,0,0,1, 1,0,1,0, 1,0,1,1 ]; +// --- double-time (1, 5, 9, 13 + 3, 7, 11, 15) ----------------------- +~kK11 = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; +// --- breakbeat (drum'n'bass / jungle base) -------------------------- +~kK12 = [ 1,0,0,1, 0,0,0,0, 0,0,1,0, 0,0,1,0 ]; +// --- amen break kick pattern (jungle origine) ----------------------- +~kK13 = [ 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 ]; +// --- gabber dense (kick sur tous 16th) ------------------------------ +~kK14 = [ 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1 ]; +// --- hardstyle (kick + reverse + tail simulee) ---------------------- +~kK15 = [ 1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0 ]; +// --- techno minimal kick fantome ------------------------------------ +~kK16 = [ 1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0 ]; +// --- trance gros kick (4/4 punchy + ghost 16) ----------------------- +~kK17 = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,1 ]; +// --- house classique (kick 4/4 + offbeat hat impl) ------------------ +~kK18 = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; +// --- electro syncope ------------------------------------------------ +~kK19 = [ 1,0,0,1, 0,0,0,0, 1,0,0,0, 0,0,1,0 ]; +// --- trip-hop lazy -------------------------------------------------- +~kK20 = [ 1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0 ]; +// --- jungle rapid breakbeat ----------------------------------------- +~kK21 = [ 1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0 ]; +// --- reggae / dub one-drop (kick sur 3) ----------------------------- +~kK22 = [ 0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; +// --- afrobeat (kick polyrhythmique) --------------------------------- +~kK23 = [ 1,0,0,1, 0,1,0,0, 1,0,1,0, 0,1,0,0 ]; +// --- garage 2-step -------------------------------------------------- +~kK24 = [ 1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0 ]; +// --- footwork / juke (160 BPM, kick triple) ------------------------- +~kK25 = [ 1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0 ]; +"=== kicks : 25 patterns stockes dans ~kK1..~kK25 ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre.scd b/sound_algo/palette/rhythm/patterns_genre.scd new file mode 100644 index 0000000..bd363b2 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre.scd @@ -0,0 +1,579 @@ +// ===================================================================== +// patterns_genre.scd -- Patterns rythmiques signature par genre +// (issus de la deep recherche musicologique) +// +// Chaque preset charge kick/hat/snare/clap/perc en alignement +// authentique au genre. Cmd+Entree = applique le pattern complet. +// ===================================================================== + + + +// ===================================================================== +// ACID TECHNO (135-150) -- 4-on-floor + hihat shuffle 16ths +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=55;~kickPitchAmt=3.0;~kickDecay=0.32;~kickDrive=1.4;~kickClick=0.22; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.13; // shuffle +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.35; // discret +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percSteps = (0!16); +~reload.value; "=== ACID TECHNO 135-150 BPM ===".postln; +) + +// ===================================================================== +// HARD TECHNO (140-148) -- kick punchy distorted + hat 16ths rapide +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=60;~kickPitchAmt=4.5;~kickDecay=0.28;~kickDrive=3.0;~kickClick=0.32; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.14; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.5; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.4; +~percSteps = (0!16); +~reload.value; "=== HARD TECHNO 140-148 BPM ===".postln; +) + +// ===================================================================== +// HYPNOTIC TECHNO (128-135) -- kick discret + ghost snare lointain +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq=50;~kickPitchAmt=2.5;~kickDecay=0.35;~kickDrive=1.0;~kickClick=0.08; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; // tres discret +~snareSteps = (0!16); +~clapSteps = (0!16); +~percSteps = [0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,1,0]; ~percAmp = 0.15; // ghost +~reload.value; "=== HYPNOTIC TECHNO 128-135 BPM ===".postln; +) + +// ===================================================================== +// DUBSTEP (140 half-time) -- kick on 1, snare on 3 (ressenti 70 BPM) +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.6; +~kickFreq=48;~kickPitchAmt=3.5;~kickDecay=0.5;~kickDrive=1.5;~kickClick=0.15; +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.10; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~snareFreq=220;~snareNoiseAmt=0.7;~snareDecay=0.18; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== DUBSTEP 140 BPM half-time ===".postln; +) + +// ===================================================================== +// UPLIFTING TRANCE (138) -- kick 4/4 + offbeat bass + clap 2&4 +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=55;~kickPitchAmt=3.2;~kickDecay=0.28;~kickDrive=1.5;~kickClick=0.20; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; +~percSteps = (0!16); +~reload.value; "=== UPLIFTING TRANCE 138 BPM ===".postln; +) + +// ===================================================================== +// DETROIT TECHNO (124) -- 909 swing 56% + ghost notes +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0]; ~kickAmp = 0.5; // ghost +~kickFreq=52;~kickPitchAmt=2.8;~kickDecay=0.32;~kickDrive=1.3;~kickClick=0.16; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.13; // shuffle +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.32; // ghost claps +~percSteps = (0!16); +~reload.value; "=== DETROIT TECHNO 124 BPM swing ===".postln; +) + +// ===================================================================== +// LIQUID DNB (174) -- amen feel + ghost notes +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=55;~kickPitchAmt=4.0;~kickDecay=0.18;~kickDrive=1.5;~kickClick=0.30; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq=240;~snareNoiseAmt=0.7;~snareDecay=0.10; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== LIQUID DNB 174 BPM amen ===".postln; +) + +// ===================================================================== +// NEUROFUNK (174) -- breakbeat complex + 32th rolls +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,1]; ~kickAmp = 0.55; +~kickFreq=58;~kickPitchAmt=4.5;~kickDecay=0.15;~kickDrive=2.0;~kickClick=0.4; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.14; +~snareSteps = [0,0,0,1, 1,0,0,0, 0,1,0,0, 1,0,1,1]; ~snareAmp = 0.55; +~snareFreq=260;~snareNoiseAmt=0.75;~snareDecay=0.08; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== NEUROFUNK DNB 174 BPM ===".postln; +) + +// ===================================================================== +// FUTURE GARAGE (130-140) -- 2-step syncope, kick irregulier +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=48;~kickPitchAmt=2.5;~kickDecay=0.5;~kickDrive=1.2;~kickClick=0.10; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.10; // skippy +~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,1,0,0]; ~snareAmp = 0.3; // sparse +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.32; +~percSteps = (0!16); +~reload.value; "=== FUTURE GARAGE 2-STEP ===".postln; +) + +// ===================================================================== +// HARDCORE GABBER (180) -- kick gabber distorted intense, hihat absent +// ===================================================================== +( +~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.65; +~kickFreq=60;~kickPitchAmt=5.0;~kickDecay=0.18;~kickDrive=4.0;~kickClick=0.35; +~hatSteps = (0!16); ~hatAmp = 0; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== HARDCORE GABBER 180 BPM ===".postln; +) + +// ===================================================================== +// PHONK (130 half-time) -- cowbell Memphis + 808 + trap hats +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=42;~kickPitchAmt=2.5;~kickDecay=0.6;~kickDrive=1.3;~kickClick=0.10; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.10; // trap triplets +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; +~percInst = \cowbell; ~cowbellFreq = 800; +~percSteps = [0,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.32; +~reload.value; "=== PHONK 130 BPM ===".postln; +) + +// ===================================================================== +// TRIBAL ETHNO (100-128) -- toms polyrhythm 3:4 +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.45; +~kickFreq=48;~kickPitchAmt=2.2;~kickDecay=0.4;~kickDrive=1.1;~kickClick=0.08; +~hatSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,1,0,0]; ~hatAmp = 0.08; // organique +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 90; +~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; ~percAmp = 0.4; +~reload.value; "=== TRIBAL ETHNO 100 BPM ===".postln; +) + +// ===================================================================== +// AMBIENT CINEMATIC (60-80) -- percussions ultra rares + tom solitaire +// ===================================================================== +( +~kickSteps = (0!16); ~kickAmp = 0; +~hatSteps = (0!16); +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 60; +~percSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~percAmp = 0.3; +~reload.value; "=== AMBIENT CINEMATIC -- pas de kick ===".postln; +) + +// ===================================================================== +// CHIPTUNE 8-BIT (150) -- kick triangle sharp, noise burst +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq=80;~kickPitchAmt=4.5;~kickDecay=0.12;~kickDrive=1.4;~kickClick=0.5; // chip kick +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.12; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.40; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== CHIPTUNE 8-BIT 150 BPM ===".postln; +) + +// ===================================================================== +// SYNTHWAVE 80s (100) -- kick + LinnDrum gated snare + hat 8ths +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=55;~kickPitchAmt=3.0;~kickDecay=0.3;~kickDrive=1.2;~kickClick=0.18; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; // gated +~snareFreq=180;~snareNoiseAmt=0.55;~snareDecay=0.20; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; // doubl +~percSteps = (0!16); +~reload.value; "=== SYNTHWAVE 100 BPM ===".postln; +) + +// ===================================================================== +// INDUSTRIAL TECHNO (140-160) -- kick hard distorded + metal hits +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=60;~kickPitchAmt=5.0;~kickDecay=0.28;~kickDrive=3.5;~kickClick=0.4; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.13; // breakbeat +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.4; +~reload.value; "=== INDUSTRIAL TECHNO ===".postln; +) + +// ===================================================================== +// DUB TECHNO (126-130) -- kick muffle + clap echo dub +// ===================================================================== +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq=48;~kickPitchAmt=2.3;~kickDecay=0.45;~kickDrive=1.0;~kickClick=0.06; // muffled +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 0,1,0,0, 0,0,0,0, 0,1,0,0]; ~clapAmp = 0.25; // delay +~percSteps = (0!16); +~reload.value; "=== DUB TECHNO 126 BPM ===".postln; +) + +// ===================================================================== +// GLITCH IDM (variable) -- patterns generes aleatoires +// ===================================================================== +( +~kickSteps = ~genKickPattern.(0.4); +~snareSteps = ~genKickPattern.(0.3); +~hatSteps = ~genKickPattern.(0.7); +~clapSteps = ~genKickPattern.(0.2); +~percSteps = ~genKickPattern.(0.4); +~kickFreq=55;~kickPitchAmt=3.5;~kickDecay=0.18;~kickDrive=2.0;~kickClick=0.3; +~kickAmp = 0.5; ~hatAmp = 0.12; ~snareAmp = 0.45; ~clapAmp = 0.3; ~percAmp = 0.3; +~reload.value; "=== GLITCH IDM random ===".postln; +) + +// ===================================================================== +// DRONE DOOM (60) -- kick massif espace + crash long +// ===================================================================== +( +~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~kickAmp = 0.6; +~kickFreq=40;~kickPitchAmt=2.0;~kickDecay=0.8;~kickDrive=2.0;~kickClick=0.04; +~hatSteps = (0!16); +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 50; +~percSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~percAmp = 0.4; +~reload.value; "=== DRONE DOOM 60 BPM ===".postln; +) + + + +// ===================================================================== +// ===== 21 GENRES SUPPLEMENTAIRES (deuxieme batch) ================= +// ===================================================================== + + + +// ===================================================================== +// HARD TECHNO BERLIN (140-145) -- 4/4 hard kick + open hat sustain +// ===================================================================== +( +~bpm = 142; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.62; +~kickFreq=62;~kickPitchAmt=4.8;~kickDecay=0.26;~kickDrive=3.2;~kickClick=0.36; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.5; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.40; +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.20; +~reload.value; "=== HARD TECHNO BERLIN 142 BPM ===".postln; +) + +// ===================================================================== +// ACID HOUSE 88 BPM (Chicago classique) +// ===================================================================== +( +~bpm = 88; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; +~kickFreq=50;~kickPitchAmt=2.8;~kickDecay=0.38;~kickDrive=1.2;~kickClick=0.10; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.12; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.34; +~percSteps = (0!16); +~reload.value; "=== ACID HOUSE 88 BPM ===".postln; +) + +// ===================================================================== +// TRANCE 138 UPLIFTING (variation grand kick + clap reverb) +// ===================================================================== +( +~bpm = 138; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.58; +~kickFreq=55;~kickPitchAmt=3.5;~kickDecay=0.30;~kickDrive=1.6;~kickClick=0.22; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.42; +~percSteps = [0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,0,1]; ~percAmp = 0.18; +~percInst = \rim; +~reload.value; "=== TRANCE 138 UPLIFTING (V2) ===".postln; +) + +// ===================================================================== +// PSY TRANCE 145 (basse offbeat + kick punchy + hat dense) +// ===================================================================== +( +~bpm = 145; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=58;~kickPitchAmt=4.0;~kickDecay=0.22;~kickDrive=1.8;~kickClick=0.28; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.16; +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.25; +~reload.value; "=== PSY TRANCE 145 BPM ===".postln; +) + +// ===================================================================== +// GOA TRANCE 145 (psy roots, 16th notes acid) +// ===================================================================== +( +~bpm = 145; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=56;~kickPitchAmt=3.5;~kickDecay=0.25;~kickDrive=1.5;~kickClick=0.22; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 100; +~percSteps = [0,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.30; +~reload.value; "=== GOA TRANCE 145 BPM ===".postln; +) + +// ===================================================================== +// HARDSTYLE 150 (kick gabber + reverse kick simulee + clap large) +// ===================================================================== +( +~bpm = 150; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0]; ~kickAmp = 0.65; +~kickFreq=62;~kickPitchAmt=5.5;~kickDecay=0.30;~kickDrive=4.0;~kickClick=0.45; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.45; +~percSteps = (0!16); +~reload.value; "=== HARDSTYLE 150 BPM ===".postln; +) + +// ===================================================================== +// HANDS UP TRANCE 150 (eurodance moderne, clap large) +// ===================================================================== +( +~bpm = 150; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=58;~kickPitchAmt=3.8;~kickDecay=0.26;~kickDrive=1.6;~kickClick=0.25; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.20; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.45; +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.22; +~reload.value; "=== HANDS UP TRANCE 150 BPM ===".postln; +) + +// ===================================================================== +// LIQUID DNB 174 (alt) -- amen smooth + ghost note + open hat +// ===================================================================== +( +~bpm = 174; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=52;~kickPitchAmt=3.5;~kickDecay=0.20;~kickDrive=1.3;~kickClick=0.25; +~hatSteps = [1,0,1,1, 0,1,0,1, 1,0,1,1, 0,1,0,1]; ~hatAmp = 0.11; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; +~snareFreq=220;~snareNoiseAmt=0.55;~snareDecay=0.13; +~clapSteps = (0!16); +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== LIQUID DNB 174 BPM (V2) ===".postln; +) + +// ===================================================================== +// NEUROFUNK DNB 174 (alt) -- snare reese + breakbeat hard +// ===================================================================== +( +~bpm = 174; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,1, 0,0,1,0, 0,0,1,1, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=60;~kickPitchAmt=4.8;~kickDecay=0.14;~kickDrive=2.2;~kickClick=0.42; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,0,1, 1,1,1,0]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,1, 1,0,0,0, 0,1,0,0, 1,0,1,1]; ~snareAmp = 0.6; +~snareFreq=270;~snareNoiseAmt=0.8;~snareDecay=0.07; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== NEUROFUNK DNB 174 BPM (V2) ===".postln; +) + +// ===================================================================== +// JUNGLE 165 (chopped breakbeat + ragga rim) +// ===================================================================== +( +~bpm = 165; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=55;~kickPitchAmt=3.5;~kickDecay=0.20;~kickDrive=1.6;~kickClick=0.32; +~hatSteps = [1,1,0,1, 1,0,1,1, 1,1,0,1, 1,0,1,1]; ~hatAmp = 0.12; +~snareSteps = [0,0,0,0, 1,0,1,0, 0,0,0,1, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq=220;~snareNoiseAmt=0.7;~snareDecay=0.10; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.30; +~reload.value; "=== JUNGLE 165 BPM ===".postln; +) + +// ===================================================================== +// DRUM & BASS JUMP-UP 174 (kick funky + snare bouncy) +// ===================================================================== +( +~bpm = 174; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,1,1,0, 0,0,1,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=58;~kickPitchAmt=4.2;~kickDecay=0.18;~kickDrive=1.8;~kickClick=0.35; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~snareFreq=240;~snareNoiseAmt=0.7;~snareDecay=0.10; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== DNB JUMP-UP 174 BPM ===".postln; +) + +// ===================================================================== +// FUTURE BASS 150 (half-time, snare large, hat trap) +// ===================================================================== +( +~bpm = 150; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.55; +~kickFreq=48;~kickPitchAmt=3.0;~kickDecay=0.45;~kickDrive=1.4;~kickClick=0.15; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.10; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~snareFreq=210;~snareNoiseAmt=0.6;~snareDecay=0.20; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,0,0,1]; ~percAmp = 0.18; +~reload.value; "=== FUTURE BASS 150 BPM ===".postln; +) + +// ===================================================================== +// DEEP HOUSE 122 (kick warm + clap soft + hat shuffled) +// ===================================================================== +( +~bpm = 122; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; +~kickFreq=48;~kickPitchAmt=2.5;~kickDecay=0.40;~kickDrive=1.1;~kickClick=0.10; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.16; +~reload.value; "=== DEEP HOUSE 122 BPM ===".postln; +) + +// ===================================================================== +// TECH HOUSE 126 (groove tight + hat 16th + clap tight) +// ===================================================================== +( +~bpm = 126; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=52;~kickPitchAmt=2.8;~kickDecay=0.32;~kickDrive=1.3;~kickClick=0.18; +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.15; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.34; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,0,0,1]; ~percAmp = 0.22; +~reload.value; "=== TECH HOUSE 126 BPM ===".postln; +) + +// ===================================================================== +// PROGRESSIVE HOUSE 124 (kick pad + clap echo + hat air) +// ===================================================================== +( +~bpm = 124; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.52; +~kickFreq=50;~kickPitchAmt=2.6;~kickDecay=0.36;~kickDrive=1.2;~kickClick=0.12; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.20; +~reload.value; "=== PROGRESSIVE HOUSE 124 BPM ===".postln; +) + +// ===================================================================== +// TRIBAL TECHNO 130 (toms layered + kick warm + percussions dense) +// ===================================================================== +( +~bpm = 130; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; +~kickFreq=50;~kickPitchAmt=2.6;~kickDecay=0.34;~kickDrive=1.2;~kickClick=0.12; +~hatSteps = [0,0,1,0, 0,1,0,1, 0,0,1,0, 0,1,0,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 95; +~percSteps = [1,0,0,1, 0,1,1,0, 1,0,0,1, 0,1,1,0]; ~percAmp = 0.40; +~reload.value; "=== TRIBAL TECHNO 130 BPM ===".postln; +) + +// ===================================================================== +// INDUSTRIAL 145 (alt sombre, perc clang) +// ===================================================================== +( +~bpm = 145; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,1,0, 1,0,0,0, 1,0,1,0]; ~kickAmp = 0.62; +~kickFreq=62;~kickPitchAmt=5.2;~kickDecay=0.28;~kickDrive=3.8;~kickClick=0.42; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~snareFreq=270;~snareNoiseAmt=0.85;~snareDecay=0.08; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [1,0,0,1, 1,0,1,0, 1,0,0,1, 1,0,1,1]; ~percAmp = 0.45; +~reload.value; "=== INDUSTRIAL 145 BPM (V2) ===".postln; +) + +// ===================================================================== +// BREAKCORE 200+ (kick hyperdense + breakbeat + snare metallic) +// ===================================================================== +( +~bpm = 200; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,1,0,1]; ~kickAmp = 0.55; +~kickFreq=80;~kickPitchAmt=4.0;~kickDecay=0.10;~kickDrive=2.5;~kickClick=0.6; +~hatSteps = [1,1,1,1, 1,0,1,1, 1,1,0,1, 1,1,1,1]; ~hatAmp = 0.12; +~snareSteps = [0,1,0,1, 0,0,1,1, 1,0,0,1, 0,1,1,0]; ~snareAmp = 0.55; +~snareFreq=290;~snareNoiseAmt=0.85;~snareDecay=0.06; +~clapSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~clapAmp = 0.30; +~percSteps = (0!16); +~reload.value; "=== BREAKCORE 200 BPM ===".postln; +) + +// ===================================================================== +// FOOTWORK 160 (juke triplet kick + clap stutter) +// ===================================================================== +( +~bpm = 160; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0]; ~kickAmp = 0.55; +~kickFreq=42;~kickPitchAmt=2.4;~kickDecay=0.50;~kickDrive=1.3;~kickClick=0.10; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = [0,0,0,1, 1,0,0,0, 0,0,0,1, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = [0,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,0,1]; ~percAmp = 0.22; +~reload.value; "=== FOOTWORK 160 BPM ===".postln; +) + +// ===================================================================== +// IDM (intelligent dance music, variable, glitchy random) +// ===================================================================== +( +~bpm = 130; TempoClock.default.tempo = ~bpm/60; +~kickSteps = ~genKickPattern.(0.35); +~snareSteps = ~genKickPattern.(0.25); +~hatSteps = ~genKickPattern.(0.65); +~clapSteps = ~genKickPattern.(0.18); +~percSteps = ~genKickPattern.(0.40); +~kickFreq=55;~kickPitchAmt=3.2;~kickDecay=0.22;~kickDrive=1.8;~kickClick=0.28; +~kickAmp = 0.5; ~hatAmp = 0.12; ~snareAmp = 0.45; ~clapAmp = 0.28; ~percAmp = 0.30; +~reload.value; "=== IDM (random) ===".postln; +) + +// ===================================================================== +// GLITCH HOP 110 (half-time hip-hop + glitch perc) +// ===================================================================== +( +~bpm = 110; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,0,0,1, 0,0,1,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=45;~kickPitchAmt=2.5;~kickDecay=0.45;~kickDrive=1.3;~kickClick=0.15; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.11; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.50; +~snareFreq=220;~snareNoiseAmt=0.6;~snareDecay=0.12; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = ~genKickPattern.(0.5); ~percAmp = 0.25; +~reload.value; "=== GLITCH HOP 110 BPM ===".postln; +) + diff --git a/sound_algo/palette/rhythm/patterns_genre/acid_house_88_bpm.scd b/sound_algo/palette/rhythm/patterns_genre/acid_house_88_bpm.scd new file mode 100644 index 0000000..fc2c2d1 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/acid_house_88_bpm.scd @@ -0,0 +1,13 @@ +// ========================================================= +// ACID HOUSE 88 BPM -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 88; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; +~kickFreq=50;~kickPitchAmt=2.8;~kickDecay=0.38;~kickDrive=1.2;~kickClick=0.10; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.12; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.34; +~percSteps = (0!16); +~reload.value; "=== ACID HOUSE 88 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/acid_techno_135-150_--_4-on-floor_hihat_shuffle_16ths.scd b/sound_algo/palette/rhythm/patterns_genre/acid_techno_135-150_--_4-on-floor_hihat_shuffle_16ths.scd new file mode 100644 index 0000000..63ca110 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/acid_techno_135-150_--_4-on-floor_hihat_shuffle_16ths.scd @@ -0,0 +1,12 @@ +// ========================================================= +// ACID TECHNO (135-150) -- 4-on-floor + hihat shuffle 16ths -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=55;~kickPitchAmt=3.0;~kickDecay=0.32;~kickDrive=1.4;~kickClick=0.22; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.13; // shuffle +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.35; // discret +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percSteps = (0!16); +~reload.value; "=== ACID TECHNO 135-150 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/ambient_cinematic_60-80_--_percussions_ultra_rares_tom_solitaire.scd b/sound_algo/palette/rhythm/patterns_genre/ambient_cinematic_60-80_--_percussions_ultra_rares_tom_solitaire.scd new file mode 100644 index 0000000..eb372b8 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/ambient_cinematic_60-80_--_percussions_ultra_rares_tom_solitaire.scd @@ -0,0 +1,12 @@ +// ========================================================= +// AMBIENT CINEMATIC (60-80) -- percussions ultra rares + tom solitaire -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = (0!16); ~kickAmp = 0; +~hatSteps = (0!16); +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 60; +~percSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~percAmp = 0.3; +~reload.value; "=== AMBIENT CINEMATIC -- pas de kick ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/breakcore_200.scd b/sound_algo/palette/rhythm/patterns_genre/breakcore_200.scd new file mode 100644 index 0000000..673ffd3 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/breakcore_200.scd @@ -0,0 +1,14 @@ +// ========================================================= +// BREAKCORE 200+ -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 200; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,1,0,1]; ~kickAmp = 0.55; +~kickFreq=80;~kickPitchAmt=4.0;~kickDecay=0.10;~kickDrive=2.5;~kickClick=0.6; +~hatSteps = [1,1,1,1, 1,0,1,1, 1,1,0,1, 1,1,1,1]; ~hatAmp = 0.12; +~snareSteps = [0,1,0,1, 0,0,1,1, 1,0,0,1, 0,1,1,0]; ~snareAmp = 0.55; +~snareFreq=290;~snareNoiseAmt=0.85;~snareDecay=0.06; +~clapSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~clapAmp = 0.30; +~percSteps = (0!16); +~reload.value; "=== BREAKCORE 200 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/chiptune_8-bit_150_--_kick_triangle_sharp_noise_burst.scd b/sound_algo/palette/rhythm/patterns_genre/chiptune_8-bit_150_--_kick_triangle_sharp_noise_burst.scd new file mode 100644 index 0000000..afd8628 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/chiptune_8-bit_150_--_kick_triangle_sharp_noise_burst.scd @@ -0,0 +1,12 @@ +// ========================================================= +// CHIPTUNE 8-BIT (150) -- kick triangle sharp, noise burst -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq=80;~kickPitchAmt=4.5;~kickDecay=0.12;~kickDrive=1.4;~kickClick=0.5; // chip kick +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.12; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.40; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== CHIPTUNE 8-BIT 150 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/deep_house_122.scd b/sound_algo/palette/rhythm/patterns_genre/deep_house_122.scd new file mode 100644 index 0000000..6022d17 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/deep_house_122.scd @@ -0,0 +1,13 @@ +// ========================================================= +// DEEP HOUSE 122 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 122; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; +~kickFreq=48;~kickPitchAmt=2.5;~kickDecay=0.40;~kickDrive=1.1;~kickClick=0.10; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.16; +~reload.value; "=== DEEP HOUSE 122 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/detroit_techno_124_--_909_swing_56_ghost_notes.scd b/sound_algo/palette/rhythm/patterns_genre/detroit_techno_124_--_909_swing_56_ghost_notes.scd new file mode 100644 index 0000000..c1bb90a --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/detroit_techno_124_--_909_swing_56_ghost_notes.scd @@ -0,0 +1,12 @@ +// ========================================================= +// DETROIT TECHNO (124) -- 909 swing 56% + ghost notes -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0]; ~kickAmp = 0.5; // ghost +~kickFreq=52;~kickPitchAmt=2.8;~kickDecay=0.32;~kickDrive=1.3;~kickClick=0.16; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.13; // shuffle +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.32; // ghost claps +~percSteps = (0!16); +~reload.value; "=== DETROIT TECHNO 124 BPM swing ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/drone_doom_60_--_kick_massif_espace_crash_long.scd b/sound_algo/palette/rhythm/patterns_genre/drone_doom_60_--_kick_massif_espace_crash_long.scd new file mode 100644 index 0000000..8fcced3 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/drone_doom_60_--_kick_massif_espace_crash_long.scd @@ -0,0 +1,13 @@ +// ========================================================= +// DRONE DOOM (60) -- kick massif espace + crash long -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~kickAmp = 0.6; +~kickFreq=40;~kickPitchAmt=2.0;~kickDecay=0.8;~kickDrive=2.0;~kickClick=0.04; +~hatSteps = (0!16); +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 50; +~percSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~percAmp = 0.4; +~reload.value; "=== DRONE DOOM 60 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/drum_bass_jump-up_174.scd b/sound_algo/palette/rhythm/patterns_genre/drum_bass_jump-up_174.scd new file mode 100644 index 0000000..aba4df8 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/drum_bass_jump-up_174.scd @@ -0,0 +1,14 @@ +// ========================================================= +// DRUM & BASS JUMP-UP 174 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 174; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,1,1,0, 0,0,1,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=58;~kickPitchAmt=4.2;~kickDecay=0.18;~kickDrive=1.8;~kickClick=0.35; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~snareFreq=240;~snareNoiseAmt=0.7;~snareDecay=0.10; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== DNB JUMP-UP 174 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/dub_techno_126-130_--_kick_muffle_clap_echo_dub.scd b/sound_algo/palette/rhythm/patterns_genre/dub_techno_126-130_--_kick_muffle_clap_echo_dub.scd new file mode 100644 index 0000000..5a478c3 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/dub_techno_126-130_--_kick_muffle_clap_echo_dub.scd @@ -0,0 +1,12 @@ +// ========================================================= +// DUB TECHNO (126-130) -- kick muffle + clap echo dub -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq=48;~kickPitchAmt=2.3;~kickDecay=0.45;~kickDrive=1.0;~kickClick=0.06; // muffled +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 0,1,0,0, 0,0,0,0, 0,1,0,0]; ~clapAmp = 0.25; // delay +~percSteps = (0!16); +~reload.value; "=== DUB TECHNO 126 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/dubstep_140_half-time_--_kick_on_1_snare_on_3.scd b/sound_algo/palette/rhythm/patterns_genre/dubstep_140_half-time_--_kick_on_1_snare_on_3.scd new file mode 100644 index 0000000..7a8cefc --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/dubstep_140_half-time_--_kick_on_1_snare_on_3.scd @@ -0,0 +1,13 @@ +// ========================================================= +// DUBSTEP (140 half-time) -- kick on 1, snare on 3 -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.6; +~kickFreq=48;~kickPitchAmt=3.5;~kickDecay=0.5;~kickDrive=1.5;~kickClick=0.15; +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.10; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~snareFreq=220;~snareNoiseAmt=0.7;~snareDecay=0.18; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== DUBSTEP 140 BPM half-time ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/footwork_160.scd b/sound_algo/palette/rhythm/patterns_genre/footwork_160.scd new file mode 100644 index 0000000..659c0ae --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/footwork_160.scd @@ -0,0 +1,13 @@ +// ========================================================= +// FOOTWORK 160 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 160; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,1, 1,0,0,0, 1,0,1,1, 0,0,1,0]; ~kickAmp = 0.55; +~kickFreq=42;~kickPitchAmt=2.4;~kickDecay=0.50;~kickDrive=1.3;~kickClick=0.10; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = [0,0,0,1, 1,0,0,0, 0,0,0,1, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \rim; ~percSteps = [0,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,0,1]; ~percAmp = 0.22; +~reload.value; "=== FOOTWORK 160 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/future_bass_150.scd b/sound_algo/palette/rhythm/patterns_genre/future_bass_150.scd new file mode 100644 index 0000000..a61f3e6 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/future_bass_150.scd @@ -0,0 +1,14 @@ +// ========================================================= +// FUTURE BASS 150 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 150; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.55; +~kickFreq=48;~kickPitchAmt=3.0;~kickDecay=0.45;~kickDrive=1.4;~kickClick=0.15; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.10; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~snareFreq=210;~snareNoiseAmt=0.6;~snareDecay=0.20; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,0,0,1]; ~percAmp = 0.18; +~reload.value; "=== FUTURE BASS 150 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/future_garage_130-140_--_2-step_syncope_kick_irregulier.scd b/sound_algo/palette/rhythm/patterns_genre/future_garage_130-140_--_2-step_syncope_kick_irregulier.scd new file mode 100644 index 0000000..297322e --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/future_garage_130-140_--_2-step_syncope_kick_irregulier.scd @@ -0,0 +1,12 @@ +// ========================================================= +// FUTURE GARAGE (130-140) -- 2-step syncope, kick irregulier -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=48;~kickPitchAmt=2.5;~kickDecay=0.5;~kickDrive=1.2;~kickClick=0.10; +~hatSteps = [0,1,1,0, 1,1,0,1, 0,1,1,0, 1,1,0,1]; ~hatAmp = 0.10; // skippy +~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,1,0,0]; ~snareAmp = 0.3; // sparse +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.32; +~percSteps = (0!16); +~reload.value; "=== FUTURE GARAGE 2-STEP ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/glitch_hop_110.scd b/sound_algo/palette/rhythm/patterns_genre/glitch_hop_110.scd new file mode 100644 index 0000000..b565877 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/glitch_hop_110.scd @@ -0,0 +1,14 @@ +// ========================================================= +// GLITCH HOP 110 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 110; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,0,0,1, 0,0,1,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=45;~kickPitchAmt=2.5;~kickDecay=0.45;~kickDrive=1.3;~kickClick=0.15; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.11; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.50; +~snareFreq=220;~snareNoiseAmt=0.6;~snareDecay=0.12; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = ~genKickPattern.(0.5); ~percAmp = 0.25; +~reload.value; "=== GLITCH HOP 110 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/glitch_idm_variable_--_patterns_generes_aleatoires.scd b/sound_algo/palette/rhythm/patterns_genre/glitch_idm_variable_--_patterns_generes_aleatoires.scd new file mode 100644 index 0000000..8777c4f --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/glitch_idm_variable_--_patterns_generes_aleatoires.scd @@ -0,0 +1,13 @@ +// ========================================================= +// GLITCH IDM (variable) -- patterns generes aleatoires -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = ~genKickPattern.(0.4); +~snareSteps = ~genKickPattern.(0.3); +~hatSteps = ~genKickPattern.(0.7); +~clapSteps = ~genKickPattern.(0.2); +~percSteps = ~genKickPattern.(0.4); +~kickFreq=55;~kickPitchAmt=3.5;~kickDecay=0.18;~kickDrive=2.0;~kickClick=0.3; +~kickAmp = 0.5; ~hatAmp = 0.12; ~snareAmp = 0.45; ~clapAmp = 0.3; ~percAmp = 0.3; +~reload.value; "=== GLITCH IDM random ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/goa_trance_145.scd b/sound_algo/palette/rhythm/patterns_genre/goa_trance_145.scd new file mode 100644 index 0000000..c639bf2 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/goa_trance_145.scd @@ -0,0 +1,14 @@ +// ========================================================= +// GOA TRANCE 145 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 145; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=56;~kickPitchAmt=3.5;~kickDecay=0.25;~kickDrive=1.5;~kickClick=0.22; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 100; +~percSteps = [0,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.30; +~reload.value; "=== GOA TRANCE 145 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/hands_up_trance_150.scd b/sound_algo/palette/rhythm/patterns_genre/hands_up_trance_150.scd new file mode 100644 index 0000000..8988640 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/hands_up_trance_150.scd @@ -0,0 +1,13 @@ +// ========================================================= +// HANDS UP TRANCE 150 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 150; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=58;~kickPitchAmt=3.8;~kickDecay=0.26;~kickDrive=1.6;~kickClick=0.25; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.20; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.45; +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.22; +~reload.value; "=== HANDS UP TRANCE 150 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/hard_techno_140-148_--_kick_punchy_distorted_hat_16ths_rapide.scd b/sound_algo/palette/rhythm/patterns_genre/hard_techno_140-148_--_kick_punchy_distorted_hat_16ths_rapide.scd new file mode 100644 index 0000000..b6fcc42 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/hard_techno_140-148_--_kick_punchy_distorted_hat_16ths_rapide.scd @@ -0,0 +1,12 @@ +// ========================================================= +// HARD TECHNO (140-148) -- kick punchy distorted + hat 16ths rapide -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=60;~kickPitchAmt=4.5;~kickDecay=0.28;~kickDrive=3.0;~kickClick=0.32; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.14; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.5; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.4; +~percSteps = (0!16); +~reload.value; "=== HARD TECHNO 140-148 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/hard_techno_berlin_140-145_--_44_hard_kick_open_hat_sustain.scd b/sound_algo/palette/rhythm/patterns_genre/hard_techno_berlin_140-145_--_44_hard_kick_open_hat_sustain.scd new file mode 100644 index 0000000..edbd87e --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/hard_techno_berlin_140-145_--_44_hard_kick_open_hat_sustain.scd @@ -0,0 +1,13 @@ +// ========================================================= +// HARD TECHNO BERLIN (140-145) -- 4/4 hard kick + open hat sustain -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 142; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.62; +~kickFreq=62;~kickPitchAmt=4.8;~kickDecay=0.26;~kickDrive=3.2;~kickClick=0.36; +~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.5; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.40; +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.20; +~reload.value; "=== HARD TECHNO BERLIN 142 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/hardcore_gabber_180_--_kick_gabber_distorted_intense_hihat_absent.scd b/sound_algo/palette/rhythm/patterns_genre/hardcore_gabber_180_--_kick_gabber_distorted_intense_hihat_absent.scd new file mode 100644 index 0000000..981ad55 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/hardcore_gabber_180_--_kick_gabber_distorted_intense_hihat_absent.scd @@ -0,0 +1,12 @@ +// ========================================================= +// HARDCORE GABBER (180) -- kick gabber distorted intense, hihat absent -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.65; +~kickFreq=60;~kickPitchAmt=5.0;~kickDecay=0.18;~kickDrive=4.0;~kickClick=0.35; +~hatSteps = (0!16); ~hatAmp = 0; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== HARDCORE GABBER 180 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/hardstyle_150.scd b/sound_algo/palette/rhythm/patterns_genre/hardstyle_150.scd new file mode 100644 index 0000000..7abb5f2 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/hardstyle_150.scd @@ -0,0 +1,13 @@ +// ========================================================= +// HARDSTYLE 150 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 150; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,1, 1,0,0,0, 1,1,0,0]; ~kickAmp = 0.65; +~kickFreq=62;~kickPitchAmt=5.5;~kickDecay=0.30;~kickDrive=4.0;~kickClick=0.45; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.45; +~percSteps = (0!16); +~reload.value; "=== HARDSTYLE 150 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/hypnotic_techno_128-135_--_kick_discret_ghost_snare_lointain.scd b/sound_algo/palette/rhythm/patterns_genre/hypnotic_techno_128-135_--_kick_discret_ghost_snare_lointain.scd new file mode 100644 index 0000000..8e227c4 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/hypnotic_techno_128-135_--_kick_discret_ghost_snare_lointain.scd @@ -0,0 +1,12 @@ +// ========================================================= +// HYPNOTIC TECHNO (128-135) -- kick discret + ghost snare lointain -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; +~kickFreq=50;~kickPitchAmt=2.5;~kickDecay=0.35;~kickDrive=1.0;~kickClick=0.08; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; // tres discret +~snareSteps = (0!16); +~clapSteps = (0!16); +~percSteps = [0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,1,0]; ~percAmp = 0.15; // ghost +~reload.value; "=== HYPNOTIC TECHNO 128-135 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/idm.scd b/sound_algo/palette/rhythm/patterns_genre/idm.scd new file mode 100644 index 0000000..8fd1fa2 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/idm.scd @@ -0,0 +1,14 @@ +// ========================================================= +// IDM -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 130; TempoClock.default.tempo = ~bpm/60; +~kickSteps = ~genKickPattern.(0.35); +~snareSteps = ~genKickPattern.(0.25); +~hatSteps = ~genKickPattern.(0.65); +~clapSteps = ~genKickPattern.(0.18); +~percSteps = ~genKickPattern.(0.40); +~kickFreq=55;~kickPitchAmt=3.2;~kickDecay=0.22;~kickDrive=1.8;~kickClick=0.28; +~kickAmp = 0.5; ~hatAmp = 0.12; ~snareAmp = 0.45; ~clapAmp = 0.28; ~percAmp = 0.30; +~reload.value; "=== IDM (random) ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/industrial_145.scd b/sound_algo/palette/rhythm/patterns_genre/industrial_145.scd new file mode 100644 index 0000000..bbcff0b --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/industrial_145.scd @@ -0,0 +1,14 @@ +// ========================================================= +// INDUSTRIAL 145 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 145; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,1,0, 1,0,0,0, 1,0,1,0]; ~kickAmp = 0.62; +~kickFreq=62;~kickPitchAmt=5.2;~kickDecay=0.28;~kickDrive=3.8;~kickClick=0.42; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~snareFreq=270;~snareNoiseAmt=0.85;~snareDecay=0.08; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [1,0,0,1, 1,0,1,0, 1,0,0,1, 1,0,1,1]; ~percAmp = 0.45; +~reload.value; "=== INDUSTRIAL 145 BPM (V2) ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/industrial_techno_140-160_--_kick_hard_distorded_metal_hits.scd b/sound_algo/palette/rhythm/patterns_genre/industrial_techno_140-160_--_kick_hard_distorded_metal_hits.scd new file mode 100644 index 0000000..5ec7147 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/industrial_techno_140-160_--_kick_hard_distorded_metal_hits.scd @@ -0,0 +1,12 @@ +// ========================================================= +// INDUSTRIAL TECHNO (140-160) -- kick hard distorded + metal hits -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=60;~kickPitchAmt=5.0;~kickDecay=0.28;~kickDrive=3.5;~kickClick=0.4; +~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.13; // breakbeat +~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.4; +~reload.value; "=== INDUSTRIAL TECHNO ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/jungle_165.scd b/sound_algo/palette/rhythm/patterns_genre/jungle_165.scd new file mode 100644 index 0000000..f758bb4 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/jungle_165.scd @@ -0,0 +1,14 @@ +// ========================================================= +// JUNGLE 165 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 165; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,1, 0,1,0,0, 1,0,0,1, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=55;~kickPitchAmt=3.5;~kickDecay=0.20;~kickDrive=1.6;~kickClick=0.32; +~hatSteps = [1,1,0,1, 1,0,1,1, 1,1,0,1, 1,0,1,1]; ~hatAmp = 0.12; +~snareSteps = [0,0,0,0, 1,0,1,0, 0,0,0,1, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq=220;~snareNoiseAmt=0.7;~snareDecay=0.10; +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.30; +~reload.value; "=== JUNGLE 165 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/liquid_dnb_174_--_amen_feel_ghost_notes.scd b/sound_algo/palette/rhythm/patterns_genre/liquid_dnb_174_--_amen_feel_ghost_notes.scd new file mode 100644 index 0000000..df46479 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/liquid_dnb_174_--_amen_feel_ghost_notes.scd @@ -0,0 +1,13 @@ +// ========================================================= +// LIQUID DNB (174) -- amen feel + ghost notes -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=55;~kickPitchAmt=4.0;~kickDecay=0.18;~kickDrive=1.5;~kickClick=0.30; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,0,1]; ~snareAmp = 0.55; +~snareFreq=240;~snareNoiseAmt=0.7;~snareDecay=0.10; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== LIQUID DNB 174 BPM amen ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/liquid_dnb_174_alt_--_amen_smooth_ghost_note_open_hat.scd b/sound_algo/palette/rhythm/patterns_genre/liquid_dnb_174_alt_--_amen_smooth_ghost_note_open_hat.scd new file mode 100644 index 0000000..ed5f93c --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/liquid_dnb_174_alt_--_amen_smooth_ghost_note_open_hat.scd @@ -0,0 +1,14 @@ +// ========================================================= +// LIQUID DNB 174 (alt) -- amen smooth + ghost note + open hat -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 174; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=52;~kickPitchAmt=3.5;~kickDecay=0.20;~kickDrive=1.3;~kickClick=0.25; +~hatSteps = [1,0,1,1, 0,1,0,1, 1,0,1,1, 0,1,0,1]; ~hatAmp = 0.11; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; +~snareFreq=220;~snareNoiseAmt=0.55;~snareDecay=0.13; +~clapSteps = (0!16); +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; +~reload.value; "=== LIQUID DNB 174 BPM (V2) ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/neurofunk_174_--_breakbeat_complex_32th_rolls.scd b/sound_algo/palette/rhythm/patterns_genre/neurofunk_174_--_breakbeat_complex_32th_rolls.scd new file mode 100644 index 0000000..3aafde3 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/neurofunk_174_--_breakbeat_complex_32th_rolls.scd @@ -0,0 +1,13 @@ +// ========================================================= +// NEUROFUNK (174) -- breakbeat complex + 32th rolls -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,1]; ~kickAmp = 0.55; +~kickFreq=58;~kickPitchAmt=4.5;~kickDecay=0.15;~kickDrive=2.0;~kickClick=0.4; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.14; +~snareSteps = [0,0,0,1, 1,0,0,0, 0,1,0,0, 1,0,1,1]; ~snareAmp = 0.55; +~snareFreq=260;~snareNoiseAmt=0.75;~snareDecay=0.08; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== NEUROFUNK DNB 174 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/neurofunk_dnb_174_alt_--_snare_reese_breakbeat_hard.scd b/sound_algo/palette/rhythm/patterns_genre/neurofunk_dnb_174_alt_--_snare_reese_breakbeat_hard.scd new file mode 100644 index 0000000..55355b5 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/neurofunk_dnb_174_alt_--_snare_reese_breakbeat_hard.scd @@ -0,0 +1,14 @@ +// ========================================================= +// NEUROFUNK DNB 174 (alt) -- snare reese + breakbeat hard -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 174; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,1, 0,0,1,0, 0,0,1,1, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=60;~kickPitchAmt=4.8;~kickDecay=0.14;~kickDrive=2.2;~kickClick=0.42; +~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,0,1, 1,1,1,0]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,1, 1,0,0,0, 0,1,0,0, 1,0,1,1]; ~snareAmp = 0.6; +~snareFreq=270;~snareNoiseAmt=0.8;~snareDecay=0.07; +~clapSteps = (0!16); +~percSteps = (0!16); +~reload.value; "=== NEUROFUNK DNB 174 BPM (V2) ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/phonk_130_half-time_--_cowbell_memphis_808_trap_hats.scd b/sound_algo/palette/rhythm/patterns_genre/phonk_130_half-time_--_cowbell_memphis_808_trap_hats.scd new file mode 100644 index 0000000..30910e5 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/phonk_130_half-time_--_cowbell_memphis_808_trap_hats.scd @@ -0,0 +1,13 @@ +// ========================================================= +// PHONK (130 half-time) -- cowbell Memphis + 808 + trap hats -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; ~kickAmp = 0.55; +~kickFreq=42;~kickPitchAmt=2.5;~kickDecay=0.6;~kickDrive=1.3;~kickClick=0.10; +~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~hatAmp = 0.10; // trap triplets +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; +~percInst = \cowbell; ~cowbellFreq = 800; +~percSteps = [0,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.32; +~reload.value; "=== PHONK 130 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/progressive_house_124.scd b/sound_algo/palette/rhythm/patterns_genre/progressive_house_124.scd new file mode 100644 index 0000000..56e47f8 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/progressive_house_124.scd @@ -0,0 +1,13 @@ +// ========================================================= +// PROGRESSIVE HOUSE 124 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 124; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.52; +~kickFreq=50;~kickPitchAmt=2.6;~kickDecay=0.36;~kickDrive=1.2;~kickClick=0.12; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,0,0]; ~clapAmp = 0.32; +~percInst = \openHat; ~percSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.20; +~reload.value; "=== PROGRESSIVE HOUSE 124 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/psy_trance_145.scd b/sound_algo/palette/rhythm/patterns_genre/psy_trance_145.scd new file mode 100644 index 0000000..7dc4da6 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/psy_trance_145.scd @@ -0,0 +1,13 @@ +// ========================================================= +// PSY TRANCE 145 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 145; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.6; +~kickFreq=58;~kickPitchAmt=4.0;~kickDecay=0.22;~kickDrive=1.8;~kickClick=0.28; +~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.16; +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.25; +~reload.value; "=== PSY TRANCE 145 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/synthwave_80s_100_--_kick_linndrum_gated_snare_hat_8ths.scd b/sound_algo/palette/rhythm/patterns_genre/synthwave_80s_100_--_kick_linndrum_gated_snare_hat_8ths.scd new file mode 100644 index 0000000..74f402c --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/synthwave_80s_100_--_kick_linndrum_gated_snare_hat_8ths.scd @@ -0,0 +1,13 @@ +// ========================================================= +// SYNTHWAVE 80s (100) -- kick + LinnDrum gated snare + hat 8ths -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; +~kickFreq=55;~kickPitchAmt=3.0;~kickDecay=0.3;~kickDrive=1.2;~kickClick=0.18; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; +~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.5; // gated +~snareFreq=180;~snareNoiseAmt=0.55;~snareDecay=0.20; +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; // doubl +~percSteps = (0!16); +~reload.value; "=== SYNTHWAVE 100 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/tech_house_126.scd b/sound_algo/palette/rhythm/patterns_genre/tech_house_126.scd new file mode 100644 index 0000000..95e4d29 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/tech_house_126.scd @@ -0,0 +1,13 @@ +// ========================================================= +// TECH HOUSE 126 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 126; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=52;~kickPitchAmt=2.8;~kickDecay=0.32;~kickDrive=1.3;~kickClick=0.18; +~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~hatAmp = 0.15; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.34; +~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,0,0,1]; ~percAmp = 0.22; +~reload.value; "=== TECH HOUSE 126 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/trance_138_uplifting.scd b/sound_algo/palette/rhythm/patterns_genre/trance_138_uplifting.scd new file mode 100644 index 0000000..3ec0ada --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/trance_138_uplifting.scd @@ -0,0 +1,14 @@ +// ========================================================= +// TRANCE 138 UPLIFTING -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 138; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.58; +~kickFreq=55;~kickPitchAmt=3.5;~kickDecay=0.30;~kickDrive=1.6;~kickClick=0.22; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.42; +~percSteps = [0,0,0,0, 0,0,0,1, 0,0,0,0, 0,0,0,1]; ~percAmp = 0.18; +~percInst = \rim; +~reload.value; "=== TRANCE 138 UPLIFTING (V2) ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/tribal_ethno_100-128_--_toms_polyrhythm_34.scd b/sound_algo/palette/rhythm/patterns_genre/tribal_ethno_100-128_--_toms_polyrhythm_34.scd new file mode 100644 index 0000000..65fee6f --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/tribal_ethno_100-128_--_toms_polyrhythm_34.scd @@ -0,0 +1,13 @@ +// ========================================================= +// TRIBAL ETHNO (100-128) -- toms polyrhythm 3:4 -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~kickAmp = 0.45; +~kickFreq=48;~kickPitchAmt=2.2;~kickDecay=0.4;~kickDrive=1.1;~kickClick=0.08; +~hatSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,1,0,0]; ~hatAmp = 0.08; // organique +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 90; +~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; ~percAmp = 0.4; +~reload.value; "=== TRIBAL ETHNO 100 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/tribal_techno_130.scd b/sound_algo/palette/rhythm/patterns_genre/tribal_techno_130.scd new file mode 100644 index 0000000..4c2c7e7 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/tribal_techno_130.scd @@ -0,0 +1,14 @@ +// ========================================================= +// TRIBAL TECHNO 130 -- extrait de patterns_genre.scd +// ========================================================= +( +~bpm = 130; TempoClock.default.tempo = ~bpm/60; +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; +~kickFreq=50;~kickPitchAmt=2.6;~kickDecay=0.34;~kickDrive=1.2;~kickClick=0.12; +~hatSteps = [0,0,1,0, 0,1,0,1, 0,0,1,0, 0,1,0,1]; ~hatAmp = 0.10; +~snareSteps = (0!16); +~clapSteps = (0!16); +~percInst = \tom; ~tomFreq = 95; +~percSteps = [1,0,0,1, 0,1,1,0, 1,0,0,1, 0,1,1,0]; ~percAmp = 0.40; +~reload.value; "=== TRIBAL TECHNO 130 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/patterns_genre/uplifting_trance_138_--_kick_44_offbeat_bass_clap_24.scd b/sound_algo/palette/rhythm/patterns_genre/uplifting_trance_138_--_kick_44_offbeat_bass_clap_24.scd new file mode 100644 index 0000000..6a7cf69 --- /dev/null +++ b/sound_algo/palette/rhythm/patterns_genre/uplifting_trance_138_--_kick_44_offbeat_bass_clap_24.scd @@ -0,0 +1,12 @@ +// ========================================================= +// UPLIFTING TRANCE (138) -- kick 4/4 + offbeat bass + clap 2&4 -- extrait de patterns_genre.scd +// ========================================================= +( +~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; +~kickFreq=55;~kickPitchAmt=3.2;~kickDecay=0.28;~kickDrive=1.5;~kickClick=0.20; +~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; +~snareSteps = (0!16); +~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; +~percSteps = (0!16); +~reload.value; "=== UPLIFTING TRANCE 138 BPM ===".postln; +) diff --git a/sound_algo/palette/rhythm/percussions.scd b/sound_algo/palette/rhythm/percussions.scd new file mode 100644 index 0000000..0e60e0c --- /dev/null +++ b/sound_algo/palette/rhythm/percussions.scd @@ -0,0 +1,194 @@ +// ===================================================================== +// percussions.scd +// ~25 patterns clap + perc + ~12 timbres perc selectionnable +// +// PREREQUIS : engine.scd evalue. Cmd+Entree sur un bloc pour l'appliquer. +// +// SynthDef percussion disponibles dans engine.scd : +// \rim, \cowbell, \tom, \openHat +// (\crash existe aussi mais hors selecteur ~percInst standard) +// SynthDef percussion bonus dans synth/_index.scd : +// \taiko, \tabla (utilisable via ~percInst = \taiko;) +// +// Storage : +// ~clC1..~clC12 = patterns clap +// ~pcP1..~pcP15 = patterns perc generale +// Util par sequences.scd pour sequencer les changements automatiques. +// ===================================================================== + + + +// ===================================================================== +// STOCKAGE -- evaluer ce bloc une fois pour enregistrer toutes les +// variables reutilisables. +// ===================================================================== +( +// --- Patterns clap (~clC1..~clC12) ---------------------------------- +~clC1 = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; // backbeat 2 et 4 +~clC2 = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,0,0,0]; // techno minimal : 4 seul +~clC3 = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; // offbeat (entre beats) +~clC4 = [1,1,1,0, 0,0,0,0, 1,1,1,0, 0,0,0,0]; // roll/flam (3 claps) +~clC5 = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,1]; // house ghost +~clC6 = [0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; // dubstep gros (sur 3) +~clC7 = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; // trance fort 2/4 +~clC8 = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; // reggae 1 et 3 +~clC9 = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,0,0]; // garage shuffled +~clC10 = [0,0,1,0, 1,0,0,1, 0,0,1,0, 1,0,0,1]; // dense funk +~clC11 = [0,0,0,1, 1,0,0,0, 0,0,0,1, 1,0,0,0]; // stutter trap +~clC12 = (0 ! 16); // mute + +// --- Patterns perc generale (~pcP1..~pcP15) ------------------------- +~pcP1 = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; // offbeat techno +~pcP2 = [1,0,1,1, 0,0,1,0, 1,1,0,1, 0,1,1,0]; // trap ghosts +~pcP3 = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; // tribal congas +~pcP4 = [1,0,0,1, 0,0,1,0, 0,0,1,0, 0,0,0,0]; // clave 3-2 +~pcP5 = [0,0,1,0, 0,0,1,0, 1,0,0,1, 0,0,1,0]; // clave 2-3 +~pcP6 = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; // tambourine 8th +~pcP7 = [1,0,0,0, 0,1,0,0, 1,0,0,1, 0,1,0,0]; // cowbell tribal +~pcP8 = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; // rim shot offbeat +~pcP9 = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; // open hat techno +~pcP10 = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; // closed hat 16th +~pcP11 = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,1,0,1]; // shaker rapide +~pcP12 = [1,0,1,0, 0,1,0,1, 1,0,0,1, 0,1,0,1]; // bongo polyrythme +~pcP13 = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,1,1,1]; // tom roll fill +~pcP14 = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; // perc sur le beat +~pcP15 = (0 ! 16); // mute +"=== percussions : 12 claps + 15 perc patterns stockes ===".postln; +) + + + +// ===================================================================== +// CLAP PATTERNS (blocs auto-applicants) +// ===================================================================== + +// --- C1 : clap backbeat (5+13) ---- classique ------------------------ +( ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~reload.value; "C1 clap backbeat 2/4".postln; ) + +// --- C2 : clap techno minimal (sur 4 seul) -------------------------- +( ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.4; + ~reload.value; "C2 clap minimal sur 4".postln; ) + +// --- C3 : clap offbeat (entre les beats) ---------------------------- +( ~clapSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~clapAmp = 0.3; + ~reload.value; "C3 clap offbeat".postln; ) + +// --- C4 : clap roll/flam (3 claps rapides) -------------------------- +( ~clapSteps = [1,1,1,0, 0,0,0,0, 1,1,1,0, 0,0,0,0]; ~clapAmp = 0.32; + ~reload.value; "C4 clap roll/flam".postln; ) + +// --- C5 : clap house ghost (2/4 + ghost) ---------------------------- +( ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.34; + ~reload.value; "C5 clap house".postln; ) + +// --- C6 : clap dubstep (sur 3, gros) -------------------------------- +( ~clapSteps = [0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~clapAmp = 0.5; + ~reload.value; "C6 clap dubstep".postln; ) + +// --- C7 : clap trance (fort 2 et 4) --------------------------------- +( ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.42; + ~reload.value; "C7 clap trance".postln; ) + +// --- C8 : clap reggae (sur 1 et 3) ---------------------------------- +( ~clapSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~clapAmp = 0.30; + ~reload.value; "C8 clap reggae".postln; ) + +// --- Clap mute ------------------------------------------------------ +( ~clapSteps = (0 ! 16); ~reload.value; "clap mute".postln; ) + + + +// ===================================================================== +// SELECTEUR D'INSTRUMENT PERC (~percInst) +// SynthDef disponibles : \rim \cowbell \tom \openHat +// Bonus si authentic.scd charge : \taiko, \tabla +// ===================================================================== + +( ~percInst = \rim; ~reload.value; "perc = rim".postln; ) +( ~percInst = \cowbell; ~reload.value; "perc = cowbell".postln; ) +( ~percInst = \tom; ~reload.value; "perc = tom".postln; ) +( ~percInst = \openHat; ~reload.value; "perc = openHat".postln; ) +// --- Bonus (si synth/_index.scd evalue) ------------------------------ +( ~percInst = \taiko; ~reload.value; "perc = taiko (authentic)".postln; ) +( ~percInst = \tabla; ~reload.value; "perc = tabla (authentic)".postln; ) + + + +// ===================================================================== +// PATTERNS PERCUSSION GENERALE (utilise ~percInst courant) +// ===================================================================== + +// --- P1 : offbeat techno (defaut) ----------------------------------- +( ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.25; + ~reload.value; "P1 perc offbeat".postln; ) + +// --- P2 : trap ghosts ---------------------------------------------- +( ~percSteps = [1,0,1,1, 0,0,1,0, 1,1,0,1, 0,1,1,0]; ~percAmp = 0.18; + ~reload.value; "P2 perc trap ghosts".postln; ) + +// --- P3 : tribal congas (utiliser ~percInst = \tom) ---------------- +( ~percInst = \tom; ~tomFreq = 90; + ~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; ~percAmp = 0.4; + ~reload.value; "P3 tribal congas (tom)".postln; ) + +// --- P4 : clave 3-2 (afro-cubain classique) ------------------------ +( ~percInst = \rim; + ~percSteps = [1,0,0,1, 0,0,1,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.35; + ~reload.value; "P4 clave 3-2 (rim)".postln; ) + +// --- P5 : clave 2-3 (variation) ------------------------------------ +( ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.35; + ~reload.value; "P5 clave 2-3 (rim)".postln; ) + +// --- P6 : tambourine sur 8th notes --------------------------------- +( ~percInst = \rim; + ~percSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~percAmp = 0.22; + ~reload.value; "P6 tambourine 8th".postln; ) + +// --- P7 : cowbell tribal ------------------------------------------- +( ~percInst = \cowbell; ~cowbellFreq = 800; + ~percSteps = [1,0,0,0, 0,1,0,0, 1,0,0,1, 0,1,0,0]; ~percAmp = 0.32; + ~reload.value; "P7 cowbell tribal".postln; ) + +// --- P8 : rim shot offbeat ----------------------------------------- +( ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.30; + ~reload.value; "P8 rim offbeat".postln; ) + +// --- P9 : open hat sur offbeat (techno) ---------------------------- +( ~percInst = \openHat; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.25; + ~reload.value; "P9 openHat offbeat".postln; ) + +// --- P10 : closed hat 16th (perc layer) ---------------------------- +( ~percInst = \rim; + ~percSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~percAmp = 0.12; + ~reload.value; "P10 hat 16th (rim layer)".postln; ) + +// --- P11 : shaker rapide ------------------------------------------- +( ~percInst = \rim; + ~percSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,1,0,1]; ~percAmp = 0.15; + ~reload.value; "P11 shaker rapide (rim)".postln; ) + +// --- P12 : bongo polyrythme (3:4 contre kick) ---------------------- +( ~percInst = \tom; ~tomFreq = 110; + ~percSteps = [1,0,1,0, 0,1,0,1, 1,0,0,1, 0,1,0,1]; ~percAmp = 0.32; + ~reload.value; "P12 bongo polyrythme (tom)".postln; ) + +// --- P13 : tom roll fill (4 dernieres steps) ----------------------- +( ~percInst = \tom; ~tomFreq = 100; + ~percSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,1,1,1]; ~percAmp = 0.45; + ~reload.value; "P13 tom roll fill".postln; ) + +// --- P14 : perc sur le beat (renforce kick) ------------------------ +( ~percInst = \cowbell; ~cowbellFreq = 600; + ~percSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~percAmp = 0.20; + ~reload.value; "P14 perc on beat".postln; ) + +// --- Perc mute ----------------------------------------------------- +( ~percSteps = (0 ! 16); ~reload.value; "perc mute".postln; ) + + + diff --git a/sound_algo/palette/rhythm/percussions/_demo_c1_clap_backbeat_513_----_classique.scd b/sound_algo/palette/rhythm/percussions/_demo_c1_clap_backbeat_513_----_classique.scd new file mode 100644 index 0000000..466da1f --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_c1_clap_backbeat_513_----_classique.scd @@ -0,0 +1,5 @@ +// ========================================================= +// C1 : clap backbeat (5+13) ---- classique -- extrait de percussions.scd +// ========================================================= +( ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~reload.value; "C1 clap backbeat 2/4".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_c2_clap_techno_minimal.scd b/sound_algo/palette/rhythm/percussions/_demo_c2_clap_techno_minimal.scd new file mode 100644 index 0000000..ba649b5 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_c2_clap_techno_minimal.scd @@ -0,0 +1,5 @@ +// ========================================================= +// C2 : clap techno minimal -- extrait de percussions.scd +// ========================================================= +( ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.4; + ~reload.value; "C2 clap minimal sur 4".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_c3_clap_offbeat.scd b/sound_algo/palette/rhythm/percussions/_demo_c3_clap_offbeat.scd new file mode 100644 index 0000000..ea8c7a6 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_c3_clap_offbeat.scd @@ -0,0 +1,5 @@ +// ========================================================= +// C3 : clap offbeat -- extrait de percussions.scd +// ========================================================= +( ~clapSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~clapAmp = 0.3; + ~reload.value; "C3 clap offbeat".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_c4_clap_rollflam.scd b/sound_algo/palette/rhythm/percussions/_demo_c4_clap_rollflam.scd new file mode 100644 index 0000000..226c30c --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_c4_clap_rollflam.scd @@ -0,0 +1,5 @@ +// ========================================================= +// C4 : clap roll/flam -- extrait de percussions.scd +// ========================================================= +( ~clapSteps = [1,1,1,0, 0,0,0,0, 1,1,1,0, 0,0,0,0]; ~clapAmp = 0.32; + ~reload.value; "C4 clap roll/flam".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_c5_clap_house_ghost.scd b/sound_algo/palette/rhythm/percussions/_demo_c5_clap_house_ghost.scd new file mode 100644 index 0000000..92ab0e5 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_c5_clap_house_ghost.scd @@ -0,0 +1,5 @@ +// ========================================================= +// C5 : clap house ghost -- extrait de percussions.scd +// ========================================================= +( ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.34; + ~reload.value; "C5 clap house".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_c6_clap_dubstep.scd b/sound_algo/palette/rhythm/percussions/_demo_c6_clap_dubstep.scd new file mode 100644 index 0000000..8edcf99 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_c6_clap_dubstep.scd @@ -0,0 +1,5 @@ +// ========================================================= +// C6 : clap dubstep -- extrait de percussions.scd +// ========================================================= +( ~clapSteps = [0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~clapAmp = 0.5; + ~reload.value; "C6 clap dubstep".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_c7_clap_trance.scd b/sound_algo/palette/rhythm/percussions/_demo_c7_clap_trance.scd new file mode 100644 index 0000000..29e1e01 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_c7_clap_trance.scd @@ -0,0 +1,5 @@ +// ========================================================= +// C7 : clap trance -- extrait de percussions.scd +// ========================================================= +( ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.42; + ~reload.value; "C7 clap trance".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_c8_clap_reggae.scd b/sound_algo/palette/rhythm/percussions/_demo_c8_clap_reggae.scd new file mode 100644 index 0000000..c171b38 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_c8_clap_reggae.scd @@ -0,0 +1,5 @@ +// ========================================================= +// C8 : clap reggae -- extrait de percussions.scd +// ========================================================= +( ~clapSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~clapAmp = 0.30; + ~reload.value; "C8 clap reggae".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_clap_mute.scd b/sound_algo/palette/rhythm/percussions/_demo_clap_mute.scd new file mode 100644 index 0000000..efec7fb --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_clap_mute.scd @@ -0,0 +1,4 @@ +// ========================================================= +// Clap mute -- extrait de percussions.scd +// ========================================================= +( ~clapSteps = (0 ! 16); ~reload.value; "clap mute".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p10_closed_hat_16th.scd b/sound_algo/palette/rhythm/percussions/_demo_p10_closed_hat_16th.scd new file mode 100644 index 0000000..19d2d68 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p10_closed_hat_16th.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P10 : closed hat 16th -- extrait de percussions.scd +// ========================================================= +( ~percInst = \rim; + ~percSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~percAmp = 0.12; + ~reload.value; "P10 hat 16th (rim layer)".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p11_shaker_rapide.scd b/sound_algo/palette/rhythm/percussions/_demo_p11_shaker_rapide.scd new file mode 100644 index 0000000..45c62fd --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p11_shaker_rapide.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P11 : shaker rapide -- extrait de percussions.scd +// ========================================================= +( ~percInst = \rim; + ~percSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,1,0,1]; ~percAmp = 0.15; + ~reload.value; "P11 shaker rapide (rim)".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p12_bongo_polyrythme.scd b/sound_algo/palette/rhythm/percussions/_demo_p12_bongo_polyrythme.scd new file mode 100644 index 0000000..efe915c --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p12_bongo_polyrythme.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P12 : bongo polyrythme -- extrait de percussions.scd +// ========================================================= +( ~percInst = \tom; ~tomFreq = 110; + ~percSteps = [1,0,1,0, 0,1,0,1, 1,0,0,1, 0,1,0,1]; ~percAmp = 0.32; + ~reload.value; "P12 bongo polyrythme (tom)".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p13_tom_roll_fill.scd b/sound_algo/palette/rhythm/percussions/_demo_p13_tom_roll_fill.scd new file mode 100644 index 0000000..56d3199 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p13_tom_roll_fill.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P13 : tom roll fill -- extrait de percussions.scd +// ========================================================= +( ~percInst = \tom; ~tomFreq = 100; + ~percSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,1,1,1]; ~percAmp = 0.45; + ~reload.value; "P13 tom roll fill".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p14_perc_sur_le_beat.scd b/sound_algo/palette/rhythm/percussions/_demo_p14_perc_sur_le_beat.scd new file mode 100644 index 0000000..d29b294 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p14_perc_sur_le_beat.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P14 : perc sur le beat -- extrait de percussions.scd +// ========================================================= +( ~percInst = \cowbell; ~cowbellFreq = 600; + ~percSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~percAmp = 0.20; + ~reload.value; "P14 perc on beat".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p1_offbeat_techno.scd b/sound_algo/palette/rhythm/percussions/_demo_p1_offbeat_techno.scd new file mode 100644 index 0000000..565c398 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p1_offbeat_techno.scd @@ -0,0 +1,5 @@ +// ========================================================= +// P1 : offbeat techno -- extrait de percussions.scd +// ========================================================= +( ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.25; + ~reload.value; "P1 perc offbeat".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p2_trap_ghosts.scd b/sound_algo/palette/rhythm/percussions/_demo_p2_trap_ghosts.scd new file mode 100644 index 0000000..1f7a0b0 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p2_trap_ghosts.scd @@ -0,0 +1,5 @@ +// ========================================================= +// P2 : trap ghosts -- extrait de percussions.scd +// ========================================================= +( ~percSteps = [1,0,1,1, 0,0,1,0, 1,1,0,1, 0,1,1,0]; ~percAmp = 0.18; + ~reload.value; "P2 perc trap ghosts".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p3_tribal_congas.scd b/sound_algo/palette/rhythm/percussions/_demo_p3_tribal_congas.scd new file mode 100644 index 0000000..8b1c608 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p3_tribal_congas.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P3 : tribal congas -- extrait de percussions.scd +// ========================================================= +( ~percInst = \tom; ~tomFreq = 90; + ~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; ~percAmp = 0.4; + ~reload.value; "P3 tribal congas (tom)".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p4_clave_3-2.scd b/sound_algo/palette/rhythm/percussions/_demo_p4_clave_3-2.scd new file mode 100644 index 0000000..eaacf30 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p4_clave_3-2.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P4 : clave 3-2 -- extrait de percussions.scd +// ========================================================= +( ~percInst = \rim; + ~percSteps = [1,0,0,1, 0,0,1,0, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.35; + ~reload.value; "P4 clave 3-2 (rim)".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p5_clave_2-3.scd b/sound_algo/palette/rhythm/percussions/_demo_p5_clave_2-3.scd new file mode 100644 index 0000000..ac67ca5 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p5_clave_2-3.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P5 : clave 2-3 -- extrait de percussions.scd +// ========================================================= +( ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.35; + ~reload.value; "P5 clave 2-3 (rim)".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p6_tambourine_sur_8th_notes.scd b/sound_algo/palette/rhythm/percussions/_demo_p6_tambourine_sur_8th_notes.scd new file mode 100644 index 0000000..16b9788 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p6_tambourine_sur_8th_notes.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P6 : tambourine sur 8th notes -- extrait de percussions.scd +// ========================================================= +( ~percInst = \rim; + ~percSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~percAmp = 0.22; + ~reload.value; "P6 tambourine 8th".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p7_cowbell_tribal.scd b/sound_algo/palette/rhythm/percussions/_demo_p7_cowbell_tribal.scd new file mode 100644 index 0000000..2672a25 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p7_cowbell_tribal.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P7 : cowbell tribal -- extrait de percussions.scd +// ========================================================= +( ~percInst = \cowbell; ~cowbellFreq = 800; + ~percSteps = [1,0,0,0, 0,1,0,0, 1,0,0,1, 0,1,0,0]; ~percAmp = 0.32; + ~reload.value; "P7 cowbell tribal".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p8_rim_shot_offbeat.scd b/sound_algo/palette/rhythm/percussions/_demo_p8_rim_shot_offbeat.scd new file mode 100644 index 0000000..f11233c --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p8_rim_shot_offbeat.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P8 : rim shot offbeat -- extrait de percussions.scd +// ========================================================= +( ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; ~percAmp = 0.30; + ~reload.value; "P8 rim offbeat".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_p9_open_hat_sur_offbeat.scd b/sound_algo/palette/rhythm/percussions/_demo_p9_open_hat_sur_offbeat.scd new file mode 100644 index 0000000..3990e06 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_p9_open_hat_sur_offbeat.scd @@ -0,0 +1,6 @@ +// ========================================================= +// P9 : open hat sur offbeat -- extrait de percussions.scd +// ========================================================= +( ~percInst = \openHat; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.25; + ~reload.value; "P9 openHat offbeat".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_perc_inst_cowbell.scd b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_cowbell.scd new file mode 100644 index 0000000..e592dec --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_cowbell.scd @@ -0,0 +1,4 @@ +// ========================================================= +// block -- extrait de percussions.scd +// ========================================================= +( ~percInst = \cowbell; ~reload.value; "perc = cowbell".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_perc_inst_openhat.scd b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_openhat.scd new file mode 100644 index 0000000..e21b604 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_openhat.scd @@ -0,0 +1,4 @@ +// ========================================================= +// block -- extrait de percussions.scd +// ========================================================= +( ~percInst = \openHat; ~reload.value; "perc = openHat".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_perc_inst_rim.scd b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_rim.scd new file mode 100644 index 0000000..80ae713 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_rim.scd @@ -0,0 +1,4 @@ +// ========================================================= +// Bonus si authentic.scd charge : \taiko, \tabla -- extrait de percussions.scd +// ========================================================= +( ~percInst = \rim; ~reload.value; "perc = rim".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_perc_inst_tabla.scd b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_tabla.scd new file mode 100644 index 0000000..8417b3c --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_tabla.scd @@ -0,0 +1,4 @@ +// ========================================================= +// block -- extrait de percussions.scd +// ========================================================= +( ~percInst = \tabla; ~reload.value; "perc = tabla (authentic)".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_perc_inst_taiko.scd b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_taiko.scd new file mode 100644 index 0000000..2ce7d9f --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_taiko.scd @@ -0,0 +1,4 @@ +// ========================================================= +// Bonus -- extrait de percussions.scd +// ========================================================= +( ~percInst = \taiko; ~reload.value; "perc = taiko (authentic)".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_perc_inst_tom.scd b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_tom.scd new file mode 100644 index 0000000..df4a3b6 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_perc_inst_tom.scd @@ -0,0 +1,4 @@ +// ========================================================= +// block -- extrait de percussions.scd +// ========================================================= +( ~percInst = \tom; ~reload.value; "perc = tom".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_demo_perc_mute.scd b/sound_algo/palette/rhythm/percussions/_demo_perc_mute.scd new file mode 100644 index 0000000..cde7a98 --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_demo_perc_mute.scd @@ -0,0 +1,4 @@ +// ========================================================= +// Perc mute -- extrait de percussions.scd +// ========================================================= +( ~percSteps = (0 ! 16); ~reload.value; "perc mute".postln; ) diff --git a/sound_algo/palette/rhythm/percussions/_stockage_patterns.scd b/sound_algo/palette/rhythm/percussions/_stockage_patterns.scd new file mode 100644 index 0000000..f72f32c --- /dev/null +++ b/sound_algo/palette/rhythm/percussions/_stockage_patterns.scd @@ -0,0 +1,36 @@ +// ========================================================= +// variables reutilisables. -- extrait de percussions.scd +// ========================================================= +( +// --- Patterns clap (~clC1..~clC12) ---------------------------------- +~clC1 = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; // backbeat 2 et 4 +~clC2 = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,0,0,0]; // techno minimal : 4 seul +~clC3 = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; // offbeat (entre beats) +~clC4 = [1,1,1,0, 0,0,0,0, 1,1,1,0, 0,0,0,0]; // roll/flam (3 claps) +~clC5 = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,0,1]; // house ghost +~clC6 = [0,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; // dubstep gros (sur 3) +~clC7 = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; // trance fort 2/4 +~clC8 = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; // reggae 1 et 3 +~clC9 = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,0,0]; // garage shuffled +~clC10 = [0,0,1,0, 1,0,0,1, 0,0,1,0, 1,0,0,1]; // dense funk +~clC11 = [0,0,0,1, 1,0,0,0, 0,0,0,1, 1,0,0,0]; // stutter trap +~clC12 = (0 ! 16); // mute + +// --- Patterns perc generale (~pcP1..~pcP15) ------------------------- +~pcP1 = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; // offbeat techno +~pcP2 = [1,0,1,1, 0,0,1,0, 1,1,0,1, 0,1,1,0]; // trap ghosts +~pcP3 = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; // tribal congas +~pcP4 = [1,0,0,1, 0,0,1,0, 0,0,1,0, 0,0,0,0]; // clave 3-2 +~pcP5 = [0,0,1,0, 0,0,1,0, 1,0,0,1, 0,0,1,0]; // clave 2-3 +~pcP6 = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; // tambourine 8th +~pcP7 = [1,0,0,0, 0,1,0,0, 1,0,0,1, 0,1,0,0]; // cowbell tribal +~pcP8 = [0,0,1,0, 0,1,0,0, 0,0,1,0, 0,1,0,0]; // rim shot offbeat +~pcP9 = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; // open hat techno +~pcP10 = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; // closed hat 16th +~pcP11 = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,1,0,1]; // shaker rapide +~pcP12 = [1,0,1,0, 0,1,0,1, 1,0,0,1, 0,1,0,1]; // bongo polyrythme +~pcP13 = [0,0,0,0, 0,0,0,0, 0,0,0,0, 1,1,1,1]; // tom roll fill +~pcP14 = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; // perc sur le beat +~pcP15 = (0 ! 16); // mute +"=== percussions : 12 claps + 15 perc patterns stockes ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences.scd b/sound_algo/palette/rhythm/sequences.scd new file mode 100644 index 0000000..47928e6 --- /dev/null +++ b/sound_algo/palette/rhythm/sequences.scd @@ -0,0 +1,578 @@ +// ===================================================================== +// sequences.scd -- Sequences de patterns automatiques (macros temps) +// +// CONCEPT +// Une sequence est une Routine qui change ~kickSteps / ~melodyNotes / +// etc. a intervalles reguliers. 1 step = ~stepDur (defaut 0.25 = 1/16). +// Donc 16 steps = 1 mesure 4/4 a 0.25 dur. +// +// PREREQUIS +// engine.scd evalue (definit ~kickSteps, ~reload, etc.). +// palette/kicks.scd evalue le bloc STOCKAGE pour avoir ~kK1..~kK25. +// palette/percussions.scd evalue le bloc STOCKAGE pour ~clC*, ~pcP*. +// +// HELPERS exposes +// ~seqPlay.(actions) joue [[steps, action], ...] +// ~seqStop.() stoppe la sequence courante +// ~seqLoop.(actions, repeats) enchaine actions en boucle N fois +// ~seqEvolve.(steps, mutator) mute progressivement toutes N steps +// ~beatChainPlay.(presets) enchaine plusieurs presets nommes +// ~stepDur duree d'un step (defaut 0.25) +// +// SEQUENCES PRE-CONSTRUITES (~seqXxx.()) +// seqIntro seqBuildup seqBreakdown seqDrop +// seqOutro seqTechnoLoop seqAcidEvolve seqDubstepDrop +// seqTrance16 seqDnBSwitch seqHipHopLoop seqWorldEvolve +// ===================================================================== + + + +// ===================================================================== +// HELPERS DE BASE -- evaluer ce bloc une fois pour exposer les helpers +// ===================================================================== +( +~stepDur = 0.25; // duree d'un step en battement (1/16 a 4/4) +~currentSeq = nil; // Routine en cours + + +// --- ~seqPlay.([[steps, action], ...]) ------------------------------ +// Joue une suite d'actions a intervalles donnes en steps. +// Stoppe toute sequence precedente avant de demarrer. +~seqPlay = { |actions| + ~seqStop.value; + ~currentSeq = Routine({ + actions.do { |entry| + var steps = entry[0]; + var action = entry[1]; + action.value; + (steps * ~stepDur).wait; + }; + ~currentSeq = nil; + }).play(TempoClock.default); + "=== seqPlay : % steps en cours ===".format(actions.collect(_[0]).sum).postln; +}; + + +// --- ~seqStop.() ---------------------------------------------------- +~seqStop = { + ~currentSeq !? { ~currentSeq.stop; ~currentSeq = nil; "=== seqStop ===".postln }; +}; + + +// --- ~seqLoop.(actions, repeats) ------------------------------------ +// Enchaine la liste d'actions en boucle N fois (defaut 1). +~seqLoop = { |actions, repeats = 1| + var expanded = Array.new(actions.size * repeats); + repeats.do { actions.do { |a| expanded.add(a) } }; + ~seqPlay.value(expanded); + "=== seqLoop : % cycles ===".format(repeats).postln; +}; + + +// --- ~seqEvolve.(steps, mutator) ------------------------------------ +// Appelle 'mutator' en boucle toutes les 'steps' steps. La routine +// tourne jusqu'a seqStop. +~seqEvolve = { |stepsBetween = 16, mutator| + ~seqStop.value; + ~currentSeq = Routine({ + inf.do { |i| + mutator.value(i); + (stepsBetween * ~stepDur).wait; + }; + }).play(TempoClock.default); + "=== seqEvolve : mutator chaque % steps ===".format(stepsBetween).postln; +}; + + +// --- ~beatChainPlay.(presets) --------------------------------------- +// Enchaine plusieurs presets sous forme de [stepsToHold, action]. +// Equivalent a ~seqPlay mais sucre syntaxique pour chains de drumkits. +~beatChainPlay = { |presets| + ~seqPlay.value(presets); +}; + +"=== sequences helpers : ~seqPlay ~seqStop ~seqLoop ~seqEvolve ~beatChainPlay ===".postln; +) + + + +// ===================================================================== +// SEQUENCES PRE-CONSTRUITES +// Evaluer chaque bloc pour DEFINIR la sequence (variable ~seqXxx). +// Ensuite l'invoquer : ~seqIntro.value +// ===================================================================== + + + +// ===================================================================== +// ~seqIntro -- monte progressive sur 64 steps (4 mesures) +// mesure 1 : kick seul +// mesure 2 : kick + hat +// mesure 3 : kick + hat + clap +// mesure 4 : tout (kick + hat + clap + perc) +// ===================================================================== +( +~seqIntro = { + ~seqPlay.value([ + [16, { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~reload.value; + "intro 1/4 : kick seul".postln; + }], + [16, { + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~reload.value; + "intro 2/4 : + hat".postln; + }], + [16, { + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.35; + ~reload.value; + "intro 3/4 : + clap".postln; + }], + [16, { + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~percAmp = 0.25; + ~reload.value; + "intro 4/4 : tout".postln; + }], + ]); +}; +"=== ~seqIntro defini ===".postln; +) + + +// ===================================================================== +// ~seqBuildup -- crescendo trance (riser + cutoff sweep + clap denser) +// Argument optionnel : duree totale en mesures (defaut 4) +// ===================================================================== +( +~seqBuildup = { |bars = 4| + var stepsPerBar = 16; + ~seqPlay.value([ + [stepsPerBar, { + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.30; + ~reload.value; + "buildup 1: hat + clap".postln; + }], + [stepsPerBar, { + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,1,0, 1,0,0,0]; + ~clapAmp = 0.36; + ~reload.value; + "buildup 2: hat 8th + clap dense".postln; + }], + [stepsPerBar, { + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~clapSteps = [0,0,1,0, 1,0,1,0, 0,1,0,1, 1,0,1,0]; + ~clapAmp = 0.40; + ~reload.value; + "buildup 3: hat 16th + clap dense".postln; + }], + [stepsPerBar * (bars - 3).max(1), { + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareAmp = 0.5; + ~reload.value; + "buildup 4: snare roll TENSION".postln; + }], + ]); +}; +"=== ~seqBuildup defini ===".postln; +) + + +// ===================================================================== +// ~seqBreakdown -- reduit a melody seule, puis revient +// ===================================================================== +( +~seqBreakdown = { + var saveKick, saveHat, saveClap, savePerc, saveSnare; + saveKick = ~kickSteps.copy; + saveHat = ~hatSteps.copy; + saveClap = ~clapSteps.copy; + savePerc = ~percSteps.copy; + saveSnare = ~snareSteps.copy; + ~seqPlay.value([ + [32, { + ~kickSteps = (0!16); + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~snareSteps = (0!16); + ~reload.value; + "breakdown : melody seule".postln; + }], + [16, { + ~kickSteps = saveKick; + ~hatSteps = saveHat; + ~clapSteps = saveClap; + ~percSteps = savePerc; + ~snareSteps = saveSnare; + ~reload.value; + "breakdown : retour".postln; + }], + ]); +}; +"=== ~seqBreakdown defini ===".postln; +) + + +// ===================================================================== +// ~seqDrop -- 4 steps silence + 1 step impact + reprise +// ===================================================================== +( +~seqDrop = { + var saveKick, saveHat, saveClap, savePerc, saveSnare; + saveKick = ~kickSteps.copy; + saveHat = ~hatSteps.copy; + saveClap = ~clapSteps.copy; + savePerc = ~percSteps.copy; + saveSnare = ~snareSteps.copy; + ~seqPlay.value([ + [4, { + ~kickSteps = (0!16); + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~snareSteps = (0!16); + ~reload.value; + "drop : SILENCE".postln; + }], + [1, { + // impact one-shot via clap fort + ~clapSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapAmp = 0.7; + ~reload.value; + "drop : IMPACT".postln; + }], + [16, { + ~kickSteps = saveKick; + ~hatSteps = saveHat; + ~clapSteps = saveClap; ~clapAmp = 0.35; + ~percSteps = savePerc; + ~snareSteps = saveSnare; + ~reload.value; + "drop : DROP !!!".postln; + }], + ]); +}; +"=== ~seqDrop defini ===".postln; +) + + +// ===================================================================== +// ~seqOutro -- fade-out progressif sur 32 steps (2 mesures) +// ===================================================================== +( +~seqOutro = { + ~seqPlay.value([ + [8, { + ~percSteps = (0!16); + ~reload.value; + "outro 1 : perc out".postln; + }], + [8, { + ~clapSteps = (0!16); + ~reload.value; + "outro 2 : clap out".postln; + }], + [8, { + ~hatSteps = (0!16); + ~snareSteps = (0!16); + ~reload.value; + "outro 3 : hat + snare out".postln; + }], + [8, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~reload.value; + "outro 4 : kick minimal".postln; + }], + ]); +}; +"=== ~seqOutro defini ===".postln; +) + + +// ===================================================================== +// ~seqTechnoLoop.(repeats) -- enchaine 4 patterns techno mute par mesure +// Necessite kicks.scd STOCKAGE evalue (~kK1..~kK25 dispo) +// ===================================================================== +( +~seqTechnoLoop = { |repeats = 4| + ~seqLoop.value([ + [16, { + ~kickSteps = ~kK1 ? [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~reload.value; "techno A : 4/4".postln; + }], + [16, { + ~kickSteps = ~kK9 ? [1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0]; + ~reload.value; "techno B : ghost".postln; + }], + [16, { + ~kickSteps = ~kK16 ? [1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0]; + ~reload.value; "techno C : minimal".postln; + }], + [16, { + ~kickSteps = ~kK10 ? [1,0,1,0, 1,0,0,1, 1,0,1,0, 1,0,1,1]; + ~reload.value; "techno D : syncope".postln; + }], + ], repeats); +}; +"=== ~seqTechnoLoop defini ===".postln; +) + + +// ===================================================================== +// ~seqAcidEvolve -- acid pattern qui mute progressivement +// Note: lit ~acidNotes / ~acidAccents / ~acidSlides du moteur +// ===================================================================== +( +~seqAcidEvolve = { + ~seqPlay.value([ + [16, { + ~acidNotes = [36,36,36,36, 36,36,36,36, 36,36,36,36, 36,36,36,36]; + ~acidAccents = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~acidSlides = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~reload.value; "acid 1: drone tonic".postln; + }], + [16, { + ~acidNotes = [36,0,39,0, 36,0,43,0, 36,0,39,0, 36,0,43,0]; + ~acidAccents = [1,0,0,0, 1,0,1,0, 1,0,0,0, 1,0,1,0]; + ~reload.value; "acid 2: minor 3rd".postln; + }], + [16, { + ~acidNotes = [36,39,43,36, 39,43,48,43, 36,39,43,48, 43,39,36,43]; + ~acidAccents = [1,0,0,1, 0,1,0,0, 1,0,0,1, 0,0,1,0]; + ~acidSlides = [0,1,0,0, 1,0,1,0, 0,0,1,0, 1,1,0,0]; + ~reload.value; "acid 3: arpege".postln; + }], + [16, { + ~acidNotes = [36,43,39,48, 36,46,43,48, 39,43,48,46, 43,39,48,36]; + ~acidAccents = [1,0,1,1, 0,1,0,1, 1,0,1,0, 0,1,1,0]; + ~acidSlides = [1,1,0,1, 0,0,1,1, 0,1,0,1, 1,0,1,0]; + ~reload.value; "acid 4: full chaos".postln; + }], + ]); +}; +"=== ~seqAcidEvolve defini ===".postln; +) + + +// ===================================================================== +// ~seqDubstepDrop -- pre-drop / drop / breakdown +// ===================================================================== +( +~seqDubstepDrop = { + ~seqPlay.value([ + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~hatAmp = 0.06; + ~kickAmp = 0.4; ~snareAmp = 0.35; + ~reload.value; "dubstep 1: pre-drop tension".postln; + }], + [4, { + ~kickSteps = (0!16); ~snareSteps = (0!16); ~hatSteps = (0!16); + ~reload.value; "dubstep 2: SILENCE".postln; + }], + [32, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~kickAmp = 0.65; ~snareAmp = 0.55; ~hatAmp = 0.10; + ~reload.value; "dubstep 3: DROP !!!".postln; + }], + [16, { + ~kickSteps = (0!16); ~hatSteps = (0!16); + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~snareAmp = 0.4; + ~reload.value; "dubstep 4: breakdown".postln; + }], + ]); +}; +"=== ~seqDubstepDrop defini ===".postln; +) + + +// ===================================================================== +// ~seqTrance16 -- 16 mesures de trance avec build implicite +// ===================================================================== +( +~seqTrance16 = { + ~seqPlay.value([ + [64, { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~clapSteps = (0!16); + ~reload.value; "trance 1-4 : kick + offbeat hat".postln; + }], + [64, { + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.35; + ~reload.value; "trance 5-8 : + clap 2/4".postln; + }], + [64, { + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~percAmp = 0.20; + ~reload.value; "trance 9-12 : + hat 8th + perc".postln; + }], + [64, { + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareAmp = 0.45; + ~reload.value; "trance 13-16 : SNARE ROLL final".postln; + }], + ]); +}; +"=== ~seqTrance16 defini ===".postln; +) + + +// ===================================================================== +// ~seqDnBSwitch -- alterne 4 patterns DnB toutes les 32 steps +// ===================================================================== +( +~seqDnBSwitch = { |repeats = 2| + ~seqLoop.value([ + [32, { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; + ~kickAmp = 0.55; ~snareAmp = 0.5; ~hatAmp = 0.12; + ~reload.value; "DnB A: amen".postln; + }], + [32, { + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,1]; + ~hatSteps = [1,1,0,1, 1,0,1,1, 1,1,0,1, 1,0,1,1]; + ~reload.value; "DnB B: jungle".postln; + }], + [32, { + ~kickSteps = [1,0,0,0, 0,1,1,0, 0,0,1,0, 0,1,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~reload.value; "DnB C: jump-up".postln; + }], + [32, { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,0,1,1, 0,1,0,1, 1,0,1,1, 0,1,0,1]; + ~reload.value; "DnB D: liquid".postln; + }], + ], repeats); +}; +"=== ~seqDnBSwitch defini ===".postln; +) + + +// ===================================================================== +// ~seqHipHopLoop -- 8 mesures de hip-hop avec petites variations +// ===================================================================== +( +~seqHipHopLoop = { |repeats = 1| + ~seqLoop.value([ + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~kickAmp = 0.5; ~snareAmp = 0.4; ~hatAmp = 0.10; + ~reload.value; "hip-hop 1: classic".postln; + }], + [16, { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 0,0,0,0]; + ~hatSteps = [1,0,1,1, 1,0,1,0, 1,0,1,1, 1,0,1,0]; + ~reload.value; "hip-hop 2: ghost kick".postln; + }], + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~reload.value; "hip-hop 3: trap shift".postln; + }], + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~hatSteps = [1,0,1,0, 1,0,1,1, 1,0,1,0, 1,0,1,1]; + ~reload.value; "hip-hop 4: ghost snare".postln; + }], + ], repeats); +}; +"=== ~seqHipHopLoop defini ===".postln; +) + + +// ===================================================================== +// ~seqWorldEvolve -- ajout progressif de couches ethno world +// ===================================================================== +( +~seqWorldEvolve = { + ~seqPlay.value([ + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~snareSteps = (0!16); + ~kickAmp = 0.4; + ~reload.value; "world 1: kick base".postln; + }], + [16, { + ~percInst = \tom; ~tomFreq = 95; + ~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; + ~percAmp = 0.4; + ~reload.value; "world 2: + congas".postln; + }], + [16, { + ~hatSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,0,1,1]; + ~hatAmp = 0.08; + ~reload.value; "world 3: + shaker".postln; + }], + [16, { + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.30; + ~reload.value; "world 4: + clap".postln; + }], + [16, { + ~kickSteps = [1,0,0,1, 0,1,0,0, 1,0,1,0, 0,1,0,0]; + ~kickAmp = 0.5; + ~reload.value; "world 5: kick afrobeat".postln; + }], + ]); +}; +"=== ~seqWorldEvolve defini ===".postln; +) + + + +// ===================================================================== +// EXEMPLES D'INVOCATION (a evaluer manuellement) +// ===================================================================== + +// Lance l'intro : + ~seqIntro.value +// Buildup 4 mesures : + ~seqBuildup.value(4) +// Drop dubstep complet : + ~seqDubstepDrop.value +// Stop la sequence en cours : +// ~seqStop.value + +// --- Chaine plusieurs sections via beatChainPlay -------------------- + ~beatChainPlay.value([ + [64, { ~seqIntro.value }], // ne marche PAS dans une seq + [64, { ~kickSteps = ~kK1; ~reload.value }], + ]); + +// Note : ne pas imbriquer ~seqXxx.value dans une sequence. Pour chainer +// des sections complexes, utilise des Routine externes ou enchaine +// plusieurs ~seqLoop.value successifs apres un ~seqStop.value. + + + diff --git a/sound_algo/palette/rhythm/sequences/_helpers.scd b/sound_algo/palette/rhythm/sequences/_helpers.scd new file mode 100644 index 0000000..1fd2ece --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/_helpers.scd @@ -0,0 +1,66 @@ +// ========================================================= +// HELPERS DE BASE -- evaluer ce bloc une fois pour exposer les helpers -- extrait de sequences.scd +// ========================================================= +( +~stepDur = 0.25; // duree d'un step en battement (1/16 a 4/4) +~currentSeq = nil; // Routine en cours + + +// --- ~seqPlay.([[steps, action], ...]) ------------------------------ +// Joue une suite d'actions a intervalles donnes en steps. +// Stoppe toute sequence precedente avant de demarrer. +~seqPlay = { |actions| + ~seqStop.value; + ~currentSeq = Routine({ + actions.do { |entry| + var steps = entry[0]; + var action = entry[1]; + action.value; + (steps * ~stepDur).wait; + }; + ~currentSeq = nil; + }).play(TempoClock.default); + "=== seqPlay : % steps en cours ===".format(actions.collect(_[0]).sum).postln; +}; + + +// --- ~seqStop.() ---------------------------------------------------- +~seqStop = { + ~currentSeq !? { ~currentSeq.stop; ~currentSeq = nil; "=== seqStop ===".postln }; +}; + + +// --- ~seqLoop.(actions, repeats) ------------------------------------ +// Enchaine la liste d'actions en boucle N fois (defaut 1). +~seqLoop = { |actions, repeats = 1| + var expanded = Array.new(actions.size * repeats); + repeats.do { actions.do { |a| expanded.add(a) } }; + ~seqPlay.value(expanded); + "=== seqLoop : % cycles ===".format(repeats).postln; +}; + + +// --- ~seqEvolve.(steps, mutator) ------------------------------------ +// Appelle 'mutator' en boucle toutes les 'steps' steps. La routine +// tourne jusqu'a seqStop. +~seqEvolve = { |stepsBetween = 16, mutator| + ~seqStop.value; + ~currentSeq = Routine({ + inf.do { |i| + mutator.value(i); + (stepsBetween * ~stepDur).wait; + }; + }).play(TempoClock.default); + "=== seqEvolve : mutator chaque % steps ===".format(stepsBetween).postln; +}; + + +// --- ~beatChainPlay.(presets) --------------------------------------- +// Enchaine plusieurs presets sous forme de [stepsToHold, action]. +// Equivalent a ~seqPlay mais sucre syntaxique pour chains de drumkits. +~beatChainPlay = { |presets| + ~seqPlay.value(presets); +}; + +"=== sequences helpers : ~seqPlay ~seqStop ~seqLoop ~seqEvolve ~beatChainPlay ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqacidevolve.scd b/sound_algo/palette/rhythm/sequences/seqacidevolve.scd new file mode 100644 index 0000000..728d322 --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqacidevolve.scd @@ -0,0 +1,33 @@ +// ========================================================= +// Note: lit ~acidNotes / ~acidAccents / ~acidSlides du moteur -- extrait de sequences.scd +// ========================================================= +( +~seqAcidEvolve = { + ~seqPlay.value([ + [16, { + ~acidNotes = [36,36,36,36, 36,36,36,36, 36,36,36,36, 36,36,36,36]; + ~acidAccents = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~acidSlides = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~reload.value; "acid 1: drone tonic".postln; + }], + [16, { + ~acidNotes = [36,0,39,0, 36,0,43,0, 36,0,39,0, 36,0,43,0]; + ~acidAccents = [1,0,0,0, 1,0,1,0, 1,0,0,0, 1,0,1,0]; + ~reload.value; "acid 2: minor 3rd".postln; + }], + [16, { + ~acidNotes = [36,39,43,36, 39,43,48,43, 36,39,43,48, 43,39,36,43]; + ~acidAccents = [1,0,0,1, 0,1,0,0, 1,0,0,1, 0,0,1,0]; + ~acidSlides = [0,1,0,0, 1,0,1,0, 0,0,1,0, 1,1,0,0]; + ~reload.value; "acid 3: arpege".postln; + }], + [16, { + ~acidNotes = [36,43,39,48, 36,46,43,48, 39,43,48,46, 43,39,48,36]; + ~acidAccents = [1,0,1,1, 0,1,0,1, 1,0,1,0, 0,1,1,0]; + ~acidSlides = [1,1,0,1, 0,0,1,1, 0,1,0,1, 1,0,1,0]; + ~reload.value; "acid 4: full chaos".postln; + }], + ]); +}; +"=== ~seqAcidEvolve defini ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqbreakdown.scd b/sound_algo/palette/rhythm/sequences/seqbreakdown.scd new file mode 100644 index 0000000..0e10b19 --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqbreakdown.scd @@ -0,0 +1,34 @@ +// ========================================================= +// ~seqBreakdown -- reduit a melody seule, puis revient -- extrait de sequences.scd +// ========================================================= +( +~seqBreakdown = { + var saveKick, saveHat, saveClap, savePerc, saveSnare; + saveKick = ~kickSteps.copy; + saveHat = ~hatSteps.copy; + saveClap = ~clapSteps.copy; + savePerc = ~percSteps.copy; + saveSnare = ~snareSteps.copy; + ~seqPlay.value([ + [32, { + ~kickSteps = (0!16); + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~snareSteps = (0!16); + ~reload.value; + "breakdown : melody seule".postln; + }], + [16, { + ~kickSteps = saveKick; + ~hatSteps = saveHat; + ~clapSteps = saveClap; + ~percSteps = savePerc; + ~snareSteps = saveSnare; + ~reload.value; + "breakdown : retour".postln; + }], + ]); +}; +"=== ~seqBreakdown defini ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqbuildup.scd b/sound_algo/palette/rhythm/sequences/seqbuildup.scd new file mode 100644 index 0000000..99b30a1 --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqbuildup.scd @@ -0,0 +1,39 @@ +// ========================================================= +// Argument optionnel : duree totale en mesures -- extrait de sequences.scd +// ========================================================= +( +~seqBuildup = { |bars = 4| + var stepsPerBar = 16; + ~seqPlay.value([ + [stepsPerBar, { + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.30; + ~reload.value; + "buildup 1: hat + clap".postln; + }], + [stepsPerBar, { + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,1,0, 1,0,0,0]; + ~clapAmp = 0.36; + ~reload.value; + "buildup 2: hat 8th + clap dense".postln; + }], + [stepsPerBar, { + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~clapSteps = [0,0,1,0, 1,0,1,0, 0,1,0,1, 1,0,1,0]; + ~clapAmp = 0.40; + ~reload.value; + "buildup 3: hat 16th + clap dense".postln; + }], + [stepsPerBar * (bars - 3).max(1), { + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareAmp = 0.5; + ~reload.value; + "buildup 4: snare roll TENSION".postln; + }], + ]); +}; +"=== ~seqBuildup defini ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqdnbswitch.scd b/sound_algo/palette/rhythm/sequences/seqdnbswitch.scd new file mode 100644 index 0000000..03cd7f1 --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqdnbswitch.scd @@ -0,0 +1,35 @@ +// ========================================================= +// ~seqDnBSwitch -- alterne 4 patterns DnB toutes les 32 steps -- extrait de sequences.scd +// ========================================================= +( +~seqDnBSwitch = { |repeats = 2| + ~seqLoop.value([ + [32, { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; + ~kickAmp = 0.55; ~snareAmp = 0.5; ~hatAmp = 0.12; + ~reload.value; "DnB A: amen".postln; + }], + [32, { + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,1]; + ~hatSteps = [1,1,0,1, 1,0,1,1, 1,1,0,1, 1,0,1,1]; + ~reload.value; "DnB B: jungle".postln; + }], + [32, { + ~kickSteps = [1,0,0,0, 0,1,1,0, 0,0,1,0, 0,1,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~reload.value; "DnB C: jump-up".postln; + }], + [32, { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,0,1,1, 0,1,0,1, 1,0,1,1, 0,1,0,1]; + ~reload.value; "DnB D: liquid".postln; + }], + ], repeats); +}; +"=== ~seqDnBSwitch defini ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqdrop.scd b/sound_algo/palette/rhythm/sequences/seqdrop.scd new file mode 100644 index 0000000..5bb7af2 --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqdrop.scd @@ -0,0 +1,41 @@ +// ========================================================= +// ~seqDrop -- 4 steps silence + 1 step impact + reprise -- extrait de sequences.scd +// ========================================================= +( +~seqDrop = { + var saveKick, saveHat, saveClap, savePerc, saveSnare; + saveKick = ~kickSteps.copy; + saveHat = ~hatSteps.copy; + saveClap = ~clapSteps.copy; + savePerc = ~percSteps.copy; + saveSnare = ~snareSteps.copy; + ~seqPlay.value([ + [4, { + ~kickSteps = (0!16); + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~snareSteps = (0!16); + ~reload.value; + "drop : SILENCE".postln; + }], + [1, { + // impact one-shot via clap fort + ~clapSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapAmp = 0.7; + ~reload.value; + "drop : IMPACT".postln; + }], + [16, { + ~kickSteps = saveKick; + ~hatSteps = saveHat; + ~clapSteps = saveClap; ~clapAmp = 0.35; + ~percSteps = savePerc; + ~snareSteps = saveSnare; + ~reload.value; + "drop : DROP !!!".postln; + }], + ]); +}; +"=== ~seqDrop defini ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqdubstepdrop.scd b/sound_algo/palette/rhythm/sequences/seqdubstepdrop.scd new file mode 100644 index 0000000..15bb23f --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqdubstepdrop.scd @@ -0,0 +1,35 @@ +// ========================================================= +// ~seqDubstepDrop -- pre-drop / drop / breakdown -- extrait de sequences.scd +// ========================================================= +( +~seqDubstepDrop = { + ~seqPlay.value([ + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~hatAmp = 0.06; + ~kickAmp = 0.4; ~snareAmp = 0.35; + ~reload.value; "dubstep 1: pre-drop tension".postln; + }], + [4, { + ~kickSteps = (0!16); ~snareSteps = (0!16); ~hatSteps = (0!16); + ~reload.value; "dubstep 2: SILENCE".postln; + }], + [32, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~kickAmp = 0.65; ~snareAmp = 0.55; ~hatAmp = 0.10; + ~reload.value; "dubstep 3: DROP !!!".postln; + }], + [16, { + ~kickSteps = (0!16); ~hatSteps = (0!16); + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~snareAmp = 0.4; + ~reload.value; "dubstep 4: breakdown".postln; + }], + ]); +}; +"=== ~seqDubstepDrop defini ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqhiphoploop.scd b/sound_algo/palette/rhythm/sequences/seqhiphoploop.scd new file mode 100644 index 0000000..ec0d8df --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqhiphoploop.scd @@ -0,0 +1,33 @@ +// ========================================================= +// ~seqHipHopLoop -- 8 mesures de hip-hop avec petites variations -- extrait de sequences.scd +// ========================================================= +( +~seqHipHopLoop = { |repeats = 1| + ~seqLoop.value([ + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~kickAmp = 0.5; ~snareAmp = 0.4; ~hatAmp = 0.10; + ~reload.value; "hip-hop 1: classic".postln; + }], + [16, { + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 0,0,0,0]; + ~hatSteps = [1,0,1,1, 1,0,1,0, 1,0,1,1, 1,0,1,0]; + ~reload.value; "hip-hop 2: ghost kick".postln; + }], + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,1, 1,0,0,0, 0,1,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~reload.value; "hip-hop 3: trap shift".postln; + }], + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~hatSteps = [1,0,1,0, 1,0,1,1, 1,0,1,0, 1,0,1,1]; + ~reload.value; "hip-hop 4: ghost snare".postln; + }], + ], repeats); +}; +"=== ~seqHipHopLoop defini ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqintro.scd b/sound_algo/palette/rhythm/sequences/seqintro.scd new file mode 100644 index 0000000..ccdc541 --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqintro.scd @@ -0,0 +1,35 @@ +// ========================================================= +// mesure 4 : tout -- extrait de sequences.scd +// ========================================================= +( +~seqIntro = { + ~seqPlay.value([ + [16, { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~reload.value; + "intro 1/4 : kick seul".postln; + }], + [16, { + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~reload.value; + "intro 2/4 : + hat".postln; + }], + [16, { + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.35; + ~reload.value; + "intro 3/4 : + clap".postln; + }], + [16, { + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~percAmp = 0.25; + ~reload.value; + "intro 4/4 : tout".postln; + }], + ]); +}; +"=== ~seqIntro defini ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqoutro.scd b/sound_algo/palette/rhythm/sequences/seqoutro.scd new file mode 100644 index 0000000..697691b --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqoutro.scd @@ -0,0 +1,31 @@ +// ========================================================= +// ~seqOutro -- fade-out progressif sur 32 steps -- extrait de sequences.scd +// ========================================================= +( +~seqOutro = { + ~seqPlay.value([ + [8, { + ~percSteps = (0!16); + ~reload.value; + "outro 1 : perc out".postln; + }], + [8, { + ~clapSteps = (0!16); + ~reload.value; + "outro 2 : clap out".postln; + }], + [8, { + ~hatSteps = (0!16); + ~snareSteps = (0!16); + ~reload.value; + "outro 3 : hat + snare out".postln; + }], + [8, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~reload.value; + "outro 4 : kick minimal".postln; + }], + ]); +}; +"=== ~seqOutro defini ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqtechnoloop.scd b/sound_algo/palette/rhythm/sequences/seqtechnoloop.scd new file mode 100644 index 0000000..212dc5b --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqtechnoloop.scd @@ -0,0 +1,26 @@ +// ========================================================= +// Necessite kicks.scd STOCKAGE evalue -- extrait de sequences.scd +// ========================================================= +( +~seqTechnoLoop = { |repeats = 4| + ~seqLoop.value([ + [16, { + ~kickSteps = ~kK1 ? [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~reload.value; "techno A : 4/4".postln; + }], + [16, { + ~kickSteps = ~kK9 ? [1,0,0,0, 1,0,0,1, 1,0,0,0, 1,0,1,0]; + ~reload.value; "techno B : ghost".postln; + }], + [16, { + ~kickSteps = ~kK16 ? [1,0,0,0, 1,0,0,0, 1,0,0,1, 1,0,0,0]; + ~reload.value; "techno C : minimal".postln; + }], + [16, { + ~kickSteps = ~kK10 ? [1,0,1,0, 1,0,0,1, 1,0,1,0, 1,0,1,1]; + ~reload.value; "techno D : syncope".postln; + }], + ], repeats); +}; +"=== ~seqTechnoLoop defini ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqtrance16.scd b/sound_algo/palette/rhythm/sequences/seqtrance16.scd new file mode 100644 index 0000000..86c1507 --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqtrance16.scd @@ -0,0 +1,33 @@ +// ========================================================= +// ~seqTrance16 -- 16 mesures de trance avec build implicite -- extrait de sequences.scd +// ========================================================= +( +~seqTrance16 = { + ~seqPlay.value([ + [64, { + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~clapSteps = (0!16); + ~reload.value; "trance 1-4 : kick + offbeat hat".postln; + }], + [64, { + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.35; + ~reload.value; "trance 5-8 : + clap 2/4".postln; + }], + [64, { + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; + ~percAmp = 0.20; + ~reload.value; "trance 9-12 : + hat 8th + perc".postln; + }], + [64, { + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; + ~snareAmp = 0.45; + ~reload.value; "trance 13-16 : SNARE ROLL final".postln; + }], + ]); +}; +"=== ~seqTrance16 defini ===".postln; +) diff --git a/sound_algo/palette/rhythm/sequences/seqworldevolve.scd b/sound_algo/palette/rhythm/sequences/seqworldevolve.scd new file mode 100644 index 0000000..9ca7a24 --- /dev/null +++ b/sound_algo/palette/rhythm/sequences/seqworldevolve.scd @@ -0,0 +1,40 @@ +// ========================================================= +// ~seqWorldEvolve -- ajout progressif de couches ethno world -- extrait de sequences.scd +// ========================================================= +( +~seqWorldEvolve = { + ~seqPlay.value([ + [16, { + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~hatSteps = (0!16); + ~clapSteps = (0!16); + ~percSteps = (0!16); + ~snareSteps = (0!16); + ~kickAmp = 0.4; + ~reload.value; "world 1: kick base".postln; + }], + [16, { + ~percInst = \tom; ~tomFreq = 95; + ~percSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; + ~percAmp = 0.4; + ~reload.value; "world 2: + congas".postln; + }], + [16, { + ~hatSteps = [1,1,0,1, 1,0,1,1, 0,1,1,1, 1,0,1,1]; + ~hatAmp = 0.08; + ~reload.value; "world 3: + shaker".postln; + }], + [16, { + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~clapAmp = 0.30; + ~reload.value; "world 4: + clap".postln; + }], + [16, { + ~kickSteps = [1,0,0,1, 0,1,0,0, 1,0,1,0, 0,1,0,0]; + ~kickAmp = 0.5; + ~reload.value; "world 5: kick afrobeat".postln; + }], + ]); +}; +"=== ~seqWorldEvolve defini ===".postln; +) diff --git a/sound_algo/palette/scales.scd b/sound_algo/palette/scales.scd new file mode 100644 index 0000000..ac70d60 --- /dev/null +++ b/sound_algo/palette/scales.scd @@ -0,0 +1,109 @@ +// ===================================================================== +// palette/scales.scd -- Scales + helpers de generation melodique +// +// FUSION : ce fichier consolide les scales et helpers melodiques +// precedemment dupliques entre engine.scd et palette/melodies/scales.scd. +// C'est la SEULE source de verite pour les scales et les helpers. +// +// Charge automatiquement par 00_load.scd > CHARGER TOUT, AVANT +// palette/melodies/index.scd et palette/harmonics/index.scd. +// +// Un seul bloc top-level (compatible .load). +// ===================================================================== +( +// ---------- SCALES (toutes en C / 60 base, octaves +/-) ------------- +~scaleMinor = [60, 62, 63, 65, 67, 68, 70, 72]; // mineur naturel +~scaleDorian = [60, 62, 63, 65, 67, 69, 70, 72]; // mineur 6e maj +~scalePhrygian = [60, 61, 63, 65, 67, 68, 70, 72]; // sombre, 2nd min +~scaleHarmonicMin = [60, 62, 63, 65, 67, 68, 71, 72]; // 7e majeure +~scaleMinorPent = [60, 63, 65, 67, 70, 72, 75, 79]; // pentatonique min +~scaleBlues = [60, 63, 65, 66, 67, 70, 72, 75]; // blues +~scaleJapanese = [60, 62, 65, 67, 69, 72, 74, 77]; // hirajoshi-like +~scaleHigh = [72, 75, 77, 79, 82, 84, 87, 89]; // octave aigue +~scaleAcid = [36, 36, 36, 39, 41, 43, 48, 36, 39]; // bias sub +~scaleAcidWide = [24, 36, 36, 39, 41, 43, 48, 51]; // octave -1 a +1 +~scaleAcidHigh = [48, 48, 51, 53, 55, 60, 63]; // acid en octave +1 +// Scales additionnelles (orientales / world) +~scaleHijaz = [60, 61, 64, 65, 67, 68, 70, 72]; // arabe (b2, 3M) +~scaleHirajoshi = [60, 62, 63, 67, 68, 72, 74, 75]; // pent jap sombre +~scaleVietnam = [60, 63, 65, 67, 70, 72, 75, 77]; // pent vietnam min +~scaleVietnamMaj = [60, 62, 64, 67, 69, 72, 74, 76]; // pent vietnam maj +~scaleHungarian = [60, 62, 63, 66, 67, 68, 71, 72]; // gypsy mineur + +// ---------- HELPERS DE GENERATION MELODIQUE ------------------------- + +// Genere une melodie de longueur `len` avec densite donnee +// (0=tout vide, 1=plein). len defaut 32 pas. +~genMelody = { |density = 0.55, scale, len = 32| + var s = scale ?? { ~scaleMinorPent }; + len.collect { if (density.coin) { s.choose } { 0 } }; +}; + +// Mutate : remplace une fraction des notes (proba) par d'autres de la scale +~mutate = { |notes, proba = 0.2, scale| + var s = scale ?? { ~scaleMinorPent }; + notes.collect { |n| + if (n > 0 and: { proba.coin }) { s.choose } { n } + }; +}; + +// Octavate : decale aleatoirement chaque note de +/- 1 octave (proba) +~octavate = { |notes, proba = 0.3| + notes.collect { |n| + if (n > 0 and: { proba.coin }) { + n + ([-12, 12, 12].choose); + } { n }; + }; +}; + +// Transpose : decale toutes les notes (sauf 0) de N demi-tons +~transpose = { |notes, semitones| + notes.collect { |n| if (n > 0) { n + semitones } { 0 } }; +}; + +// Retrograde : inverse l'ordre des notes +~retrograde = { |notes| notes.reverse }; + +// Density : ajoute des notes aleatoires dans les silences (proba) +~densify = { |notes, proba = 0.3, scale| + var s = scale ?? { ~scaleMinorPent }; + notes.collect { |n| + if (n == 0 and: { proba.coin }) { s.choose } { n } + }; +}; + +// Sparsify : enleve aleatoirement des notes (proba) +~sparsify = { |notes, proba = 0.3| + notes.collect { |n| if (proba.coin) { 0 } { n } }; +}; + +// Jitter : multiplie une valeur par un facteur aleatoire (+/- amount) +~jitter = { |val, amount = 0.1| val * rrand(1.0 - amount, 1.0 + amount) }; + +// Genere 16 notes acid en piochant dans la scale (avec biais sub) +~genAcidNotes = { |scale| 16.collect { (scale ?? { ~scaleAcid }).choose } }; +~genAcidAccents = { |density = 0.4| 16.collect { if (density.coin) {1} {0} } }; +~genAcidSlides = { |density = 0.25, len = 16| + len.collect { if (density.coin) {1} {0} }; +}; + +// Genere un pattern kick avec ghost notes (probabilite par step) +~genKickPattern = { |density = 0.3| + // garde les 4 temps forts, ajoute des ghosts aleatoires + 16.collect { |i| + if (i.mod(4) == 0) { 1 } { if (density.coin) { 1 } { 0 } }; + }; +}; + +// Randomize : appelle dans une track pour micro-variations +// proba : chance d'appliquer un changement (0.0 a 1.0) +~randomTweak = { |proba = 0.3| + if (proba.coin) { ~acidCutoff = rrand(400, 1800) }; + if (proba.coin) { ~acidRq = rrand(0.08, 0.25) }; + if (proba.coin) { ~melodyCutoff = rrand(1500, 3500) }; + if ((proba * 0.5).coin) { ~kickClick = rrand(0.05, 0.4) }; + ~reload.value; +}; + +"=== scales + helpers melodiques charges ===".postln; +) diff --git a/sound_algo/palette/styles.scd b/sound_algo/palette/styles.scd new file mode 100644 index 0000000..33a0b15 --- /dev/null +++ b/sound_algo/palette/styles.scd @@ -0,0 +1,123 @@ +// ===================================================================== +// styles.scd +// 5 styles complets : Acid Rave / Deep Dub / Hard Techno / Detroit / Minimal +// +// PREREQUIS : engine.scd evalue. Cmd+Entree sur un bloc pour l'appliquer. +// ===================================================================== + +// ===================================================================== + +// --- ACID RAVE -- 132 BPM, full energy, melodie pentatonique --------- +( +~bpm = 132; +~acidNotes = [ 36, 36, 48, 36, 39, 36, 43, 39, + 36, 41, 36, 39, 43, 36, 36, 41 ]; +~acidAccents = [ 1, 0, 0, 0, 1, 0, 1, 0, + 0, 1, 0, 0, 1, 0, 0, 1 ]; +~acidSlides = [ 0, 0, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0 ]; +~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; +~hatSteps = [ 0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0 ]; +~melodyNotes = [ 60, 0, 67, 0, 70, 0, 67, 65, + 63, 0, 60, 0, 0, 67, 70, 72, + 75, 0, 72, 70, 67, 0, 0, 65, + 63, 60, 0, 67, 70, 0, 72, 0 ]; +~acidCutoff = 800; ~acidRq = 0.15; ~acidDrive = 2.5; ~acidAmp = 0.32; +~kickAmp = 0.5; ~hatAmp = 0.18; +~melodyCutoff = 2400; ~melodyAttack = 0.012; ~melodyRelease = 0.25; ~melodyAmp = 0.16; +TempoClock.default.tempo = ~bpm / 60; +~reload.value; +"=== ACID RAVE 132 BPM ===".postln; +) + +// --- DEEP DUB -- 110 BPM, kick lent, plastikman acid, nappe melodique - +( +~bpm = 110; +~acidNotes = [ 36, 36, 36, 36, 36, 36, 41, 36, + 36, 36, 36, 36, 36, 39, 36, 36 ]; +~acidAccents = [ 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0 ]; +~acidSlides = [ 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 1, 0, 0 ]; +~kickSteps = [ 1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0 ]; +~hatSteps = [ 0,0,0,0, 0,0,1,0, 0,0,0,0, 0,0,1,0 ]; +// Nappe lente arpegee +~melodyNotes = [ 60, 0, 0, 0, 63, 0, 0, 0, + 67, 0, 0, 0, 70, 0, 0, 0, + 72, 0, 0, 0, 70, 0, 0, 0, + 67, 0, 0, 0, 63, 0, 0, 0 ]; +~acidCutoff = 400; ~acidRq = 0.2; ~acidDrive = 1.6; ~acidAmp = 0.25; +~kickAmp = 0.45; ~hatAmp = 0.10; +~melodyCutoff = 1500; ~melodyAttack = 0.08; ~melodyRelease = 1.2; ~melodyAmp = 0.14; +TempoClock.default.tempo = ~bpm / 60; +~reload.value; +"=== DEEP DUB 110 BPM ===".postln; +) + +// --- HARD TECHNO -- 145 BPM, kick double, drive max, pas de melodie --- +( +~bpm = 145; +~acidNotes = [ 36, 39, 48, 36, 41, 39, 43, 36, + 39, 41, 36, 48, 39, 36, 41, 39 ]; +~acidAccents = [ 1, 0, 1, 0, 0, 1, 0, 1, + 0, 0, 1, 0, 1, 0, 0, 1 ]; +~acidSlides = [ 1, 0, 0, 1, 0, 0, 1, 0, + 0, 1, 0, 1, 0, 1, 0, 0 ]; +~kickSteps = [ 1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0 ]; +~hatSteps = [ 0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0 ]; +~melodyNotes = (0 ! 32); +~acidCutoff = 1200; ~acidRq = 0.10; ~acidDrive = 3.5; ~acidAmp = 0.32; +~kickAmp = 0.5; ~hatAmp = 0.16; ~melodyAmp = 0; +TempoClock.default.tempo = ~bpm / 60; +~reload.value; +"=== HARD TECHNO 145 BPM ===".postln; +) + +// --- DETROIT -- 128 BPM, melodie stabs en mineur --------------------- +( +~bpm = 128; +~acidNotes = [ 36, 36, 48, 36, 39, 36, 43, 39, + 36, 41, 36, 39, 43, 36, 36, 41 ]; +~acidAccents = [ 1, 0, 0, 0, 1, 0, 1, 0, + 0, 1, 0, 0, 1, 0, 0, 1 ]; +~acidSlides = [ 0, 0, 1, 0, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 0, 0, 0 ]; +~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; +~hatSteps = [ 0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0 ]; +~melodyNotes = [ 63, 0, 0, 0, 70, 0, 67, 0, + 65, 0, 0, 0, 70, 0, 72, 0, + 63, 0, 0, 0, 67, 0, 70, 0, + 65, 0, 60, 0, 67, 0, 0, 0 ]; +~acidCutoff = 700; ~acidRq = 0.18; ~acidDrive = 2.2; ~acidAmp = 0.28; +~kickAmp = 0.5; ~hatAmp = 0.15; +~melodyCutoff = 2200; ~melodyAttack = 0.005; ~melodyRelease = 0.1; ~melodyAmp = 0.18; +TempoClock.default.tempo = ~bpm / 60; +~reload.value; +"=== DETROIT 128 BPM ===".postln; +) + +// --- MINIMAL -- 124 BPM, epure, melodie 2 notes ---------------------- +( +~bpm = 124; +~acidNotes = [ 36, 0, 0, 0, 36, 0, 0, 0, + 36, 0, 0, 41, 36, 0, 0, 0 ]; +~acidAccents = [ 1, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0 ]; +~acidSlides = [ 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 0 ]; +~kickSteps = [ 1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0 ]; +~hatSteps = [ 0,0,0,0, 0,0,1,0, 0,0,0,0, 0,0,1,0 ]; +~melodyNotes = [ 60, 0, 0, 0, 0, 0, 0, 0, + 67, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 0, 0, 0, 0, + 65, 0, 0, 0, 0, 0, 0, 0 ]; +~acidCutoff = 500; ~acidRq = 0.25; ~acidDrive = 1.5; ~acidAmp = 0.3; +~kickAmp = 0.5; ~hatAmp = 0.08; +~melodyCutoff = 1800; ~melodyAttack = 0.02; ~melodyRelease = 0.6; ~melodyAmp = 0.13; +TempoClock.default.tempo = ~bpm / 60; +~reload.value; +"=== MINIMAL 124 BPM ===".postln; +) + + + diff --git a/sound_algo/palette/timbres.scd b/sound_algo/palette/timbres.scd new file mode 100644 index 0000000..8c9d991 --- /dev/null +++ b/sound_algo/palette/timbres.scd @@ -0,0 +1,207 @@ +// ===================================================================== +// timbres.scd +// Timbres melodie selectionnables via ~melodyInst (L1-L6 base + L7-L18 extra) +// +// PREREQUIS : engine.scd evalue. Cmd+Entree sur un bloc pour l'appliquer. +// ===================================================================== + +// ===================================================================== + +// --- L1 : LEAD (defaut) -- saw+pulse detunes + chorus stereo ---------- +( ~melodyInst = \lead; ~melodyAmp = 0.16; ~melodyAttack = 0.012; ~melodyRelease = 0.25; + ~reload.value; "L1 lead".postln; ) + +// --- L2 : PAD -- super-saw 5 voix, attack/release longs --------------- +( ~melodyInst = \pad; ~melodyAmp = 0.14; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; + ~reload.value; "L2 pad".postln; ) + +// --- L3 : PLUCK -- Karplus-Strong, decay naturel comme une corde ------ +( ~melodyInst = \pluck; ~melodyAmp = 0.22; ~melodyAttack = 0.001; ~melodyRelease = 0.5; + ~melodyCutoff = 5000; + ~reload.value; "L3 pluck".postln; ) + +// --- L4 : FM BELL DUBSTEP -- wobble + sub MASSIF + saturation ------- +( ~melodyInst = \fmBell; ~melodyAmp = 0.18; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; + ~melodyCutoff = 400; + ~melodyDrive = 3.5; + ~melodyWobbleRate = 4; ~melodyWobbleDepth = 1800; ~melodyWobbleShape = 0; + ~melodySubAmt = 0.85; // SUB MASSIF + ~reload.value; "L4 fmBell DUBSTEP sub massif".postln; ) + +// --- Wobble rate : 1/4 (slow) -> 1/16 (fast) ---------------------- +( ~melodyWobbleRate = 2; ~reload.value; "wobble 1/4".postln; ) // lent +( ~melodyWobbleRate = 4; ~reload.value; "wobble 1/8".postln; ) // standard +( ~melodyWobbleRate = 8; ~reload.value; "wobble 1/16".postln; ) // rapide +( ~melodyWobbleRate = 16; ~reload.value; "wobble 1/32".postln; ) // tres rapide + +// --- Wobble shape : smooth (LFTri) vs chop (LFPulse) --------------- +( ~melodyWobbleShape = 0; ~reload.value; "wobble smooth".postln; ) +( ~melodyWobbleShape = 1; ~reload.value; "wobble chop".postln; ) + +// --- Wobble depth : ouverture du filtre --------------------------- +( ~melodyWobbleDepth = 800; ~reload.value; "wobble petit".postln; ) +( ~melodyWobbleDepth = 1800; ~reload.value; "wobble normal".postln; ) +( ~melodyWobbleDepth = 3500; ~reload.value; "wobble enorme".postln; ) + +// --- Sub level (poid du sub-bass dubstep) ------------------------- +( ~melodySubAmt = 0.2; ~reload.value; "sub leger".postln; ) +( ~melodySubAmt = 0.5; ~reload.value; "sub normal".postln; ) +( ~melodySubAmt = 0.8; ~reload.value; "sub massif".postln; ) + +// --- L5 : STAB -- court et sature, parfait pour Detroit --------------- +( ~melodyInst = \stab; ~melodyAmp = 0.18; ~melodyAttack = 0.001; ~melodyRelease = 0.06; + ~melodyCutoff = 1500; ~melodyDrive = 2.8; + ~reload.value; "L5 stab".postln; ) + +// --- L6 : SAW3 -- 3 saws empilees, large ----------------------------- +( ~melodyInst = \saw3; ~melodyAmp = 0.16; ~melodyAttack = 0.005; ~melodyRelease = 0.25; + ~melodyCutoff = 2200; ~melodyDrive = 1.4; + ~reload.value; "L6 saw3".postln; ) + +// --- TIMBRE ALEATOIRE ------------------------------------------------ +( +~melodyInst = [\lead, \pad, \pluck, \fmBell, \stab, \saw3].choose; +~reload.value; +("L random : " ++ ~melodyInst).postln; +) + +// --- ROTATION AUTOMATIQUE des timbres (toutes les 16s) --------------- +( +~lRotate !? { ~lRotate.stop }; +~lRotate = Routine({ + var insts = [\lead, \pad, \pluck, \fmBell, \stab, \saw3]; + inf.do { |k| + ~melodyInst = insts.wrapAt(k); + ("L rotate -> " ++ ~melodyInst).postln; + ~reload.value; + 16.wait; + }; +}).play; +"L rotate ON".postln; +) +( ~lRotate !? { ~lRotate.stop }; "L rotate OFF".postln; ) + + + + + +// ===================================================================== +// TIMBRES EXTRA (necessite synthdefs_extra.scd evalue) +// ===================================================================== + +// --- L7 : SQUARE LEAD (chiptune / 8-bit) ---------------------------- +( ~melodyInst = \squareLead; ~melodyAmp = 0.16; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 5000; + ~reload.value; "L7 squareLead chiptune".postln; ) + +// --- L8 : FM LEAD (DX-style) ---------------------------------------- +( ~melodyInst = \fmLead; ~melodyAmp = 0.16; + ~melodyAttack = 0.003; ~melodyRelease = 0.4; ~melodyCutoff = 6000; + ~reload.value; "L8 fmLead".postln; ) + +// --- L9 : ORGAN LEAD (Hammond drawbar) ------------------------------ +( ~melodyInst = \organLead; ~melodyAmp = 0.14; + ~melodyAttack = 0.005; ~melodyRelease = 0.15; ~melodyCutoff = 4500; + ~reload.value; "L9 organLead".postln; ) + +// --- L10 : HARD LEAD (saw avec hard sync) --------------------------- +( ~melodyInst = \hardLead; ~melodyAmp = 0.16; + ~melodyAttack = 0.002; ~melodyRelease = 0.25; ~melodyCutoff = 5500; + ~reload.value; "L10 hardLead".postln; ) + +// --- L11 : WARM PAD (super-saw 7 voix lush) ------------------------- +( ~melodyInst = \warmPad; ~melodyAmp = 0.13; + ~melodyAttack = 0.6; ~melodyRelease = 2.0; ~melodyCutoff = 1800; + ~reload.value; "L11 warmPad".postln; ) + +// --- L12 : STRINGS (ensemble orchestral) ---------------------------- +( ~melodyInst = \strings; ~melodyAmp = 0.15; + ~melodyAttack = 0.3; ~melodyRelease = 1.2; ~melodyCutoff = 3500; + ~reload.value; "L12 strings".postln; ) + +// --- L13 : CHOIR (voix synthetiques avec formants) ------------------ +( ~melodyInst = \choir; ~melodyAmp = 0.15; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2500; + ~reload.value; "L13 choir".postln; ) + +// --- L14 : FM BASS (techno ratio 2:1) ------------------------------- +( ~melodyInst = \fmBass; ~melodyAmp = 0.30; + ~melodyAttack = 0.003; ~melodyRelease = 0.2; ~melodyCutoff = 1800; + ~reload.value; "L14 fmBass".postln; ) + +// --- L15 : SUB BOOM (808 amplifie) ---------------------------------- +( ~melodyInst = \subBoom; ~melodyAmp = 0.36; + ~melodyAttack = 0.005; ~melodyRelease = 0.6; + ~reload.value; "L15 subBoom".postln; ) + +// --- L16 : HANDPAN (steel drum) ------------------------------------- +( ~melodyInst = \handpan; ~melodyAmp = 0.20; + ~melodyAttack = 0.001; ~melodyRelease = 1.5; ~melodyCutoff = 5000; + ~reload.value; "L16 handpan".postln; ) + +// --- L17 : FLUTE (bambou avec souffle) ------------------------------ +( ~melodyInst = \flute; ~melodyAmp = 0.16; + ~melodyAttack = 0.08; ~melodyRelease = 0.3; ~melodyCutoff = 3500; + ~reload.value; "L17 flute".postln; ) + +// --- L18 : DRONE (note longue avec modulation) --------------------- +( ~melodyInst = \drone; ~melodyAmp = 0.16; + ~melodyAttack = 1.5; ~melodyRelease = 3.0; ~melodyCutoff = 1800; + ~reload.value; "L18 drone".postln; ) + + +// ===================================================================== +// TIMBRES AUTHENTIQUES (L19-L28) -- necessite synth/_index.scd +// ===================================================================== + +// --- L19 : SUPERSAW (trance JP-8000 7-voice) ----------------------- +( ~melodyInst = \supersaw; ~melodyAmp = 0.15; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 4500; + ~reload.value; "L19 supersaw trance".postln; ) + +// --- L20 : RHODES (Detroit DX7 e-piano) ----------------------------- +( ~melodyInst = \rhodes; ~melodyAmp = 0.20; + ~melodyAttack = 0.002; ~melodyRelease = 0.8; ~melodyCutoff = 4000; + ~reload.value; "L20 rhodes Detroit".postln; ) + +// --- L21 : HOOVERBASS (Alpha Juno / gabber / trance) --------------- +( ~melodyInst = \hooverbass; ~melodyAmp = 0.22; + ~melodyAttack = 0.001; ~melodyRelease = 0.2; ~melodyCutoff = 3500; + ~reload.value; "L21 hooverbass".postln; ) + +// --- L22 : VOCAL PAD (formants vocaux ah/eh) ----------------------- +( ~melodyInst = \vocalPad; ~melodyAmp = 0.18; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~reload.value; "L22 vocalPad".postln; ) + +// --- L23 : DIDGERIDOO (drone aborigene + growl) ------------------- +( ~melodyInst = \didgeridoo; ~melodyAmp = 0.22; + ~melodyAttack = 0.5; ~melodyRelease = 1.0; + ~reload.value; "L23 didgeridoo".postln; ) + +// --- L24 : GUZHENG (harpe chinoise + bend) ------------------------- +( ~melodyInst = \guzheng; ~melodyAmp = 0.22; + ~melodyAttack = 0.001; ~melodyRelease = 1.5; ~melodyCutoff = 5500; + ~reload.value; "L24 guzheng".postln; ) + +// --- L25 : SHAKUHACHI (flute japonaise + breath) ------------------- +( ~melodyInst = \shakuhachi; ~melodyAmp = 0.18; + ~melodyAttack = 0.12; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~reload.value; "L25 shakuhachi".postln; ) + +// --- L26 : REESE DnB (FM brutal hard DnB) -------------------------- +( ~melodyInst = \reeseDnB; ~melodyAmp = 0.30; + ~melodyAttack = 0.005; ~melodyRelease = 0.2; ~melodyCutoff = 800; + ~melodyDrive = 4.0; + ~reload.value; "L26 reeseDnB".postln; ) + +// --- TRACKS DE PERCUSSION SUPPLEMENTAIRES ------------------------ +// Ces SynthDefs s'utilisent via Synth(\xxx) plutot que ~melodyInst : + (Synth(\taiko, [\freq, 80, \amp, 0.5]);) + (Synth(\tabla, [\freq, 220, \amp, 0.4]);) + (Synth(\kickGabber, [\amp, 0.6]);) + (Synth(\kick808, [\freq, 35, \decay, 1, \amp, 0.7]);) + (Synth(\snareGated, [\freq, 200, \decay, 0.2, \amp, 0.5]);) + (Synth(\scratch, [\dur, 0.3, \freq, 800, \amp, 0.4]);) diff --git a/sound_algo/palette/tweaks_template.scd b/sound_algo/palette/tweaks_template.scd new file mode 100644 index 0000000..23072fd --- /dev/null +++ b/sound_algo/palette/tweaks_template.scd @@ -0,0 +1,235 @@ +// ===================================================================== +// tweaks_template.scd -- Tweaks live communs charges par toutes les tracks +// +// Ne PAS evaluer le fichier en bloc. Cmd+Entree sur une ligne au choix +// pendant qu'une track tourne. +// ===================================================================== + + +// ===================================================================== +// TWEAKS LIVE RICHES -- Cmd+Entree sur une ligne pendant la track +// ===================================================================== + +// === STOP / CONTROLE ============================================ +(~track.stop;) + +// === MUTE INSTANTANE par voix =================================== +(~kickAmp = 0; ~reload.value;) +(~kickAmp = 0.5; ~reload.value;) +(~hatAmp = 0; ~reload.value;) +(~hatAmp = 0.18; ~reload.value;) +(~snareAmp = 0; ~reload.value;) +(~snareAmp = 0.5; ~reload.value;) +(~clapAmp = 0; ~reload.value;) +(~clapAmp = 0.35; ~reload.value;) +(~percAmp = 0; ~reload.value;) +(~percAmp = 0.25; ~reload.value;) +(~melodyAmp = 0; ~reload.value;) +(~melodyAmp = 0.18;~reload.value;) +(~harmonyAmp = 0; ~reload.value;) +(~harmonyAmp = 0.14;~reload.value;) + +// === SOLO une piste (mute les autres) =========================== +(~kickAmp=0;~hatAmp=0;~clapAmp=0;~melodyAmp=0;~harmonyAmp=0;~snareAmp=0.5;~reload.value;) // solo snare +(~kickAmp=0;~hatAmp=0;~clapAmp=0;~snareAmp=0;~harmonyAmp=0;~melodyAmp=0.2;~reload.value;) // solo melody +(~kickAmp=0.5;~hatAmp=0;~snareAmp=0;~clapAmp=0;~melodyAmp=0;~harmonyAmp=0;~reload.value;) // solo kick + +// === HARMONY -- 2e voix melodique ============================== +(~enableHarmony.(\off);) // mute harmony +(~enableHarmony.(\third);) // tierce harmonisee +(~enableHarmony.(\fifth);) // quinte harmonisee +(~enableHarmony.(\counter);) // contre-melodie inversee +(~enableHarmony.(\bassline);) // bass 2 octaves -2 +(~enableHarmony.(\dubBass);) // dub bass long sustain +(~enableHarmony.(\arp);) // arpege octave +1 en 1/32 +(~enableHarmony.(\chord);) // chord pad sustained +(~enableHarmony.(\tranceLayer);) // organ +1 octave +(~enableHarmony.(\cinematic);) // strings layer + +// === SWITCH SYNTH MELODIE ======================================= +(~melodyInst = \lead; ~reload.value;) +(~melodyInst = \pad; ~reload.value;) +(~melodyInst = \warmPad; ~reload.value;) +(~melodyInst = \pluck; ~reload.value;) +(~melodyInst = \fmBell; ~reload.value;) +(~melodyInst = \stab; ~reload.value;) +(~melodyInst = \saw3; ~reload.value;) +(~melodyInst = \squareLead; ~reload.value;) +(~melodyInst = \fmLead; ~reload.value;) +(~melodyInst = \organLead; ~reload.value;) +(~melodyInst = \hardLead; ~reload.value;) +(~melodyInst = \strings; ~reload.value;) +(~melodyInst = \choir; ~reload.value;) +(~melodyInst = \fmBass; ~reload.value;) +(~melodyInst = \subBoom; ~reload.value;) +(~melodyInst = \handpan; ~reload.value;) +(~melodyInst = \flute; ~reload.value;) +(~melodyInst = \drone; ~reload.value;) +(~melodyInst = \koto; ~reload.value;) +(~melodyInst = \erhu; ~reload.value;) +(~melodyInst = \pipa; ~reload.value;) +(~melodyInst = \growl; ~reload.value;) + +// === CUTOFF / RESONANCE ========================================= +(~melodyCutoff = 400; ~reload.value;) +(~melodyCutoff = 1200; ~reload.value;) +(~melodyCutoff = 3000; ~reload.value;) +(~melodyCutoff = 6000; ~reload.value;) +(~melodyRq = 0.05; ~reload.value;) // resonance EXTREME (fmBell/growl) +(~melodyRq = 0.2; ~reload.value;) +(~melodyRq = 0.5; ~reload.value;) + +// === DRIVE / VOLUME ============================================= +(~melodyDrive = 1.0; ~reload.value;) +(~melodyDrive = 2.5; ~reload.value;) +(~melodyDrive = 5.0; ~reload.value;) +(~melodyBoost = 1.0; ~reload.value;) +(~melodyBoost = 2.5; ~reload.value;) + +// === SIDECHAIN PUMP ============================================= +(~acidScAmt = 0; ~reload.value;) // acid sans duck +(~acidScAmt = 0.7; ~reload.value;) // acid normal +(~acidScAmt = 0.95; ~reload.value;) // acid pump fort +(~leadScAmt = 0; ~reload.value;) +(~leadScAmt = 0.5; ~reload.value;) +(~leadScAmt = 0.9; ~reload.value;) +(~kickScShape = 0.08; ~reload.value;) // pump court +(~kickScShape = 0.18; ~reload.value;) // normal +(~kickScShape = 0.35; ~reload.value;) // pump long french touch + +// === KICK CHARACTER ============================================= +(~kickFreq=42; ~kickPitchAmt=2.0; ~kickDecay=0.5; ~kickDrive=1.0; ~kickClick=0.05; ~reload.value;) // T5 sub +(~kickFreq=55; ~kickPitchAmt=3.0; ~kickDecay=0.32;~kickDrive=1.3; ~kickClick=0.20; ~reload.value;) // T1 rond +(~kickFreq=65; ~kickPitchAmt=4.0; ~kickDecay=0.18;~kickDrive=1.8; ~kickClick=0.45; ~reload.value;) // T2 claquant +(~kickFreq=48; ~kickPitchAmt=2.5; ~kickDecay=0.6; ~kickDrive=1.2; ~kickClick=0.08; ~reload.value;) // T3 boomy +(~kickFreq=60; ~kickPitchAmt=5.0; ~kickDecay=0.28;~kickDrive=3.5; ~kickClick=0.30; ~reload.value;) // T4 distordu +(~kickFreq=70; ~kickPitchAmt=3.5; ~kickDecay=0.22;~kickDrive=2.0; ~kickClick=0.35; ~reload.value;) // T6 punchy + +// === DUBSTEP WOBBLE (si melodyInst = fmBell ou growl) =========== +(~melodyWobbleRate = 2; ~reload.value;) // 1/4 +(~melodyWobbleRate = 4; ~reload.value;) // 1/8 +(~melodyWobbleRate = 8; ~reload.value;) // 1/16 +(~melodyWobbleRate = 16; ~reload.value;) // 1/32 +(~melodyWobbleShape = 0; ~reload.value;) // smooth +(~melodyWobbleShape = 1; ~reload.value;) // chop square +(~melodyWobbleDepth = 1000;~reload.value;) // sub +(~melodyWobbleDepth = 2500;~reload.value;) // normal +(~melodyWobbleDepth = 4000;~reload.value;) // EXTREME +(~melodySubAmt = 0.3; ~reload.value;) // sub leger +(~melodySubAmt = 0.7; ~reload.value;) // sub normal +(~melodySubAmt = 1.0; ~reload.value;) // sub MASSIF + +// === ACID 303 ==================================================== +(~acidCutoff = 200; ~reload.value;) +(~acidCutoff = 800; ~reload.value;) +(~acidCutoff = 2000; ~reload.value;) +(~acidRq = 0.05; ~reload.value;) // resonance acide EXTREME +(~acidRq = 0.15; ~reload.value;) +(~acidDrive = 1.0; ~reload.value;) +(~acidDrive = 4.5; ~reload.value;) + +// === PATTERNS RYTHME (kick) ===================================== +(~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~reload.value;) // 4/4 +(~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; ~reload.value;) // half-time +(~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~reload.value;) // gabber double +(~kickSteps = [1,0,0,1, 0,0,1,0, 1,0,0,0, 0,1,0,0]; ~reload.value;) // syncope +(~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~reload.value;) // amen +(~kickSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~reload.value;) // mute + +// === PATTERNS HAT ================================================ +(~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~reload.value;) // offbeat +(~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~reload.value;) // 16ths +(~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,1,0]; ~reload.value;) // trap triplets +(~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~reload.value;) // breakbeat + +// === MELODIES (charger une mélodie sans changer le timbre) ======= +(~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); ~reload.value;) +(~melodyNotes = ~genMelody.(0.7, ~scaleMinor); ~reload.value;) +(~melodyNotes = ~genMelody.(0.5, ~scaleDorian); ~reload.value;) +(~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); ~reload.value;) +(~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin);~reload.value;) +(~melodyNotes = ~genMelody.(0.6, ~scaleJapanese); ~reload.value;) +(~melodyNotes = ~mutate.(~melodyNotes, 0.3); ~reload.value;) +(~melodyNotes = ~transpose.(~melodyNotes, 5); ~reload.value;) // +4te +(~melodyNotes = ~transpose.(~melodyNotes, -3);~reload.value;) // -tierce min +(~melodyNotes = ~transpose.(~melodyNotes, 12);~reload.value;) // +1 octave +(~melodyNotes = ~retrograde.(~melodyNotes); ~reload.value;) +(~melodyNotes = ~octavate.(~melodyNotes, 0.4);~reload.value;) +(~melodyNotes = ~densify.(~melodyNotes, 0.3); ~reload.value;) +(~melodyNotes = ~sparsify.(~melodyNotes, 0.4);~reload.value;) + +// === TEMPO ======================================================= +(TempoClock.default.tempo = 100/60;) +(TempoClock.default.tempo = 120/60;) +(TempoClock.default.tempo = 132/60;) +(TempoClock.default.tempo = 145/60;) +(TempoClock.default.tempo = 174/60;) +(TempoClock.default.tempo = (~bpm * 0.95)/60;) // slow down 5% +(TempoClock.default.tempo = (~bpm * 1.05)/60;) // speed up 5% + +// === FX ONESHOTS ================================================= +(Synth(\impact, [\freq, 45, \decay, 1.5, \amp, 0.5]);) +(Synth(\impact, [\freq, 30, \decay, 3.0, \amp, 0.7]);) // gros boom +(Synth(\riser, [\dur, 4, \startCutoff, 200, \endCutoff, 8000, \amp, 0.25]);) +(Synth(\riser, [\dur, 8, \startCutoff, 300, \endCutoff, 10000, \amp, 0.30]);) +(Synth(\riser, [\dur, 16, \startCutoff, 400, \endCutoff, 12000, \amp, 0.35]);) // long +(Synth(\sweep, [\dur, 4, \startCutoff, 8000,\endCutoff, 200, \amp, 0.25]);) // descend +(Synth(\sweep, [\dur, 8, \startCutoff, 12000,\endCutoff,200, \amp, 0.35]);) // long descend +(Synth(\crash, [\decay, 1.5, \amp, 0.3]);) +(Synth(\crash, [\decay, 4.0, \amp, 0.4]);) // crash long +(Synth(\gong, [\freq, 40, \decay, 8, \amp, 0.6]);) // gong profond +(Synth(\gong, [\freq, 80, \decay, 5, \amp, 0.4]);) // gong haut + +// === FILLS et ROLLS ============================================= +(~snareFill.(8, 1, 0.3, 0.5);) // 8 hits 1s +(~snareFill.(16, 2, 0.2, 0.55);) // 16 hits 2s accelerando +(~snareFill.(32, 2, 0.15, 0.6);) // 32 hits frenetic +(~tomFill.value;) // descente 4 toms +(8.do { Synth(\hat, [\amp, 0.15, \decay, 0.03]); 0.075.wait };) // hat roll + +// === VINYL TEXTURE (continu) ==================================== +(~vinyl !? { ~vinyl.free }; ~vinyl = Synth(\vinyl, [\amp, 0.08]); "vinyl ON".postln;) +(~vinyl !? { ~vinyl.free; ~vinyl = nil }; "vinyl OFF".postln;) + +// === FILTER SWEEP AUTOMATIQUE (continu, infini) ================= +( +~filterSweep !? { ~filterSweep.stop }; +~filterSweep = Routine({ + inf.do { |k| + ~melodyCutoff = 200 + ((k / 32 * 2 * pi).sin.abs * 4500); + ~reload.value; + 0.25.wait; + }; +}).play; +"filter sweep ON".postln; +) +( ~filterSweep !? { ~filterSweep.stop }; "filter sweep OFF".postln; ) + +// === DROP (cut tout sauf melody pendant 2s puis relance) ========= +( +Routine({ + var oldKick = ~kickAmp; var oldHat = ~hatAmp; var oldClap = ~clapAmp; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~reload.value; + Synth(\sweep, [\dur, 2, \startCutoff, 8000, \endCutoff, 200, \amp, 0.4]); + 2.wait; + Synth(\impact, [\freq, 35, \decay, 2, \amp, 0.7]); + ~kickAmp = oldKick; ~hatAmp = oldHat; ~clapAmp = oldClap; ~reload.value; +}).play; +"=== DROP CUT ===".postln; +) + +// === BREAK (mute tout sauf melody, 8 secondes, puis riser + retour) == +( +Routine({ + var oldKick = ~kickAmp; var oldHat = ~hatAmp; var oldClap = ~clapAmp; + var oldSnare = ~snareAmp; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~reload.value; + 8.wait; + Synth(\riser, [\dur, 4, \startCutoff, 400, \endCutoff, 11000, \amp, 0.35]); + 4.wait; + Synth(\impact, [\freq, 38, \decay, 2, \amp, 0.6]); + ~kickAmp = oldKick; ~hatAmp = oldHat; ~clapAmp = oldClap; ~snareAmp = oldSnare; + ~reload.value; +}).play; +"=== BREAK 12s ===".postln; +) diff --git a/sound_algo/pd/README.md b/sound_algo/pd/README.md new file mode 100644 index 0000000..3fb5b0c --- /dev/null +++ b/sound_algo/pd/README.md @@ -0,0 +1,122 @@ +# PD <-> SC bridge + +Pure Data ↔ SuperCollider via OSC bidirectionnel. + +## Installation + +PD a été installé via `brew install --cask pd` (Pd-vanilla 0.56-2 dans `/Applications/Pd-0.56-2.app`). + +## Architecture + +``` + PureData SuperCollider + ┌──────────┐ OSC :57120 ┌──────────┐ + │ bridge.pd│ ──────────────> │ sclang │ + │ (GUI) │ <────────────── │ engine │ + └──────────┘ OSC :57121 └──────────┘ +``` + +- **PD → SC** : envoie OSC sur `localhost:57120` (port standard sclang) +- **SC → PD** : envoie OSC sur `localhost:57121` (port `udpreceive` du patch) + +## Workflow + +### 1. Côté SC + +```supercollider +// 1. Charge tout le projet +// (00_load.scd > CHARGER TOUT) + +// 2. Charge le bridge +("/Users/electron/Documents/Projets_Creatifs/sound_algo/pd/bridge.scd").load; +// OU ouvre pd/bridge.scd, Cmd+Entree sur le bloc SETUP +``` + +### 2. Côté PD + +Ouvre `pd/bridge.pd` dans Pure Data (Pd-0.56-2.app). + +Le patch contient : +- **TRANSPORT** : boutons PLAY / STOP / CHOKE / DROP / BREAKDOWN / BUILDUP / FREEZE / GLITCH +- **FADERS_VOIX** : 8 sliders verticaux (kick / hat / snare / clap / perc / acid / melody / harmony) + master +- **TWEAKS_FILTRES** : sliders horizontaux (melody_cutoff / acid_cutoff / bpm) +- **FX_PRESETS** : boutons (dub / space / trance / industrial / cosmic / dry) + +Les sliders et boutons envoient OSC vers SC au format `/<addr> <value>`. + +### 3. Test + +Clique sur **PLAY** dans le patch PD → tu dois entendre le beat lancé par SC. + +## Messages OSC supportés (PD → SC) + +| Adresse | Args | Action | +|---|---|---| +| `/play` | — | Lance les 8 Pdef sequencer | +| `/stop` | — | Stop les Pdef | +| `/choke` | — | Stop tracks + Pdef | +| `/drop` | — | `~drop.()` | +| `/breakdown` | — | `~breakdown.(8)` | +| `/buildup` | — | `~buildup.(8)` | +| `/freeze` | — | `~freeze.(4)` | +| `/glitch` | — | `~glitch.(2)` | +| `/stutter` | rate, dur | `~stutter.(rate, dur)` | +| `/vol/<voie>` | val | `~setVol.(\voie, val)` | +| `/vol/master` | val | `~masterVol.(val)` | +| `/tweak/melodyCutoff` | hz | `~melodyCutoff = hz` | +| `/tweak/acidCutoff` | hz | `~acidCutoff = hz` | +| `/tweak/bpm` | bpm | TempoClock | +| `/tweak/melodyRq` | val | `~melodyRq = val` | +| `/fx/preset` | name | `~fxPreset.(\name)` | +| `/fx/send` | voie, fx, amount | `~send.(\voie, \fx, amount)` | +| `/fx/freeze` | 0\|1 | freeze reverb | +| `/vcf/on` | type, freq, q | `~vcfOn.(\type, freq, q)` | +| `/vcf/off` | — | `~vcfOff.()` | +| `/lfo/to` | param, rate, depth, shape, center | `~lfoTo.(...)` | +| `/lfo/stop` | param | `~lfoStopVar.(\param)` | +| `/scene/save` | name | `~saveScene.(\name)` | +| `/scene/load` | name | `~loadScene.(\name)` | +| `/jump` | track, slug | `~jumpTo.(\track, \slug)` | +| `/melody` | name | `~useMelody.(\name)` | +| `/melody/genre` | genre | `~melodyByGenre.(\genre)` | +| `/preset` | name | `~mixPreset.(\name)` | + +## Messages OSC envoyés (SC → PD) + +| Adresse | Args | Description | +|---|---|---| +| `/sc/status` | 1 | heartbeat (1Hz) | +| `/sc/cpu` | float | CPU usage % | +| `/sc/synths` | int | nb de synths actifs | + +## Audio + +Ce bridge gère les **messages de contrôle** (OSC). Pour router l'audio entre PD et SC : + +- **Option 1 — JACK** : `brew install jack` puis route `Pd → SC` via JACK +- **Option 2 — BlackHole** : `brew install --cask blackhole-2ch` (loopback virtuel macOS) +- **Option 3 — multi-out** : SC sort sur device A, PD lit device A en input + +Aucune route audio n'est configurée par défaut — chaque app sort sur son propre device audio. + +## Stop + +```supercollider +~pdDisconnect.(); // libere les OSCdef + status loop +``` + +Et ferme le patch PD normalement (Cmd+Q). + +## Ajouter un nouveau message + +**Côté PD** : ajoute un objet `[msg send /mon/addresse $1]` connecté à un slider/bouton, le tout connecté à `[netsend -u -b]`. + +**Côté SC** : ajoute un `OSCdef` dans `pd/bridge.scd` : +```supercollider +~pd[\defs].add(OSCdef(\pdMonAction, { |msg| + ("recu : " ++ msg).postln; + // ... action +}, '/mon/addresse')); +``` + +Re-évalue le bloc SETUP. diff --git a/sound_algo/pd/bridge.pd b/sound_algo/pd/bridge.pd new file mode 100644 index 0000000..0d96caa --- /dev/null +++ b/sound_algo/pd/bridge.pd @@ -0,0 +1,302 @@ +#N canvas 80 80 1100 820 12; +#X obj 10 10 cnv 15 1080 60 empty empty PD<->SC_BRIDGE 18 22 0 16 -261681 -1 0; +#X text 30 30 sound_algo control panel - OSC vers SuperCollider; +#X text 30 48 status:; +#X obj 90 48 cnv 15 200 16 empty empty CONNECTED_to_SC 4 8 0 10 -257985 -34 0; +#X text 320 30 PORT cible:; +#X floatatom 410 30 6 1024 65535 0 - port-target -; +#X obj 490 26 bng 22 250 50 0 reconnect-bang empty RECONNECT 30 8 0 10 -204786 -1 -1; +#X obj 620 26 bng 22 250 50 0 dsp-toggle empty DSP_ON_OFF 30 8 0 10 -1109 -1 -1; +#X text 770 30 SC->PD on :57121; +#X text 770 50 PD->SC default :57122; +#X obj 10 80 cnv 15 1080 80 empty empty TRANSPORT 12 14 0 14 -228856 -1 0; +#X obj 30 110 bng 36 250 50 0 empty empty PLAY 0 -10 0 10 -257985 -1 -1; +#X obj 90 110 bng 36 250 50 0 empty empty STOP 0 -10 0 10 -1109 -1 -1; +#X obj 150 110 bng 36 250 50 0 empty empty CHOKE 0 -10 0 10 -262144 -1 -1; +#X obj 210 110 bng 36 250 50 0 empty empty PANIC 0 -10 0 10 -1109 -1 -1; +#X msg 30 150 \; osc-out send /play; +#X msg 90 150 \; osc-out send /stop; +#X msg 150 150 \; osc-out send /choke; +#X msg 210 150 \; osc-out send /stop \; osc-out send /choke; +#X obj 10 170 cnv 15 1080 80 empty empty TRICKS_LIVE 12 14 0 14 -228856 -1 0; +#X obj 30 200 bng 28 250 50 0 empty empty DROP 0 -8 0 10 -1109 -1 -1; +#X obj 80 200 bng 28 250 50 0 empty empty BREAKDOWN 0 -8 0 10 -228856 -1 -1; +#X obj 130 200 bng 28 250 50 0 empty empty BUILDUP 0 -8 0 10 -204786 -1 -1; +#X obj 180 200 bng 28 250 50 0 empty empty FREEZE 0 -8 0 10 -257985 -1 -1; +#X obj 230 200 bng 28 250 50 0 empty empty GLITCH 0 -8 0 10 -1109 -1 -1; +#X obj 280 200 bng 28 250 50 0 empty empty STUTTER 0 -8 0 10 -228856 -1 -1; +#X obj 330 200 bng 28 250 50 0 empty empty TAPESTOP 0 -8 0 10 -1109 -1 -1; +#X obj 380 200 bng 28 250 50 0 empty empty HANDS_UP 0 -8 0 10 -204786 -1 -1; +#X obj 430 200 bng 28 250 50 0 empty empty JUMPCUT 0 -8 0 10 -228856 -1 -1; +#X obj 480 200 bng 28 250 50 0 empty empty TAPEREV 0 -8 0 10 -228856 -1 -1; +#X msg 30 230 \; osc-out send /drop; +#X msg 80 230 \; osc-out send /breakdown; +#X msg 130 230 \; osc-out send /buildup; +#X msg 180 230 \; osc-out send /freeze; +#X msg 230 230 \; osc-out send /glitch; +#X msg 280 230 \; osc-out send /stutter 8 1; +#X msg 330 230 \; osc-out send /tapeStop; +#X msg 380 230 \; osc-out send /handsUp; +#X msg 430 230 \; osc-out send /jumpCut; +#X msg 480 230 \; osc-out send /tapeReverse; +#X obj 10 260 cnv 15 1080 170 empty empty MIXER_8_VOIES_+_MASTER 12 14 0 14 -228856 -1 0; +#X obj 40 290 vsl 18 110 0 1 0 0 empty empty kick 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 100 290 vsl 18 110 0 1 0 0 empty empty hat 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 160 290 vsl 18 110 0 1 0 0 empty empty snare 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 220 290 vsl 18 110 0 1 0 0 empty empty clap 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 280 290 vsl 18 110 0 1 0 0 empty empty perc 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 340 290 vsl 18 110 0 1 0 0 empty empty acid 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 400 290 vsl 18 110 0 1 0 0 empty empty melody 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 460 290 vsl 18 110 0 1 0 0 empty empty harmony 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 540 290 vsl 18 110 0 2 0 0 empty empty MASTER 0 -8 0 10 -260818 -1 -1 0 1; +#X msg 40 410 \; osc-out send /vol/kick \$1; +#X msg 100 410 \; osc-out send /vol/hat \$1; +#X msg 160 410 \; osc-out send /vol/snare \$1; +#X msg 220 410 \; osc-out send /vol/clap \$1; +#X msg 280 410 \; osc-out send /vol/perc \$1; +#X msg 340 410 \; osc-out send /vol/acid \$1; +#X msg 400 410 \; osc-out send /vol/melody \$1; +#X msg 460 410 \; osc-out send /vol/harmony \$1; +#X msg 540 410 \; osc-out send /vol/master \$1; +#X obj 10 440 cnv 15 530 130 empty empty TWEAKS 12 14 0 14 -228856 -1 0; +#X obj 30 470 hsl 160 18 100 12000 1 0 empty empty melodyCutoff 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 30 495 hsl 160 18 100 8000 1 0 empty empty acidCutoff 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 30 520 hsl 160 18 0 1 0 0 empty empty melodyRq 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 30 545 hsl 160 18 0 1 0 0 empty empty acidRq 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 280 470 hsl 160 18 0.5 5 0 0 empty empty melodyDrive 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 280 495 hsl 160 18 60 200 1 0 empty empty bpm 0 -8 0 10 -260818 -1 -1 0 1; +#X msg 200 470 \; osc-out send /tweak/melodyCutoff \$1; +#X msg 200 495 \; osc-out send /tweak/acidCutoff \$1; +#X msg 200 520 \; osc-out send /tweak/melodyRq \$1; +#X msg 200 545 \; osc-out send /tweak/acidRq \$1; +#X msg 450 470 \; osc-out send /tweak/melodyDrive \$1; +#X msg 450 495 \; osc-out send /tweak/bpm \$1; +#X obj 550 440 cnv 15 540 130 empty empty FX_BUS 12 14 0 14 -228856 -1 0; +#X obj 570 470 tgl 22 0 empty empty REV_FREEZE 0 -8 0 10 -257985 -1 -1 0 1; +#X msg 600 510 \; osc-out send /fx/freeze \$1; +#X obj 670 470 hsl 130 16 0 1 0 0 empty empty reverbMix 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 670 490 hsl 130 16 0 1 0 0 empty empty delayMix 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 670 510 hsl 130 16 0 1 0 0 empty empty chorusMix 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 670 530 hsl 130 16 0 1 0 0 empty empty shimmerMix 0 -8 0 10 -204786 -1 -1 0 1; +#X msg 810 470 \; osc-out send /fx/setMix reverb \$1; +#X msg 810 490 \; osc-out send /fx/setMix delay \$1; +#X msg 810 510 \; osc-out send /fx/setMix chorus \$1; +#X msg 810 530 \; osc-out send /fx/setMix shimmer \$1; +#X obj 970 470 hradio 16 1 0 10 empty empty fx_preset 0 -8 0 10 -204786 -1 0; +#X text 970 455 fx preset:; +#X text 970 490 dry/dub/spc/trn/dub/ret/ind/drm/cos/drn; +#X obj 970 510 select 0 1 2 3 4 5 6 7 8 9; +#X msg 970 530 \; osc-out send /fx/preset dry; +#X msg 970 545 \; osc-out send /fx/preset dub; +#X msg 970 560 \; osc-out send /fx/preset space; +#X msg 1000 530 \; osc-out send /fx/preset trance; +#X msg 1000 545 \; osc-out send /fx/preset dubstep; +#X msg 1000 560 \; osc-out send /fx/preset retro; +#X msg 1030 530 \; osc-out send /fx/preset industrial; +#X msg 1030 545 \; osc-out send /fx/preset dream; +#X msg 1030 560 \; osc-out send /fx/preset cosmic; +#X msg 1060 530 \; osc-out send /fx/preset drone; +#X obj 10 580 cnv 15 530 90 empty empty VCF_MASTER 12 14 0 14 -228856 -1 0; +#X text 30 590 type:; +#X text 150 590 moog ms20 ladder formant comb hpf bpf notch; +#X obj 30 605 hradio 14 1 0 8 empty empty vcf_type 0 -8 0 10 -204786 -1 0; +#X obj 30 635 hsl 200 16 50 15000 1 0 empty empty vcf_freq 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 250 635 hsl 130 16 0.05 1.5 0 0 empty empty vcf_q 0 -8 0 10 -204786 -1 -1 0 1; +#X obj 410 605 bng 26 250 50 0 empty empty VCF_OFF 0 -8 0 10 -1109 -1 -1; +#X obj 470 605 bng 22 250 50 0 empty empty VCF_ON 0 -8 0 10 -204786 -1 -1; +#X msg 30 660 \; osc-out send /vcf/setFreq \$1; +#X msg 250 660 \; osc-out send /vcf/setQ \$1; +#X msg 410 635 \; osc-out send /vcf/off; +#X msg 470 635 \; osc-out send /vcf/on moog 800 0.4; +#X obj 550 580 cnv 15 540 90 empty empty MELODIES_+_JUMP 12 14 0 14 -228856 -1 0; +#X obj 570 605 bng 22 250 50 0 empty empty rand_long 0 -8 0 10 -204786 -1 -1; +#X obj 620 605 bng 22 250 50 0 empty empty rand_xlong 0 -8 0 10 -204786 -1 -1; +#X obj 670 605 bng 22 250 50 0 empty empty rand_epic 0 -8 0 10 -204786 -1 -1; +#X msg 570 635 \; osc-out send /melody/random/long; +#X msg 620 635 \; osc-out send /melody/random/xlong; +#X msg 670 635 \; osc-out send /melody/random/epic; +#X text 740 590 acid dub trn det dnb ori syn; +#X obj 740 605 hradio 14 1 0 7 empty empty melody_genre 0 -8 0 10 -204786 -1 0; +#X obj 740 635 select 0 1 2 3 4 5 6; +#X msg 740 655 \; osc-out send /melody/genre acid; +#X msg 770 655 \; osc-out send /melody/genre dub; +#X msg 800 655 \; osc-out send /melody/genre trance; +#X msg 830 655 \; osc-out send /melody/genre detroit; +#X msg 860 655 \; osc-out send /melody/genre dnb; +#X msg 890 655 \; osc-out send /melody/genre oriental; +#X msg 920 655 \; osc-out send /melody/genre synthwave; +#X obj 970 605 bng 20 250 50 0 empty empty Aint 0 -8 0 9 -228856 -1 -1; +#X obj 1000 605 bng 20 250 50 0 empty empty Adrp 0 -8 0 9 -228856 -1 -1; +#X obj 1030 605 bng 20 250 50 0 empty empty Bdub 0 -8 0 9 -228856 -1 -1; +#X obj 1060 605 bng 20 250 50 0 empty empty Chyp 0 -8 0 9 -228856 -1 -1; +#X obj 970 635 bng 20 250 50 0 empty empty Edrp 0 -8 0 9 -228856 -1 -1; +#X obj 1000 635 bng 20 250 50 0 empty empty Fdrp 0 -8 0 9 -228856 -1 -1; +#X obj 1030 635 bng 20 250 50 0 empty empty Wdub 0 -8 0 9 -228856 -1 -1; +#X msg 970 660 \; osc-out send /jump A intro; +#X msg 1000 660 \; osc-out send /jump A drop; +#X msg 1030 660 \; osc-out send /jump B dub; +#X msg 1060 660 \; osc-out send /jump C hyp; +#X msg 970 680 \; osc-out send /jump E drop; +#X msg 1000 680 \; osc-out send /jump F drop; +#X msg 1030 680 \; osc-out send /jump W dub; +#X obj 10 680 cnv 15 1080 60 empty empty SCENES 12 14 0 14 -228856 -1 0; +#X text 30 705 SCENES presets (load):; +#X obj 220 705 bng 22 250 50 0 empty empty verseA 0 -8 0 10 -228856 -1 -1; +#X obj 280 705 bng 22 250 50 0 empty empty breakdown 0 -8 0 10 -228856 -1 -1; +#X obj 360 705 bng 22 250 50 0 empty empty drop 0 -8 0 10 -228856 -1 -1; +#X obj 420 705 bng 22 250 50 0 empty empty favorite 0 -8 0 10 -228856 -1 -1; +#X msg 220 730 \; osc-out send /scene/load verseA; +#X msg 280 730 \; osc-out send /scene/load breakdown; +#X msg 360 730 \; osc-out send /scene/load drop; +#X msg 420 730 \; osc-out send /scene/load favorite; +#X text 520 705 SAVE/LOAD 'live':; +#X obj 670 705 bng 22 250 50 0 empty empty save_live 0 -8 0 10 -204786 -1 -1; +#X obj 720 705 bng 22 250 50 0 empty empty load_live 0 -8 0 10 -204786 -1 -1; +#X msg 670 730 \; osc-out send /scene/save live; +#X msg 720 730 \; osc-out send /scene/load live; +#X obj 10 750 cnv 15 1080 22 empty empty SC->PD_status 4 8 0 10 -228856 -1 0; +#X text 30 752 SC->; +#X text 80 752 status:; +#X obj 130 752 r sc-status; +#X floatatom 175 752 4 0 0 0 - - -; +#X text 220 752 cpu:; +#X obj 260 752 r sc-cpu; +#X floatatom 305 752 5 0 0 0 - - -; +#X text 360 752 synths:; +#X obj 410 752 r sc-synths; +#X floatatom 455 752 4 0 0 0 - - -; +#N canvas 100 100 760 460 osc 0; +#X text 20 10 sub-patch OSC: netsend (PD->SC) + netreceive (SC->PD); +#X obj 20 60 r osc-out; +#X obj 20 90 netsend -u -b; +#X obj 20 120 print net-status; +#X text 200 60 <- recoit toutes les commandes des widgets; +#X text 200 90 -> envoie OSC vers SC sur le port cible; +#X obj 20 170 loadbang; +#X msg 20 200 connect localhost 57122; +#X obj 20 230 t a; +#X text 200 200 connexion auto au load (port 57122); +#X obj 200 170 r reconnect-bang; +#X obj 200 200 r port-target; +#X obj 200 230 list prepend connect localhost; +#X obj 200 260 list trim; +#X text 400 200 modif port via la number-box du header; +#X obj 20 290 r dsp-toggle; +#X obj 20 320 t b b; +#X msg 20 350 \; pd dsp 1; +#X msg 100 350 \; pd dsp 0; +#X text 200 320 alterne DSP on/off via [\; pd dsp ...]; +#X obj 500 60 netreceive -u 57121; +#X obj 500 90 oscparse; +#X obj 500 120 route /sc/status /sc/cpu /sc/synths /sc/hello /sc/bpm; +#X obj 500 160 s sc-status; +#X obj 560 160 s sc-cpu; +#X obj 620 160 s sc-synths; +#X obj 500 200 print SC-hello; +#X obj 560 200 print SC-bpm; +#X obj 500 240 print SC-other; +#X text 500 30 reception OSC depuis SC sur :57121; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 2 0; +#X connect 10 0 12 0; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 13 0 8 0; +#X connect 15 0 16 0; +#X connect 16 0 17 0; +#X connect 16 1 18 0; +#X connect 20 0 21 0; +#X connect 21 0 22 0; +#X connect 22 0 23 0; +#X connect 22 1 24 0; +#X connect 22 2 25 0; +#X connect 22 3 26 0; +#X connect 22 4 27 0; +#X connect 22 5 28 0; +#X restore 10 775 pd osc; +#X obj 200 775 loadbang; +#X msg 320 775 PD bridge loaded -- check connection; +#X obj 320 795 print bridge; +#X text 480 775 Cote SC: Cmd+Entree sur SETUP de pd/bridge.scd \, Cmd+/ pour DSP; +#X text 480 795 [pd osc] sub-patch contains netsend/netreceive plumbing; +#X connect 11 0 15 0; +#X connect 12 0 16 0; +#X connect 13 0 17 0; +#X connect 14 0 18 0; +#X connect 20 0 30 0; +#X connect 21 0 31 0; +#X connect 22 0 32 0; +#X connect 23 0 33 0; +#X connect 24 0 34 0; +#X connect 25 0 35 0; +#X connect 26 0 36 0; +#X connect 27 0 37 0; +#X connect 28 0 38 0; +#X connect 29 0 39 0; +#X connect 41 0 50 0; +#X connect 42 0 51 0; +#X connect 43 0 52 0; +#X connect 44 0 53 0; +#X connect 45 0 54 0; +#X connect 46 0 55 0; +#X connect 47 0 56 0; +#X connect 48 0 57 0; +#X connect 49 0 58 0; +#X connect 60 0 66 0; +#X connect 61 0 67 0; +#X connect 62 0 68 0; +#X connect 63 0 69 0; +#X connect 64 0 70 0; +#X connect 65 0 71 0; +#X connect 73 0 74 0; +#X connect 75 0 79 0; +#X connect 76 0 80 0; +#X connect 77 0 81 0; +#X connect 78 0 82 0; +#X connect 83 0 86 0; +#X connect 86 0 87 0; +#X connect 86 1 88 0; +#X connect 86 2 89 0; +#X connect 86 3 90 0; +#X connect 86 4 91 0; +#X connect 86 5 92 0; +#X connect 86 6 93 0; +#X connect 86 7 94 0; +#X connect 86 8 95 0; +#X connect 86 9 96 0; +#X connect 101 0 105 0; +#X connect 102 0 106 0; +#X connect 103 0 107 0; +#X connect 104 0 108 0; +#X connect 110 0 113 0; +#X connect 111 0 114 0; +#X connect 112 0 115 0; +#X connect 117 0 118 0; +#X connect 118 0 119 0; +#X connect 118 1 120 0; +#X connect 118 2 121 0; +#X connect 118 3 122 0; +#X connect 118 4 123 0; +#X connect 118 5 124 0; +#X connect 118 6 125 0; +#X connect 126 0 133 0; +#X connect 127 0 134 0; +#X connect 128 0 135 0; +#X connect 129 0 136 0; +#X connect 130 0 137 0; +#X connect 131 0 138 0; +#X connect 132 0 139 0; +#X connect 142 0 146 0; +#X connect 143 0 147 0; +#X connect 144 0 148 0; +#X connect 145 0 149 0; +#X connect 151 0 153 0; +#X connect 152 0 154 0; +#X connect 158 0 159 0; +#X connect 161 0 162 0; +#X connect 164 0 165 0; +#X connect 167 0 168 0; +#X connect 168 0 169 0; diff --git a/sound_algo/pd/bridge.scd b/sound_algo/pd/bridge.scd new file mode 100644 index 0000000..2bf6e4c --- /dev/null +++ b/sound_algo/pd/bridge.scd @@ -0,0 +1,214 @@ +// ===================================================================== +// pd/bridge.scd -- Bridge SuperCollider <-> Pure Data via OSC +// +// Echange OSC bidirectionnel : +// PD -> SC : envoie sur localhost:57120 (port standard sclang) +// SC -> PD : envoie sur localhost:57121 (port netreceive de bridge.pd) +// +// PD addresses ecoutees par SC : +// /play /stop /choke +// /drop /breakdown /buildup /freeze /glitch +// /vol/<voie> <0..1> -- voie : kick hat snare clap perc acid melody harmony +// /vol/master <0..2> -- multiplicateur master +// /tweak/<param> <val> -- param : melodyCutoff acidCutoff bpm melodyRq acidRq +// /fx/preset <name> -- name : dub space trance industrial cosmic dry +// /fx/send <voie> <fx> <amount> -- ex: /fx/send acid rev 0.4 +// /fx/freeze <0|1> -- freeze reverb +// /vcf/on <type> <freq> <q> -- vcf master +// /vcf/off +// /lfo/to <param> <rate> <depth> <shape> <center> +// /lfo/stop <param> +// /scene/save <name> +// /scene/load <name> +// /jump <track> <slug> -- ex: /jump A acid_rave_kick_t1_melody_lead_variations +// /melody <name> -- ex: /melody m50 +// /melody/genre <genre> -- ex: /melody/genre acid +// /preset <mix> -- ex: /preset drumsHeavy +// /kit <name> -- ex: /kit kitTechno +// +// USAGE : +// 1. Lance PD : ouvre pd/bridge.pd +// 2. Cote SC : Cmd+Entree sur le bloc SETUP ci-dessous +// 3. Test : clique sur PLAY dans le patch PD -- tu dois entendre le beat +// 4. Pour stopper le bridge : ~pdDisconnect.() +// ===================================================================== + + +// --- SETUP -- enregistre les OSCdef cote SC ------------------------- +( +~pd = ~pd ?? { () }; +~pd[\target] = NetAddr("127.0.0.1", 57121); // port netreceive du patch PD +~pd[\defs] = ~pd[\defs] ?? { List.new }; + +// Helpers d'envoi vers PD +~pdSend = { |addr ...args| ~pd[\target].sendMsg(addr, *args) }; + +// Liberer les anciennes OSCdef +~pd[\defs].do { |d| d.free }; ~pd[\defs] = List.new; + +// --- transport ----------------------------------------------------- +~pd[\defs].add(OSCdef(\pdPlay, { + TempoClock.default.tempo = (~bpm ? 128) / 60; + ~reload !? { ~reload.value }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).play }; + "[PD] PLAY".postln; +}, '/play')); + +~pd[\defs].add(OSCdef(\pdStop, { + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + "[PD] STOP".postln; +}, '/stop')); + +~pd[\defs].add(OSCdef(\pdChoke, { + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + "[PD] CHOKE".postln; +}, '/choke')); + +// --- tricks live --------------------------------------------------- +~pd[\defs].add(OSCdef(\pdDrop, { ~drop !? { ~drop.() } }, '/drop')); +~pd[\defs].add(OSCdef(\pdBreakdown, { ~breakdown !? { ~breakdown.(8) } }, '/breakdown')); +~pd[\defs].add(OSCdef(\pdBuildup, { ~buildup !? { ~buildup.(8) } }, '/buildup')); +~pd[\defs].add(OSCdef(\pdFreeze, { ~freeze !? { ~freeze.(4) } }, '/freeze')); +~pd[\defs].add(OSCdef(\pdGlitch, { ~glitch !? { ~glitch.(2) } }, '/glitch')); +~pd[\defs].add(OSCdef(\pdStutter, { |msg| ~stutter !? { ~stutter.(msg[1] ? 8, msg[2] ? 1) } }, '/stutter')); +~pd[\defs].add(OSCdef(\pdTapeStop, { ~tapeStop !? { ~tapeStop.(2) } }, '/tapeStop')); +~pd[\defs].add(OSCdef(\pdHandsUp, { ~handsUp !? { ~handsUp.() } }, '/handsUp')); +~pd[\defs].add(OSCdef(\pdJumpCut, { |msg| ~jumpCut !? { ~jumpCut.(msg[1] ? 0.5) } }, '/jumpCut')); +~pd[\defs].add(OSCdef(\pdTapeRev, { ~tapeReverse !? { ~tapeReverse.(4) } }, '/tapeReverse')); +~pd[\defs].add(OSCdef(\pdPanic, { + ~track !? { ~track.stop; ~track = nil }; + ~teardown !? { ~teardown.() }; + "[PD] PANIC -- teardown lance".postln; +}, '/panic')); + +// --- volumes (mixer) ----------------------------------------------- +~pd[\defs].add(OSCdef(\pdVolKick, { |msg| ~setVol !? { ~setVol.(\kick, msg[1]) } }, '/vol/kick')); +~pd[\defs].add(OSCdef(\pdVolHat, { |msg| ~setVol !? { ~setVol.(\hat, msg[1]) } }, '/vol/hat')); +~pd[\defs].add(OSCdef(\pdVolSnare, { |msg| ~setVol !? { ~setVol.(\snare, msg[1]) } }, '/vol/snare')); +~pd[\defs].add(OSCdef(\pdVolClap, { |msg| ~setVol !? { ~setVol.(\clap, msg[1]) } }, '/vol/clap')); +~pd[\defs].add(OSCdef(\pdVolPerc, { |msg| ~setVol !? { ~setVol.(\perc, msg[1]) } }, '/vol/perc')); +~pd[\defs].add(OSCdef(\pdVolAcid, { |msg| ~setVol !? { ~setVol.(\acid, msg[1]) } }, '/vol/acid')); +~pd[\defs].add(OSCdef(\pdVolMelody, { |msg| ~setVol !? { ~setVol.(\melody, msg[1]) } }, '/vol/melody')); +~pd[\defs].add(OSCdef(\pdVolHarmony, { |msg| ~setVol !? { ~setVol.(\harmony, msg[1]) } }, '/vol/harmony')); +~pd[\defs].add(OSCdef(\pdVolMaster, { |msg| ~masterVol !? { ~masterVol.(msg[1]) } }, '/vol/master')); + +// --- tweaks parametriques ------------------------------------------ +~pd[\defs].add(OSCdef(\pdTweakMelCut, { |msg| ~melodyCutoff = msg[1].asFloat; ~reload.value }, '/tweak/melodyCutoff')); +~pd[\defs].add(OSCdef(\pdTweakAcidCut,{ |msg| ~acidCutoff = msg[1].asFloat; ~reload.value }, '/tweak/acidCutoff')); +~pd[\defs].add(OSCdef(\pdTweakBpm, { |msg| ~bpm = msg[1].asFloat; TempoClock.default.tempo = ~bpm/60 }, '/tweak/bpm')); +~pd[\defs].add(OSCdef(\pdTweakMelRq, { |msg| ~melodyRq = msg[1].asFloat; ~reload.value }, '/tweak/melodyRq')); +~pd[\defs].add(OSCdef(\pdTweakAcidRq, { |msg| ~acidRq = msg[1].asFloat; ~reload.value }, '/tweak/acidRq')); +~pd[\defs].add(OSCdef(\pdTweakDrive, { |msg| ~melodyDrive = msg[1].asFloat; ~reload.value }, '/tweak/melodyDrive')); + +// --- FX bus -------------------------------------------------------- +~pd[\defs].add(OSCdef(\pdFxPreset, { |msg| + ~fxPreset !? { ~fxPreset.(msg[1].asSymbol) }; + ("[PD] fxPreset " ++ msg[1]).postln; +}, '/fx/preset')); + +~pd[\defs].add(OSCdef(\pdFxSend, { |msg| + ~send !? { ~send.(msg[1].asSymbol, msg[2].asSymbol, msg[3].asFloat) }; +}, '/fx/send')); + +~pd[\defs].add(OSCdef(\pdFxFreeze, { |msg| + ~setFx !? { ~setFx.(\rev, \freeze, msg[1].asInteger) }; +}, '/fx/freeze')); + +// /fx/setMix <fxname:reverb|delay|chorus|shimmer|...> <0..1> +~pd[\defs].add(OSCdef(\pdFxSetMix, { |msg| + var name = msg[1].asSymbol; + var key = (name: \rev, reverb: \rev, delay: \dly, dly: \dly, + chorus: \chr, chr: \chr, phaser: \phs, phs: \phs, + flanger: \flg, flg: \flg, bitcrush: \crsh, crsh: \crsh, + tape: \tape, shimmer: \shim, shim: \shim, dist: \dist)[name] ? name; + ~setFx !? { ~setFx.(key, \mix, msg[2].asFloat) }; +}, '/fx/setMix')); + +// --- VCF master ---------------------------------------------------- +~pd[\defs].add(OSCdef(\pdVcfOn, { |msg| + ~vcfOn !? { ~vcfOn.(msg[1].asSymbol, msg[2].asFloat, msg[3].asFloat) }; +}, '/vcf/on')); + +~pd[\defs].add(OSCdef(\pdVcfOff, { ~vcfOff !? { ~vcfOff.() } }, '/vcf/off')); +~pd[\defs].add(OSCdef(\pdVcfFreq, { |msg| ~vcfSet !? { ~vcfSet.(\freq, msg[1].asFloat) } }, '/vcf/setFreq')); +~pd[\defs].add(OSCdef(\pdVcfQ, { |msg| ~vcfSet !? { ~vcfSet.(\q, msg[1].asFloat) } }, '/vcf/setQ')); + +// --- LFO ----------------------------------------------------------- +~pd[\defs].add(OSCdef(\pdLfoTo, { |msg| + ~lfoTo !? { ~lfoTo.(msg[1].asSymbol, msg[2].asFloat, msg[3].asFloat, + msg[4].asSymbol, msg[5].asFloat) }; +}, '/lfo/to')); + +~pd[\defs].add(OSCdef(\pdLfoStop, { |msg| + ~lfoStopVar !? { ~lfoStopVar.(msg[1].asSymbol) }; +}, '/lfo/stop')); + +// --- Scenes / jump / mélodies / kits / presets --------------------- +~pd[\defs].add(OSCdef(\pdSceneSave, { |msg| + ~saveScene !? { ~saveScene.(msg[1].asSymbol) }; +}, '/scene/save')); + +~pd[\defs].add(OSCdef(\pdSceneLoad, { |msg| + ~loadScene !? { ~loadScene.(msg[1].asSymbol) }; +}, '/scene/load')); + +~pd[\defs].add(OSCdef(\pdJump, { |msg| + ~jumpTo !? { ~jumpTo.(msg[1].asSymbol, msg[2].asSymbol) }; +}, '/jump')); + +~pd[\defs].add(OSCdef(\pdMelody, { |msg| + ~useMelody !? { ~useMelody.(msg[1].asSymbol) }; +}, '/melody')); + +~pd[\defs].add(OSCdef(\pdMelodyGenre, { |msg| + ~melodyByGenre !? { ~melodyByGenre.(msg[1].asSymbol) }; +}, '/melody/genre')); + +~pd[\defs].add(OSCdef(\pdMixPreset, { |msg| + ~mixPreset !? { ~mixPreset.(msg[1].asSymbol) }; +}, '/preset')); + +// --- Boucle de status (envoi periodique vers PD) ------------------- +~pd[\statusLoop] !? { ~pd[\statusLoop].stop }; +~pd[\statusLoop] = Routine({ + loop { + ~pdSend.('/sc/status', 1); + ~pdSend.('/sc/cpu', s.avgCPU.round(0.1)); + ~pdSend.('/sc/synths', s.numSynths); + 1.wait; + }; +}).play; + +"=== PD bridge ACTIF (SC<-OSC->PD) ===".postln; +" PD -> SC : 57120 (sclang OSC default)".postln; +" SC -> PD : 57121 (bridge.pd udpreceive)".postln; +" stoppe avec ~pdDisconnect.()".postln; +) + + +// --- DECONNECT (libere tous les OSCdef + status loop) --------------- +( +~pdDisconnect = { + ~pd !? { + ~pd[\statusLoop] !? { ~pd[\statusLoop].stop; ~pd[\statusLoop] = nil }; + ~pd[\defs] !? { ~pd[\defs].do { |d| d.free }; ~pd[\defs] = List.new }; + }; + "=== PD bridge STOP ===".postln; +}; +~pdDisconnect.(); +) + + +// ===================================================================== +// Tests rapides (Cmd+Entree pour envoyer un message vers PD) +// ===================================================================== + +// --- Test : envoyer un message a PD -------------------------------- +( ~pdSend.('/sc/hello', "ping"); ) + +// --- Test : envoi du tempo courant a PD ---------------------------- +( ~pdSend.('/sc/bpm', ~bpm ? 128); ) diff --git a/sound_algo/setup.scd b/sound_algo/setup.scd new file mode 100644 index 0000000..7c591ca --- /dev/null +++ b/sound_algo/setup.scd @@ -0,0 +1,811 @@ +// ===================================================================== +// setup.scd -- Verification d'etat + init complete du projet +// +// USAGE PRINCIPAL (workflow recommande) : +// Tout est fait depuis 00_load.scd > bloc "CHARGER TOUT". Ce fichier +// est charge automatiquement par le loader, qui appelle ~setupAll.() +// a la fin. Tu n'as PAS besoin de l'ouvrir manuellement en general. +// +// USAGE MANUEL (debug ou redemarrage rapide) : +// Ouvre ce fichier dans l'IDE puis Cmd+Entree sur un bloc : +// ( ~check.() ) -- rapport d'etat colore +// ( ~setupAll.() ) -- recharge TOUT (engine + live + ...) +// ( ~setupLive.() ) -- recharge UNIQUEMENT live/* (rapide) +// ( ~ensureLive.() ) -- charge ce qui manque seulement +// ( ~teardown.() ) -- stop tout proprement +// +// HELPERS EXPOSES (tous definis dans le 1er bloc -- .load-compatible) : +// ~check status global colore +// ~setupAll charge engine + synthdefs + scales + melodies +// + harmonics + boot serveur + setup live + check +// ~setupLive recharge UNIQUEMENT les modules live (rapide) +// ~ensureLive charge live/* paresseusement (seulement absents) +// ~teardown stop tout proprement +// ~loadFirstBlock(path) helper interne -- evalue le 1er bloc d'un .scd +// +// STRUCTURE +// Le 1er bloc top-level contient TOUS les helpers : c'est le SETUP +// HELPERS, evaluable via .load setup.scd (ce que fait CHARGER TOUT). +// Les blocs suivants sont des exemples Cmd+Entree (pas charges par +// .load, evaluables manuellement dans l'IDE). +// ===================================================================== + + +// ===================================================================== +// SETUP HELPERS (1er bloc top-level -- .load-compatible) +// +// Definit ~base, ~loadFirstBlock, ~check, ~setupAll, ~setupLive, +// ~ensureLive, ~teardown. Ce bloc est execute par .load setup.scd +// depuis le bloc CHARGER TOUT de 00_load.scd. +// ===================================================================== +( +// --- BASE PATH (auto-detection si pas deja defini) ------------------- +~base = ~base ?? { "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/" }; +"~base = ".post; ~base.postln; + + +// --- HELPER : ~loadFirstBlock --------------------------------------- +// Lit un fichier .scd et evalue son PREMIER bloc top-level (...) en +// comptant les parens balancees. Sert pour les fichiers multi-blocs +// dont seul le 1er bloc est le SETUP a evaluer (live/*, jump.scd, ...). +// +// Robuste : try/protect pour qu'une erreur d'un fichier n'arrete pas +// les autres. Print clair de chaque etape ([setupAll] ... OK / FAIL). +// -------------------------------------------------------------------- +~loadFirstBlock = { |path| + var src, depth = 0, start = nil, firstBlock = nil; + var label = path.basename; + var i = 0, n, ch, ch2; + var inLineComment = false, inBlockComment = false, inString = false; + if (File.exists(path).not) { + ("[setupAll] " ++ label ++ " ... FAIL (fichier introuvable)").postln; + } { + src = File.readAllString(path); + n = src.size; + block { |break| + while { i < n } { + ch = src[i]; + ch2 = if (i + 1 < n) { src[i + 1] } { $ }; + // ----- gestion des etats ----- + if (inLineComment) { + if (ch == $\n) { inLineComment = false }; + i = i + 1; + } { + if (inBlockComment) { + if ((ch == $*) and: { ch2 == $/ }) { inBlockComment = false; i = i + 2 } + { i = i + 1 }; + } { + if (inString) { + if (ch == $\\) { i = i + 2 } // skip escape + { if (ch == $") { inString = false; i = i + 1 } { i = i + 1 } }; + } { + // ----- pas dans un comment / string ----- + // entree commentaire ligne + if ((ch == $/) and: { ch2 == $/ }) { inLineComment = true; i = i + 2 } + // entree commentaire bloc + { if ((ch == $/) and: { ch2 == $* }) { inBlockComment = true; i = i + 2 } + // char literal SC : $( ou $) ou $" -- on saute le caractere suivant + { if ((ch == $$) and: { (ch2 == $() or: { (ch2 == $)) or: { ch2 == $" } } }) { i = i + 2 } + // entree string + { if (ch == $") { inString = true; i = i + 1 } + // parens REELLES + { if (ch == $() { + if (depth == 0) { start = i }; + depth = depth + 1; + i = i + 1; + } { if (ch == $)) { + depth = depth - 1; + if ((depth == 0) and: { start.notNil }) { + firstBlock = src.copyRange(start, i); + break.value; + }; + i = i + 1; + } { i = i + 1 } } } } } }; + } } }; + }; + }; + if (firstBlock.isNil) { + ("[setupAll] " ++ label ++ " ... FAIL (aucun bloc trouve)").postln; + } { + ("[setupAll] " ++ label ++ " ... loading [" ++ firstBlock.size ++ " chars]").post; + try { + firstBlock.interpret; + " OK".postln; + } { |err| + " FAIL".postln; + (" " ++ err.errorString).postln; + }; + }; + }; +}; + + +// --- HELPER : ~loadAllBlocks ---------------------------------------- +// Comme ~loadFirstBlock mais charge TOUS les blocs top-level d'un +// fichier. Utile pour fichiers comme sequences.scd qui ont leurs +// helpers en bloc 1 puis ~seqIntro/Buildup/Drop en blocs separes. +// Ignore comments / strings / char literals. +// -------------------------------------------------------------------- +~loadAllBlocks = { |path| + var src, depth = 0, start = nil, blocks = List.new; + var label = path.basename; + var i = 0, n, ch, ch2; + var inLineComment = false, inBlockComment = false, inString = false; + if (File.exists(path).not) { + ("[setupAll] " ++ label ++ " ... FAIL (fichier introuvable)").postln; + } { + src = File.readAllString(path); + n = src.size; + while { i < n } { + ch = src[i]; + ch2 = if (i + 1 < n) { src[i + 1] } { $ }; + if (inLineComment) { + if (ch == $\n) { inLineComment = false }; i = i + 1; + } { + if (inBlockComment) { + if ((ch == $*) and: { ch2 == $/ }) { inBlockComment = false; i = i + 2 } { i = i + 1 }; + } { + if (inString) { + if (ch == $\\) { i = i + 2 } { if (ch == $") { inString = false; i = i + 1 } { i = i + 1 } }; + } { + if ((ch == $/) and: { ch2 == $/ }) { inLineComment = true; i = i + 2 } + { if ((ch == $/) and: { ch2 == $* }) { inBlockComment = true; i = i + 2 } + { if ((ch == $$) and: { (ch2 == $() or: { (ch2 == $)) or: { ch2 == $" } } }) { i = i + 2 } + { if (ch == $") { inString = true; i = i + 1 } + { if (ch == $() { + if (depth == 0) { start = i }; + depth = depth + 1; i = i + 1; + } { if (ch == $)) { + depth = depth - 1; + if ((depth == 0) and: { start.notNil }) { + blocks.add(src.copyRange(start, i)); + start = nil; + }; + i = i + 1; + } { i = i + 1 } } } } } }; + } } }; + }; + ("[setupAll] " ++ label ++ " ... " ++ blocks.size ++ " blocs ").post; + try { + blocks.do { |b| b.interpret }; + " OK".postln; + } { |err| + " FAIL".postln; + (" " ++ err.errorString).postln; + }; + }; +}; + + +// --- HELPER : ~check ------------------------------------------------ +// Affiche un rapport coloree (postln) listant l'etat de chaque +// module. Utilise des prefixes ASCII : +// [OK] = tout est la +// [!!] = certains helpers manquent (action recommandee) +// [--] = pas initialise (optionnel : MIDI, jump) +// -------------------------------------------------------------------- +~check = { + var sd = SynthDescLib.global.synthDescs; + var hasSd = { |sym| sd[sym].notNil }; + var hasV = { |sym| currentEnvironment[sym].notNil }; + var allSd = { |list| list.every { |s| hasSd.(s) } }; + var allV = { |list| list.every { |s| hasV.(s) } }; + var missingSd = { |list| list.select { |s| hasSd.(s).not } }; + var missingV = { |list| list.select { |s| hasV.(s).not } }; + var actions = List.new; + var line = { |label, status, msg| + ("[" ++ label ++ "]").padRight(13).post; + status.post; " ".post; msg.postln; + }; + + "".postln; + "=== sound_algo STATUS ===".postln; + + // ----- Server ----- + if (s.serverRunning) { + ("[server] running, " ++ s.numSynths ++ " synths, " + ++ s.avgCPU.round(0.1) ++ "% CPU").postln; + } { + "[server] [--] pas demarre (lance ~setupAll ou s.boot)".postln; + actions.add("Lance ~setupAll.() pour booter le serveur"); + }; + + // ----- engine.scd ----- + block { |b| + var engineSd = [\kick, \hat, \snare, \clap, \acid, \lead, \pad, \pluck, + \fmBell, \stab, \saw3, \openHat, \crash, \tom, \rim, + \cowbell, \reese, \bass808, \impact, \riser, \sweep, + \vinyl, \masterLim]; + var engineHelpers = [\reload, \bpm, \kickAmp, \melodyAmp, \melodyNotes, + \kickSteps, \scBus, \masterLim]; + var miss = missingSd.(engineSd) ++ missingV.(engineHelpers); + if (miss.isEmpty) { + line.("engine", "[OK]", engineSd.size.asString + ++ " SynthDefs + ~reload + ~scBus + ~masterLim"); + } { + line.("engine", "[!!]", "manquant : " ++ miss); + actions.add("CHARGER TOUT depuis 00_load.scd (engine + synthdefs + scales + melodies + harmonics)"); + }; + }; + + // ----- synth/_index.scd : asia palette ----- + block { |b| + var asia = [\koto, \erhu, \pipa, \gong, \growl, \reeseHard]; + var miss = missingSd.(asia); + if (miss.isEmpty) { line.("asia", "[OK]", asia.size.asString ++ " SynthDefs"); } + { line.("asia", "[!!]", "manquant : " ++ miss); }; + }; + + // ----- synth/_index.scd : extra palette ----- + block { |b| + var extra = [\squareLead, \fmLead, \organLead, \hardLead, \warmPad, + \strings, \choir, \fmBass, \subBoom, \handpan, \flute, \drone]; + var miss = missingSd.(extra); + if (miss.isEmpty) { line.("extra", "[OK]", extra.size.asString ++ " SynthDefs"); } + { line.("extra", "[!!]", "manquant : " ++ miss); }; + }; + + // ----- synth/_index.scd : authentic palette ----- + block { |b| + var auth = [\kickGabber, \kick808, \snareGated, \reeseDnB, \supersaw, + \hooverbass, \rhodes, \vocalPad, \didgeridoo, \guzheng, + \shakuhachi, \taiko, \tabla, \scratch]; + var miss = missingSd.(auth); + if (miss.isEmpty) { line.("authentic", "[OK]", auth.size.asString ++ " SynthDefs"); } + { line.("authentic", "[!!]", "manquant : " ++ miss); }; + }; + + // ----- palette/scales.scd ----- + block { |b| + var scales = [\scaleMinor, \scaleDorian, \scaleMinorPent, \scaleAcid, + \scaleHijaz, \scaleVietnam]; + var helpers = [\genMelody, \mutate, \octavate, \transpose, \retrograde, + \densify, \sparsify, \jitter, \genAcidNotes, \genKickPattern, + \randomTweak]; + var miss = missingV.(scales) ++ missingV.(helpers); + if (miss.isEmpty) { + line.("scales", "[OK]", "16 scales + ~genMelody/mutate/octavate/..."); + } { + line.("scales", "[!!]", "manquant : " ++ miss); + actions.add("CHARGER TOUT (scales = source unique helpers melodiques)"); + }; + }; + + // ----- palette/melodies/* ----- + block { |b| + var probes = [\m1, \m78, \ml1, \ml30, \mxl1, \mxl15, \mepic1, \mepic10, + \melodyBank, \useMelody, \melodyByGenre, \chainPatterns, \buildArc]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("melodies", "[OK]", + "~m1..78, ~ml1..30, ~mxl1..15, ~mepic1..10 + ~useMelody/byGenre"); + } { + line.("melodies", "[!!]", "manquant : " ++ miss); + actions.add("CHARGER TOUT (charge palette/melodies/index.scd)"); + }; + }; + + // ----- palette/harmonics/* ----- + block { |b| + var probes = [\enableHarmony, \genThirdHarmony, \genFifthHarmony, + \genCounterMelody, \genArpFromChords]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("harmonics", "[OK]", "~enableHarmony + 4 helpers"); + } { + line.("harmonics", "[!!]", "manquant : " ++ miss); + actions.add("CHARGER TOUT (charge palette/harmonics/index.scd)"); + }; + }; + + // ----- palette/melodies/tracks.scd (multi-pistes) ----- + block { |b| + var probes = [\mel, \melTrackAdd, \melTrackOn, \melTrackOff, \melTrackSet, + \melTrackList, \melTrackSolo]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("mel-track", "[OK]", "~mel + ~melTrackAdd/On/Off/Set/..."); + } { + line.("mel-track", "[!!]", "manquant : " ++ miss); + }; + }; + + // ----- live API wrappers (~kk / ~mm / ~ff / ~cc / ~p) ----- + // Ces wrappers (live/_load.scd) remplacent fonctionnellement les + // ~kK1, ~clC1, ~pcP1 des palette/rhythm/* (qui sont multi-blocs). + block { |b| + var probes = [\kk, \kPat, \kTim, \kList, + \mm, \mShort, \mLong, \mEpic, \mGen, \mList, + \ff, \fxSnd, \fxSt, \fxDrop, \fxList, + \chIntro, \chDrop, \chBuildup, \chList, + \pKit, \pGenre, \pHat, \pList]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("live-api", "[OK]", "~kk ~mm ~ff ~chIntro ~pKit + 19 wrappers"); + } { + line.("live-api", "[!!]", "manquant : " ++ miss); + actions.add("Lance (~base++\"live/_load.scd\").load (charge les 5 wrappers live)"); + }; + }; + + // ----- palette/rhythm/fills.scd (~snareFill / ~tomFill) ----- + block { |b| + var probes = [\snareFill, \tomFill]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("fills", "[OK]", "~snareFill / ~tomFill"); + } { + line.("fills", "[!!]", "~snareFill et/ou ~tomFill manquent"); + actions.add("Lance ~setupAll.() (charge palette/rhythm/fills.scd)"); + }; + }; + + // ----- palette/rhythm/sequences.scd (~seqPlay / ~seqIntro / ...) ----- + block { |b| + var probes = [\seqPlay, \seqStop, \seqIntro, \seqBuildup, \seqDrop]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("sequences", "[OK]", "~seqPlay / ~seqIntro / ~seqBuildup / ~seqDrop / ..."); + } { + line.("sequences", "[!!]", "manquant : " ++ miss); + actions.add("Lance ~setupAll.() (charge palette/rhythm/sequences.scd)"); + }; + }; + + // ----- palette/chords_progressions.scd ----- + block { |b| + var probes = [\progDetroit, \progTrance, \progDnB, \chordsToMelody]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("chords", "[OK]", "~progXxx + ~chordsToMelody/Harmony"); + } { + line.("chords", "[--]", "non charge (optionnel) : " ++ miss); + }; + }; + + // ----- live/live.scd ----- + block { |b| + var probes = [\lfoTo, \vcfOn, \drop, \breakdown, \stutter, \glitch, + \freeze, \addFx, \compOn, \satOn]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("live", "[OK]", "~lfoTo / ~vcfOn / ~drop / ~stutter / ~addFx / ~compOn / ..."); + } { + line.("live", "[!!]", "manquant : " ++ miss); + actions.add("Lance ~setupAll.() (charge live/live.scd)"); + }; + }; + + // ----- live/mixer.scd ----- + block { |b| + var probes = [\setVol, \mute, \solo, \mixPreset, \mixMaster, \mix]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("mixer", "[OK]", "~setVol / ~mute / ~solo / ~mixPreset / ~mixMaster"); + } { + line.("mixer", "[!!]", "manquant : " ++ miss); + actions.add("Lance ~setupAll.() (charge live/mixer.scd)"); + }; + }; + + // ----- live/fx_bus.scd ----- + block { |b| + var probes = [\fxFx, \fxBuses, \send, \setFx, \lfo, \fxPreset, \tap]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("fx_bus", "[OK]", "9 bus FX + ~send / ~setFx / ~lfo / ~fxPreset / ~tap"); + } { + line.("fx_bus", "[!!]", "manquant : " ++ miss); + actions.add("Lance ~setupAll.() (charge live/fx_bus.scd EN PREMIER)"); + }; + }; + + // ----- live/scenes.scd ----- + block { |b| + var probes = [\saveScene, \loadScene, \listScenes]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("scenes", "[OK]", "~saveScene / ~loadScene / ~listScenes"); + } { + line.("scenes", "[!!]", "manquant : " ++ miss); + actions.add("Lance ~setupAll.() (charge live/scenes.scd)"); + }; + }; + + // ----- live/loops.scd ----- + block { |b| + var probes = [\loopOn, \loopOff, \loopRepeat, \loopProgress, \loopList]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("loops", "[OK]", "~loopOn / ~loopOff / ~loopRepeat / ~loopProgress"); + } { + line.("loops", "[!!]", "manquant : " ++ miss); + actions.add("Lance ~setupAll.() (charge live/loops.scd)"); + }; + }; + + // ----- live/memory_guard.scd ----- + block { |b| + var probes = [\killAllOrphans, \memReport, \watchdogOn, \watchdogOff]; + var miss = missingV.(probes); + if (miss.isEmpty) { + line.("guard", "[OK]", "~killAllOrphans / ~memReport / ~watchdogOn / ~watchdogOff"); + } { + line.("guard", "[!!]", "manquant : " ++ miss); + actions.add("Lance ~setupAll.() (charge live/memory_guard.scd)"); + }; + }; + + // ----- control/midi.scd (optionnel) ----- + block { |b| + if (~midiFuncs.notNil and: { ~midiFuncs.size > 0 }) { + line.("midi", "[OK]", "~midiFuncs (" ++ ~midiFuncs.size ++ " mappings)"); + } { + line.("midi", "[--]", "pas init (optionnel) -- ouvre control/midi.scd"); + }; + }; + + // ----- control/playlist.scd (optionnel) ----- + block { |b| + if (hasV.(\playPlaylist)) { + line.("playlist", "[OK]", "~playPlaylist pret"); + } { + line.("playlist", "[--]", "pas charge (optionnel) -- ouvre control/playlist.scd"); + }; + }; + + // ----- control/jump.scd ----- + block { |b| + if (hasV.(\jumpTo) and: { hasV.(\sections) }) { + var nbTracks = ~sections.size; + line.("jump", "[OK]", "~jumpTo + ~sections (" ++ nbTracks ++ " tracks chargees)"); + } { + line.("jump", "[!!]", "pas init"); + actions.add("Lance ~setupAll.() (charge control/jump.scd)"); + }; + }; + + "=== fin status ===".postln; + + if (actions.size > 0) { + "".postln; + "ACTIONS RECOMMANDEES :".postln; + actions.do { |a| (" - " ++ a).postln }; + } { + "".postln; + "Tout est OK -- pret a jouer.".postln; + }; + "".postln; +}; + + +// --- HELPER : ~setupAll --------------------------------------------- +// Charge engine + synthdefs + scales + melodies + harmonics, attend +// le boot du serveur (skip si deja boote), puis evalue le 1er bloc +// (SETUP) de chaque module live + rhythm/fills + rhythm/sequences + +// control/jump. Termine par ~check.() +// +// Print clair de chaque etape via ~loadFirstBlock (qui catche les +// erreurs : un fichier qui plante n'arrete PAS les autres). +// +// Ordre d'init des modules live : +// 1. fx_bus.scd (alloue les bus FX, doit etre en PREMIER) +// 2. live.scd (LFO/VCF/tricks/SynthDefs additionnels) +// 3. mixer.scd (~mix / ~setVol / ~mute / ~solo) +// 4. scenes.scd (~saveScene / ~loadScene) +// 5. loops.scd (~loopOn / ~loopOff / ~loopRepeat) +// 6. rhythm/fills.scd (~snareFill / ~tomFill) +// 7. rhythm/sequences.scd (~seqPlay / ~seqIntro / ~seqDrop / ...) +// 8. control/jump.scd (~jumpTo + ~sections) +// +// PAS init automatiquement : +// - control/midi.scd (init MIDI -- a faire manuellement) +// - control/playlist.scd (juste un helper, charge a la demande) +// - live/tweaks.scd (one-liners, pas de SETUP) +// -------------------------------------------------------------------- +~setupAll = { + var liveSetup = { + "".postln; + "=== ~setupAll : init modules live ===".postln; + + // Ordre critique : fx_bus.scd EN PREMIER (alloue ~fxBuses / ~fxFx + // que les autres modules peuvent referencer) + ~loadFirstBlock.(~base ++ "live/fx_bus.scd"); + ~loadFirstBlock.(~base ++ "live/live.scd"); + ~loadFirstBlock.(~base ++ "live/mixer.scd"); + ~loadFirstBlock.(~base ++ "live/scenes.scd"); + ~loadFirstBlock.(~base ++ "live/loops.scd"); + ~loadFirstBlock.(~base ++ "live/memory_guard.scd"); + (~base ++ "palette/rhythm/_index.scd").load; // fills + sequences (auto-discovery) + ~loadAllBlocks.(~base ++ "palette/chords_progressions.scd"); + ~loadFirstBlock.(~base ++ "control/jump.scd"); + + // 5 wrappers API live (~kk / ~mm / ~ff / ~cc / ~p) -- 1er bloc + // chacun contient les definitions ; les blocs suivants sont des + // exemples interactifs Cmd+Entree qu'on ne veut PAS executer au boot. + ~loadFirstBlock.(~base ++ "live/kicks.scd"); + ~loadFirstBlock.(~base ++ "live/melodies.scd"); + ~loadFirstBlock.(~base ++ "live/fx.scd"); + ~loadFirstBlock.(~base ++ "live/chains.scd"); + ~loadFirstBlock.(~base ++ "live/patterns.scd"); + + s.sync; + + // Hook CmdPeriod : chaque Cmd-. declenche aussi ~killAllOrphans + // pour eviter l'accumulation de Routines/Bus apres un panic stop. + ~guardCmdPeriodOn !? { ~guardCmdPeriodOn.value }; + + "".postln; + "=== setupAll DONE ===".postln; + "".postln; + ~check.value; + }; + + "=== ~setupAll : start ===".postln; + ~base = ~base ?? { "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/" }; + + // --- 1. Charge tous les fichiers .load-compatibles --- + "[setupAll] engine.scd ... loading".postln; + (~base ++ "engine.scd").load; + "[setupAll] synth/_index.scd ... loading".postln; + (~base ++ "synth/_index.scd").load; + "[setupAll] fx/_index.scd ... loading".postln; + (~base ++ "fx/_index.scd").load; + "[setupAll] palette/scales.scd ... loading".postln; + (~base ++ "palette/scales.scd").load; + "[setupAll] palette/melodies/index.scd ... loading".postln; + (~base ++ "palette/melodies/index.scd").load; + "[setupAll] palette/harmonics/index.scd ... loading".postln; + (~base ++ "palette/harmonics/index.scd").load; + + // --- 2. Boot serveur (skip si deja boote) puis init modules live --- + // Augmente maxSynthDefs (defaut 1024) car le projet en charge >1100 + // (1060 dans synth/ + ~40 dans fx/ + inline). A passer en option scsynth + // AVANT s.boot, sinon les SynthDef au-dela de 1024 echouent + // silencieusement avec "Could not add SynthDef X". + s.options.maxSynthDefs = 4096; + if (s.serverRunning) { + "=== ~setupAll : serveur deja boote, skip waitForBoot ===".postln; + liveSetup.value; + } { + "=== ~setupAll : boot serveur en cours... ===".postln; + s.waitForBoot { + s.sync; + "=== ~setupAll : boot OK ===".postln; + liveSetup.value; + }; + }; +}; + + +// --- HELPER : ~setupLive -------------------------------------------- +// Charge UNIQUEMENT les modules live (ne touche pas engine / +// synthdefs / scales / melodies / harmonics). Pour redemarrage +// rapide quand le serveur tourne deja avec engine charge. +// -------------------------------------------------------------------- +~setupLive = { + ~base = ~base ?? { "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/" }; + if (s.serverRunning.not) { + "!! ~setupLive : serveur pas demarre. Lance ~setupAll a la place.".postln; + } { + "=== ~setupLive : init modules live seulement ===".postln; + ~loadFirstBlock.(~base ++ "live/fx_bus.scd"); + ~loadFirstBlock.(~base ++ "live/live.scd"); + ~loadFirstBlock.(~base ++ "live/mixer.scd"); + ~loadFirstBlock.(~base ++ "live/scenes.scd"); + ~loadFirstBlock.(~base ++ "live/loops.scd"); + ~loadFirstBlock.(~base ++ "live/memory_guard.scd"); + (~base ++ "palette/rhythm/_index.scd").load; // fills + sequences (auto-discovery) + ~loadAllBlocks.(~base ++ "palette/chords_progressions.scd"); + ~loadFirstBlock.(~base ++ "control/jump.scd"); + // 5 wrappers API live (~kk / ~mm / ~ff / ~cc / ~p) + ~loadFirstBlock.(~base ++ "live/kicks.scd"); + ~loadFirstBlock.(~base ++ "live/melodies.scd"); + ~loadFirstBlock.(~base ++ "live/fx.scd"); + ~loadFirstBlock.(~base ++ "live/chains.scd"); + ~loadFirstBlock.(~base ++ "live/patterns.scd"); + "=== ~setupLive : OK ===".postln; + ~check.value; + }; +}; + + +// --- HELPER : ~ensureLive ------------------------------------------- +// Helper paresseux : detecte ce qui manque dans live/* + fills + +// sequences + jump et charge SEULEMENT les modules absents. +// Idempotent : peut etre appele plusieurs fois sans rien recharger. +// -------------------------------------------------------------------- +~ensureLive = { + var loaded = 0; + ~base = ~base ?? { "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/" }; + if (s.serverRunning.not) { + "!! ~ensureLive : serveur pas demarre. Lance ~setupAll d'abord.".postln; + } { + // fx_bus en premier (les autres modules peuvent en dependre) + if (~fxFx.isNil or: { ~send.isNil }) { + "ensure : fx_bus.scd".postln; + ~loadFirstBlock.(~base ++ "live/fx_bus.scd"); + loaded = loaded + 1; + }; + if (~lfoTo.isNil or: { ~vcfOn.isNil }) { + "ensure : live.scd".postln; + ~loadFirstBlock.(~base ++ "live/live.scd"); + loaded = loaded + 1; + }; + if (~setVol.isNil or: { ~mixPreset.isNil }) { + "ensure : mixer.scd".postln; + ~loadFirstBlock.(~base ++ "live/mixer.scd"); + loaded = loaded + 1; + }; + if (~saveScene.isNil) { + "ensure : scenes.scd".postln; + ~loadFirstBlock.(~base ++ "live/scenes.scd"); + loaded = loaded + 1; + }; + if (~loopOn.isNil) { + "ensure : loops.scd".postln; + ~loadFirstBlock.(~base ++ "live/loops.scd"); + loaded = loaded + 1; + }; + if (~killAllOrphans.isNil) { + "ensure : memory_guard.scd".postln; + ~loadFirstBlock.(~base ++ "live/memory_guard.scd"); + loaded = loaded + 1; + }; + if (~snareFill.isNil or: { ~tomFill.isNil } + or: { ~seqPlay.isNil } or: { ~seqIntro.isNil }) { + "ensure : palette/rhythm/_index.scd (fills + sequences)".postln; + (~base ++ "palette/rhythm/_index.scd").load; + loaded = loaded + 1; + }; + if (~jumpTo.isNil) { + "ensure : jump.scd".postln; + ~loadFirstBlock.(~base ++ "control/jump.scd"); + loaded = loaded + 1; + }; + if (~progDetroit.isNil or: { ~chordsToMelody.isNil }) { + "ensure : chords_progressions.scd".postln; + ~loadAllBlocks.(~base ++ "palette/chords_progressions.scd"); + loaded = loaded + 1; + }; + // 5 wrappers API live (chacun expose un dict + des wrappers env) + if (~kk.isNil) { + "ensure : live/kicks.scd".postln; + ~loadFirstBlock.(~base ++ "live/kicks.scd"); + loaded = loaded + 1; + }; + if (~mm.isNil) { + "ensure : live/melodies.scd".postln; + ~loadFirstBlock.(~base ++ "live/melodies.scd"); + loaded = loaded + 1; + }; + if (~ff.isNil) { + "ensure : live/fx.scd".postln; + ~loadFirstBlock.(~base ++ "live/fx.scd"); + loaded = loaded + 1; + }; + if (~cc.isNil) { + "ensure : live/chains.scd".postln; + ~loadFirstBlock.(~base ++ "live/chains.scd"); + loaded = loaded + 1; + }; + if (~p.isNil) { + "ensure : live/patterns.scd".postln; + ~loadFirstBlock.(~base ++ "live/patterns.scd"); + loaded = loaded + 1; + }; + if (loaded == 0) { + "=== ~ensureLive : tout est deja la, rien a charger ===".postln; + } { + ("=== ~ensureLive : " ++ loaded ++ " module(s) charge(s) ===").postln; + }; + }; +}; + + +// --- HELPER : ~teardown --------------------------------------------- +// Stop tout proprement : +// - ~track et autres routines +// - tous les Pdef de l'engine +// - LFO / VCF / loops / playlist / sequences +// - libere ~masterLim et ~scBus +// - libere les bus FX et synths FX si presents +// -------------------------------------------------------------------- +~teardown = { + "=== ~teardown : stop tout ===".postln; + + // Watchdog memory_guard et album orchestrateur + ~watchdogOff !? { ~watchdogOff.value }; + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + + // Routines de track / sweep / loops engine + ~track !? { ~track.stop; ~track = nil }; + ~filterSweep !? { ~filterSweep.stop; ~filterSweep = nil }; + ~randomLoop !? { ~randomLoop.stop; ~randomLoop = nil }; + ~melodyEvolve !? { ~melodyEvolve.stop; ~melodyEvolve = nil }; + ~lRotate !? { ~lRotate.stop; ~lRotate = nil }; + + // Tous les Pdef + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + + // LFO live (live.scd) + ~lfoStopEverything !? { ~lfoStopEverything.value }; + + // LFO fx_bus (fx_bus.scd) + ~lfoStopAll !? { ~lfoStopAll.value }; + + // VCF master + ~vcfOff !? { ~vcfOff.value }; + + // Loops live + ~loopOffAll !? { ~loopOffAll.value }; + + // Sequences (palette/rhythm/sequences.scd) + ~seqStop !? { ~seqStop.value }; + + // Auto-fx (autoPan / tremolo) + ~stopAutoFx !? { + [\kick, \hat, \snare, \clap, \perc, \acid, \melody, \harmony] + .do { |v| ~stopAutoFx.(v) }; + }; + + // Compresseur / saturation master + ~compOff !? { ~compOff.value }; + ~satOff !? { ~satOff.value }; + + // Playlist + ~playlist !? { ~playlist.stop; ~playlist = nil }; + + // Free pdef tracks melodiques (multi-pistes) + ~melTrackChoke !? { ~melTrackChoke.value }; + + // Master limiter + sidechain bus + ~masterLim !? { ~masterLim.free; ~masterLim = nil }; + ~scBus !? { ~scBus.free; ~scBus = nil }; + + // Bus FX + synths FX + ~fxFx !? { + ~fxFx.do { |syn| syn !? { syn.free } }; + ~fxFx = nil; + }; + ~fxBuses !? { + ~fxBuses.do { |b| b !? { b.free } }; + ~fxBuses = nil; + }; + + "=== ~teardown OK ===".postln; +}; + +"~loadFirstBlock / ~check / ~setupAll / ~setupLive / ~ensureLive / ~teardown prets".postln; +) + + +// ===================================================================== +// BLOCS Cmd+Entree -- workflows manuels (executes a la demande) +// +// IMPORTANT : ces blocs sont COMMENTES car .load echoue avec >1 bloc +// top-level. Pour les utiliser : DECOMMENTE la ligne (retire les "//") +// puis Cmd+Entree dessus dans l'IDE. Ou copie-colle le contenu. +// ===================================================================== + +// --- VERIF rapide de l'etat ---------- +// ( ~check.(); ) + +// --- INIT COMPLETE (charge tout + boot + setup live + check) --------- +// ( ~setupAll.(); ) + +// --- INIT LIVE SEULEMENT (serveur deja boote) ------------------------ +// ( ~setupLive.(); ) + +// --- INIT PARESSEUSE (charge ce qui manque seulement) ---------------- +// ( ~ensureLive.(); ) + +// --- ARRET PROPRE ---------------------------------------------------- +// ( ~teardown.(); ) + +// --- COMBO : check d'abord, puis setup auto si besoin ---------------- +// ( ~check.(); ~setupAll.(); ) + +// --- COMBO : teardown puis re-setupAll (full restart sans rebooter) -- +// ( ~teardown.(); ~setupAll.(); ) diff --git a/sound_algo/synth/_index.scd b/sound_algo/synth/_index.scd new file mode 100644 index 0000000..03e0875 --- /dev/null +++ b/sound_algo/synth/_index.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// synth/_index.scd -- Auto-glob loader pour tous les SynthDef +// +// Charge recursivement chaque .scd des sous-dossiers (drums/, bass/, +// lead/, pad/, world/, master/). Ajouter un nouveau Synth = juste +// creer le fichier, pas besoin de modifier ce loader. +// ===================================================================== +( +PathName(thisProcess.nowExecutingPath.dirname).deepFiles + .select { |f| f.extension == "scd" + and: { f.fileName != "_index.scd" } } + .sort { |a, b| a.fullPath < b.fullPath } + .do { |f| f.fullPath.load }; +"=== synth/ loaded ===".postln; +) diff --git a/sound_algo/synth/bass/acid.scd b/sound_algo/synth/bass/acid.scd new file mode 100644 index 0000000..9d7d3e1 --- /dev/null +++ b/sound_algo/synth/bass/acid.scd @@ -0,0 +1,31 @@ +// ===================================================================== +// synth/bass/acid.scd -- SynthDef \acid +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\acid, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.005, + cutoff = 800, cutoffEnv = 3500, rq = 0.15, + envDecay = 0.35, ampDecay = 0.28, + drive = 2.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + // ADSR avec sustain=0 : la note "perc" naturelle, mais le + // release de 50ms permet le retrigger PmonoArtic sans free. + // doneAction:2 libere le Synth quand release atteint 0 -> safe. + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); + }).add; +) diff --git a/sound_algo/synth/bass/acid_v1.scd b/sound_algo/synth/bass/acid_v1.scd new file mode 100644 index 0000000..9082832 --- /dev/null +++ b/sound_algo/synth/bass/acid_v1.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v1.scd -- SynthDef \acid_v1 // variation acid TB-303 +( +SynthDef(\acid_v1, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.005, + cutoff = 400, cutoffEnv = 2000, rq = 0.1, + envDecay = 0.2, ampDecay = 0.2, + drive = 1.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v10.scd b/sound_algo/synth/bass/acid_v10.scd new file mode 100644 index 0000000..9576881 --- /dev/null +++ b/sound_algo/synth/bass/acid_v10.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v10.scd -- SynthDef \acid_v10 // variation acid TB-303 +( +SynthDef(\acid_v10, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.01, + cutoff = 600, cutoffEnv = 3000, rq = 0.25, + envDecay = 0.5, ampDecay = 0.4, + drive = 3.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Pulse.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v11.scd b/sound_algo/synth/bass/acid_v11.scd new file mode 100644 index 0000000..cdef89b --- /dev/null +++ b/sound_algo/synth/bass/acid_v11.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v11.scd -- SynthDef \acid_v11 // variation acid TB-303 +( +SynthDef(\acid_v11, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.02, + cutoff = 800, cutoffEnv = 3500, rq = 0.3, + envDecay = 0.25, ampDecay = 0.2, + drive = 3.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v12.scd b/sound_algo/synth/bass/acid_v12.scd new file mode 100644 index 0000000..61f9638 --- /dev/null +++ b/sound_algo/synth/bass/acid_v12.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v12.scd -- SynthDef \acid_v12 // variation acid TB-303 +( +SynthDef(\acid_v12, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.04, + cutoff = 1000, cutoffEnv = 4000, rq = 0.08, + envDecay = 0.35, ampDecay = 0.25, + drive = 4.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v13.scd b/sound_algo/synth/bass/acid_v13.scd new file mode 100644 index 0000000..80e06e2 --- /dev/null +++ b/sound_algo/synth/bass/acid_v13.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v13.scd -- SynthDef \acid_v13 // variation acid TB-303 +( +SynthDef(\acid_v13, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.005, + cutoff = 1200, cutoffEnv = 5000, rq = 0.1, + envDecay = 0.2, ampDecay = 0.3, + drive = 1.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v14.scd b/sound_algo/synth/bass/acid_v14.scd new file mode 100644 index 0000000..e40c661 --- /dev/null +++ b/sound_algo/synth/bass/acid_v14.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v14.scd -- SynthDef \acid_v14 // variation acid TB-303 +( +SynthDef(\acid_v14, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.01, + cutoff = 1500, cutoffEnv = 6000, rq = 0.15, + envDecay = 0.3, ampDecay = 0.35, + drive = 2.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Pulse.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v15.scd b/sound_algo/synth/bass/acid_v15.scd new file mode 100644 index 0000000..19d5eab --- /dev/null +++ b/sound_algo/synth/bass/acid_v15.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v15.scd -- SynthDef \acid_v15 // variation acid TB-303 +( +SynthDef(\acid_v15, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.02, + cutoff = 500, cutoffEnv = 2000, rq = 0.2, + envDecay = 0.4, ampDecay = 0.4, + drive = 2.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v16.scd b/sound_algo/synth/bass/acid_v16.scd new file mode 100644 index 0000000..fa5e498 --- /dev/null +++ b/sound_algo/synth/bass/acid_v16.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v16.scd -- SynthDef \acid_v16 // variation acid TB-303 +( +SynthDef(\acid_v16, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.04, + cutoff = 700, cutoffEnv = 2500, rq = 0.25, + envDecay = 0.5, ampDecay = 0.2, + drive = 3.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v17.scd b/sound_algo/synth/bass/acid_v17.scd new file mode 100644 index 0000000..bf9746f --- /dev/null +++ b/sound_algo/synth/bass/acid_v17.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v17.scd -- SynthDef \acid_v17 // variation acid TB-303 +( +SynthDef(\acid_v17, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.005, + cutoff = 400, cutoffEnv = 3000, rq = 0.3, + envDecay = 0.25, ampDecay = 0.25, + drive = 3.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v18.scd b/sound_algo/synth/bass/acid_v18.scd new file mode 100644 index 0000000..42d13b5 --- /dev/null +++ b/sound_algo/synth/bass/acid_v18.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v18.scd -- SynthDef \acid_v18 // variation acid TB-303 +( +SynthDef(\acid_v18, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.01, + cutoff = 600, cutoffEnv = 3500, rq = 0.08, + envDecay = 0.35, ampDecay = 0.3, + drive = 4.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Pulse.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v19.scd b/sound_algo/synth/bass/acid_v19.scd new file mode 100644 index 0000000..051de92 --- /dev/null +++ b/sound_algo/synth/bass/acid_v19.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v19.scd -- SynthDef \acid_v19 // variation acid TB-303 +( +SynthDef(\acid_v19, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.02, + cutoff = 800, cutoffEnv = 4000, rq = 0.1, + envDecay = 0.2, ampDecay = 0.35, + drive = 1.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v2.scd b/sound_algo/synth/bass/acid_v2.scd new file mode 100644 index 0000000..204b33e --- /dev/null +++ b/sound_algo/synth/bass/acid_v2.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v2.scd -- SynthDef \acid_v2 // variation acid TB-303 +( +SynthDef(\acid_v2, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.01, + cutoff = 600, cutoffEnv = 2500, rq = 0.15, + envDecay = 0.3, ampDecay = 0.25, + drive = 2.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Pulse.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v3.scd b/sound_algo/synth/bass/acid_v3.scd new file mode 100644 index 0000000..da86a82 --- /dev/null +++ b/sound_algo/synth/bass/acid_v3.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v3.scd -- SynthDef \acid_v3 // variation acid TB-303 +( +SynthDef(\acid_v3, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.02, + cutoff = 800, cutoffEnv = 3000, rq = 0.2, + envDecay = 0.4, ampDecay = 0.3, + drive = 2.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v4.scd b/sound_algo/synth/bass/acid_v4.scd new file mode 100644 index 0000000..e8e0848 --- /dev/null +++ b/sound_algo/synth/bass/acid_v4.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v4.scd -- SynthDef \acid_v4 // variation acid TB-303 +( +SynthDef(\acid_v4, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.04, + cutoff = 1000, cutoffEnv = 3500, rq = 0.25, + envDecay = 0.5, ampDecay = 0.35, + drive = 3.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v5.scd b/sound_algo/synth/bass/acid_v5.scd new file mode 100644 index 0000000..b55da93 --- /dev/null +++ b/sound_algo/synth/bass/acid_v5.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v5.scd -- SynthDef \acid_v5 // variation acid TB-303 +( +SynthDef(\acid_v5, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.005, + cutoff = 1200, cutoffEnv = 4000, rq = 0.3, + envDecay = 0.25, ampDecay = 0.4, + drive = 3.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v6.scd b/sound_algo/synth/bass/acid_v6.scd new file mode 100644 index 0000000..44e8b59 --- /dev/null +++ b/sound_algo/synth/bass/acid_v6.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v6.scd -- SynthDef \acid_v6 // variation acid TB-303 +( +SynthDef(\acid_v6, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.01, + cutoff = 1500, cutoffEnv = 5000, rq = 0.08, + envDecay = 0.35, ampDecay = 0.2, + drive = 4.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Pulse.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v7.scd b/sound_algo/synth/bass/acid_v7.scd new file mode 100644 index 0000000..43d36c4 --- /dev/null +++ b/sound_algo/synth/bass/acid_v7.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v7.scd -- SynthDef \acid_v7 // variation acid TB-303 +( +SynthDef(\acid_v7, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.02, + cutoff = 500, cutoffEnv = 6000, rq = 0.1, + envDecay = 0.2, ampDecay = 0.25, + drive = 1.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v8.scd b/sound_algo/synth/bass/acid_v8.scd new file mode 100644 index 0000000..c573977 --- /dev/null +++ b/sound_algo/synth/bass/acid_v8.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v8.scd -- SynthDef \acid_v8 // variation acid TB-303 +( +SynthDef(\acid_v8, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.04, + cutoff = 700, cutoffEnv = 2000, rq = 0.15, + envDecay = 0.3, ampDecay = 0.3, + drive = 2.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/acid_v9.scd b/sound_algo/synth/bass/acid_v9.scd new file mode 100644 index 0000000..6f365c6 --- /dev/null +++ b/sound_algo/synth/bass/acid_v9.scd @@ -0,0 +1,25 @@ +// synth/bass/acid_v9.scd -- SynthDef \acid_v9 // variation acid TB-303 +( +SynthDef(\acid_v9, { + arg freq = 110, gate = 1, accent = 0, slideTime = 0.005, + cutoff = 400, cutoffEnv = 2500, rq = 0.2, + envDecay = 0.4, ampDecay = 0.35, + drive = 2.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.7; + var f, sig, ampEnv, fEnv, fc, duck; + f = Lag.kr(freq, slideTime); + sig = Saw.ar(f); + fEnv = EnvGen.kr(Env.perc(0.001, envDecay * (1 - (accent * 0.4))), + gate, doneAction: 0); + fc = (cutoff + (fEnv * cutoffEnv * (1 + accent))).clip(60, 14000); + sig = RLPF.ar(sig, fc, rq); + ampEnv = EnvGen.kr( + Env.adsr(0.003, ampDecay, 0, 0.05, curve: -3), + gate, doneAction: 2 + ); + sig = (sig * drive * (1 + (accent * 0.6))).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = sig * ampEnv * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808.scd b/sound_algo/synth/bass/bass808.scd new file mode 100644 index 0000000..5ae42ac --- /dev/null +++ b/sound_algo/synth/bass/bass808.scd @@ -0,0 +1,20 @@ +// ===================================================================== +// synth/bass/bass808.scd -- SynthDef \bass808 +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\bass808, { + arg freq = 55, gate = 1, glide = 0.05, + attack = 0.003, decay = 0.4, sustain = 0.8, release = 0.6, + drive = 1.4, amp = 0.45, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, duck, f; + f = Lag.kr(freq, glide); + sig = SinOsc.ar(f) + (SinOsc.ar(f * 0.5) * 0.5); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = LeakDC.ar(sig) * env * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); + }).add; +) diff --git a/sound_algo/synth/bass/bass808_v1.scd b/sound_algo/synth/bass/bass808_v1.scd new file mode 100644 index 0000000..ed1469b --- /dev/null +++ b/sound_algo/synth/bass/bass808_v1.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v1.scd -- SynthDef \bass808_v1 // variation 808 bass sub long +( +SynthDef(\bass808_v1, { + arg freq = 40, gate = 1, + attack = 0.001, decay = 0.5, sustain = 0.0, release = 0.1, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v10.scd b/sound_algo/synth/bass/bass808_v10.scd new file mode 100644 index 0000000..d2d4c1b --- /dev/null +++ b/sound_algo/synth/bass/bass808_v10.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v10.scd -- SynthDef \bass808_v10 // variation 808 bass sub long +( +SynthDef(\bass808_v10, { + arg freq = 60, gate = 1, + attack = 0.001, decay = 2.0, sustain = 0.0, release = 0.3, + drive = 1.2, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v11.scd b/sound_algo/synth/bass/bass808_v11.scd new file mode 100644 index 0000000..7f8a661 --- /dev/null +++ b/sound_algo/synth/bass/bass808_v11.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v11.scd -- SynthDef \bass808_v11 // variation 808 bass sub long +( +SynthDef(\bass808_v11, { + arg freq = 40, gate = 1, + attack = 0.002, decay = 0.5, sustain = 0.1, release = 0.5, + drive = 1.5, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v12.scd b/sound_algo/synth/bass/bass808_v12.scd new file mode 100644 index 0000000..de13714 --- /dev/null +++ b/sound_algo/synth/bass/bass808_v12.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v12.scd -- SynthDef \bass808_v12 // variation 808 bass sub long +( +SynthDef(\bass808_v12, { + arg freq = 45, gate = 1, + attack = 0.005, decay = 0.8, sustain = 0.2, release = 1.0, + drive = 2.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v13.scd b/sound_algo/synth/bass/bass808_v13.scd new file mode 100644 index 0000000..cd59be8 --- /dev/null +++ b/sound_algo/synth/bass/bass808_v13.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v13.scd -- SynthDef \bass808_v13 // variation 808 bass sub long +( +SynthDef(\bass808_v13, { + arg freq = 50, gate = 1, + attack = 0.001, decay = 1.0, sustain = 0.0, release = 0.1, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v14.scd b/sound_algo/synth/bass/bass808_v14.scd new file mode 100644 index 0000000..099152c --- /dev/null +++ b/sound_algo/synth/bass/bass808_v14.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v14.scd -- SynthDef \bass808_v14 // variation 808 bass sub long +( +SynthDef(\bass808_v14, { + arg freq = 55, gate = 1, + attack = 0.002, decay = 1.5, sustain = 0.1, release = 0.3, + drive = 1.2, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v15.scd b/sound_algo/synth/bass/bass808_v15.scd new file mode 100644 index 0000000..a13a5ff --- /dev/null +++ b/sound_algo/synth/bass/bass808_v15.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v15.scd -- SynthDef \bass808_v15 // variation 808 bass sub long +( +SynthDef(\bass808_v15, { + arg freq = 60, gate = 1, + attack = 0.005, decay = 2.0, sustain = 0.2, release = 0.5, + drive = 1.5, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v16.scd b/sound_algo/synth/bass/bass808_v16.scd new file mode 100644 index 0000000..db03458 --- /dev/null +++ b/sound_algo/synth/bass/bass808_v16.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v16.scd -- SynthDef \bass808_v16 // variation 808 bass sub long +( +SynthDef(\bass808_v16, { + arg freq = 40, gate = 1, + attack = 0.001, decay = 0.5, sustain = 0.0, release = 1.0, + drive = 2.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v17.scd b/sound_algo/synth/bass/bass808_v17.scd new file mode 100644 index 0000000..8907100 --- /dev/null +++ b/sound_algo/synth/bass/bass808_v17.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v17.scd -- SynthDef \bass808_v17 // variation 808 bass sub long +( +SynthDef(\bass808_v17, { + arg freq = 45, gate = 1, + attack = 0.002, decay = 0.8, sustain = 0.1, release = 0.1, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v18.scd b/sound_algo/synth/bass/bass808_v18.scd new file mode 100644 index 0000000..ee758cc --- /dev/null +++ b/sound_algo/synth/bass/bass808_v18.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v18.scd -- SynthDef \bass808_v18 // variation 808 bass sub long +( +SynthDef(\bass808_v18, { + arg freq = 50, gate = 1, + attack = 0.005, decay = 1.0, sustain = 0.2, release = 0.3, + drive = 1.2, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v19.scd b/sound_algo/synth/bass/bass808_v19.scd new file mode 100644 index 0000000..3cd3c44 --- /dev/null +++ b/sound_algo/synth/bass/bass808_v19.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v19.scd -- SynthDef \bass808_v19 // variation 808 bass sub long +( +SynthDef(\bass808_v19, { + arg freq = 55, gate = 1, + attack = 0.001, decay = 1.5, sustain = 0.0, release = 0.5, + drive = 1.5, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v2.scd b/sound_algo/synth/bass/bass808_v2.scd new file mode 100644 index 0000000..508fba8 --- /dev/null +++ b/sound_algo/synth/bass/bass808_v2.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v2.scd -- SynthDef \bass808_v2 // variation 808 bass sub long +( +SynthDef(\bass808_v2, { + arg freq = 45, gate = 1, + attack = 0.002, decay = 0.8, sustain = 0.1, release = 0.3, + drive = 1.2, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v3.scd b/sound_algo/synth/bass/bass808_v3.scd new file mode 100644 index 0000000..ece94fa --- /dev/null +++ b/sound_algo/synth/bass/bass808_v3.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v3.scd -- SynthDef \bass808_v3 // variation 808 bass sub long +( +SynthDef(\bass808_v3, { + arg freq = 50, gate = 1, + attack = 0.005, decay = 1.0, sustain = 0.2, release = 0.5, + drive = 1.5, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v4.scd b/sound_algo/synth/bass/bass808_v4.scd new file mode 100644 index 0000000..077f53e --- /dev/null +++ b/sound_algo/synth/bass/bass808_v4.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v4.scd -- SynthDef \bass808_v4 // variation 808 bass sub long +( +SynthDef(\bass808_v4, { + arg freq = 55, gate = 1, + attack = 0.001, decay = 1.5, sustain = 0.0, release = 1.0, + drive = 2.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v5.scd b/sound_algo/synth/bass/bass808_v5.scd new file mode 100644 index 0000000..ff8a3f8 --- /dev/null +++ b/sound_algo/synth/bass/bass808_v5.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v5.scd -- SynthDef \bass808_v5 // variation 808 bass sub long +( +SynthDef(\bass808_v5, { + arg freq = 60, gate = 1, + attack = 0.002, decay = 2.0, sustain = 0.1, release = 0.1, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v6.scd b/sound_algo/synth/bass/bass808_v6.scd new file mode 100644 index 0000000..37652e7 --- /dev/null +++ b/sound_algo/synth/bass/bass808_v6.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v6.scd -- SynthDef \bass808_v6 // variation 808 bass sub long +( +SynthDef(\bass808_v6, { + arg freq = 40, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.2, release = 0.3, + drive = 1.2, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v7.scd b/sound_algo/synth/bass/bass808_v7.scd new file mode 100644 index 0000000..5cec762 --- /dev/null +++ b/sound_algo/synth/bass/bass808_v7.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v7.scd -- SynthDef \bass808_v7 // variation 808 bass sub long +( +SynthDef(\bass808_v7, { + arg freq = 45, gate = 1, + attack = 0.001, decay = 0.8, sustain = 0.0, release = 0.5, + drive = 1.5, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v8.scd b/sound_algo/synth/bass/bass808_v8.scd new file mode 100644 index 0000000..e0eb588 --- /dev/null +++ b/sound_algo/synth/bass/bass808_v8.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v8.scd -- SynthDef \bass808_v8 // variation 808 bass sub long +( +SynthDef(\bass808_v8, { + arg freq = 50, gate = 1, + attack = 0.002, decay = 1.0, sustain = 0.1, release = 1.0, + drive = 2.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/bass808_v9.scd b/sound_algo/synth/bass/bass808_v9.scd new file mode 100644 index 0000000..964455e --- /dev/null +++ b/sound_algo/synth/bass/bass808_v9.scd @@ -0,0 +1,16 @@ +// synth/bass/bass808_v9.scd -- SynthDef \bass808_v9 // variation 808 bass sub long +( +SynthDef(\bass808_v9, { + arg freq = 55, gate = 1, + attack = 0.005, decay = 1.5, sustain = 0.2, release = 0.1, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo.scd b/sound_algo/synth/bass/didgeridoo.scd new file mode 100644 index 0000000..d7314ab --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo.scd @@ -0,0 +1,26 @@ +// ===================================================================== +// synth/bass/didgeridoo.scd -- SynthDef \didgeridoo +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\didgeridoo, { + arg freq = 60, gate = 1, + growlRate = 4, growlDepth = 0.15, + attack = 0.5, decay = 0.3, sustain = 0.85, release = 1.0, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, growl, harmonics; + growl = SinOsc.kr(growlRate * (1 + LFNoise2.kr(0.5).range(-0.15, 0.15))) + .range(1 - growlDepth, 1 + growlDepth); + harmonics = (Saw.ar(freq * growl) * 0.4) + + (Pulse.ar(freq * 2 * growl, 0.3) * 0.2) + + (Pulse.ar(freq * 3 * growl, 0.4) * 0.15) + + (SinOsc.ar(freq * 0.5) * 0.5); + sig = LPF.ar(harmonics, 1200); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = LeakDC.ar(sig) * env * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v1.scd b/sound_algo/synth/bass/didgeridoo_v1.scd new file mode 100644 index 0000000..671c98d --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v1.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v1.scd -- SynthDef \didgeridoo_v1 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v1, { + arg freq = 55, gate = 1, lfoRate = 3, lfoDepth = 0.4, + cutoff = 600, rq = 0.4, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v10.scd b/sound_algo/synth/bass/didgeridoo_v10.scd new file mode 100644 index 0000000..b77f80d --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v10.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v10.scd -- SynthDef \didgeridoo_v10 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v10, { + arg freq = 70, gate = 1, lfoRate = 5, lfoDepth = 0.5, + cutoff = 800, rq = 0.4, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v11.scd b/sound_algo/synth/bass/didgeridoo_v11.scd new file mode 100644 index 0000000..ee9629d --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v11.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v11.scd -- SynthDef \didgeridoo_v11 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v11, { + arg freq = 75, gate = 1, lfoRate = 6, lfoDepth = 0.6, + cutoff = 1000, rq = 0.5, + attack = 0.05, decay = 0.5, sustain = 0.8, release = 0.8, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v12.scd b/sound_algo/synth/bass/didgeridoo_v12.scd new file mode 100644 index 0000000..50826f2 --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v12.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v12.scd -- SynthDef \didgeridoo_v12 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v12, { + arg freq = 80, gate = 1, lfoRate = 8, lfoDepth = 0.7, + cutoff = 1200, rq = 0.6, + attack = 0.05, decay = 0.8, sustain = 0.9, release = 1.2, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v13.scd b/sound_algo/synth/bass/didgeridoo_v13.scd new file mode 100644 index 0000000..25fb2f1 --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v13.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v13.scd -- SynthDef \didgeridoo_v13 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v13, { + arg freq = 55, gate = 1, lfoRate = 10, lfoDepth = 0.4, + cutoff = 600, rq = 0.4, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v14.scd b/sound_algo/synth/bass/didgeridoo_v14.scd new file mode 100644 index 0000000..d049432 --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v14.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v14.scd -- SynthDef \didgeridoo_v14 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v14, { + arg freq = 60, gate = 1, lfoRate = 12, lfoDepth = 0.5, + cutoff = 800, rq = 0.5, + attack = 0.05, decay = 0.5, sustain = 0.8, release = 0.8, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v15.scd b/sound_algo/synth/bass/didgeridoo_v15.scd new file mode 100644 index 0000000..4b52bd3 --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v15.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v15.scd -- SynthDef \didgeridoo_v15 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v15, { + arg freq = 65, gate = 1, lfoRate = 3, lfoDepth = 0.6, + cutoff = 1000, rq = 0.6, + attack = 0.05, decay = 0.8, sustain = 0.9, release = 1.2, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v16.scd b/sound_algo/synth/bass/didgeridoo_v16.scd new file mode 100644 index 0000000..bf4425a --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v16.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v16.scd -- SynthDef \didgeridoo_v16 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v16, { + arg freq = 70, gate = 1, lfoRate = 4, lfoDepth = 0.7, + cutoff = 1200, rq = 0.4, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v17.scd b/sound_algo/synth/bass/didgeridoo_v17.scd new file mode 100644 index 0000000..0769d6b --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v17.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v17.scd -- SynthDef \didgeridoo_v17 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v17, { + arg freq = 75, gate = 1, lfoRate = 5, lfoDepth = 0.4, + cutoff = 600, rq = 0.5, + attack = 0.05, decay = 0.5, sustain = 0.8, release = 0.8, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v18.scd b/sound_algo/synth/bass/didgeridoo_v18.scd new file mode 100644 index 0000000..6f18903 --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v18.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v18.scd -- SynthDef \didgeridoo_v18 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v18, { + arg freq = 80, gate = 1, lfoRate = 6, lfoDepth = 0.5, + cutoff = 800, rq = 0.6, + attack = 0.05, decay = 0.8, sustain = 0.9, release = 1.2, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v19.scd b/sound_algo/synth/bass/didgeridoo_v19.scd new file mode 100644 index 0000000..5b2b12f --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v19.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v19.scd -- SynthDef \didgeridoo_v19 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v19, { + arg freq = 55, gate = 1, lfoRate = 8, lfoDepth = 0.6, + cutoff = 1000, rq = 0.4, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v2.scd b/sound_algo/synth/bass/didgeridoo_v2.scd new file mode 100644 index 0000000..a7d0eff --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v2.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v2.scd -- SynthDef \didgeridoo_v2 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v2, { + arg freq = 60, gate = 1, lfoRate = 4, lfoDepth = 0.5, + cutoff = 800, rq = 0.5, + attack = 0.05, decay = 0.5, sustain = 0.8, release = 0.8, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v3.scd b/sound_algo/synth/bass/didgeridoo_v3.scd new file mode 100644 index 0000000..899748b --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v3.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v3.scd -- SynthDef \didgeridoo_v3 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v3, { + arg freq = 65, gate = 1, lfoRate = 5, lfoDepth = 0.6, + cutoff = 1000, rq = 0.6, + attack = 0.05, decay = 0.8, sustain = 0.9, release = 1.2, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v4.scd b/sound_algo/synth/bass/didgeridoo_v4.scd new file mode 100644 index 0000000..5cfa356 --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v4.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v4.scd -- SynthDef \didgeridoo_v4 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v4, { + arg freq = 70, gate = 1, lfoRate = 6, lfoDepth = 0.7, + cutoff = 1200, rq = 0.4, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v5.scd b/sound_algo/synth/bass/didgeridoo_v5.scd new file mode 100644 index 0000000..123c83e --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v5.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v5.scd -- SynthDef \didgeridoo_v5 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v5, { + arg freq = 75, gate = 1, lfoRate = 8, lfoDepth = 0.4, + cutoff = 600, rq = 0.5, + attack = 0.05, decay = 0.5, sustain = 0.8, release = 0.8, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v6.scd b/sound_algo/synth/bass/didgeridoo_v6.scd new file mode 100644 index 0000000..a873ca0 --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v6.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v6.scd -- SynthDef \didgeridoo_v6 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v6, { + arg freq = 80, gate = 1, lfoRate = 10, lfoDepth = 0.5, + cutoff = 800, rq = 0.6, + attack = 0.05, decay = 0.8, sustain = 0.9, release = 1.2, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v7.scd b/sound_algo/synth/bass/didgeridoo_v7.scd new file mode 100644 index 0000000..e4d090f --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v7.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v7.scd -- SynthDef \didgeridoo_v7 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v7, { + arg freq = 55, gate = 1, lfoRate = 12, lfoDepth = 0.6, + cutoff = 1000, rq = 0.4, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v8.scd b/sound_algo/synth/bass/didgeridoo_v8.scd new file mode 100644 index 0000000..e6bb09d --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v8.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v8.scd -- SynthDef \didgeridoo_v8 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v8, { + arg freq = 60, gate = 1, lfoRate = 3, lfoDepth = 0.7, + cutoff = 1200, rq = 0.5, + attack = 0.05, decay = 0.5, sustain = 0.8, release = 0.8, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/didgeridoo_v9.scd b/sound_algo/synth/bass/didgeridoo_v9.scd new file mode 100644 index 0000000..8323055 --- /dev/null +++ b/sound_algo/synth/bass/didgeridoo_v9.scd @@ -0,0 +1,19 @@ +// synth/bass/didgeridoo_v9.scd -- SynthDef \didgeridoo_v9 // variation didgeridoo wobble +( +SynthDef(\didgeridoo_v9, { + arg freq = 65, gate = 1, lfoRate = 4, lfoDepth = 0.4, + cutoff = 600, rq = 0.6, + attack = 0.05, decay = 0.8, sustain = 0.9, release = 1.2, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, lfo, fc, duck; + sig = Saw.ar(freq.clip(20, 4000)); + lfo = SinOsc.kr(lfoRate).range(1 - lfoDepth, 1); + fc = (cutoff * lfo).clip(60, 12000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass.scd b/sound_algo/synth/bass/fm_bass.scd new file mode 100644 index 0000000..847467e --- /dev/null +++ b/sound_algo/synth/bass/fm_bass.scd @@ -0,0 +1,24 @@ +// ===================================================================== +// synth/bass/fm_bass.scd -- SynthDef \fmBass +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fmBass, { + arg freq = 55, gate = 1, modRatio = 2, modIndex = 5, + cutoff = 1800, rq = 0.5, + attack = 0.003, decay = 0.15, sustain = 0.6, release = 0.2, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, duck, mod, idxEnv; + idxEnv = EnvGen.kr(Env([modIndex, 0], [0.2], -3)); + mod = SinOsc.ar(freq * modRatio) * freq * idxEnv * 0.001; + sig = SinOsc.ar(freq + (mod * freq * 0.8)) + + (Saw.ar(freq) * 0.3); + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = LeakDC.ar(sig); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v1.scd b/sound_algo/synth/bass/fm_bass_v1.scd new file mode 100644 index 0000000..bc83e5a --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v1.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v1.scd -- SynthDef \fm_bass_v1 // variation FM bass 2-op +( +SynthDef(\fm_bass_v1, { + arg freq = 110, gate = 1, ratio = 0.5, modIndex = 50, + attack = 0.003, decay = 0.2, sustain = 0.4, release = 0.1, + drive = 1.2, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v10.scd b/sound_algo/synth/bass/fm_bass_v10.scd new file mode 100644 index 0000000..ba6c9f5 --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v10.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v10.scd -- SynthDef \fm_bass_v10 // variation FM bass 2-op +( +SynthDef(\fm_bass_v10, { + arg freq = 110, gate = 1, ratio = 1.5, modIndex = 200, + attack = 0.003, decay = 0.3, sustain = 0.4, release = 0.1, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v11.scd b/sound_algo/synth/bass/fm_bass_v11.scd new file mode 100644 index 0000000..da194bf --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v11.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v11.scd -- SynthDef \fm_bass_v11 // variation FM bass 2-op +( +SynthDef(\fm_bass_v11, { + arg freq = 110, gate = 1, ratio = 2.0, modIndex = 400, + attack = 0.003, decay = 0.4, sustain = 0.5, release = 0.2, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v12.scd b/sound_algo/synth/bass/fm_bass_v12.scd new file mode 100644 index 0000000..601ce3a --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v12.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v12.scd -- SynthDef \fm_bass_v12 // variation FM bass 2-op +( +SynthDef(\fm_bass_v12, { + arg freq = 110, gate = 1, ratio = 2.5, modIndex = 600, + attack = 0.003, decay = 0.5, sustain = 0.6, release = 0.3, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v13.scd b/sound_algo/synth/bass/fm_bass_v13.scd new file mode 100644 index 0000000..525e9ba --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v13.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v13.scd -- SynthDef \fm_bass_v13 // variation FM bass 2-op +( +SynthDef(\fm_bass_v13, { + arg freq = 110, gate = 1, ratio = 3.0, modIndex = 800, + attack = 0.003, decay = 0.2, sustain = 0.4, release = 0.1, + drive = 1.2, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v14.scd b/sound_algo/synth/bass/fm_bass_v14.scd new file mode 100644 index 0000000..f90bcc3 --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v14.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v14.scd -- SynthDef \fm_bass_v14 // variation FM bass 2-op +( +SynthDef(\fm_bass_v14, { + arg freq = 110, gate = 1, ratio = 0.25, modIndex = 1000, + attack = 0.003, decay = 0.3, sustain = 0.5, release = 0.2, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v15.scd b/sound_algo/synth/bass/fm_bass_v15.scd new file mode 100644 index 0000000..27b478b --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v15.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v15.scd -- SynthDef \fm_bass_v15 // variation FM bass 2-op +( +SynthDef(\fm_bass_v15, { + arg freq = 110, gate = 1, ratio = 0.5, modIndex = 50, + attack = 0.003, decay = 0.4, sustain = 0.6, release = 0.3, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v16.scd b/sound_algo/synth/bass/fm_bass_v16.scd new file mode 100644 index 0000000..b6fa053 --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v16.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v16.scd -- SynthDef \fm_bass_v16 // variation FM bass 2-op +( +SynthDef(\fm_bass_v16, { + arg freq = 110, gate = 1, ratio = 1.0, modIndex = 100, + attack = 0.003, decay = 0.5, sustain = 0.4, release = 0.1, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v17.scd b/sound_algo/synth/bass/fm_bass_v17.scd new file mode 100644 index 0000000..1db91ff --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v17.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v17.scd -- SynthDef \fm_bass_v17 // variation FM bass 2-op +( +SynthDef(\fm_bass_v17, { + arg freq = 110, gate = 1, ratio = 1.5, modIndex = 200, + attack = 0.003, decay = 0.2, sustain = 0.5, release = 0.2, + drive = 1.2, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v18.scd b/sound_algo/synth/bass/fm_bass_v18.scd new file mode 100644 index 0000000..4e40219 --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v18.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v18.scd -- SynthDef \fm_bass_v18 // variation FM bass 2-op +( +SynthDef(\fm_bass_v18, { + arg freq = 110, gate = 1, ratio = 2.0, modIndex = 400, + attack = 0.003, decay = 0.3, sustain = 0.6, release = 0.3, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v19.scd b/sound_algo/synth/bass/fm_bass_v19.scd new file mode 100644 index 0000000..9f79d34 --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v19.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v19.scd -- SynthDef \fm_bass_v19 // variation FM bass 2-op +( +SynthDef(\fm_bass_v19, { + arg freq = 110, gate = 1, ratio = 2.5, modIndex = 600, + attack = 0.003, decay = 0.4, sustain = 0.4, release = 0.1, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v2.scd b/sound_algo/synth/bass/fm_bass_v2.scd new file mode 100644 index 0000000..24bcb62 --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v2.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v2.scd -- SynthDef \fm_bass_v2 // variation FM bass 2-op +( +SynthDef(\fm_bass_v2, { + arg freq = 110, gate = 1, ratio = 1.0, modIndex = 100, + attack = 0.003, decay = 0.3, sustain = 0.5, release = 0.2, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v3.scd b/sound_algo/synth/bass/fm_bass_v3.scd new file mode 100644 index 0000000..5bb4a35 --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v3.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v3.scd -- SynthDef \fm_bass_v3 // variation FM bass 2-op +( +SynthDef(\fm_bass_v3, { + arg freq = 110, gate = 1, ratio = 1.5, modIndex = 200, + attack = 0.003, decay = 0.4, sustain = 0.6, release = 0.3, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v4.scd b/sound_algo/synth/bass/fm_bass_v4.scd new file mode 100644 index 0000000..7ed7b74 --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v4.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v4.scd -- SynthDef \fm_bass_v4 // variation FM bass 2-op +( +SynthDef(\fm_bass_v4, { + arg freq = 110, gate = 1, ratio = 2.0, modIndex = 400, + attack = 0.003, decay = 0.5, sustain = 0.4, release = 0.1, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v5.scd b/sound_algo/synth/bass/fm_bass_v5.scd new file mode 100644 index 0000000..edc201a --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v5.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v5.scd -- SynthDef \fm_bass_v5 // variation FM bass 2-op +( +SynthDef(\fm_bass_v5, { + arg freq = 110, gate = 1, ratio = 2.5, modIndex = 600, + attack = 0.003, decay = 0.2, sustain = 0.5, release = 0.2, + drive = 1.2, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v6.scd b/sound_algo/synth/bass/fm_bass_v6.scd new file mode 100644 index 0000000..953a204 --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v6.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v6.scd -- SynthDef \fm_bass_v6 // variation FM bass 2-op +( +SynthDef(\fm_bass_v6, { + arg freq = 110, gate = 1, ratio = 3.0, modIndex = 800, + attack = 0.003, decay = 0.3, sustain = 0.6, release = 0.3, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v7.scd b/sound_algo/synth/bass/fm_bass_v7.scd new file mode 100644 index 0000000..d9f76a1 --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v7.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v7.scd -- SynthDef \fm_bass_v7 // variation FM bass 2-op +( +SynthDef(\fm_bass_v7, { + arg freq = 110, gate = 1, ratio = 0.25, modIndex = 1000, + attack = 0.003, decay = 0.4, sustain = 0.4, release = 0.1, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v8.scd b/sound_algo/synth/bass/fm_bass_v8.scd new file mode 100644 index 0000000..043b816 --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v8.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v8.scd -- SynthDef \fm_bass_v8 // variation FM bass 2-op +( +SynthDef(\fm_bass_v8, { + arg freq = 110, gate = 1, ratio = 0.5, modIndex = 50, + attack = 0.003, decay = 0.5, sustain = 0.5, release = 0.2, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/fm_bass_v9.scd b/sound_algo/synth/bass/fm_bass_v9.scd new file mode 100644 index 0000000..01495ed --- /dev/null +++ b/sound_algo/synth/bass/fm_bass_v9.scd @@ -0,0 +1,17 @@ +// synth/bass/fm_bass_v9.scd -- SynthDef \fm_bass_v9 // variation FM bass 2-op +( +SynthDef(\fm_bass_v9, { + arg freq = 110, gate = 1, ratio = 1.0, modIndex = 100, + attack = 0.003, decay = 0.2, sustain = 0.6, release = 0.3, + drive = 1.2, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex; + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass.scd b/sound_algo/synth/bass/hooverbass.scd new file mode 100644 index 0000000..09967f6 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass.scd @@ -0,0 +1,28 @@ +// ===================================================================== +// synth/bass/hooverbass.scd -- SynthDef \hooverbass +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\hooverbass, { + arg freq = 110, gate = 1, detune = 0.012, + cutoff = 3500, rq = 0.4, + attack = 0.001, decay = 0.1, sustain = 0.7, release = 0.2, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, pwm; + pwm = LFTri.kr(0.3).range(0.3, 0.7); + voices = [ + Saw.ar(freq * (1 - detune)) * 0.4, + Saw.ar(freq * (1 + detune)) * 0.4, + Pulse.ar(freq * 0.5, pwm) * 0.3, // sub octave + Pulse.ar(freq * 2 * (1 + (detune * 1.5)), pwm) * 0.2 // octave aigu + ]; + sig = Mix(voices); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = LeakDC.ar(sig) * env * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v1.scd b/sound_algo/synth/bass/hooverbass_v1.scd new file mode 100644 index 0000000..6f3e43b --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v1.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v1.scd -- SynthDef \hooverbass_v1 // variation hoover bass +( +SynthDef(\hooverbass_v1, { + arg freq = 80, gate = 1, detune = 0.015, + cutoff = 800, rq = 0.5, + attack = 0.005, decay = 0.2, sustain = 0.7, release = 0.3, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 1.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v10.scd b/sound_algo/synth/bass/hooverbass_v10.scd new file mode 100644 index 0000000..9c543a7 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v10.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v10.scd -- SynthDef \hooverbass_v10 // variation hoover bass +( +SynthDef(\hooverbass_v10, { + arg freq = 90, gate = 1, detune = 0.015, + cutoff = 1200, rq = 0.6, + attack = 0.005, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v11.scd b/sound_algo/synth/bass/hooverbass_v11.scd new file mode 100644 index 0000000..a04ef23 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v11.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v11.scd -- SynthDef \hooverbass_v11 // variation hoover bass +( +SynthDef(\hooverbass_v11, { + arg freq = 100, gate = 1, detune = 0.02, + cutoff = 1600, rq = 0.7, + attack = 0.005, decay = 0.3, sustain = 0.8, release = 0.3, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v12.scd b/sound_algo/synth/bass/hooverbass_v12.scd new file mode 100644 index 0000000..f751f0c --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v12.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v12.scd -- SynthDef \hooverbass_v12 // variation hoover bass +( +SynthDef(\hooverbass_v12, { + arg freq = 110, gate = 1, detune = 0.025, + cutoff = 2000, rq = 0.8, + attack = 0.005, decay = 0.4, sustain = 0.9, release = 0.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 3.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v13.scd b/sound_algo/synth/bass/hooverbass_v13.scd new file mode 100644 index 0000000..7e0aaae --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v13.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v13.scd -- SynthDef \hooverbass_v13 // variation hoover bass +( +SynthDef(\hooverbass_v13, { + arg freq = 80, gate = 1, detune = 0.015, + cutoff = 800, rq = 0.5, + attack = 0.005, decay = 0.2, sustain = 0.7, release = 0.3, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 1.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v14.scd b/sound_algo/synth/bass/hooverbass_v14.scd new file mode 100644 index 0000000..f2e2f98 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v14.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v14.scd -- SynthDef \hooverbass_v14 // variation hoover bass +( +SynthDef(\hooverbass_v14, { + arg freq = 90, gate = 1, detune = 0.02, + cutoff = 1200, rq = 0.6, + attack = 0.005, decay = 0.3, sustain = 0.8, release = 0.5, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v15.scd b/sound_algo/synth/bass/hooverbass_v15.scd new file mode 100644 index 0000000..e704e20 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v15.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v15.scd -- SynthDef \hooverbass_v15 // variation hoover bass +( +SynthDef(\hooverbass_v15, { + arg freq = 100, gate = 1, detune = 0.025, + cutoff = 1600, rq = 0.7, + attack = 0.005, decay = 0.4, sustain = 0.9, release = 0.3, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v16.scd b/sound_algo/synth/bass/hooverbass_v16.scd new file mode 100644 index 0000000..ada129f --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v16.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v16.scd -- SynthDef \hooverbass_v16 // variation hoover bass +( +SynthDef(\hooverbass_v16, { + arg freq = 110, gate = 1, detune = 0.015, + cutoff = 2000, rq = 0.8, + attack = 0.005, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 3.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v17.scd b/sound_algo/synth/bass/hooverbass_v17.scd new file mode 100644 index 0000000..d74cd34 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v17.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v17.scd -- SynthDef \hooverbass_v17 // variation hoover bass +( +SynthDef(\hooverbass_v17, { + arg freq = 80, gate = 1, detune = 0.02, + cutoff = 800, rq = 0.5, + attack = 0.005, decay = 0.3, sustain = 0.8, release = 0.3, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 1.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v18.scd b/sound_algo/synth/bass/hooverbass_v18.scd new file mode 100644 index 0000000..19664f2 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v18.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v18.scd -- SynthDef \hooverbass_v18 // variation hoover bass +( +SynthDef(\hooverbass_v18, { + arg freq = 90, gate = 1, detune = 0.025, + cutoff = 1200, rq = 0.6, + attack = 0.005, decay = 0.4, sustain = 0.9, release = 0.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v19.scd b/sound_algo/synth/bass/hooverbass_v19.scd new file mode 100644 index 0000000..6adbe82 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v19.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v19.scd -- SynthDef \hooverbass_v19 // variation hoover bass +( +SynthDef(\hooverbass_v19, { + arg freq = 100, gate = 1, detune = 0.015, + cutoff = 1600, rq = 0.7, + attack = 0.005, decay = 0.2, sustain = 0.7, release = 0.3, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v2.scd b/sound_algo/synth/bass/hooverbass_v2.scd new file mode 100644 index 0000000..c1831ad --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v2.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v2.scd -- SynthDef \hooverbass_v2 // variation hoover bass +( +SynthDef(\hooverbass_v2, { + arg freq = 90, gate = 1, detune = 0.02, + cutoff = 1200, rq = 0.6, + attack = 0.005, decay = 0.3, sustain = 0.8, release = 0.5, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v3.scd b/sound_algo/synth/bass/hooverbass_v3.scd new file mode 100644 index 0000000..fb3d964 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v3.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v3.scd -- SynthDef \hooverbass_v3 // variation hoover bass +( +SynthDef(\hooverbass_v3, { + arg freq = 100, gate = 1, detune = 0.025, + cutoff = 1600, rq = 0.7, + attack = 0.005, decay = 0.4, sustain = 0.9, release = 0.3, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v4.scd b/sound_algo/synth/bass/hooverbass_v4.scd new file mode 100644 index 0000000..b29ef31 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v4.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v4.scd -- SynthDef \hooverbass_v4 // variation hoover bass +( +SynthDef(\hooverbass_v4, { + arg freq = 110, gate = 1, detune = 0.015, + cutoff = 2000, rq = 0.8, + attack = 0.005, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 3.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v5.scd b/sound_algo/synth/bass/hooverbass_v5.scd new file mode 100644 index 0000000..010c616 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v5.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v5.scd -- SynthDef \hooverbass_v5 // variation hoover bass +( +SynthDef(\hooverbass_v5, { + arg freq = 80, gate = 1, detune = 0.02, + cutoff = 800, rq = 0.5, + attack = 0.005, decay = 0.3, sustain = 0.8, release = 0.3, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 1.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v6.scd b/sound_algo/synth/bass/hooverbass_v6.scd new file mode 100644 index 0000000..97c04a4 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v6.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v6.scd -- SynthDef \hooverbass_v6 // variation hoover bass +( +SynthDef(\hooverbass_v6, { + arg freq = 90, gate = 1, detune = 0.025, + cutoff = 1200, rq = 0.6, + attack = 0.005, decay = 0.4, sustain = 0.9, release = 0.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v7.scd b/sound_algo/synth/bass/hooverbass_v7.scd new file mode 100644 index 0000000..973f474 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v7.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v7.scd -- SynthDef \hooverbass_v7 // variation hoover bass +( +SynthDef(\hooverbass_v7, { + arg freq = 100, gate = 1, detune = 0.015, + cutoff = 1600, rq = 0.7, + attack = 0.005, decay = 0.2, sustain = 0.7, release = 0.3, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v8.scd b/sound_algo/synth/bass/hooverbass_v8.scd new file mode 100644 index 0000000..7dd4faa --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v8.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v8.scd -- SynthDef \hooverbass_v8 // variation hoover bass +( +SynthDef(\hooverbass_v8, { + arg freq = 110, gate = 1, detune = 0.02, + cutoff = 2000, rq = 0.8, + attack = 0.005, decay = 0.3, sustain = 0.8, release = 0.5, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 3.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/hooverbass_v9.scd b/sound_algo/synth/bass/hooverbass_v9.scd new file mode 100644 index 0000000..08ecb73 --- /dev/null +++ b/sound_algo/synth/bass/hooverbass_v9.scd @@ -0,0 +1,23 @@ +// synth/bass/hooverbass_v9.scd -- SynthDef \hooverbass_v9 // variation hoover bass +( +SynthDef(\hooverbass_v9, { + arg freq = 80, gate = 1, detune = 0.025, + cutoff = 800, rq = 0.5, + attack = 0.005, decay = 0.4, sustain = 0.9, release = 0.3, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 1.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese.scd b/sound_algo/synth/bass/reese.scd new file mode 100644 index 0000000..c452a5b --- /dev/null +++ b/sound_algo/synth/bass/reese.scd @@ -0,0 +1,22 @@ +// ===================================================================== +// synth/bass/reese.scd -- SynthDef \reese +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\reese, { + arg freq = 55, gate = 1, detune = 0.012, cutoff = 800, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.7, release = 0.2, + drive = 2.5, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = (Saw.ar(freq * (1 - detune)) * 0.5) + + (Saw.ar(freq * (1 + detune)) * 0.5) + + (Saw.ar(freq * 0.5) * 0.3); // sub + sig = RLPF.ar(sig, cutoff, rq); + sig = (sig * drive).tanh / drive.sqrt; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = LeakDC.ar(sig) * env * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); + }).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b.scd b/sound_algo/synth/bass/reese_dn_b.scd new file mode 100644 index 0000000..53c5d57 --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b.scd @@ -0,0 +1,29 @@ +// ===================================================================== +// synth/bass/reese_dn_b.scd -- SynthDef \reeseDnB +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\reeseDnB, { + arg freq = 55, gate = 1, detune = 0.018, + cutoff = 800, rq = 0.2, + modRate1 = 0.25, modDepth1 = 600, + modRate2 = 0.7, modDepth2 = 250, + attack = 0.005, decay = 0.1, sustain = 0.7, release = 0.2, + drive = 4.0, amp = 0.30, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, fc, sub; + fc = (cutoff + (SinOsc.kr(modRate1) * modDepth1) + + (SinOsc.kr(modRate2) * modDepth2)).clip(80, 8000); + sig = (Saw.ar(freq * (1 - detune)) * 0.4) + + (Saw.ar(freq * (1 + detune)) * 0.4) + + (Saw.ar(freq * (1 + (detune * 2.7))) * 0.3); + sub = SinOsc.ar(freq * 0.5) * 0.5; + sig = BPF.ar(sig, fc, rq) * 4 + sub; + sig = LPF.ar(sig, 4500); + sig = (sig * drive).tanh / drive.sqrt; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = LeakDC.ar(sig) * env * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v1.scd b/sound_algo/synth/bass/reese_dn_b_v1.scd new file mode 100644 index 0000000..93ceae2 --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v1.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v1.scd -- SynthDef \reese_dn_b_v1 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v1, { + arg freq = 55, gate = 1, detune = 0.015, + cutoff = 400, rq = 0.4, + attack = 0.005, decay = 0.15, sustain = 0.7, release = 0.2, + drive = 2.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v10.scd b/sound_algo/synth/bass/reese_dn_b_v10.scd new file mode 100644 index 0000000..09fddec --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v10.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v10.scd -- SynthDef \reese_dn_b_v10 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v10, { + arg freq = 75, gate = 1, detune = 0.02, + cutoff = 1000, rq = 0.4, + attack = 0.005, decay = 0.15, sustain = 0.7, release = 0.3, + drive = 2.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v11.scd b/sound_algo/synth/bass/reese_dn_b_v11.scd new file mode 100644 index 0000000..894d39c --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v11.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v11.scd -- SynthDef \reese_dn_b_v11 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v11, { + arg freq = 55, gate = 1, detune = 0.025, + cutoff = 400, rq = 0.5, + attack = 0.005, decay = 0.2, sustain = 0.8, release = 0.2, + drive = 3.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v12.scd b/sound_algo/synth/bass/reese_dn_b_v12.scd new file mode 100644 index 0000000..31eebdb --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v12.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v12.scd -- SynthDef \reese_dn_b_v12 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v12, { + arg freq = 60, gate = 1, detune = 0.03, + cutoff = 500, rq = 0.6, + attack = 0.005, decay = 0.25, sustain = 0.9, release = 0.3, + drive = 3.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v13.scd b/sound_algo/synth/bass/reese_dn_b_v13.scd new file mode 100644 index 0000000..36b14a0 --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v13.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v13.scd -- SynthDef \reese_dn_b_v13 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v13, { + arg freq = 65, gate = 1, detune = 0.015, + cutoff = 600, rq = 0.4, + attack = 0.005, decay = 0.15, sustain = 0.7, release = 0.2, + drive = 2.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v14.scd b/sound_algo/synth/bass/reese_dn_b_v14.scd new file mode 100644 index 0000000..7726f48 --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v14.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v14.scd -- SynthDef \reese_dn_b_v14 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v14, { + arg freq = 70, gate = 1, detune = 0.02, + cutoff = 800, rq = 0.5, + attack = 0.005, decay = 0.2, sustain = 0.8, release = 0.3, + drive = 2.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v15.scd b/sound_algo/synth/bass/reese_dn_b_v15.scd new file mode 100644 index 0000000..5e36813 --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v15.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v15.scd -- SynthDef \reese_dn_b_v15 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v15, { + arg freq = 75, gate = 1, detune = 0.025, + cutoff = 1000, rq = 0.6, + attack = 0.005, decay = 0.25, sustain = 0.9, release = 0.2, + drive = 3.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v16.scd b/sound_algo/synth/bass/reese_dn_b_v16.scd new file mode 100644 index 0000000..103779c --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v16.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v16.scd -- SynthDef \reese_dn_b_v16 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v16, { + arg freq = 55, gate = 1, detune = 0.03, + cutoff = 400, rq = 0.4, + attack = 0.005, decay = 0.15, sustain = 0.7, release = 0.3, + drive = 3.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v17.scd b/sound_algo/synth/bass/reese_dn_b_v17.scd new file mode 100644 index 0000000..6b2def0 --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v17.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v17.scd -- SynthDef \reese_dn_b_v17 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v17, { + arg freq = 60, gate = 1, detune = 0.015, + cutoff = 500, rq = 0.5, + attack = 0.005, decay = 0.2, sustain = 0.8, release = 0.2, + drive = 2.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v18.scd b/sound_algo/synth/bass/reese_dn_b_v18.scd new file mode 100644 index 0000000..0b28ef9 --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v18.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v18.scd -- SynthDef \reese_dn_b_v18 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v18, { + arg freq = 65, gate = 1, detune = 0.02, + cutoff = 600, rq = 0.6, + attack = 0.005, decay = 0.25, sustain = 0.9, release = 0.3, + drive = 2.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v19.scd b/sound_algo/synth/bass/reese_dn_b_v19.scd new file mode 100644 index 0000000..f5e43a0 --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v19.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v19.scd -- SynthDef \reese_dn_b_v19 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v19, { + arg freq = 70, gate = 1, detune = 0.025, + cutoff = 800, rq = 0.4, + attack = 0.005, decay = 0.15, sustain = 0.7, release = 0.2, + drive = 3.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v2.scd b/sound_algo/synth/bass/reese_dn_b_v2.scd new file mode 100644 index 0000000..326221e --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v2.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v2.scd -- SynthDef \reese_dn_b_v2 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v2, { + arg freq = 60, gate = 1, detune = 0.02, + cutoff = 500, rq = 0.5, + attack = 0.005, decay = 0.2, sustain = 0.8, release = 0.3, + drive = 2.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v3.scd b/sound_algo/synth/bass/reese_dn_b_v3.scd new file mode 100644 index 0000000..e49467f --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v3.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v3.scd -- SynthDef \reese_dn_b_v3 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v3, { + arg freq = 65, gate = 1, detune = 0.025, + cutoff = 600, rq = 0.6, + attack = 0.005, decay = 0.25, sustain = 0.9, release = 0.2, + drive = 3.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v4.scd b/sound_algo/synth/bass/reese_dn_b_v4.scd new file mode 100644 index 0000000..d9ad41c --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v4.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v4.scd -- SynthDef \reese_dn_b_v4 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v4, { + arg freq = 70, gate = 1, detune = 0.03, + cutoff = 800, rq = 0.4, + attack = 0.005, decay = 0.15, sustain = 0.7, release = 0.3, + drive = 3.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v5.scd b/sound_algo/synth/bass/reese_dn_b_v5.scd new file mode 100644 index 0000000..f076484 --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v5.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v5.scd -- SynthDef \reese_dn_b_v5 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v5, { + arg freq = 75, gate = 1, detune = 0.015, + cutoff = 1000, rq = 0.5, + attack = 0.005, decay = 0.2, sustain = 0.8, release = 0.2, + drive = 2.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v6.scd b/sound_algo/synth/bass/reese_dn_b_v6.scd new file mode 100644 index 0000000..72ca231 --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v6.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v6.scd -- SynthDef \reese_dn_b_v6 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v6, { + arg freq = 55, gate = 1, detune = 0.02, + cutoff = 400, rq = 0.6, + attack = 0.005, decay = 0.25, sustain = 0.9, release = 0.3, + drive = 2.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v7.scd b/sound_algo/synth/bass/reese_dn_b_v7.scd new file mode 100644 index 0000000..4e809ea --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v7.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v7.scd -- SynthDef \reese_dn_b_v7 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v7, { + arg freq = 60, gate = 1, detune = 0.025, + cutoff = 500, rq = 0.4, + attack = 0.005, decay = 0.15, sustain = 0.7, release = 0.2, + drive = 3.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v8.scd b/sound_algo/synth/bass/reese_dn_b_v8.scd new file mode 100644 index 0000000..93ac05c --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v8.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v8.scd -- SynthDef \reese_dn_b_v8 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v8, { + arg freq = 65, gate = 1, detune = 0.03, + cutoff = 600, rq = 0.5, + attack = 0.005, decay = 0.2, sustain = 0.8, release = 0.3, + drive = 3.5, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_dn_b_v9.scd b/sound_algo/synth/bass/reese_dn_b_v9.scd new file mode 100644 index 0000000..9443a74 --- /dev/null +++ b/sound_algo/synth/bass/reese_dn_b_v9.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_dn_b_v9.scd -- SynthDef \reese_dn_b_v9 // variation reese DnB neuro +( +SynthDef(\reese_dn_b_v9, { + arg freq = 70, gate = 1, detune = 0.015, + cutoff = 800, rq = 0.6, + attack = 0.005, decay = 0.25, sustain = 0.9, release = 0.2, + drive = 2.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard.scd b/sound_algo/synth/bass/reese_hard.scd new file mode 100644 index 0000000..4235fab --- /dev/null +++ b/sound_algo/synth/bass/reese_hard.scd @@ -0,0 +1,28 @@ +// ===================================================================== +// synth/bass/reese_hard.scd -- SynthDef \reeseHard +// Extracted from asia.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\reeseHard, { + arg freq = 55, gate = 1, detune = 0.018, + cutoff = 600, rq = 0.15, + modRate = 0.3, modDepth = 400, // LFO sur cutoff (slow sweep) + attack = 0.005, decay = 0.1, sustain = 0.7, release = 0.2, + drive = 4.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, fc; + fc = (cutoff + (SinOsc.kr(modRate) * modDepth)).clip(80, 6000); + sig = (Saw.ar(freq * (1 - detune)) * 0.4) + + (Saw.ar(freq * (1 + detune)) * 0.4) + + (Saw.ar(freq * 0.5) * 0.3) + + (Pulse.ar(freq * 1.501, 0.5) * 0.2); + sig = BPF.ar(sig, fc, rq) * 4; + sig = LPF.ar(sig, 4000); + sig = (sig * drive).tanh / drive.sqrt; + sig = (sig * 1.3).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = LeakDC.ar(sig) * env * amp * duck; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v1.scd b/sound_algo/synth/bass/reese_hard_v1.scd new file mode 100644 index 0000000..7be9151 --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v1.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v1.scd -- SynthDef \reese_hard_v1 // variation reese hard distordu +( +SynthDef(\reese_hard_v1, { + arg freq = 50, gate = 1, detune = 0.02, + cutoff = 350, rq = 0.3, + attack = 0.003, decay = 0.1, sustain = 0.8, release = 0.15, + drive = 3.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v10.scd b/sound_algo/synth/bass/reese_hard_v10.scd new file mode 100644 index 0000000..265c2a6 --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v10.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v10.scd -- SynthDef \reese_hard_v10 // variation reese hard distordu +( +SynthDef(\reese_hard_v10, { + arg freq = 55, gate = 1, detune = 0.025, + cutoff = 450, rq = 0.3, + attack = 0.003, decay = 0.1, sustain = 0.9, release = 0.15, + drive = 4.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v11.scd b/sound_algo/synth/bass/reese_hard_v11.scd new file mode 100644 index 0000000..721902e --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v11.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v11.scd -- SynthDef \reese_hard_v11 // variation reese hard distordu +( +SynthDef(\reese_hard_v11, { + arg freq = 60, gate = 1, detune = 0.03, + cutoff = 600, rq = 0.4, + attack = 0.003, decay = 0.15, sustain = 0.8, release = 0.15, + drive = 5.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v12.scd b/sound_algo/synth/bass/reese_hard_v12.scd new file mode 100644 index 0000000..d6527d1 --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v12.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v12.scd -- SynthDef \reese_hard_v12 // variation reese hard distordu +( +SynthDef(\reese_hard_v12, { + arg freq = 65, gate = 1, detune = 0.035, + cutoff = 800, rq = 0.5, + attack = 0.003, decay = 0.2, sustain = 0.9, release = 0.15, + drive = 6.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v13.scd b/sound_algo/synth/bass/reese_hard_v13.scd new file mode 100644 index 0000000..2cccb1d --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v13.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v13.scd -- SynthDef \reese_hard_v13 // variation reese hard distordu +( +SynthDef(\reese_hard_v13, { + arg freq = 50, gate = 1, detune = 0.02, + cutoff = 350, rq = 0.3, + attack = 0.003, decay = 0.1, sustain = 0.8, release = 0.15, + drive = 3.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v14.scd b/sound_algo/synth/bass/reese_hard_v14.scd new file mode 100644 index 0000000..17a0efb --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v14.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v14.scd -- SynthDef \reese_hard_v14 // variation reese hard distordu +( +SynthDef(\reese_hard_v14, { + arg freq = 55, gate = 1, detune = 0.025, + cutoff = 450, rq = 0.4, + attack = 0.003, decay = 0.15, sustain = 0.9, release = 0.15, + drive = 4.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v15.scd b/sound_algo/synth/bass/reese_hard_v15.scd new file mode 100644 index 0000000..2ec7ada --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v15.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v15.scd -- SynthDef \reese_hard_v15 // variation reese hard distordu +( +SynthDef(\reese_hard_v15, { + arg freq = 60, gate = 1, detune = 0.03, + cutoff = 600, rq = 0.5, + attack = 0.003, decay = 0.2, sustain = 0.8, release = 0.15, + drive = 5.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v16.scd b/sound_algo/synth/bass/reese_hard_v16.scd new file mode 100644 index 0000000..ae01876 --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v16.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v16.scd -- SynthDef \reese_hard_v16 // variation reese hard distordu +( +SynthDef(\reese_hard_v16, { + arg freq = 65, gate = 1, detune = 0.035, + cutoff = 800, rq = 0.3, + attack = 0.003, decay = 0.1, sustain = 0.9, release = 0.15, + drive = 6.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v17.scd b/sound_algo/synth/bass/reese_hard_v17.scd new file mode 100644 index 0000000..a525867 --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v17.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v17.scd -- SynthDef \reese_hard_v17 // variation reese hard distordu +( +SynthDef(\reese_hard_v17, { + arg freq = 50, gate = 1, detune = 0.02, + cutoff = 350, rq = 0.4, + attack = 0.003, decay = 0.15, sustain = 0.8, release = 0.15, + drive = 3.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v18.scd b/sound_algo/synth/bass/reese_hard_v18.scd new file mode 100644 index 0000000..38c35cc --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v18.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v18.scd -- SynthDef \reese_hard_v18 // variation reese hard distordu +( +SynthDef(\reese_hard_v18, { + arg freq = 55, gate = 1, detune = 0.025, + cutoff = 450, rq = 0.5, + attack = 0.003, decay = 0.2, sustain = 0.9, release = 0.15, + drive = 4.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v19.scd b/sound_algo/synth/bass/reese_hard_v19.scd new file mode 100644 index 0000000..cd5c4c6 --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v19.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v19.scd -- SynthDef \reese_hard_v19 // variation reese hard distordu +( +SynthDef(\reese_hard_v19, { + arg freq = 60, gate = 1, detune = 0.03, + cutoff = 600, rq = 0.3, + attack = 0.003, decay = 0.1, sustain = 0.8, release = 0.15, + drive = 5.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v2.scd b/sound_algo/synth/bass/reese_hard_v2.scd new file mode 100644 index 0000000..de3c6ca --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v2.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v2.scd -- SynthDef \reese_hard_v2 // variation reese hard distordu +( +SynthDef(\reese_hard_v2, { + arg freq = 55, gate = 1, detune = 0.025, + cutoff = 450, rq = 0.4, + attack = 0.003, decay = 0.15, sustain = 0.9, release = 0.15, + drive = 4.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v3.scd b/sound_algo/synth/bass/reese_hard_v3.scd new file mode 100644 index 0000000..4741a6c --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v3.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v3.scd -- SynthDef \reese_hard_v3 // variation reese hard distordu +( +SynthDef(\reese_hard_v3, { + arg freq = 60, gate = 1, detune = 0.03, + cutoff = 600, rq = 0.5, + attack = 0.003, decay = 0.2, sustain = 0.8, release = 0.15, + drive = 5.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v4.scd b/sound_algo/synth/bass/reese_hard_v4.scd new file mode 100644 index 0000000..d3ae29a --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v4.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v4.scd -- SynthDef \reese_hard_v4 // variation reese hard distordu +( +SynthDef(\reese_hard_v4, { + arg freq = 65, gate = 1, detune = 0.035, + cutoff = 800, rq = 0.3, + attack = 0.003, decay = 0.1, sustain = 0.9, release = 0.15, + drive = 6.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v5.scd b/sound_algo/synth/bass/reese_hard_v5.scd new file mode 100644 index 0000000..3cfbfc7 --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v5.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v5.scd -- SynthDef \reese_hard_v5 // variation reese hard distordu +( +SynthDef(\reese_hard_v5, { + arg freq = 50, gate = 1, detune = 0.02, + cutoff = 350, rq = 0.4, + attack = 0.003, decay = 0.15, sustain = 0.8, release = 0.15, + drive = 3.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v6.scd b/sound_algo/synth/bass/reese_hard_v6.scd new file mode 100644 index 0000000..f727a91 --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v6.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v6.scd -- SynthDef \reese_hard_v6 // variation reese hard distordu +( +SynthDef(\reese_hard_v6, { + arg freq = 55, gate = 1, detune = 0.025, + cutoff = 450, rq = 0.5, + attack = 0.003, decay = 0.2, sustain = 0.9, release = 0.15, + drive = 4.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v7.scd b/sound_algo/synth/bass/reese_hard_v7.scd new file mode 100644 index 0000000..7fa0946 --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v7.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v7.scd -- SynthDef \reese_hard_v7 // variation reese hard distordu +( +SynthDef(\reese_hard_v7, { + arg freq = 60, gate = 1, detune = 0.03, + cutoff = 600, rq = 0.3, + attack = 0.003, decay = 0.1, sustain = 0.8, release = 0.15, + drive = 5.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v8.scd b/sound_algo/synth/bass/reese_hard_v8.scd new file mode 100644 index 0000000..2744fe8 --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v8.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v8.scd -- SynthDef \reese_hard_v8 // variation reese hard distordu +( +SynthDef(\reese_hard_v8, { + arg freq = 65, gate = 1, detune = 0.035, + cutoff = 800, rq = 0.4, + attack = 0.003, decay = 0.15, sustain = 0.9, release = 0.15, + drive = 6.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_hard_v9.scd b/sound_algo/synth/bass/reese_hard_v9.scd new file mode 100644 index 0000000..643f4d9 --- /dev/null +++ b/sound_algo/synth/bass/reese_hard_v9.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_hard_v9.scd -- SynthDef \reese_hard_v9 // variation reese hard distordu +( +SynthDef(\reese_hard_v9, { + arg freq = 50, gate = 1, detune = 0.02, + cutoff = 350, rq = 0.5, + attack = 0.003, decay = 0.2, sustain = 0.8, release = 0.15, + drive = 3.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v1.scd b/sound_algo/synth/bass/reese_v1.scd new file mode 100644 index 0000000..3ee5fd5 --- /dev/null +++ b/sound_algo/synth/bass/reese_v1.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v1.scd -- SynthDef \reese_v1 // variation reese 3 saws detunees +( +SynthDef(\reese_v1, { + arg freq = 80, gate = 1, detune = 0.005, + cutoff = 600, rq = 0.5, + attack = 0.01, decay = 0.2, sustain = 0.6, release = 0.3, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v10.scd b/sound_algo/synth/bass/reese_v10.scd new file mode 100644 index 0000000..f90639e --- /dev/null +++ b/sound_algo/synth/bass/reese_v10.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v10.scd -- SynthDef \reese_v10 // variation reese 3 saws detunees +( +SynthDef(\reese_v10, { + arg freq = 80, gate = 1, detune = 0.02, + cutoff = 1200, rq = 0.6, + attack = 0.01, decay = 0.2, sustain = 0.6, release = 0.3, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 1.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v11.scd b/sound_algo/synth/bass/reese_v11.scd new file mode 100644 index 0000000..fe96b5d --- /dev/null +++ b/sound_algo/synth/bass/reese_v11.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v11.scd -- SynthDef \reese_v11 // variation reese 3 saws detunees +( +SynthDef(\reese_v11, { + arg freq = 80, gate = 1, detune = 0.025, + cutoff = 1500, rq = 0.7, + attack = 0.01, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v12.scd b/sound_algo/synth/bass/reese_v12.scd new file mode 100644 index 0000000..41f4272 --- /dev/null +++ b/sound_algo/synth/bass/reese_v12.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v12.scd -- SynthDef \reese_v12 // variation reese 3 saws detunees +( +SynthDef(\reese_v12, { + arg freq = 80, gate = 1, detune = 0.03, + cutoff = 2000, rq = 0.8, + attack = 0.01, decay = 0.4, sustain = 0.8, release = 0.8, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 3.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v13.scd b/sound_algo/synth/bass/reese_v13.scd new file mode 100644 index 0000000..1182c82 --- /dev/null +++ b/sound_algo/synth/bass/reese_v13.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v13.scd -- SynthDef \reese_v13 // variation reese 3 saws detunees +( +SynthDef(\reese_v13, { + arg freq = 80, gate = 1, detune = 0.005, + cutoff = 600, rq = 0.5, + attack = 0.01, decay = 0.2, sustain = 0.6, release = 0.3, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v14.scd b/sound_algo/synth/bass/reese_v14.scd new file mode 100644 index 0000000..0a445bd --- /dev/null +++ b/sound_algo/synth/bass/reese_v14.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v14.scd -- SynthDef \reese_v14 // variation reese 3 saws detunees +( +SynthDef(\reese_v14, { + arg freq = 80, gate = 1, detune = 0.01, + cutoff = 800, rq = 0.6, + attack = 0.01, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 1.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v15.scd b/sound_algo/synth/bass/reese_v15.scd new file mode 100644 index 0000000..c15a1b4 --- /dev/null +++ b/sound_algo/synth/bass/reese_v15.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v15.scd -- SynthDef \reese_v15 // variation reese 3 saws detunees +( +SynthDef(\reese_v15, { + arg freq = 80, gate = 1, detune = 0.015, + cutoff = 1000, rq = 0.7, + attack = 0.01, decay = 0.4, sustain = 0.8, release = 0.8, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v16.scd b/sound_algo/synth/bass/reese_v16.scd new file mode 100644 index 0000000..c2ceb74 --- /dev/null +++ b/sound_algo/synth/bass/reese_v16.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v16.scd -- SynthDef \reese_v16 // variation reese 3 saws detunees +( +SynthDef(\reese_v16, { + arg freq = 80, gate = 1, detune = 0.02, + cutoff = 1200, rq = 0.8, + attack = 0.01, decay = 0.2, sustain = 0.6, release = 0.3, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 3.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v17.scd b/sound_algo/synth/bass/reese_v17.scd new file mode 100644 index 0000000..f138a48 --- /dev/null +++ b/sound_algo/synth/bass/reese_v17.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v17.scd -- SynthDef \reese_v17 // variation reese 3 saws detunees +( +SynthDef(\reese_v17, { + arg freq = 80, gate = 1, detune = 0.025, + cutoff = 1500, rq = 0.5, + attack = 0.01, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v18.scd b/sound_algo/synth/bass/reese_v18.scd new file mode 100644 index 0000000..d7ed33d --- /dev/null +++ b/sound_algo/synth/bass/reese_v18.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v18.scd -- SynthDef \reese_v18 // variation reese 3 saws detunees +( +SynthDef(\reese_v18, { + arg freq = 80, gate = 1, detune = 0.03, + cutoff = 2000, rq = 0.6, + attack = 0.01, decay = 0.4, sustain = 0.8, release = 0.8, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 1.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v19.scd b/sound_algo/synth/bass/reese_v19.scd new file mode 100644 index 0000000..b6eb3f8 --- /dev/null +++ b/sound_algo/synth/bass/reese_v19.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v19.scd -- SynthDef \reese_v19 // variation reese 3 saws detunees +( +SynthDef(\reese_v19, { + arg freq = 80, gate = 1, detune = 0.005, + cutoff = 600, rq = 0.7, + attack = 0.01, decay = 0.2, sustain = 0.6, release = 0.3, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v2.scd b/sound_algo/synth/bass/reese_v2.scd new file mode 100644 index 0000000..781680e --- /dev/null +++ b/sound_algo/synth/bass/reese_v2.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v2.scd -- SynthDef \reese_v2 // variation reese 3 saws detunees +( +SynthDef(\reese_v2, { + arg freq = 80, gate = 1, detune = 0.01, + cutoff = 800, rq = 0.6, + attack = 0.01, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 1.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v3.scd b/sound_algo/synth/bass/reese_v3.scd new file mode 100644 index 0000000..57284f6 --- /dev/null +++ b/sound_algo/synth/bass/reese_v3.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v3.scd -- SynthDef \reese_v3 // variation reese 3 saws detunees +( +SynthDef(\reese_v3, { + arg freq = 80, gate = 1, detune = 0.015, + cutoff = 1000, rq = 0.7, + attack = 0.01, decay = 0.4, sustain = 0.8, release = 0.8, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v4.scd b/sound_algo/synth/bass/reese_v4.scd new file mode 100644 index 0000000..1a0be95 --- /dev/null +++ b/sound_algo/synth/bass/reese_v4.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v4.scd -- SynthDef \reese_v4 // variation reese 3 saws detunees +( +SynthDef(\reese_v4, { + arg freq = 80, gate = 1, detune = 0.02, + cutoff = 1200, rq = 0.8, + attack = 0.01, decay = 0.2, sustain = 0.6, release = 0.3, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 3.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v5.scd b/sound_algo/synth/bass/reese_v5.scd new file mode 100644 index 0000000..01171fa --- /dev/null +++ b/sound_algo/synth/bass/reese_v5.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v5.scd -- SynthDef \reese_v5 // variation reese 3 saws detunees +( +SynthDef(\reese_v5, { + arg freq = 80, gate = 1, detune = 0.025, + cutoff = 1500, rq = 0.5, + attack = 0.01, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v6.scd b/sound_algo/synth/bass/reese_v6.scd new file mode 100644 index 0000000..d79ca60 --- /dev/null +++ b/sound_algo/synth/bass/reese_v6.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v6.scd -- SynthDef \reese_v6 // variation reese 3 saws detunees +( +SynthDef(\reese_v6, { + arg freq = 80, gate = 1, detune = 0.03, + cutoff = 2000, rq = 0.6, + attack = 0.01, decay = 0.4, sustain = 0.8, release = 0.8, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 1.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v7.scd b/sound_algo/synth/bass/reese_v7.scd new file mode 100644 index 0000000..9699dc0 --- /dev/null +++ b/sound_algo/synth/bass/reese_v7.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v7.scd -- SynthDef \reese_v7 // variation reese 3 saws detunees +( +SynthDef(\reese_v7, { + arg freq = 80, gate = 1, detune = 0.005, + cutoff = 600, rq = 0.7, + attack = 0.01, decay = 0.2, sustain = 0.6, release = 0.3, + drive = 1.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.5))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v8.scd b/sound_algo/synth/bass/reese_v8.scd new file mode 100644 index 0000000..5ff5709 --- /dev/null +++ b/sound_algo/synth/bass/reese_v8.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v8.scd -- SynthDef \reese_v8 // variation reese 3 saws detunees +( +SynthDef(\reese_v8, { + arg freq = 80, gate = 1, detune = 0.01, + cutoff = 800, rq = 0.8, + attack = 0.01, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 2.0, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 3.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/reese_v9.scd b/sound_algo/synth/bass/reese_v9.scd new file mode 100644 index 0000000..40d52ae --- /dev/null +++ b/sound_algo/synth/bass/reese_v9.scd @@ -0,0 +1,23 @@ +// synth/bass/reese_v9.scd -- SynthDef \reese_v9 // variation reese 3 saws detunees +( +SynthDef(\reese_v9, { + arg freq = 80, gate = 1, detune = 0.015, + cutoff = 1000, rq = 0.5, + attack = 0.01, decay = 0.4, sustain = 0.8, release = 0.8, + drive = 2.5, amp = 0.3, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, voices, duck; + voices = [ + Saw.ar(freq * (1 - detune)), + Saw.ar(freq * (1 + detune)), + Saw.ar(freq * (1 + (detune * 2.0))) + ]; + sig = Mix(voices) * 0.33; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom.scd b/sound_algo/synth/bass/sub_boom.scd new file mode 100644 index 0000000..6386a91 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// synth/bass/sub_boom.scd -- SynthDef \subBoom +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\subBoom, { + arg freq = 50, gate = 1, glide = 0.04, + attack = 0.005, decay = 0.4, sustain = 0.85, release = 0.6, + drive = 1.4, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, duck, f; + f = Lag.kr(freq, glide); + // Sub fondamental + octave -1 + harmonique 2 leger + sig = (SinOsc.ar(f) * 0.8) + + (SinOsc.ar(f * 0.5) * 0.5) + + (SinOsc.ar(f * 2) * 0.15); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = LeakDC.ar(sig); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v1.scd b/sound_algo/synth/bass/sub_boom_v1.scd new file mode 100644 index 0000000..e9057f4 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v1.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v1.scd -- SynthDef \sub_boom_v1 // variation sub boom long +( +SynthDef(\sub_boom_v1, { + arg freq = 30, gate = 1, + attack = 0.005, decay = 1.0, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v10.scd b/sound_algo/synth/bass/sub_boom_v10.scd new file mode 100644 index 0000000..01f01a3 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v10.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v10.scd -- SynthDef \sub_boom_v10 // variation sub boom long +( +SynthDef(\sub_boom_v10, { + arg freq = 50, gate = 1, + attack = 0.005, decay = 1.5, sustain = 0.1, release = 0.5, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v11.scd b/sound_algo/synth/bass/sub_boom_v11.scd new file mode 100644 index 0000000..162ea9b --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v11.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v11.scd -- SynthDef \sub_boom_v11 // variation sub boom long +( +SynthDef(\sub_boom_v11, { + arg freq = 30, gate = 1, + attack = 0.01, decay = 2.0, sustain = 0.0, release = 1.0, + drive = 1.2, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v12.scd b/sound_algo/synth/bass/sub_boom_v12.scd new file mode 100644 index 0000000..081087d --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v12.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v12.scd -- SynthDef \sub_boom_v12 // variation sub boom long +( +SynthDef(\sub_boom_v12, { + arg freq = 35, gate = 1, + attack = 0.02, decay = 3.0, sustain = 0.1, release = 2.0, + drive = 1.5, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v13.scd b/sound_algo/synth/bass/sub_boom_v13.scd new file mode 100644 index 0000000..1ceb7ee --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v13.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v13.scd -- SynthDef \sub_boom_v13 // variation sub boom long +( +SynthDef(\sub_boom_v13, { + arg freq = 40, gate = 1, + attack = 0.005, decay = 1.0, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v14.scd b/sound_algo/synth/bass/sub_boom_v14.scd new file mode 100644 index 0000000..3536264 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v14.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v14.scd -- SynthDef \sub_boom_v14 // variation sub boom long +( +SynthDef(\sub_boom_v14, { + arg freq = 45, gate = 1, + attack = 0.01, decay = 1.5, sustain = 0.1, release = 1.0, + drive = 1.2, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v15.scd b/sound_algo/synth/bass/sub_boom_v15.scd new file mode 100644 index 0000000..638a26f --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v15.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v15.scd -- SynthDef \sub_boom_v15 // variation sub boom long +( +SynthDef(\sub_boom_v15, { + arg freq = 50, gate = 1, + attack = 0.02, decay = 2.0, sustain = 0.0, release = 2.0, + drive = 1.5, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v16.scd b/sound_algo/synth/bass/sub_boom_v16.scd new file mode 100644 index 0000000..6d9c8d7 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v16.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v16.scd -- SynthDef \sub_boom_v16 // variation sub boom long +( +SynthDef(\sub_boom_v16, { + arg freq = 30, gate = 1, + attack = 0.005, decay = 3.0, sustain = 0.1, release = 0.5, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v17.scd b/sound_algo/synth/bass/sub_boom_v17.scd new file mode 100644 index 0000000..981d584 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v17.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v17.scd -- SynthDef \sub_boom_v17 // variation sub boom long +( +SynthDef(\sub_boom_v17, { + arg freq = 35, gate = 1, + attack = 0.01, decay = 1.0, sustain = 0.0, release = 1.0, + drive = 1.2, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v18.scd b/sound_algo/synth/bass/sub_boom_v18.scd new file mode 100644 index 0000000..343abd7 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v18.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v18.scd -- SynthDef \sub_boom_v18 // variation sub boom long +( +SynthDef(\sub_boom_v18, { + arg freq = 40, gate = 1, + attack = 0.02, decay = 1.5, sustain = 0.1, release = 2.0, + drive = 1.5, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v19.scd b/sound_algo/synth/bass/sub_boom_v19.scd new file mode 100644 index 0000000..b5108b7 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v19.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v19.scd -- SynthDef \sub_boom_v19 // variation sub boom long +( +SynthDef(\sub_boom_v19, { + arg freq = 45, gate = 1, + attack = 0.005, decay = 2.0, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v2.scd b/sound_algo/synth/bass/sub_boom_v2.scd new file mode 100644 index 0000000..54d26f3 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v2.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v2.scd -- SynthDef \sub_boom_v2 // variation sub boom long +( +SynthDef(\sub_boom_v2, { + arg freq = 35, gate = 1, + attack = 0.01, decay = 1.5, sustain = 0.1, release = 1.0, + drive = 1.2, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v3.scd b/sound_algo/synth/bass/sub_boom_v3.scd new file mode 100644 index 0000000..9220f66 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v3.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v3.scd -- SynthDef \sub_boom_v3 // variation sub boom long +( +SynthDef(\sub_boom_v3, { + arg freq = 40, gate = 1, + attack = 0.02, decay = 2.0, sustain = 0.0, release = 2.0, + drive = 1.5, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v4.scd b/sound_algo/synth/bass/sub_boom_v4.scd new file mode 100644 index 0000000..051f7fd --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v4.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v4.scd -- SynthDef \sub_boom_v4 // variation sub boom long +( +SynthDef(\sub_boom_v4, { + arg freq = 45, gate = 1, + attack = 0.005, decay = 3.0, sustain = 0.1, release = 0.5, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v5.scd b/sound_algo/synth/bass/sub_boom_v5.scd new file mode 100644 index 0000000..6d02d69 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v5.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v5.scd -- SynthDef \sub_boom_v5 // variation sub boom long +( +SynthDef(\sub_boom_v5, { + arg freq = 50, gate = 1, + attack = 0.01, decay = 1.0, sustain = 0.0, release = 1.0, + drive = 1.2, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v6.scd b/sound_algo/synth/bass/sub_boom_v6.scd new file mode 100644 index 0000000..31f81cc --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v6.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v6.scd -- SynthDef \sub_boom_v6 // variation sub boom long +( +SynthDef(\sub_boom_v6, { + arg freq = 30, gate = 1, + attack = 0.02, decay = 1.5, sustain = 0.1, release = 2.0, + drive = 1.5, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v7.scd b/sound_algo/synth/bass/sub_boom_v7.scd new file mode 100644 index 0000000..0ddb707 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v7.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v7.scd -- SynthDef \sub_boom_v7 // variation sub boom long +( +SynthDef(\sub_boom_v7, { + arg freq = 35, gate = 1, + attack = 0.005, decay = 2.0, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v8.scd b/sound_algo/synth/bass/sub_boom_v8.scd new file mode 100644 index 0000000..3b1fcbe --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v8.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v8.scd -- SynthDef \sub_boom_v8 // variation sub boom long +( +SynthDef(\sub_boom_v8, { + arg freq = 40, gate = 1, + attack = 0.01, decay = 3.0, sustain = 0.1, release = 1.0, + drive = 1.2, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = LFTri.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/bass/sub_boom_v9.scd b/sound_algo/synth/bass/sub_boom_v9.scd new file mode 100644 index 0000000..61f89d4 --- /dev/null +++ b/sound_algo/synth/bass/sub_boom_v9.scd @@ -0,0 +1,16 @@ +// synth/bass/sub_boom_v9.scd -- SynthDef \sub_boom_v9 // variation sub boom long +( +SynthDef(\sub_boom_v9, { + arg freq = 45, gate = 1, + attack = 0.02, decay = 1.0, sustain = 0.0, release = 2.0, + drive = 1.5, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0.6; + var sig, env, duck; + sig = SinOsc.ar(freq.clip(20, 200)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap.scd b/sound_algo/synth/drums/clap.scd new file mode 100644 index 0000000..d6c771d --- /dev/null +++ b/sound_algo/synth/drums/clap.scd @@ -0,0 +1,22 @@ +// ===================================================================== +// synth/drums/clap.scd -- SynthDef \clap +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\clap, { + arg decay = 0.18, amp = 0.4, pan = 0; + var noise, env, sig; + noise = HPF.ar(WhiteNoise.ar, 800); + noise = BPF.ar(noise, 1500, 0.5); + env = EnvGen.kr( + Env.new( + [0, 1, 0.5, 1, 0.5, 1, 1, 0], + [0.001, 0.008, 0.008, 0.008, 0.008, 0.005, decay], + \exp + ), + doneAction: 2 + ); + sig = noise * env * amp; + Out.ar(0, Pan2.ar(sig, pan)); + }).add; +) diff --git a/sound_algo/synth/drums/clap_v1.scd b/sound_algo/synth/drums/clap_v1.scd new file mode 100644 index 0000000..22c275f --- /dev/null +++ b/sound_algo/synth/drums/clap_v1.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v1.scd -- SynthDef \clap_v1 // variation clap multi-transient +( +SynthDef(\clap_v1, { + arg decay = 0.1, hpf = 800, drive = 1.0, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -3]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v10.scd b/sound_algo/synth/drums/clap_v10.scd new file mode 100644 index 0000000..043061d --- /dev/null +++ b/sound_algo/synth/drums/clap_v10.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v10.scd -- SynthDef \clap_v10 // variation clap multi-transient +( +SynthDef(\clap_v10, { + arg decay = 0.3, hpf = 1200, drive = 1.3, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -4]), + doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v11.scd b/sound_algo/synth/drums/clap_v11.scd new file mode 100644 index 0000000..2045396 --- /dev/null +++ b/sound_algo/synth/drums/clap_v11.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v11.scd -- SynthDef \clap_v11 // variation clap multi-transient +( +SynthDef(\clap_v11, { + arg decay = 0.1, hpf = 800, drive = 1.6, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -5]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v12.scd b/sound_algo/synth/drums/clap_v12.scd new file mode 100644 index 0000000..f110fbf --- /dev/null +++ b/sound_algo/synth/drums/clap_v12.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v12.scd -- SynthDef \clap_v12 // variation clap multi-transient +( +SynthDef(\clap_v12, { + arg decay = 0.15, hpf = 1000, drive = 2.0, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -6]), + doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v13.scd b/sound_algo/synth/drums/clap_v13.scd new file mode 100644 index 0000000..2e83db6 --- /dev/null +++ b/sound_algo/synth/drums/clap_v13.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v13.scd -- SynthDef \clap_v13 // variation clap multi-transient +( +SynthDef(\clap_v13, { + arg decay = 0.2, hpf = 1500, drive = 1.0, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -3]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v14.scd b/sound_algo/synth/drums/clap_v14.scd new file mode 100644 index 0000000..bf91306 --- /dev/null +++ b/sound_algo/synth/drums/clap_v14.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v14.scd -- SynthDef \clap_v14 // variation clap multi-transient +( +SynthDef(\clap_v14, { + arg decay = 0.25, hpf = 2000, drive = 1.3, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -4]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v15.scd b/sound_algo/synth/drums/clap_v15.scd new file mode 100644 index 0000000..8880fd3 --- /dev/null +++ b/sound_algo/synth/drums/clap_v15.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v15.scd -- SynthDef \clap_v15 // variation clap multi-transient +( +SynthDef(\clap_v15, { + arg decay = 0.3, hpf = 1200, drive = 1.6, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -5]), + doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v16.scd b/sound_algo/synth/drums/clap_v16.scd new file mode 100644 index 0000000..26bed52 --- /dev/null +++ b/sound_algo/synth/drums/clap_v16.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v16.scd -- SynthDef \clap_v16 // variation clap multi-transient +( +SynthDef(\clap_v16, { + arg decay = 0.1, hpf = 800, drive = 2.0, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -6]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v17.scd b/sound_algo/synth/drums/clap_v17.scd new file mode 100644 index 0000000..6af3f5d --- /dev/null +++ b/sound_algo/synth/drums/clap_v17.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v17.scd -- SynthDef \clap_v17 // variation clap multi-transient +( +SynthDef(\clap_v17, { + arg decay = 0.15, hpf = 1000, drive = 1.0, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -3]), + doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v18.scd b/sound_algo/synth/drums/clap_v18.scd new file mode 100644 index 0000000..62ac021 --- /dev/null +++ b/sound_algo/synth/drums/clap_v18.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v18.scd -- SynthDef \clap_v18 // variation clap multi-transient +( +SynthDef(\clap_v18, { + arg decay = 0.2, hpf = 1500, drive = 1.3, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -4]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v19.scd b/sound_algo/synth/drums/clap_v19.scd new file mode 100644 index 0000000..006787a --- /dev/null +++ b/sound_algo/synth/drums/clap_v19.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v19.scd -- SynthDef \clap_v19 // variation clap multi-transient +( +SynthDef(\clap_v19, { + arg decay = 0.25, hpf = 2000, drive = 1.6, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -5]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v2.scd b/sound_algo/synth/drums/clap_v2.scd new file mode 100644 index 0000000..c0fd49a --- /dev/null +++ b/sound_algo/synth/drums/clap_v2.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v2.scd -- SynthDef \clap_v2 // variation clap multi-transient +( +SynthDef(\clap_v2, { + arg decay = 0.15, hpf = 1000, drive = 1.3, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -4]), + doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v3.scd b/sound_algo/synth/drums/clap_v3.scd new file mode 100644 index 0000000..c45943c --- /dev/null +++ b/sound_algo/synth/drums/clap_v3.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v3.scd -- SynthDef \clap_v3 // variation clap multi-transient +( +SynthDef(\clap_v3, { + arg decay = 0.2, hpf = 1500, drive = 1.6, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -5]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v4.scd b/sound_algo/synth/drums/clap_v4.scd new file mode 100644 index 0000000..4644f4f --- /dev/null +++ b/sound_algo/synth/drums/clap_v4.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v4.scd -- SynthDef \clap_v4 // variation clap multi-transient +( +SynthDef(\clap_v4, { + arg decay = 0.25, hpf = 2000, drive = 2.0, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -6]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v5.scd b/sound_algo/synth/drums/clap_v5.scd new file mode 100644 index 0000000..e94e02f --- /dev/null +++ b/sound_algo/synth/drums/clap_v5.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v5.scd -- SynthDef \clap_v5 // variation clap multi-transient +( +SynthDef(\clap_v5, { + arg decay = 0.3, hpf = 1200, drive = 1.0, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -3]), + doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v6.scd b/sound_algo/synth/drums/clap_v6.scd new file mode 100644 index 0000000..ead0393 --- /dev/null +++ b/sound_algo/synth/drums/clap_v6.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v6.scd -- SynthDef \clap_v6 // variation clap multi-transient +( +SynthDef(\clap_v6, { + arg decay = 0.1, hpf = 800, drive = 1.3, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -4]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v7.scd b/sound_algo/synth/drums/clap_v7.scd new file mode 100644 index 0000000..1e8dfb9 --- /dev/null +++ b/sound_algo/synth/drums/clap_v7.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v7.scd -- SynthDef \clap_v7 // variation clap multi-transient +( +SynthDef(\clap_v7, { + arg decay = 0.15, hpf = 1000, drive = 1.6, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -5]), + doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v8.scd b/sound_algo/synth/drums/clap_v8.scd new file mode 100644 index 0000000..a67ce54 --- /dev/null +++ b/sound_algo/synth/drums/clap_v8.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v8.scd -- SynthDef \clap_v8 // variation clap multi-transient +( +SynthDef(\clap_v8, { + arg decay = 0.2, hpf = 1500, drive = 2.0, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -6]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/clap_v9.scd b/sound_algo/synth/drums/clap_v9.scd new file mode 100644 index 0000000..5ff2f09 --- /dev/null +++ b/sound_algo/synth/drums/clap_v9.scd @@ -0,0 +1,18 @@ +// synth/drums/clap_v9.scd -- SynthDef \clap_v9 // variation clap multi-transient +( +SynthDef(\clap_v9, { + arg decay = 0.25, hpf = 2000, drive = 1.0, + amp = 0.3, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = HPF.ar(WhiteNoise.ar, hpf); + env = EnvGen.kr( + Env([0, 1, 0, 1, 0, 1, 0, 1, 0], + [0.001, 0.012, 0.001, 0.012, 0.001, 0.012, 0.002, decay], + [0, -2, 0, -2, 0, -2, 0, -3]), + doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell.scd b/sound_algo/synth/drums/cowbell.scd new file mode 100644 index 0000000..a99fdeb --- /dev/null +++ b/sound_algo/synth/drums/cowbell.scd @@ -0,0 +1,14 @@ +// ===================================================================== +// synth/drums/cowbell.scd -- SynthDef \cowbell +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\cowbell, { + arg freq = 800, decay = 0.2, amp = 0.3, pan = 0; + var sig, env; + sig = (Pulse.ar(freq, 0.5) * 0.5) + (Pulse.ar(freq * 1.501, 0.5) * 0.5); + sig = BPF.ar(sig, freq * 1.3, 0.3) * 2; + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + Out.ar(0, Pan2.ar(sig * env * amp, pan)); + }).add; +) diff --git a/sound_algo/synth/drums/cowbell_v1.scd b/sound_algo/synth/drums/cowbell_v1.scd new file mode 100644 index 0000000..5262ed4 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v1.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v1.scd -- SynthDef \cowbell_v1 // variation cowbell partials +( +SynthDef(\cowbell_v1, { + arg freq = 540, decay = 0.1, ratio = 0.485, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v10.scd b/sound_algo/synth/drums/cowbell_v10.scd new file mode 100644 index 0000000..e84f520 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v10.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v10.scd -- SynthDef \cowbell_v10 // variation cowbell partials +( +SynthDef(\cowbell_v10, { + arg freq = 540, decay = 0.3, ratio = 0.53, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v11.scd b/sound_algo/synth/drums/cowbell_v11.scd new file mode 100644 index 0000000..787f3d9 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v11.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v11.scd -- SynthDef \cowbell_v11 // variation cowbell partials +( +SynthDef(\cowbell_v11, { + arg freq = 560, decay = 0.1, ratio = 0.485, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v12.scd b/sound_algo/synth/drums/cowbell_v12.scd new file mode 100644 index 0000000..7568b40 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v12.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v12.scd -- SynthDef \cowbell_v12 // variation cowbell partials +( +SynthDef(\cowbell_v12, { + arg freq = 580, decay = 0.15, ratio = 0.5, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v13.scd b/sound_algo/synth/drums/cowbell_v13.scd new file mode 100644 index 0000000..60918d8 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v13.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v13.scd -- SynthDef \cowbell_v13 // variation cowbell partials +( +SynthDef(\cowbell_v13, { + arg freq = 600, decay = 0.2, ratio = 0.515, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v14.scd b/sound_algo/synth/drums/cowbell_v14.scd new file mode 100644 index 0000000..7687383 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v14.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v14.scd -- SynthDef \cowbell_v14 // variation cowbell partials +( +SynthDef(\cowbell_v14, { + arg freq = 620, decay = 0.25, ratio = 0.47, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v15.scd b/sound_algo/synth/drums/cowbell_v15.scd new file mode 100644 index 0000000..c5a5f39 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v15.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v15.scd -- SynthDef \cowbell_v15 // variation cowbell partials +( +SynthDef(\cowbell_v15, { + arg freq = 640, decay = 0.3, ratio = 0.53, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v16.scd b/sound_algo/synth/drums/cowbell_v16.scd new file mode 100644 index 0000000..657aa41 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v16.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v16.scd -- SynthDef \cowbell_v16 // variation cowbell partials +( +SynthDef(\cowbell_v16, { + arg freq = 660, decay = 0.1, ratio = 0.485, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v17.scd b/sound_algo/synth/drums/cowbell_v17.scd new file mode 100644 index 0000000..7dba76f --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v17.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v17.scd -- SynthDef \cowbell_v17 // variation cowbell partials +( +SynthDef(\cowbell_v17, { + arg freq = 500, decay = 0.15, ratio = 0.5, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v18.scd b/sound_algo/synth/drums/cowbell_v18.scd new file mode 100644 index 0000000..2885482 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v18.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v18.scd -- SynthDef \cowbell_v18 // variation cowbell partials +( +SynthDef(\cowbell_v18, { + arg freq = 700, decay = 0.2, ratio = 0.515, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v19.scd b/sound_algo/synth/drums/cowbell_v19.scd new file mode 100644 index 0000000..254a405 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v19.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v19.scd -- SynthDef \cowbell_v19 // variation cowbell partials +( +SynthDef(\cowbell_v19, { + arg freq = 540, decay = 0.25, ratio = 0.47, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v2.scd b/sound_algo/synth/drums/cowbell_v2.scd new file mode 100644 index 0000000..17101a1 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v2.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v2.scd -- SynthDef \cowbell_v2 // variation cowbell partials +( +SynthDef(\cowbell_v2, { + arg freq = 560, decay = 0.15, ratio = 0.5, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v3.scd b/sound_algo/synth/drums/cowbell_v3.scd new file mode 100644 index 0000000..96ff364 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v3.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v3.scd -- SynthDef \cowbell_v3 // variation cowbell partials +( +SynthDef(\cowbell_v3, { + arg freq = 580, decay = 0.2, ratio = 0.515, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v4.scd b/sound_algo/synth/drums/cowbell_v4.scd new file mode 100644 index 0000000..4b165b1 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v4.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v4.scd -- SynthDef \cowbell_v4 // variation cowbell partials +( +SynthDef(\cowbell_v4, { + arg freq = 600, decay = 0.25, ratio = 0.47, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v5.scd b/sound_algo/synth/drums/cowbell_v5.scd new file mode 100644 index 0000000..7b9fd60 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v5.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v5.scd -- SynthDef \cowbell_v5 // variation cowbell partials +( +SynthDef(\cowbell_v5, { + arg freq = 620, decay = 0.3, ratio = 0.53, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v6.scd b/sound_algo/synth/drums/cowbell_v6.scd new file mode 100644 index 0000000..5be7507 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v6.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v6.scd -- SynthDef \cowbell_v6 // variation cowbell partials +( +SynthDef(\cowbell_v6, { + arg freq = 640, decay = 0.1, ratio = 0.485, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v7.scd b/sound_algo/synth/drums/cowbell_v7.scd new file mode 100644 index 0000000..00a233a --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v7.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v7.scd -- SynthDef \cowbell_v7 // variation cowbell partials +( +SynthDef(\cowbell_v7, { + arg freq = 660, decay = 0.15, ratio = 0.5, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v8.scd b/sound_algo/synth/drums/cowbell_v8.scd new file mode 100644 index 0000000..3cf3096 --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v8.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v8.scd -- SynthDef \cowbell_v8 // variation cowbell partials +( +SynthDef(\cowbell_v8, { + arg freq = 500, decay = 0.2, ratio = 0.515, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/cowbell_v9.scd b/sound_algo/synth/drums/cowbell_v9.scd new file mode 100644 index 0000000..08f3e9f --- /dev/null +++ b/sound_algo/synth/drums/cowbell_v9.scd @@ -0,0 +1,15 @@ +// synth/drums/cowbell_v9.scd -- SynthDef \cowbell_v9 // variation cowbell partials +( +SynthDef(\cowbell_v9, { + arg freq = 700, decay = 0.25, ratio = 0.47, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat.scd b/sound_algo/synth/drums/hat.scd new file mode 100644 index 0000000..d9b6eb0 --- /dev/null +++ b/sound_algo/synth/drums/hat.scd @@ -0,0 +1,14 @@ +// ===================================================================== +// synth/drums/hat.scd -- SynthDef \hat +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\hat, { + arg hpf = 9000, decay = 0.04, amp = 0.18, pan = 0; + var sig, env; + sig = HPF.ar(WhiteNoise.ar, hpf); + sig = BPF.ar(sig, 10000, 0.4); + env = EnvGen.kr(Env.perc(0.001, decay), doneAction: 2); + Out.ar(0, Pan2.ar(sig * env * amp, pan)); + }).add; +) diff --git a/sound_algo/synth/drums/hat_v1.scd b/sound_algo/synth/drums/hat_v1.scd new file mode 100644 index 0000000..e51a44c --- /dev/null +++ b/sound_algo/synth/drums/hat_v1.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v1.scd -- SynthDef \hat_v1 // variation hat closed +( +SynthDef(\hat_v1, { + arg decay = 0.04, hpf = 6000, bpf = 10000, rq = 0.4, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v10.scd b/sound_algo/synth/drums/hat_v10.scd new file mode 100644 index 0000000..d58c2f2 --- /dev/null +++ b/sound_algo/synth/drums/hat_v10.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v10.scd -- SynthDef \hat_v10 // variation hat closed +( +SynthDef(\hat_v10, { + arg decay = 0.08, hpf = 9000, bpf = 9000, rq = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v11.scd b/sound_algo/synth/drums/hat_v11.scd new file mode 100644 index 0000000..1bc0d93 --- /dev/null +++ b/sound_algo/synth/drums/hat_v11.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v11.scd -- SynthDef \hat_v11 // variation hat closed +( +SynthDef(\hat_v11, { + arg decay = 0.1, hpf = 10000, bpf = 8000, rq = 0.6, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -5), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v12.scd b/sound_algo/synth/drums/hat_v12.scd new file mode 100644 index 0000000..8a5c44e --- /dev/null +++ b/sound_algo/synth/drums/hat_v12.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v12.scd -- SynthDef \hat_v12 // variation hat closed +( +SynthDef(\hat_v12, { + arg decay = 0.07, hpf = 5000, bpf = 13000, rq = 0.3, + drive = 1.4, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -6), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v13.scd b/sound_algo/synth/drums/hat_v13.scd new file mode 100644 index 0000000..e569b7b --- /dev/null +++ b/sound_algo/synth/drums/hat_v13.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v13.scd -- SynthDef \hat_v13 // variation hat closed +( +SynthDef(\hat_v13, { + arg decay = 0.04, hpf = 6000, bpf = 10000, rq = 0.4, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v14.scd b/sound_algo/synth/drums/hat_v14.scd new file mode 100644 index 0000000..8eac7e2 --- /dev/null +++ b/sound_algo/synth/drums/hat_v14.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v14.scd -- SynthDef \hat_v14 // variation hat closed +( +SynthDef(\hat_v14, { + arg decay = 0.05, hpf = 7000, bpf = 11000, rq = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v15.scd b/sound_algo/synth/drums/hat_v15.scd new file mode 100644 index 0000000..cacf581 --- /dev/null +++ b/sound_algo/synth/drums/hat_v15.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v15.scd -- SynthDef \hat_v15 // variation hat closed +( +SynthDef(\hat_v15, { + arg decay = 0.06, hpf = 8000, bpf = 12000, rq = 0.6, + drive = 1.4, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -5), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v16.scd b/sound_algo/synth/drums/hat_v16.scd new file mode 100644 index 0000000..e6602ff --- /dev/null +++ b/sound_algo/synth/drums/hat_v16.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v16.scd -- SynthDef \hat_v16 // variation hat closed +( +SynthDef(\hat_v16, { + arg decay = 0.08, hpf = 9000, bpf = 9000, rq = 0.3, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -6), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v17.scd b/sound_algo/synth/drums/hat_v17.scd new file mode 100644 index 0000000..eb39dfd --- /dev/null +++ b/sound_algo/synth/drums/hat_v17.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v17.scd -- SynthDef \hat_v17 // variation hat closed +( +SynthDef(\hat_v17, { + arg decay = 0.1, hpf = 10000, bpf = 8000, rq = 0.4, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v18.scd b/sound_algo/synth/drums/hat_v18.scd new file mode 100644 index 0000000..8575092 --- /dev/null +++ b/sound_algo/synth/drums/hat_v18.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v18.scd -- SynthDef \hat_v18 // variation hat closed +( +SynthDef(\hat_v18, { + arg decay = 0.07, hpf = 5000, bpf = 13000, rq = 0.5, + drive = 1.4, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v19.scd b/sound_algo/synth/drums/hat_v19.scd new file mode 100644 index 0000000..8242a6c --- /dev/null +++ b/sound_algo/synth/drums/hat_v19.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v19.scd -- SynthDef \hat_v19 // variation hat closed +( +SynthDef(\hat_v19, { + arg decay = 0.04, hpf = 6000, bpf = 10000, rq = 0.6, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -5), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v2.scd b/sound_algo/synth/drums/hat_v2.scd new file mode 100644 index 0000000..e43fac7 --- /dev/null +++ b/sound_algo/synth/drums/hat_v2.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v2.scd -- SynthDef \hat_v2 // variation hat closed +( +SynthDef(\hat_v2, { + arg decay = 0.05, hpf = 7000, bpf = 11000, rq = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v3.scd b/sound_algo/synth/drums/hat_v3.scd new file mode 100644 index 0000000..7a840ba --- /dev/null +++ b/sound_algo/synth/drums/hat_v3.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v3.scd -- SynthDef \hat_v3 // variation hat closed +( +SynthDef(\hat_v3, { + arg decay = 0.06, hpf = 8000, bpf = 12000, rq = 0.6, + drive = 1.4, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -5), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v4.scd b/sound_algo/synth/drums/hat_v4.scd new file mode 100644 index 0000000..df4ba25 --- /dev/null +++ b/sound_algo/synth/drums/hat_v4.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v4.scd -- SynthDef \hat_v4 // variation hat closed +( +SynthDef(\hat_v4, { + arg decay = 0.08, hpf = 9000, bpf = 9000, rq = 0.3, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -6), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v5.scd b/sound_algo/synth/drums/hat_v5.scd new file mode 100644 index 0000000..b914b11 --- /dev/null +++ b/sound_algo/synth/drums/hat_v5.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v5.scd -- SynthDef \hat_v5 // variation hat closed +( +SynthDef(\hat_v5, { + arg decay = 0.1, hpf = 10000, bpf = 8000, rq = 0.4, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v6.scd b/sound_algo/synth/drums/hat_v6.scd new file mode 100644 index 0000000..0099d51 --- /dev/null +++ b/sound_algo/synth/drums/hat_v6.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v6.scd -- SynthDef \hat_v6 // variation hat closed +( +SynthDef(\hat_v6, { + arg decay = 0.07, hpf = 5000, bpf = 13000, rq = 0.5, + drive = 1.4, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v7.scd b/sound_algo/synth/drums/hat_v7.scd new file mode 100644 index 0000000..ef36bfd --- /dev/null +++ b/sound_algo/synth/drums/hat_v7.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v7.scd -- SynthDef \hat_v7 // variation hat closed +( +SynthDef(\hat_v7, { + arg decay = 0.04, hpf = 6000, bpf = 10000, rq = 0.6, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -5), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v8.scd b/sound_algo/synth/drums/hat_v8.scd new file mode 100644 index 0000000..efe05ee --- /dev/null +++ b/sound_algo/synth/drums/hat_v8.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v8.scd -- SynthDef \hat_v8 // variation hat closed +( +SynthDef(\hat_v8, { + arg decay = 0.05, hpf = 7000, bpf = 11000, rq = 0.3, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -6), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/hat_v9.scd b/sound_algo/synth/drums/hat_v9.scd new file mode 100644 index 0000000..42dfe9b --- /dev/null +++ b/sound_algo/synth/drums/hat_v9.scd @@ -0,0 +1,16 @@ +// synth/drums/hat_v9.scd -- SynthDef \hat_v9 // variation hat closed +( +SynthDef(\hat_v9, { + arg decay = 0.06, hpf = 8000, bpf = 12000, rq = 0.4, + drive = 1.4, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick.scd b/sound_algo/synth/drums/kick.scd new file mode 100644 index 0000000..70ee7f7 --- /dev/null +++ b/sound_algo/synth/drums/kick.scd @@ -0,0 +1,33 @@ +// ===================================================================== +// synth/drums/kick.scd -- SynthDef \kick +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\kick, { + arg freq = 55, pitchAmt = 3.0, pitchTime = 0.035, + decay = 0.32, drive = 1.3, click = 0.2, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.18; // sidechain : bus de sortie + duree decay + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + // pitch drop expo court + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + // sub-bass en parallele (octave en dessous, fixe) + sub = SinOsc.ar(freq * 0.5); + // click haute frequence, court + clickSig = HPF.ar(WhiteNoise.ar, 3000) * + EnvGen.kr(Env.perc(0.0005, 0.004)); + sig = body + (sub * 0.3) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + // tanh AVANT ampEnv : sature la forme d'onde brute, garde le + // transitoire intact dans l'enveloppe (corrige M3 du critic) + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + // Sidechain : enveloppe percussive plus longue que l'amp pour + // ducker les autres voix le temps que l'oreille percoive le kick + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); + }).add; +) diff --git a/sound_algo/synth/drums/kick808.scd b/sound_algo/synth/drums/kick808.scd new file mode 100644 index 0000000..84990b4 --- /dev/null +++ b/sound_algo/synth/drums/kick808.scd @@ -0,0 +1,24 @@ +// ===================================================================== +// synth/drums/kick808.scd -- SynthDef \kick808 +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\kick808, { + arg freq = 50, glide = 0.04, decay = 0.7, + drive = 1.4, amp = 0.6, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, body, click, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 5, freq], [0.025], \exp)); + body = SinOsc.ar(pEnv); + click = HPF.ar(WhiteNoise.ar, 1500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + ampEnv = EnvGen.kr(Env.perc(0.003, decay, curve: -3), doneAction: 2); + sig = body + (click * 0.15); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v1.scd b/sound_algo/synth/drums/kick808_v1.scd new file mode 100644 index 0000000..7734235 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v1.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v1.scd -- SynthDef \kick808_v1 // variation kick 808 sub deep +( +SynthDef(\kick808_v1, { + arg freq = 35, pitchAmt = 1.5, pitchTime = 0.04, + decay = 0.4, drive = 1.0, click = 0.05, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.5) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v10.scd b/sound_algo/synth/drums/kick808_v10.scd new file mode 100644 index 0000000..5ecb921 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v10.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v10.scd -- SynthDef \kick808_v10 // variation kick 808 sub deep +( +SynthDef(\kick808_v10, { + arg freq = 52, pitchAmt = 2.0, pitchTime = 0.08, + decay = 0.6, drive = 1.2, click = 0.1, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.6) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).softclip; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v11.scd b/sound_algo/synth/drums/kick808_v11.scd new file mode 100644 index 0000000..f371f54 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v11.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v11.scd -- SynthDef \kick808_v11 // variation kick 808 sub deep +( +SynthDef(\kick808_v11, { + arg freq = 36, pitchAmt = 2.5, pitchTime = 0.04, + decay = 0.8, drive = 1.4, click = 0.15, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.25); + clickSig = HPF.ar(WhiteNoise.ar, 3000) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.4) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v12.scd b/sound_algo/synth/drums/kick808_v12.scd new file mode 100644 index 0000000..2f0e5e7 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v12.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v12.scd -- SynthDef \kick808_v12 // variation kick 808 sub deep +( +SynthDef(\kick808_v12, { + arg freq = 44, pitchAmt = 3.0, pitchTime = 0.05, + decay = 1.0, drive = 1.6, click = 0.2, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 3500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.7) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).softclip; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v13.scd b/sound_algo/synth/drums/kick808_v13.scd new file mode 100644 index 0000000..3ebb824 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v13.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v13.scd -- SynthDef \kick808_v13 // variation kick 808 sub deep +( +SynthDef(\kick808_v13, { + arg freq = 46, pitchAmt = 1.5, pitchTime = 0.06, + decay = 0.7, drive = 1.0, click = 0.05, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.5) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v14.scd b/sound_algo/synth/drums/kick808_v14.scd new file mode 100644 index 0000000..a9169a9 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v14.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v14.scd -- SynthDef \kick808_v14 // variation kick 808 sub deep +( +SynthDef(\kick808_v14, { + arg freq = 54, pitchAmt = 2.0, pitchTime = 0.07, + decay = 0.9, drive = 1.2, click = 0.1, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 3000) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.6) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v15.scd b/sound_algo/synth/drums/kick808_v15.scd new file mode 100644 index 0000000..20404ca --- /dev/null +++ b/sound_algo/synth/drums/kick808_v15.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v15.scd -- SynthDef \kick808_v15 // variation kick 808 sub deep +( +SynthDef(\kick808_v15, { + arg freq = 58, pitchAmt = 2.5, pitchTime = 0.08, + decay = 0.4, drive = 1.4, click = 0.15, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.25); + clickSig = HPF.ar(WhiteNoise.ar, 3500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.4) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).softclip; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v16.scd b/sound_algo/synth/drums/kick808_v16.scd new file mode 100644 index 0000000..5c22b78 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v16.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v16.scd -- SynthDef \kick808_v16 // variation kick 808 sub deep +( +SynthDef(\kick808_v16, { + arg freq = 62, pitchAmt = 3.0, pitchTime = 0.04, + decay = 0.5, drive = 1.6, click = 0.2, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.7) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v17.scd b/sound_algo/synth/drums/kick808_v17.scd new file mode 100644 index 0000000..ea1ab0f --- /dev/null +++ b/sound_algo/synth/drums/kick808_v17.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v17.scd -- SynthDef \kick808_v17 // variation kick 808 sub deep +( +SynthDef(\kick808_v17, { + arg freq = 39, pitchAmt = 1.5, pitchTime = 0.05, + decay = 0.6, drive = 1.0, click = 0.05, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 3000) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.5) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).softclip; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v18.scd b/sound_algo/synth/drums/kick808_v18.scd new file mode 100644 index 0000000..fcb0ab1 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v18.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v18.scd -- SynthDef \kick808_v18 // variation kick 808 sub deep +( +SynthDef(\kick808_v18, { + arg freq = 41, pitchAmt = 2.0, pitchTime = 0.06, + decay = 0.8, drive = 1.2, click = 0.1, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 3500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.6) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v19.scd b/sound_algo/synth/drums/kick808_v19.scd new file mode 100644 index 0000000..211ca2c --- /dev/null +++ b/sound_algo/synth/drums/kick808_v19.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v19.scd -- SynthDef \kick808_v19 // variation kick 808 sub deep +( +SynthDef(\kick808_v19, { + arg freq = 43, pitchAmt = 2.5, pitchTime = 0.07, + decay = 1.0, drive = 1.4, click = 0.15, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.25); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.4) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v2.scd b/sound_algo/synth/drums/kick808_v2.scd new file mode 100644 index 0000000..c53bdeb --- /dev/null +++ b/sound_algo/synth/drums/kick808_v2.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v2.scd -- SynthDef \kick808_v2 // variation kick 808 sub deep +( +SynthDef(\kick808_v2, { + arg freq = 40, pitchAmt = 2.0, pitchTime = 0.05, + decay = 0.5, drive = 1.2, click = 0.1, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 3000) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.6) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).softclip; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v3.scd b/sound_algo/synth/drums/kick808_v3.scd new file mode 100644 index 0000000..3120ba7 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v3.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v3.scd -- SynthDef \kick808_v3 // variation kick 808 sub deep +( +SynthDef(\kick808_v3, { + arg freq = 45, pitchAmt = 2.5, pitchTime = 0.06, + decay = 0.6, drive = 1.4, click = 0.15, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.25); + clickSig = HPF.ar(WhiteNoise.ar, 3500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.4) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v4.scd b/sound_algo/synth/drums/kick808_v4.scd new file mode 100644 index 0000000..4d3830b --- /dev/null +++ b/sound_algo/synth/drums/kick808_v4.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v4.scd -- SynthDef \kick808_v4 // variation kick 808 sub deep +( +SynthDef(\kick808_v4, { + arg freq = 50, pitchAmt = 3.0, pitchTime = 0.07, + decay = 0.8, drive = 1.6, click = 0.2, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.7) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v5.scd b/sound_algo/synth/drums/kick808_v5.scd new file mode 100644 index 0000000..ff9af82 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v5.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v5.scd -- SynthDef \kick808_v5 // variation kick 808 sub deep +( +SynthDef(\kick808_v5, { + arg freq = 55, pitchAmt = 1.5, pitchTime = 0.08, + decay = 1.0, drive = 1.0, click = 0.05, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 3000) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.5) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).softclip; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v6.scd b/sound_algo/synth/drums/kick808_v6.scd new file mode 100644 index 0000000..d37c319 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v6.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v6.scd -- SynthDef \kick808_v6 // variation kick 808 sub deep +( +SynthDef(\kick808_v6, { + arg freq = 60, pitchAmt = 2.0, pitchTime = 0.04, + decay = 0.7, drive = 1.2, click = 0.1, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 3500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.6) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v7.scd b/sound_algo/synth/drums/kick808_v7.scd new file mode 100644 index 0000000..1f864e9 --- /dev/null +++ b/sound_algo/synth/drums/kick808_v7.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v7.scd -- SynthDef \kick808_v7 // variation kick 808 sub deep +( +SynthDef(\kick808_v7, { + arg freq = 38, pitchAmt = 2.5, pitchTime = 0.05, + decay = 0.9, drive = 1.4, click = 0.15, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.25); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.4) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).softclip; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v8.scd b/sound_algo/synth/drums/kick808_v8.scd new file mode 100644 index 0000000..c3902dd --- /dev/null +++ b/sound_algo/synth/drums/kick808_v8.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v8.scd -- SynthDef \kick808_v8 // variation kick 808 sub deep +( +SynthDef(\kick808_v8, { + arg freq = 42, pitchAmt = 3.0, pitchTime = 0.06, + decay = 0.4, drive = 1.6, click = 0.2, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 3000) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.7) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick808_v9.scd b/sound_algo/synth/drums/kick808_v9.scd new file mode 100644 index 0000000..32d6e2b --- /dev/null +++ b/sound_algo/synth/drums/kick808_v9.scd @@ -0,0 +1,23 @@ +// synth/drums/kick808_v9.scd -- SynthDef \kick808_v9 // variation kick 808 sub deep +( +SynthDef(\kick808_v9, { + arg freq = 48, pitchAmt = 1.5, pitchTime = 0.07, + decay = 0.5, drive = 1.0, click = 0.05, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 3500) * + EnvGen.kr(Env.perc(0.0005, 0.003)); + sig = body + (sub * 0.5) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber.scd b/sound_algo/synth/drums/kick_gabber.scd new file mode 100644 index 0000000..8c1737d --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber.scd @@ -0,0 +1,26 @@ +// ===================================================================== +// synth/drums/kick_gabber.scd -- SynthDef \kickGabber +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\kickGabber, { + arg freq = 50, decay = 0.32, drive = 6.0, click = 0.4, + amp = 0.55, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -3)); + body = SinOsc.ar(pEnv) + (Saw.ar(pEnv) * 0.3); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 4000) * + EnvGen.kr(Env.perc(0.0005, 0.005)); + sig = body + (sub * 0.4) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (sig * drive).clip(-1, 1); // hard clip gabber + sig = (sig * 1.4).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v1.scd b/sound_algo/synth/drums/kick_gabber_v1.scd new file mode 100644 index 0000000..969e4f6 --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v1.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v1.scd -- SynthDef \kick_gabber_v1 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v1, { + arg freq = 50, decay = 0.2, drive = 4, + fold = 0.7, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = LFTri.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v10.scd b/sound_algo/synth/drums/kick_gabber_v10.scd new file mode 100644 index 0000000..0b8f637 --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v10.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v10.scd -- SynthDef \kick_gabber_v10 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v10, { + arg freq = 90, decay = 0.25, drive = 8, + fold = 0.8, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Saw.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).softclip; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v11.scd b/sound_algo/synth/drums/kick_gabber_v11.scd new file mode 100644 index 0000000..964191a --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v11.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v11.scd -- SynthDef \kick_gabber_v11 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v11, { + arg freq = 50, decay = 0.3, drive = 10, + fold = 0.9, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Pulse.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v12.scd b/sound_algo/synth/drums/kick_gabber_v12.scd new file mode 100644 index 0000000..50e4457 --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v12.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v12.scd -- SynthDef \kick_gabber_v12 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v12, { + arg freq = 55, decay = 0.35, drive = 12, + fold = 0.95, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = SinOsc.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).softclip; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v13.scd b/sound_algo/synth/drums/kick_gabber_v13.scd new file mode 100644 index 0000000..287a042 --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v13.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v13.scd -- SynthDef \kick_gabber_v13 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v13, { + arg freq = 60, decay = 0.2, drive = 16, + fold = 0.7, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = LFTri.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v14.scd b/sound_algo/synth/drums/kick_gabber_v14.scd new file mode 100644 index 0000000..380ca7f --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v14.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v14.scd -- SynthDef \kick_gabber_v14 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v14, { + arg freq = 65, decay = 0.25, drive = 20, + fold = 0.8, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Saw.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).softclip; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v15.scd b/sound_algo/synth/drums/kick_gabber_v15.scd new file mode 100644 index 0000000..174e92e --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v15.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v15.scd -- SynthDef \kick_gabber_v15 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v15, { + arg freq = 70, decay = 0.3, drive = 4, + fold = 0.9, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Pulse.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v16.scd b/sound_algo/synth/drums/kick_gabber_v16.scd new file mode 100644 index 0000000..ff3dc5b --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v16.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v16.scd -- SynthDef \kick_gabber_v16 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v16, { + arg freq = 75, decay = 0.35, drive = 6, + fold = 0.95, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = SinOsc.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).softclip; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v17.scd b/sound_algo/synth/drums/kick_gabber_v17.scd new file mode 100644 index 0000000..0aa034a --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v17.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v17.scd -- SynthDef \kick_gabber_v17 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v17, { + arg freq = 80, decay = 0.2, drive = 8, + fold = 0.7, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = LFTri.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v18.scd b/sound_algo/synth/drums/kick_gabber_v18.scd new file mode 100644 index 0000000..c3e91de --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v18.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v18.scd -- SynthDef \kick_gabber_v18 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v18, { + arg freq = 45, decay = 0.25, drive = 10, + fold = 0.8, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Saw.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).softclip; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v19.scd b/sound_algo/synth/drums/kick_gabber_v19.scd new file mode 100644 index 0000000..fc6f682 --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v19.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v19.scd -- SynthDef \kick_gabber_v19 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v19, { + arg freq = 85, decay = 0.3, drive = 12, + fold = 0.9, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Pulse.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v2.scd b/sound_algo/synth/drums/kick_gabber_v2.scd new file mode 100644 index 0000000..d470bdf --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v2.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v2.scd -- SynthDef \kick_gabber_v2 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v2, { + arg freq = 55, decay = 0.25, drive = 6, + fold = 0.8, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Saw.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).softclip; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v3.scd b/sound_algo/synth/drums/kick_gabber_v3.scd new file mode 100644 index 0000000..696a7ed --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v3.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v3.scd -- SynthDef \kick_gabber_v3 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v3, { + arg freq = 60, decay = 0.3, drive = 8, + fold = 0.9, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Pulse.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v4.scd b/sound_algo/synth/drums/kick_gabber_v4.scd new file mode 100644 index 0000000..18ced25 --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v4.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v4.scd -- SynthDef \kick_gabber_v4 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v4, { + arg freq = 65, decay = 0.35, drive = 10, + fold = 0.95, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = SinOsc.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).softclip; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v5.scd b/sound_algo/synth/drums/kick_gabber_v5.scd new file mode 100644 index 0000000..a20ffc6 --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v5.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v5.scd -- SynthDef \kick_gabber_v5 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v5, { + arg freq = 70, decay = 0.2, drive = 12, + fold = 0.7, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = LFTri.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v6.scd b/sound_algo/synth/drums/kick_gabber_v6.scd new file mode 100644 index 0000000..820a22e --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v6.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v6.scd -- SynthDef \kick_gabber_v6 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v6, { + arg freq = 75, decay = 0.25, drive = 16, + fold = 0.8, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Saw.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).softclip; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v7.scd b/sound_algo/synth/drums/kick_gabber_v7.scd new file mode 100644 index 0000000..cb6c43a --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v7.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v7.scd -- SynthDef \kick_gabber_v7 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v7, { + arg freq = 80, decay = 0.3, drive = 20, + fold = 0.9, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Pulse.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v8.scd b/sound_algo/synth/drums/kick_gabber_v8.scd new file mode 100644 index 0000000..573ef8b --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v8.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v8.scd -- SynthDef \kick_gabber_v8 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v8, { + arg freq = 45, decay = 0.35, drive = 4, + fold = 0.95, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = SinOsc.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).softclip; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_gabber_v9.scd b/sound_algo/synth/drums/kick_gabber_v9.scd new file mode 100644 index 0000000..997f1f1 --- /dev/null +++ b/sound_algo/synth/drums/kick_gabber_v9.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_gabber_v9.scd -- SynthDef \kick_gabber_v9 // variation gabber stomp distordu +( +SynthDef(\kick_gabber_v9, { + arg freq = 85, decay = 0.2, drive = 6, + fold = 0.7, amp = 0.4, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = LFTri.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v1.scd b/sound_algo/synth/drums/kick_v1.scd new file mode 100644 index 0000000..0376e14 --- /dev/null +++ b/sound_algo/synth/drums/kick_v1.scd @@ -0,0 +1,23 @@ +// synth/drums/kick_v1.scd -- SynthDef \kick_v1 // variation kick basique +( +SynthDef(\kick_v1, { + arg freq = 40, pitchAmt = 2.5, pitchTime = 0.025, + decay = 0.25, drive = 1.1, click = 0.15, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.15; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -2)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 3000) * + EnvGen.kr(Env.perc(0.0005, 0.004)); + sig = body + (sub * 0.3) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v10.scd b/sound_algo/synth/drums/kick_v10.scd new file mode 100644 index 0000000..11ded92 --- /dev/null +++ b/sound_algo/synth/drums/kick_v10.scd @@ -0,0 +1,22 @@ +// synth/drums/kick_v10.scd -- SynthDef \kick_v10 // variation kick FM 2-op +( +SynthDef(\kick_v10, { + arg freq = 50, ratio = 1.5, modIndex = 800, + decay = 0.35, drive = 2.0, click = 0.15, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, mod, car, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 2.5, freq], [0.03], -3)); + mod = SinOsc.ar(pEnv * ratio) * pEnv * modIndex; + car = SinOsc.ar(pEnv + mod); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.005)); + sig = car + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v11.scd b/sound_algo/synth/drums/kick_v11.scd new file mode 100644 index 0000000..20f05e9 --- /dev/null +++ b/sound_algo/synth/drums/kick_v11.scd @@ -0,0 +1,22 @@ +// synth/drums/kick_v11.scd -- SynthDef \kick_v11 // variation kick FM 2-op +( +SynthDef(\kick_v11, { + arg freq = 45, ratio = 2.0, modIndex = 1200, + decay = 0.5, drive = 2.5, click = 0.25, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, mod, car, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 5.0, freq], [0.045], -3)); + mod = SinOsc.ar(pEnv * ratio) * pEnv * modIndex; + car = SinOsc.ar(pEnv + mod); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.005)); + sig = car + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v12.scd b/sound_algo/synth/drums/kick_v12.scd new file mode 100644 index 0000000..894dfae --- /dev/null +++ b/sound_algo/synth/drums/kick_v12.scd @@ -0,0 +1,22 @@ +// synth/drums/kick_v12.scd -- SynthDef \kick_v12 // variation kick FM 2-op +( +SynthDef(\kick_v12, { + arg freq = 65, ratio = 2.5, modIndex = 600, + decay = 0.25, drive = 1.2, click = 0.1, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, mod, car, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 3.5, freq], [0.06], -3)); + mod = SinOsc.ar(pEnv * ratio) * pEnv * modIndex; + car = SinOsc.ar(pEnv + mod); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.005)); + sig = car + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v13.scd b/sound_algo/synth/drums/kick_v13.scd new file mode 100644 index 0000000..1b95a25 --- /dev/null +++ b/sound_algo/synth/drums/kick_v13.scd @@ -0,0 +1,22 @@ +// synth/drums/kick_v13.scd -- SynthDef \kick_v13 // variation kick FM 2-op +( +SynthDef(\kick_v13, { + arg freq = 70, ratio = 3.0, modIndex = 300, + decay = 0.6, drive = 3.0, click = 0.35, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, mod, car, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 6.0, freq], [0.035], -3)); + mod = SinOsc.ar(pEnv * ratio) * pEnv * modIndex; + car = SinOsc.ar(pEnv + mod); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.005)); + sig = car + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v14.scd b/sound_algo/synth/drums/kick_v14.scd new file mode 100644 index 0000000..551212e --- /dev/null +++ b/sound_algo/synth/drums/kick_v14.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_v14.scd -- SynthDef \kick_v14 // variation kick distordu / gabber +( +SynthDef(\kick_v14, { + arg freq = 55, decay = 0.3, drive = 3.0, + fold = 0.6, amp = 0.45, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = SinOsc.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v15.scd b/sound_algo/synth/drums/kick_v15.scd new file mode 100644 index 0000000..b85c53d --- /dev/null +++ b/sound_algo/synth/drums/kick_v15.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_v15.scd -- SynthDef \kick_v15 // variation kick distordu / gabber +( +SynthDef(\kick_v15, { + arg freq = 60, decay = 0.35, drive = 5.0, + fold = 0.7, amp = 0.45, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = LFTri.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v16.scd b/sound_algo/synth/drums/kick_v16.scd new file mode 100644 index 0000000..cffc397 --- /dev/null +++ b/sound_algo/synth/drums/kick_v16.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_v16.scd -- SynthDef \kick_v16 // variation kick distordu / gabber +( +SynthDef(\kick_v16, { + arg freq = 50, decay = 0.4, drive = 8.0, + fold = 0.8, amp = 0.45, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Saw.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).softclip; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v17.scd b/sound_algo/synth/drums/kick_v17.scd new file mode 100644 index 0000000..7ac2634 --- /dev/null +++ b/sound_algo/synth/drums/kick_v17.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_v17.scd -- SynthDef \kick_v17 // variation kick distordu / gabber +( +SynthDef(\kick_v17, { + arg freq = 45, decay = 0.5, drive = 12.0, + fold = 0.9, amp = 0.45, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = Pulse.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v18.scd b/sound_algo/synth/drums/kick_v18.scd new file mode 100644 index 0000000..10e617c --- /dev/null +++ b/sound_algo/synth/drums/kick_v18.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_v18.scd -- SynthDef \kick_v18 // variation kick distordu / gabber +( +SynthDef(\kick_v18, { + arg freq = 65, decay = 0.25, drive = 4.0, + fold = 0.5, amp = 0.45, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = SinOsc.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).tanh; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v19.scd b/sound_algo/synth/drums/kick_v19.scd new file mode 100644 index 0000000..6008333 --- /dev/null +++ b/sound_algo/synth/drums/kick_v19.scd @@ -0,0 +1,18 @@ +// synth/drums/kick_v19.scd -- SynthDef \kick_v19 // variation kick distordu / gabber +( +SynthDef(\kick_v19, { + arg freq = 70, decay = 0.45, drive = 6.0, + fold = 0.85, amp = 0.45, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, body, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4, freq], [0.04], -4)); + body = LFTri.ar(pEnv.clip(20, 800)); + sig = body.fold2(fold); + sig = (sig * drive).softclip; + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v2.scd b/sound_algo/synth/drums/kick_v2.scd new file mode 100644 index 0000000..0cbbd1e --- /dev/null +++ b/sound_algo/synth/drums/kick_v2.scd @@ -0,0 +1,23 @@ +// synth/drums/kick_v2.scd -- SynthDef \kick_v2 // variation kick basique +( +SynthDef(\kick_v2, { + arg freq = 45, pitchAmt = 3.0, pitchTime = 0.035, + decay = 0.3, drive = 1.3, click = 0.2, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 3500) * + EnvGen.kr(Env.perc(0.0005, 0.004)); + sig = body + (sub * 0.3) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v3.scd b/sound_algo/synth/drums/kick_v3.scd new file mode 100644 index 0000000..c797475 --- /dev/null +++ b/sound_algo/synth/drums/kick_v3.scd @@ -0,0 +1,23 @@ +// synth/drums/kick_v3.scd -- SynthDef \kick_v3 // variation kick basique +( +SynthDef(\kick_v3, { + arg freq = 50, pitchAmt = 3.5, pitchTime = 0.045, + decay = 0.35, drive = 1.5, click = 0.25, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.22; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -4)); + body = LFTri.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 4000) * + EnvGen.kr(Env.perc(0.0005, 0.004)); + sig = body + (sub * 0.4) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v4.scd b/sound_algo/synth/drums/kick_v4.scd new file mode 100644 index 0000000..30321f2 --- /dev/null +++ b/sound_algo/synth/drums/kick_v4.scd @@ -0,0 +1,23 @@ +// synth/drums/kick_v4.scd -- SynthDef \kick_v4 // variation kick basique +( +SynthDef(\kick_v4, { + arg freq = 55, pitchAmt = 4.0, pitchTime = 0.055, + decay = 0.4, drive = 1.8, click = 0.3, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.2; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.25); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.004)); + sig = body + (sub * 0.5) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v5.scd b/sound_algo/synth/drums/kick_v5.scd new file mode 100644 index 0000000..bfb951d --- /dev/null +++ b/sound_algo/synth/drums/kick_v5.scd @@ -0,0 +1,23 @@ +// synth/drums/kick_v5.scd -- SynthDef \kick_v5 // variation kick basique +( +SynthDef(\kick_v5, { + arg freq = 60, pitchAmt = 5.0, pitchTime = 0.02, + decay = 0.5, drive = 2.0, click = 0.1, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.16; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -2)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 5000) * + EnvGen.kr(Env.perc(0.0005, 0.004)); + sig = body + (sub * 0.2) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v6.scd b/sound_algo/synth/drums/kick_v6.scd new file mode 100644 index 0000000..a14785a --- /dev/null +++ b/sound_algo/synth/drums/kick_v6.scd @@ -0,0 +1,23 @@ +// synth/drums/kick_v6.scd -- SynthDef \kick_v6 // variation kick basique +( +SynthDef(\kick_v6, { + arg freq = 65, pitchAmt = 2.0, pitchTime = 0.04, + decay = 0.6, drive = 1.2, click = 0.4, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.25; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -5)); + body = LFTri.ar(pEnv); + sub = SinOsc.ar(freq * 0.5); + clickSig = HPF.ar(WhiteNoise.ar, 2000) * + EnvGen.kr(Env.perc(0.0005, 0.004)); + sig = body + (sub * 0.3) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v7.scd b/sound_algo/synth/drums/kick_v7.scd new file mode 100644 index 0000000..ecfe0d5 --- /dev/null +++ b/sound_algo/synth/drums/kick_v7.scd @@ -0,0 +1,23 @@ +// synth/drums/kick_v7.scd -- SynthDef \kick_v7 // variation kick basique +( +SynthDef(\kick_v7, { + arg freq = 70, pitchAmt = 6.0, pitchTime = 0.06, + decay = 0.28, drive = 1.6, click = 0.18, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, body, sub, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * pitchAmt, freq], [pitchTime], -3)); + body = SinOsc.ar(pEnv); + sub = SinOsc.ar(freq * 0.33); + clickSig = HPF.ar(WhiteNoise.ar, 3000) * + EnvGen.kr(Env.perc(0.0005, 0.004)); + sig = body + (sub * 0.35) + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = sig * ampEnv; + sig = LeakDC.ar(sig) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v8.scd b/sound_algo/synth/drums/kick_v8.scd new file mode 100644 index 0000000..b36e769 --- /dev/null +++ b/sound_algo/synth/drums/kick_v8.scd @@ -0,0 +1,22 @@ +// synth/drums/kick_v8.scd -- SynthDef \kick_v8 // variation kick FM 2-op +( +SynthDef(\kick_v8, { + arg freq = 55, ratio = 0.5, modIndex = 200, + decay = 0.3, drive = 1.0, click = 0.2, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, mod, car, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.04], -3)); + mod = SinOsc.ar(pEnv * ratio) * pEnv * modIndex; + car = SinOsc.ar(pEnv + mod); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.005)); + sig = car + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/kick_v9.scd b/sound_algo/synth/drums/kick_v9.scd new file mode 100644 index 0000000..891ba2d --- /dev/null +++ b/sound_algo/synth/drums/kick_v9.scd @@ -0,0 +1,22 @@ +// synth/drums/kick_v9.scd -- SynthDef \kick_v9 // variation kick FM 2-op +( +SynthDef(\kick_v9, { + arg freq = 60, ratio = 1.0, modIndex = 400, + decay = 0.4, drive = 1.5, click = 0.3, + amp = 0.5, pan = 0, + scBus = 0, scShape = 0.18; + var pEnv, mod, car, clickSig, ampEnv, sig, scEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.05], -3)); + mod = SinOsc.ar(pEnv * ratio) * pEnv * modIndex; + car = SinOsc.ar(pEnv + mod); + clickSig = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.0005, 0.005)); + sig = car + (clickSig * click); + ampEnv = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + scEnv = EnvGen.kr(Env.perc(0.001, scShape, curve: -4)); + Out.kr(scBus, scEnv); + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat.scd b/sound_algo/synth/drums/open_hat.scd new file mode 100644 index 0000000..a3cf8e5 --- /dev/null +++ b/sound_algo/synth/drums/open_hat.scd @@ -0,0 +1,14 @@ +// ===================================================================== +// synth/drums/open_hat.scd -- SynthDef \openHat +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\openHat, { + arg hpf = 7000, decay = 0.4, amp = 0.18, pan = 0; + var sig, env; + sig = HPF.ar(WhiteNoise.ar, hpf); + sig = BPF.ar(sig, 9000, 0.6); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + Out.ar(0, Pan2.ar(sig * env * amp, pan)); + }).add; +) diff --git a/sound_algo/synth/drums/open_hat_v1.scd b/sound_algo/synth/drums/open_hat_v1.scd new file mode 100644 index 0000000..c7522ba --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v1.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v1.scd -- SynthDef \open_hat_v1 // variation open hat plus long +( +SynthDef(\open_hat_v1, { + arg decay = 0.2, hpf = 5000, bpf = 8000, rq = 0.5, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -2), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v10.scd b/sound_algo/synth/drums/open_hat_v10.scd new file mode 100644 index 0000000..f85dd6b --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v10.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v10.scd -- SynthDef \open_hat_v10 // variation open hat plus long +( +SynthDef(\open_hat_v10, { + arg decay = 0.5, hpf = 6000, bpf = 9000, rq = 0.5, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -2), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v11.scd b/sound_algo/synth/drums/open_hat_v11.scd new file mode 100644 index 0000000..f841d56 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v11.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v11.scd -- SynthDef \open_hat_v11 // variation open hat plus long +( +SynthDef(\open_hat_v11, { + arg decay = 0.25, hpf = 7000, bpf = 10000, rq = 0.6, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v12.scd b/sound_algo/synth/drums/open_hat_v12.scd new file mode 100644 index 0000000..13618e4 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v12.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v12.scd -- SynthDef \open_hat_v12 // variation open hat plus long +( +SynthDef(\open_hat_v12, { + arg decay = 0.35, hpf = 8000, bpf = 11000, rq = 0.7, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v13.scd b/sound_algo/synth/drums/open_hat_v13.scd new file mode 100644 index 0000000..a4b4649 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v13.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v13.scd -- SynthDef \open_hat_v13 // variation open hat plus long +( +SynthDef(\open_hat_v13, { + arg decay = 0.2, hpf = 5000, bpf = 8000, rq = 0.5, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -2), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v14.scd b/sound_algo/synth/drums/open_hat_v14.scd new file mode 100644 index 0000000..587afdb --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v14.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v14.scd -- SynthDef \open_hat_v14 // variation open hat plus long +( +SynthDef(\open_hat_v14, { + arg decay = 0.3, hpf = 6000, bpf = 9000, rq = 0.6, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v15.scd b/sound_algo/synth/drums/open_hat_v15.scd new file mode 100644 index 0000000..8f6c266 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v15.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v15.scd -- SynthDef \open_hat_v15 // variation open hat plus long +( +SynthDef(\open_hat_v15, { + arg decay = 0.4, hpf = 7000, bpf = 10000, rq = 0.7, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v16.scd b/sound_algo/synth/drums/open_hat_v16.scd new file mode 100644 index 0000000..2707de0 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v16.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v16.scd -- SynthDef \open_hat_v16 // variation open hat plus long +( +SynthDef(\open_hat_v16, { + arg decay = 0.5, hpf = 8000, bpf = 11000, rq = 0.5, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -2), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v17.scd b/sound_algo/synth/drums/open_hat_v17.scd new file mode 100644 index 0000000..54ed95e --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v17.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v17.scd -- SynthDef \open_hat_v17 // variation open hat plus long +( +SynthDef(\open_hat_v17, { + arg decay = 0.25, hpf = 5000, bpf = 8000, rq = 0.6, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v18.scd b/sound_algo/synth/drums/open_hat_v18.scd new file mode 100644 index 0000000..9743a0c --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v18.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v18.scd -- SynthDef \open_hat_v18 // variation open hat plus long +( +SynthDef(\open_hat_v18, { + arg decay = 0.35, hpf = 6000, bpf = 9000, rq = 0.7, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v19.scd b/sound_algo/synth/drums/open_hat_v19.scd new file mode 100644 index 0000000..c2bbe28 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v19.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v19.scd -- SynthDef \open_hat_v19 // variation open hat plus long +( +SynthDef(\open_hat_v19, { + arg decay = 0.2, hpf = 7000, bpf = 10000, rq = 0.5, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -2), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v2.scd b/sound_algo/synth/drums/open_hat_v2.scd new file mode 100644 index 0000000..786cb98 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v2.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v2.scd -- SynthDef \open_hat_v2 // variation open hat plus long +( +SynthDef(\open_hat_v2, { + arg decay = 0.3, hpf = 6000, bpf = 9000, rq = 0.6, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v3.scd b/sound_algo/synth/drums/open_hat_v3.scd new file mode 100644 index 0000000..c117d35 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v3.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v3.scd -- SynthDef \open_hat_v3 // variation open hat plus long +( +SynthDef(\open_hat_v3, { + arg decay = 0.4, hpf = 7000, bpf = 10000, rq = 0.7, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v4.scd b/sound_algo/synth/drums/open_hat_v4.scd new file mode 100644 index 0000000..b879157 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v4.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v4.scd -- SynthDef \open_hat_v4 // variation open hat plus long +( +SynthDef(\open_hat_v4, { + arg decay = 0.5, hpf = 8000, bpf = 11000, rq = 0.5, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -2), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v5.scd b/sound_algo/synth/drums/open_hat_v5.scd new file mode 100644 index 0000000..e2d74d3 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v5.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v5.scd -- SynthDef \open_hat_v5 // variation open hat plus long +( +SynthDef(\open_hat_v5, { + arg decay = 0.25, hpf = 5000, bpf = 8000, rq = 0.6, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v6.scd b/sound_algo/synth/drums/open_hat_v6.scd new file mode 100644 index 0000000..adcecb8 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v6.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v6.scd -- SynthDef \open_hat_v6 // variation open hat plus long +( +SynthDef(\open_hat_v6, { + arg decay = 0.35, hpf = 6000, bpf = 9000, rq = 0.7, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v7.scd b/sound_algo/synth/drums/open_hat_v7.scd new file mode 100644 index 0000000..a87ef7e --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v7.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v7.scd -- SynthDef \open_hat_v7 // variation open hat plus long +( +SynthDef(\open_hat_v7, { + arg decay = 0.2, hpf = 7000, bpf = 10000, rq = 0.5, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -2), doneAction: 2); + sig = (n * env * drive).softclip; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v8.scd b/sound_algo/synth/drums/open_hat_v8.scd new file mode 100644 index 0000000..bba47eb --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v8.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v8.scd -- SynthDef \open_hat_v8 // variation open hat plus long +( +SynthDef(\open_hat_v8, { + arg decay = 0.3, hpf = 8000, bpf = 11000, rq = 0.6, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/open_hat_v9.scd b/sound_algo/synth/drums/open_hat_v9.scd new file mode 100644 index 0000000..bdcf2a4 --- /dev/null +++ b/sound_algo/synth/drums/open_hat_v9.scd @@ -0,0 +1,16 @@ +// synth/drums/open_hat_v9.scd -- SynthDef \open_hat_v9 // variation open hat plus long +( +SynthDef(\open_hat_v9, { + arg decay = 0.4, hpf = 5000, bpf = 8000, rq = 0.7, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, n; + n = WhiteNoise.ar; + n = HPF.ar(n, hpf); + n = BPF.ar(n, bpf, rq); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (n * env * drive).tanh; + sig = LeakDC.ar(sig) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim.scd b/sound_algo/synth/drums/rim.scd new file mode 100644 index 0000000..e219234 --- /dev/null +++ b/sound_algo/synth/drums/rim.scd @@ -0,0 +1,14 @@ +// ===================================================================== +// synth/drums/rim.scd -- SynthDef \rim +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\rim, { + arg freq = 1500, decay = 0.04, amp = 0.3, pan = 0; + var sig, env; + sig = SinOsc.ar(freq) + (HPF.ar(WhiteNoise.ar, 4000) * 0.5); + sig = BPF.ar(sig, freq * 1.5, 0.3); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -5), doneAction: 2); + Out.ar(0, Pan2.ar(sig * env * amp, pan)); + }).add; +) diff --git a/sound_algo/synth/drums/rim_v1.scd b/sound_algo/synth/drums/rim_v1.scd new file mode 100644 index 0000000..1fc2b25 --- /dev/null +++ b/sound_algo/synth/drums/rim_v1.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v1.scd -- SynthDef \rim_v1 // variation rim shot metallique +( +SynthDef(\rim_v1, { + arg freq = 800, decay = 0.03, ratio = 0.4, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v10.scd b/sound_algo/synth/drums/rim_v10.scd new file mode 100644 index 0000000..1f9fe0d --- /dev/null +++ b/sound_algo/synth/drums/rim_v10.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v10.scd -- SynthDef \rim_v10 // variation rim shot metallique +( +SynthDef(\rim_v10, { + arg freq = 1200, decay = 0.06, ratio = 0.3, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v11.scd b/sound_algo/synth/drums/rim_v11.scd new file mode 100644 index 0000000..b21b292 --- /dev/null +++ b/sound_algo/synth/drums/rim_v11.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v11.scd -- SynthDef \rim_v11 // variation rim shot metallique +( +SynthDef(\rim_v11, { + arg freq = 1500, decay = 0.03, ratio = 0.4, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v12.scd b/sound_algo/synth/drums/rim_v12.scd new file mode 100644 index 0000000..a940e54 --- /dev/null +++ b/sound_algo/synth/drums/rim_v12.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v12.scd -- SynthDef \rim_v12 // variation rim shot metallique +( +SynthDef(\rim_v12, { + arg freq = 2000, decay = 0.05, ratio = 0.5, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v13.scd b/sound_algo/synth/drums/rim_v13.scd new file mode 100644 index 0000000..5bc0723 --- /dev/null +++ b/sound_algo/synth/drums/rim_v13.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v13.scd -- SynthDef \rim_v13 // variation rim shot metallique +( +SynthDef(\rim_v13, { + arg freq = 900, decay = 0.07, ratio = 0.6, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v14.scd b/sound_algo/synth/drums/rim_v14.scd new file mode 100644 index 0000000..652eeeb --- /dev/null +++ b/sound_algo/synth/drums/rim_v14.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v14.scd -- SynthDef \rim_v14 // variation rim shot metallique +( +SynthDef(\rim_v14, { + arg freq = 1100, decay = 0.04, ratio = 0.7, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v15.scd b/sound_algo/synth/drums/rim_v15.scd new file mode 100644 index 0000000..b919a15 --- /dev/null +++ b/sound_algo/synth/drums/rim_v15.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v15.scd -- SynthDef \rim_v15 // variation rim shot metallique +( +SynthDef(\rim_v15, { + arg freq = 800, decay = 0.06, ratio = 0.3, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v16.scd b/sound_algo/synth/drums/rim_v16.scd new file mode 100644 index 0000000..d36627a --- /dev/null +++ b/sound_algo/synth/drums/rim_v16.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v16.scd -- SynthDef \rim_v16 // variation rim shot metallique +( +SynthDef(\rim_v16, { + arg freq = 1000, decay = 0.03, ratio = 0.4, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v17.scd b/sound_algo/synth/drums/rim_v17.scd new file mode 100644 index 0000000..c9e5be9 --- /dev/null +++ b/sound_algo/synth/drums/rim_v17.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v17.scd -- SynthDef \rim_v17 // variation rim shot metallique +( +SynthDef(\rim_v17, { + arg freq = 1200, decay = 0.05, ratio = 0.5, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v18.scd b/sound_algo/synth/drums/rim_v18.scd new file mode 100644 index 0000000..499bcc4 --- /dev/null +++ b/sound_algo/synth/drums/rim_v18.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v18.scd -- SynthDef \rim_v18 // variation rim shot metallique +( +SynthDef(\rim_v18, { + arg freq = 1500, decay = 0.07, ratio = 0.6, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v19.scd b/sound_algo/synth/drums/rim_v19.scd new file mode 100644 index 0000000..778c609 --- /dev/null +++ b/sound_algo/synth/drums/rim_v19.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v19.scd -- SynthDef \rim_v19 // variation rim shot metallique +( +SynthDef(\rim_v19, { + arg freq = 2000, decay = 0.04, ratio = 0.7, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v2.scd b/sound_algo/synth/drums/rim_v2.scd new file mode 100644 index 0000000..bcf3db9 --- /dev/null +++ b/sound_algo/synth/drums/rim_v2.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v2.scd -- SynthDef \rim_v2 // variation rim shot metallique +( +SynthDef(\rim_v2, { + arg freq = 1000, decay = 0.05, ratio = 0.5, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v3.scd b/sound_algo/synth/drums/rim_v3.scd new file mode 100644 index 0000000..649f0d1 --- /dev/null +++ b/sound_algo/synth/drums/rim_v3.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v3.scd -- SynthDef \rim_v3 // variation rim shot metallique +( +SynthDef(\rim_v3, { + arg freq = 1200, decay = 0.07, ratio = 0.6, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v4.scd b/sound_algo/synth/drums/rim_v4.scd new file mode 100644 index 0000000..22d1218 --- /dev/null +++ b/sound_algo/synth/drums/rim_v4.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v4.scd -- SynthDef \rim_v4 // variation rim shot metallique +( +SynthDef(\rim_v4, { + arg freq = 1500, decay = 0.04, ratio = 0.7, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v5.scd b/sound_algo/synth/drums/rim_v5.scd new file mode 100644 index 0000000..95afc2a --- /dev/null +++ b/sound_algo/synth/drums/rim_v5.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v5.scd -- SynthDef \rim_v5 // variation rim shot metallique +( +SynthDef(\rim_v5, { + arg freq = 2000, decay = 0.06, ratio = 0.3, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v6.scd b/sound_algo/synth/drums/rim_v6.scd new file mode 100644 index 0000000..7e5b66c --- /dev/null +++ b/sound_algo/synth/drums/rim_v6.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v6.scd -- SynthDef \rim_v6 // variation rim shot metallique +( +SynthDef(\rim_v6, { + arg freq = 900, decay = 0.03, ratio = 0.4, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v7.scd b/sound_algo/synth/drums/rim_v7.scd new file mode 100644 index 0000000..68dc094 --- /dev/null +++ b/sound_algo/synth/drums/rim_v7.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v7.scd -- SynthDef \rim_v7 // variation rim shot metallique +( +SynthDef(\rim_v7, { + arg freq = 1100, decay = 0.05, ratio = 0.5, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v8.scd b/sound_algo/synth/drums/rim_v8.scd new file mode 100644 index 0000000..6af3ec5 --- /dev/null +++ b/sound_algo/synth/drums/rim_v8.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v8.scd -- SynthDef \rim_v8 // variation rim shot metallique +( +SynthDef(\rim_v8, { + arg freq = 800, decay = 0.07, ratio = 0.6, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/rim_v9.scd b/sound_algo/synth/drums/rim_v9.scd new file mode 100644 index 0000000..ff39c2e --- /dev/null +++ b/sound_algo/synth/drums/rim_v9.scd @@ -0,0 +1,15 @@ +// synth/drums/rim_v9.scd -- SynthDef \rim_v9 // variation rim shot metallique +( +SynthDef(\rim_v9, { + arg freq = 1000, decay = 0.04, ratio = 0.7, + amp = 0.25, pan = 0, + scBus = 0, scAmt = 0; + var sig, env, m; + m = Mix.fill(4, { |i| + SinOsc.ar(freq * (1 + (i * ratio))) * (1 / (i + 1)) + }); + env = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = LeakDC.ar(m * env) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare.scd b/sound_algo/synth/drums/snare.scd new file mode 100644 index 0000000..122db56 --- /dev/null +++ b/sound_algo/synth/drums/snare.scd @@ -0,0 +1,21 @@ +// ===================================================================== +// synth/drums/snare.scd -- SynthDef \snare +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\snare, { + arg freq = 200, decay = 0.13, noiseAmt = 0.6, drive = 1.5, + amp = 0.5, pan = 0; + var tone, noise, env, sig, pitchEnv; + pitchEnv = EnvGen.kr(Env([freq * 2, freq], [0.02], -2)); + tone = SinOsc.ar(pitchEnv) * EnvGen.kr(Env.perc(0.001, 0.05)); + noise = HPF.ar(WhiteNoise.ar, 1500); + noise = BPF.ar(noise, 3000, 0.5); + noise = noise * EnvGen.kr(Env.perc(0.001, decay)); + sig = (tone * (1 - noiseAmt)) + (noise * noiseAmt); + env = EnvGen.kr(Env.perc(0.002, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig) * amp * env; + Out.ar(0, Pan2.ar(sig, pan)); + }).add; +) diff --git a/sound_algo/synth/drums/snare_gated.scd b/sound_algo/synth/drums/snare_gated.scd new file mode 100644 index 0000000..7e35d5f --- /dev/null +++ b/sound_algo/synth/drums/snare_gated.scd @@ -0,0 +1,22 @@ +// ===================================================================== +// synth/drums/snare_gated.scd -- SynthDef \snareGated +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\snareGated, { + arg freq = 200, decay = 0.2, gateTime = 0.15, + amp = 0.5, pan = 0; + var tone, noise, env, gate, sig; + tone = SinOsc.ar(freq) * EnvGen.kr(Env.perc(0.001, 0.04)); + noise = HPF.ar(WhiteNoise.ar, 1200) * + EnvGen.kr(Env.perc(0.001, decay)); + sig = (tone * 0.4) + (noise * 0.6); + // Gated reverb : signal + reverb tronque par envelope gate + sig = sig + (CombC.ar(sig, 0.05, 0.04, 0.3) * + EnvGen.kr(Env([0, 1, 1, 0], [0.001, gateTime, 0.005]))); + env = EnvGen.kr(Env.linen(0.001, gateTime, 0.005), doneAction: 2); + sig = (sig * 1.4).tanh; + sig = LeakDC.ar(sig) * env * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v1.scd b/sound_algo/synth/drums/snare_gated_v1.scd new file mode 100644 index 0000000..1bfa420 --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v1.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v1.scd -- SynthDef \snare_gated_v1 // variation snare gated punchy +( +SynthDef(\snare_gated_v1, { + arg freq = 200, decay = 0.05, tone = 0.4, noise = 0.7, + drive = 2.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -6), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v10.scd b/sound_algo/synth/drums/snare_gated_v10.scd new file mode 100644 index 0000000..404fa1f --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v10.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v10.scd -- SynthDef \snare_gated_v10 // variation snare gated punchy +( +SynthDef(\snare_gated_v10, { + arg freq = 200, decay = 0.07, tone = 0.5, noise = 0.7, + drive = 3.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -6), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v11.scd b/sound_algo/synth/drums/snare_gated_v11.scd new file mode 100644 index 0000000..beb5a64 --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v11.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v11.scd -- SynthDef \snare_gated_v11 // variation snare gated punchy +( +SynthDef(\snare_gated_v11, { + arg freq = 220, decay = 0.09, tone = 0.4, noise = 0.8, + drive = 4.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -8), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v12.scd b/sound_algo/synth/drums/snare_gated_v12.scd new file mode 100644 index 0000000..8962f11 --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v12.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v12.scd -- SynthDef \snare_gated_v12 // variation snare gated punchy +( +SynthDef(\snare_gated_v12, { + arg freq = 240, decay = 0.11, tone = 0.5, noise = 0.9, + drive = 5.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -10), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v13.scd b/sound_algo/synth/drums/snare_gated_v13.scd new file mode 100644 index 0000000..1b7c27f --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v13.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v13.scd -- SynthDef \snare_gated_v13 // variation snare gated punchy +( +SynthDef(\snare_gated_v13, { + arg freq = 200, decay = 0.05, tone = 0.4, noise = 0.7, + drive = 2.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -6), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v14.scd b/sound_algo/synth/drums/snare_gated_v14.scd new file mode 100644 index 0000000..cba807f --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v14.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v14.scd -- SynthDef \snare_gated_v14 // variation snare gated punchy +( +SynthDef(\snare_gated_v14, { + arg freq = 220, decay = 0.07, tone = 0.5, noise = 0.8, + drive = 3.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -8), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v15.scd b/sound_algo/synth/drums/snare_gated_v15.scd new file mode 100644 index 0000000..dfd28db --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v15.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v15.scd -- SynthDef \snare_gated_v15 // variation snare gated punchy +( +SynthDef(\snare_gated_v15, { + arg freq = 240, decay = 0.09, tone = 0.4, noise = 0.9, + drive = 4.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -10), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v16.scd b/sound_algo/synth/drums/snare_gated_v16.scd new file mode 100644 index 0000000..273e95d --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v16.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v16.scd -- SynthDef \snare_gated_v16 // variation snare gated punchy +( +SynthDef(\snare_gated_v16, { + arg freq = 200, decay = 0.11, tone = 0.5, noise = 0.7, + drive = 5.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -6), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v17.scd b/sound_algo/synth/drums/snare_gated_v17.scd new file mode 100644 index 0000000..2426382 --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v17.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v17.scd -- SynthDef \snare_gated_v17 // variation snare gated punchy +( +SynthDef(\snare_gated_v17, { + arg freq = 220, decay = 0.05, tone = 0.4, noise = 0.8, + drive = 2.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -8), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v18.scd b/sound_algo/synth/drums/snare_gated_v18.scd new file mode 100644 index 0000000..6d58f1e --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v18.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v18.scd -- SynthDef \snare_gated_v18 // variation snare gated punchy +( +SynthDef(\snare_gated_v18, { + arg freq = 240, decay = 0.07, tone = 0.5, noise = 0.9, + drive = 3.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -10), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v19.scd b/sound_algo/synth/drums/snare_gated_v19.scd new file mode 100644 index 0000000..36ab0af --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v19.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v19.scd -- SynthDef \snare_gated_v19 // variation snare gated punchy +( +SynthDef(\snare_gated_v19, { + arg freq = 200, decay = 0.09, tone = 0.4, noise = 0.7, + drive = 4.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -6), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v2.scd b/sound_algo/synth/drums/snare_gated_v2.scd new file mode 100644 index 0000000..0d8322e --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v2.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v2.scd -- SynthDef \snare_gated_v2 // variation snare gated punchy +( +SynthDef(\snare_gated_v2, { + arg freq = 220, decay = 0.07, tone = 0.5, noise = 0.8, + drive = 3.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -8), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v3.scd b/sound_algo/synth/drums/snare_gated_v3.scd new file mode 100644 index 0000000..118d009 --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v3.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v3.scd -- SynthDef \snare_gated_v3 // variation snare gated punchy +( +SynthDef(\snare_gated_v3, { + arg freq = 240, decay = 0.09, tone = 0.4, noise = 0.9, + drive = 4.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -10), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v4.scd b/sound_algo/synth/drums/snare_gated_v4.scd new file mode 100644 index 0000000..e52b915 --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v4.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v4.scd -- SynthDef \snare_gated_v4 // variation snare gated punchy +( +SynthDef(\snare_gated_v4, { + arg freq = 200, decay = 0.11, tone = 0.5, noise = 0.7, + drive = 5.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -6), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v5.scd b/sound_algo/synth/drums/snare_gated_v5.scd new file mode 100644 index 0000000..013aa76 --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v5.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v5.scd -- SynthDef \snare_gated_v5 // variation snare gated punchy +( +SynthDef(\snare_gated_v5, { + arg freq = 220, decay = 0.05, tone = 0.4, noise = 0.8, + drive = 2.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -8), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v6.scd b/sound_algo/synth/drums/snare_gated_v6.scd new file mode 100644 index 0000000..31ef7db --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v6.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v6.scd -- SynthDef \snare_gated_v6 // variation snare gated punchy +( +SynthDef(\snare_gated_v6, { + arg freq = 240, decay = 0.07, tone = 0.5, noise = 0.9, + drive = 3.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -10), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v7.scd b/sound_algo/synth/drums/snare_gated_v7.scd new file mode 100644 index 0000000..39a2be7 --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v7.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v7.scd -- SynthDef \snare_gated_v7 // variation snare gated punchy +( +SynthDef(\snare_gated_v7, { + arg freq = 200, decay = 0.09, tone = 0.4, noise = 0.7, + drive = 4.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -6), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v8.scd b/sound_algo/synth/drums/snare_gated_v8.scd new file mode 100644 index 0000000..a9101ef --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v8.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v8.scd -- SynthDef \snare_gated_v8 // variation snare gated punchy +( +SynthDef(\snare_gated_v8, { + arg freq = 220, decay = 0.11, tone = 0.5, noise = 0.8, + drive = 5.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -8), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_gated_v9.scd b/sound_algo/synth/drums/snare_gated_v9.scd new file mode 100644 index 0000000..012f376 --- /dev/null +++ b/sound_algo/synth/drums/snare_gated_v9.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_gated_v9.scd -- SynthDef \snare_gated_v9 // variation snare gated punchy +( +SynthDef(\snare_gated_v9, { + arg freq = 240, decay = 0.05, tone = 0.4, noise = 0.9, + drive = 2.0, amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -10), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v1.scd b/sound_algo/synth/drums/snare_v1.scd new file mode 100644 index 0000000..2f0edd8 --- /dev/null +++ b/sound_algo/synth/drums/snare_v1.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v1.scd -- SynthDef \snare_v1 // variation snare standard +( +SynthDef(\snare_v1, { + arg freq = 180, decay = 0.1, tone = 0.3, noise = 0.5, + drive = 1.2, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 800); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v10.scd b/sound_algo/synth/drums/snare_v10.scd new file mode 100644 index 0000000..305254f --- /dev/null +++ b/sound_algo/synth/drums/snare_v10.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v10.scd -- SynthDef \snare_v10 // variation snare standard +( +SynthDef(\snare_v10, { + arg freq = 200, decay = 0.3, tone = 0.2, noise = 0.4, + drive = 1.5, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 600); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v11.scd b/sound_algo/synth/drums/snare_v11.scd new file mode 100644 index 0000000..15bd7a9 --- /dev/null +++ b/sound_algo/synth/drums/snare_v11.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v11.scd -- SynthDef \snare_v11 // variation snare standard +( +SynthDef(\snare_v11, { + arg freq = 220, decay = 0.1, tone = 0.3, noise = 0.5, + drive = 2.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 800); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -5), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v12.scd b/sound_algo/synth/drums/snare_v12.scd new file mode 100644 index 0000000..d3e2cd4 --- /dev/null +++ b/sound_algo/synth/drums/snare_v12.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v12.scd -- SynthDef \snare_v12 // variation snare standard +( +SynthDef(\snare_v12, { + arg freq = 240, decay = 0.15, tone = 0.4, noise = 0.6, + drive = 2.5, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -2), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v13.scd b/sound_algo/synth/drums/snare_v13.scd new file mode 100644 index 0000000..a494b70 --- /dev/null +++ b/sound_algo/synth/drums/snare_v13.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v13.scd -- SynthDef \snare_v13 // variation snare standard +( +SynthDef(\snare_v13, { + arg freq = 260, decay = 0.2, tone = 0.5, noise = 0.7, + drive = 1.2, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v14.scd b/sound_algo/synth/drums/snare_v14.scd new file mode 100644 index 0000000..73b9777 --- /dev/null +++ b/sound_algo/synth/drums/snare_v14.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v14.scd -- SynthDef \snare_v14 // variation snare standard +( +SynthDef(\snare_v14, { + arg freq = 160, decay = 0.25, tone = 0.6, noise = 0.8, + drive = 1.5, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v15.scd b/sound_algo/synth/drums/snare_v15.scd new file mode 100644 index 0000000..f93813c --- /dev/null +++ b/sound_algo/synth/drums/snare_v15.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v15.scd -- SynthDef \snare_v15 // variation snare standard +( +SynthDef(\snare_v15, { + arg freq = 280, decay = 0.3, tone = 0.2, noise = 0.4, + drive = 2.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 600); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -5), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v16.scd b/sound_algo/synth/drums/snare_v16.scd new file mode 100644 index 0000000..5f29c59 --- /dev/null +++ b/sound_algo/synth/drums/snare_v16.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v16.scd -- SynthDef \snare_v16 // variation snare standard +( +SynthDef(\snare_v16, { + arg freq = 300, decay = 0.1, tone = 0.3, noise = 0.5, + drive = 2.5, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 800); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -2), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v17.scd b/sound_algo/synth/drums/snare_v17.scd new file mode 100644 index 0000000..5caeef0 --- /dev/null +++ b/sound_algo/synth/drums/snare_v17.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v17.scd -- SynthDef \snare_v17 // variation snare standard +( +SynthDef(\snare_v17, { + arg freq = 180, decay = 0.15, tone = 0.4, noise = 0.6, + drive = 1.2, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v18.scd b/sound_algo/synth/drums/snare_v18.scd new file mode 100644 index 0000000..d78007d --- /dev/null +++ b/sound_algo/synth/drums/snare_v18.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v18.scd -- SynthDef \snare_v18 // variation snare standard +( +SynthDef(\snare_v18, { + arg freq = 200, decay = 0.2, tone = 0.5, noise = 0.7, + drive = 1.5, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v19.scd b/sound_algo/synth/drums/snare_v19.scd new file mode 100644 index 0000000..cba17e2 --- /dev/null +++ b/sound_algo/synth/drums/snare_v19.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v19.scd -- SynthDef \snare_v19 // variation snare standard +( +SynthDef(\snare_v19, { + arg freq = 220, decay = 0.25, tone = 0.6, noise = 0.8, + drive = 2.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -5), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v2.scd b/sound_algo/synth/drums/snare_v2.scd new file mode 100644 index 0000000..8f91d3f --- /dev/null +++ b/sound_algo/synth/drums/snare_v2.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v2.scd -- SynthDef \snare_v2 // variation snare standard +( +SynthDef(\snare_v2, { + arg freq = 200, decay = 0.15, tone = 0.4, noise = 0.6, + drive = 1.5, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v3.scd b/sound_algo/synth/drums/snare_v3.scd new file mode 100644 index 0000000..8d65c88 --- /dev/null +++ b/sound_algo/synth/drums/snare_v3.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v3.scd -- SynthDef \snare_v3 // variation snare standard +( +SynthDef(\snare_v3, { + arg freq = 220, decay = 0.2, tone = 0.5, noise = 0.7, + drive = 2.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -5), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v4.scd b/sound_algo/synth/drums/snare_v4.scd new file mode 100644 index 0000000..1d2479f --- /dev/null +++ b/sound_algo/synth/drums/snare_v4.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v4.scd -- SynthDef \snare_v4 // variation snare standard +( +SynthDef(\snare_v4, { + arg freq = 240, decay = 0.25, tone = 0.6, noise = 0.8, + drive = 2.5, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -2), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v5.scd b/sound_algo/synth/drums/snare_v5.scd new file mode 100644 index 0000000..183f05d --- /dev/null +++ b/sound_algo/synth/drums/snare_v5.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v5.scd -- SynthDef \snare_v5 // variation snare standard +( +SynthDef(\snare_v5, { + arg freq = 260, decay = 0.3, tone = 0.2, noise = 0.4, + drive = 1.2, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 600); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v6.scd b/sound_algo/synth/drums/snare_v6.scd new file mode 100644 index 0000000..5a60aaa --- /dev/null +++ b/sound_algo/synth/drums/snare_v6.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v6.scd -- SynthDef \snare_v6 // variation snare standard +( +SynthDef(\snare_v6, { + arg freq = 160, decay = 0.1, tone = 0.3, noise = 0.5, + drive = 1.5, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 800); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v7.scd b/sound_algo/synth/drums/snare_v7.scd new file mode 100644 index 0000000..a1a4a04 --- /dev/null +++ b/sound_algo/synth/drums/snare_v7.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v7.scd -- SynthDef \snare_v7 // variation snare standard +( +SynthDef(\snare_v7, { + arg freq = 280, decay = 0.15, tone = 0.4, noise = 0.6, + drive = 2.0, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -5), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v8.scd b/sound_algo/synth/drums/snare_v8.scd new file mode 100644 index 0000000..1c8692a --- /dev/null +++ b/sound_algo/synth/drums/snare_v8.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v8.scd -- SynthDef \snare_v8 // variation snare standard +( +SynthDef(\snare_v8, { + arg freq = 300, decay = 0.2, tone = 0.5, noise = 0.7, + drive = 2.5, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 1500); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -2), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/snare_v9.scd b/sound_algo/synth/drums/snare_v9.scd new file mode 100644 index 0000000..a06b776 --- /dev/null +++ b/sound_algo/synth/drums/snare_v9.scd @@ -0,0 +1,16 @@ +// synth/drums/snare_v9.scd -- SynthDef \snare_v9 // variation snare standard +( +SynthDef(\snare_v9, { + arg freq = 180, decay = 0.25, tone = 0.6, noise = 0.8, + drive = 1.2, amp = 0.35, pan = 0, + scBus = 0, scAmt = 0; + var sig, ampEnv, body, n; + body = SinOsc.ar(freq) + SinOsc.ar(freq * 1.4); + n = HPF.ar(WhiteNoise.ar, 2000); + sig = (body * tone) + (n * noise); + ampEnv = EnvGen.kr(Env.perc(0.001, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom.scd b/sound_algo/synth/drums/tom.scd new file mode 100644 index 0000000..359612d --- /dev/null +++ b/sound_algo/synth/drums/tom.scd @@ -0,0 +1,18 @@ +// ===================================================================== +// synth/drums/tom.scd -- SynthDef \tom +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\tom, { + arg freq = 110, decay = 0.3, drive = 1.4, amp = 0.5, pan = 0; + var pitchEnv, body, noise, sig, env; + pitchEnv = EnvGen.kr(Env([freq * 1.8, freq], [0.04], -3)); + body = SinOsc.ar(pitchEnv) + (Saw.ar(pitchEnv) * 0.2); + noise = HPF.ar(WhiteNoise.ar, 2000) * EnvGen.kr(Env.perc(0.001, 0.01)); + sig = body + (noise * 0.3); + env = EnvGen.kr(Env.perc(0.003, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig) * env * amp; + Out.ar(0, Pan2.ar(sig, pan)); + }).add; +) diff --git a/sound_algo/synth/drums/tom_v1.scd b/sound_algo/synth/drums/tom_v1.scd new file mode 100644 index 0000000..536b0f3 --- /dev/null +++ b/sound_algo/synth/drums/tom_v1.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v1.scd -- SynthDef \tom_v1 // variation tom pitched +( +SynthDef(\tom_v1, { + arg freq = 80, decay = 0.2, drive = 1.0, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.03], -3)); + sig = SinOsc.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v10.scd b/sound_algo/synth/drums/tom_v10.scd new file mode 100644 index 0000000..2315174 --- /dev/null +++ b/sound_algo/synth/drums/tom_v10.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v10.scd -- SynthDef \tom_v10 // variation tom pitched +( +SynthDef(\tom_v10, { + arg freq = 90, decay = 0.3, drive = 1.3, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.04], -3)); + sig = LFTri.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v11.scd b/sound_algo/synth/drums/tom_v11.scd new file mode 100644 index 0000000..02c9939 --- /dev/null +++ b/sound_algo/synth/drums/tom_v11.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v11.scd -- SynthDef \tom_v11 // variation tom pitched +( +SynthDef(\tom_v11, { + arg freq = 80, decay = 0.4, drive = 1.6, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.05], -3)); + sig = SinOsc.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v12.scd b/sound_algo/synth/drums/tom_v12.scd new file mode 100644 index 0000000..1e38318 --- /dev/null +++ b/sound_algo/synth/drums/tom_v12.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v12.scd -- SynthDef \tom_v12 // variation tom pitched +( +SynthDef(\tom_v12, { + arg freq = 100, decay = 0.5, drive = 2.0, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 2.5, freq], [0.06], -3)); + sig = LFTri.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v13.scd b/sound_algo/synth/drums/tom_v13.scd new file mode 100644 index 0000000..dccbabb --- /dev/null +++ b/sound_algo/synth/drums/tom_v13.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v13.scd -- SynthDef \tom_v13 // variation tom pitched +( +SynthDef(\tom_v13, { + arg freq = 120, decay = 0.2, drive = 1.0, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.03], -3)); + sig = SinOsc.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v14.scd b/sound_algo/synth/drums/tom_v14.scd new file mode 100644 index 0000000..c012c77 --- /dev/null +++ b/sound_algo/synth/drums/tom_v14.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v14.scd -- SynthDef \tom_v14 // variation tom pitched +( +SynthDef(\tom_v14, { + arg freq = 140, decay = 0.3, drive = 1.3, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 3.5, freq], [0.04], -3)); + sig = LFTri.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v15.scd b/sound_algo/synth/drums/tom_v15.scd new file mode 100644 index 0000000..cf9d8df --- /dev/null +++ b/sound_algo/synth/drums/tom_v15.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v15.scd -- SynthDef \tom_v15 // variation tom pitched +( +SynthDef(\tom_v15, { + arg freq = 160, decay = 0.4, drive = 1.6, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.05], -3)); + sig = SinOsc.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v16.scd b/sound_algo/synth/drums/tom_v16.scd new file mode 100644 index 0000000..e939b95 --- /dev/null +++ b/sound_algo/synth/drums/tom_v16.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v16.scd -- SynthDef \tom_v16 // variation tom pitched +( +SynthDef(\tom_v16, { + arg freq = 180, decay = 0.5, drive = 2.0, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.06], -3)); + sig = LFTri.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v17.scd b/sound_algo/synth/drums/tom_v17.scd new file mode 100644 index 0000000..2be50da --- /dev/null +++ b/sound_algo/synth/drums/tom_v17.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v17.scd -- SynthDef \tom_v17 // variation tom pitched +( +SynthDef(\tom_v17, { + arg freq = 200, decay = 0.2, drive = 1.0, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 2.5, freq], [0.03], -3)); + sig = SinOsc.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v18.scd b/sound_algo/synth/drums/tom_v18.scd new file mode 100644 index 0000000..25eb4da --- /dev/null +++ b/sound_algo/synth/drums/tom_v18.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v18.scd -- SynthDef \tom_v18 // variation tom pitched +( +SynthDef(\tom_v18, { + arg freq = 220, decay = 0.3, drive = 1.3, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.04], -3)); + sig = LFTri.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v19.scd b/sound_algo/synth/drums/tom_v19.scd new file mode 100644 index 0000000..c1f6a0d --- /dev/null +++ b/sound_algo/synth/drums/tom_v19.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v19.scd -- SynthDef \tom_v19 // variation tom pitched +( +SynthDef(\tom_v19, { + arg freq = 70, decay = 0.4, drive = 1.6, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 3.5, freq], [0.05], -3)); + sig = SinOsc.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v2.scd b/sound_algo/synth/drums/tom_v2.scd new file mode 100644 index 0000000..98662b2 --- /dev/null +++ b/sound_algo/synth/drums/tom_v2.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v2.scd -- SynthDef \tom_v2 // variation tom pitched +( +SynthDef(\tom_v2, { + arg freq = 100, decay = 0.3, drive = 1.3, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 2.5, freq], [0.04], -3)); + sig = LFTri.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v3.scd b/sound_algo/synth/drums/tom_v3.scd new file mode 100644 index 0000000..37e8407 --- /dev/null +++ b/sound_algo/synth/drums/tom_v3.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v3.scd -- SynthDef \tom_v3 // variation tom pitched +( +SynthDef(\tom_v3, { + arg freq = 120, decay = 0.4, drive = 1.6, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.05], -3)); + sig = SinOsc.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v4.scd b/sound_algo/synth/drums/tom_v4.scd new file mode 100644 index 0000000..951256f --- /dev/null +++ b/sound_algo/synth/drums/tom_v4.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v4.scd -- SynthDef \tom_v4 // variation tom pitched +( +SynthDef(\tom_v4, { + arg freq = 140, decay = 0.5, drive = 2.0, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 3.5, freq], [0.06], -3)); + sig = LFTri.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v5.scd b/sound_algo/synth/drums/tom_v5.scd new file mode 100644 index 0000000..e3fb665 --- /dev/null +++ b/sound_algo/synth/drums/tom_v5.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v5.scd -- SynthDef \tom_v5 // variation tom pitched +( +SynthDef(\tom_v5, { + arg freq = 160, decay = 0.2, drive = 1.0, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.03], -3)); + sig = SinOsc.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v6.scd b/sound_algo/synth/drums/tom_v6.scd new file mode 100644 index 0000000..2651805 --- /dev/null +++ b/sound_algo/synth/drums/tom_v6.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v6.scd -- SynthDef \tom_v6 // variation tom pitched +( +SynthDef(\tom_v6, { + arg freq = 180, decay = 0.3, drive = 1.3, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.04], -3)); + sig = LFTri.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v7.scd b/sound_algo/synth/drums/tom_v7.scd new file mode 100644 index 0000000..89368cc --- /dev/null +++ b/sound_algo/synth/drums/tom_v7.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v7.scd -- SynthDef \tom_v7 // variation tom pitched +( +SynthDef(\tom_v7, { + arg freq = 200, decay = 0.4, drive = 1.6, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 2.5, freq], [0.05], -3)); + sig = SinOsc.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v8.scd b/sound_algo/synth/drums/tom_v8.scd new file mode 100644 index 0000000..420538b --- /dev/null +++ b/sound_algo/synth/drums/tom_v8.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v8.scd -- SynthDef \tom_v8 // variation tom pitched +( +SynthDef(\tom_v8, { + arg freq = 220, decay = 0.5, drive = 2.0, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.06], -3)); + sig = LFTri.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/drums/tom_v9.scd b/sound_algo/synth/drums/tom_v9.scd new file mode 100644 index 0000000..ca6bf94 --- /dev/null +++ b/sound_algo/synth/drums/tom_v9.scd @@ -0,0 +1,15 @@ +// synth/drums/tom_v9.scd -- SynthDef \tom_v9 // variation tom pitched +( +SynthDef(\tom_v9, { + arg freq = 70, decay = 0.2, drive = 1.0, + amp = 0.4, pan = 0, + scBus = 0, scAmt = 0; + var sig, pEnv, ampEnv; + pEnv = EnvGen.kr(Env([freq * 3.5, freq], [0.03], -3)); + sig = SinOsc.ar(pEnv.clip(30, 1500)); + ampEnv = EnvGen.kr(Env.perc(0.005, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * ampEnv) * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute.scd b/sound_algo/synth/lead/flute.scd new file mode 100644 index 0000000..f4c6cf9 --- /dev/null +++ b/sound_algo/synth/lead/flute.scd @@ -0,0 +1,28 @@ +// ===================================================================== +// synth/lead/flute.scd -- SynthDef \flute +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\flute, { + arg freq = 440, gate = 1, + breathAmt = 0.15, vibratoRate = 5, vibratoDepth = 0.012, + cutoff = 3500, rq = 0.6, + attack = 0.08, decay = 0.1, sustain = 0.7, release = 0.3, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, vibFreq, breath, body; + vibFreq = freq * (1 + (SinOsc.kr(vibratoRate, + EnvGen.kr(Env([0, 0, 1], [0.15, 0.4])) * pi) * vibratoDepth)); + body = SinOsc.ar(vibFreq) + + (SinOsc.ar(vibFreq * 2) * 0.15) + + (SinOsc.ar(vibFreq * 3) * 0.05); + breath = HPF.ar(WhiteNoise.ar, 2000) * breathAmt * + EnvGen.kr(Env([0, 1, 0.6], [0.05, 0.5])); + sig = body + breath; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v1.scd b/sound_algo/synth/lead/flute_v1.scd new file mode 100644 index 0000000..59a9b47 --- /dev/null +++ b/sound_algo/synth/lead/flute_v1.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v1.scd -- SynthDef \flute_v1 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v1, { + arg freq = 440, gate = 1, decayTime = 0.5, + cutoff = 3000, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v10.scd b/sound_algo/synth/lead/flute_v10.scd new file mode 100644 index 0000000..bbd3485 --- /dev/null +++ b/sound_algo/synth/lead/flute_v10.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v10.scd -- SynthDef \flute_v10 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v10, { + arg freq = 440, gate = 1, decayTime = 2.0, + cutoff = 4000, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.3, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v11.scd b/sound_algo/synth/lead/flute_v11.scd new file mode 100644 index 0000000..27ee5d8 --- /dev/null +++ b/sound_algo/synth/lead/flute_v11.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v11.scd -- SynthDef \flute_v11 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v11, { + arg freq = 440, gate = 1, decayTime = 2.5, + cutoff = 5000, + attack = 0.001, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.008)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v12.scd b/sound_algo/synth/lead/flute_v12.scd new file mode 100644 index 0000000..0c73bf2 --- /dev/null +++ b/sound_algo/synth/lead/flute_v12.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v12.scd -- SynthDef \flute_v12 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v12, { + arg freq = 440, gate = 1, decayTime = 3.0, + cutoff = 6000, + attack = 0.001, decay = 0.3, sustain = 0.1, release = 0.8, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.01)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v13.scd b/sound_algo/synth/lead/flute_v13.scd new file mode 100644 index 0000000..a23b6fe --- /dev/null +++ b/sound_algo/synth/lead/flute_v13.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v13.scd -- SynthDef \flute_v13 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v13, { + arg freq = 440, gate = 1, decayTime = 0.5, + cutoff = 3000, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v14.scd b/sound_algo/synth/lead/flute_v14.scd new file mode 100644 index 0000000..d072833 --- /dev/null +++ b/sound_algo/synth/lead/flute_v14.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v14.scd -- SynthDef \flute_v14 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v14, { + arg freq = 440, gate = 1, decayTime = 1.0, + cutoff = 4000, + attack = 0.001, decay = 0.2, sustain = 0.1, release = 0.5, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v15.scd b/sound_algo/synth/lead/flute_v15.scd new file mode 100644 index 0000000..996b004 --- /dev/null +++ b/sound_algo/synth/lead/flute_v15.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v15.scd -- SynthDef \flute_v15 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v15, { + arg freq = 440, gate = 1, decayTime = 1.5, + cutoff = 5000, + attack = 0.001, decay = 0.3, sustain = 0.0, release = 0.8, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.008)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v16.scd b/sound_algo/synth/lead/flute_v16.scd new file mode 100644 index 0000000..df7430b --- /dev/null +++ b/sound_algo/synth/lead/flute_v16.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v16.scd -- SynthDef \flute_v16 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v16, { + arg freq = 440, gate = 1, decayTime = 2.0, + cutoff = 6000, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.01)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v17.scd b/sound_algo/synth/lead/flute_v17.scd new file mode 100644 index 0000000..a0a1883 --- /dev/null +++ b/sound_algo/synth/lead/flute_v17.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v17.scd -- SynthDef \flute_v17 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v17, { + arg freq = 440, gate = 1, decayTime = 2.5, + cutoff = 3000, + attack = 0.001, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v18.scd b/sound_algo/synth/lead/flute_v18.scd new file mode 100644 index 0000000..a600e9d --- /dev/null +++ b/sound_algo/synth/lead/flute_v18.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v18.scd -- SynthDef \flute_v18 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v18, { + arg freq = 440, gate = 1, decayTime = 3.0, + cutoff = 4000, + attack = 0.001, decay = 0.3, sustain = 0.1, release = 0.8, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v19.scd b/sound_algo/synth/lead/flute_v19.scd new file mode 100644 index 0000000..08dccaa --- /dev/null +++ b/sound_algo/synth/lead/flute_v19.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v19.scd -- SynthDef \flute_v19 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v19, { + arg freq = 440, gate = 1, decayTime = 0.5, + cutoff = 5000, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.3, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.008)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v2.scd b/sound_algo/synth/lead/flute_v2.scd new file mode 100644 index 0000000..471f6db --- /dev/null +++ b/sound_algo/synth/lead/flute_v2.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v2.scd -- SynthDef \flute_v2 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v2, { + arg freq = 440, gate = 1, decayTime = 1.0, + cutoff = 4000, + attack = 0.001, decay = 0.2, sustain = 0.1, release = 0.5, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v3.scd b/sound_algo/synth/lead/flute_v3.scd new file mode 100644 index 0000000..25a1924 --- /dev/null +++ b/sound_algo/synth/lead/flute_v3.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v3.scd -- SynthDef \flute_v3 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v3, { + arg freq = 440, gate = 1, decayTime = 1.5, + cutoff = 5000, + attack = 0.001, decay = 0.3, sustain = 0.0, release = 0.8, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.008)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v4.scd b/sound_algo/synth/lead/flute_v4.scd new file mode 100644 index 0000000..ccfa262 --- /dev/null +++ b/sound_algo/synth/lead/flute_v4.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v4.scd -- SynthDef \flute_v4 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v4, { + arg freq = 440, gate = 1, decayTime = 2.0, + cutoff = 6000, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.01)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v5.scd b/sound_algo/synth/lead/flute_v5.scd new file mode 100644 index 0000000..de7fcf0 --- /dev/null +++ b/sound_algo/synth/lead/flute_v5.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v5.scd -- SynthDef \flute_v5 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v5, { + arg freq = 440, gate = 1, decayTime = 2.5, + cutoff = 3000, + attack = 0.001, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v6.scd b/sound_algo/synth/lead/flute_v6.scd new file mode 100644 index 0000000..1cb0f3e --- /dev/null +++ b/sound_algo/synth/lead/flute_v6.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v6.scd -- SynthDef \flute_v6 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v6, { + arg freq = 440, gate = 1, decayTime = 3.0, + cutoff = 4000, + attack = 0.001, decay = 0.3, sustain = 0.1, release = 0.8, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v7.scd b/sound_algo/synth/lead/flute_v7.scd new file mode 100644 index 0000000..99282b6 --- /dev/null +++ b/sound_algo/synth/lead/flute_v7.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v7.scd -- SynthDef \flute_v7 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v7, { + arg freq = 440, gate = 1, decayTime = 0.5, + cutoff = 5000, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.3, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.008)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v8.scd b/sound_algo/synth/lead/flute_v8.scd new file mode 100644 index 0000000..24d0537 --- /dev/null +++ b/sound_algo/synth/lead/flute_v8.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v8.scd -- SynthDef \flute_v8 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v8, { + arg freq = 440, gate = 1, decayTime = 1.0, + cutoff = 6000, + attack = 0.001, decay = 0.2, sustain = 0.1, release = 0.5, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.01)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/flute_v9.scd b/sound_algo/synth/lead/flute_v9.scd new file mode 100644 index 0000000..a6821dc --- /dev/null +++ b/sound_algo/synth/lead/flute_v9.scd @@ -0,0 +1,19 @@ +// synth/lead/flute_v9.scd -- SynthDef \flute_v9 // variation flute_lead pluck Karplus-Strong +( +SynthDef(\flute_v9, { + arg freq = 440, gate = 1, decayTime = 1.5, + cutoff = 3000, + attack = 0.001, decay = 0.3, sustain = 0.0, release = 0.8, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell.scd b/sound_algo/synth/lead/fm_bell.scd new file mode 100644 index 0000000..178bd4e --- /dev/null +++ b/sound_algo/synth/lead/fm_bell.scd @@ -0,0 +1,51 @@ +// ===================================================================== +// synth/lead/fm_bell.scd -- SynthDef \fmBell +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fmBell, { + arg freq = 220, gate = 1, + modRatio = 1.41, modIndex = 3, + cutoff = 400, // cutoff de base (bas pour dubstep) + wobbleRate = 4, // Hz (4 = 1/8 a 120 BPM) + wobbleDepth = 1800, // amplitude du wobble en Hz + wobbleShape = 0, // 0 = LFTri (smooth), 1 = LFPulse (chop) + rq = 0.25, // resonance forte (audible) + subAmt = 0.45, // niveau du sub-bass octave -1 + detune = 0.006, // detune entre 2 voix L/R + attack = 0.005, decay = 0.3, sustain = 0.4, release = 0.4, + drive = 3.5, // saturation lourde + amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var carL, carR, mod, wobble, sig, sub, env, duck, lfo; + // LFO wobble (mix tri / pulse selon shape) + lfo = SelectX.kr(wobbleShape, [ + LFTri.kr(wobbleRate), + LFPulse.kr(wobbleRate, 0, 0.5, 2, -1) + ]); + wobble = (cutoff + (lfo.range(0, 1) * wobbleDepth)).clip(80, 12000); + // FM avec carrieres detunees L/R + mod = SinOsc.ar(freq * modRatio) * freq * modIndex * 0.5; + carL = SinOsc.ar(freq * (1 - detune) + mod); + carR = SinOsc.ar(freq * (1 + detune) + mod); + // Sub-bass : octave -1 + octave -2 + harmonique 3 (epaisseur) + // sub massif typique dubstep : sub fonda + sub-sub + harmonique + sub = (SinOsc.ar(freq * 0.5) * 0.7) + + (SinOsc.ar(freq * 0.25) * 0.5) + + (SinOsc.ar(freq * 0.5, pi * 0.5) * 0.2); // legere phase shift + sub = sub * subAmt * 1.3; // boost interne + sub = sub.tanh; // soft clip pour rester contenu + sig = [carL + sub, carR + sub]; + // RLPF resonant module par le wobble + sig = RLPF.ar(sig, wobble, rq); + // Saturation lourde (le coeur du son dubstep) + sig = (sig * drive).tanh / drive.sqrt; + // Compression "tape" pour faire rentrer le sub + sig = (sig * 1.4).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), + gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); + }).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v1.scd b/sound_algo/synth/lead/fm_bell_v1.scd new file mode 100644 index 0000000..b3311f4 --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v1.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v1.scd -- SynthDef \fm_bell_v1 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v1, { + arg freq = 440, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v10.scd b/sound_algo/synth/lead/fm_bell_v10.scd new file mode 100644 index 0000000..f3ded37 --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v10.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v10.scd -- SynthDef \fm_bell_v10 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v10, { + arg freq = 440, gate = 1, + attack = 0.01, decay = 0.2, sustain = 0.2, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(7, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v11.scd b/sound_algo/synth/lead/fm_bell_v11.scd new file mode 100644 index 0000000..2738007 --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v11.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v11.scd -- SynthDef \fm_bell_v11 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v11, { + arg freq = 440, gate = 1, + attack = 0.005, decay = 0.3, sustain = 0.0, release = 1.0, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v12.scd b/sound_algo/synth/lead/fm_bell_v12.scd new file mode 100644 index 0000000..34223fb --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v12.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v12.scd -- SynthDef \fm_bell_v12 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v12, { + arg freq = 440, gate = 1, + attack = 0.01, decay = 0.5, sustain = 0.2, release = 1.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v13.scd b/sound_algo/synth/lead/fm_bell_v13.scd new file mode 100644 index 0000000..8c26f91 --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v13.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v13.scd -- SynthDef \fm_bell_v13 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v13, { + arg freq = 440, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v14.scd b/sound_algo/synth/lead/fm_bell_v14.scd new file mode 100644 index 0000000..bcb6dc7 --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v14.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v14.scd -- SynthDef \fm_bell_v14 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v14, { + arg freq = 440, gate = 1, + attack = 0.01, decay = 0.3, sustain = 0.2, release = 1.0, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v15.scd b/sound_algo/synth/lead/fm_bell_v15.scd new file mode 100644 index 0000000..98ea8ae --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v15.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v15.scd -- SynthDef \fm_bell_v15 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v15, { + arg freq = 440, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.0, release = 1.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(7, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v16.scd b/sound_algo/synth/lead/fm_bell_v16.scd new file mode 100644 index 0000000..c90d24b --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v16.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v16.scd -- SynthDef \fm_bell_v16 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v16, { + arg freq = 440, gate = 1, + attack = 0.01, decay = 0.2, sustain = 0.2, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v17.scd b/sound_algo/synth/lead/fm_bell_v17.scd new file mode 100644 index 0000000..52c271b --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v17.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v17.scd -- SynthDef \fm_bell_v17 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v17, { + arg freq = 440, gate = 1, + attack = 0.005, decay = 0.3, sustain = 0.0, release = 1.0, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v18.scd b/sound_algo/synth/lead/fm_bell_v18.scd new file mode 100644 index 0000000..adb9494 --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v18.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v18.scd -- SynthDef \fm_bell_v18 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v18, { + arg freq = 440, gate = 1, + attack = 0.01, decay = 0.5, sustain = 0.2, release = 1.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v19.scd b/sound_algo/synth/lead/fm_bell_v19.scd new file mode 100644 index 0000000..cdaf58b --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v19.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v19.scd -- SynthDef \fm_bell_v19 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v19, { + arg freq = 440, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v2.scd b/sound_algo/synth/lead/fm_bell_v2.scd new file mode 100644 index 0000000..94e5937 --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v2.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v2.scd -- SynthDef \fm_bell_v2 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v2, { + arg freq = 440, gate = 1, + attack = 0.01, decay = 0.3, sustain = 0.2, release = 1.0, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v3.scd b/sound_algo/synth/lead/fm_bell_v3.scd new file mode 100644 index 0000000..6444ce0 --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v3.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v3.scd -- SynthDef \fm_bell_v3 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v3, { + arg freq = 440, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.0, release = 1.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v4.scd b/sound_algo/synth/lead/fm_bell_v4.scd new file mode 100644 index 0000000..81af828 --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v4.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v4.scd -- SynthDef \fm_bell_v4 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v4, { + arg freq = 440, gate = 1, + attack = 0.01, decay = 0.2, sustain = 0.2, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v5.scd b/sound_algo/synth/lead/fm_bell_v5.scd new file mode 100644 index 0000000..4e624ed --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v5.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v5.scd -- SynthDef \fm_bell_v5 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v5, { + arg freq = 440, gate = 1, + attack = 0.005, decay = 0.3, sustain = 0.0, release = 1.0, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(7, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v6.scd b/sound_algo/synth/lead/fm_bell_v6.scd new file mode 100644 index 0000000..2dc5a1c --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v6.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v6.scd -- SynthDef \fm_bell_v6 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v6, { + arg freq = 440, gate = 1, + attack = 0.01, decay = 0.5, sustain = 0.2, release = 1.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v7.scd b/sound_algo/synth/lead/fm_bell_v7.scd new file mode 100644 index 0000000..a83fe8b --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v7.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v7.scd -- SynthDef \fm_bell_v7 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v7, { + arg freq = 440, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v8.scd b/sound_algo/synth/lead/fm_bell_v8.scd new file mode 100644 index 0000000..a08e239 --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v8.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v8.scd -- SynthDef \fm_bell_v8 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v8, { + arg freq = 440, gate = 1, + attack = 0.01, decay = 0.3, sustain = 0.2, release = 1.0, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_bell_v9.scd b/sound_algo/synth/lead/fm_bell_v9.scd new file mode 100644 index 0000000..6fbec95 --- /dev/null +++ b/sound_algo/synth/lead/fm_bell_v9.scd @@ -0,0 +1,22 @@ +// synth/lead/fm_bell_v9.scd -- SynthDef \fm_bell_v9 // variation fm_bell bell-like modal +( +SynthDef(\fm_bell_v9, { + arg freq = 440, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.0, release = 1.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead.scd b/sound_algo/synth/lead/fm_lead.scd new file mode 100644 index 0000000..3ebf364 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead.scd @@ -0,0 +1,24 @@ +// ===================================================================== +// synth/lead/fm_lead.scd -- SynthDef \fmLead +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\fmLead, { + arg freq = 440, gate = 1, + modRatio = 2.0, modIndex = 3, + cutoff = 6000, rq = 0.7, + attack = 0.003, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, mod, idxEnv; + // Index modulation qui decroit (caracteristique FM) + idxEnv = EnvGen.kr(Env([modIndex, modIndex * 0.3], [0.3], -3)); + mod = SinOsc.ar(freq * modRatio) * freq * idxEnv * 0.001; + sig = SinOsc.ar(freq + (mod * freq)); + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v1.scd b/sound_algo/synth/lead/fm_lead_v1.scd new file mode 100644 index 0000000..b25001d --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v1.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v1.scd -- SynthDef \fm_lead_v1 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v1, { + arg freq = 220, gate = 1, ratio = 0.5, modIndex = 50, + attack = 0.005, decay = 0.1, sustain = 0.4, release = 0.2, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.05)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v10.scd b/sound_algo/synth/lead/fm_lead_v10.scd new file mode 100644 index 0000000..1894f87 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v10.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v10.scd -- SynthDef \fm_lead_v10 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v10, { + arg freq = 220, gate = 1, ratio = 1.0, modIndex = 200, + attack = 0.005, decay = 0.1, sustain = 0.4, release = 0.2, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 1.0)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v11.scd b/sound_algo/synth/lead/fm_lead_v11.scd new file mode 100644 index 0000000..fb51a7b --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v11.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v11.scd -- SynthDef \fm_lead_v11 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v11, { + arg freq = 220, gate = 1, ratio = 1.5, modIndex = 300, + attack = 0.01, decay = 0.2, sustain = 0.5, release = 0.3, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.05)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v12.scd b/sound_algo/synth/lead/fm_lead_v12.scd new file mode 100644 index 0000000..1278030 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v12.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v12.scd -- SynthDef \fm_lead_v12 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v12, { + arg freq = 220, gate = 1, ratio = 2.0, modIndex = 500, + attack = 0.02, decay = 0.3, sustain = 0.6, release = 0.5, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.1)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v13.scd b/sound_algo/synth/lead/fm_lead_v13.scd new file mode 100644 index 0000000..1c7b451 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v13.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v13.scd -- SynthDef \fm_lead_v13 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v13, { + arg freq = 220, gate = 1, ratio = 2.5, modIndex = 700, + attack = 0.005, decay = 0.1, sustain = 0.4, release = 0.2, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.2)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v14.scd b/sound_algo/synth/lead/fm_lead_v14.scd new file mode 100644 index 0000000..a460f16 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v14.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v14.scd -- SynthDef \fm_lead_v14 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v14, { + arg freq = 220, gate = 1, ratio = 3.0, modIndex = 1000, + attack = 0.01, decay = 0.2, sustain = 0.5, release = 0.3, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.5)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v15.scd b/sound_algo/synth/lead/fm_lead_v15.scd new file mode 100644 index 0000000..2b3149e --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v15.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v15.scd -- SynthDef \fm_lead_v15 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v15, { + arg freq = 220, gate = 1, ratio = 4.0, modIndex = 50, + attack = 0.02, decay = 0.3, sustain = 0.6, release = 0.5, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 1.0)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v16.scd b/sound_algo/synth/lead/fm_lead_v16.scd new file mode 100644 index 0000000..7366b3b --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v16.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v16.scd -- SynthDef \fm_lead_v16 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v16, { + arg freq = 220, gate = 1, ratio = 0.25, modIndex = 100, + attack = 0.005, decay = 0.1, sustain = 0.4, release = 0.2, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.05)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v17.scd b/sound_algo/synth/lead/fm_lead_v17.scd new file mode 100644 index 0000000..3bc092e --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v17.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v17.scd -- SynthDef \fm_lead_v17 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v17, { + arg freq = 220, gate = 1, ratio = 0.5, modIndex = 200, + attack = 0.01, decay = 0.2, sustain = 0.5, release = 0.3, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.1)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v18.scd b/sound_algo/synth/lead/fm_lead_v18.scd new file mode 100644 index 0000000..972b5f2 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v18.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v18.scd -- SynthDef \fm_lead_v18 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v18, { + arg freq = 220, gate = 1, ratio = 1.0, modIndex = 300, + attack = 0.02, decay = 0.3, sustain = 0.6, release = 0.5, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.2)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v19.scd b/sound_algo/synth/lead/fm_lead_v19.scd new file mode 100644 index 0000000..5324533 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v19.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v19.scd -- SynthDef \fm_lead_v19 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v19, { + arg freq = 220, gate = 1, ratio = 1.5, modIndex = 500, + attack = 0.005, decay = 0.1, sustain = 0.4, release = 0.2, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.5)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v2.scd b/sound_algo/synth/lead/fm_lead_v2.scd new file mode 100644 index 0000000..9311c99 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v2.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v2.scd -- SynthDef \fm_lead_v2 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v2, { + arg freq = 220, gate = 1, ratio = 1.0, modIndex = 100, + attack = 0.01, decay = 0.2, sustain = 0.5, release = 0.3, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.1)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v3.scd b/sound_algo/synth/lead/fm_lead_v3.scd new file mode 100644 index 0000000..a70c592 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v3.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v3.scd -- SynthDef \fm_lead_v3 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v3, { + arg freq = 220, gate = 1, ratio = 1.5, modIndex = 200, + attack = 0.02, decay = 0.3, sustain = 0.6, release = 0.5, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.2)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v4.scd b/sound_algo/synth/lead/fm_lead_v4.scd new file mode 100644 index 0000000..0b58a04 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v4.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v4.scd -- SynthDef \fm_lead_v4 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v4, { + arg freq = 220, gate = 1, ratio = 2.0, modIndex = 300, + attack = 0.005, decay = 0.1, sustain = 0.4, release = 0.2, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.5)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v5.scd b/sound_algo/synth/lead/fm_lead_v5.scd new file mode 100644 index 0000000..2e9398d --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v5.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v5.scd -- SynthDef \fm_lead_v5 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v5, { + arg freq = 220, gate = 1, ratio = 2.5, modIndex = 500, + attack = 0.01, decay = 0.2, sustain = 0.5, release = 0.3, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 1.0)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v6.scd b/sound_algo/synth/lead/fm_lead_v6.scd new file mode 100644 index 0000000..b2f8230 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v6.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v6.scd -- SynthDef \fm_lead_v6 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v6, { + arg freq = 220, gate = 1, ratio = 3.0, modIndex = 700, + attack = 0.02, decay = 0.3, sustain = 0.6, release = 0.5, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.05)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v7.scd b/sound_algo/synth/lead/fm_lead_v7.scd new file mode 100644 index 0000000..bfd77ab --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v7.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v7.scd -- SynthDef \fm_lead_v7 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v7, { + arg freq = 220, gate = 1, ratio = 4.0, modIndex = 1000, + attack = 0.005, decay = 0.1, sustain = 0.4, release = 0.2, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.1)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v8.scd b/sound_algo/synth/lead/fm_lead_v8.scd new file mode 100644 index 0000000..3f90a4a --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v8.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v8.scd -- SynthDef \fm_lead_v8 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v8, { + arg freq = 220, gate = 1, ratio = 0.25, modIndex = 50, + attack = 0.01, decay = 0.2, sustain = 0.5, release = 0.3, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.2)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/fm_lead_v9.scd b/sound_algo/synth/lead/fm_lead_v9.scd new file mode 100644 index 0000000..aec5c46 --- /dev/null +++ b/sound_algo/synth/lead/fm_lead_v9.scd @@ -0,0 +1,18 @@ +// synth/lead/fm_lead_v9.scd -- SynthDef \fm_lead_v9 // variation fm_lead FM 2-op +( +SynthDef(\fm_lead_v9, { + arg freq = 220, gate = 1, ratio = 0.5, modIndex = 100, + attack = 0.02, decay = 0.3, sustain = 0.6, release = 0.5, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, mod, duck, f; + f = freq.clip(20, 8000); + mod = SinOsc.ar(f * ratio) * f * modIndex * + EnvGen.kr(Env.perc(0.001, 0.5)); + sig = SinOsc.ar(f + mod); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead.scd b/sound_algo/synth/lead/hard_lead.scd new file mode 100644 index 0000000..964e721 --- /dev/null +++ b/sound_algo/synth/lead/hard_lead.scd @@ -0,0 +1,21 @@ +// ===================================================================== +// synth/lead/hard_lead.scd -- SynthDef \hardLead +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\hardLead, { + arg freq = 440, gate = 1, syncRatio = 1.5, + cutoff = 5500, rq = 0.4, + attack = 0.002, decay = 0.08, sustain = 0.6, release = 0.25, + drive = 1.8, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + // Sync : oscillateur slave reset par master + sig = SyncSaw.ar(freq, freq * syncRatio); + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v1.scd b/sound_algo/synth/lead/hard_lead_v1.scd new file mode 100644 index 0000000..a220075 --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v1.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v1.scd -- SynthDef \hard_lead_v1 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v1, { + arg freq = 330, gate = 1, detune = 0.008, mix = 0.3, + cutoff = 3000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v10.scd b/sound_algo/synth/lead/hard_lead_v10.scd new file mode 100644 index 0000000..cd49a7b --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v10.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v10.scd -- SynthDef \hard_lead_v10 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v10, { + arg freq = 330, gate = 1, detune = 0.02, mix = 0.7, + cutoff = 6000, rq = 0.5, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v11.scd b/sound_algo/synth/lead/hard_lead_v11.scd new file mode 100644 index 0000000..baa8fca --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v11.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v11.scd -- SynthDef \hard_lead_v11 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v11, { + arg freq = 330, gate = 1, detune = 0.024, mix = 0.3, + cutoff = 7000, rq = 0.6, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v12.scd b/sound_algo/synth/lead/hard_lead_v12.scd new file mode 100644 index 0000000..2e09c9c --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v12.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v12.scd -- SynthDef \hard_lead_v12 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v12, { + arg freq = 330, gate = 1, detune = 0.028, mix = 0.4, + cutoff = 8000, rq = 0.7, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v13.scd b/sound_algo/synth/lead/hard_lead_v13.scd new file mode 100644 index 0000000..61c310a --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v13.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v13.scd -- SynthDef \hard_lead_v13 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v13, { + arg freq = 330, gate = 1, detune = 0.008, mix = 0.5, + cutoff = 3000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v14.scd b/sound_algo/synth/lead/hard_lead_v14.scd new file mode 100644 index 0000000..8ec6b37 --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v14.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v14.scd -- SynthDef \hard_lead_v14 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v14, { + arg freq = 330, gate = 1, detune = 0.012, mix = 0.6, + cutoff = 4000, rq = 0.5, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v15.scd b/sound_algo/synth/lead/hard_lead_v15.scd new file mode 100644 index 0000000..7553c0a --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v15.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v15.scd -- SynthDef \hard_lead_v15 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v15, { + arg freq = 330, gate = 1, detune = 0.016, mix = 0.7, + cutoff = 5000, rq = 0.6, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v16.scd b/sound_algo/synth/lead/hard_lead_v16.scd new file mode 100644 index 0000000..a90de8d --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v16.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v16.scd -- SynthDef \hard_lead_v16 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v16, { + arg freq = 330, gate = 1, detune = 0.02, mix = 0.3, + cutoff = 6000, rq = 0.7, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v17.scd b/sound_algo/synth/lead/hard_lead_v17.scd new file mode 100644 index 0000000..99ea859 --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v17.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v17.scd -- SynthDef \hard_lead_v17 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v17, { + arg freq = 330, gate = 1, detune = 0.024, mix = 0.4, + cutoff = 7000, rq = 0.4, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v18.scd b/sound_algo/synth/lead/hard_lead_v18.scd new file mode 100644 index 0000000..c9e98ec --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v18.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v18.scd -- SynthDef \hard_lead_v18 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v18, { + arg freq = 330, gate = 1, detune = 0.028, mix = 0.5, + cutoff = 8000, rq = 0.5, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v19.scd b/sound_algo/synth/lead/hard_lead_v19.scd new file mode 100644 index 0000000..e0c8943 --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v19.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v19.scd -- SynthDef \hard_lead_v19 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v19, { + arg freq = 330, gate = 1, detune = 0.008, mix = 0.6, + cutoff = 3000, rq = 0.6, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v2.scd b/sound_algo/synth/lead/hard_lead_v2.scd new file mode 100644 index 0000000..7810140 --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v2.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v2.scd -- SynthDef \hard_lead_v2 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v2, { + arg freq = 330, gate = 1, detune = 0.012, mix = 0.4, + cutoff = 4000, rq = 0.5, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v3.scd b/sound_algo/synth/lead/hard_lead_v3.scd new file mode 100644 index 0000000..e77c783 --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v3.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v3.scd -- SynthDef \hard_lead_v3 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v3, { + arg freq = 330, gate = 1, detune = 0.016, mix = 0.5, + cutoff = 5000, rq = 0.6, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v4.scd b/sound_algo/synth/lead/hard_lead_v4.scd new file mode 100644 index 0000000..d82c7a0 --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v4.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v4.scd -- SynthDef \hard_lead_v4 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v4, { + arg freq = 330, gate = 1, detune = 0.02, mix = 0.6, + cutoff = 6000, rq = 0.7, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v5.scd b/sound_algo/synth/lead/hard_lead_v5.scd new file mode 100644 index 0000000..f2ad1ad --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v5.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v5.scd -- SynthDef \hard_lead_v5 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v5, { + arg freq = 330, gate = 1, detune = 0.024, mix = 0.7, + cutoff = 7000, rq = 0.4, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v6.scd b/sound_algo/synth/lead/hard_lead_v6.scd new file mode 100644 index 0000000..9bbe4bb --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v6.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v6.scd -- SynthDef \hard_lead_v6 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v6, { + arg freq = 330, gate = 1, detune = 0.028, mix = 0.3, + cutoff = 8000, rq = 0.5, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v7.scd b/sound_algo/synth/lead/hard_lead_v7.scd new file mode 100644 index 0000000..96c1aa3 --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v7.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v7.scd -- SynthDef \hard_lead_v7 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v7, { + arg freq = 330, gate = 1, detune = 0.008, mix = 0.4, + cutoff = 3000, rq = 0.6, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v8.scd b/sound_algo/synth/lead/hard_lead_v8.scd new file mode 100644 index 0000000..7b73f21 --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v8.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v8.scd -- SynthDef \hard_lead_v8 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v8, { + arg freq = 330, gate = 1, detune = 0.012, mix = 0.5, + cutoff = 4000, rq = 0.7, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/hard_lead_v9.scd b/sound_algo/synth/lead/hard_lead_v9.scd new file mode 100644 index 0000000..9cf903c --- /dev/null +++ b/sound_algo/synth/lead/hard_lead_v9.scd @@ -0,0 +1,25 @@ +// synth/lead/hard_lead_v9.scd -- SynthDef \hard_lead_v9 // variation hard_lead supersaw +( +SynthDef(\hard_lead_v9, { + arg freq = 330, gate = 1, detune = 0.016, mix = 0.6, + cutoff = 5000, rq = 0.4, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead.scd b/sound_algo/synth/lead/lead.scd new file mode 100644 index 0000000..47d9c60 --- /dev/null +++ b/sound_algo/synth/lead/lead.scd @@ -0,0 +1,26 @@ +// ===================================================================== +// synth/lead/lead.scd -- SynthDef \lead +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\lead, { + arg freq = 220, gate = 1, sawAmt = 0.6, pulseWidth = 0.4, + cutoff = 2500, rq = 0.5, + attack = 0.01, decay = 0.15, sustain = 0.4, release = 0.3, + detune = 0.005, drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.5; + var oscL, oscR, sig, ampEnv, duck; + oscL = (Saw.ar(freq * (1 - detune)) * sawAmt) + + (Pulse.ar(freq * (1 - detune), pulseWidth) * (1 - sawAmt)); + oscR = (Saw.ar(freq * (1 + detune)) * sawAmt) + + (Pulse.ar(freq * (1 + detune), pulseWidth) * (1 - sawAmt)); + oscL = DelayC.ar(oscL, 0.02, SinOsc.kr(0.6, 0).range(0.001, 0.004)); + oscR = DelayC.ar(oscR, 0.02, SinOsc.kr(0.6, pi).range(0.001, 0.004)); + sig = RLPF.ar([oscL, oscR], cutoff, rq); + ampEnv = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = Balance2.ar(sig[0], sig[1], pan); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, sig * ampEnv * amp * duck); + }).add; +) diff --git a/sound_algo/synth/lead/lead_v1.scd b/sound_algo/synth/lead/lead_v1.scd new file mode 100644 index 0000000..8c6495b --- /dev/null +++ b/sound_algo/synth/lead/lead_v1.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v1.scd -- SynthDef \lead_v1 // variation lead supersaw +( +SynthDef(\lead_v1, { + arg freq = 440, gate = 1, detune = 0.008, mix = 0.3, + cutoff = 3000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v10.scd b/sound_algo/synth/lead/lead_v10.scd new file mode 100644 index 0000000..9116e6a --- /dev/null +++ b/sound_algo/synth/lead/lead_v10.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v10.scd -- SynthDef \lead_v10 // variation lead supersaw +( +SynthDef(\lead_v10, { + arg freq = 440, gate = 1, detune = 0.02, mix = 0.7, + cutoff = 6000, rq = 0.5, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v11.scd b/sound_algo/synth/lead/lead_v11.scd new file mode 100644 index 0000000..7f8c1ed --- /dev/null +++ b/sound_algo/synth/lead/lead_v11.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v11.scd -- SynthDef \lead_v11 // variation lead supersaw +( +SynthDef(\lead_v11, { + arg freq = 440, gate = 1, detune = 0.024, mix = 0.3, + cutoff = 7000, rq = 0.6, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v12.scd b/sound_algo/synth/lead/lead_v12.scd new file mode 100644 index 0000000..c9bb692 --- /dev/null +++ b/sound_algo/synth/lead/lead_v12.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v12.scd -- SynthDef \lead_v12 // variation lead supersaw +( +SynthDef(\lead_v12, { + arg freq = 440, gate = 1, detune = 0.028, mix = 0.4, + cutoff = 8000, rq = 0.7, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v13.scd b/sound_algo/synth/lead/lead_v13.scd new file mode 100644 index 0000000..4599103 --- /dev/null +++ b/sound_algo/synth/lead/lead_v13.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v13.scd -- SynthDef \lead_v13 // variation lead supersaw +( +SynthDef(\lead_v13, { + arg freq = 440, gate = 1, detune = 0.008, mix = 0.5, + cutoff = 3000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v14.scd b/sound_algo/synth/lead/lead_v14.scd new file mode 100644 index 0000000..d2d3d8c --- /dev/null +++ b/sound_algo/synth/lead/lead_v14.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v14.scd -- SynthDef \lead_v14 // variation lead supersaw +( +SynthDef(\lead_v14, { + arg freq = 440, gate = 1, detune = 0.012, mix = 0.6, + cutoff = 4000, rq = 0.5, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v15.scd b/sound_algo/synth/lead/lead_v15.scd new file mode 100644 index 0000000..836ff57 --- /dev/null +++ b/sound_algo/synth/lead/lead_v15.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v15.scd -- SynthDef \lead_v15 // variation lead supersaw +( +SynthDef(\lead_v15, { + arg freq = 440, gate = 1, detune = 0.016, mix = 0.7, + cutoff = 5000, rq = 0.6, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v16.scd b/sound_algo/synth/lead/lead_v16.scd new file mode 100644 index 0000000..e26751d --- /dev/null +++ b/sound_algo/synth/lead/lead_v16.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v16.scd -- SynthDef \lead_v16 // variation lead supersaw +( +SynthDef(\lead_v16, { + arg freq = 440, gate = 1, detune = 0.02, mix = 0.3, + cutoff = 6000, rq = 0.7, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v17.scd b/sound_algo/synth/lead/lead_v17.scd new file mode 100644 index 0000000..a2a60d2 --- /dev/null +++ b/sound_algo/synth/lead/lead_v17.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v17.scd -- SynthDef \lead_v17 // variation lead supersaw +( +SynthDef(\lead_v17, { + arg freq = 440, gate = 1, detune = 0.024, mix = 0.4, + cutoff = 7000, rq = 0.4, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v18.scd b/sound_algo/synth/lead/lead_v18.scd new file mode 100644 index 0000000..57c14d1 --- /dev/null +++ b/sound_algo/synth/lead/lead_v18.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v18.scd -- SynthDef \lead_v18 // variation lead supersaw +( +SynthDef(\lead_v18, { + arg freq = 440, gate = 1, detune = 0.028, mix = 0.5, + cutoff = 8000, rq = 0.5, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v19.scd b/sound_algo/synth/lead/lead_v19.scd new file mode 100644 index 0000000..601add6 --- /dev/null +++ b/sound_algo/synth/lead/lead_v19.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v19.scd -- SynthDef \lead_v19 // variation lead supersaw +( +SynthDef(\lead_v19, { + arg freq = 440, gate = 1, detune = 0.008, mix = 0.6, + cutoff = 3000, rq = 0.6, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v2.scd b/sound_algo/synth/lead/lead_v2.scd new file mode 100644 index 0000000..86b4df4 --- /dev/null +++ b/sound_algo/synth/lead/lead_v2.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v2.scd -- SynthDef \lead_v2 // variation lead supersaw +( +SynthDef(\lead_v2, { + arg freq = 440, gate = 1, detune = 0.012, mix = 0.4, + cutoff = 4000, rq = 0.5, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v3.scd b/sound_algo/synth/lead/lead_v3.scd new file mode 100644 index 0000000..d8ada67 --- /dev/null +++ b/sound_algo/synth/lead/lead_v3.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v3.scd -- SynthDef \lead_v3 // variation lead supersaw +( +SynthDef(\lead_v3, { + arg freq = 440, gate = 1, detune = 0.016, mix = 0.5, + cutoff = 5000, rq = 0.6, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v4.scd b/sound_algo/synth/lead/lead_v4.scd new file mode 100644 index 0000000..d4cb250 --- /dev/null +++ b/sound_algo/synth/lead/lead_v4.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v4.scd -- SynthDef \lead_v4 // variation lead supersaw +( +SynthDef(\lead_v4, { + arg freq = 440, gate = 1, detune = 0.02, mix = 0.6, + cutoff = 6000, rq = 0.7, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v5.scd b/sound_algo/synth/lead/lead_v5.scd new file mode 100644 index 0000000..0644aa7 --- /dev/null +++ b/sound_algo/synth/lead/lead_v5.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v5.scd -- SynthDef \lead_v5 // variation lead supersaw +( +SynthDef(\lead_v5, { + arg freq = 440, gate = 1, detune = 0.024, mix = 0.7, + cutoff = 7000, rq = 0.4, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v6.scd b/sound_algo/synth/lead/lead_v6.scd new file mode 100644 index 0000000..306630a --- /dev/null +++ b/sound_algo/synth/lead/lead_v6.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v6.scd -- SynthDef \lead_v6 // variation lead supersaw +( +SynthDef(\lead_v6, { + arg freq = 440, gate = 1, detune = 0.028, mix = 0.3, + cutoff = 8000, rq = 0.5, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v7.scd b/sound_algo/synth/lead/lead_v7.scd new file mode 100644 index 0000000..5f9ad4e --- /dev/null +++ b/sound_algo/synth/lead/lead_v7.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v7.scd -- SynthDef \lead_v7 // variation lead supersaw +( +SynthDef(\lead_v7, { + arg freq = 440, gate = 1, detune = 0.008, mix = 0.4, + cutoff = 3000, rq = 0.6, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v8.scd b/sound_algo/synth/lead/lead_v8.scd new file mode 100644 index 0000000..50aef80 --- /dev/null +++ b/sound_algo/synth/lead/lead_v8.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v8.scd -- SynthDef \lead_v8 // variation lead supersaw +( +SynthDef(\lead_v8, { + arg freq = 440, gate = 1, detune = 0.012, mix = 0.5, + cutoff = 4000, rq = 0.7, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/lead_v9.scd b/sound_algo/synth/lead/lead_v9.scd new file mode 100644 index 0000000..d035c41 --- /dev/null +++ b/sound_algo/synth/lead/lead_v9.scd @@ -0,0 +1,25 @@ +// synth/lead/lead_v9.scd -- SynthDef \lead_v9 // variation lead supersaw +( +SynthDef(\lead_v9, { + arg freq = 440, gate = 1, detune = 0.016, mix = 0.6, + cutoff = 5000, rq = 0.4, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead.scd b/sound_algo/synth/lead/organ_lead.scd new file mode 100644 index 0000000..cee30aa --- /dev/null +++ b/sound_algo/synth/lead/organ_lead.scd @@ -0,0 +1,25 @@ +// ===================================================================== +// synth/lead/organ_lead.scd -- SynthDef \organLead +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\organLead, { + arg freq = 440, gate = 1, + cutoff = 4500, rq = 0.5, + attack = 0.005, decay = 0.05, sustain = 0.85, release = 0.15, + drive = 1.3, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, drawbars; + // 6 drawbars : sub, fund, octave, 12th, 15th, 17th + drawbars = [0.5, 1, 2, 3, 4, 5]; + sig = Mix.fill(drawbars.size, { |i| + SinOsc.ar(freq * drawbars[i]) * (1 / (i + 1)); + }) * 0.6; + sig = LPF.ar(sig, cutoff); + sig = sig + (sig * SinOsc.kr(6.5, 0).range(0.7, 1)); // leslie tremolo leger + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v1.scd b/sound_algo/synth/lead/organ_lead_v1.scd new file mode 100644 index 0000000..ea07c97 --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v1.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v1.scd -- SynthDef \organ_lead_v1 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v1, { + arg freq = 220, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v10.scd b/sound_algo/synth/lead/organ_lead_v10.scd new file mode 100644 index 0000000..8fba60a --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v10.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v10.scd -- SynthDef \organ_lead_v10 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v10, { + arg freq = 220, gate = 1, + attack = 0.01, decay = 0.2, sustain = 0.2, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(7, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v11.scd b/sound_algo/synth/lead/organ_lead_v11.scd new file mode 100644 index 0000000..6026daa --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v11.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v11.scd -- SynthDef \organ_lead_v11 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v11, { + arg freq = 220, gate = 1, + attack = 0.005, decay = 0.3, sustain = 0.0, release = 1.0, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v12.scd b/sound_algo/synth/lead/organ_lead_v12.scd new file mode 100644 index 0000000..5c32670 --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v12.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v12.scd -- SynthDef \organ_lead_v12 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v12, { + arg freq = 220, gate = 1, + attack = 0.01, decay = 0.5, sustain = 0.2, release = 1.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v13.scd b/sound_algo/synth/lead/organ_lead_v13.scd new file mode 100644 index 0000000..cfef2d2 --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v13.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v13.scd -- SynthDef \organ_lead_v13 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v13, { + arg freq = 220, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v14.scd b/sound_algo/synth/lead/organ_lead_v14.scd new file mode 100644 index 0000000..3677442 --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v14.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v14.scd -- SynthDef \organ_lead_v14 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v14, { + arg freq = 220, gate = 1, + attack = 0.01, decay = 0.3, sustain = 0.2, release = 1.0, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v15.scd b/sound_algo/synth/lead/organ_lead_v15.scd new file mode 100644 index 0000000..fb3c3ce --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v15.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v15.scd -- SynthDef \organ_lead_v15 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v15, { + arg freq = 220, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.0, release = 1.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(7, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v16.scd b/sound_algo/synth/lead/organ_lead_v16.scd new file mode 100644 index 0000000..1e7c345 --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v16.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v16.scd -- SynthDef \organ_lead_v16 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v16, { + arg freq = 220, gate = 1, + attack = 0.01, decay = 0.2, sustain = 0.2, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v17.scd b/sound_algo/synth/lead/organ_lead_v17.scd new file mode 100644 index 0000000..8b3b85c --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v17.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v17.scd -- SynthDef \organ_lead_v17 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v17, { + arg freq = 220, gate = 1, + attack = 0.005, decay = 0.3, sustain = 0.0, release = 1.0, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v18.scd b/sound_algo/synth/lead/organ_lead_v18.scd new file mode 100644 index 0000000..36fc7d9 --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v18.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v18.scd -- SynthDef \organ_lead_v18 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v18, { + arg freq = 220, gate = 1, + attack = 0.01, decay = 0.5, sustain = 0.2, release = 1.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v19.scd b/sound_algo/synth/lead/organ_lead_v19.scd new file mode 100644 index 0000000..0b049dd --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v19.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v19.scd -- SynthDef \organ_lead_v19 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v19, { + arg freq = 220, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v2.scd b/sound_algo/synth/lead/organ_lead_v2.scd new file mode 100644 index 0000000..1c2ac86 --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v2.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v2.scd -- SynthDef \organ_lead_v2 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v2, { + arg freq = 220, gate = 1, + attack = 0.01, decay = 0.3, sustain = 0.2, release = 1.0, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v3.scd b/sound_algo/synth/lead/organ_lead_v3.scd new file mode 100644 index 0000000..8927d19 --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v3.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v3.scd -- SynthDef \organ_lead_v3 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v3, { + arg freq = 220, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.0, release = 1.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v4.scd b/sound_algo/synth/lead/organ_lead_v4.scd new file mode 100644 index 0000000..3bf56f2 --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v4.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v4.scd -- SynthDef \organ_lead_v4 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v4, { + arg freq = 220, gate = 1, + attack = 0.01, decay = 0.2, sustain = 0.2, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v5.scd b/sound_algo/synth/lead/organ_lead_v5.scd new file mode 100644 index 0000000..ae85aa0 --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v5.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v5.scd -- SynthDef \organ_lead_v5 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v5, { + arg freq = 220, gate = 1, + attack = 0.005, decay = 0.3, sustain = 0.0, release = 1.0, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(7, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v6.scd b/sound_algo/synth/lead/organ_lead_v6.scd new file mode 100644 index 0000000..27ec7cf --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v6.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v6.scd -- SynthDef \organ_lead_v6 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v6, { + arg freq = 220, gate = 1, + attack = 0.01, decay = 0.5, sustain = 0.2, release = 1.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v7.scd b/sound_algo/synth/lead/organ_lead_v7.scd new file mode 100644 index 0000000..e61d7cc --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v7.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v7.scd -- SynthDef \organ_lead_v7 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v7, { + arg freq = 220, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v8.scd b/sound_algo/synth/lead/organ_lead_v8.scd new file mode 100644 index 0000000..ca778ce --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v8.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v8.scd -- SynthDef \organ_lead_v8 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v8, { + arg freq = 220, gate = 1, + attack = 0.01, decay = 0.3, sustain = 0.2, release = 1.0, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/organ_lead_v9.scd b/sound_algo/synth/lead/organ_lead_v9.scd new file mode 100644 index 0000000..7ae322c --- /dev/null +++ b/sound_algo/synth/lead/organ_lead_v9.scd @@ -0,0 +1,22 @@ +// synth/lead/organ_lead_v9.scd -- SynthDef \organ_lead_v9 // variation organ_lead bell-like modal +( +SynthDef(\organ_lead_v9, { + arg freq = 220, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.0, release = 1.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck.scd b/sound_algo/synth/lead/pluck.scd new file mode 100644 index 0000000..9327903 --- /dev/null +++ b/sound_algo/synth/lead/pluck.scd @@ -0,0 +1,22 @@ +// ===================================================================== +// synth/lead/pluck.scd -- SynthDef \pluck +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\pluck, { + arg freq = 220, gate = 1, + cutoff = 5000, rq = 0.5, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, duck, exciter, ks; + exciter = WhiteNoise.ar(0.5) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, freq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), + gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); + }).add; +) diff --git a/sound_algo/synth/lead/pluck_v1.scd b/sound_algo/synth/lead/pluck_v1.scd new file mode 100644 index 0000000..bec1ed2 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v1.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v1.scd -- SynthDef \pluck_v1 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v1, { + arg freq = 220, gate = 1, decayTime = 0.5, + cutoff = 3000, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v10.scd b/sound_algo/synth/lead/pluck_v10.scd new file mode 100644 index 0000000..737bb5d --- /dev/null +++ b/sound_algo/synth/lead/pluck_v10.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v10.scd -- SynthDef \pluck_v10 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v10, { + arg freq = 220, gate = 1, decayTime = 2.0, + cutoff = 4000, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.3, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v11.scd b/sound_algo/synth/lead/pluck_v11.scd new file mode 100644 index 0000000..f9909ce --- /dev/null +++ b/sound_algo/synth/lead/pluck_v11.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v11.scd -- SynthDef \pluck_v11 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v11, { + arg freq = 220, gate = 1, decayTime = 2.5, + cutoff = 5000, + attack = 0.001, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.008)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v12.scd b/sound_algo/synth/lead/pluck_v12.scd new file mode 100644 index 0000000..9c5df7a --- /dev/null +++ b/sound_algo/synth/lead/pluck_v12.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v12.scd -- SynthDef \pluck_v12 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v12, { + arg freq = 220, gate = 1, decayTime = 3.0, + cutoff = 6000, + attack = 0.001, decay = 0.3, sustain = 0.1, release = 0.8, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.01)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v13.scd b/sound_algo/synth/lead/pluck_v13.scd new file mode 100644 index 0000000..c7e4e50 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v13.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v13.scd -- SynthDef \pluck_v13 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v13, { + arg freq = 220, gate = 1, decayTime = 0.5, + cutoff = 3000, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v14.scd b/sound_algo/synth/lead/pluck_v14.scd new file mode 100644 index 0000000..ebebe66 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v14.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v14.scd -- SynthDef \pluck_v14 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v14, { + arg freq = 220, gate = 1, decayTime = 1.0, + cutoff = 4000, + attack = 0.001, decay = 0.2, sustain = 0.1, release = 0.5, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v15.scd b/sound_algo/synth/lead/pluck_v15.scd new file mode 100644 index 0000000..dc7dd85 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v15.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v15.scd -- SynthDef \pluck_v15 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v15, { + arg freq = 220, gate = 1, decayTime = 1.5, + cutoff = 5000, + attack = 0.001, decay = 0.3, sustain = 0.0, release = 0.8, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.008)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v16.scd b/sound_algo/synth/lead/pluck_v16.scd new file mode 100644 index 0000000..86be2e1 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v16.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v16.scd -- SynthDef \pluck_v16 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v16, { + arg freq = 220, gate = 1, decayTime = 2.0, + cutoff = 6000, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.01)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v17.scd b/sound_algo/synth/lead/pluck_v17.scd new file mode 100644 index 0000000..4c6a349 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v17.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v17.scd -- SynthDef \pluck_v17 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v17, { + arg freq = 220, gate = 1, decayTime = 2.5, + cutoff = 3000, + attack = 0.001, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v18.scd b/sound_algo/synth/lead/pluck_v18.scd new file mode 100644 index 0000000..9419c32 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v18.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v18.scd -- SynthDef \pluck_v18 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v18, { + arg freq = 220, gate = 1, decayTime = 3.0, + cutoff = 4000, + attack = 0.001, decay = 0.3, sustain = 0.1, release = 0.8, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v19.scd b/sound_algo/synth/lead/pluck_v19.scd new file mode 100644 index 0000000..2bf6a45 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v19.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v19.scd -- SynthDef \pluck_v19 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v19, { + arg freq = 220, gate = 1, decayTime = 0.5, + cutoff = 5000, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.3, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.008)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v2.scd b/sound_algo/synth/lead/pluck_v2.scd new file mode 100644 index 0000000..63a648b --- /dev/null +++ b/sound_algo/synth/lead/pluck_v2.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v2.scd -- SynthDef \pluck_v2 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v2, { + arg freq = 220, gate = 1, decayTime = 1.0, + cutoff = 4000, + attack = 0.001, decay = 0.2, sustain = 0.1, release = 0.5, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v3.scd b/sound_algo/synth/lead/pluck_v3.scd new file mode 100644 index 0000000..830c6be --- /dev/null +++ b/sound_algo/synth/lead/pluck_v3.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v3.scd -- SynthDef \pluck_v3 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v3, { + arg freq = 220, gate = 1, decayTime = 1.5, + cutoff = 5000, + attack = 0.001, decay = 0.3, sustain = 0.0, release = 0.8, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.008)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v4.scd b/sound_algo/synth/lead/pluck_v4.scd new file mode 100644 index 0000000..551c53b --- /dev/null +++ b/sound_algo/synth/lead/pluck_v4.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v4.scd -- SynthDef \pluck_v4 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v4, { + arg freq = 220, gate = 1, decayTime = 2.0, + cutoff = 6000, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.01)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v5.scd b/sound_algo/synth/lead/pluck_v5.scd new file mode 100644 index 0000000..175b996 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v5.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v5.scd -- SynthDef \pluck_v5 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v5, { + arg freq = 220, gate = 1, decayTime = 2.5, + cutoff = 3000, + attack = 0.001, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v6.scd b/sound_algo/synth/lead/pluck_v6.scd new file mode 100644 index 0000000..2acd194 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v6.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v6.scd -- SynthDef \pluck_v6 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v6, { + arg freq = 220, gate = 1, decayTime = 3.0, + cutoff = 4000, + attack = 0.001, decay = 0.3, sustain = 0.1, release = 0.8, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v7.scd b/sound_algo/synth/lead/pluck_v7.scd new file mode 100644 index 0000000..fafd7dd --- /dev/null +++ b/sound_algo/synth/lead/pluck_v7.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v7.scd -- SynthDef \pluck_v7 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v7, { + arg freq = 220, gate = 1, decayTime = 0.5, + cutoff = 5000, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.3, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.008)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v8.scd b/sound_algo/synth/lead/pluck_v8.scd new file mode 100644 index 0000000..77e6643 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v8.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v8.scd -- SynthDef \pluck_v8 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v8, { + arg freq = 220, gate = 1, decayTime = 1.0, + cutoff = 6000, + attack = 0.001, decay = 0.2, sustain = 0.1, release = 0.5, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.01)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/pluck_v9.scd b/sound_algo/synth/lead/pluck_v9.scd new file mode 100644 index 0000000..bab5530 --- /dev/null +++ b/sound_algo/synth/lead/pluck_v9.scd @@ -0,0 +1,19 @@ +// synth/lead/pluck_v9.scd -- SynthDef \pluck_v9 // variation pluck pluck Karplus-Strong +( +SynthDef(\pluck_v9, { + arg freq = 220, gate = 1, decayTime = 1.5, + cutoff = 3000, + attack = 0.001, decay = 0.3, sustain = 0.0, release = 0.8, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, exciter, ks, duck, f; + f = freq.clip(30, 6000); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, f.reciprocal, decayTime)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes.scd b/sound_algo/synth/lead/rhodes.scd new file mode 100644 index 0000000..522fee4 --- /dev/null +++ b/sound_algo/synth/lead/rhodes.scd @@ -0,0 +1,26 @@ +// ===================================================================== +// synth/lead/rhodes.scd -- SynthDef \rhodes +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\rhodes, { + arg freq = 440, gate = 1, + modRatio = 14, modIndex = 0.4, // Rhodes : 14:1 ratio + cutoff = 4000, rq = 0.6, + attack = 0.002, decay = 0.2, sustain = 0.0, release = 0.8, + drive = 1.1, amp = 0.20, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, mod, idxEnv, chorus; + idxEnv = EnvGen.kr(Env([modIndex * 2, 0], [0.4], -3)); + mod = SinOsc.ar(freq * modRatio) * freq * idxEnv; + sig = SinOsc.ar(freq + (mod * 0.5)); + sig = LPF.ar(sig, cutoff); + chorus = DelayC.ar(sig, 0.02, SinOsc.kr(0.7).range(0.002, 0.012)); + sig = sig + (chorus * 0.4); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release, curve: -4), + gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v1.scd b/sound_algo/synth/lead/rhodes_v1.scd new file mode 100644 index 0000000..f1af2ab --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v1.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v1.scd -- SynthDef \rhodes_v1 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v1, { + arg freq = 330, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v10.scd b/sound_algo/synth/lead/rhodes_v10.scd new file mode 100644 index 0000000..5ce4981 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v10.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v10.scd -- SynthDef \rhodes_v10 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v10, { + arg freq = 330, gate = 1, + attack = 0.01, decay = 0.2, sustain = 0.2, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(7, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v11.scd b/sound_algo/synth/lead/rhodes_v11.scd new file mode 100644 index 0000000..fa1012e --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v11.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v11.scd -- SynthDef \rhodes_v11 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v11, { + arg freq = 330, gate = 1, + attack = 0.005, decay = 0.3, sustain = 0.0, release = 1.0, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v12.scd b/sound_algo/synth/lead/rhodes_v12.scd new file mode 100644 index 0000000..e6a40d7 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v12.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v12.scd -- SynthDef \rhodes_v12 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v12, { + arg freq = 330, gate = 1, + attack = 0.01, decay = 0.5, sustain = 0.2, release = 1.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v13.scd b/sound_algo/synth/lead/rhodes_v13.scd new file mode 100644 index 0000000..5ca34a7 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v13.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v13.scd -- SynthDef \rhodes_v13 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v13, { + arg freq = 330, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v14.scd b/sound_algo/synth/lead/rhodes_v14.scd new file mode 100644 index 0000000..1815ac5 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v14.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v14.scd -- SynthDef \rhodes_v14 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v14, { + arg freq = 330, gate = 1, + attack = 0.01, decay = 0.3, sustain = 0.2, release = 1.0, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v15.scd b/sound_algo/synth/lead/rhodes_v15.scd new file mode 100644 index 0000000..8a54030 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v15.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v15.scd -- SynthDef \rhodes_v15 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v15, { + arg freq = 330, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.0, release = 1.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(7, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v16.scd b/sound_algo/synth/lead/rhodes_v16.scd new file mode 100644 index 0000000..79e09c6 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v16.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v16.scd -- SynthDef \rhodes_v16 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v16, { + arg freq = 330, gate = 1, + attack = 0.01, decay = 0.2, sustain = 0.2, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v17.scd b/sound_algo/synth/lead/rhodes_v17.scd new file mode 100644 index 0000000..e048dc3 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v17.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v17.scd -- SynthDef \rhodes_v17 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v17, { + arg freq = 330, gate = 1, + attack = 0.005, decay = 0.3, sustain = 0.0, release = 1.0, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v18.scd b/sound_algo/synth/lead/rhodes_v18.scd new file mode 100644 index 0000000..93c3a3b --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v18.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v18.scd -- SynthDef \rhodes_v18 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v18, { + arg freq = 330, gate = 1, + attack = 0.01, decay = 0.5, sustain = 0.2, release = 1.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v19.scd b/sound_algo/synth/lead/rhodes_v19.scd new file mode 100644 index 0000000..9514816 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v19.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v19.scd -- SynthDef \rhodes_v19 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v19, { + arg freq = 330, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v2.scd b/sound_algo/synth/lead/rhodes_v2.scd new file mode 100644 index 0000000..f7e5c5d --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v2.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v2.scd -- SynthDef \rhodes_v2 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v2, { + arg freq = 330, gate = 1, + attack = 0.01, decay = 0.3, sustain = 0.2, release = 1.0, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v3.scd b/sound_algo/synth/lead/rhodes_v3.scd new file mode 100644 index 0000000..8b7b7b4 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v3.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v3.scd -- SynthDef \rhodes_v3 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v3, { + arg freq = 330, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.0, release = 1.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v4.scd b/sound_algo/synth/lead/rhodes_v4.scd new file mode 100644 index 0000000..0ef2b28 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v4.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v4.scd -- SynthDef \rhodes_v4 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v4, { + arg freq = 330, gate = 1, + attack = 0.01, decay = 0.2, sustain = 0.2, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v5.scd b/sound_algo/synth/lead/rhodes_v5.scd new file mode 100644 index 0000000..b713089 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v5.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v5.scd -- SynthDef \rhodes_v5 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v5, { + arg freq = 330, gate = 1, + attack = 0.005, decay = 0.3, sustain = 0.0, release = 1.0, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(7, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v6.scd b/sound_algo/synth/lead/rhodes_v6.scd new file mode 100644 index 0000000..5f7967c --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v6.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v6.scd -- SynthDef \rhodes_v6 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v6, { + arg freq = 330, gate = 1, + attack = 0.01, decay = 0.5, sustain = 0.2, release = 1.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(3, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v7.scd b/sound_algo/synth/lead/rhodes_v7.scd new file mode 100644 index 0000000..4db6de4 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v7.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v7.scd -- SynthDef \rhodes_v7 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v7, { + arg freq = 330, gate = 1, + attack = 0.005, decay = 0.2, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(4, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v8.scd b/sound_algo/synth/lead/rhodes_v8.scd new file mode 100644 index 0000000..8ef4a63 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v8.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v8.scd -- SynthDef \rhodes_v8 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v8, { + arg freq = 330, gate = 1, + attack = 0.01, decay = 0.3, sustain = 0.2, release = 1.0, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(5, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/rhodes_v9.scd b/sound_algo/synth/lead/rhodes_v9.scd new file mode 100644 index 0000000..b873c66 --- /dev/null +++ b/sound_algo/synth/lead/rhodes_v9.scd @@ -0,0 +1,22 @@ +// synth/lead/rhodes_v9.scd -- SynthDef \rhodes_v9 // variation rhodes bell-like modal +( +SynthDef(\rhodes_v9, { + arg freq = 330, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.0, release = 1.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, parts, duck, f; + f = freq.clip(40, 6000); + parts = Mix.fill(6, { |i| + var ratio = [1, 2.01, 2.97, 4.03, 5.21, 6.43, 7.58][i]; + var amp = 1 / (i + 1); + SinOsc.ar(f * ratio) * amp * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 / (i * 0.3 + 1)))) + }); + sig = parts * 0.25; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/saw3.scd b/sound_algo/synth/lead/saw3.scd new file mode 100644 index 0000000..9d3eff6 --- /dev/null +++ b/sound_algo/synth/lead/saw3.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// synth/lead/saw3.scd -- SynthDef \saw3 +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\saw3, { + arg freq = 220, gate = 1, + cutoff = 2200, rq = 0.4, + attack = 0.005, decay = 0.12, sustain = 0.5, release = 0.25, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, duck; + sig = (Saw.ar(freq * 0.5) * 0.35) + + (Saw.ar(freq) * 0.55) + + (Saw.ar(freq * 2) * 0.25); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), + gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); + }).add; +) diff --git a/sound_algo/synth/lead/saw3_v1.scd b/sound_algo/synth/lead/saw3_v1.scd new file mode 100644 index 0000000..2fc8edc --- /dev/null +++ b/sound_algo/synth/lead/saw3_v1.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v1.scd -- SynthDef \saw3_v1 // variation saw3 supersaw +( +SynthDef(\saw3_v1, { + arg freq = 200, gate = 1, detune = 0.008, mix = 0.3, + cutoff = 3000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v10.scd b/sound_algo/synth/lead/saw3_v10.scd new file mode 100644 index 0000000..79c2475 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v10.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v10.scd -- SynthDef \saw3_v10 // variation saw3 supersaw +( +SynthDef(\saw3_v10, { + arg freq = 200, gate = 1, detune = 0.02, mix = 0.7, + cutoff = 6000, rq = 0.5, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v11.scd b/sound_algo/synth/lead/saw3_v11.scd new file mode 100644 index 0000000..b230ddf --- /dev/null +++ b/sound_algo/synth/lead/saw3_v11.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v11.scd -- SynthDef \saw3_v11 // variation saw3 supersaw +( +SynthDef(\saw3_v11, { + arg freq = 200, gate = 1, detune = 0.024, mix = 0.3, + cutoff = 7000, rq = 0.6, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v12.scd b/sound_algo/synth/lead/saw3_v12.scd new file mode 100644 index 0000000..49e41d6 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v12.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v12.scd -- SynthDef \saw3_v12 // variation saw3 supersaw +( +SynthDef(\saw3_v12, { + arg freq = 200, gate = 1, detune = 0.028, mix = 0.4, + cutoff = 8000, rq = 0.7, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v13.scd b/sound_algo/synth/lead/saw3_v13.scd new file mode 100644 index 0000000..fb4cb44 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v13.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v13.scd -- SynthDef \saw3_v13 // variation saw3 supersaw +( +SynthDef(\saw3_v13, { + arg freq = 200, gate = 1, detune = 0.008, mix = 0.5, + cutoff = 3000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v14.scd b/sound_algo/synth/lead/saw3_v14.scd new file mode 100644 index 0000000..e488b7d --- /dev/null +++ b/sound_algo/synth/lead/saw3_v14.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v14.scd -- SynthDef \saw3_v14 // variation saw3 supersaw +( +SynthDef(\saw3_v14, { + arg freq = 200, gate = 1, detune = 0.012, mix = 0.6, + cutoff = 4000, rq = 0.5, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v15.scd b/sound_algo/synth/lead/saw3_v15.scd new file mode 100644 index 0000000..41af269 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v15.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v15.scd -- SynthDef \saw3_v15 // variation saw3 supersaw +( +SynthDef(\saw3_v15, { + arg freq = 200, gate = 1, detune = 0.016, mix = 0.7, + cutoff = 5000, rq = 0.6, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v16.scd b/sound_algo/synth/lead/saw3_v16.scd new file mode 100644 index 0000000..e9c130c --- /dev/null +++ b/sound_algo/synth/lead/saw3_v16.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v16.scd -- SynthDef \saw3_v16 // variation saw3 supersaw +( +SynthDef(\saw3_v16, { + arg freq = 200, gate = 1, detune = 0.02, mix = 0.3, + cutoff = 6000, rq = 0.7, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v17.scd b/sound_algo/synth/lead/saw3_v17.scd new file mode 100644 index 0000000..701e989 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v17.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v17.scd -- SynthDef \saw3_v17 // variation saw3 supersaw +( +SynthDef(\saw3_v17, { + arg freq = 200, gate = 1, detune = 0.024, mix = 0.4, + cutoff = 7000, rq = 0.4, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v18.scd b/sound_algo/synth/lead/saw3_v18.scd new file mode 100644 index 0000000..d976b7e --- /dev/null +++ b/sound_algo/synth/lead/saw3_v18.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v18.scd -- SynthDef \saw3_v18 // variation saw3 supersaw +( +SynthDef(\saw3_v18, { + arg freq = 200, gate = 1, detune = 0.028, mix = 0.5, + cutoff = 8000, rq = 0.5, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v19.scd b/sound_algo/synth/lead/saw3_v19.scd new file mode 100644 index 0000000..28ae4c3 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v19.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v19.scd -- SynthDef \saw3_v19 // variation saw3 supersaw +( +SynthDef(\saw3_v19, { + arg freq = 200, gate = 1, detune = 0.008, mix = 0.6, + cutoff = 3000, rq = 0.6, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v2.scd b/sound_algo/synth/lead/saw3_v2.scd new file mode 100644 index 0000000..ede2b20 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v2.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v2.scd -- SynthDef \saw3_v2 // variation saw3 supersaw +( +SynthDef(\saw3_v2, { + arg freq = 200, gate = 1, detune = 0.012, mix = 0.4, + cutoff = 4000, rq = 0.5, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v3.scd b/sound_algo/synth/lead/saw3_v3.scd new file mode 100644 index 0000000..1de1239 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v3.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v3.scd -- SynthDef \saw3_v3 // variation saw3 supersaw +( +SynthDef(\saw3_v3, { + arg freq = 200, gate = 1, detune = 0.016, mix = 0.5, + cutoff = 5000, rq = 0.6, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v4.scd b/sound_algo/synth/lead/saw3_v4.scd new file mode 100644 index 0000000..c4e42b5 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v4.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v4.scd -- SynthDef \saw3_v4 // variation saw3 supersaw +( +SynthDef(\saw3_v4, { + arg freq = 200, gate = 1, detune = 0.02, mix = 0.6, + cutoff = 6000, rq = 0.7, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v5.scd b/sound_algo/synth/lead/saw3_v5.scd new file mode 100644 index 0000000..f7ff246 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v5.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v5.scd -- SynthDef \saw3_v5 // variation saw3 supersaw +( +SynthDef(\saw3_v5, { + arg freq = 200, gate = 1, detune = 0.024, mix = 0.7, + cutoff = 7000, rq = 0.4, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v6.scd b/sound_algo/synth/lead/saw3_v6.scd new file mode 100644 index 0000000..0d59ec6 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v6.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v6.scd -- SynthDef \saw3_v6 // variation saw3 supersaw +( +SynthDef(\saw3_v6, { + arg freq = 200, gate = 1, detune = 0.028, mix = 0.3, + cutoff = 8000, rq = 0.5, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v7.scd b/sound_algo/synth/lead/saw3_v7.scd new file mode 100644 index 0000000..ddcec3e --- /dev/null +++ b/sound_algo/synth/lead/saw3_v7.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v7.scd -- SynthDef \saw3_v7 // variation saw3 supersaw +( +SynthDef(\saw3_v7, { + arg freq = 200, gate = 1, detune = 0.008, mix = 0.4, + cutoff = 3000, rq = 0.6, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v8.scd b/sound_algo/synth/lead/saw3_v8.scd new file mode 100644 index 0000000..c57c626 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v8.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v8.scd -- SynthDef \saw3_v8 // variation saw3 supersaw +( +SynthDef(\saw3_v8, { + arg freq = 200, gate = 1, detune = 0.012, mix = 0.5, + cutoff = 4000, rq = 0.7, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/saw3_v9.scd b/sound_algo/synth/lead/saw3_v9.scd new file mode 100644 index 0000000..275f1c0 --- /dev/null +++ b/sound_algo/synth/lead/saw3_v9.scd @@ -0,0 +1,25 @@ +// synth/lead/saw3_v9.scd -- SynthDef \saw3_v9 // variation saw3 supersaw +( +SynthDef(\saw3_v9, { + arg freq = 200, gate = 1, detune = 0.016, mix = 0.6, + cutoff = 5000, rq = 0.4, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead.scd b/sound_algo/synth/lead/square_lead.scd new file mode 100644 index 0000000..5f74f9d --- /dev/null +++ b/sound_algo/synth/lead/square_lead.scd @@ -0,0 +1,21 @@ +// ===================================================================== +// synth/lead/square_lead.scd -- SynthDef \squareLead +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\squareLead, { + arg freq = 440, gate = 1, pwmRate = 0.5, pwmDepth = 0.3, + cutoff = 5000, rq = 0.6, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.25, + drive = 1.4, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, pw; + pw = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq, pw); + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v1.scd b/sound_algo/synth/lead/square_lead_v1.scd new file mode 100644 index 0000000..8b826c7 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v1.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v1.scd -- SynthDef \square_lead_v1 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v1, { + arg freq = 220, gate = 1, pwmRate = 0.5, pwmDepth = 0.1, + cutoff = 3000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v10.scd b/sound_algo/synth/lead/square_lead_v10.scd new file mode 100644 index 0000000..2f855fc --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v10.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v10.scd -- SynthDef \square_lead_v10 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v10, { + arg freq = 220, gate = 1, pwmRate = 3.0, pwmDepth = 0.2, + cutoff = 4000, rq = 0.4, + attack = 0.01, decay = 0.1, sustain = 0.5, release = 0.5, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v11.scd b/sound_algo/synth/lead/square_lead_v11.scd new file mode 100644 index 0000000..7f8d0a2 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v11.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v11.scd -- SynthDef \square_lead_v11 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v11, { + arg freq = 220, gate = 1, pwmRate = 4.0, pwmDepth = 0.3, + cutoff = 5000, rq = 0.5, + attack = 0.005, decay = 0.2, sustain = 0.6, release = 0.3, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v12.scd b/sound_algo/synth/lead/square_lead_v12.scd new file mode 100644 index 0000000..bcdd5ff --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v12.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v12.scd -- SynthDef \square_lead_v12 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v12, { + arg freq = 220, gate = 1, pwmRate = 6.0, pwmDepth = 0.4, + cutoff = 6000, rq = 0.6, + attack = 0.01, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v13.scd b/sound_algo/synth/lead/square_lead_v13.scd new file mode 100644 index 0000000..895dc59 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v13.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v13.scd -- SynthDef \square_lead_v13 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v13, { + arg freq = 220, gate = 1, pwmRate = 0.5, pwmDepth = 0.1, + cutoff = 3000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v14.scd b/sound_algo/synth/lead/square_lead_v14.scd new file mode 100644 index 0000000..e976a78 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v14.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v14.scd -- SynthDef \square_lead_v14 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v14, { + arg freq = 220, gate = 1, pwmRate = 1.0, pwmDepth = 0.2, + cutoff = 4000, rq = 0.5, + attack = 0.01, decay = 0.2, sustain = 0.6, release = 0.5, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v15.scd b/sound_algo/synth/lead/square_lead_v15.scd new file mode 100644 index 0000000..e5a892d --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v15.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v15.scd -- SynthDef \square_lead_v15 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v15, { + arg freq = 220, gate = 1, pwmRate = 2.0, pwmDepth = 0.3, + cutoff = 5000, rq = 0.6, + attack = 0.005, decay = 0.3, sustain = 0.7, release = 0.3, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v16.scd b/sound_algo/synth/lead/square_lead_v16.scd new file mode 100644 index 0000000..92a9b79 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v16.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v16.scd -- SynthDef \square_lead_v16 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v16, { + arg freq = 220, gate = 1, pwmRate = 3.0, pwmDepth = 0.4, + cutoff = 6000, rq = 0.4, + attack = 0.01, decay = 0.1, sustain = 0.5, release = 0.5, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v17.scd b/sound_algo/synth/lead/square_lead_v17.scd new file mode 100644 index 0000000..a6c19a2 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v17.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v17.scd -- SynthDef \square_lead_v17 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v17, { + arg freq = 220, gate = 1, pwmRate = 4.0, pwmDepth = 0.1, + cutoff = 3000, rq = 0.5, + attack = 0.005, decay = 0.2, sustain = 0.6, release = 0.3, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v18.scd b/sound_algo/synth/lead/square_lead_v18.scd new file mode 100644 index 0000000..d4c968b --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v18.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v18.scd -- SynthDef \square_lead_v18 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v18, { + arg freq = 220, gate = 1, pwmRate = 6.0, pwmDepth = 0.2, + cutoff = 4000, rq = 0.6, + attack = 0.01, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v19.scd b/sound_algo/synth/lead/square_lead_v19.scd new file mode 100644 index 0000000..1edaddc --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v19.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v19.scd -- SynthDef \square_lead_v19 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v19, { + arg freq = 220, gate = 1, pwmRate = 0.5, pwmDepth = 0.3, + cutoff = 5000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v2.scd b/sound_algo/synth/lead/square_lead_v2.scd new file mode 100644 index 0000000..3ff2359 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v2.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v2.scd -- SynthDef \square_lead_v2 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v2, { + arg freq = 220, gate = 1, pwmRate = 1.0, pwmDepth = 0.2, + cutoff = 4000, rq = 0.5, + attack = 0.01, decay = 0.2, sustain = 0.6, release = 0.5, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v3.scd b/sound_algo/synth/lead/square_lead_v3.scd new file mode 100644 index 0000000..b4c725f --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v3.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v3.scd -- SynthDef \square_lead_v3 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v3, { + arg freq = 220, gate = 1, pwmRate = 2.0, pwmDepth = 0.3, + cutoff = 5000, rq = 0.6, + attack = 0.005, decay = 0.3, sustain = 0.7, release = 0.3, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v4.scd b/sound_algo/synth/lead/square_lead_v4.scd new file mode 100644 index 0000000..e87a309 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v4.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v4.scd -- SynthDef \square_lead_v4 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v4, { + arg freq = 220, gate = 1, pwmRate = 3.0, pwmDepth = 0.4, + cutoff = 6000, rq = 0.4, + attack = 0.01, decay = 0.1, sustain = 0.5, release = 0.5, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v5.scd b/sound_algo/synth/lead/square_lead_v5.scd new file mode 100644 index 0000000..c137683 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v5.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v5.scd -- SynthDef \square_lead_v5 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v5, { + arg freq = 220, gate = 1, pwmRate = 4.0, pwmDepth = 0.1, + cutoff = 3000, rq = 0.5, + attack = 0.005, decay = 0.2, sustain = 0.6, release = 0.3, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v6.scd b/sound_algo/synth/lead/square_lead_v6.scd new file mode 100644 index 0000000..b5a1b20 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v6.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v6.scd -- SynthDef \square_lead_v6 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v6, { + arg freq = 220, gate = 1, pwmRate = 6.0, pwmDepth = 0.2, + cutoff = 4000, rq = 0.6, + attack = 0.01, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v7.scd b/sound_algo/synth/lead/square_lead_v7.scd new file mode 100644 index 0000000..a2341f8 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v7.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v7.scd -- SynthDef \square_lead_v7 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v7, { + arg freq = 220, gate = 1, pwmRate = 0.5, pwmDepth = 0.3, + cutoff = 5000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v8.scd b/sound_algo/synth/lead/square_lead_v8.scd new file mode 100644 index 0000000..8e551ac --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v8.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v8.scd -- SynthDef \square_lead_v8 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v8, { + arg freq = 220, gate = 1, pwmRate = 1.0, pwmDepth = 0.4, + cutoff = 6000, rq = 0.5, + attack = 0.01, decay = 0.2, sustain = 0.6, release = 0.5, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/square_lead_v9.scd b/sound_algo/synth/lead/square_lead_v9.scd new file mode 100644 index 0000000..bbe7750 --- /dev/null +++ b/sound_algo/synth/lead/square_lead_v9.scd @@ -0,0 +1,18 @@ +// synth/lead/square_lead_v9.scd -- SynthDef \square_lead_v9 // variation square_lead pulse PWM +( +SynthDef(\square_lead_v9, { + arg freq = 220, gate = 1, pwmRate = 2.0, pwmDepth = 0.1, + cutoff = 3000, rq = 0.6, + attack = 0.005, decay = 0.3, sustain = 0.7, release = 0.3, + drive = 1.5, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, pwm, duck; + pwm = SinOsc.kr(pwmRate).range(0.5 - pwmDepth, 0.5 + pwmDepth); + sig = Pulse.ar(freq.clip(20, 8000), pwm); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab.scd b/sound_algo/synth/lead/stab.scd new file mode 100644 index 0000000..19328e1 --- /dev/null +++ b/sound_algo/synth/lead/stab.scd @@ -0,0 +1,22 @@ +// ===================================================================== +// synth/lead/stab.scd -- SynthDef \stab +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\stab, { + arg freq = 220, gate = 1, sawAmt = 0.7, + cutoff = 1500, rq = 0.3, + attack = 0.001, decay = 0.04, sustain = 0.0, release = 0.06, + drive = 2.8, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.5; + var sig, env, duck; + sig = (Saw.ar(freq) * sawAmt) + + (Pulse.ar(freq * 1.005, 0.3) * (1 - sawAmt)); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release, curve: -3), + gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); + }).add; +) diff --git a/sound_algo/synth/lead/stab_v1.scd b/sound_algo/synth/lead/stab_v1.scd new file mode 100644 index 0000000..915897f --- /dev/null +++ b/sound_algo/synth/lead/stab_v1.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v1.scd -- SynthDef \stab_v1 // variation stab stab court +( +SynthDef(\stab_v1, { + arg freq = 220, gate = 1, + cutoff = 400, cutoffEnv = 2000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.1, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Saw.ar(freq), Saw.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.05), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v10.scd b/sound_algo/synth/lead/stab_v10.scd new file mode 100644 index 0000000..bcad444 --- /dev/null +++ b/sound_algo/synth/lead/stab_v10.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v10.scd -- SynthDef \stab_v10 // variation stab stab court +( +SynthDef(\stab_v10, { + arg freq = 220, gate = 1, + cutoff = 600, cutoffEnv = 3000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.2, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Pulse.ar(freq), Pulse.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.1), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v11.scd b/sound_algo/synth/lead/stab_v11.scd new file mode 100644 index 0000000..821cf47 --- /dev/null +++ b/sound_algo/synth/lead/stab_v11.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v11.scd -- SynthDef \stab_v11 // variation stab stab court +( +SynthDef(\stab_v11, { + arg freq = 220, gate = 1, + cutoff = 800, cutoffEnv = 4000, rq = 0.4, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.1, + drive = 2.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Saw.ar(freq), Saw.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.15), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v12.scd b/sound_algo/synth/lead/stab_v12.scd new file mode 100644 index 0000000..6d68fce --- /dev/null +++ b/sound_algo/synth/lead/stab_v12.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v12.scd -- SynthDef \stab_v12 // variation stab stab court +( +SynthDef(\stab_v12, { + arg freq = 220, gate = 1, + cutoff = 1000, cutoffEnv = 5000, rq = 0.5, + attack = 0.001, decay = 0.15, sustain = 0.1, release = 0.2, + drive = 3.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Pulse.ar(freq), Pulse.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.2), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v13.scd b/sound_algo/synth/lead/stab_v13.scd new file mode 100644 index 0000000..827fdd9 --- /dev/null +++ b/sound_algo/synth/lead/stab_v13.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v13.scd -- SynthDef \stab_v13 // variation stab stab court +( +SynthDef(\stab_v13, { + arg freq = 220, gate = 1, + cutoff = 400, cutoffEnv = 2000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.1, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Saw.ar(freq), Saw.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.05), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v14.scd b/sound_algo/synth/lead/stab_v14.scd new file mode 100644 index 0000000..eb583da --- /dev/null +++ b/sound_algo/synth/lead/stab_v14.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v14.scd -- SynthDef \stab_v14 // variation stab stab court +( +SynthDef(\stab_v14, { + arg freq = 220, gate = 1, + cutoff = 600, cutoffEnv = 3000, rq = 0.4, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.2, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Pulse.ar(freq), Pulse.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.1), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v15.scd b/sound_algo/synth/lead/stab_v15.scd new file mode 100644 index 0000000..7602e39 --- /dev/null +++ b/sound_algo/synth/lead/stab_v15.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v15.scd -- SynthDef \stab_v15 // variation stab stab court +( +SynthDef(\stab_v15, { + arg freq = 220, gate = 1, + cutoff = 800, cutoffEnv = 4000, rq = 0.5, + attack = 0.001, decay = 0.15, sustain = 0.0, release = 0.1, + drive = 2.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Saw.ar(freq), Saw.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.15), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v16.scd b/sound_algo/synth/lead/stab_v16.scd new file mode 100644 index 0000000..8c8fbb8 --- /dev/null +++ b/sound_algo/synth/lead/stab_v16.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v16.scd -- SynthDef \stab_v16 // variation stab stab court +( +SynthDef(\stab_v16, { + arg freq = 220, gate = 1, + cutoff = 1000, cutoffEnv = 5000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.2, + drive = 3.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Pulse.ar(freq), Pulse.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.2), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v17.scd b/sound_algo/synth/lead/stab_v17.scd new file mode 100644 index 0000000..42fdfbc --- /dev/null +++ b/sound_algo/synth/lead/stab_v17.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v17.scd -- SynthDef \stab_v17 // variation stab stab court +( +SynthDef(\stab_v17, { + arg freq = 220, gate = 1, + cutoff = 400, cutoffEnv = 2000, rq = 0.4, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.1, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Saw.ar(freq), Saw.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.05), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v18.scd b/sound_algo/synth/lead/stab_v18.scd new file mode 100644 index 0000000..252fd54 --- /dev/null +++ b/sound_algo/synth/lead/stab_v18.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v18.scd -- SynthDef \stab_v18 // variation stab stab court +( +SynthDef(\stab_v18, { + arg freq = 220, gate = 1, + cutoff = 600, cutoffEnv = 3000, rq = 0.5, + attack = 0.001, decay = 0.15, sustain = 0.1, release = 0.2, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Pulse.ar(freq), Pulse.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.1), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v19.scd b/sound_algo/synth/lead/stab_v19.scd new file mode 100644 index 0000000..46d245e --- /dev/null +++ b/sound_algo/synth/lead/stab_v19.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v19.scd -- SynthDef \stab_v19 // variation stab stab court +( +SynthDef(\stab_v19, { + arg freq = 220, gate = 1, + cutoff = 800, cutoffEnv = 4000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.1, + drive = 2.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Saw.ar(freq), Saw.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.15), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v2.scd b/sound_algo/synth/lead/stab_v2.scd new file mode 100644 index 0000000..93088da --- /dev/null +++ b/sound_algo/synth/lead/stab_v2.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v2.scd -- SynthDef \stab_v2 // variation stab stab court +( +SynthDef(\stab_v2, { + arg freq = 220, gate = 1, + cutoff = 600, cutoffEnv = 3000, rq = 0.4, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.2, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Pulse.ar(freq), Pulse.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.1), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v3.scd b/sound_algo/synth/lead/stab_v3.scd new file mode 100644 index 0000000..3bbccb7 --- /dev/null +++ b/sound_algo/synth/lead/stab_v3.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v3.scd -- SynthDef \stab_v3 // variation stab stab court +( +SynthDef(\stab_v3, { + arg freq = 220, gate = 1, + cutoff = 800, cutoffEnv = 4000, rq = 0.5, + attack = 0.001, decay = 0.15, sustain = 0.0, release = 0.1, + drive = 2.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Saw.ar(freq), Saw.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.15), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v4.scd b/sound_algo/synth/lead/stab_v4.scd new file mode 100644 index 0000000..dc14f87 --- /dev/null +++ b/sound_algo/synth/lead/stab_v4.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v4.scd -- SynthDef \stab_v4 // variation stab stab court +( +SynthDef(\stab_v4, { + arg freq = 220, gate = 1, + cutoff = 1000, cutoffEnv = 5000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.2, + drive = 3.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Pulse.ar(freq), Pulse.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.2), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v5.scd b/sound_algo/synth/lead/stab_v5.scd new file mode 100644 index 0000000..9db9a78 --- /dev/null +++ b/sound_algo/synth/lead/stab_v5.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v5.scd -- SynthDef \stab_v5 // variation stab stab court +( +SynthDef(\stab_v5, { + arg freq = 220, gate = 1, + cutoff = 400, cutoffEnv = 2000, rq = 0.4, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.1, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Saw.ar(freq), Saw.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.05), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v6.scd b/sound_algo/synth/lead/stab_v6.scd new file mode 100644 index 0000000..33ad2e3 --- /dev/null +++ b/sound_algo/synth/lead/stab_v6.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v6.scd -- SynthDef \stab_v6 // variation stab stab court +( +SynthDef(\stab_v6, { + arg freq = 220, gate = 1, + cutoff = 600, cutoffEnv = 3000, rq = 0.5, + attack = 0.001, decay = 0.15, sustain = 0.1, release = 0.2, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Pulse.ar(freq), Pulse.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.1), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v7.scd b/sound_algo/synth/lead/stab_v7.scd new file mode 100644 index 0000000..5d91da9 --- /dev/null +++ b/sound_algo/synth/lead/stab_v7.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v7.scd -- SynthDef \stab_v7 // variation stab stab court +( +SynthDef(\stab_v7, { + arg freq = 220, gate = 1, + cutoff = 800, cutoffEnv = 4000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.1, + drive = 2.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Saw.ar(freq), Saw.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.15), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v8.scd b/sound_algo/synth/lead/stab_v8.scd new file mode 100644 index 0000000..add1e14 --- /dev/null +++ b/sound_algo/synth/lead/stab_v8.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v8.scd -- SynthDef \stab_v8 // variation stab stab court +( +SynthDef(\stab_v8, { + arg freq = 220, gate = 1, + cutoff = 1000, cutoffEnv = 5000, rq = 0.4, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.2, + drive = 3.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Pulse.ar(freq), Pulse.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.2), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/stab_v9.scd b/sound_algo/synth/lead/stab_v9.scd new file mode 100644 index 0000000..4e45f1f --- /dev/null +++ b/sound_algo/synth/lead/stab_v9.scd @@ -0,0 +1,19 @@ +// synth/lead/stab_v9.scd -- SynthDef \stab_v9 // variation stab stab court +( +SynthDef(\stab_v9, { + arg freq = 220, gate = 1, + cutoff = 400, cutoffEnv = 2000, rq = 0.5, + attack = 0.001, decay = 0.15, sustain = 0.0, release = 0.1, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, fEnv, fc, duck; + sig = Mix([Saw.ar(freq), Saw.ar(freq * 1.005)]); + fEnv = EnvGen.kr(Env.perc(0.001, 0.05), gate); + fc = (cutoff + (fEnv * cutoffEnv)).clip(80, 14000); + sig = RLPF.ar(sig, fc, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw.scd b/sound_algo/synth/lead/supersaw.scd new file mode 100644 index 0000000..2b8b5dc --- /dev/null +++ b/sound_algo/synth/lead/supersaw.scd @@ -0,0 +1,30 @@ +// ===================================================================== +// synth/lead/supersaw.scd -- SynthDef \supersaw +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\supersaw, { + arg freq = 220, gate = 1, detune = 0.018, mix = 0.5, + cutoff = 4500, rq = 0.5, + attack = 0.005, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + // 7 voix detunees (style JP-8000 supersaw) + voices = (-3..3).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + // Chorus stereo + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v1.scd b/sound_algo/synth/lead/supersaw_v1.scd new file mode 100644 index 0000000..8200bc7 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v1.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v1.scd -- SynthDef \supersaw_v1 // variation supersaw supersaw +( +SynthDef(\supersaw_v1, { + arg freq = 220, gate = 1, detune = 0.008, mix = 0.3, + cutoff = 3000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v10.scd b/sound_algo/synth/lead/supersaw_v10.scd new file mode 100644 index 0000000..a365372 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v10.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v10.scd -- SynthDef \supersaw_v10 // variation supersaw supersaw +( +SynthDef(\supersaw_v10, { + arg freq = 220, gate = 1, detune = 0.02, mix = 0.7, + cutoff = 6000, rq = 0.5, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v11.scd b/sound_algo/synth/lead/supersaw_v11.scd new file mode 100644 index 0000000..479686e --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v11.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v11.scd -- SynthDef \supersaw_v11 // variation supersaw supersaw +( +SynthDef(\supersaw_v11, { + arg freq = 220, gate = 1, detune = 0.024, mix = 0.3, + cutoff = 7000, rq = 0.6, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v12.scd b/sound_algo/synth/lead/supersaw_v12.scd new file mode 100644 index 0000000..15e8ff8 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v12.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v12.scd -- SynthDef \supersaw_v12 // variation supersaw supersaw +( +SynthDef(\supersaw_v12, { + arg freq = 220, gate = 1, detune = 0.028, mix = 0.4, + cutoff = 8000, rq = 0.7, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v13.scd b/sound_algo/synth/lead/supersaw_v13.scd new file mode 100644 index 0000000..f40cbfd --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v13.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v13.scd -- SynthDef \supersaw_v13 // variation supersaw supersaw +( +SynthDef(\supersaw_v13, { + arg freq = 220, gate = 1, detune = 0.008, mix = 0.5, + cutoff = 3000, rq = 0.4, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v14.scd b/sound_algo/synth/lead/supersaw_v14.scd new file mode 100644 index 0000000..f1c124c --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v14.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v14.scd -- SynthDef \supersaw_v14 // variation supersaw supersaw +( +SynthDef(\supersaw_v14, { + arg freq = 220, gate = 1, detune = 0.012, mix = 0.6, + cutoff = 4000, rq = 0.5, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v15.scd b/sound_algo/synth/lead/supersaw_v15.scd new file mode 100644 index 0000000..5e5ea2e --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v15.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v15.scd -- SynthDef \supersaw_v15 // variation supersaw supersaw +( +SynthDef(\supersaw_v15, { + arg freq = 220, gate = 1, detune = 0.016, mix = 0.7, + cutoff = 5000, rq = 0.6, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v16.scd b/sound_algo/synth/lead/supersaw_v16.scd new file mode 100644 index 0000000..1236627 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v16.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v16.scd -- SynthDef \supersaw_v16 // variation supersaw supersaw +( +SynthDef(\supersaw_v16, { + arg freq = 220, gate = 1, detune = 0.02, mix = 0.3, + cutoff = 6000, rq = 0.7, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v17.scd b/sound_algo/synth/lead/supersaw_v17.scd new file mode 100644 index 0000000..8b413a9 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v17.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v17.scd -- SynthDef \supersaw_v17 // variation supersaw supersaw +( +SynthDef(\supersaw_v17, { + arg freq = 220, gate = 1, detune = 0.024, mix = 0.4, + cutoff = 7000, rq = 0.4, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v18.scd b/sound_algo/synth/lead/supersaw_v18.scd new file mode 100644 index 0000000..a606df6 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v18.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v18.scd -- SynthDef \supersaw_v18 // variation supersaw supersaw +( +SynthDef(\supersaw_v18, { + arg freq = 220, gate = 1, detune = 0.028, mix = 0.5, + cutoff = 8000, rq = 0.5, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v19.scd b/sound_algo/synth/lead/supersaw_v19.scd new file mode 100644 index 0000000..fb1bd14 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v19.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v19.scd -- SynthDef \supersaw_v19 // variation supersaw supersaw +( +SynthDef(\supersaw_v19, { + arg freq = 220, gate = 1, detune = 0.008, mix = 0.6, + cutoff = 3000, rq = 0.6, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v2.scd b/sound_algo/synth/lead/supersaw_v2.scd new file mode 100644 index 0000000..5426b33 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v2.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v2.scd -- SynthDef \supersaw_v2 // variation supersaw supersaw +( +SynthDef(\supersaw_v2, { + arg freq = 220, gate = 1, detune = 0.012, mix = 0.4, + cutoff = 4000, rq = 0.5, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v3.scd b/sound_algo/synth/lead/supersaw_v3.scd new file mode 100644 index 0000000..90a6ba8 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v3.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v3.scd -- SynthDef \supersaw_v3 // variation supersaw supersaw +( +SynthDef(\supersaw_v3, { + arg freq = 220, gate = 1, detune = 0.016, mix = 0.5, + cutoff = 5000, rq = 0.6, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v4.scd b/sound_algo/synth/lead/supersaw_v4.scd new file mode 100644 index 0000000..14de7f8 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v4.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v4.scd -- SynthDef \supersaw_v4 // variation supersaw supersaw +( +SynthDef(\supersaw_v4, { + arg freq = 220, gate = 1, detune = 0.02, mix = 0.6, + cutoff = 6000, rq = 0.7, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v5.scd b/sound_algo/synth/lead/supersaw_v5.scd new file mode 100644 index 0000000..92f615b --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v5.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v5.scd -- SynthDef \supersaw_v5 // variation supersaw supersaw +( +SynthDef(\supersaw_v5, { + arg freq = 220, gate = 1, detune = 0.024, mix = 0.7, + cutoff = 7000, rq = 0.4, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v6.scd b/sound_algo/synth/lead/supersaw_v6.scd new file mode 100644 index 0000000..6281a9f --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v6.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v6.scd -- SynthDef \supersaw_v6 // variation supersaw supersaw +( +SynthDef(\supersaw_v6, { + arg freq = 220, gate = 1, detune = 0.028, mix = 0.3, + cutoff = 8000, rq = 0.5, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v7.scd b/sound_algo/synth/lead/supersaw_v7.scd new file mode 100644 index 0000000..8540b1b --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v7.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v7.scd -- SynthDef \supersaw_v7 // variation supersaw supersaw +( +SynthDef(\supersaw_v7, { + arg freq = 220, gate = 1, detune = 0.008, mix = 0.4, + cutoff = 3000, rq = 0.6, + attack = 0.005, decay = 0.1, sustain = 0.5, release = 0.3, + drive = 1.4, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-2..2)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[2]; + sides = voices.removeAt(2); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).softclip / drive.sqrt, (sig[1] * drive).softclip / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v8.scd b/sound_algo/synth/lead/supersaw_v8.scd new file mode 100644 index 0000000..386b434 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v8.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v8.scd -- SynthDef \supersaw_v8 // variation supersaw supersaw +( +SynthDef(\supersaw_v8, { + arg freq = 220, gate = 1, detune = 0.012, mix = 0.5, + cutoff = 4000, rq = 0.7, + attack = 0.01, decay = 0.15, sustain = 0.6, release = 0.4, + drive = 1.6, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-3..3)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[3]; + sides = voices.removeAt(3); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/lead/supersaw_v9.scd b/sound_algo/synth/lead/supersaw_v9.scd new file mode 100644 index 0000000..4c4d303 --- /dev/null +++ b/sound_algo/synth/lead/supersaw_v9.scd @@ -0,0 +1,25 @@ +// synth/lead/supersaw_v9.scd -- SynthDef \supersaw_v9 // variation supersaw supersaw +( +SynthDef(\supersaw_v9, { + arg freq = 220, gate = 1, detune = 0.016, mix = 0.6, + cutoff = 5000, rq = 0.4, + attack = 0.02, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices, center, sides; + voices = ((-4..4)).collect { |i| + Saw.ar(freq * (1 + (i * detune))) + }; + center = voices[4]; + sides = voices.removeAt(4); + sig = (center * (1 - mix)) + (Mix(voices) * mix * 0.18); + sig = LPF.ar(sig, cutoff); + sig = [DelayC.ar(sig, 0.03, SinOsc.kr(0.4, 0).range(0.005, 0.018)), + DelayC.ar(sig, 0.03, SinOsc.kr(0.5, pi).range(0.005, 0.018))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = [(sig[0] * drive).tanh / drive.sqrt, (sig[1] * drive).tanh / drive.sqrt]; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/master/master_comp.scd b/sound_algo/synth/master/master_comp.scd new file mode 100644 index 0000000..6f766d2 --- /dev/null +++ b/sound_algo/synth/master/master_comp.scd @@ -0,0 +1,14 @@ +// ===================================================================== +// synth/master/master_comp.scd -- SynthDef \masterComp +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\masterComp, { + arg threshold = 0.4, ratio = 0.5, attack = 0.01, release = 0.1, + makeup = 1.4; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v1.scd b/sound_algo/synth/master/master_comp_v1.scd new file mode 100644 index 0000000..ff86747 --- /dev/null +++ b/sound_algo/synth/master/master_comp_v1.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v1.scd -- SynthDef \master_comp_v1 // variation master compressor +( +SynthDef(\master_comp_v1, { + arg threshold = 0.2, ratio = 0.3, attack = 0.005, release = 0.05, + makeup = 1.1; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v10.scd b/sound_algo/synth/master/master_comp_v10.scd new file mode 100644 index 0000000..316a6e7 --- /dev/null +++ b/sound_algo/synth/master/master_comp_v10.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v10.scd -- SynthDef \master_comp_v10 // variation master compressor +( +SynthDef(\master_comp_v10, { + arg threshold = 0.6, ratio = 0.7, attack = 0.005, release = 0.1, + makeup = 1.8; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v11.scd b/sound_algo/synth/master/master_comp_v11.scd new file mode 100644 index 0000000..c0b068a --- /dev/null +++ b/sound_algo/synth/master/master_comp_v11.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v11.scd -- SynthDef \master_comp_v11 // variation master compressor +( +SynthDef(\master_comp_v11, { + arg threshold = 0.2, ratio = 0.3, attack = 0.01, release = 0.2, + makeup = 1.1; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v12.scd b/sound_algo/synth/master/master_comp_v12.scd new file mode 100644 index 0000000..473e7cf --- /dev/null +++ b/sound_algo/synth/master/master_comp_v12.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v12.scd -- SynthDef \master_comp_v12 // variation master compressor +( +SynthDef(\master_comp_v12, { + arg threshold = 0.3, ratio = 0.4, attack = 0.02, release = 0.3, + makeup = 1.2; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v13.scd b/sound_algo/synth/master/master_comp_v13.scd new file mode 100644 index 0000000..741adaf --- /dev/null +++ b/sound_algo/synth/master/master_comp_v13.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v13.scd -- SynthDef \master_comp_v13 // variation master compressor +( +SynthDef(\master_comp_v13, { + arg threshold = 0.4, ratio = 0.5, attack = 0.005, release = 0.05, + makeup = 1.4; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v14.scd b/sound_algo/synth/master/master_comp_v14.scd new file mode 100644 index 0000000..6f6a053 --- /dev/null +++ b/sound_algo/synth/master/master_comp_v14.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v14.scd -- SynthDef \master_comp_v14 // variation master compressor +( +SynthDef(\master_comp_v14, { + arg threshold = 0.5, ratio = 0.6, attack = 0.01, release = 0.1, + makeup = 1.6; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v15.scd b/sound_algo/synth/master/master_comp_v15.scd new file mode 100644 index 0000000..48939b0 --- /dev/null +++ b/sound_algo/synth/master/master_comp_v15.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v15.scd -- SynthDef \master_comp_v15 // variation master compressor +( +SynthDef(\master_comp_v15, { + arg threshold = 0.6, ratio = 0.7, attack = 0.02, release = 0.2, + makeup = 1.8; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v16.scd b/sound_algo/synth/master/master_comp_v16.scd new file mode 100644 index 0000000..45839b4 --- /dev/null +++ b/sound_algo/synth/master/master_comp_v16.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v16.scd -- SynthDef \master_comp_v16 // variation master compressor +( +SynthDef(\master_comp_v16, { + arg threshold = 0.2, ratio = 0.3, attack = 0.005, release = 0.3, + makeup = 1.1; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v17.scd b/sound_algo/synth/master/master_comp_v17.scd new file mode 100644 index 0000000..e16477e --- /dev/null +++ b/sound_algo/synth/master/master_comp_v17.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v17.scd -- SynthDef \master_comp_v17 // variation master compressor +( +SynthDef(\master_comp_v17, { + arg threshold = 0.3, ratio = 0.4, attack = 0.01, release = 0.05, + makeup = 1.2; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v18.scd b/sound_algo/synth/master/master_comp_v18.scd new file mode 100644 index 0000000..3c4a606 --- /dev/null +++ b/sound_algo/synth/master/master_comp_v18.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v18.scd -- SynthDef \master_comp_v18 // variation master compressor +( +SynthDef(\master_comp_v18, { + arg threshold = 0.4, ratio = 0.5, attack = 0.02, release = 0.1, + makeup = 1.4; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v19.scd b/sound_algo/synth/master/master_comp_v19.scd new file mode 100644 index 0000000..5d1911c --- /dev/null +++ b/sound_algo/synth/master/master_comp_v19.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v19.scd -- SynthDef \master_comp_v19 // variation master compressor +( +SynthDef(\master_comp_v19, { + arg threshold = 0.5, ratio = 0.6, attack = 0.005, release = 0.2, + makeup = 1.6; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v2.scd b/sound_algo/synth/master/master_comp_v2.scd new file mode 100644 index 0000000..f2ef95c --- /dev/null +++ b/sound_algo/synth/master/master_comp_v2.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v2.scd -- SynthDef \master_comp_v2 // variation master compressor +( +SynthDef(\master_comp_v2, { + arg threshold = 0.3, ratio = 0.4, attack = 0.01, release = 0.1, + makeup = 1.2; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v3.scd b/sound_algo/synth/master/master_comp_v3.scd new file mode 100644 index 0000000..e837a5d --- /dev/null +++ b/sound_algo/synth/master/master_comp_v3.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v3.scd -- SynthDef \master_comp_v3 // variation master compressor +( +SynthDef(\master_comp_v3, { + arg threshold = 0.4, ratio = 0.5, attack = 0.02, release = 0.2, + makeup = 1.4; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v4.scd b/sound_algo/synth/master/master_comp_v4.scd new file mode 100644 index 0000000..5b0c5e7 --- /dev/null +++ b/sound_algo/synth/master/master_comp_v4.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v4.scd -- SynthDef \master_comp_v4 // variation master compressor +( +SynthDef(\master_comp_v4, { + arg threshold = 0.5, ratio = 0.6, attack = 0.005, release = 0.3, + makeup = 1.6; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v5.scd b/sound_algo/synth/master/master_comp_v5.scd new file mode 100644 index 0000000..ceffd6f --- /dev/null +++ b/sound_algo/synth/master/master_comp_v5.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v5.scd -- SynthDef \master_comp_v5 // variation master compressor +( +SynthDef(\master_comp_v5, { + arg threshold = 0.6, ratio = 0.7, attack = 0.01, release = 0.05, + makeup = 1.8; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v6.scd b/sound_algo/synth/master/master_comp_v6.scd new file mode 100644 index 0000000..3200b30 --- /dev/null +++ b/sound_algo/synth/master/master_comp_v6.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v6.scd -- SynthDef \master_comp_v6 // variation master compressor +( +SynthDef(\master_comp_v6, { + arg threshold = 0.2, ratio = 0.3, attack = 0.02, release = 0.1, + makeup = 1.1; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v7.scd b/sound_algo/synth/master/master_comp_v7.scd new file mode 100644 index 0000000..82b5455 --- /dev/null +++ b/sound_algo/synth/master/master_comp_v7.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v7.scd -- SynthDef \master_comp_v7 // variation master compressor +( +SynthDef(\master_comp_v7, { + arg threshold = 0.3, ratio = 0.4, attack = 0.005, release = 0.2, + makeup = 1.2; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v8.scd b/sound_algo/synth/master/master_comp_v8.scd new file mode 100644 index 0000000..ffe7fc0 --- /dev/null +++ b/sound_algo/synth/master/master_comp_v8.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v8.scd -- SynthDef \master_comp_v8 // variation master compressor +( +SynthDef(\master_comp_v8, { + arg threshold = 0.4, ratio = 0.5, attack = 0.01, release = 0.3, + makeup = 1.4; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_comp_v9.scd b/sound_algo/synth/master/master_comp_v9.scd new file mode 100644 index 0000000..6649628 --- /dev/null +++ b/sound_algo/synth/master/master_comp_v9.scd @@ -0,0 +1,11 @@ +// synth/master/master_comp_v9.scd -- SynthDef \master_comp_v9 // variation master compressor +( +SynthDef(\master_comp_v9, { + arg threshold = 0.5, ratio = 0.6, attack = 0.02, release = 0.05, + makeup = 1.6; + var sig = In.ar(0, 2); + sig = Compander.ar(sig, sig, threshold, 1.0, ratio, attack, release); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim.scd b/sound_algo/synth/master/master_lim.scd new file mode 100644 index 0000000..a562c9b --- /dev/null +++ b/sound_algo/synth/master/master_lim.scd @@ -0,0 +1,12 @@ +// ===================================================================== +// synth/master/master_lim.scd -- SynthDef \masterLim +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\masterLim, { + var sig = In.ar(0, 2); + sig = LeakDC.ar(sig); + sig = Limiter.ar(sig, 0.95, 0.005); + ReplaceOut.ar(0, sig); + }).add; +) diff --git a/sound_algo/synth/master/master_lim_v1.scd b/sound_algo/synth/master/master_lim_v1.scd new file mode 100644 index 0000000..16c4511 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v1.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v1.scd -- SynthDef \master_lim_v1 // variation master limiter +( +SynthDef(\master_lim_v1, { + arg threshold = 0.7, lookAhead = 0.005, makeup = 1.0; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v10.scd b/sound_algo/synth/master/master_lim_v10.scd new file mode 100644 index 0000000..5894325 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v10.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v10.scd -- SynthDef \master_lim_v10 // variation master limiter +( +SynthDef(\master_lim_v10, { + arg threshold = 0.99, lookAhead = 0.005, makeup = 1.1; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v11.scd b/sound_algo/synth/master/master_lim_v11.scd new file mode 100644 index 0000000..e198b43 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v11.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v11.scd -- SynthDef \master_lim_v11 // variation master limiter +( +SynthDef(\master_lim_v11, { + arg threshold = 0.7, lookAhead = 0.01, makeup = 1.2; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v12.scd b/sound_algo/synth/master/master_lim_v12.scd new file mode 100644 index 0000000..b1b9e50 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v12.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v12.scd -- SynthDef \master_lim_v12 // variation master limiter +( +SynthDef(\master_lim_v12, { + arg threshold = 0.8, lookAhead = 0.02, makeup = 1.4; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v13.scd b/sound_algo/synth/master/master_lim_v13.scd new file mode 100644 index 0000000..5cbaf9b --- /dev/null +++ b/sound_algo/synth/master/master_lim_v13.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v13.scd -- SynthDef \master_lim_v13 // variation master limiter +( +SynthDef(\master_lim_v13, { + arg threshold = 0.9, lookAhead = 0.005, makeup = 1.0; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v14.scd b/sound_algo/synth/master/master_lim_v14.scd new file mode 100644 index 0000000..024f876 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v14.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v14.scd -- SynthDef \master_lim_v14 // variation master limiter +( +SynthDef(\master_lim_v14, { + arg threshold = 0.95, lookAhead = 0.01, makeup = 1.1; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v15.scd b/sound_algo/synth/master/master_lim_v15.scd new file mode 100644 index 0000000..8289e48 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v15.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v15.scd -- SynthDef \master_lim_v15 // variation master limiter +( +SynthDef(\master_lim_v15, { + arg threshold = 0.99, lookAhead = 0.02, makeup = 1.2; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v16.scd b/sound_algo/synth/master/master_lim_v16.scd new file mode 100644 index 0000000..6fcb7d1 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v16.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v16.scd -- SynthDef \master_lim_v16 // variation master limiter +( +SynthDef(\master_lim_v16, { + arg threshold = 0.7, lookAhead = 0.005, makeup = 1.4; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v17.scd b/sound_algo/synth/master/master_lim_v17.scd new file mode 100644 index 0000000..b38356f --- /dev/null +++ b/sound_algo/synth/master/master_lim_v17.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v17.scd -- SynthDef \master_lim_v17 // variation master limiter +( +SynthDef(\master_lim_v17, { + arg threshold = 0.8, lookAhead = 0.01, makeup = 1.0; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v18.scd b/sound_algo/synth/master/master_lim_v18.scd new file mode 100644 index 0000000..34ec8f0 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v18.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v18.scd -- SynthDef \master_lim_v18 // variation master limiter +( +SynthDef(\master_lim_v18, { + arg threshold = 0.9, lookAhead = 0.02, makeup = 1.1; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v19.scd b/sound_algo/synth/master/master_lim_v19.scd new file mode 100644 index 0000000..cc9d4ea --- /dev/null +++ b/sound_algo/synth/master/master_lim_v19.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v19.scd -- SynthDef \master_lim_v19 // variation master limiter +( +SynthDef(\master_lim_v19, { + arg threshold = 0.95, lookAhead = 0.005, makeup = 1.2; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v2.scd b/sound_algo/synth/master/master_lim_v2.scd new file mode 100644 index 0000000..39c2eb6 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v2.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v2.scd -- SynthDef \master_lim_v2 // variation master limiter +( +SynthDef(\master_lim_v2, { + arg threshold = 0.8, lookAhead = 0.01, makeup = 1.1; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v3.scd b/sound_algo/synth/master/master_lim_v3.scd new file mode 100644 index 0000000..935cded --- /dev/null +++ b/sound_algo/synth/master/master_lim_v3.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v3.scd -- SynthDef \master_lim_v3 // variation master limiter +( +SynthDef(\master_lim_v3, { + arg threshold = 0.9, lookAhead = 0.02, makeup = 1.2; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v4.scd b/sound_algo/synth/master/master_lim_v4.scd new file mode 100644 index 0000000..0d16669 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v4.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v4.scd -- SynthDef \master_lim_v4 // variation master limiter +( +SynthDef(\master_lim_v4, { + arg threshold = 0.95, lookAhead = 0.005, makeup = 1.4; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v5.scd b/sound_algo/synth/master/master_lim_v5.scd new file mode 100644 index 0000000..da283f2 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v5.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v5.scd -- SynthDef \master_lim_v5 // variation master limiter +( +SynthDef(\master_lim_v5, { + arg threshold = 0.99, lookAhead = 0.01, makeup = 1.0; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v6.scd b/sound_algo/synth/master/master_lim_v6.scd new file mode 100644 index 0000000..f44ed78 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v6.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v6.scd -- SynthDef \master_lim_v6 // variation master limiter +( +SynthDef(\master_lim_v6, { + arg threshold = 0.7, lookAhead = 0.02, makeup = 1.1; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v7.scd b/sound_algo/synth/master/master_lim_v7.scd new file mode 100644 index 0000000..3b25403 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v7.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v7.scd -- SynthDef \master_lim_v7 // variation master limiter +( +SynthDef(\master_lim_v7, { + arg threshold = 0.8, lookAhead = 0.005, makeup = 1.2; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v8.scd b/sound_algo/synth/master/master_lim_v8.scd new file mode 100644 index 0000000..be8b309 --- /dev/null +++ b/sound_algo/synth/master/master_lim_v8.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v8.scd -- SynthDef \master_lim_v8 // variation master limiter +( +SynthDef(\master_lim_v8, { + arg threshold = 0.9, lookAhead = 0.01, makeup = 1.4; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_lim_v9.scd b/sound_algo/synth/master/master_lim_v9.scd new file mode 100644 index 0000000..6ff9a5c --- /dev/null +++ b/sound_algo/synth/master/master_lim_v9.scd @@ -0,0 +1,10 @@ +// synth/master/master_lim_v9.scd -- SynthDef \master_lim_v9 // variation master limiter +( +SynthDef(\master_lim_v9, { + arg threshold = 0.95, lookAhead = 0.02, makeup = 1.0; + var sig = In.ar(0, 2); + sig = Limiter.ar(sig, threshold, lookAhead); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat.scd b/sound_algo/synth/master/master_sat.scd new file mode 100644 index 0000000..7b843c0 --- /dev/null +++ b/sound_algo/synth/master/master_sat.scd @@ -0,0 +1,16 @@ +// ===================================================================== +// synth/master/master_sat.scd -- SynthDef \masterSat +// Extracted from live.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\masterSat, { + arg amount = 1.5, mode = 0, mix = 1.0; + var sig = In.ar(0, 2); + var wet = Select.ar(mode.clip(0, 2), [ + (sig * amount).tanh / amount.sqrt, + (sig * amount).softclip, + (sig * amount).fold(-0.95, 0.95) + ]); + ReplaceOut.ar(0, (sig * (1 - mix)) + (wet * mix)); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v1.scd b/sound_algo/synth/master/master_sat_v1.scd new file mode 100644 index 0000000..79d519d --- /dev/null +++ b/sound_algo/synth/master/master_sat_v1.scd @@ -0,0 +1,13 @@ +// synth/master/master_sat_v1.scd -- SynthDef \master_sat_v1 // variation master saturation +( +SynthDef(\master_sat_v1, { + arg drive = 1.2, mix = 0.3, makeup = 0.8; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v10.scd b/sound_algo/synth/master/master_sat_v10.scd new file mode 100644 index 0000000..6a06dd8 --- /dev/null +++ b/sound_algo/synth/master/master_sat_v10.scd @@ -0,0 +1,13 @@ +// synth/master/master_sat_v10.scd -- SynthDef \master_sat_v10 // variation master saturation +( +SynthDef(\master_sat_v10, { + arg drive = 4.0, mix = 0.5, makeup = 0.8; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).softclip / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v11.scd b/sound_algo/synth/master/master_sat_v11.scd new file mode 100644 index 0000000..20ac345 --- /dev/null +++ b/sound_algo/synth/master/master_sat_v11.scd @@ -0,0 +1,12 @@ +// synth/master/master_sat_v11.scd -- SynthDef \master_sat_v11 // variation master EQ +( +SynthDef(\master_sat_v11, { + arg lowCut = 20, highShelfFreq = 8000, + highShelfGain = 1.5, makeup = 1.1; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v12.scd b/sound_algo/synth/master/master_sat_v12.scd new file mode 100644 index 0000000..e3072ae --- /dev/null +++ b/sound_algo/synth/master/master_sat_v12.scd @@ -0,0 +1,15 @@ +// synth/master/master_sat_v12.scd -- SynthDef \master_sat_v12 // variation master stereo widener +( +SynthDef(\master_sat_v12, { + arg width = 1.0, delay = 0.008, makeup = 1.05; + var sig, l, r, mid, side; + sig = In.ar(0, 2); + mid = (sig[0] + sig[1]) * 0.5; + side = (sig[0] - sig[1]) * 0.5 * width; + side = DelayC.ar(side, 0.01, delay); + l = mid + side; + r = mid - side; + sig = [l, r] * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v13.scd b/sound_algo/synth/master/master_sat_v13.scd new file mode 100644 index 0000000..102e2df --- /dev/null +++ b/sound_algo/synth/master/master_sat_v13.scd @@ -0,0 +1,13 @@ +// synth/master/master_sat_v13.scd -- SynthDef \master_sat_v13 // variation master saturation +( +SynthDef(\master_sat_v13, { + arg drive = 2.0, mix = 0.3, makeup = 0.8; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v14.scd b/sound_algo/synth/master/master_sat_v14.scd new file mode 100644 index 0000000..0878e50 --- /dev/null +++ b/sound_algo/synth/master/master_sat_v14.scd @@ -0,0 +1,12 @@ +// synth/master/master_sat_v14.scd -- SynthDef \master_sat_v14 // variation master EQ +( +SynthDef(\master_sat_v14, { + arg lowCut = 50, highShelfFreq = 6000, + highShelfGain = 1.0, makeup = 1.1; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v15.scd b/sound_algo/synth/master/master_sat_v15.scd new file mode 100644 index 0000000..90cd8d4 --- /dev/null +++ b/sound_algo/synth/master/master_sat_v15.scd @@ -0,0 +1,15 @@ +// synth/master/master_sat_v15.scd -- SynthDef \master_sat_v15 // variation master stereo widener +( +SynthDef(\master_sat_v15, { + arg width = 2.0, delay = 0.005, makeup = 1.05; + var sig, l, r, mid, side; + sig = In.ar(0, 2); + mid = (sig[0] + sig[1]) * 0.5; + side = (sig[0] - sig[1]) * 0.5 * width; + side = DelayC.ar(side, 0.01, delay); + l = mid + side; + r = mid - side; + sig = [l, r] * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v16.scd b/sound_algo/synth/master/master_sat_v16.scd new file mode 100644 index 0000000..f39d4bf --- /dev/null +++ b/sound_algo/synth/master/master_sat_v16.scd @@ -0,0 +1,13 @@ +// synth/master/master_sat_v16.scd -- SynthDef \master_sat_v16 // variation master saturation +( +SynthDef(\master_sat_v16, { + arg drive = 1.2, mix = 0.9, makeup = 0.8; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).softclip / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v17.scd b/sound_algo/synth/master/master_sat_v17.scd new file mode 100644 index 0000000..3fd747b --- /dev/null +++ b/sound_algo/synth/master/master_sat_v17.scd @@ -0,0 +1,12 @@ +// synth/master/master_sat_v17.scd -- SynthDef \master_sat_v17 // variation master EQ +( +SynthDef(\master_sat_v17, { + arg lowCut = 30, highShelfFreq = 4000, + highShelfGain = 0.5, makeup = 1.1; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v18.scd b/sound_algo/synth/master/master_sat_v18.scd new file mode 100644 index 0000000..246b94b --- /dev/null +++ b/sound_algo/synth/master/master_sat_v18.scd @@ -0,0 +1,15 @@ +// synth/master/master_sat_v18.scd -- SynthDef \master_sat_v18 // variation master stereo widener +( +SynthDef(\master_sat_v18, { + arg width = 1.2, delay = 0.003, makeup = 1.05; + var sig, l, r, mid, side; + sig = In.ar(0, 2); + mid = (sig[0] + sig[1]) * 0.5; + side = (sig[0] - sig[1]) * 0.5 * width; + side = DelayC.ar(side, 0.01, delay); + l = mid + side; + r = mid - side; + sig = [l, r] * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v19.scd b/sound_algo/synth/master/master_sat_v19.scd new file mode 100644 index 0000000..92761f5 --- /dev/null +++ b/sound_algo/synth/master/master_sat_v19.scd @@ -0,0 +1,13 @@ +// synth/master/master_sat_v19.scd -- SynthDef \master_sat_v19 // variation master saturation +( +SynthDef(\master_sat_v19, { + arg drive = 3.0, mix = 0.7, makeup = 0.8; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v2.scd b/sound_algo/synth/master/master_sat_v2.scd new file mode 100644 index 0000000..e02b1b6 --- /dev/null +++ b/sound_algo/synth/master/master_sat_v2.scd @@ -0,0 +1,12 @@ +// synth/master/master_sat_v2.scd -- SynthDef \master_sat_v2 // variation master EQ +( +SynthDef(\master_sat_v2, { + arg lowCut = 30, highShelfFreq = 6000, + highShelfGain = 1.0, makeup = 1.1; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v3.scd b/sound_algo/synth/master/master_sat_v3.scd new file mode 100644 index 0000000..486f176 --- /dev/null +++ b/sound_algo/synth/master/master_sat_v3.scd @@ -0,0 +1,15 @@ +// synth/master/master_sat_v3.scd -- SynthDef \master_sat_v3 // variation master stereo widener +( +SynthDef(\master_sat_v3, { + arg width = 1.2, delay = 0.005, makeup = 1.05; + var sig, l, r, mid, side; + sig = In.ar(0, 2); + mid = (sig[0] + sig[1]) * 0.5; + side = (sig[0] - sig[1]) * 0.5 * width; + side = DelayC.ar(side, 0.01, delay); + l = mid + side; + r = mid - side; + sig = [l, r] * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v4.scd b/sound_algo/synth/master/master_sat_v4.scd new file mode 100644 index 0000000..878fbdc --- /dev/null +++ b/sound_algo/synth/master/master_sat_v4.scd @@ -0,0 +1,13 @@ +// synth/master/master_sat_v4.scd -- SynthDef \master_sat_v4 // variation master saturation +( +SynthDef(\master_sat_v4, { + arg drive = 3.0, mix = 0.9, makeup = 0.8; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).softclip / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v5.scd b/sound_algo/synth/master/master_sat_v5.scd new file mode 100644 index 0000000..7457bc7 --- /dev/null +++ b/sound_algo/synth/master/master_sat_v5.scd @@ -0,0 +1,12 @@ +// synth/master/master_sat_v5.scd -- SynthDef \master_sat_v5 // variation master EQ +( +SynthDef(\master_sat_v5, { + arg lowCut = 60, highShelfFreq = 4000, + highShelfGain = 0.5, makeup = 1.1; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v6.scd b/sound_algo/synth/master/master_sat_v6.scd new file mode 100644 index 0000000..e45379f --- /dev/null +++ b/sound_algo/synth/master/master_sat_v6.scd @@ -0,0 +1,15 @@ +// synth/master/master_sat_v6.scd -- SynthDef \master_sat_v6 // variation master stereo widener +( +SynthDef(\master_sat_v6, { + arg width = 0.8, delay = 0.003, makeup = 1.05; + var sig, l, r, mid, side; + sig = In.ar(0, 2); + mid = (sig[0] + sig[1]) * 0.5; + side = (sig[0] - sig[1]) * 0.5 * width; + side = DelayC.ar(side, 0.01, delay); + l = mid + side; + r = mid - side; + sig = [l, r] * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v7.scd b/sound_algo/synth/master/master_sat_v7.scd new file mode 100644 index 0000000..513561e --- /dev/null +++ b/sound_algo/synth/master/master_sat_v7.scd @@ -0,0 +1,13 @@ +// synth/master/master_sat_v7.scd -- SynthDef \master_sat_v7 // variation master saturation +( +SynthDef(\master_sat_v7, { + arg drive = 1.5, mix = 0.7, makeup = 0.8; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v8.scd b/sound_algo/synth/master/master_sat_v8.scd new file mode 100644 index 0000000..a7d234c --- /dev/null +++ b/sound_algo/synth/master/master_sat_v8.scd @@ -0,0 +1,12 @@ +// synth/master/master_sat_v8.scd -- SynthDef \master_sat_v8 // variation master EQ +( +SynthDef(\master_sat_v8, { + arg lowCut = 40, highShelfFreq = 10000, + highShelfGain = 2.0, makeup = 1.1; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/master_sat_v9.scd b/sound_algo/synth/master/master_sat_v9.scd new file mode 100644 index 0000000..31e75d7 --- /dev/null +++ b/sound_algo/synth/master/master_sat_v9.scd @@ -0,0 +1,15 @@ +// synth/master/master_sat_v9.scd -- SynthDef \master_sat_v9 // variation master stereo widener +( +SynthDef(\master_sat_v9, { + arg width = 1.5, delay = 0.001, makeup = 1.05; + var sig, l, r, mid, side; + sig = In.ar(0, 2); + mid = (sig[0] + sig[1]) * 0.5; + side = (sig[0] - sig[1]) * 0.5 * width; + side = DelayC.ar(side, 0.01, delay); + l = mid + side; + r = mid - side; + sig = [l, r] * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl.scd b/sound_algo/synth/master/vinyl.scd new file mode 100644 index 0000000..d4162a0 --- /dev/null +++ b/sound_algo/synth/master/vinyl.scd @@ -0,0 +1,15 @@ +// ===================================================================== +// synth/master/vinyl.scd -- SynthDef \vinyl +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\vinyl, { + arg amp = 0.05, pan = 0; + var sig, crackles; + sig = PinkNoise.ar(0.3); + crackles = Dust.ar(50, 0.4) + Dust.ar(20, 0.5); + sig = sig + crackles; + sig = HPF.ar(sig, 80); + Out.ar(0, Pan2.ar(sig * amp, pan)); + }).add; +) diff --git a/sound_algo/synth/master/vinyl_v1.scd b/sound_algo/synth/master/vinyl_v1.scd new file mode 100644 index 0000000..a126154 --- /dev/null +++ b/sound_algo/synth/master/vinyl_v1.scd @@ -0,0 +1,13 @@ +// synth/master/vinyl_v1.scd -- SynthDef \vinyl_v1 // variation vinyl warmth saturation +( +SynthDef(\vinyl_v1, { + arg drive = 1.5, mix = 0.4, makeup = 0.85; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v10.scd b/sound_algo/synth/master/vinyl_v10.scd new file mode 100644 index 0000000..1e3af00 --- /dev/null +++ b/sound_algo/synth/master/vinyl_v10.scd @@ -0,0 +1,12 @@ +// synth/master/vinyl_v10.scd -- SynthDef \vinyl_v10 // variation vinyl tone shape +( +SynthDef(\vinyl_v10, { + arg lowCut = 60, highShelfFreq = 3000, + highShelfGain = -1.0, makeup = 1.0; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v11.scd b/sound_algo/synth/master/vinyl_v11.scd new file mode 100644 index 0000000..e67777a --- /dev/null +++ b/sound_algo/synth/master/vinyl_v11.scd @@ -0,0 +1,13 @@ +// synth/master/vinyl_v11.scd -- SynthDef \vinyl_v11 // variation vinyl warmth saturation +( +SynthDef(\vinyl_v11, { + arg drive = 2.0, mix = 0.6, makeup = 0.9; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v12.scd b/sound_algo/synth/master/vinyl_v12.scd new file mode 100644 index 0000000..c7106be --- /dev/null +++ b/sound_algo/synth/master/vinyl_v12.scd @@ -0,0 +1,12 @@ +// synth/master/vinyl_v12.scd -- SynthDef \vinyl_v12 // variation vinyl tone shape +( +SynthDef(\vinyl_v12, { + arg lowCut = 100, highShelfFreq = 5000, + highShelfGain = 0.5, makeup = 1.1; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v13.scd b/sound_algo/synth/master/vinyl_v13.scd new file mode 100644 index 0000000..396f956 --- /dev/null +++ b/sound_algo/synth/master/vinyl_v13.scd @@ -0,0 +1,13 @@ +// synth/master/vinyl_v13.scd -- SynthDef \vinyl_v13 // variation vinyl warmth saturation +( +SynthDef(\vinyl_v13, { + arg drive = 1.5, mix = 0.4, makeup = 0.85; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v14.scd b/sound_algo/synth/master/vinyl_v14.scd new file mode 100644 index 0000000..d9ce04d --- /dev/null +++ b/sound_algo/synth/master/vinyl_v14.scd @@ -0,0 +1,12 @@ +// synth/master/vinyl_v14.scd -- SynthDef \vinyl_v14 // variation vinyl tone shape +( +SynthDef(\vinyl_v14, { + arg lowCut = 80, highShelfFreq = 4000, + highShelfGain = -1.0, makeup = 1.05; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v15.scd b/sound_algo/synth/master/vinyl_v15.scd new file mode 100644 index 0000000..5c389f3 --- /dev/null +++ b/sound_algo/synth/master/vinyl_v15.scd @@ -0,0 +1,13 @@ +// synth/master/vinyl_v15.scd -- SynthDef \vinyl_v15 // variation vinyl warmth saturation +( +SynthDef(\vinyl_v15, { + arg drive = 3.0, mix = 0.8, makeup = 0.95; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v16.scd b/sound_algo/synth/master/vinyl_v16.scd new file mode 100644 index 0000000..05c68c0 --- /dev/null +++ b/sound_algo/synth/master/vinyl_v16.scd @@ -0,0 +1,12 @@ +// synth/master/vinyl_v16.scd -- SynthDef \vinyl_v16 // variation vinyl tone shape +( +SynthDef(\vinyl_v16, { + arg lowCut = 60, highShelfFreq = 3000, + highShelfGain = 0.5, makeup = 1.0; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v17.scd b/sound_algo/synth/master/vinyl_v17.scd new file mode 100644 index 0000000..752ba9d --- /dev/null +++ b/sound_algo/synth/master/vinyl_v17.scd @@ -0,0 +1,13 @@ +// synth/master/vinyl_v17.scd -- SynthDef \vinyl_v17 // variation vinyl warmth saturation +( +SynthDef(\vinyl_v17, { + arg drive = 2.0, mix = 0.6, makeup = 0.9; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v18.scd b/sound_algo/synth/master/vinyl_v18.scd new file mode 100644 index 0000000..0ac756c --- /dev/null +++ b/sound_algo/synth/master/vinyl_v18.scd @@ -0,0 +1,12 @@ +// synth/master/vinyl_v18.scd -- SynthDef \vinyl_v18 // variation vinyl tone shape +( +SynthDef(\vinyl_v18, { + arg lowCut = 100, highShelfFreq = 5000, + highShelfGain = -1.0, makeup = 1.1; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v19.scd b/sound_algo/synth/master/vinyl_v19.scd new file mode 100644 index 0000000..f22b93e --- /dev/null +++ b/sound_algo/synth/master/vinyl_v19.scd @@ -0,0 +1,13 @@ +// synth/master/vinyl_v19.scd -- SynthDef \vinyl_v19 // variation vinyl warmth saturation +( +SynthDef(\vinyl_v19, { + arg drive = 1.5, mix = 0.4, makeup = 0.85; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v2.scd b/sound_algo/synth/master/vinyl_v2.scd new file mode 100644 index 0000000..91489fb --- /dev/null +++ b/sound_algo/synth/master/vinyl_v2.scd @@ -0,0 +1,12 @@ +// synth/master/vinyl_v2.scd -- SynthDef \vinyl_v2 // variation vinyl tone shape +( +SynthDef(\vinyl_v2, { + arg lowCut = 80, highShelfFreq = 4000, + highShelfGain = -1.0, makeup = 1.05; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v3.scd b/sound_algo/synth/master/vinyl_v3.scd new file mode 100644 index 0000000..fb88378 --- /dev/null +++ b/sound_algo/synth/master/vinyl_v3.scd @@ -0,0 +1,13 @@ +// synth/master/vinyl_v3.scd -- SynthDef \vinyl_v3 // variation vinyl warmth saturation +( +SynthDef(\vinyl_v3, { + arg drive = 3.0, mix = 0.8, makeup = 0.95; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v4.scd b/sound_algo/synth/master/vinyl_v4.scd new file mode 100644 index 0000000..111ece0 --- /dev/null +++ b/sound_algo/synth/master/vinyl_v4.scd @@ -0,0 +1,12 @@ +// synth/master/vinyl_v4.scd -- SynthDef \vinyl_v4 // variation vinyl tone shape +( +SynthDef(\vinyl_v4, { + arg lowCut = 60, highShelfFreq = 3000, + highShelfGain = 0.5, makeup = 1.0; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v5.scd b/sound_algo/synth/master/vinyl_v5.scd new file mode 100644 index 0000000..d7d9a18 --- /dev/null +++ b/sound_algo/synth/master/vinyl_v5.scd @@ -0,0 +1,13 @@ +// synth/master/vinyl_v5.scd -- SynthDef \vinyl_v5 // variation vinyl warmth saturation +( +SynthDef(\vinyl_v5, { + arg drive = 2.0, mix = 0.6, makeup = 0.9; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v6.scd b/sound_algo/synth/master/vinyl_v6.scd new file mode 100644 index 0000000..b1eeb0b --- /dev/null +++ b/sound_algo/synth/master/vinyl_v6.scd @@ -0,0 +1,12 @@ +// synth/master/vinyl_v6.scd -- SynthDef \vinyl_v6 // variation vinyl tone shape +( +SynthDef(\vinyl_v6, { + arg lowCut = 100, highShelfFreq = 5000, + highShelfGain = -1.0, makeup = 1.1; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v7.scd b/sound_algo/synth/master/vinyl_v7.scd new file mode 100644 index 0000000..f82a585 --- /dev/null +++ b/sound_algo/synth/master/vinyl_v7.scd @@ -0,0 +1,13 @@ +// synth/master/vinyl_v7.scd -- SynthDef \vinyl_v7 // variation vinyl warmth saturation +( +SynthDef(\vinyl_v7, { + arg drive = 1.5, mix = 0.4, makeup = 0.85; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v8.scd b/sound_algo/synth/master/vinyl_v8.scd new file mode 100644 index 0000000..6eb6bbe --- /dev/null +++ b/sound_algo/synth/master/vinyl_v8.scd @@ -0,0 +1,12 @@ +// synth/master/vinyl_v8.scd -- SynthDef \vinyl_v8 // variation vinyl tone shape +( +SynthDef(\vinyl_v8, { + arg lowCut = 80, highShelfFreq = 4000, + highShelfGain = 0.5, makeup = 1.05; + var sig = In.ar(0, 2); + sig = HPF.ar(sig, lowCut); + sig = BHiShelf.ar(sig, highShelfFreq, 1, highShelfGain); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/master/vinyl_v9.scd b/sound_algo/synth/master/vinyl_v9.scd new file mode 100644 index 0000000..4b0473b --- /dev/null +++ b/sound_algo/synth/master/vinyl_v9.scd @@ -0,0 +1,13 @@ +// synth/master/vinyl_v9.scd -- SynthDef \vinyl_v9 // variation vinyl warmth saturation +( +SynthDef(\vinyl_v9, { + arg drive = 3.0, mix = 0.8, makeup = 0.95; + var sig, dry; + sig = In.ar(0, 2); + dry = sig; + sig = (sig * drive).tanh / drive.sqrt; + sig = (dry * (1 - mix)) + (sig * mix); + sig = sig * makeup; + ReplaceOut.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/pad/choir.scd b/sound_algo/synth/pad/choir.scd new file mode 100644 index 0000000..6e6c7f8 --- /dev/null +++ b/sound_algo/synth/pad/choir.scd @@ -0,0 +1,27 @@ +// ===================================================================== +// synth/pad/choir.scd -- SynthDef \choir +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\choir, { + arg freq = 220, gate = 1, + formant1 = 800, formant2 = 1150, formant3 = 2900, + attack = 0.4, decay = 0.3, sustain = 0.7, release = 1.5, + drive = 1.0, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, src, vib; + // Vibrato lent humain + vib = freq * (1 + (SinOsc.kr(5, 0, + EnvGen.kr(Env([0, 0, 0.015], [0.5, 0.5]))).abs)); + // Source : saw filtree + sub + src = Saw.ar(vib) + (SinOsc.ar(vib * 0.5) * 0.4); + // 3 formants vocaux (a, e, o) + sig = (BPF.ar(src, formant1, 0.15) * 1.0) + + (BPF.ar(src, formant2, 0.20) * 0.5) + + (BPF.ar(src, formant3, 0.30) * 0.25); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v1.scd b/sound_algo/synth/pad/choir_v1.scd new file mode 100644 index 0000000..dafa247 --- /dev/null +++ b/sound_algo/synth/pad/choir_v1.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v1.scd -- SynthDef \choir_v1 // variation choir choir formant +( +SynthDef(\choir_v1, { + arg freq = 220, gate = 1, detune = 0.01, + formant1 = 600, formant2 = 1800, + attack = 0.4, decay = 0.3, sustain = 0.6, release = 1.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v10.scd b/sound_algo/synth/pad/choir_v10.scd new file mode 100644 index 0000000..fc5fab1 --- /dev/null +++ b/sound_algo/synth/pad/choir_v10.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v10.scd -- SynthDef \choir_v10 // variation choir choir formant +( +SynthDef(\choir_v10, { + arg freq = 220, gate = 1, detune = 0.014, + formant1 = 1000, formant2 = 2600, + attack = 0.6, decay = 0.3, sustain = 0.6, release = 2.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v11.scd b/sound_algo/synth/pad/choir_v11.scd new file mode 100644 index 0000000..2cb4696 --- /dev/null +++ b/sound_algo/synth/pad/choir_v11.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v11.scd -- SynthDef \choir_v11 // variation choir choir formant +( +SynthDef(\choir_v11, { + arg freq = 220, gate = 1, detune = 0.018, + formant1 = 600, formant2 = 1800, + attack = 0.8, decay = 0.5, sustain = 0.7, release = 2.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v12.scd b/sound_algo/synth/pad/choir_v12.scd new file mode 100644 index 0000000..6ec8aa2 --- /dev/null +++ b/sound_algo/synth/pad/choir_v12.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v12.scd -- SynthDef \choir_v12 // variation choir choir formant +( +SynthDef(\choir_v12, { + arg freq = 220, gate = 1, detune = 0.022, + formant1 = 700, formant2 = 2000, + attack = 1.0, decay = 0.7, sustain = 0.8, release = 3.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v13.scd b/sound_algo/synth/pad/choir_v13.scd new file mode 100644 index 0000000..5d3f3aa --- /dev/null +++ b/sound_algo/synth/pad/choir_v13.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v13.scd -- SynthDef \choir_v13 // variation choir choir formant +( +SynthDef(\choir_v13, { + arg freq = 220, gate = 1, detune = 0.01, + formant1 = 800, formant2 = 2200, + attack = 0.4, decay = 0.3, sustain = 0.6, release = 1.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v14.scd b/sound_algo/synth/pad/choir_v14.scd new file mode 100644 index 0000000..2dd6ae4 --- /dev/null +++ b/sound_algo/synth/pad/choir_v14.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v14.scd -- SynthDef \choir_v14 // variation choir choir formant +( +SynthDef(\choir_v14, { + arg freq = 220, gate = 1, detune = 0.014, + formant1 = 900, formant2 = 2400, + attack = 0.6, decay = 0.5, sustain = 0.7, release = 2.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v15.scd b/sound_algo/synth/pad/choir_v15.scd new file mode 100644 index 0000000..627413a --- /dev/null +++ b/sound_algo/synth/pad/choir_v15.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v15.scd -- SynthDef \choir_v15 // variation choir choir formant +( +SynthDef(\choir_v15, { + arg freq = 220, gate = 1, detune = 0.018, + formant1 = 1000, formant2 = 2600, + attack = 0.8, decay = 0.7, sustain = 0.8, release = 2.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v16.scd b/sound_algo/synth/pad/choir_v16.scd new file mode 100644 index 0000000..6e9b70a --- /dev/null +++ b/sound_algo/synth/pad/choir_v16.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v16.scd -- SynthDef \choir_v16 // variation choir choir formant +( +SynthDef(\choir_v16, { + arg freq = 220, gate = 1, detune = 0.022, + formant1 = 600, formant2 = 1800, + attack = 1.0, decay = 0.3, sustain = 0.6, release = 3.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v17.scd b/sound_algo/synth/pad/choir_v17.scd new file mode 100644 index 0000000..f3075a3 --- /dev/null +++ b/sound_algo/synth/pad/choir_v17.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v17.scd -- SynthDef \choir_v17 // variation choir choir formant +( +SynthDef(\choir_v17, { + arg freq = 220, gate = 1, detune = 0.01, + formant1 = 700, formant2 = 2000, + attack = 0.4, decay = 0.5, sustain = 0.7, release = 1.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v18.scd b/sound_algo/synth/pad/choir_v18.scd new file mode 100644 index 0000000..2ada5d9 --- /dev/null +++ b/sound_algo/synth/pad/choir_v18.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v18.scd -- SynthDef \choir_v18 // variation choir choir formant +( +SynthDef(\choir_v18, { + arg freq = 220, gate = 1, detune = 0.014, + formant1 = 800, formant2 = 2200, + attack = 0.6, decay = 0.7, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v19.scd b/sound_algo/synth/pad/choir_v19.scd new file mode 100644 index 0000000..d0be09e --- /dev/null +++ b/sound_algo/synth/pad/choir_v19.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v19.scd -- SynthDef \choir_v19 // variation choir choir formant +( +SynthDef(\choir_v19, { + arg freq = 220, gate = 1, detune = 0.018, + formant1 = 900, formant2 = 2400, + attack = 0.8, decay = 0.3, sustain = 0.6, release = 2.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v2.scd b/sound_algo/synth/pad/choir_v2.scd new file mode 100644 index 0000000..9cbb973 --- /dev/null +++ b/sound_algo/synth/pad/choir_v2.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v2.scd -- SynthDef \choir_v2 // variation choir choir formant +( +SynthDef(\choir_v2, { + arg freq = 220, gate = 1, detune = 0.014, + formant1 = 700, formant2 = 2000, + attack = 0.6, decay = 0.5, sustain = 0.7, release = 2.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v3.scd b/sound_algo/synth/pad/choir_v3.scd new file mode 100644 index 0000000..7e09735 --- /dev/null +++ b/sound_algo/synth/pad/choir_v3.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v3.scd -- SynthDef \choir_v3 // variation choir choir formant +( +SynthDef(\choir_v3, { + arg freq = 220, gate = 1, detune = 0.018, + formant1 = 800, formant2 = 2200, + attack = 0.8, decay = 0.7, sustain = 0.8, release = 2.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v4.scd b/sound_algo/synth/pad/choir_v4.scd new file mode 100644 index 0000000..65a3926 --- /dev/null +++ b/sound_algo/synth/pad/choir_v4.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v4.scd -- SynthDef \choir_v4 // variation choir choir formant +( +SynthDef(\choir_v4, { + arg freq = 220, gate = 1, detune = 0.022, + formant1 = 900, formant2 = 2400, + attack = 1.0, decay = 0.3, sustain = 0.6, release = 3.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v5.scd b/sound_algo/synth/pad/choir_v5.scd new file mode 100644 index 0000000..4c2d23b --- /dev/null +++ b/sound_algo/synth/pad/choir_v5.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v5.scd -- SynthDef \choir_v5 // variation choir choir formant +( +SynthDef(\choir_v5, { + arg freq = 220, gate = 1, detune = 0.01, + formant1 = 1000, formant2 = 2600, + attack = 0.4, decay = 0.5, sustain = 0.7, release = 1.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v6.scd b/sound_algo/synth/pad/choir_v6.scd new file mode 100644 index 0000000..5989d5a --- /dev/null +++ b/sound_algo/synth/pad/choir_v6.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v6.scd -- SynthDef \choir_v6 // variation choir choir formant +( +SynthDef(\choir_v6, { + arg freq = 220, gate = 1, detune = 0.014, + formant1 = 600, formant2 = 1800, + attack = 0.6, decay = 0.7, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v7.scd b/sound_algo/synth/pad/choir_v7.scd new file mode 100644 index 0000000..9e6d59d --- /dev/null +++ b/sound_algo/synth/pad/choir_v7.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v7.scd -- SynthDef \choir_v7 // variation choir choir formant +( +SynthDef(\choir_v7, { + arg freq = 220, gate = 1, detune = 0.018, + formant1 = 700, formant2 = 2000, + attack = 0.8, decay = 0.3, sustain = 0.6, release = 2.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v8.scd b/sound_algo/synth/pad/choir_v8.scd new file mode 100644 index 0000000..f2d440b --- /dev/null +++ b/sound_algo/synth/pad/choir_v8.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v8.scd -- SynthDef \choir_v8 // variation choir choir formant +( +SynthDef(\choir_v8, { + arg freq = 220, gate = 1, detune = 0.022, + formant1 = 800, formant2 = 2200, + attack = 1.0, decay = 0.5, sustain = 0.7, release = 3.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/choir_v9.scd b/sound_algo/synth/pad/choir_v9.scd new file mode 100644 index 0000000..0c0ab93 --- /dev/null +++ b/sound_algo/synth/pad/choir_v9.scd @@ -0,0 +1,19 @@ +// synth/pad/choir_v9.scd -- SynthDef \choir_v9 // variation choir choir formant +( +SynthDef(\choir_v9, { + arg freq = 220, gate = 1, detune = 0.01, + formant1 = 900, formant2 = 2400, + attack = 0.4, decay = 0.7, sustain = 0.8, release = 1.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone.scd b/sound_algo/synth/pad/drone.scd new file mode 100644 index 0000000..167d403 --- /dev/null +++ b/sound_algo/synth/pad/drone.scd @@ -0,0 +1,25 @@ +// ===================================================================== +// synth/pad/drone.scd -- SynthDef \drone +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\drone, { + arg freq = 110, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.4, modRate = 0.15, modDepth = 600, + attack = 1.5, decay = 0.5, sustain = 0.85, release = 3.0, + drive = 1.1, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, fc, voices; + fc = (cutoff + (LFNoise2.kr(modRate) * modDepth)).clip(60, 8000); + voices = (Saw.ar(freq * (1 - detune)) * 0.4) + + (Saw.ar(freq * (1 + detune)) * 0.4) + + (SinOsc.ar(freq * 0.5) * 0.3); // sub + sig = RLPF.ar(voices, fc, rq); + sig = sig + (DelayC.ar(sig, 0.05, + SinOsc.kr(0.2, 0).range(0.01, 0.04)) * 0.3); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v1.scd b/sound_algo/synth/pad/drone_v1.scd new file mode 100644 index 0000000..467a255 --- /dev/null +++ b/sound_algo/synth/pad/drone_v1.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v1.scd -- SynthDef \drone_v1 // variation drone drone slow +( +SynthDef(\drone_v1, { + arg freq = 110, gate = 1, detune = 0.005, + cutoff = 800, rq = 0.4, + attack = 0.5, decay = 0.5, sustain = 0.7, release = 2.0, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.1).range(1 - detune, 1 + detune); + sig = Saw.ar(freq * lfo) + + Saw.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v10.scd b/sound_algo/synth/pad/drone_v10.scd new file mode 100644 index 0000000..1110680 --- /dev/null +++ b/sound_algo/synth/pad/drone_v10.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v10.scd -- SynthDef \drone_v10 // variation drone drone slow +( +SynthDef(\drone_v10, { + arg freq = 110, gate = 1, detune = 0.01, + cutoff = 2500, rq = 0.8, + attack = 1.0, decay = 0.5, sustain = 0.7, release = 3.0, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.15).range(1 - detune, 1 + detune); + sig = Saw.ar(freq * lfo) + + Saw.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v11.scd b/sound_algo/synth/pad/drone_v11.scd new file mode 100644 index 0000000..eb6e14b --- /dev/null +++ b/sound_algo/synth/pad/drone_v11.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v11.scd -- SynthDef \drone_v11 // variation drone drone slow +( +SynthDef(\drone_v11, { + arg freq = 110, gate = 1, detune = 0.015, + cutoff = 800, rq = 0.4, + attack = 1.5, decay = 1.0, sustain = 0.8, release = 4.0, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.2).range(1 - detune, 1 + detune); + sig = Pulse.ar(freq * lfo) + + Pulse.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v12.scd b/sound_algo/synth/pad/drone_v12.scd new file mode 100644 index 0000000..c0213af --- /dev/null +++ b/sound_algo/synth/pad/drone_v12.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v12.scd -- SynthDef \drone_v12 // variation drone drone slow +( +SynthDef(\drone_v12, { + arg freq = 110, gate = 1, detune = 0.02, + cutoff = 1200, rq = 0.5, + attack = 2.0, decay = 1.5, sustain = 0.9, release = 5.0, + drive = 1.4, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.25).range(1 - detune, 1 + detune); + sig = LFTri.ar(freq * lfo) + + LFTri.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v13.scd b/sound_algo/synth/pad/drone_v13.scd new file mode 100644 index 0000000..cbb2a98 --- /dev/null +++ b/sound_algo/synth/pad/drone_v13.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v13.scd -- SynthDef \drone_v13 // variation drone drone slow +( +SynthDef(\drone_v13, { + arg freq = 110, gate = 1, detune = 0.005, + cutoff = 1600, rq = 0.6, + attack = 0.5, decay = 0.5, sustain = 0.7, release = 2.0, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.1).range(1 - detune, 1 + detune); + sig = Saw.ar(freq * lfo) + + Saw.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v14.scd b/sound_algo/synth/pad/drone_v14.scd new file mode 100644 index 0000000..5675b2d --- /dev/null +++ b/sound_algo/synth/pad/drone_v14.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v14.scd -- SynthDef \drone_v14 // variation drone drone slow +( +SynthDef(\drone_v14, { + arg freq = 110, gate = 1, detune = 0.01, + cutoff = 2000, rq = 0.7, + attack = 1.0, decay = 1.0, sustain = 0.8, release = 3.0, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.15).range(1 - detune, 1 + detune); + sig = Pulse.ar(freq * lfo) + + Pulse.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v15.scd b/sound_algo/synth/pad/drone_v15.scd new file mode 100644 index 0000000..23bdbb2 --- /dev/null +++ b/sound_algo/synth/pad/drone_v15.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v15.scd -- SynthDef \drone_v15 // variation drone drone slow +( +SynthDef(\drone_v15, { + arg freq = 110, gate = 1, detune = 0.015, + cutoff = 2500, rq = 0.8, + attack = 1.5, decay = 1.5, sustain = 0.9, release = 4.0, + drive = 1.4, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.2).range(1 - detune, 1 + detune); + sig = LFTri.ar(freq * lfo) + + LFTri.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v16.scd b/sound_algo/synth/pad/drone_v16.scd new file mode 100644 index 0000000..9172a94 --- /dev/null +++ b/sound_algo/synth/pad/drone_v16.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v16.scd -- SynthDef \drone_v16 // variation drone drone slow +( +SynthDef(\drone_v16, { + arg freq = 110, gate = 1, detune = 0.02, + cutoff = 800, rq = 0.4, + attack = 2.0, decay = 0.5, sustain = 0.7, release = 5.0, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.25).range(1 - detune, 1 + detune); + sig = Saw.ar(freq * lfo) + + Saw.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v17.scd b/sound_algo/synth/pad/drone_v17.scd new file mode 100644 index 0000000..a0c2d06 --- /dev/null +++ b/sound_algo/synth/pad/drone_v17.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v17.scd -- SynthDef \drone_v17 // variation drone drone slow +( +SynthDef(\drone_v17, { + arg freq = 110, gate = 1, detune = 0.005, + cutoff = 1200, rq = 0.5, + attack = 0.5, decay = 1.0, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.1).range(1 - detune, 1 + detune); + sig = Pulse.ar(freq * lfo) + + Pulse.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v18.scd b/sound_algo/synth/pad/drone_v18.scd new file mode 100644 index 0000000..614ce8e --- /dev/null +++ b/sound_algo/synth/pad/drone_v18.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v18.scd -- SynthDef \drone_v18 // variation drone drone slow +( +SynthDef(\drone_v18, { + arg freq = 110, gate = 1, detune = 0.01, + cutoff = 1600, rq = 0.6, + attack = 1.0, decay = 1.5, sustain = 0.9, release = 3.0, + drive = 1.4, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.15).range(1 - detune, 1 + detune); + sig = LFTri.ar(freq * lfo) + + LFTri.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v19.scd b/sound_algo/synth/pad/drone_v19.scd new file mode 100644 index 0000000..e529fd9 --- /dev/null +++ b/sound_algo/synth/pad/drone_v19.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v19.scd -- SynthDef \drone_v19 // variation drone drone slow +( +SynthDef(\drone_v19, { + arg freq = 110, gate = 1, detune = 0.015, + cutoff = 2000, rq = 0.7, + attack = 1.5, decay = 0.5, sustain = 0.7, release = 4.0, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.2).range(1 - detune, 1 + detune); + sig = Saw.ar(freq * lfo) + + Saw.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v2.scd b/sound_algo/synth/pad/drone_v2.scd new file mode 100644 index 0000000..c0eb48a --- /dev/null +++ b/sound_algo/synth/pad/drone_v2.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v2.scd -- SynthDef \drone_v2 // variation drone drone slow +( +SynthDef(\drone_v2, { + arg freq = 110, gate = 1, detune = 0.01, + cutoff = 1200, rq = 0.5, + attack = 1.0, decay = 1.0, sustain = 0.8, release = 3.0, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.15).range(1 - detune, 1 + detune); + sig = Pulse.ar(freq * lfo) + + Pulse.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v3.scd b/sound_algo/synth/pad/drone_v3.scd new file mode 100644 index 0000000..be5f1ac --- /dev/null +++ b/sound_algo/synth/pad/drone_v3.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v3.scd -- SynthDef \drone_v3 // variation drone drone slow +( +SynthDef(\drone_v3, { + arg freq = 110, gate = 1, detune = 0.015, + cutoff = 1600, rq = 0.6, + attack = 1.5, decay = 1.5, sustain = 0.9, release = 4.0, + drive = 1.4, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.2).range(1 - detune, 1 + detune); + sig = LFTri.ar(freq * lfo) + + LFTri.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v4.scd b/sound_algo/synth/pad/drone_v4.scd new file mode 100644 index 0000000..7e14303 --- /dev/null +++ b/sound_algo/synth/pad/drone_v4.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v4.scd -- SynthDef \drone_v4 // variation drone drone slow +( +SynthDef(\drone_v4, { + arg freq = 110, gate = 1, detune = 0.02, + cutoff = 2000, rq = 0.7, + attack = 2.0, decay = 0.5, sustain = 0.7, release = 5.0, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.25).range(1 - detune, 1 + detune); + sig = Saw.ar(freq * lfo) + + Saw.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v5.scd b/sound_algo/synth/pad/drone_v5.scd new file mode 100644 index 0000000..6d5586a --- /dev/null +++ b/sound_algo/synth/pad/drone_v5.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v5.scd -- SynthDef \drone_v5 // variation drone drone slow +( +SynthDef(\drone_v5, { + arg freq = 110, gate = 1, detune = 0.005, + cutoff = 2500, rq = 0.8, + attack = 0.5, decay = 1.0, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.1).range(1 - detune, 1 + detune); + sig = Pulse.ar(freq * lfo) + + Pulse.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v6.scd b/sound_algo/synth/pad/drone_v6.scd new file mode 100644 index 0000000..168ea75 --- /dev/null +++ b/sound_algo/synth/pad/drone_v6.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v6.scd -- SynthDef \drone_v6 // variation drone drone slow +( +SynthDef(\drone_v6, { + arg freq = 110, gate = 1, detune = 0.01, + cutoff = 800, rq = 0.4, + attack = 1.0, decay = 1.5, sustain = 0.9, release = 3.0, + drive = 1.4, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.15).range(1 - detune, 1 + detune); + sig = LFTri.ar(freq * lfo) + + LFTri.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v7.scd b/sound_algo/synth/pad/drone_v7.scd new file mode 100644 index 0000000..2e7a442 --- /dev/null +++ b/sound_algo/synth/pad/drone_v7.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v7.scd -- SynthDef \drone_v7 // variation drone drone slow +( +SynthDef(\drone_v7, { + arg freq = 110, gate = 1, detune = 0.015, + cutoff = 1200, rq = 0.5, + attack = 1.5, decay = 0.5, sustain = 0.7, release = 4.0, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.2).range(1 - detune, 1 + detune); + sig = Saw.ar(freq * lfo) + + Saw.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v8.scd b/sound_algo/synth/pad/drone_v8.scd new file mode 100644 index 0000000..95bf1f0 --- /dev/null +++ b/sound_algo/synth/pad/drone_v8.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v8.scd -- SynthDef \drone_v8 // variation drone drone slow +( +SynthDef(\drone_v8, { + arg freq = 110, gate = 1, detune = 0.02, + cutoff = 1600, rq = 0.6, + attack = 2.0, decay = 1.0, sustain = 0.8, release = 5.0, + drive = 1.2, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.25).range(1 - detune, 1 + detune); + sig = Pulse.ar(freq * lfo) + + Pulse.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/drone_v9.scd b/sound_algo/synth/pad/drone_v9.scd new file mode 100644 index 0000000..cecc262 --- /dev/null +++ b/sound_algo/synth/pad/drone_v9.scd @@ -0,0 +1,21 @@ +// synth/pad/drone_v9.scd -- SynthDef \drone_v9 // variation drone drone slow +( +SynthDef(\drone_v9, { + arg freq = 110, gate = 1, detune = 0.005, + cutoff = 2000, rq = 0.7, + attack = 0.5, decay = 1.5, sustain = 0.9, release = 2.0, + drive = 1.4, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, lfo; + lfo = SinOsc.kr(0.1).range(1 - detune, 1 + detune); + sig = LFTri.ar(freq * lfo) + + LFTri.ar(freq * 0.501 * lfo) * 0.5; + sig = LPF.ar(sig, cutoff); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad.scd b/sound_algo/synth/pad/pad.scd new file mode 100644 index 0000000..b46505b --- /dev/null +++ b/sound_algo/synth/pad/pad.scd @@ -0,0 +1,25 @@ +// ===================================================================== +// synth/pad/pad.scd -- SynthDef \pad +// Extracted from engine.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\pad, { + arg freq = 220, gate = 1, detune = 0.012, + cutoff = 1800, rq = 0.6, + attack = 0.4, decay = 0.3, sustain = 0.7, release = 1.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), + gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); + }).add; +) diff --git a/sound_algo/synth/pad/pad_v1.scd b/sound_algo/synth/pad/pad_v1.scd new file mode 100644 index 0000000..c0495b1 --- /dev/null +++ b/sound_algo/synth/pad/pad_v1.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v1.scd -- SynthDef \pad_v1 // variation pad string saws +( +SynthDef(\pad_v1, { + arg freq = 220, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.4, + attack = 0.2, decay = 0.2, sustain = 0.6, release = 1.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v10.scd b/sound_algo/synth/pad/pad_v10.scd new file mode 100644 index 0000000..c7f5284 --- /dev/null +++ b/sound_algo/synth/pad/pad_v10.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v10.scd -- SynthDef \pad_v10 // variation pad string saws +( +SynthDef(\pad_v10, { + arg freq = 220, gate = 1, detune = 0.022, + cutoff = 3600, rq = 0.5, + attack = 1.0, decay = 0.2, sustain = 0.6, release = 1.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v11.scd b/sound_algo/synth/pad/pad_v11.scd new file mode 100644 index 0000000..d10f040 --- /dev/null +++ b/sound_algo/synth/pad/pad_v11.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v11.scd -- SynthDef \pad_v11 // variation pad string saws +( +SynthDef(\pad_v11, { + arg freq = 220, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.6, + attack = 0.2, decay = 0.3, sustain = 0.7, release = 2.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v12.scd b/sound_algo/synth/pad/pad_v12.scd new file mode 100644 index 0000000..ac3a072 --- /dev/null +++ b/sound_algo/synth/pad/pad_v12.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v12.scd -- SynthDef \pad_v12 // variation pad string saws +( +SynthDef(\pad_v12, { + arg freq = 220, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.7, + attack = 0.4, decay = 0.4, sustain = 0.8, release = 2.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v13.scd b/sound_algo/synth/pad/pad_v13.scd new file mode 100644 index 0000000..3563b99 --- /dev/null +++ b/sound_algo/synth/pad/pad_v13.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v13.scd -- SynthDef \pad_v13 // variation pad string saws +( +SynthDef(\pad_v13, { + arg freq = 220, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.4, + attack = 0.6, decay = 0.2, sustain = 0.6, release = 1.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v14.scd b/sound_algo/synth/pad/pad_v14.scd new file mode 100644 index 0000000..4b8ec7c --- /dev/null +++ b/sound_algo/synth/pad/pad_v14.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v14.scd -- SynthDef \pad_v14 // variation pad string saws +( +SynthDef(\pad_v14, { + arg freq = 220, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.5, + attack = 0.8, decay = 0.3, sustain = 0.7, release = 1.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v15.scd b/sound_algo/synth/pad/pad_v15.scd new file mode 100644 index 0000000..416447c --- /dev/null +++ b/sound_algo/synth/pad/pad_v15.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v15.scd -- SynthDef \pad_v15 // variation pad string saws +( +SynthDef(\pad_v15, { + arg freq = 220, gate = 1, detune = 0.022, + cutoff = 3600, rq = 0.6, + attack = 1.0, decay = 0.4, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v16.scd b/sound_algo/synth/pad/pad_v16.scd new file mode 100644 index 0000000..b128700 --- /dev/null +++ b/sound_algo/synth/pad/pad_v16.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v16.scd -- SynthDef \pad_v16 // variation pad string saws +( +SynthDef(\pad_v16, { + arg freq = 220, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.7, + attack = 0.2, decay = 0.2, sustain = 0.6, release = 2.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v17.scd b/sound_algo/synth/pad/pad_v17.scd new file mode 100644 index 0000000..07f9689 --- /dev/null +++ b/sound_algo/synth/pad/pad_v17.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v17.scd -- SynthDef \pad_v17 // variation pad string saws +( +SynthDef(\pad_v17, { + arg freq = 220, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.4, + attack = 0.4, decay = 0.3, sustain = 0.7, release = 1.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v18.scd b/sound_algo/synth/pad/pad_v18.scd new file mode 100644 index 0000000..d29598e --- /dev/null +++ b/sound_algo/synth/pad/pad_v18.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v18.scd -- SynthDef \pad_v18 // variation pad string saws +( +SynthDef(\pad_v18, { + arg freq = 220, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.5, + attack = 0.6, decay = 0.4, sustain = 0.8, release = 1.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v19.scd b/sound_algo/synth/pad/pad_v19.scd new file mode 100644 index 0000000..72851ea --- /dev/null +++ b/sound_algo/synth/pad/pad_v19.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v19.scd -- SynthDef \pad_v19 // variation pad string saws +( +SynthDef(\pad_v19, { + arg freq = 220, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.6, + attack = 0.8, decay = 0.2, sustain = 0.6, release = 2.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v2.scd b/sound_algo/synth/pad/pad_v2.scd new file mode 100644 index 0000000..71b4f61 --- /dev/null +++ b/sound_algo/synth/pad/pad_v2.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v2.scd -- SynthDef \pad_v2 // variation pad string saws +( +SynthDef(\pad_v2, { + arg freq = 220, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.5, + attack = 0.4, decay = 0.3, sustain = 0.7, release = 1.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v3.scd b/sound_algo/synth/pad/pad_v3.scd new file mode 100644 index 0000000..a9fc9da --- /dev/null +++ b/sound_algo/synth/pad/pad_v3.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v3.scd -- SynthDef \pad_v3 // variation pad string saws +( +SynthDef(\pad_v3, { + arg freq = 220, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.6, + attack = 0.6, decay = 0.4, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v4.scd b/sound_algo/synth/pad/pad_v4.scd new file mode 100644 index 0000000..e121d9e --- /dev/null +++ b/sound_algo/synth/pad/pad_v4.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v4.scd -- SynthDef \pad_v4 // variation pad string saws +( +SynthDef(\pad_v4, { + arg freq = 220, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.7, + attack = 0.8, decay = 0.2, sustain = 0.6, release = 2.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v5.scd b/sound_algo/synth/pad/pad_v5.scd new file mode 100644 index 0000000..d19372b --- /dev/null +++ b/sound_algo/synth/pad/pad_v5.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v5.scd -- SynthDef \pad_v5 // variation pad string saws +( +SynthDef(\pad_v5, { + arg freq = 220, gate = 1, detune = 0.022, + cutoff = 3600, rq = 0.4, + attack = 1.0, decay = 0.3, sustain = 0.7, release = 1.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v6.scd b/sound_algo/synth/pad/pad_v6.scd new file mode 100644 index 0000000..131f504 --- /dev/null +++ b/sound_algo/synth/pad/pad_v6.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v6.scd -- SynthDef \pad_v6 // variation pad string saws +( +SynthDef(\pad_v6, { + arg freq = 220, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.5, + attack = 0.2, decay = 0.4, sustain = 0.8, release = 1.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v7.scd b/sound_algo/synth/pad/pad_v7.scd new file mode 100644 index 0000000..d249e28 --- /dev/null +++ b/sound_algo/synth/pad/pad_v7.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v7.scd -- SynthDef \pad_v7 // variation pad string saws +( +SynthDef(\pad_v7, { + arg freq = 220, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.6, + attack = 0.4, decay = 0.2, sustain = 0.6, release = 2.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v8.scd b/sound_algo/synth/pad/pad_v8.scd new file mode 100644 index 0000000..8c16565 --- /dev/null +++ b/sound_algo/synth/pad/pad_v8.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v8.scd -- SynthDef \pad_v8 // variation pad string saws +( +SynthDef(\pad_v8, { + arg freq = 220, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.7, + attack = 0.6, decay = 0.3, sustain = 0.7, release = 2.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/pad_v9.scd b/sound_algo/synth/pad/pad_v9.scd new file mode 100644 index 0000000..d5e2c40 --- /dev/null +++ b/sound_algo/synth/pad/pad_v9.scd @@ -0,0 +1,21 @@ +// synth/pad/pad_v9.scd -- SynthDef \pad_v9 // variation pad string saws +( +SynthDef(\pad_v9, { + arg freq = 220, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.4, + attack = 0.8, decay = 0.4, sustain = 0.8, release = 1.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings.scd b/sound_algo/synth/pad/strings.scd new file mode 100644 index 0000000..6e44eb9 --- /dev/null +++ b/sound_algo/synth/pad/strings.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// synth/pad/strings.scd -- SynthDef \strings +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\strings, { + arg freq = 440, gate = 1, detune = 0.008, + cutoff = 3500, rq = 0.6, + attack = 0.3, decay = 0.2, sustain = 0.85, release = 1.2, + drive = 1.1, amp = 0.16, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + var f = freq * (1 + (LFNoise2.kr(0.3 + (i * 0.1)) * detune)); + Saw.ar(f) + (Pulse.ar(f * 1.005, 0.4) * 0.3); + }) * 0.15; + voices = RLPF.ar(voices, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (voices * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v1.scd b/sound_algo/synth/pad/strings_v1.scd new file mode 100644 index 0000000..5ee8360 --- /dev/null +++ b/sound_algo/synth/pad/strings_v1.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v1.scd -- SynthDef \strings_v1 // variation strings string saws +( +SynthDef(\strings_v1, { + arg freq = 330, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.4, + attack = 0.2, decay = 0.2, sustain = 0.6, release = 1.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v10.scd b/sound_algo/synth/pad/strings_v10.scd new file mode 100644 index 0000000..3ccc676 --- /dev/null +++ b/sound_algo/synth/pad/strings_v10.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v10.scd -- SynthDef \strings_v10 // variation strings string saws +( +SynthDef(\strings_v10, { + arg freq = 330, gate = 1, detune = 0.022, + cutoff = 3600, rq = 0.5, + attack = 1.0, decay = 0.2, sustain = 0.6, release = 1.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v11.scd b/sound_algo/synth/pad/strings_v11.scd new file mode 100644 index 0000000..ea30896 --- /dev/null +++ b/sound_algo/synth/pad/strings_v11.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v11.scd -- SynthDef \strings_v11 // variation strings string saws +( +SynthDef(\strings_v11, { + arg freq = 330, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.6, + attack = 0.2, decay = 0.3, sustain = 0.7, release = 2.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v12.scd b/sound_algo/synth/pad/strings_v12.scd new file mode 100644 index 0000000..60a5dbd --- /dev/null +++ b/sound_algo/synth/pad/strings_v12.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v12.scd -- SynthDef \strings_v12 // variation strings string saws +( +SynthDef(\strings_v12, { + arg freq = 330, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.7, + attack = 0.4, decay = 0.4, sustain = 0.8, release = 2.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v13.scd b/sound_algo/synth/pad/strings_v13.scd new file mode 100644 index 0000000..6f9fa08 --- /dev/null +++ b/sound_algo/synth/pad/strings_v13.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v13.scd -- SynthDef \strings_v13 // variation strings string saws +( +SynthDef(\strings_v13, { + arg freq = 330, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.4, + attack = 0.6, decay = 0.2, sustain = 0.6, release = 1.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v14.scd b/sound_algo/synth/pad/strings_v14.scd new file mode 100644 index 0000000..74ad405 --- /dev/null +++ b/sound_algo/synth/pad/strings_v14.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v14.scd -- SynthDef \strings_v14 // variation strings string saws +( +SynthDef(\strings_v14, { + arg freq = 330, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.5, + attack = 0.8, decay = 0.3, sustain = 0.7, release = 1.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v15.scd b/sound_algo/synth/pad/strings_v15.scd new file mode 100644 index 0000000..cf816a8 --- /dev/null +++ b/sound_algo/synth/pad/strings_v15.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v15.scd -- SynthDef \strings_v15 // variation strings string saws +( +SynthDef(\strings_v15, { + arg freq = 330, gate = 1, detune = 0.022, + cutoff = 3600, rq = 0.6, + attack = 1.0, decay = 0.4, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v16.scd b/sound_algo/synth/pad/strings_v16.scd new file mode 100644 index 0000000..a8b44e3 --- /dev/null +++ b/sound_algo/synth/pad/strings_v16.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v16.scd -- SynthDef \strings_v16 // variation strings string saws +( +SynthDef(\strings_v16, { + arg freq = 330, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.7, + attack = 0.2, decay = 0.2, sustain = 0.6, release = 2.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v17.scd b/sound_algo/synth/pad/strings_v17.scd new file mode 100644 index 0000000..b8c70d9 --- /dev/null +++ b/sound_algo/synth/pad/strings_v17.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v17.scd -- SynthDef \strings_v17 // variation strings string saws +( +SynthDef(\strings_v17, { + arg freq = 330, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.4, + attack = 0.4, decay = 0.3, sustain = 0.7, release = 1.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v18.scd b/sound_algo/synth/pad/strings_v18.scd new file mode 100644 index 0000000..04a8081 --- /dev/null +++ b/sound_algo/synth/pad/strings_v18.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v18.scd -- SynthDef \strings_v18 // variation strings string saws +( +SynthDef(\strings_v18, { + arg freq = 330, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.5, + attack = 0.6, decay = 0.4, sustain = 0.8, release = 1.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v19.scd b/sound_algo/synth/pad/strings_v19.scd new file mode 100644 index 0000000..a5e8075 --- /dev/null +++ b/sound_algo/synth/pad/strings_v19.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v19.scd -- SynthDef \strings_v19 // variation strings string saws +( +SynthDef(\strings_v19, { + arg freq = 330, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.6, + attack = 0.8, decay = 0.2, sustain = 0.6, release = 2.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v2.scd b/sound_algo/synth/pad/strings_v2.scd new file mode 100644 index 0000000..5ca19d4 --- /dev/null +++ b/sound_algo/synth/pad/strings_v2.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v2.scd -- SynthDef \strings_v2 // variation strings string saws +( +SynthDef(\strings_v2, { + arg freq = 330, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.5, + attack = 0.4, decay = 0.3, sustain = 0.7, release = 1.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v3.scd b/sound_algo/synth/pad/strings_v3.scd new file mode 100644 index 0000000..f5b4cb4 --- /dev/null +++ b/sound_algo/synth/pad/strings_v3.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v3.scd -- SynthDef \strings_v3 // variation strings string saws +( +SynthDef(\strings_v3, { + arg freq = 330, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.6, + attack = 0.6, decay = 0.4, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v4.scd b/sound_algo/synth/pad/strings_v4.scd new file mode 100644 index 0000000..7a176e8 --- /dev/null +++ b/sound_algo/synth/pad/strings_v4.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v4.scd -- SynthDef \strings_v4 // variation strings string saws +( +SynthDef(\strings_v4, { + arg freq = 330, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.7, + attack = 0.8, decay = 0.2, sustain = 0.6, release = 2.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v5.scd b/sound_algo/synth/pad/strings_v5.scd new file mode 100644 index 0000000..b39f0e6 --- /dev/null +++ b/sound_algo/synth/pad/strings_v5.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v5.scd -- SynthDef \strings_v5 // variation strings string saws +( +SynthDef(\strings_v5, { + arg freq = 330, gate = 1, detune = 0.022, + cutoff = 3600, rq = 0.4, + attack = 1.0, decay = 0.3, sustain = 0.7, release = 1.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v6.scd b/sound_algo/synth/pad/strings_v6.scd new file mode 100644 index 0000000..f29cd0e --- /dev/null +++ b/sound_algo/synth/pad/strings_v6.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v6.scd -- SynthDef \strings_v6 // variation strings string saws +( +SynthDef(\strings_v6, { + arg freq = 330, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.5, + attack = 0.2, decay = 0.4, sustain = 0.8, release = 1.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v7.scd b/sound_algo/synth/pad/strings_v7.scd new file mode 100644 index 0000000..1dda8ac --- /dev/null +++ b/sound_algo/synth/pad/strings_v7.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v7.scd -- SynthDef \strings_v7 // variation strings string saws +( +SynthDef(\strings_v7, { + arg freq = 330, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.6, + attack = 0.4, decay = 0.2, sustain = 0.6, release = 2.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v8.scd b/sound_algo/synth/pad/strings_v8.scd new file mode 100644 index 0000000..3e7c429 --- /dev/null +++ b/sound_algo/synth/pad/strings_v8.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v8.scd -- SynthDef \strings_v8 // variation strings string saws +( +SynthDef(\strings_v8, { + arg freq = 330, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.7, + attack = 0.6, decay = 0.3, sustain = 0.7, release = 2.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/strings_v9.scd b/sound_algo/synth/pad/strings_v9.scd new file mode 100644 index 0000000..1428b58 --- /dev/null +++ b/sound_algo/synth/pad/strings_v9.scd @@ -0,0 +1,21 @@ +// synth/pad/strings_v9.scd -- SynthDef \strings_v9 // variation strings string saws +( +SynthDef(\strings_v9, { + arg freq = 330, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.4, + attack = 0.8, decay = 0.4, sustain = 0.8, release = 1.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad.scd b/sound_algo/synth/pad/vocal_pad.scd new file mode 100644 index 0000000..a1a2d33 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad.scd @@ -0,0 +1,29 @@ +// ===================================================================== +// synth/pad/vocal_pad.scd -- SynthDef \vocalPad +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\vocalPad, { + arg freq = 220, gate = 1, + // Formants pour voyelle "ah" : 700/1220/2600 + f1 = 700, f2 = 1220, f3 = 2600, + attack = 0.4, decay = 0.3, sustain = 0.7, release = 1.5, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, src, vib; + vib = freq * (1 + (SinOsc.kr(4.5).range(-1, 1) * + EnvGen.kr(Env([0, 0, 0.012], [0.3, 0.5])))); + src = (Saw.ar(vib) * 0.5) + (SinOsc.ar(vib * 0.5) * 0.4); + sig = (BPF.ar(src, f1, 0.12) * 1.0) + + (BPF.ar(src, f2, 0.18) * 0.6) + + (BPF.ar(src, f3, 0.30) * 0.3); + // Faux chorus stereo + sig = [DelayC.ar(sig, 0.04, SinOsc.kr(0.5, 0).range(0.008, 0.025)), + DelayC.ar(sig, 0.04, SinOsc.kr(0.55, pi).range(0.008, 0.025))]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v1.scd b/sound_algo/synth/pad/vocal_pad_v1.scd new file mode 100644 index 0000000..71f3aa4 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v1.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v1.scd -- SynthDef \vocal_pad_v1 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v1, { + arg freq = 330, gate = 1, detune = 0.01, + formant1 = 600, formant2 = 1800, + attack = 0.4, decay = 0.3, sustain = 0.6, release = 1.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v10.scd b/sound_algo/synth/pad/vocal_pad_v10.scd new file mode 100644 index 0000000..25fac3c --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v10.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v10.scd -- SynthDef \vocal_pad_v10 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v10, { + arg freq = 330, gate = 1, detune = 0.014, + formant1 = 1000, formant2 = 2600, + attack = 0.6, decay = 0.3, sustain = 0.6, release = 2.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v11.scd b/sound_algo/synth/pad/vocal_pad_v11.scd new file mode 100644 index 0000000..94ba778 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v11.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v11.scd -- SynthDef \vocal_pad_v11 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v11, { + arg freq = 330, gate = 1, detune = 0.018, + formant1 = 600, formant2 = 1800, + attack = 0.8, decay = 0.5, sustain = 0.7, release = 2.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v12.scd b/sound_algo/synth/pad/vocal_pad_v12.scd new file mode 100644 index 0000000..dffaa74 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v12.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v12.scd -- SynthDef \vocal_pad_v12 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v12, { + arg freq = 330, gate = 1, detune = 0.022, + formant1 = 700, formant2 = 2000, + attack = 1.0, decay = 0.7, sustain = 0.8, release = 3.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v13.scd b/sound_algo/synth/pad/vocal_pad_v13.scd new file mode 100644 index 0000000..dc5d69a --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v13.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v13.scd -- SynthDef \vocal_pad_v13 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v13, { + arg freq = 330, gate = 1, detune = 0.01, + formant1 = 800, formant2 = 2200, + attack = 0.4, decay = 0.3, sustain = 0.6, release = 1.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v14.scd b/sound_algo/synth/pad/vocal_pad_v14.scd new file mode 100644 index 0000000..a327b28 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v14.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v14.scd -- SynthDef \vocal_pad_v14 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v14, { + arg freq = 330, gate = 1, detune = 0.014, + formant1 = 900, formant2 = 2400, + attack = 0.6, decay = 0.5, sustain = 0.7, release = 2.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v15.scd b/sound_algo/synth/pad/vocal_pad_v15.scd new file mode 100644 index 0000000..f448426 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v15.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v15.scd -- SynthDef \vocal_pad_v15 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v15, { + arg freq = 330, gate = 1, detune = 0.018, + formant1 = 1000, formant2 = 2600, + attack = 0.8, decay = 0.7, sustain = 0.8, release = 2.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v16.scd b/sound_algo/synth/pad/vocal_pad_v16.scd new file mode 100644 index 0000000..02568d6 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v16.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v16.scd -- SynthDef \vocal_pad_v16 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v16, { + arg freq = 330, gate = 1, detune = 0.022, + formant1 = 600, formant2 = 1800, + attack = 1.0, decay = 0.3, sustain = 0.6, release = 3.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v17.scd b/sound_algo/synth/pad/vocal_pad_v17.scd new file mode 100644 index 0000000..3ec5aab --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v17.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v17.scd -- SynthDef \vocal_pad_v17 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v17, { + arg freq = 330, gate = 1, detune = 0.01, + formant1 = 700, formant2 = 2000, + attack = 0.4, decay = 0.5, sustain = 0.7, release = 1.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v18.scd b/sound_algo/synth/pad/vocal_pad_v18.scd new file mode 100644 index 0000000..a476953 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v18.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v18.scd -- SynthDef \vocal_pad_v18 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v18, { + arg freq = 330, gate = 1, detune = 0.014, + formant1 = 800, formant2 = 2200, + attack = 0.6, decay = 0.7, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v19.scd b/sound_algo/synth/pad/vocal_pad_v19.scd new file mode 100644 index 0000000..54be35c --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v19.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v19.scd -- SynthDef \vocal_pad_v19 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v19, { + arg freq = 330, gate = 1, detune = 0.018, + formant1 = 900, formant2 = 2400, + attack = 0.8, decay = 0.3, sustain = 0.6, release = 2.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v2.scd b/sound_algo/synth/pad/vocal_pad_v2.scd new file mode 100644 index 0000000..2ecea5f --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v2.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v2.scd -- SynthDef \vocal_pad_v2 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v2, { + arg freq = 330, gate = 1, detune = 0.014, + formant1 = 700, formant2 = 2000, + attack = 0.6, decay = 0.5, sustain = 0.7, release = 2.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v3.scd b/sound_algo/synth/pad/vocal_pad_v3.scd new file mode 100644 index 0000000..d170caf --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v3.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v3.scd -- SynthDef \vocal_pad_v3 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v3, { + arg freq = 330, gate = 1, detune = 0.018, + formant1 = 800, formant2 = 2200, + attack = 0.8, decay = 0.7, sustain = 0.8, release = 2.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v4.scd b/sound_algo/synth/pad/vocal_pad_v4.scd new file mode 100644 index 0000000..7a8d11d --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v4.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v4.scd -- SynthDef \vocal_pad_v4 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v4, { + arg freq = 330, gate = 1, detune = 0.022, + formant1 = 900, formant2 = 2400, + attack = 1.0, decay = 0.3, sustain = 0.6, release = 3.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v5.scd b/sound_algo/synth/pad/vocal_pad_v5.scd new file mode 100644 index 0000000..f4d7e1a --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v5.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v5.scd -- SynthDef \vocal_pad_v5 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v5, { + arg freq = 330, gate = 1, detune = 0.01, + formant1 = 1000, formant2 = 2600, + attack = 0.4, decay = 0.5, sustain = 0.7, release = 1.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v6.scd b/sound_algo/synth/pad/vocal_pad_v6.scd new file mode 100644 index 0000000..b185913 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v6.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v6.scd -- SynthDef \vocal_pad_v6 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v6, { + arg freq = 330, gate = 1, detune = 0.014, + formant1 = 600, formant2 = 1800, + attack = 0.6, decay = 0.7, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v7.scd b/sound_algo/synth/pad/vocal_pad_v7.scd new file mode 100644 index 0000000..edc2675 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v7.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v7.scd -- SynthDef \vocal_pad_v7 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v7, { + arg freq = 330, gate = 1, detune = 0.018, + formant1 = 700, formant2 = 2000, + attack = 0.8, decay = 0.3, sustain = 0.6, release = 2.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v8.scd b/sound_algo/synth/pad/vocal_pad_v8.scd new file mode 100644 index 0000000..2709847 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v8.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v8.scd -- SynthDef \vocal_pad_v8 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v8, { + arg freq = 330, gate = 1, detune = 0.022, + formant1 = 800, formant2 = 2200, + attack = 1.0, decay = 0.5, sustain = 0.7, release = 3.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(4, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/vocal_pad_v9.scd b/sound_algo/synth/pad/vocal_pad_v9.scd new file mode 100644 index 0000000..e21fd41 --- /dev/null +++ b/sound_algo/synth/pad/vocal_pad_v9.scd @@ -0,0 +1,19 @@ +// synth/pad/vocal_pad_v9.scd -- SynthDef \vocal_pad_v9 // variation vocal_pad choir formant +( +SynthDef(\vocal_pad_v9, { + arg freq = 330, gate = 1, detune = 0.01, + formant1 = 900, formant2 = 2400, + attack = 0.4, decay = 0.7, sustain = 0.8, release = 1.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, voices; + voices = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune * (i + 1) * 0.5))) + }) * 0.18; + sig = BPF.ar(voices, formant1, 0.4) + BPF.ar(voices, formant2, 0.5); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad.scd b/sound_algo/synth/pad/warm_pad.scd new file mode 100644 index 0000000..243c713 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad.scd @@ -0,0 +1,28 @@ +// ===================================================================== +// synth/pad/warm_pad.scd -- SynthDef \warmPad +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\warmPad, { + arg freq = 220, gate = 1, detune = 0.014, + cutoff = 1800, rq = 0.7, + attack = 0.6, decay = 0.4, sustain = 0.8, release = 2.0, + drive = 1.0, amp = 0.14, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, oscs, chorusL, chorusR; + // 7 oscillateurs detunes + oscs = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.18; + oscs = LPF.ar(oscs, cutoff); + // Chorus stereo profond + chorusL = DelayC.ar(oscs, 0.05, SinOsc.kr(0.3, 0).range(0.005, 0.025)); + chorusR = DelayC.ar(oscs, 0.05, SinOsc.kr(0.4, pi).range(0.005, 0.025)); + sig = [oscs + (chorusL * 0.5), oscs + (chorusR * 0.5)]; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig * env * amp * duck); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v1.scd b/sound_algo/synth/pad/warm_pad_v1.scd new file mode 100644 index 0000000..ef3c835 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v1.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v1.scd -- SynthDef \warm_pad_v1 // variation warm_pad string saws +( +SynthDef(\warm_pad_v1, { + arg freq = 220, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.4, + attack = 0.2, decay = 0.2, sustain = 0.6, release = 1.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v10.scd b/sound_algo/synth/pad/warm_pad_v10.scd new file mode 100644 index 0000000..b63c972 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v10.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v10.scd -- SynthDef \warm_pad_v10 // variation warm_pad string saws +( +SynthDef(\warm_pad_v10, { + arg freq = 220, gate = 1, detune = 0.022, + cutoff = 3600, rq = 0.5, + attack = 1.0, decay = 0.2, sustain = 0.6, release = 1.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v11.scd b/sound_algo/synth/pad/warm_pad_v11.scd new file mode 100644 index 0000000..683a2ec --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v11.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v11.scd -- SynthDef \warm_pad_v11 // variation warm_pad string saws +( +SynthDef(\warm_pad_v11, { + arg freq = 220, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.6, + attack = 0.2, decay = 0.3, sustain = 0.7, release = 2.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v12.scd b/sound_algo/synth/pad/warm_pad_v12.scd new file mode 100644 index 0000000..97fd397 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v12.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v12.scd -- SynthDef \warm_pad_v12 // variation warm_pad string saws +( +SynthDef(\warm_pad_v12, { + arg freq = 220, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.7, + attack = 0.4, decay = 0.4, sustain = 0.8, release = 2.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v13.scd b/sound_algo/synth/pad/warm_pad_v13.scd new file mode 100644 index 0000000..e3a5c56 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v13.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v13.scd -- SynthDef \warm_pad_v13 // variation warm_pad string saws +( +SynthDef(\warm_pad_v13, { + arg freq = 220, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.4, + attack = 0.6, decay = 0.2, sustain = 0.6, release = 1.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v14.scd b/sound_algo/synth/pad/warm_pad_v14.scd new file mode 100644 index 0000000..d34b953 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v14.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v14.scd -- SynthDef \warm_pad_v14 // variation warm_pad string saws +( +SynthDef(\warm_pad_v14, { + arg freq = 220, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.5, + attack = 0.8, decay = 0.3, sustain = 0.7, release = 1.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v15.scd b/sound_algo/synth/pad/warm_pad_v15.scd new file mode 100644 index 0000000..b43d6d8 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v15.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v15.scd -- SynthDef \warm_pad_v15 // variation warm_pad string saws +( +SynthDef(\warm_pad_v15, { + arg freq = 220, gate = 1, detune = 0.022, + cutoff = 3600, rq = 0.6, + attack = 1.0, decay = 0.4, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v16.scd b/sound_algo/synth/pad/warm_pad_v16.scd new file mode 100644 index 0000000..86d84fe --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v16.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v16.scd -- SynthDef \warm_pad_v16 // variation warm_pad string saws +( +SynthDef(\warm_pad_v16, { + arg freq = 220, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.7, + attack = 0.2, decay = 0.2, sustain = 0.6, release = 2.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v17.scd b/sound_algo/synth/pad/warm_pad_v17.scd new file mode 100644 index 0000000..2ce3281 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v17.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v17.scd -- SynthDef \warm_pad_v17 // variation warm_pad string saws +( +SynthDef(\warm_pad_v17, { + arg freq = 220, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.4, + attack = 0.4, decay = 0.3, sustain = 0.7, release = 1.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v18.scd b/sound_algo/synth/pad/warm_pad_v18.scd new file mode 100644 index 0000000..b3946a6 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v18.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v18.scd -- SynthDef \warm_pad_v18 // variation warm_pad string saws +( +SynthDef(\warm_pad_v18, { + arg freq = 220, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.5, + attack = 0.6, decay = 0.4, sustain = 0.8, release = 1.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v19.scd b/sound_algo/synth/pad/warm_pad_v19.scd new file mode 100644 index 0000000..313f358 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v19.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v19.scd -- SynthDef \warm_pad_v19 // variation warm_pad string saws +( +SynthDef(\warm_pad_v19, { + arg freq = 220, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.6, + attack = 0.8, decay = 0.2, sustain = 0.6, release = 2.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v2.scd b/sound_algo/synth/pad/warm_pad_v2.scd new file mode 100644 index 0000000..21e8159 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v2.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v2.scd -- SynthDef \warm_pad_v2 // variation warm_pad string saws +( +SynthDef(\warm_pad_v2, { + arg freq = 220, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.5, + attack = 0.4, decay = 0.3, sustain = 0.7, release = 1.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v3.scd b/sound_algo/synth/pad/warm_pad_v3.scd new file mode 100644 index 0000000..b24c078 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v3.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v3.scd -- SynthDef \warm_pad_v3 // variation warm_pad string saws +( +SynthDef(\warm_pad_v3, { + arg freq = 220, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.6, + attack = 0.6, decay = 0.4, sustain = 0.8, release = 2.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v4.scd b/sound_algo/synth/pad/warm_pad_v4.scd new file mode 100644 index 0000000..50e1d03 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v4.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v4.scd -- SynthDef \warm_pad_v4 // variation warm_pad string saws +( +SynthDef(\warm_pad_v4, { + arg freq = 220, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.7, + attack = 0.8, decay = 0.2, sustain = 0.6, release = 2.5, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v5.scd b/sound_algo/synth/pad/warm_pad_v5.scd new file mode 100644 index 0000000..4dcded5 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v5.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v5.scd -- SynthDef \warm_pad_v5 // variation warm_pad string saws +( +SynthDef(\warm_pad_v5, { + arg freq = 220, gate = 1, detune = 0.022, + cutoff = 3600, rq = 0.4, + attack = 1.0, decay = 0.3, sustain = 0.7, release = 1.0, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v6.scd b/sound_algo/synth/pad/warm_pad_v6.scd new file mode 100644 index 0000000..1fe5910 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v6.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v6.scd -- SynthDef \warm_pad_v6 // variation warm_pad string saws +( +SynthDef(\warm_pad_v6, { + arg freq = 220, gate = 1, detune = 0.006, + cutoff = 1200, rq = 0.5, + attack = 0.2, decay = 0.4, sustain = 0.8, release = 1.5, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.3, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v7.scd b/sound_algo/synth/pad/warm_pad_v7.scd new file mode 100644 index 0000000..b23a18b --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v7.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v7.scd -- SynthDef \warm_pad_v7 // variation warm_pad string saws +( +SynthDef(\warm_pad_v7, { + arg freq = 220, gate = 1, detune = 0.01, + cutoff = 1800, rq = 0.6, + attack = 0.4, decay = 0.2, sustain = 0.6, release = 2.0, + drive = 1.0, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(3, { |i| + Saw.ar(freq * (1 + ((i - 1) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.4, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v8.scd b/sound_algo/synth/pad/warm_pad_v8.scd new file mode 100644 index 0000000..d856454 --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v8.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v8.scd -- SynthDef \warm_pad_v8 // variation warm_pad string saws +( +SynthDef(\warm_pad_v8, { + arg freq = 220, gate = 1, detune = 0.014, + cutoff = 2400, rq = 0.7, + attack = 0.6, decay = 0.3, sustain = 0.7, release = 2.5, + drive = 1.1, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(5, { |i| + Saw.ar(freq * (1 + ((i - 2) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.5, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/pad/warm_pad_v9.scd b/sound_algo/synth/pad/warm_pad_v9.scd new file mode 100644 index 0000000..b10727d --- /dev/null +++ b/sound_algo/synth/pad/warm_pad_v9.scd @@ -0,0 +1,21 @@ +// synth/pad/warm_pad_v9.scd -- SynthDef \warm_pad_v9 // variation warm_pad string saws +( +SynthDef(\warm_pad_v9, { + arg freq = 220, gate = 1, detune = 0.018, + cutoff = 3000, rq = 0.4, + attack = 0.8, decay = 0.4, sustain = 0.8, release = 1.0, + drive = 1.2, amp = 0.15, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck; + sig = Mix.fill(7, { |i| + Saw.ar(freq * (1 + ((i - 3) * detune))) + }) * 0.22; + sig = RLPF.ar(sig, cutoff, rq); + sig = sig + DelayC.ar(sig, 0.04, + SinOsc.kr(0.2, 0).range(0.01, 0.03)); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v1.scd b/sound_algo/synth/world/didgeridoo_world_v1.scd new file mode 100644 index 0000000..7d212db --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v1.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v1.scd -- SynthDef \didgeridoo_world_v1 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v1, { + arg freq = 70, gate = 1, formantFreq = 200, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(3).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 800); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v10.scd b/sound_algo/synth/world/didgeridoo_world_v10.scd new file mode 100644 index 0000000..c790177 --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v10.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v10.scd -- SynthDef \didgeridoo_world_v10 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v10, { + arg freq = 70, gate = 1, formantFreq = 600, + attack = 0.05, decay = 0.5, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(12).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1200); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v11.scd b/sound_algo/synth/world/didgeridoo_world_v11.scd new file mode 100644 index 0000000..f6075f5 --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v11.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v11.scd -- SynthDef \didgeridoo_world_v11 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v11, { + arg freq = 70, gate = 1, formantFreq = 200, + attack = 0.1, decay = 0.3, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(3).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1600); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v12.scd b/sound_algo/synth/world/didgeridoo_world_v12.scd new file mode 100644 index 0000000..53bb065 --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v12.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v12.scd -- SynthDef \didgeridoo_world_v12 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v12, { + arg freq = 70, gate = 1, formantFreq = 300, + attack = 0.2, decay = 0.5, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(5).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 2000); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v13.scd b/sound_algo/synth/world/didgeridoo_world_v13.scd new file mode 100644 index 0000000..9864b3f --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v13.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v13.scd -- SynthDef \didgeridoo_world_v13 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v13, { + arg freq = 70, gate = 1, formantFreq = 400, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(7).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 800); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v14.scd b/sound_algo/synth/world/didgeridoo_world_v14.scd new file mode 100644 index 0000000..8f54b52 --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v14.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v14.scd -- SynthDef \didgeridoo_world_v14 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v14, { + arg freq = 70, gate = 1, formantFreq = 500, + attack = 0.1, decay = 0.5, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(9).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1200); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v15.scd b/sound_algo/synth/world/didgeridoo_world_v15.scd new file mode 100644 index 0000000..7910a84 --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v15.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v15.scd -- SynthDef \didgeridoo_world_v15 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v15, { + arg freq = 70, gate = 1, formantFreq = 600, + attack = 0.2, decay = 0.3, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(12).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1600); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v16.scd b/sound_algo/synth/world/didgeridoo_world_v16.scd new file mode 100644 index 0000000..01ca92e --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v16.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v16.scd -- SynthDef \didgeridoo_world_v16 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v16, { + arg freq = 70, gate = 1, formantFreq = 200, + attack = 0.05, decay = 0.5, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(3).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 2000); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v17.scd b/sound_algo/synth/world/didgeridoo_world_v17.scd new file mode 100644 index 0000000..2d6132e --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v17.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v17.scd -- SynthDef \didgeridoo_world_v17 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v17, { + arg freq = 70, gate = 1, formantFreq = 300, + attack = 0.1, decay = 0.3, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(5).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 800); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v18.scd b/sound_algo/synth/world/didgeridoo_world_v18.scd new file mode 100644 index 0000000..28a3264 --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v18.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v18.scd -- SynthDef \didgeridoo_world_v18 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v18, { + arg freq = 70, gate = 1, formantFreq = 400, + attack = 0.2, decay = 0.5, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(7).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1200); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v19.scd b/sound_algo/synth/world/didgeridoo_world_v19.scd new file mode 100644 index 0000000..1bead47 --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v19.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v19.scd -- SynthDef \didgeridoo_world_v19 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v19, { + arg freq = 70, gate = 1, formantFreq = 500, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(9).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1600); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v2.scd b/sound_algo/synth/world/didgeridoo_world_v2.scd new file mode 100644 index 0000000..bedd439 --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v2.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v2.scd -- SynthDef \didgeridoo_world_v2 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v2, { + arg freq = 70, gate = 1, formantFreq = 300, + attack = 0.1, decay = 0.5, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(5).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1200); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v3.scd b/sound_algo/synth/world/didgeridoo_world_v3.scd new file mode 100644 index 0000000..61ef554 --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v3.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v3.scd -- SynthDef \didgeridoo_world_v3 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v3, { + arg freq = 70, gate = 1, formantFreq = 400, + attack = 0.2, decay = 0.3, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(7).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1600); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v4.scd b/sound_algo/synth/world/didgeridoo_world_v4.scd new file mode 100644 index 0000000..00f9450 --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v4.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v4.scd -- SynthDef \didgeridoo_world_v4 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v4, { + arg freq = 70, gate = 1, formantFreq = 500, + attack = 0.05, decay = 0.5, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(9).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 2000); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v5.scd b/sound_algo/synth/world/didgeridoo_world_v5.scd new file mode 100644 index 0000000..9c2142e --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v5.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v5.scd -- SynthDef \didgeridoo_world_v5 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v5, { + arg freq = 70, gate = 1, formantFreq = 600, + attack = 0.1, decay = 0.3, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(12).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 800); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v6.scd b/sound_algo/synth/world/didgeridoo_world_v6.scd new file mode 100644 index 0000000..2a7f37b --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v6.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v6.scd -- SynthDef \didgeridoo_world_v6 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v6, { + arg freq = 70, gate = 1, formantFreq = 200, + attack = 0.2, decay = 0.5, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(3).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1200); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v7.scd b/sound_algo/synth/world/didgeridoo_world_v7.scd new file mode 100644 index 0000000..5029040 --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v7.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v7.scd -- SynthDef \didgeridoo_world_v7 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v7, { + arg freq = 70, gate = 1, formantFreq = 300, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(5).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1600); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v8.scd b/sound_algo/synth/world/didgeridoo_world_v8.scd new file mode 100644 index 0000000..6718e0d --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v8.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v8.scd -- SynthDef \didgeridoo_world_v8 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v8, { + arg freq = 70, gate = 1, formantFreq = 400, + attack = 0.1, decay = 0.5, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(7).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 2000); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/didgeridoo_world_v9.scd b/sound_algo/synth/world/didgeridoo_world_v9.scd new file mode 100644 index 0000000..3403b5a --- /dev/null +++ b/sound_algo/synth/world/didgeridoo_world_v9.scd @@ -0,0 +1,20 @@ +// synth/world/didgeridoo_world_v9.scd -- SynthDef \didgeridoo_world_v9 // variation didgeridoo_world drone formant +( +SynthDef(\didgeridoo_world_v9, { + arg freq = 70, gate = 1, formantFreq = 500, + attack = 0.2, decay = 0.3, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(9).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 800); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu.scd b/sound_algo/synth/world/erhu.scd new file mode 100644 index 0000000..8bd145f --- /dev/null +++ b/sound_algo/synth/world/erhu.scd @@ -0,0 +1,24 @@ +// ===================================================================== +// synth/world/erhu.scd -- SynthDef \erhu +// Extracted from asia.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\erhu, { + arg freq = 440, gate = 1, + cutoff = 2500, rq = 0.4, + vibratoRate = 5.5, vibratoDepth = 0.015, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.3, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, vibFreq; + // Vibrato sinusoidal (apres petit delay pour entrer doucement) + vibFreq = freq * (1 + (SinOsc.kr(vibratoRate, + EnvGen.kr(Env([0, 0, 1], [0.1, 0.3])) * pi) * vibratoDepth)); + sig = (Saw.ar(vibFreq) * 0.6) + (Pulse.ar(vibFreq * 1.005, 0.4) * 0.4); + sig = RLPF.ar(sig, cutoff, rq); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v1.scd b/sound_algo/synth/world/erhu_v1.scd new file mode 100644 index 0000000..cc6dba6 --- /dev/null +++ b/sound_algo/synth/world/erhu_v1.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v1.scd -- SynthDef \erhu_v1 // variation erhu flute +( +SynthDef(\erhu_v1, { + arg freq = 440, gate = 1, breath = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(4, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v10.scd b/sound_algo/synth/world/erhu_v10.scd new file mode 100644 index 0000000..8c1bb3e --- /dev/null +++ b/sound_algo/synth/world/erhu_v10.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v10.scd -- SynthDef \erhu_v10 // variation erhu flute +( +SynthDef(\erhu_v10, { + arg freq = 440, gate = 1, breath = 0.1, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(5, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v11.scd b/sound_algo/synth/world/erhu_v11.scd new file mode 100644 index 0000000..73375a7 --- /dev/null +++ b/sound_algo/synth/world/erhu_v11.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v11.scd -- SynthDef \erhu_v11 // variation erhu flute +( +SynthDef(\erhu_v11, { + arg freq = 440, gate = 1, breath = 0.15, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(6, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v12.scd b/sound_algo/synth/world/erhu_v12.scd new file mode 100644 index 0000000..211c6a9 --- /dev/null +++ b/sound_algo/synth/world/erhu_v12.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v12.scd -- SynthDef \erhu_v12 // variation erhu flute +( +SynthDef(\erhu_v12, { + arg freq = 440, gate = 1, breath = 0.2, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(7, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v13.scd b/sound_algo/synth/world/erhu_v13.scd new file mode 100644 index 0000000..7c5b085 --- /dev/null +++ b/sound_algo/synth/world/erhu_v13.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v13.scd -- SynthDef \erhu_v13 // variation erhu flute +( +SynthDef(\erhu_v13, { + arg freq = 440, gate = 1, breath = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(4, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v14.scd b/sound_algo/synth/world/erhu_v14.scd new file mode 100644 index 0000000..0d81e09 --- /dev/null +++ b/sound_algo/synth/world/erhu_v14.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v14.scd -- SynthDef \erhu_v14 // variation erhu flute +( +SynthDef(\erhu_v14, { + arg freq = 440, gate = 1, breath = 0.1, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(5, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v15.scd b/sound_algo/synth/world/erhu_v15.scd new file mode 100644 index 0000000..aed4ebd --- /dev/null +++ b/sound_algo/synth/world/erhu_v15.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v15.scd -- SynthDef \erhu_v15 // variation erhu flute +( +SynthDef(\erhu_v15, { + arg freq = 440, gate = 1, breath = 0.15, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(6, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v16.scd b/sound_algo/synth/world/erhu_v16.scd new file mode 100644 index 0000000..3edb2ef --- /dev/null +++ b/sound_algo/synth/world/erhu_v16.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v16.scd -- SynthDef \erhu_v16 // variation erhu flute +( +SynthDef(\erhu_v16, { + arg freq = 440, gate = 1, breath = 0.2, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(7, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v17.scd b/sound_algo/synth/world/erhu_v17.scd new file mode 100644 index 0000000..ecb914f --- /dev/null +++ b/sound_algo/synth/world/erhu_v17.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v17.scd -- SynthDef \erhu_v17 // variation erhu flute +( +SynthDef(\erhu_v17, { + arg freq = 440, gate = 1, breath = 0.05, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(4, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v18.scd b/sound_algo/synth/world/erhu_v18.scd new file mode 100644 index 0000000..91cf7ee --- /dev/null +++ b/sound_algo/synth/world/erhu_v18.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v18.scd -- SynthDef \erhu_v18 // variation erhu flute +( +SynthDef(\erhu_v18, { + arg freq = 440, gate = 1, breath = 0.1, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(5, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v19.scd b/sound_algo/synth/world/erhu_v19.scd new file mode 100644 index 0000000..7751b55 --- /dev/null +++ b/sound_algo/synth/world/erhu_v19.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v19.scd -- SynthDef \erhu_v19 // variation erhu flute +( +SynthDef(\erhu_v19, { + arg freq = 440, gate = 1, breath = 0.15, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(6, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v2.scd b/sound_algo/synth/world/erhu_v2.scd new file mode 100644 index 0000000..d7f24cd --- /dev/null +++ b/sound_algo/synth/world/erhu_v2.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v2.scd -- SynthDef \erhu_v2 // variation erhu flute +( +SynthDef(\erhu_v2, { + arg freq = 440, gate = 1, breath = 0.1, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(5, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v3.scd b/sound_algo/synth/world/erhu_v3.scd new file mode 100644 index 0000000..8147c3a --- /dev/null +++ b/sound_algo/synth/world/erhu_v3.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v3.scd -- SynthDef \erhu_v3 // variation erhu flute +( +SynthDef(\erhu_v3, { + arg freq = 440, gate = 1, breath = 0.15, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(6, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v4.scd b/sound_algo/synth/world/erhu_v4.scd new file mode 100644 index 0000000..75813ee --- /dev/null +++ b/sound_algo/synth/world/erhu_v4.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v4.scd -- SynthDef \erhu_v4 // variation erhu flute +( +SynthDef(\erhu_v4, { + arg freq = 440, gate = 1, breath = 0.2, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(7, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v5.scd b/sound_algo/synth/world/erhu_v5.scd new file mode 100644 index 0000000..2665bab --- /dev/null +++ b/sound_algo/synth/world/erhu_v5.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v5.scd -- SynthDef \erhu_v5 // variation erhu flute +( +SynthDef(\erhu_v5, { + arg freq = 440, gate = 1, breath = 0.05, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(4, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v6.scd b/sound_algo/synth/world/erhu_v6.scd new file mode 100644 index 0000000..4435cd5 --- /dev/null +++ b/sound_algo/synth/world/erhu_v6.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v6.scd -- SynthDef \erhu_v6 // variation erhu flute +( +SynthDef(\erhu_v6, { + arg freq = 440, gate = 1, breath = 0.1, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(5, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v7.scd b/sound_algo/synth/world/erhu_v7.scd new file mode 100644 index 0000000..57de204 --- /dev/null +++ b/sound_algo/synth/world/erhu_v7.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v7.scd -- SynthDef \erhu_v7 // variation erhu flute +( +SynthDef(\erhu_v7, { + arg freq = 440, gate = 1, breath = 0.15, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(6, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v8.scd b/sound_algo/synth/world/erhu_v8.scd new file mode 100644 index 0000000..9b91d4b --- /dev/null +++ b/sound_algo/synth/world/erhu_v8.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v8.scd -- SynthDef \erhu_v8 // variation erhu flute +( +SynthDef(\erhu_v8, { + arg freq = 440, gate = 1, breath = 0.2, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(7, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/erhu_v9.scd b/sound_algo/synth/world/erhu_v9.scd new file mode 100644 index 0000000..45ca6c4 --- /dev/null +++ b/sound_algo/synth/world/erhu_v9.scd @@ -0,0 +1,22 @@ +// synth/world/erhu_v9.scd -- SynthDef \erhu_v9 // variation erhu flute +( +SynthDef(\erhu_v9, { + arg freq = 440, gate = 1, breath = 0.05, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(4, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong.scd b/sound_algo/synth/world/gong.scd new file mode 100644 index 0000000..aa6b805 --- /dev/null +++ b/sound_algo/synth/world/gong.scd @@ -0,0 +1,25 @@ +// ===================================================================== +// synth/world/gong.scd -- SynthDef \gong +// Extracted from asia.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\gong, { + arg freq = 80, decay = 4, amp = 0.5, pan = 0; + var sig, env, partials, pitchEnv; + // Pitch drop expo (caracteristique gong) + pitchEnv = EnvGen.kr(Env([freq * 1.3, freq], [0.15], \exp)); + // Plusieurs partiels inharmoniques (gong : ratios non-entiers) + partials = [1, 1.41, 1.93, 2.71, 3.42, 4.83]; + sig = Mix.fill(partials.size, { |i| + SinOsc.ar(pitchEnv * partials[i]) * + (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, decay * (1 - (i * 0.12)), 1, -3 - i)); + }); + sig = sig + (HPF.ar(WhiteNoise.ar, 4000) * + EnvGen.kr(Env.perc(0.001, 0.05)) * 0.3); + env = EnvGen.kr(Env.linen(0.001, decay, 0.05), doneAction: 2); + sig = (sig * 1.3).tanh; + sig = LeakDC.ar(sig) * env * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v1.scd b/sound_algo/synth/world/gong_v1.scd new file mode 100644 index 0000000..78d632f --- /dev/null +++ b/sound_algo/synth/world/gong_v1.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v1.scd -- SynthDef \gong_v1 // variation gong gong modal +( +SynthDef(\gong_v1, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.3, release = 2.0, + drive = 1.0, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(4, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v10.scd b/sound_algo/synth/world/gong_v10.scd new file mode 100644 index 0000000..25013f4 --- /dev/null +++ b/sound_algo/synth/world/gong_v10.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v10.scd -- SynthDef \gong_v10 // variation gong gong modal +( +SynthDef(\gong_v10, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.3, release = 2.0, + drive = 1.0, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(8, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 3.0 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v11.scd b/sound_algo/synth/world/gong_v11.scd new file mode 100644 index 0000000..d210e81 --- /dev/null +++ b/sound_algo/synth/world/gong_v11.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v11.scd -- SynthDef \gong_v11 // variation gong gong modal +( +SynthDef(\gong_v11, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.0, sustain = 0.3, release = 3.0, + drive = 1.2, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(4, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v12.scd b/sound_algo/synth/world/gong_v12.scd new file mode 100644 index 0000000..6b03594 --- /dev/null +++ b/sound_algo/synth/world/gong_v12.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v12.scd -- SynthDef \gong_v12 // variation gong gong modal +( +SynthDef(\gong_v12, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.5, sustain = 0.3, release = 4.0, + drive = 1.4, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(5, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v13.scd b/sound_algo/synth/world/gong_v13.scd new file mode 100644 index 0000000..1df9cee --- /dev/null +++ b/sound_algo/synth/world/gong_v13.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v13.scd -- SynthDef \gong_v13 // variation gong gong modal +( +SynthDef(\gong_v13, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.3, release = 2.0, + drive = 1.0, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(6, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v14.scd b/sound_algo/synth/world/gong_v14.scd new file mode 100644 index 0000000..c85cb45 --- /dev/null +++ b/sound_algo/synth/world/gong_v14.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v14.scd -- SynthDef \gong_v14 // variation gong gong modal +( +SynthDef(\gong_v14, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.0, sustain = 0.3, release = 3.0, + drive = 1.2, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(7, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v15.scd b/sound_algo/synth/world/gong_v15.scd new file mode 100644 index 0000000..3083032 --- /dev/null +++ b/sound_algo/synth/world/gong_v15.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v15.scd -- SynthDef \gong_v15 // variation gong gong modal +( +SynthDef(\gong_v15, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.5, sustain = 0.3, release = 4.0, + drive = 1.4, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(8, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 3.0 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v16.scd b/sound_algo/synth/world/gong_v16.scd new file mode 100644 index 0000000..db01b04 --- /dev/null +++ b/sound_algo/synth/world/gong_v16.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v16.scd -- SynthDef \gong_v16 // variation gong gong modal +( +SynthDef(\gong_v16, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.3, release = 2.0, + drive = 1.0, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(4, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v17.scd b/sound_algo/synth/world/gong_v17.scd new file mode 100644 index 0000000..97048f6 --- /dev/null +++ b/sound_algo/synth/world/gong_v17.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v17.scd -- SynthDef \gong_v17 // variation gong gong modal +( +SynthDef(\gong_v17, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.0, sustain = 0.3, release = 3.0, + drive = 1.2, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(5, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v18.scd b/sound_algo/synth/world/gong_v18.scd new file mode 100644 index 0000000..39f258d --- /dev/null +++ b/sound_algo/synth/world/gong_v18.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v18.scd -- SynthDef \gong_v18 // variation gong gong modal +( +SynthDef(\gong_v18, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.5, sustain = 0.3, release = 4.0, + drive = 1.4, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(6, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v19.scd b/sound_algo/synth/world/gong_v19.scd new file mode 100644 index 0000000..95886b6 --- /dev/null +++ b/sound_algo/synth/world/gong_v19.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v19.scd -- SynthDef \gong_v19 // variation gong gong modal +( +SynthDef(\gong_v19, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.3, release = 2.0, + drive = 1.0, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(7, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v2.scd b/sound_algo/synth/world/gong_v2.scd new file mode 100644 index 0000000..55b21ed --- /dev/null +++ b/sound_algo/synth/world/gong_v2.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v2.scd -- SynthDef \gong_v2 // variation gong gong modal +( +SynthDef(\gong_v2, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.0, sustain = 0.3, release = 3.0, + drive = 1.2, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(5, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v3.scd b/sound_algo/synth/world/gong_v3.scd new file mode 100644 index 0000000..7b0b5ac --- /dev/null +++ b/sound_algo/synth/world/gong_v3.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v3.scd -- SynthDef \gong_v3 // variation gong gong modal +( +SynthDef(\gong_v3, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.5, sustain = 0.3, release = 4.0, + drive = 1.4, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(6, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v4.scd b/sound_algo/synth/world/gong_v4.scd new file mode 100644 index 0000000..8d88c33 --- /dev/null +++ b/sound_algo/synth/world/gong_v4.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v4.scd -- SynthDef \gong_v4 // variation gong gong modal +( +SynthDef(\gong_v4, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.3, release = 2.0, + drive = 1.0, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(7, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v5.scd b/sound_algo/synth/world/gong_v5.scd new file mode 100644 index 0000000..b12407d --- /dev/null +++ b/sound_algo/synth/world/gong_v5.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v5.scd -- SynthDef \gong_v5 // variation gong gong modal +( +SynthDef(\gong_v5, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.0, sustain = 0.3, release = 3.0, + drive = 1.2, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(8, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 3.0 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v6.scd b/sound_algo/synth/world/gong_v6.scd new file mode 100644 index 0000000..6d127f5 --- /dev/null +++ b/sound_algo/synth/world/gong_v6.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v6.scd -- SynthDef \gong_v6 // variation gong gong modal +( +SynthDef(\gong_v6, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.5, sustain = 0.3, release = 4.0, + drive = 1.4, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(4, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 0.5 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v7.scd b/sound_algo/synth/world/gong_v7.scd new file mode 100644 index 0000000..399d267 --- /dev/null +++ b/sound_algo/synth/world/gong_v7.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v7.scd -- SynthDef \gong_v7 // variation gong gong modal +( +SynthDef(\gong_v7, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 0.5, sustain = 0.3, release = 2.0, + drive = 1.0, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(5, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 1.0 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v8.scd b/sound_algo/synth/world/gong_v8.scd new file mode 100644 index 0000000..161db31 --- /dev/null +++ b/sound_algo/synth/world/gong_v8.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v8.scd -- SynthDef \gong_v8 // variation gong gong modal +( +SynthDef(\gong_v8, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.0, sustain = 0.3, release = 3.0, + drive = 1.2, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(6, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 1.5 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/gong_v9.scd b/sound_algo/synth/world/gong_v9.scd new file mode 100644 index 0000000..b00f2ae --- /dev/null +++ b/sound_algo/synth/world/gong_v9.scd @@ -0,0 +1,22 @@ +// synth/world/gong_v9.scd -- SynthDef \gong_v9 // variation gong gong modal +( +SynthDef(\gong_v9, { + arg freq = 80, gate = 1, + attack = 0.005, decay = 1.5, sustain = 0.3, release = 4.0, + drive = 1.4, amp = 0.25, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, parts, f; + f = freq.clip(40, 2000); + parts = Mix.fill(7, { |i| + var r = [1.0, 1.34, 1.81, 2.13, 2.65, 3.17, 3.91, 4.43][i]; + SinOsc.ar(f * r) * (1 / (i + 1)) * + EnvGen.kr(Env.perc(0.005, 2.0 * (1 + (i * 0.4)))) + }); + sig = parts * 0.22; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl.scd b/sound_algo/synth/world/growl.scd new file mode 100644 index 0000000..65a69f0 --- /dev/null +++ b/sound_algo/synth/world/growl.scd @@ -0,0 +1,39 @@ +// ===================================================================== +// synth/world/growl.scd -- SynthDef \growl +// Extracted from asia.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\growl, { + arg freq = 55, gate = 1, + modRatio = 0.5, modIndex = 4, + wobbleRate = 4, wobbleDepth = 2500, wobbleShape = 0, + cutoff = 250, rq = 0.25, + subAmt = 0.7, detune = 0.012, + attack = 0.005, decay = 0.2, sustain = 0.7, release = 0.3, + drive = 3.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, sub, mod, carL, carR, wobble, lfo; + lfo = SelectX.kr(wobbleShape, [ + LFTri.kr(wobbleRate), + LFPulse.kr(wobbleRate, 0, 0.5, 2, -1) + ]); + wobble = (cutoff + (lfo.range(0, 1) * wobbleDepth)).clip(60, 10000); + // FM modulee (modIndex 4 max -- pas trop violent) + mod = SinOsc.ar(freq * modRatio) * freq * modIndex * 0.0008; + carL = Saw.ar(freq * (1 - detune) + mod); + carR = Saw.ar(freq * (1 + detune) + mod); + // Sub charpente (2 oscillateurs, normalisees a 1) + sub = ((SinOsc.ar(freq * 0.5) * 0.6) + + (SinOsc.ar(freq * 0.25) * 0.4)) * subAmt; + // Mix : carrieres a 0.4 chacune + sub a 0.5 = headroom + sig = [(carL * 0.4) + (sub * 0.5), (carR * 0.4) + (sub * 0.5)]; + sig = RLPF.ar(sig, wobble, rq); + // UN seul tanh + normalisation par sqrt(drive) + sig = (sig * drive).tanh / drive.sqrt; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = LeakDC.ar(sig) * env * amp * duck; + sig = Balance2.ar(sig[0], sig[1], pan); + Out.ar(0, sig); +}).add; +) diff --git a/sound_algo/synth/world/growl_v1.scd b/sound_algo/synth/world/growl_v1.scd new file mode 100644 index 0000000..bab8431 --- /dev/null +++ b/sound_algo/synth/world/growl_v1.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v1.scd -- SynthDef \growl_v1 // variation growl drone formant +( +SynthDef(\growl_v1, { + arg freq = 60, gate = 1, formantFreq = 200, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(3).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 800); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v10.scd b/sound_algo/synth/world/growl_v10.scd new file mode 100644 index 0000000..ecbb540 --- /dev/null +++ b/sound_algo/synth/world/growl_v10.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v10.scd -- SynthDef \growl_v10 // variation growl drone formant +( +SynthDef(\growl_v10, { + arg freq = 60, gate = 1, formantFreq = 600, + attack = 0.05, decay = 0.5, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(12).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1200); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v11.scd b/sound_algo/synth/world/growl_v11.scd new file mode 100644 index 0000000..003a19f --- /dev/null +++ b/sound_algo/synth/world/growl_v11.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v11.scd -- SynthDef \growl_v11 // variation growl drone formant +( +SynthDef(\growl_v11, { + arg freq = 60, gate = 1, formantFreq = 200, + attack = 0.1, decay = 0.3, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(3).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1600); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v12.scd b/sound_algo/synth/world/growl_v12.scd new file mode 100644 index 0000000..26d7d02 --- /dev/null +++ b/sound_algo/synth/world/growl_v12.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v12.scd -- SynthDef \growl_v12 // variation growl drone formant +( +SynthDef(\growl_v12, { + arg freq = 60, gate = 1, formantFreq = 300, + attack = 0.2, decay = 0.5, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(5).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 2000); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v13.scd b/sound_algo/synth/world/growl_v13.scd new file mode 100644 index 0000000..b2ea5ed --- /dev/null +++ b/sound_algo/synth/world/growl_v13.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v13.scd -- SynthDef \growl_v13 // variation growl drone formant +( +SynthDef(\growl_v13, { + arg freq = 60, gate = 1, formantFreq = 400, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(7).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 800); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v14.scd b/sound_algo/synth/world/growl_v14.scd new file mode 100644 index 0000000..3aac0a7 --- /dev/null +++ b/sound_algo/synth/world/growl_v14.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v14.scd -- SynthDef \growl_v14 // variation growl drone formant +( +SynthDef(\growl_v14, { + arg freq = 60, gate = 1, formantFreq = 500, + attack = 0.1, decay = 0.5, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(9).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1200); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v15.scd b/sound_algo/synth/world/growl_v15.scd new file mode 100644 index 0000000..d774f03 --- /dev/null +++ b/sound_algo/synth/world/growl_v15.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v15.scd -- SynthDef \growl_v15 // variation growl drone formant +( +SynthDef(\growl_v15, { + arg freq = 60, gate = 1, formantFreq = 600, + attack = 0.2, decay = 0.3, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(12).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1600); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v16.scd b/sound_algo/synth/world/growl_v16.scd new file mode 100644 index 0000000..e695e50 --- /dev/null +++ b/sound_algo/synth/world/growl_v16.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v16.scd -- SynthDef \growl_v16 // variation growl drone formant +( +SynthDef(\growl_v16, { + arg freq = 60, gate = 1, formantFreq = 200, + attack = 0.05, decay = 0.5, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(3).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 2000); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v17.scd b/sound_algo/synth/world/growl_v17.scd new file mode 100644 index 0000000..d4ff688 --- /dev/null +++ b/sound_algo/synth/world/growl_v17.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v17.scd -- SynthDef \growl_v17 // variation growl drone formant +( +SynthDef(\growl_v17, { + arg freq = 60, gate = 1, formantFreq = 300, + attack = 0.1, decay = 0.3, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(5).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 800); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v18.scd b/sound_algo/synth/world/growl_v18.scd new file mode 100644 index 0000000..5fb8595 --- /dev/null +++ b/sound_algo/synth/world/growl_v18.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v18.scd -- SynthDef \growl_v18 // variation growl drone formant +( +SynthDef(\growl_v18, { + arg freq = 60, gate = 1, formantFreq = 400, + attack = 0.2, decay = 0.5, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(7).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1200); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v19.scd b/sound_algo/synth/world/growl_v19.scd new file mode 100644 index 0000000..2f85ffc --- /dev/null +++ b/sound_algo/synth/world/growl_v19.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v19.scd -- SynthDef \growl_v19 // variation growl drone formant +( +SynthDef(\growl_v19, { + arg freq = 60, gate = 1, formantFreq = 500, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(9).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1600); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v2.scd b/sound_algo/synth/world/growl_v2.scd new file mode 100644 index 0000000..b2bf214 --- /dev/null +++ b/sound_algo/synth/world/growl_v2.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v2.scd -- SynthDef \growl_v2 // variation growl drone formant +( +SynthDef(\growl_v2, { + arg freq = 60, gate = 1, formantFreq = 300, + attack = 0.1, decay = 0.5, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(5).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1200); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v3.scd b/sound_algo/synth/world/growl_v3.scd new file mode 100644 index 0000000..355422a --- /dev/null +++ b/sound_algo/synth/world/growl_v3.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v3.scd -- SynthDef \growl_v3 // variation growl drone formant +( +SynthDef(\growl_v3, { + arg freq = 60, gate = 1, formantFreq = 400, + attack = 0.2, decay = 0.3, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(7).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1600); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v4.scd b/sound_algo/synth/world/growl_v4.scd new file mode 100644 index 0000000..8b8be17 --- /dev/null +++ b/sound_algo/synth/world/growl_v4.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v4.scd -- SynthDef \growl_v4 // variation growl drone formant +( +SynthDef(\growl_v4, { + arg freq = 60, gate = 1, formantFreq = 500, + attack = 0.05, decay = 0.5, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(9).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 2000); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v5.scd b/sound_algo/synth/world/growl_v5.scd new file mode 100644 index 0000000..91bb186 --- /dev/null +++ b/sound_algo/synth/world/growl_v5.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v5.scd -- SynthDef \growl_v5 // variation growl drone formant +( +SynthDef(\growl_v5, { + arg freq = 60, gate = 1, formantFreq = 600, + attack = 0.1, decay = 0.3, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(12).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 800); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v6.scd b/sound_algo/synth/world/growl_v6.scd new file mode 100644 index 0000000..12f9464 --- /dev/null +++ b/sound_algo/synth/world/growl_v6.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v6.scd -- SynthDef \growl_v6 // variation growl drone formant +( +SynthDef(\growl_v6, { + arg freq = 60, gate = 1, formantFreq = 200, + attack = 0.2, decay = 0.5, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(3).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1200); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v7.scd b/sound_algo/synth/world/growl_v7.scd new file mode 100644 index 0000000..2902a33 --- /dev/null +++ b/sound_algo/synth/world/growl_v7.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v7.scd -- SynthDef \growl_v7 // variation growl drone formant +( +SynthDef(\growl_v7, { + arg freq = 60, gate = 1, formantFreq = 300, + attack = 0.05, decay = 0.3, sustain = 0.7, release = 0.5, + drive = 1.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(5).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 1600); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v8.scd b/sound_algo/synth/world/growl_v8.scd new file mode 100644 index 0000000..e17b7d8 --- /dev/null +++ b/sound_algo/synth/world/growl_v8.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v8.scd -- SynthDef \growl_v8 // variation growl drone formant +( +SynthDef(\growl_v8, { + arg freq = 60, gate = 1, formantFreq = 400, + attack = 0.1, decay = 0.5, sustain = 0.8, release = 1.0, + drive = 2.0, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(7).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 2000); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/growl_v9.scd b/sound_algo/synth/world/growl_v9.scd new file mode 100644 index 0000000..d8842e5 --- /dev/null +++ b/sound_algo/synth/world/growl_v9.scd @@ -0,0 +1,20 @@ +// synth/world/growl_v9.scd -- SynthDef \growl_v9 // variation growl drone formant +( +SynthDef(\growl_v9, { + arg freq = 60, gate = 1, formantFreq = 500, + attack = 0.2, decay = 0.3, sustain = 0.9, release = 1.5, + drive = 2.5, amp = 0.28, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, lfo, f; + f = freq.clip(40, 400); + lfo = SinOsc.kr(9).range(0.95, 1.05); + body = Saw.ar(f * lfo) + (Pulse.ar(f * 2 * lfo, 0.4) * 0.3); + sig = BPF.ar(body, formantFreq, 0.3); + sig = LPF.ar(sig, 800); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng.scd b/sound_algo/synth/world/guzheng.scd new file mode 100644 index 0000000..7564985 --- /dev/null +++ b/sound_algo/synth/world/guzheng.scd @@ -0,0 +1,26 @@ +// ===================================================================== +// synth/world/guzheng.scd -- SynthDef \guzheng +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\guzheng, { + arg freq = 220, gate = 1, + bendAmt = 0.025, bendTime = 0.3, + cutoff = 5500, rq = 0.4, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 1.5, + drive = 1.1, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, harm, bentFreq; + // Bend caracteristique guzheng (slide vers la note finale) + bentFreq = freq * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -2))); + exciter = WhiteNoise.ar(0.6) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 4.0)); + // Harmonique octave + 5te (caractere chinois) + harm = LeakDC.ar(CombC.ar(exciter * 0.25, 0.05, (bentFreq * 1.5).reciprocal, 2.0)); + sig = LPF.ar(ks + harm, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v1.scd b/sound_algo/synth/world/guzheng_v1.scd new file mode 100644 index 0000000..6d564a9 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v1.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v1.scd -- SynthDef \guzheng_v1 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v1, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v10.scd b/sound_algo/synth/world/guzheng_v10.scd new file mode 100644 index 0000000..2bd18e7 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v10.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v10.scd -- SynthDef \guzheng_v10 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v10, { + arg freq = 330, gate = 1, bendAmt = 0.06, bendTime = 0.08, + cutoff = 4000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v11.scd b/sound_algo/synth/world/guzheng_v11.scd new file mode 100644 index 0000000..55830c8 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v11.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v11.scd -- SynthDef \guzheng_v11 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v11, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.1, + cutoff = 5000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v12.scd b/sound_algo/synth/world/guzheng_v12.scd new file mode 100644 index 0000000..8bcac66 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v12.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v12.scd -- SynthDef \guzheng_v12 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v12, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.12, + cutoff = 6000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v13.scd b/sound_algo/synth/world/guzheng_v13.scd new file mode 100644 index 0000000..d3ce011 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v13.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v13.scd -- SynthDef \guzheng_v13 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v13, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v14.scd b/sound_algo/synth/world/guzheng_v14.scd new file mode 100644 index 0000000..23ef8c0 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v14.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v14.scd -- SynthDef \guzheng_v14 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v14, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.08, + cutoff = 4000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v15.scd b/sound_algo/synth/world/guzheng_v15.scd new file mode 100644 index 0000000..c1d202d --- /dev/null +++ b/sound_algo/synth/world/guzheng_v15.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v15.scd -- SynthDef \guzheng_v15 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v15, { + arg freq = 330, gate = 1, bendAmt = 0.06, bendTime = 0.1, + cutoff = 5000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v16.scd b/sound_algo/synth/world/guzheng_v16.scd new file mode 100644 index 0000000..3908ff2 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v16.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v16.scd -- SynthDef \guzheng_v16 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v16, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.12, + cutoff = 6000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v17.scd b/sound_algo/synth/world/guzheng_v17.scd new file mode 100644 index 0000000..537f451 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v17.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v17.scd -- SynthDef \guzheng_v17 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v17, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.05, + cutoff = 3000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v18.scd b/sound_algo/synth/world/guzheng_v18.scd new file mode 100644 index 0000000..8907c88 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v18.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v18.scd -- SynthDef \guzheng_v18 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v18, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.08, + cutoff = 4000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v19.scd b/sound_algo/synth/world/guzheng_v19.scd new file mode 100644 index 0000000..f4ee1f9 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v19.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v19.scd -- SynthDef \guzheng_v19 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v19, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.1, + cutoff = 5000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v2.scd b/sound_algo/synth/world/guzheng_v2.scd new file mode 100644 index 0000000..d608388 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v2.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v2.scd -- SynthDef \guzheng_v2 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v2, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.08, + cutoff = 4000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v3.scd b/sound_algo/synth/world/guzheng_v3.scd new file mode 100644 index 0000000..f97bd51 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v3.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v3.scd -- SynthDef \guzheng_v3 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v3, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.1, + cutoff = 5000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v4.scd b/sound_algo/synth/world/guzheng_v4.scd new file mode 100644 index 0000000..9c42548 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v4.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v4.scd -- SynthDef \guzheng_v4 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v4, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.12, + cutoff = 6000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v5.scd b/sound_algo/synth/world/guzheng_v5.scd new file mode 100644 index 0000000..7812830 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v5.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v5.scd -- SynthDef \guzheng_v5 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v5, { + arg freq = 330, gate = 1, bendAmt = 0.06, bendTime = 0.05, + cutoff = 3000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v6.scd b/sound_algo/synth/world/guzheng_v6.scd new file mode 100644 index 0000000..70e5017 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v6.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v6.scd -- SynthDef \guzheng_v6 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v6, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.08, + cutoff = 4000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v7.scd b/sound_algo/synth/world/guzheng_v7.scd new file mode 100644 index 0000000..b35ee69 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v7.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v7.scd -- SynthDef \guzheng_v7 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v7, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.1, + cutoff = 5000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v8.scd b/sound_algo/synth/world/guzheng_v8.scd new file mode 100644 index 0000000..d004822 --- /dev/null +++ b/sound_algo/synth/world/guzheng_v8.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v8.scd -- SynthDef \guzheng_v8 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v8, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.12, + cutoff = 6000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/guzheng_v9.scd b/sound_algo/synth/world/guzheng_v9.scd new file mode 100644 index 0000000..5ea1c3c --- /dev/null +++ b/sound_algo/synth/world/guzheng_v9.scd @@ -0,0 +1,20 @@ +// synth/world/guzheng_v9.scd -- SynthDef \guzheng_v9 // variation guzheng pluck Karplus +( +SynthDef(\guzheng_v9, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.05, + cutoff = 3000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan.scd b/sound_algo/synth/world/handpan.scd new file mode 100644 index 0000000..623a2a0 --- /dev/null +++ b/sound_algo/synth/world/handpan.scd @@ -0,0 +1,27 @@ +// ===================================================================== +// synth/world/handpan.scd -- SynthDef \handpan +// Extracted from extra.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\handpan, { + arg freq = 220, gate = 1, + cutoff = 5000, rq = 0.6, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 1.5, + drive = 1.1, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, partials; + // 4 partiels harmoniques (octaves + quintes) + partials = [1, 2, 3, 4]; + sig = Mix.fill(partials.size, { |i| + SinOsc.ar(freq * partials[i]) * + (1 / ((i * 1.5) + 1)) * + EnvGen.kr(Env.perc(0.001, release * (1 - (i * 0.15)), 1, -4)); + }); + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + sig = LeakDC.ar(sig); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v1.scd b/sound_algo/synth/world/handpan_v1.scd new file mode 100644 index 0000000..538b740 --- /dev/null +++ b/sound_algo/synth/world/handpan_v1.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v1.scd -- SynthDef \handpan_v1 // variation handpan pluck Karplus +( +SynthDef(\handpan_v1, { + arg freq = 220, gate = 1, bendAmt = 0.02, bendTime = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v10.scd b/sound_algo/synth/world/handpan_v10.scd new file mode 100644 index 0000000..79efc0f --- /dev/null +++ b/sound_algo/synth/world/handpan_v10.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v10.scd -- SynthDef \handpan_v10 // variation handpan pluck Karplus +( +SynthDef(\handpan_v10, { + arg freq = 220, gate = 1, bendAmt = 0.06, bendTime = 0.08, + cutoff = 4000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v11.scd b/sound_algo/synth/world/handpan_v11.scd new file mode 100644 index 0000000..fdad327 --- /dev/null +++ b/sound_algo/synth/world/handpan_v11.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v11.scd -- SynthDef \handpan_v11 // variation handpan pluck Karplus +( +SynthDef(\handpan_v11, { + arg freq = 220, gate = 1, bendAmt = 0.02, bendTime = 0.1, + cutoff = 5000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v12.scd b/sound_algo/synth/world/handpan_v12.scd new file mode 100644 index 0000000..26b2212 --- /dev/null +++ b/sound_algo/synth/world/handpan_v12.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v12.scd -- SynthDef \handpan_v12 // variation handpan pluck Karplus +( +SynthDef(\handpan_v12, { + arg freq = 220, gate = 1, bendAmt = 0.03, bendTime = 0.12, + cutoff = 6000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v13.scd b/sound_algo/synth/world/handpan_v13.scd new file mode 100644 index 0000000..cb9b235 --- /dev/null +++ b/sound_algo/synth/world/handpan_v13.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v13.scd -- SynthDef \handpan_v13 // variation handpan pluck Karplus +( +SynthDef(\handpan_v13, { + arg freq = 220, gate = 1, bendAmt = 0.04, bendTime = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v14.scd b/sound_algo/synth/world/handpan_v14.scd new file mode 100644 index 0000000..a76037c --- /dev/null +++ b/sound_algo/synth/world/handpan_v14.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v14.scd -- SynthDef \handpan_v14 // variation handpan pluck Karplus +( +SynthDef(\handpan_v14, { + arg freq = 220, gate = 1, bendAmt = 0.05, bendTime = 0.08, + cutoff = 4000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v15.scd b/sound_algo/synth/world/handpan_v15.scd new file mode 100644 index 0000000..fe6b461 --- /dev/null +++ b/sound_algo/synth/world/handpan_v15.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v15.scd -- SynthDef \handpan_v15 // variation handpan pluck Karplus +( +SynthDef(\handpan_v15, { + arg freq = 220, gate = 1, bendAmt = 0.06, bendTime = 0.1, + cutoff = 5000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v16.scd b/sound_algo/synth/world/handpan_v16.scd new file mode 100644 index 0000000..9673704 --- /dev/null +++ b/sound_algo/synth/world/handpan_v16.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v16.scd -- SynthDef \handpan_v16 // variation handpan pluck Karplus +( +SynthDef(\handpan_v16, { + arg freq = 220, gate = 1, bendAmt = 0.02, bendTime = 0.12, + cutoff = 6000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v17.scd b/sound_algo/synth/world/handpan_v17.scd new file mode 100644 index 0000000..739d828 --- /dev/null +++ b/sound_algo/synth/world/handpan_v17.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v17.scd -- SynthDef \handpan_v17 // variation handpan pluck Karplus +( +SynthDef(\handpan_v17, { + arg freq = 220, gate = 1, bendAmt = 0.03, bendTime = 0.05, + cutoff = 3000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v18.scd b/sound_algo/synth/world/handpan_v18.scd new file mode 100644 index 0000000..9368ea2 --- /dev/null +++ b/sound_algo/synth/world/handpan_v18.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v18.scd -- SynthDef \handpan_v18 // variation handpan pluck Karplus +( +SynthDef(\handpan_v18, { + arg freq = 220, gate = 1, bendAmt = 0.04, bendTime = 0.08, + cutoff = 4000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v19.scd b/sound_algo/synth/world/handpan_v19.scd new file mode 100644 index 0000000..43d8072 --- /dev/null +++ b/sound_algo/synth/world/handpan_v19.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v19.scd -- SynthDef \handpan_v19 // variation handpan pluck Karplus +( +SynthDef(\handpan_v19, { + arg freq = 220, gate = 1, bendAmt = 0.05, bendTime = 0.1, + cutoff = 5000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v2.scd b/sound_algo/synth/world/handpan_v2.scd new file mode 100644 index 0000000..3aef64b --- /dev/null +++ b/sound_algo/synth/world/handpan_v2.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v2.scd -- SynthDef \handpan_v2 // variation handpan pluck Karplus +( +SynthDef(\handpan_v2, { + arg freq = 220, gate = 1, bendAmt = 0.03, bendTime = 0.08, + cutoff = 4000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v3.scd b/sound_algo/synth/world/handpan_v3.scd new file mode 100644 index 0000000..97f9a6d --- /dev/null +++ b/sound_algo/synth/world/handpan_v3.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v3.scd -- SynthDef \handpan_v3 // variation handpan pluck Karplus +( +SynthDef(\handpan_v3, { + arg freq = 220, gate = 1, bendAmt = 0.04, bendTime = 0.1, + cutoff = 5000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v4.scd b/sound_algo/synth/world/handpan_v4.scd new file mode 100644 index 0000000..ada0fef --- /dev/null +++ b/sound_algo/synth/world/handpan_v4.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v4.scd -- SynthDef \handpan_v4 // variation handpan pluck Karplus +( +SynthDef(\handpan_v4, { + arg freq = 220, gate = 1, bendAmt = 0.05, bendTime = 0.12, + cutoff = 6000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v5.scd b/sound_algo/synth/world/handpan_v5.scd new file mode 100644 index 0000000..10ec93f --- /dev/null +++ b/sound_algo/synth/world/handpan_v5.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v5.scd -- SynthDef \handpan_v5 // variation handpan pluck Karplus +( +SynthDef(\handpan_v5, { + arg freq = 220, gate = 1, bendAmt = 0.06, bendTime = 0.05, + cutoff = 3000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v6.scd b/sound_algo/synth/world/handpan_v6.scd new file mode 100644 index 0000000..80b0532 --- /dev/null +++ b/sound_algo/synth/world/handpan_v6.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v6.scd -- SynthDef \handpan_v6 // variation handpan pluck Karplus +( +SynthDef(\handpan_v6, { + arg freq = 220, gate = 1, bendAmt = 0.02, bendTime = 0.08, + cutoff = 4000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v7.scd b/sound_algo/synth/world/handpan_v7.scd new file mode 100644 index 0000000..e1b5862 --- /dev/null +++ b/sound_algo/synth/world/handpan_v7.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v7.scd -- SynthDef \handpan_v7 // variation handpan pluck Karplus +( +SynthDef(\handpan_v7, { + arg freq = 220, gate = 1, bendAmt = 0.03, bendTime = 0.1, + cutoff = 5000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v8.scd b/sound_algo/synth/world/handpan_v8.scd new file mode 100644 index 0000000..5fafff1 --- /dev/null +++ b/sound_algo/synth/world/handpan_v8.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v8.scd -- SynthDef \handpan_v8 // variation handpan pluck Karplus +( +SynthDef(\handpan_v8, { + arg freq = 220, gate = 1, bendAmt = 0.04, bendTime = 0.12, + cutoff = 6000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/handpan_v9.scd b/sound_algo/synth/world/handpan_v9.scd new file mode 100644 index 0000000..a5a31ab --- /dev/null +++ b/sound_algo/synth/world/handpan_v9.scd @@ -0,0 +1,20 @@ +// synth/world/handpan_v9.scd -- SynthDef \handpan_v9 // variation handpan pluck Karplus +( +SynthDef(\handpan_v9, { + arg freq = 220, gate = 1, bendAmt = 0.05, bendTime = 0.05, + cutoff = 3000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto.scd b/sound_algo/synth/world/koto.scd new file mode 100644 index 0000000..8c01774 --- /dev/null +++ b/sound_algo/synth/world/koto.scd @@ -0,0 +1,22 @@ +// ===================================================================== +// synth/world/koto.scd -- SynthDef \koto +// Extracted from asia.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\koto, { + arg freq = 220, gate = 1, cutoff = 6000, rq = 0.5, + attack = 0.001, decay = 0.04, sustain = 0.0, release = 0.6, + drive = 1.2, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, harm; + exciter = WhiteNoise.ar(0.6) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, freq.reciprocal, 3.0)); + // Harmonique 2 (octave) ajoute pour brillance koto + harm = LeakDC.ar(CombC.ar(exciter * 0.3, 0.05, (freq * 2).reciprocal, 1.5)); + sig = LPF.ar(ks + harm, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh / drive.sqrt; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v1.scd b/sound_algo/synth/world/koto_v1.scd new file mode 100644 index 0000000..b7e6d3c --- /dev/null +++ b/sound_algo/synth/world/koto_v1.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v1.scd -- SynthDef \koto_v1 // variation koto pluck Karplus +( +SynthDef(\koto_v1, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v10.scd b/sound_algo/synth/world/koto_v10.scd new file mode 100644 index 0000000..309fa83 --- /dev/null +++ b/sound_algo/synth/world/koto_v10.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v10.scd -- SynthDef \koto_v10 // variation koto pluck Karplus +( +SynthDef(\koto_v10, { + arg freq = 330, gate = 1, bendAmt = 0.06, bendTime = 0.08, + cutoff = 4000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v11.scd b/sound_algo/synth/world/koto_v11.scd new file mode 100644 index 0000000..6da1086 --- /dev/null +++ b/sound_algo/synth/world/koto_v11.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v11.scd -- SynthDef \koto_v11 // variation koto pluck Karplus +( +SynthDef(\koto_v11, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.1, + cutoff = 5000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v12.scd b/sound_algo/synth/world/koto_v12.scd new file mode 100644 index 0000000..ce58d9e --- /dev/null +++ b/sound_algo/synth/world/koto_v12.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v12.scd -- SynthDef \koto_v12 // variation koto pluck Karplus +( +SynthDef(\koto_v12, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.12, + cutoff = 6000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v13.scd b/sound_algo/synth/world/koto_v13.scd new file mode 100644 index 0000000..ded1cf1 --- /dev/null +++ b/sound_algo/synth/world/koto_v13.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v13.scd -- SynthDef \koto_v13 // variation koto pluck Karplus +( +SynthDef(\koto_v13, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v14.scd b/sound_algo/synth/world/koto_v14.scd new file mode 100644 index 0000000..be200cd --- /dev/null +++ b/sound_algo/synth/world/koto_v14.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v14.scd -- SynthDef \koto_v14 // variation koto pluck Karplus +( +SynthDef(\koto_v14, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.08, + cutoff = 4000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v15.scd b/sound_algo/synth/world/koto_v15.scd new file mode 100644 index 0000000..4956952 --- /dev/null +++ b/sound_algo/synth/world/koto_v15.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v15.scd -- SynthDef \koto_v15 // variation koto pluck Karplus +( +SynthDef(\koto_v15, { + arg freq = 330, gate = 1, bendAmt = 0.06, bendTime = 0.1, + cutoff = 5000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v16.scd b/sound_algo/synth/world/koto_v16.scd new file mode 100644 index 0000000..e79900e --- /dev/null +++ b/sound_algo/synth/world/koto_v16.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v16.scd -- SynthDef \koto_v16 // variation koto pluck Karplus +( +SynthDef(\koto_v16, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.12, + cutoff = 6000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v17.scd b/sound_algo/synth/world/koto_v17.scd new file mode 100644 index 0000000..355b468 --- /dev/null +++ b/sound_algo/synth/world/koto_v17.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v17.scd -- SynthDef \koto_v17 // variation koto pluck Karplus +( +SynthDef(\koto_v17, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.05, + cutoff = 3000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v18.scd b/sound_algo/synth/world/koto_v18.scd new file mode 100644 index 0000000..0c33d34 --- /dev/null +++ b/sound_algo/synth/world/koto_v18.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v18.scd -- SynthDef \koto_v18 // variation koto pluck Karplus +( +SynthDef(\koto_v18, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.08, + cutoff = 4000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v19.scd b/sound_algo/synth/world/koto_v19.scd new file mode 100644 index 0000000..cf59366 --- /dev/null +++ b/sound_algo/synth/world/koto_v19.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v19.scd -- SynthDef \koto_v19 // variation koto pluck Karplus +( +SynthDef(\koto_v19, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.1, + cutoff = 5000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v2.scd b/sound_algo/synth/world/koto_v2.scd new file mode 100644 index 0000000..3aecaf9 --- /dev/null +++ b/sound_algo/synth/world/koto_v2.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v2.scd -- SynthDef \koto_v2 // variation koto pluck Karplus +( +SynthDef(\koto_v2, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.08, + cutoff = 4000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v3.scd b/sound_algo/synth/world/koto_v3.scd new file mode 100644 index 0000000..5125306 --- /dev/null +++ b/sound_algo/synth/world/koto_v3.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v3.scd -- SynthDef \koto_v3 // variation koto pluck Karplus +( +SynthDef(\koto_v3, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.1, + cutoff = 5000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v4.scd b/sound_algo/synth/world/koto_v4.scd new file mode 100644 index 0000000..0b9487e --- /dev/null +++ b/sound_algo/synth/world/koto_v4.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v4.scd -- SynthDef \koto_v4 // variation koto pluck Karplus +( +SynthDef(\koto_v4, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.12, + cutoff = 6000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v5.scd b/sound_algo/synth/world/koto_v5.scd new file mode 100644 index 0000000..f922fb0 --- /dev/null +++ b/sound_algo/synth/world/koto_v5.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v5.scd -- SynthDef \koto_v5 // variation koto pluck Karplus +( +SynthDef(\koto_v5, { + arg freq = 330, gate = 1, bendAmt = 0.06, bendTime = 0.05, + cutoff = 3000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v6.scd b/sound_algo/synth/world/koto_v6.scd new file mode 100644 index 0000000..943691b --- /dev/null +++ b/sound_algo/synth/world/koto_v6.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v6.scd -- SynthDef \koto_v6 // variation koto pluck Karplus +( +SynthDef(\koto_v6, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.08, + cutoff = 4000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v7.scd b/sound_algo/synth/world/koto_v7.scd new file mode 100644 index 0000000..b0c1923 --- /dev/null +++ b/sound_algo/synth/world/koto_v7.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v7.scd -- SynthDef \koto_v7 // variation koto pluck Karplus +( +SynthDef(\koto_v7, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.1, + cutoff = 5000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v8.scd b/sound_algo/synth/world/koto_v8.scd new file mode 100644 index 0000000..4ad957d --- /dev/null +++ b/sound_algo/synth/world/koto_v8.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v8.scd -- SynthDef \koto_v8 // variation koto pluck Karplus +( +SynthDef(\koto_v8, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.12, + cutoff = 6000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/koto_v9.scd b/sound_algo/synth/world/koto_v9.scd new file mode 100644 index 0000000..b31ad55 --- /dev/null +++ b/sound_algo/synth/world/koto_v9.scd @@ -0,0 +1,20 @@ +// synth/world/koto_v9.scd -- SynthDef \koto_v9 // variation koto pluck Karplus +( +SynthDef(\koto_v9, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.05, + cutoff = 3000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa.scd b/sound_algo/synth/world/pipa.scd new file mode 100644 index 0000000..aed0e30 --- /dev/null +++ b/sound_algo/synth/world/pipa.scd @@ -0,0 +1,23 @@ +// ===================================================================== +// synth/world/pipa.scd -- SynthDef \pipa +// Extracted from asia.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\pipa, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.08, + cutoff = 4500, rq = 0.4, + attack = 0.001, decay = 0.06, sustain = 0.0, release = 0.4, + drive = 1.5, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq; + // Petit bend de pitch initial (caracteristique pipa) + bentFreq = freq * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.004)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v1.scd b/sound_algo/synth/world/pipa_v1.scd new file mode 100644 index 0000000..ba4a32c --- /dev/null +++ b/sound_algo/synth/world/pipa_v1.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v1.scd -- SynthDef \pipa_v1 // variation pipa pluck Karplus +( +SynthDef(\pipa_v1, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v10.scd b/sound_algo/synth/world/pipa_v10.scd new file mode 100644 index 0000000..ff8cc42 --- /dev/null +++ b/sound_algo/synth/world/pipa_v10.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v10.scd -- SynthDef \pipa_v10 // variation pipa pluck Karplus +( +SynthDef(\pipa_v10, { + arg freq = 330, gate = 1, bendAmt = 0.06, bendTime = 0.08, + cutoff = 4000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v11.scd b/sound_algo/synth/world/pipa_v11.scd new file mode 100644 index 0000000..edff521 --- /dev/null +++ b/sound_algo/synth/world/pipa_v11.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v11.scd -- SynthDef \pipa_v11 // variation pipa pluck Karplus +( +SynthDef(\pipa_v11, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.1, + cutoff = 5000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v12.scd b/sound_algo/synth/world/pipa_v12.scd new file mode 100644 index 0000000..b93913b --- /dev/null +++ b/sound_algo/synth/world/pipa_v12.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v12.scd -- SynthDef \pipa_v12 // variation pipa pluck Karplus +( +SynthDef(\pipa_v12, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.12, + cutoff = 6000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v13.scd b/sound_algo/synth/world/pipa_v13.scd new file mode 100644 index 0000000..fa163b0 --- /dev/null +++ b/sound_algo/synth/world/pipa_v13.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v13.scd -- SynthDef \pipa_v13 // variation pipa pluck Karplus +( +SynthDef(\pipa_v13, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v14.scd b/sound_algo/synth/world/pipa_v14.scd new file mode 100644 index 0000000..d096231 --- /dev/null +++ b/sound_algo/synth/world/pipa_v14.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v14.scd -- SynthDef \pipa_v14 // variation pipa pluck Karplus +( +SynthDef(\pipa_v14, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.08, + cutoff = 4000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v15.scd b/sound_algo/synth/world/pipa_v15.scd new file mode 100644 index 0000000..48776da --- /dev/null +++ b/sound_algo/synth/world/pipa_v15.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v15.scd -- SynthDef \pipa_v15 // variation pipa pluck Karplus +( +SynthDef(\pipa_v15, { + arg freq = 330, gate = 1, bendAmt = 0.06, bendTime = 0.1, + cutoff = 5000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v16.scd b/sound_algo/synth/world/pipa_v16.scd new file mode 100644 index 0000000..56bf501 --- /dev/null +++ b/sound_algo/synth/world/pipa_v16.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v16.scd -- SynthDef \pipa_v16 // variation pipa pluck Karplus +( +SynthDef(\pipa_v16, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.12, + cutoff = 6000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v17.scd b/sound_algo/synth/world/pipa_v17.scd new file mode 100644 index 0000000..8fd7d21 --- /dev/null +++ b/sound_algo/synth/world/pipa_v17.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v17.scd -- SynthDef \pipa_v17 // variation pipa pluck Karplus +( +SynthDef(\pipa_v17, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.05, + cutoff = 3000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v18.scd b/sound_algo/synth/world/pipa_v18.scd new file mode 100644 index 0000000..572b9c4 --- /dev/null +++ b/sound_algo/synth/world/pipa_v18.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v18.scd -- SynthDef \pipa_v18 // variation pipa pluck Karplus +( +SynthDef(\pipa_v18, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.08, + cutoff = 4000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v19.scd b/sound_algo/synth/world/pipa_v19.scd new file mode 100644 index 0000000..23a7382 --- /dev/null +++ b/sound_algo/synth/world/pipa_v19.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v19.scd -- SynthDef \pipa_v19 // variation pipa pluck Karplus +( +SynthDef(\pipa_v19, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.1, + cutoff = 5000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v2.scd b/sound_algo/synth/world/pipa_v2.scd new file mode 100644 index 0000000..af2f662 --- /dev/null +++ b/sound_algo/synth/world/pipa_v2.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v2.scd -- SynthDef \pipa_v2 // variation pipa pluck Karplus +( +SynthDef(\pipa_v2, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.08, + cutoff = 4000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v3.scd b/sound_algo/synth/world/pipa_v3.scd new file mode 100644 index 0000000..0754f3b --- /dev/null +++ b/sound_algo/synth/world/pipa_v3.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v3.scd -- SynthDef \pipa_v3 // variation pipa pluck Karplus +( +SynthDef(\pipa_v3, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.1, + cutoff = 5000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v4.scd b/sound_algo/synth/world/pipa_v4.scd new file mode 100644 index 0000000..4454def --- /dev/null +++ b/sound_algo/synth/world/pipa_v4.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v4.scd -- SynthDef \pipa_v4 // variation pipa pluck Karplus +( +SynthDef(\pipa_v4, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.12, + cutoff = 6000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.1, release = 0.3, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v5.scd b/sound_algo/synth/world/pipa_v5.scd new file mode 100644 index 0000000..7b569ab --- /dev/null +++ b/sound_algo/synth/world/pipa_v5.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v5.scd -- SynthDef \pipa_v5 // variation pipa pluck Karplus +( +SynthDef(\pipa_v5, { + arg freq = 330, gate = 1, bendAmt = 0.06, bendTime = 0.05, + cutoff = 3000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.0, release = 0.5, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 3.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v6.scd b/sound_algo/synth/world/pipa_v6.scd new file mode 100644 index 0000000..8ad5dff --- /dev/null +++ b/sound_algo/synth/world/pipa_v6.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v6.scd -- SynthDef \pipa_v6 // variation pipa pluck Karplus +( +SynthDef(\pipa_v6, { + arg freq = 330, gate = 1, bendAmt = 0.02, bendTime = 0.08, + cutoff = 4000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.1, release = 0.8, + drive = 1.3, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v7.scd b/sound_algo/synth/world/pipa_v7.scd new file mode 100644 index 0000000..215d39f --- /dev/null +++ b/sound_algo/synth/world/pipa_v7.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v7.scd -- SynthDef \pipa_v7 // variation pipa pluck Karplus +( +SynthDef(\pipa_v7, { + arg freq = 330, gate = 1, bendAmt = 0.03, bendTime = 0.1, + cutoff = 5000, rq = 0.3, + attack = 0.001, decay = 0.05, sustain = 0.0, release = 0.3, + drive = 1.6, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.003)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 1.8)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).softclip; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v8.scd b/sound_algo/synth/world/pipa_v8.scd new file mode 100644 index 0000000..3a023e1 --- /dev/null +++ b/sound_algo/synth/world/pipa_v8.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v8.scd -- SynthDef \pipa_v8 // variation pipa pluck Karplus +( +SynthDef(\pipa_v8, { + arg freq = 330, gate = 1, bendAmt = 0.04, bendTime = 0.12, + cutoff = 6000, rq = 0.4, + attack = 0.001, decay = 0.08, sustain = 0.1, release = 0.5, + drive = 2.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.005)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.0)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/pipa_v9.scd b/sound_algo/synth/world/pipa_v9.scd new file mode 100644 index 0000000..684a983 --- /dev/null +++ b/sound_algo/synth/world/pipa_v9.scd @@ -0,0 +1,20 @@ +// synth/world/pipa_v9.scd -- SynthDef \pipa_v9 // variation pipa pluck Karplus +( +SynthDef(\pipa_v9, { + arg freq = 330, gate = 1, bendAmt = 0.05, bendTime = 0.05, + cutoff = 3000, rq = 0.5, + attack = 0.001, decay = 0.1, sustain = 0.0, release = 0.8, + drive = 1.0, amp = 0.22, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, exciter, ks, bentFreq, f; + f = freq.clip(40, 6000); + bentFreq = f * (1 + EnvGen.kr(Env([bendAmt, 0], [bendTime], -3))); + exciter = WhiteNoise.ar(0.7) * EnvGen.kr(Env.perc(0.0005, 0.007)); + ks = LeakDC.ar(CombC.ar(exciter, 0.05, bentFreq.reciprocal, 2.5)); + sig = LPF.ar(ks, cutoff); + sig = (sig * drive).tanh; + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi.scd b/sound_algo/synth/world/shakuhachi.scd new file mode 100644 index 0000000..b80018b --- /dev/null +++ b/sound_algo/synth/world/shakuhachi.scd @@ -0,0 +1,29 @@ +// ===================================================================== +// synth/world/shakuhachi.scd -- SynthDef \shakuhachi +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\shakuhachi, { + arg freq = 440, gate = 1, + breathAmt = 0.25, vibratoRate = 4.5, vibratoDepth = 0.018, + cutoff = 3000, rq = 0.5, + attack = 0.12, decay = 0.1, sustain = 0.7, release = 0.4, + drive = 1.0, amp = 0.18, pan = 0, + scBus = 0, scAmt = 0.4; + var sig, env, duck, vibFreq, breath, body, bendEnv; + bendEnv = EnvGen.kr(Env([0.97, 1.0], [0.08], -2)); // attack bend (style shakuhachi) + vibFreq = freq * bendEnv * (1 + (SinOsc.kr(vibratoRate, + EnvGen.kr(Env([0, 0, 1], [0.3, 0.4])) * pi) * vibratoDepth)); + body = SinOsc.ar(vibFreq) + + (SinOsc.ar(vibFreq * 2) * 0.18) + + (SinOsc.ar(vibFreq * 3) * 0.06); + breath = HPF.ar(WhiteNoise.ar, 2000) * breathAmt * + EnvGen.kr(Env([0.4, 1, 0.5], [0.05, 0.5])); + sig = body + breath; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v1.scd b/sound_algo/synth/world/shakuhachi_v1.scd new file mode 100644 index 0000000..4bc9b46 --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v1.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v1.scd -- SynthDef \shakuhachi_v1 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v1, { + arg freq = 440, gate = 1, breath = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(4, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v10.scd b/sound_algo/synth/world/shakuhachi_v10.scd new file mode 100644 index 0000000..cb6259c --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v10.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v10.scd -- SynthDef \shakuhachi_v10 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v10, { + arg freq = 440, gate = 1, breath = 0.1, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(5, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v11.scd b/sound_algo/synth/world/shakuhachi_v11.scd new file mode 100644 index 0000000..048e5f3 --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v11.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v11.scd -- SynthDef \shakuhachi_v11 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v11, { + arg freq = 440, gate = 1, breath = 0.15, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(6, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v12.scd b/sound_algo/synth/world/shakuhachi_v12.scd new file mode 100644 index 0000000..1470750 --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v12.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v12.scd -- SynthDef \shakuhachi_v12 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v12, { + arg freq = 440, gate = 1, breath = 0.2, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(7, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v13.scd b/sound_algo/synth/world/shakuhachi_v13.scd new file mode 100644 index 0000000..350c0d4 --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v13.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v13.scd -- SynthDef \shakuhachi_v13 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v13, { + arg freq = 440, gate = 1, breath = 0.05, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(4, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v14.scd b/sound_algo/synth/world/shakuhachi_v14.scd new file mode 100644 index 0000000..fe9874f --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v14.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v14.scd -- SynthDef \shakuhachi_v14 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v14, { + arg freq = 440, gate = 1, breath = 0.1, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(5, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v15.scd b/sound_algo/synth/world/shakuhachi_v15.scd new file mode 100644 index 0000000..f4904b3 --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v15.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v15.scd -- SynthDef \shakuhachi_v15 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v15, { + arg freq = 440, gate = 1, breath = 0.15, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(6, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v16.scd b/sound_algo/synth/world/shakuhachi_v16.scd new file mode 100644 index 0000000..c87cf7c --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v16.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v16.scd -- SynthDef \shakuhachi_v16 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v16, { + arg freq = 440, gate = 1, breath = 0.2, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(7, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v17.scd b/sound_algo/synth/world/shakuhachi_v17.scd new file mode 100644 index 0000000..da9c52e --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v17.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v17.scd -- SynthDef \shakuhachi_v17 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v17, { + arg freq = 440, gate = 1, breath = 0.05, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(4, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v18.scd b/sound_algo/synth/world/shakuhachi_v18.scd new file mode 100644 index 0000000..5984159 --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v18.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v18.scd -- SynthDef \shakuhachi_v18 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v18, { + arg freq = 440, gate = 1, breath = 0.1, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(5, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v19.scd b/sound_algo/synth/world/shakuhachi_v19.scd new file mode 100644 index 0000000..0e45d10 --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v19.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v19.scd -- SynthDef \shakuhachi_v19 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v19, { + arg freq = 440, gate = 1, breath = 0.15, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(6, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v2.scd b/sound_algo/synth/world/shakuhachi_v2.scd new file mode 100644 index 0000000..08c9ce5 --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v2.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v2.scd -- SynthDef \shakuhachi_v2 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v2, { + arg freq = 440, gate = 1, breath = 0.1, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(5, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v3.scd b/sound_algo/synth/world/shakuhachi_v3.scd new file mode 100644 index 0000000..2cd8f20 --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v3.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v3.scd -- SynthDef \shakuhachi_v3 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v3, { + arg freq = 440, gate = 1, breath = 0.15, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(6, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v4.scd b/sound_algo/synth/world/shakuhachi_v4.scd new file mode 100644 index 0000000..9432d0f --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v4.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v4.scd -- SynthDef \shakuhachi_v4 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v4, { + arg freq = 440, gate = 1, breath = 0.2, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(7, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v5.scd b/sound_algo/synth/world/shakuhachi_v5.scd new file mode 100644 index 0000000..df74eb5 --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v5.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v5.scd -- SynthDef \shakuhachi_v5 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v5, { + arg freq = 440, gate = 1, breath = 0.05, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(4, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v6.scd b/sound_algo/synth/world/shakuhachi_v6.scd new file mode 100644 index 0000000..f0286bd --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v6.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v6.scd -- SynthDef \shakuhachi_v6 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v6, { + arg freq = 440, gate = 1, breath = 0.1, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(5, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v7.scd b/sound_algo/synth/world/shakuhachi_v7.scd new file mode 100644 index 0000000..607aff3 --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v7.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v7.scd -- SynthDef \shakuhachi_v7 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v7, { + arg freq = 440, gate = 1, breath = 0.15, + cutoff = 3000, rq = 0.3, + attack = 0.05, decay = 0.1, sustain = 0.6, release = 0.3, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(6, 0, 0.005, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v8.scd b/sound_algo/synth/world/shakuhachi_v8.scd new file mode 100644 index 0000000..457b22c --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v8.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v8.scd -- SynthDef \shakuhachi_v8 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v8, { + arg freq = 440, gate = 1, breath = 0.2, + cutoff = 4000, rq = 0.5, + attack = 0.1, decay = 0.2, sustain = 0.7, release = 0.5, + drive = 1.2, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(7, 0, 0.01, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/shakuhachi_v9.scd b/sound_algo/synth/world/shakuhachi_v9.scd new file mode 100644 index 0000000..1de9ece --- /dev/null +++ b/sound_algo/synth/world/shakuhachi_v9.scd @@ -0,0 +1,22 @@ +// synth/world/shakuhachi_v9.scd -- SynthDef \shakuhachi_v9 // variation shakuhachi flute +( +SynthDef(\shakuhachi_v9, { + arg freq = 440, gate = 1, breath = 0.05, + cutoff = 5000, rq = 0.7, + attack = 0.2, decay = 0.3, sustain = 0.8, release = 0.8, + drive = 1.0, amp = 0.2, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, vib, f; + f = freq.clip(80, 4000); + vib = SinOsc.kr(4, 0, 0.015, 1); + body = SinOsc.ar(f * vib) + (SinOsc.ar(f * 2 * vib) * 0.3); + n = WhiteNoise.ar * breath; + n = BPF.ar(n, f, 0.5); + sig = body + n; + sig = LPF.ar(sig, cutoff); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * env * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla.scd b/sound_algo/synth/world/tabla.scd new file mode 100644 index 0000000..1f17019 --- /dev/null +++ b/sound_algo/synth/world/tabla.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// synth/world/tabla.scd -- SynthDef \tabla +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\tabla, { + arg freq = 220, decay = 0.18, drive = 1.3, amp = 0.4, pan = 0; + var pEnv, body, slap, env, sig; + pEnv = EnvGen.kr(Env([freq * 3, freq], [0.02], -4)); + body = SinOsc.ar(pEnv) + (SinOsc.ar(pEnv * 1.5) * 0.2); + slap = HPF.ar(WhiteNoise.ar, 2500) * + EnvGen.kr(Env.perc(0.001, 0.012)); + sig = body + (slap * 0.5); + env = EnvGen.kr(Env.perc(0.002, decay, curve: -4), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig) * env * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v1.scd b/sound_algo/synth/world/tabla_v1.scd new file mode 100644 index 0000000..01d480f --- /dev/null +++ b/sound_algo/synth/world/tabla_v1.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v1.scd -- SynthDef \tabla_v1 // variation tabla drum pitched +( +SynthDef(\tabla_v1, { + arg freq = 180, gate = 1, + decayTime = 0.2, noiseAmt = 0.2, + attack = 0.001, decay = 0.2, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.03], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v10.scd b/sound_algo/synth/world/tabla_v10.scd new file mode 100644 index 0000000..cd74da8 --- /dev/null +++ b/sound_algo/synth/world/tabla_v10.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v10.scd -- SynthDef \tabla_v10 // variation tabla drum pitched +( +SynthDef(\tabla_v10, { + arg freq = 180, gate = 1, + decayTime = 0.2, noiseAmt = 0.3, + attack = 0.001, decay = 0.3, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.05], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v11.scd b/sound_algo/synth/world/tabla_v11.scd new file mode 100644 index 0000000..07c6165 --- /dev/null +++ b/sound_algo/synth/world/tabla_v11.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v11.scd -- SynthDef \tabla_v11 // variation tabla drum pitched +( +SynthDef(\tabla_v11, { + arg freq = 180, gate = 1, + decayTime = 0.3, noiseAmt = 0.4, + attack = 0.001, decay = 0.4, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.07], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v12.scd b/sound_algo/synth/world/tabla_v12.scd new file mode 100644 index 0000000..9f90807 --- /dev/null +++ b/sound_algo/synth/world/tabla_v12.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v12.scd -- SynthDef \tabla_v12 // variation tabla drum pitched +( +SynthDef(\tabla_v12, { + arg freq = 180, gate = 1, + decayTime = 0.4, noiseAmt = 0.5, + attack = 0.001, decay = 0.5, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 5.0, freq], [0.1], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v13.scd b/sound_algo/synth/world/tabla_v13.scd new file mode 100644 index 0000000..153ce18 --- /dev/null +++ b/sound_algo/synth/world/tabla_v13.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v13.scd -- SynthDef \tabla_v13 // variation tabla drum pitched +( +SynthDef(\tabla_v13, { + arg freq = 180, gate = 1, + decayTime = 0.2, noiseAmt = 0.2, + attack = 0.001, decay = 0.2, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.03], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v14.scd b/sound_algo/synth/world/tabla_v14.scd new file mode 100644 index 0000000..779035b --- /dev/null +++ b/sound_algo/synth/world/tabla_v14.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v14.scd -- SynthDef \tabla_v14 // variation tabla drum pitched +( +SynthDef(\tabla_v14, { + arg freq = 180, gate = 1, + decayTime = 0.3, noiseAmt = 0.3, + attack = 0.001, decay = 0.3, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.05], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v15.scd b/sound_algo/synth/world/tabla_v15.scd new file mode 100644 index 0000000..2d2114a --- /dev/null +++ b/sound_algo/synth/world/tabla_v15.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v15.scd -- SynthDef \tabla_v15 // variation tabla drum pitched +( +SynthDef(\tabla_v15, { + arg freq = 180, gate = 1, + decayTime = 0.4, noiseAmt = 0.4, + attack = 0.001, decay = 0.4, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.07], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v16.scd b/sound_algo/synth/world/tabla_v16.scd new file mode 100644 index 0000000..9c5e943 --- /dev/null +++ b/sound_algo/synth/world/tabla_v16.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v16.scd -- SynthDef \tabla_v16 // variation tabla drum pitched +( +SynthDef(\tabla_v16, { + arg freq = 180, gate = 1, + decayTime = 0.2, noiseAmt = 0.5, + attack = 0.001, decay = 0.5, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 5.0, freq], [0.1], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v17.scd b/sound_algo/synth/world/tabla_v17.scd new file mode 100644 index 0000000..0920e69 --- /dev/null +++ b/sound_algo/synth/world/tabla_v17.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v17.scd -- SynthDef \tabla_v17 // variation tabla drum pitched +( +SynthDef(\tabla_v17, { + arg freq = 180, gate = 1, + decayTime = 0.3, noiseAmt = 0.2, + attack = 0.001, decay = 0.2, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.03], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v18.scd b/sound_algo/synth/world/tabla_v18.scd new file mode 100644 index 0000000..0a53c8f --- /dev/null +++ b/sound_algo/synth/world/tabla_v18.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v18.scd -- SynthDef \tabla_v18 // variation tabla drum pitched +( +SynthDef(\tabla_v18, { + arg freq = 180, gate = 1, + decayTime = 0.4, noiseAmt = 0.3, + attack = 0.001, decay = 0.3, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.05], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v19.scd b/sound_algo/synth/world/tabla_v19.scd new file mode 100644 index 0000000..180ddc8 --- /dev/null +++ b/sound_algo/synth/world/tabla_v19.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v19.scd -- SynthDef \tabla_v19 // variation tabla drum pitched +( +SynthDef(\tabla_v19, { + arg freq = 180, gate = 1, + decayTime = 0.2, noiseAmt = 0.4, + attack = 0.001, decay = 0.4, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.07], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v2.scd b/sound_algo/synth/world/tabla_v2.scd new file mode 100644 index 0000000..fded70a --- /dev/null +++ b/sound_algo/synth/world/tabla_v2.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v2.scd -- SynthDef \tabla_v2 // variation tabla drum pitched +( +SynthDef(\tabla_v2, { + arg freq = 180, gate = 1, + decayTime = 0.3, noiseAmt = 0.3, + attack = 0.001, decay = 0.3, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.05], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v3.scd b/sound_algo/synth/world/tabla_v3.scd new file mode 100644 index 0000000..dc82567 --- /dev/null +++ b/sound_algo/synth/world/tabla_v3.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v3.scd -- SynthDef \tabla_v3 // variation tabla drum pitched +( +SynthDef(\tabla_v3, { + arg freq = 180, gate = 1, + decayTime = 0.4, noiseAmt = 0.4, + attack = 0.001, decay = 0.4, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.07], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v4.scd b/sound_algo/synth/world/tabla_v4.scd new file mode 100644 index 0000000..ab273eb --- /dev/null +++ b/sound_algo/synth/world/tabla_v4.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v4.scd -- SynthDef \tabla_v4 // variation tabla drum pitched +( +SynthDef(\tabla_v4, { + arg freq = 180, gate = 1, + decayTime = 0.2, noiseAmt = 0.5, + attack = 0.001, decay = 0.5, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 5.0, freq], [0.1], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v5.scd b/sound_algo/synth/world/tabla_v5.scd new file mode 100644 index 0000000..a67bfae --- /dev/null +++ b/sound_algo/synth/world/tabla_v5.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v5.scd -- SynthDef \tabla_v5 // variation tabla drum pitched +( +SynthDef(\tabla_v5, { + arg freq = 180, gate = 1, + decayTime = 0.3, noiseAmt = 0.2, + attack = 0.001, decay = 0.2, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.03], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v6.scd b/sound_algo/synth/world/tabla_v6.scd new file mode 100644 index 0000000..addff3c --- /dev/null +++ b/sound_algo/synth/world/tabla_v6.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v6.scd -- SynthDef \tabla_v6 // variation tabla drum pitched +( +SynthDef(\tabla_v6, { + arg freq = 180, gate = 1, + decayTime = 0.4, noiseAmt = 0.3, + attack = 0.001, decay = 0.3, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.05], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v7.scd b/sound_algo/synth/world/tabla_v7.scd new file mode 100644 index 0000000..cf9a0e6 --- /dev/null +++ b/sound_algo/synth/world/tabla_v7.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v7.scd -- SynthDef \tabla_v7 // variation tabla drum pitched +( +SynthDef(\tabla_v7, { + arg freq = 180, gate = 1, + decayTime = 0.2, noiseAmt = 0.4, + attack = 0.001, decay = 0.4, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.07], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v8.scd b/sound_algo/synth/world/tabla_v8.scd new file mode 100644 index 0000000..fd64503 --- /dev/null +++ b/sound_algo/synth/world/tabla_v8.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v8.scd -- SynthDef \tabla_v8 // variation tabla drum pitched +( +SynthDef(\tabla_v8, { + arg freq = 180, gate = 1, + decayTime = 0.3, noiseAmt = 0.5, + attack = 0.001, decay = 0.5, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 5.0, freq], [0.1], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/tabla_v9.scd b/sound_algo/synth/world/tabla_v9.scd new file mode 100644 index 0000000..be9a209 --- /dev/null +++ b/sound_algo/synth/world/tabla_v9.scd @@ -0,0 +1,21 @@ +// synth/world/tabla_v9.scd -- SynthDef \tabla_v9 // variation tabla drum pitched +( +SynthDef(\tabla_v9, { + arg freq = 180, gate = 1, + decayTime = 0.4, noiseAmt = 0.2, + attack = 0.001, decay = 0.2, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.03], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko.scd b/sound_algo/synth/world/taiko.scd new file mode 100644 index 0000000..a44bb5e --- /dev/null +++ b/sound_algo/synth/world/taiko.scd @@ -0,0 +1,19 @@ +// ===================================================================== +// synth/world/taiko.scd -- SynthDef \taiko +// Extracted from authentic.scd during v2 reorganization. +// ===================================================================== +( +SynthDef(\taiko, { + arg freq = 70, decay = 0.6, drive = 1.4, amp = 0.5, pan = 0; + var pEnv, body, skin, env, sig; + pEnv = EnvGen.kr(Env([freq * 1.5, freq], [0.04], -3)); + body = SinOsc.ar(pEnv) + (Saw.ar(pEnv) * 0.15); + skin = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.001, 0.04)); + sig = body + (skin * 0.4); + env = EnvGen.kr(Env.perc(0.003, decay, curve: -3), doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig) * env * amp; + Out.ar(0, Pan2.ar(sig, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v1.scd b/sound_algo/synth/world/taiko_v1.scd new file mode 100644 index 0000000..77b724d --- /dev/null +++ b/sound_algo/synth/world/taiko_v1.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v1.scd -- SynthDef \taiko_v1 // variation taiko drum pitched +( +SynthDef(\taiko_v1, { + arg freq = 80, gate = 1, + decayTime = 0.2, noiseAmt = 0.2, + attack = 0.001, decay = 0.2, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.03], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v10.scd b/sound_algo/synth/world/taiko_v10.scd new file mode 100644 index 0000000..490fcf9 --- /dev/null +++ b/sound_algo/synth/world/taiko_v10.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v10.scd -- SynthDef \taiko_v10 // variation taiko drum pitched +( +SynthDef(\taiko_v10, { + arg freq = 80, gate = 1, + decayTime = 0.2, noiseAmt = 0.3, + attack = 0.001, decay = 0.3, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.05], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v11.scd b/sound_algo/synth/world/taiko_v11.scd new file mode 100644 index 0000000..1345048 --- /dev/null +++ b/sound_algo/synth/world/taiko_v11.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v11.scd -- SynthDef \taiko_v11 // variation taiko drum pitched +( +SynthDef(\taiko_v11, { + arg freq = 80, gate = 1, + decayTime = 0.3, noiseAmt = 0.4, + attack = 0.001, decay = 0.4, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.07], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v12.scd b/sound_algo/synth/world/taiko_v12.scd new file mode 100644 index 0000000..f62e3ba --- /dev/null +++ b/sound_algo/synth/world/taiko_v12.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v12.scd -- SynthDef \taiko_v12 // variation taiko drum pitched +( +SynthDef(\taiko_v12, { + arg freq = 80, gate = 1, + decayTime = 0.4, noiseAmt = 0.5, + attack = 0.001, decay = 0.5, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 5.0, freq], [0.1], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v13.scd b/sound_algo/synth/world/taiko_v13.scd new file mode 100644 index 0000000..a04d788 --- /dev/null +++ b/sound_algo/synth/world/taiko_v13.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v13.scd -- SynthDef \taiko_v13 // variation taiko drum pitched +( +SynthDef(\taiko_v13, { + arg freq = 80, gate = 1, + decayTime = 0.2, noiseAmt = 0.2, + attack = 0.001, decay = 0.2, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.03], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v14.scd b/sound_algo/synth/world/taiko_v14.scd new file mode 100644 index 0000000..868b4df --- /dev/null +++ b/sound_algo/synth/world/taiko_v14.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v14.scd -- SynthDef \taiko_v14 // variation taiko drum pitched +( +SynthDef(\taiko_v14, { + arg freq = 80, gate = 1, + decayTime = 0.3, noiseAmt = 0.3, + attack = 0.001, decay = 0.3, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.05], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v15.scd b/sound_algo/synth/world/taiko_v15.scd new file mode 100644 index 0000000..dfa22fe --- /dev/null +++ b/sound_algo/synth/world/taiko_v15.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v15.scd -- SynthDef \taiko_v15 // variation taiko drum pitched +( +SynthDef(\taiko_v15, { + arg freq = 80, gate = 1, + decayTime = 0.4, noiseAmt = 0.4, + attack = 0.001, decay = 0.4, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.07], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v16.scd b/sound_algo/synth/world/taiko_v16.scd new file mode 100644 index 0000000..1f6e286 --- /dev/null +++ b/sound_algo/synth/world/taiko_v16.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v16.scd -- SynthDef \taiko_v16 // variation taiko drum pitched +( +SynthDef(\taiko_v16, { + arg freq = 80, gate = 1, + decayTime = 0.2, noiseAmt = 0.5, + attack = 0.001, decay = 0.5, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 5.0, freq], [0.1], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v17.scd b/sound_algo/synth/world/taiko_v17.scd new file mode 100644 index 0000000..78c0e3b --- /dev/null +++ b/sound_algo/synth/world/taiko_v17.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v17.scd -- SynthDef \taiko_v17 // variation taiko drum pitched +( +SynthDef(\taiko_v17, { + arg freq = 80, gate = 1, + decayTime = 0.3, noiseAmt = 0.2, + attack = 0.001, decay = 0.2, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.03], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v18.scd b/sound_algo/synth/world/taiko_v18.scd new file mode 100644 index 0000000..d61af82 --- /dev/null +++ b/sound_algo/synth/world/taiko_v18.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v18.scd -- SynthDef \taiko_v18 // variation taiko drum pitched +( +SynthDef(\taiko_v18, { + arg freq = 80, gate = 1, + decayTime = 0.4, noiseAmt = 0.3, + attack = 0.001, decay = 0.3, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.05], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v19.scd b/sound_algo/synth/world/taiko_v19.scd new file mode 100644 index 0000000..60d8157 --- /dev/null +++ b/sound_algo/synth/world/taiko_v19.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v19.scd -- SynthDef \taiko_v19 // variation taiko drum pitched +( +SynthDef(\taiko_v19, { + arg freq = 80, gate = 1, + decayTime = 0.2, noiseAmt = 0.4, + attack = 0.001, decay = 0.4, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.07], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v2.scd b/sound_algo/synth/world/taiko_v2.scd new file mode 100644 index 0000000..7a79a19 --- /dev/null +++ b/sound_algo/synth/world/taiko_v2.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v2.scd -- SynthDef \taiko_v2 // variation taiko drum pitched +( +SynthDef(\taiko_v2, { + arg freq = 80, gate = 1, + decayTime = 0.3, noiseAmt = 0.3, + attack = 0.001, decay = 0.3, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.05], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v3.scd b/sound_algo/synth/world/taiko_v3.scd new file mode 100644 index 0000000..8069c99 --- /dev/null +++ b/sound_algo/synth/world/taiko_v3.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v3.scd -- SynthDef \taiko_v3 // variation taiko drum pitched +( +SynthDef(\taiko_v3, { + arg freq = 80, gate = 1, + decayTime = 0.4, noiseAmt = 0.4, + attack = 0.001, decay = 0.4, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.07], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v4.scd b/sound_algo/synth/world/taiko_v4.scd new file mode 100644 index 0000000..db6e62f --- /dev/null +++ b/sound_algo/synth/world/taiko_v4.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v4.scd -- SynthDef \taiko_v4 // variation taiko drum pitched +( +SynthDef(\taiko_v4, { + arg freq = 80, gate = 1, + decayTime = 0.2, noiseAmt = 0.5, + attack = 0.001, decay = 0.5, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 5.0, freq], [0.1], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v5.scd b/sound_algo/synth/world/taiko_v5.scd new file mode 100644 index 0000000..9f4293f --- /dev/null +++ b/sound_algo/synth/world/taiko_v5.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v5.scd -- SynthDef \taiko_v5 // variation taiko drum pitched +( +SynthDef(\taiko_v5, { + arg freq = 80, gate = 1, + decayTime = 0.3, noiseAmt = 0.2, + attack = 0.001, decay = 0.2, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.03], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v6.scd b/sound_algo/synth/world/taiko_v6.scd new file mode 100644 index 0000000..61b0ff9 --- /dev/null +++ b/sound_algo/synth/world/taiko_v6.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v6.scd -- SynthDef \taiko_v6 // variation taiko drum pitched +( +SynthDef(\taiko_v6, { + arg freq = 80, gate = 1, + decayTime = 0.4, noiseAmt = 0.3, + attack = 0.001, decay = 0.3, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 3.0, freq], [0.05], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v7.scd b/sound_algo/synth/world/taiko_v7.scd new file mode 100644 index 0000000..4990ce8 --- /dev/null +++ b/sound_algo/synth/world/taiko_v7.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v7.scd -- SynthDef \taiko_v7 // variation taiko drum pitched +( +SynthDef(\taiko_v7, { + arg freq = 80, gate = 1, + decayTime = 0.2, noiseAmt = 0.4, + attack = 0.001, decay = 0.4, sustain = 0, release = 0.05, + drive = 1.0, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 4.0, freq], [0.07], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).softclip; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v8.scd b/sound_algo/synth/world/taiko_v8.scd new file mode 100644 index 0000000..72eb0e4 --- /dev/null +++ b/sound_algo/synth/world/taiko_v8.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v8.scd -- SynthDef \taiko_v8 // variation taiko drum pitched +( +SynthDef(\taiko_v8, { + arg freq = 80, gate = 1, + decayTime = 0.3, noiseAmt = 0.5, + attack = 0.001, decay = 0.5, sustain = 0, release = 0.05, + drive = 1.3, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 5.0, freq], [0.1], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/synth/world/taiko_v9.scd b/sound_algo/synth/world/taiko_v9.scd new file mode 100644 index 0000000..4cc54c7 --- /dev/null +++ b/sound_algo/synth/world/taiko_v9.scd @@ -0,0 +1,21 @@ +// synth/world/taiko_v9.scd -- SynthDef \taiko_v9 // variation taiko drum pitched +( +SynthDef(\taiko_v9, { + arg freq = 80, gate = 1, + decayTime = 0.4, noiseAmt = 0.2, + attack = 0.001, decay = 0.2, sustain = 0, release = 0.05, + drive = 1.6, amp = 0.32, pan = 0, + scBus = 0, scAmt = 0.3; + var sig, env, duck, body, n, pEnv; + pEnv = EnvGen.kr(Env([freq * 2.0, freq], [0.03], -3)); + body = SinOsc.ar(pEnv.clip(30, 2000)); + n = HPF.ar(WhiteNoise.ar, 800) * + EnvGen.kr(Env.perc(0.0005, 0.04)); + sig = body + (n * noiseAmt); + env = EnvGen.kr(Env.adsr(attack, decay, sustain, release), gate, doneAction: 2); + sig = (sig * drive).tanh; + sig = LeakDC.ar(sig * env); + duck = 1 - (In.kr(scBus, 1) * scAmt); + Out.ar(0, Pan2.ar(sig * amp * duck, pan)); +}).add; +) diff --git a/sound_algo/tests/CLAUDE.md b/sound_algo/tests/CLAUDE.md new file mode 100644 index 0000000..9d52d1d --- /dev/null +++ b/sound_algo/tests/CLAUDE.md @@ -0,0 +1,62 @@ +# tests/ — Suite E2E SuperCollider + +Tests bout-en-bout via `sclang`. Chaque test affiche un resume +parsable que `run_all.sh` collecte (l'exit code de sclang n'est +pas fiable -- libc++abi peut crasher au quit du serveur interne). + +## Lancement + +```bash +cd tests && bash run_all.sh +``` + +Un test seul : +```bash +/Applications/SuperCollider.app/Contents/MacOS/sclang tests/e2e_05_melodies.scd +``` + +## Convention de test + +```supercollider +"=== e2e_NN_xxx ===".postln; + +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo/"; +~testCount = 0; ~testFailed = 0; + +~assert = { |label, cond, info| + ~testCount = ~testCount + 1; + if (cond) { (" [OK] " ++ label).postln } + { ~testFailed = ~testFailed + 1; + (" [FAIL] " ++ label ++ " : " ++ (info ? "")).postln }; +}; + +~report = { + ("== " ++ ~testCount ++ " tests, " ++ ~testFailed ++ " failed ==").postln; + if (~testFailed > 0) { 1.exit } { 0.exit }; +}; +``` + +Ligne resume **obligatoire** : `== N tests, M failed ==` +(parsee par `run_all.sh` via `grep -E`). + +## Ce qui est teste + +| Fichier | Cible | +| --- | --- | +| `e2e_01_syntax.scd` | parse `String.compile` de chaque bloc top-level | +| `e2e_02_load.scd` | `00_load.scd` charge sans erreur | +| `e2e_03_reload_guards.scd` | `~reload.value` n'explose pas | +| `e2e_04_synthdef_compile.scd` | tous les SynthDef se compilent | +| `e2e_05_melodies.scd` | banques melodies coherentes | +| `e2e_06_mixer.scd` | mixer 8 voies | +| `e2e_07_jump.scd` | `~jumpTo` valide | +| `e2e_08_live.scd` | API live (mm, fx, scenes, ...) | +| `e2e_09_tracks.scd` | tracks A-W parsent | + +## Anti-patterns + +- Ne pas se fier a l'exit code sclang (peut etre != 0 alors que tests passent) +- Ne pas oublier `~report.value` a la fin -> SKIP dans run_all.sh +- Ne pas booter le serveur audio dans un test syntax (lent, instable en CI) +- Ne pas hardcoder le path sclang (utiliser `$SCLANG` env var) +- Ne pas laisser de Routine running en fin de test (fuite) diff --git a/sound_algo/tests/e2e_01_syntax.scd b/sound_algo/tests/e2e_01_syntax.scd new file mode 100644 index 0000000..7b6838c --- /dev/null +++ b/sound_algo/tests/e2e_01_syntax.scd @@ -0,0 +1,192 @@ +// ===================================================================== +// e2e_01_syntax.scd +// Verifie que chaque .scd parse correctement. +// Strategie : pour chaque fichier, on extrait les blocs top-level +// (lignes commencant par '(' a la colonne 0) et on tente de compiler +// chaque bloc independamment via String.compile. +// Convention du projet : les blocs ouvrent par '(' col 0 et ferment +// par ')' col 0 (multi-ligne) OU '( ... )' sur une seule ligne. +// ===================================================================== + +"=== e2e_01_syntax ===".postln; + +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +~testCount = 0; +~testFailed = 0; + +~assert = { |label, cond, info| + ~testCount = ~testCount + 1; + if (cond) { + (" [OK] " ++ label).postln; + } { + ~testFailed = ~testFailed + 1; + (" [FAIL] " ++ label ++ if (info.notNil) { " : " ++ info } { "" }).postln; + }; +}; + +~report = { + ("== " ++ ~testCount ++ " tests, " ++ ~testFailed ++ " failed ==").postln; + if (~testFailed > 0) { 1.exit } { 0.exit }; +}; + +// Extrait les blocs top-level d'un .scd selon la convention du projet : +// - ligne qui commence par '(' = ouverture +// - ligne qui se termine par ')' au col 0 (ou ligne single-line se +// terminant par ')' qui equilibre les parens) = fermeture +~extractBlocks = { |src| + var blocks = List.new; + var lines = src.split($\n); + var i = 0, j, startIdx, line, depth, balance; + while { i < lines.size } { + line = lines[i]; + // ligne commence par '(' (premier char) ? + if ((line.size > 0) and: { line[0] == $( }) { + startIdx = i; + // calcule la balance de parens pour cette ligne + // (compte brut sans tenir compte des chaines/commentaires ; + // c'est OK pour la convention du projet) + balance = 0; + line.do { |c| + if (c == $( ) { balance = balance + 1 }; + if (c == $) ) { balance = balance - 1 }; + }; + if (balance == 0) { + // bloc 1-ligne : '( ... )' + blocks.add(line); + } { + // bloc multi-ligne : cherche la ligne suivante qui ramene + // la balance a 0 + j = i + 1; + while { (j < lines.size) and: { balance != 0 } } { + var l2 = lines[j]; + l2.do { |c| + if (c == $( ) { balance = balance + 1 }; + if (c == $) ) { balance = balance - 1 }; + }; + j = j + 1; + }; + if (balance == 0) { + blocks.add(lines.copyRange(startIdx, j - 1).join($\n)); + i = j - 1; + } { + (" [WARN] bloc unterminated ligne " ++ (startIdx + 1)).postln; + i = lines.size; + }; + }; + }; + i = i + 1; + }; + blocks; +}; + +// Si un bloc utilise une classe IDE-only (Document, etc.) il echouera +// en mode CLI sclang. On ignore ces blocs (warning seulement). +~ideOnlyKeywords = ["Document.open", "Document.current", "Document.dir"]; + +~isIdeOnlyBlock = { |src| + ~ideOnlyKeywords.any { |kw| src.contains(kw) }; +}; + +~compileFileSyntax = { |path| + var src = File.readAllString(path); + var blocks, nFail = 0, nIdeSkip = 0, idx = 0; + if (src.isNil) { false } { + // Tente d'abord compileFile (rapide pour single-block) + var single; + try { single = thisProcess.interpreter.compileFile(path) } { single = nil }; + if (single.notNil) { + true + } { + blocks = ~extractBlocks.(src); + if (blocks.size == 0) { + false + } { + blocks.do { |b| + idx = idx + 1; + if (~isIdeOnlyBlock.(b)) { + nIdeSkip = nIdeSkip + 1; + } { + if (b.compile.isNil) { + nFail = nFail + 1; + (" !! " ++ path.basename ++ " bloc#" ++ idx + ++ " parse FAIL").postln; + }; + }; + }; + if (nIdeSkip > 0) { + (" [INFO] " ++ path.basename ++ " : " ++ nIdeSkip + ++ " blocs IDE-only ignores (Document.open)").postln; + }; + nFail == 0 + }; + }; + }; +}; + +~files = [ + "00_load.scd", "engine.scd", + "live/fx_bus.scd", "live/live.scd", "live/mixer.scd", + "live/loops.scd", "live/scenes.scd", "live/tweaks.scd", + "live/live_fx_panel.scd", + "control/midi.scd", "control/playlist.scd", "control/jump.scd", + "synth/_index.scd", "fx/_index.scd", + "palette/scales.scd", + "palette/styles.scd", "palette/timbres.scd", + "palette/melodies/helpers.scd", + "palette/melodies/index.scd", + "palette/melodies/bank.scd", + "palette/melodies/tracks.scd", + "palette/harmonics/helpers.scd", "palette/harmonics/presets.scd", + "palette/rhythm/_index.scd", + "palette/chords_progressions.scd", + "palette/fx.scd", "palette/fx_genre.scd", + "palette/tweaks_template.scd", +]; + +~files.do { |rel| + var path = ~base ++ rel; + if (File.exists(path).not) { + ~assert.(rel, false, "fichier introuvable"); + } { + ~assert.("syntax: " ++ rel, ~compileFileSyntax.(path), "parse FAIL"); + }; +}; + +// Tracks : scan recursif tracks/*.scd ET tracks/<album>/*.scd +// Skip les fichiers prefixes par "_" (orchestrateurs multi-bloc : +// _index.scd, _album.scd) -- la convention sound_algo les exclut. +~scanTracksSyntax = { |dirPath| + PathName(dirPath).entries.do { |entry| + if (entry.isFolder) { + ~scanTracksSyntax.(entry.fullPath); + } { + if (entry.fullPath.endsWith(".scd") and: { + entry.fileName.beginsWith("_").not + }) { + ~assert.("syntax: " ++ entry.fullPath.replace(~base, ""), + ~compileFileSyntax.(entry.fullPath), "parse FAIL"); + }; + }; + }; +}; +~scanTracksSyntax.(~base ++ "tracks/"); + +// Sous-dossiers eclates de palette/rhythm (presets interactifs) +PathName(~base ++ "palette/rhythm/").deepFiles.do { |pn| + if (pn.extension == "scd" and: { pn.fileName != "_index.scd" }) { + ~assert.("syntax: " ++ pn.fullPath.replace(~base, ""), + ~compileFileSyntax.(pn.fullPath), "parse FAIL"); + }; +}; + +// Sous-dossiers eclates de palette/melodies (short/long/xlong/epic) +["short", "long", "xlong", "epic"].do { |sub| + PathName(~base ++ "palette/melodies/" ++ sub ++ "/").files.do { |pn| + if (pn.extension == "scd") { + ~assert.("syntax: " ++ pn.fullPath.replace(~base, ""), + ~compileFileSyntax.(pn.fullPath), "parse FAIL"); + }; + }; +}; + +~report.value; diff --git a/sound_algo/tests/e2e_02_load.scd b/sound_algo/tests/e2e_02_load.scd new file mode 100644 index 0000000..95f779b --- /dev/null +++ b/sound_algo/tests/e2e_02_load.scd @@ -0,0 +1,109 @@ +// ===================================================================== +// e2e_02_load.scd +// Boot Server.internal, charge engine + synthdefs + fills (sequence +// "CHARGER TOUT" du loader) et verifie helpers + SynthDefs attendus. +// Note : engine.scd wrap son SETUP dans s.waitForBoot {} qui differe +// l'execution sur AppClock. On utilise une Routine + .wait pour +// laisser le callback s'executer. +// ===================================================================== + +"=== e2e_02_load ===".postln; + +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +~testCount = 0; +~testFailed = 0; + +~assert = { |label, cond, info| + ~testCount = ~testCount + 1; + if (cond) { + (" [OK] " ++ label).postln; + } { + ~testFailed = ~testFailed + 1; + (" [FAIL] " ++ label ++ if (info.notNil) { " : " ++ info } { "" }).postln; + }; +}; + +~report = { + ("== " ++ ~testCount ++ " tests, " ++ ~testFailed ++ " failed ==").postln; + // Pas de s.quit -- declenche un abort C++ a la fin sur certains setups. + // sclang fera le cleanup propre via 0.exit. + if (~testFailed > 0) { 1.exit } { 0.exit }; +}; + +// Charge le PREMIER bloc top-level (...) d'un fichier multi-blocs +// (utilitaire generique conserve pour usage futur). +~loadFirstBlock = { |path| + var src = File.readAllString(path); + var lines, block, capturing, done, balance; + lines = src.split($\n); + block = List.new; + capturing = false; done = false; balance = 0; + lines.do { |line| + if (done.not) { + if (capturing.not and: { (line.size > 0) and: { line[0] == $( } }) { + capturing = true; + balance = 0; + }; + if (capturing) { + block.add(line); + line.do { |c| + if (c == $( ) { balance = balance + 1 }; + if (c == $) ) { balance = balance - 1 }; + }; + if (balance == 0) { done = true }; + }; + }; + }; + block.join($\n).interpret; +}; + +s = Server.internal; +// Headroom : 1099 SynthDef dans synth/ + fx/, defaut 1024 +s.options.maxSynthDefs = 4096; +s.waitForBoot({ + Routine({ + " [INFO] Server.internal booted".postln; + s.sync; + + // engine.scd : single-block top-level qui wrappe s.waitForBoot {...} + try { (~base ++ "engine.scd").load } { |e| + (" [INFO] engine load: " ++ e.errorString).postln }; + // Laisse l'AppClock executer le callback de waitForBoot + 2.wait; + s.sync; + + try { (~base ++ "synth/_index.scd").load } { |e| (" [INFO] synth: " ++ e.errorString).postln }; + try { (~base ++ "fx/_index.scd").load } { |e| (" [INFO] fx: " ++ e.errorString).postln }; + + try { (~base ++ "palette/rhythm/_index.scd").load } { |e| + (" [INFO] palette/rhythm: " ++ e.errorString).postln }; + // Charge scales + harmonics (sources de ~genMelody et ~enableHarmony + // depuis la reorganisation -- engine.scd ne les definit plus). + try { (~base ++ "palette/scales.scd").load } { |e| + (" [INFO] scales: " ++ e.errorString).postln }; + try { (~base ++ "palette/harmonics/index.scd").load } { |e| + (" [INFO] harmonics: " ++ e.errorString).postln }; + s.sync; + + ~assert.("helper ~reload defini", ~reload.notNil); + ~assert.("helper ~enableHarmony defini", ~enableHarmony.notNil); + ~assert.("helper ~snareFill defini", ~snareFill.notNil); + ~assert.("helper ~tomFill defini", ~tomFill.notNil); + + // Note: \fbVoice etait dans la liste attendue mais n'est defini + // que dans _old/. On le verifie comme reference d'absence. + [ + \kick, \hat, \snare, \clap, \acid, \koto, \erhu, + \warmPad, \subBoom, \drone, \kickGabber, \supersaw, \scratch + ].do { |sym| + var defined = SynthDescLib.global.synthDescs[sym].notNil; + ~assert.("synthdef " ++ sym, defined, "absent de SynthDescLib.global"); + }; + // \fbVoice : reporte mais NON-FAIL (reference uniquement dans _old/) + if (SynthDescLib.global.synthDescs[\fbVoice].isNil) { + " [INFO] \\fbVoice non defini (existe seulement dans _old/)".postln; + }; + + ~report.value; + }).play; +}, 15, { " [FAIL] Server.internal boot timeout".postln; 1.exit }); diff --git a/sound_algo/tests/e2e_03_reload_guards.scd b/sound_algo/tests/e2e_03_reload_guards.scd new file mode 100644 index 0000000..5ea4723 --- /dev/null +++ b/sound_algo/tests/e2e_03_reload_guards.scd @@ -0,0 +1,72 @@ +// ===================================================================== +// e2e_03_reload_guards.scd +// Verifie les guards ajoutes a ~reload (engine.scd:498-516) : +// Quand ~kickSteps / ~melodyNotes / etc. sont nil ou vides, ~reload +// doit auto-defaulter sans planter (Pseq sur nil/empty plante sinon). +// ===================================================================== + +"=== e2e_03_reload_guards ===".postln; + +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +~testCount = 0; +~testFailed = 0; + +~assert = { |label, cond, info| + ~testCount = ~testCount + 1; + if (cond) { + (" [OK] " ++ label).postln; + } { + ~testFailed = ~testFailed + 1; + (" [FAIL] " ++ label ++ if (info.notNil) { " : " ++ info } { "" }).postln; + }; +}; + +~report = { + ("== " ++ ~testCount ++ " tests, " ++ ~testFailed ++ " failed ==").postln; + if (~testFailed > 0) { 1.exit } { 0.exit }; +}; + +~runReload = { + var crashed = false, msg = nil; + try { ~reload.value } { |e| crashed = true; msg = e.errorString }; + [crashed, msg]; +}; + +s = Server.internal; +s.waitForBoot({ + Routine({ + var r; + s.sync; + try { (~base ++ "engine.scd").load } { |e| ("engine err: " ++ e.errorString).postln }; + 2.wait; + s.sync; + + ~assert.("~reload defini", ~reload.notNil); + + // --- Test 1 : nil --- + ~kickSteps = nil; ~hatSteps = nil; + ~snareSteps = nil; ~clapSteps = nil; + ~percSteps = nil; ~acidNotes = nil; + ~acidAccents = nil; ~acidSlides = nil; + ~melodyNotes = nil; ~harmonyNotes = nil; + + r = ~runReload.value; + ~assert.("~reload survive a nil", r[0].not, r[1]); + ~assert.("~kickSteps default apres reload", ~kickSteps.notNil and: { ~kickSteps.size > 0 }); + ~assert.("~melodyNotes default apres reload", ~melodyNotes.notNil and: { ~melodyNotes.size > 0 }); + ~assert.("~harmonyNotes default apres reload", ~harmonyNotes.notNil and: { ~harmonyNotes.size > 0 }); + ~assert.("~acidNotes default apres reload", ~acidNotes.notNil and: { ~acidNotes.size > 0 }); + + // --- Test 2 : empty array --- + ~kickSteps = []; + ~melodyNotes = []; + ~acidNotes = []; + r = ~runReload.value; + ~assert.("~reload survive a [] ", r[0].not, r[1]); + ~assert.("~kickSteps refilled apres []", ~kickSteps.size > 0); + ~assert.("~melodyNotes refilled apres []", ~melodyNotes.size > 0); + ~assert.("~acidNotes refilled apres []", ~acidNotes.size > 0); + + ~report.value; + }).play; +}, 15, { "boot timeout".postln; 1.exit }); diff --git a/sound_algo/tests/e2e_04_synthdef_compile.scd b/sound_algo/tests/e2e_04_synthdef_compile.scd new file mode 100644 index 0000000..bcbcac2 --- /dev/null +++ b/sound_algo/tests/e2e_04_synthdef_compile.scd @@ -0,0 +1,113 @@ +// ===================================================================== +// e2e_04_synthdef_compile.scd +// Charge engine + fx_bus + live + authentic et verifie que les +// SynthDef critiques compilent sans erreur (.asBytes force la +// compilation sans envoyer au serveur). Si une UGen manque, .asBytes +// plante. +// ===================================================================== + +"=== e2e_04_synthdef_compile ===".postln; + +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +~testCount = 0; +~testFailed = 0; + +~assert = { |label, cond, info| + ~testCount = ~testCount + 1; + if (cond) { + (" [OK] " ++ label).postln; + } { + ~testFailed = ~testFailed + 1; + (" [FAIL] " ++ label ++ if (info.notNil) { " : " ++ info } { "" }).postln; + }; +}; + +~report = { + ("== " ++ ~testCount ++ " tests, " ++ ~testFailed ++ " failed ==").postln; + if (~testFailed > 0) { 1.exit } { 0.exit }; +}; + +// Charge tous les blocs top-level d'un fichier .scd multi-blocs. +// Echoue silencieusement bloc par bloc pour ne pas couper le test. +~loadAllBlocks = { |path| + var src = File.readAllString(path); + var lines = src.split($\n); + var blocks = List.new; + var capturing = false, balance = 0, current = nil; + lines.do { |line| + if (capturing.not and: { (line.size > 0) and: { line[0] == $( } }) { + capturing = true; balance = 0; current = List.new; + }; + if (capturing) { + current.add(line); + line.do { |c| + if (c == $( ) { balance = balance + 1 }; + if (c == $) ) { balance = balance - 1 }; + }; + if (balance == 0) { + blocks.add(current.join($\n)); + capturing = false; current = nil; + }; + }; + }; + blocks.do { |b| + try { b.interpret } { |e| + // Beaucoup de blocs sont des exemples qui necessitent + // les Synth runtime ; on ignore les erreurs runtime + // mais on log les erreurs de compilation/UGen manquante. + if (e.errorString.contains("UGen") or: + { e.errorString.contains("doesNotUnderstand") and: + { e.errorString.contains("SynthDef") } }) { + (" !! load " ++ path.basename ++ " : " ++ e.errorString).postln; + }; + }; + }; +}; + +s = Server.internal; +// Headroom : 1099 SynthDef dans synth/ + fx/, defaut 1024 +s.options.maxSynthDefs = 4096; +s.waitForBoot({ + Routine({ + s.sync; + try { (~base ++ "engine.scd").load } { |e| ("engine err: " ++ e.errorString).postln }; + 2.wait; + s.sync; + try { (~base ++ "synth/_index.scd").load } { |e| ("synth err: " ++ e.errorString).postln }; + try { (~base ++ "fx/_index.scd").load } { |e| ("fx err: " ++ e.errorString).postln }; + // Multi-blocs : charge bloc par bloc + ~loadAllBlocks.(~base ++ "live/fx_bus.scd"); + ~loadAllBlocks.(~base ++ "live/live.scd"); + 2.wait; + s.sync; + + // Liste des SynthDef critiques + // (on verifie qu'ils sont enregistres dans SynthDescLib.global ; + // l'enregistrement implique une compilation .asBytes reussie cote sclang) + [ + // fx_bus.scd : version sans Decimator + \fxBitcrush, \fxDelay, \fxReverb, \fxChorus, \fxPhaser, \fxFlanger, + \fxTape, \fxShimmer, \fxDist, \fxSend, + // authentic.scd : scratch fixe avec Select.kr + \scratch, + // live.scd : VCF master + \vcfMoog, \vcfMs20, \vcfLadder, \vcfFormant, \vcfComb, + \vcfHpf, \vcfBpf, \vcfNotch, + // live.scd : FX additionnels + \fxRingMod, \fxFreqShift, \fxGran, \fxComb, \fxFormant, + \fxAutoFilter, \fxTremolo, \fxAutopan, \fxStutter, + \fxResonator, \fxSpringRev, \fxPlate, + // live.scd : master comp/sat + \masterComp, \masterSat, + // live.scd : FX master one-shots + \fxMasterPitch, \fxMasterRing, \fxMasterFreqShift, \fxMasterGran, + \fxMasterBitcrush + ].do { |sym| + var defined = SynthDescLib.global.synthDescs[sym].notNil; + ~assert.("synthdef " ++ sym ++ " compile", defined, + "absent (UGen manquante ? compilation echouee ?)"); + }; + + ~report.value; + }).play; +}, 15, { "boot timeout".postln; 1.exit }); diff --git a/sound_algo/tests/e2e_05_melodies.scd b/sound_algo/tests/e2e_05_melodies.scd new file mode 100644 index 0000000..95a451f --- /dev/null +++ b/sound_algo/tests/e2e_05_melodies.scd @@ -0,0 +1,187 @@ +// ===================================================================== +// e2e_05_melodies.scd +// Verifie les melodies/helpers de palette/melodies/index.scd : +// ~m1..~m78 (32 steps), ~ml1..~ml30 (64), ~mxl1..~mxl15 (96), +// ~mepic1..~mepic10 (128), ~useMelody, ~melodyByGenre, +// ~stretchPattern, ~mirror. +// ===================================================================== + +"=== e2e_05_melodies ===".postln; + +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +~testCount = 0; +~testFailed = 0; + +~assert = { |label, cond, info| + ~testCount = ~testCount + 1; + if (cond) { + (" [OK] " ++ label).postln; + } { + ~testFailed = ~testFailed + 1; + (" [FAIL] " ++ label ++ if (info.notNil) { " : " ++ info } { "" }).postln; + }; +}; + +~report = { + ("== " ++ ~testCount ++ " tests, " ++ ~testFailed ++ " failed ==").postln; + if (~testFailed > 0) { 1.exit } { 0.exit }; +}; + +// Le module melodies est multi-blocs reparti dans plusieurs fichiers. +// On split chaque fichier en blocs et on interprete bloc par bloc, +// en sautant les blocs IDE-only ou les blocs qui font reference a des +// helpers non definis (rares). +~loadAllBlocks = { |path| + var src = File.readAllString(path); + var lines, blocks, capturing, balance, current; + lines = src.split($\n); + blocks = List.new; + capturing = false; balance = 0; current = nil; + lines.do { |line| + if (capturing.not and: { (line.size > 0) and: { line[0] == $( } }) { + capturing = true; + balance = 0; + current = List.new; + }; + if (capturing) { + current.add(line); + line.do { |c| + if (c == $( ) { balance = balance + 1 }; + if (c == $) ) { balance = balance - 1 }; + }; + if (balance == 0) { + blocks.add(current.join($\n)); + capturing = false; + current = nil; + }; + }; + }; + blocks; +}; + +s = Server.internal; +s.waitForBoot({ + Routine({ + var blocks, idx = 0, nFail = 0; + var initial, lookupHits = 0; + s.sync; + try { (~base ++ "engine.scd").load } { |e| ("engine err: " ++ e.errorString).postln }; + 2.wait; + s.sync; + + // Charge palette/scales.scd (scales + helpers melodiques) + try { (~base ++ "palette/scales.scd").load } { |e| + ("scales err: " ++ e.errorString).postln }; + s.sync; + + // Charge melodies : helpers.scd + sous-dossiers eclates + // (short/long/xlong/epic = 2898 fichiers a la v2) + bank + tracks + // Construction dynamique de la liste (index.scd lui-meme passe par + // PathName.deepFiles donc on reproduit la meme strategie ici pour + // les tests bloc par bloc). + blocks = List.new; + ([ + "palette/melodies/helpers.scd" + ] ++ ( + ["short", "long", "xlong", "epic"].collect { |sub| + PathName(~base ++ "palette/melodies/" ++ sub ++ "/").files + .select { |pn| pn.extension == "scd" } + .collect { |pn| pn.fullPath.replace(~base, "") }; + }.flatten + ) ++ [ + "palette/melodies/bank.scd", + "palette/melodies/tracks.scd" + ]).do { |relPath| + var bs = ~loadAllBlocks.(~base ++ relPath); + bs.do { |b| + idx = idx + 1; + try { b.interpret } { |e| nFail = nFail + 1; + (" !! " ++ relPath ++ " bloc#" ++ idx ++ " : " ++ e.errorString).postln }; + }; + bs.do { |b| blocks.add(b) }; + }; + ~assert.("melodies module : " ++ blocks.size ++ " blocs interpretes", + nFail == 0, nFail.asString ++ " blocs en echec"); + s.sync; + + // --- m1..m78 (32 steps) --- + // Note : 4 indices sont des "blocs demo" qui ne creent pas de var ~m6 + // m6 = random walk (genere a la volee) + // m22 = modulating runs (evolutif) + // m25 = counter melody (set ~harmonyNotes pas ~melodyNotes) + // m26 = cascade 32nd (pareil) + // -> on les exclut. Verifier (1..78).reject({ ... }). + (1..78).reject { |i| #[6, 22, 25, 26].includes(i) }.do { |i| + var sym = ("m" ++ i).asSymbol; + var notes = currentEnvironment[sym]; + if (notes.isNil or: { notes.isArray.not } or: { notes.size == 0 }) { + ~assert.("~" ++ sym ++ " defini (32 steps attendus)", false, + "missing/empty (size=" ++ notes.tryPerform(\size) ++ ")"); + } { + ~assert.("~" ++ sym ++ " defini (size=" ++ notes.size ++ ")", true); + }; + }; + + // --- ml1..ml30 (64) --- + (1..30).do { |i| + var sym = ("ml" ++ i).asSymbol; + var notes = currentEnvironment[sym]; + ~assert.("~" ++ sym ++ " = 64 steps", + notes.notNil and: { notes.size == 64 }, + "size=" ++ notes.tryPerform(\size)); + }; + + // --- mxl1..mxl15 (96) --- + (1..15).do { |i| + var sym = ("mxl" ++ i).asSymbol; + var notes = currentEnvironment[sym]; + ~assert.("~" ++ sym ++ " = 96 steps", + notes.notNil and: { notes.size == 96 }, + "size=" ++ notes.tryPerform(\size)); + }; + + // --- mepic1..mepic10 (128) --- + (1..10).do { |i| + var sym = ("mepic" ++ i).asSymbol; + var notes = currentEnvironment[sym]; + ~assert.("~" ++ sym ++ " = 128 steps", + notes.notNil and: { notes.size == 128 }, + "size=" ++ notes.tryPerform(\size)); + }; + + // --- ~useMelody.(\m50) --- + ~useMelody.(\m50); + ~assert.("~useMelody.(\\m50) -> ~melodyNotes == ~m50", + ~melodyNotes == ~m50); + + // --- ~melodyByGenre.(\acid) --- + ~melodyByGenre.(\acid); + ~assert.("~melodyByGenre.(\\acid) set ~melodyNotes", + ~melodyNotes.notNil and: { ~melodyNotes.size > 0 }); + + // --- Lookup indirect : redefinir ~m29 et verifier que ~melodyByGenre + // finit par utiliser la nouvelle valeur (preuve que le bank ne + // stocke pas une copie figee de l'ancienne). + ~m29 = [99, 99, 99]; + // Le bank \acid contient \m29 parmi ~130 entrees (post-split v2). + // P(hit sur N essais) = 1 - (126/127)^N. Pour 99% on a besoin de + // N >= 580. On utilise 1000 pour avoir une marge confortable. + lookupHits = 0; + 1000.do { + ~melodyByGenre.(\acid); + if (~melodyNotes == [99, 99, 99]) { lookupHits = lookupHits + 1 }; + }; + ~assert.("~melodyByGenre lookup indirect (m29 modifie pris en compte)", + lookupHits > 0, + "0 hits sur 1000 essais -- bank a peut-etre fige les valeurs"); + + // --- ~stretchPattern.([1,2,3,4], 2) -> 8 elements --- + ~assert.("~stretchPattern factor=2", ~stretchPattern.([1,2,3,4], 2).size == 8); + + // --- ~mirror.([1,2,3]) -> [1,2,3,3,2,1] --- + ~assert.("~mirror retourne palindrome", + ~mirror.([1,2,3]) == [1,2,3,3,2,1]); + + ~report.value; + }).play; +}, 15, { "boot timeout".postln; 1.exit }); diff --git a/sound_algo/tests/e2e_06_mixer.scd b/sound_algo/tests/e2e_06_mixer.scd new file mode 100644 index 0000000..6eeb378 --- /dev/null +++ b/sound_algo/tests/e2e_06_mixer.scd @@ -0,0 +1,128 @@ +// ===================================================================== +// e2e_06_mixer.scd +// Verifie l'API mixer.scd : ~setVol, ~masterVol, ~mute, ~unmute, +// ~solo, ~unsolo, ~mixReset. +// ===================================================================== + +"=== e2e_06_mixer ===".postln; + +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +~testCount = 0; +~testFailed = 0; + +~assert = { |label, cond, info| + ~testCount = ~testCount + 1; + if (cond) { + (" [OK] " ++ label).postln; + } { + ~testFailed = ~testFailed + 1; + (" [FAIL] " ++ label ++ if (info.notNil) { " : " ++ info } { "" }).postln; + }; +}; + +~report = { + ("== " ++ ~testCount ++ " tests, " ++ ~testFailed ++ " failed ==").postln; + if (~testFailed > 0) { 1.exit } { 0.exit }; +}; + +~loadAllBlocks = { |path| + var src = File.readAllString(path); + var lines = src.split($\n); + var blocks = List.new; + var capturing = false, balance = 0, current = nil; + lines.do { |line| + if (capturing.not and: { (line.size > 0) and: { line[0] == $( } }) { + capturing = true; balance = 0; current = List.new; + }; + if (capturing) { + current.add(line); + line.do { |c| + if (c == $( ) { balance = balance + 1 }; + if (c == $) ) { balance = balance - 1 }; + }; + if (balance == 0) { + blocks.add(current.join($\n)); + capturing = false; current = nil; + }; + }; + }; + blocks; +}; + +~floatEq = { |a, b, eps = 1e-6| (a - b).abs < eps }; + +s = Server.internal; +s.waitForBoot({ + Routine({ + var kickInit, hatInit, refKick, refHat; + var blocks, idx = 0; + s.sync; + try { (~base ++ "engine.scd").load } { |e| ("engine err: " ++ e.errorString).postln }; + 2.wait; + s.sync; + + // Charge le SETUP de mixer.scd : 1er gros bloc seulement (les blocs + // suivants sont des exemples a la demande). + blocks = ~loadAllBlocks.(~base ++ "live/mixer.scd"); + // Le 1er bloc top-level est le SETUP complet + if (blocks.size > 0) { + try { blocks[0].interpret } { |e| + ("mixer setup err: " ++ e.errorString).postln }; + }; + s.sync; + + ~assert.("~setVol defini", ~setVol.notNil); + ~assert.("~masterVol defini", ~masterVol.notNil); + ~assert.("~mute defini", ~mute.notNil); + ~assert.("~solo defini", ~solo.notNil); + ~assert.("~mixReset defini", ~mixReset.notNil); + + kickInit = ~kickAmp; + refKick = ~mixRef[\kick]; + + // ~setVol.(\kick, 0.5) : amp = ref * 0.5 * mixMaster(=1) = ref * 0.5 + ~setVol.(\kick, 0.5); + ~assert.("~setVol kick 0.5 -> kickAmp = ref * 0.5", + ~floatEq.(~kickAmp, refKick * 0.5), + "got " ++ ~kickAmp ++ " expected " ++ (refKick * 0.5)); + + // ~masterVol.(0.5) : amp = ref * 0.5 (coef voie) * 0.5 (master) + ~masterVol.(0.5); + ~assert.("~mixMaster == 0.5", ~floatEq.(~mixMaster, 0.5)); + ~assert.("~kickAmp = ref * 0.5 * 0.5", + ~floatEq.(~kickAmp, refKick * 0.5 * 0.5), + "got " ++ ~kickAmp); + + // ~masterVol.(1.0) : kickAmp doit revenir a ref * 0.5 + ~masterVol.(1.0); + ~assert.("~masterVol(1) restore : kickAmp = ref * 0.5 (non-destructif)", + ~floatEq.(~kickAmp, refKick * 0.5), + "got " ++ ~kickAmp); + + // ~mixReset : tous les coefs a 1 + ~mixReset.value; + ~assert.("~mixReset : ~mix[\\kick] == 1", ~floatEq.(~mix[\kick], 1.0)); + ~assert.("~mixReset : ~mix[\\hat] == 1", ~floatEq.(~mix[\hat], 1.0)); + ~assert.("~mixReset : ~kickAmp == ref", ~floatEq.(~kickAmp, refKick)); + + // ~mute / ~unmute + ~mute.(\kick); + ~assert.("~mute kick -> kickAmp == 0", ~kickAmp == 0, + "got " ++ ~kickAmp); + ~unmute.(\kick); + ~assert.("~unmute kick -> kickAmp restored", + ~floatEq.(~kickAmp, refKick), + "got " ++ ~kickAmp); + + // ~solo / ~unsolo + ~solo.(\melody); + ~assert.("~solo melody -> kickAmp == 0", ~kickAmp == 0); + ~assert.("~solo melody -> melodyAmp != 0", ~melodyAmp != 0); + ~unsolo.value; + ~assert.("~unsolo -> kickAmp restored", + ~floatEq.(~kickAmp, refKick), + "got " ++ ~kickAmp); + + ~report.value; + }).play; +}, 15, { "boot timeout".postln; 1.exit }); diff --git a/sound_algo/tests/e2e_07_jump.scd b/sound_algo/tests/e2e_07_jump.scd new file mode 100644 index 0000000..c10aee9 --- /dev/null +++ b/sound_algo/tests/e2e_07_jump.scd @@ -0,0 +1,107 @@ +// ===================================================================== +// e2e_07_jump.scd +// Verifie le SETUP de jump.scd et l'execution d'une section. +// ===================================================================== + +"=== e2e_07_jump ===".postln; + +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +~testCount = 0; +~testFailed = 0; + +~assert = { |label, cond, info| + ~testCount = ~testCount + 1; + if (cond) { + (" [OK] " ++ label).postln; + } { + ~testFailed = ~testFailed + 1; + (" [FAIL] " ++ label ++ if (info.notNil) { " : " ++ info } { "" }).postln; + }; +}; + +~report = { + ("== " ++ ~testCount ++ " tests, " ++ ~testFailed ++ " failed ==").postln; + if (~testFailed > 0) { 1.exit } { 0.exit }; +}; + +// Charge tous les blocs top-level d'un fichier .scd multi-blocs +// jusqu'a un bloc cible (predicat sur le contenu). +~loadAllBlocks = { |path, untilPred| + var src = File.readAllString(path); + var lines = src.split($\n); + var blocks = List.new; + var capturing = false, balance = 0, current = nil, stop = false; + lines.do { |line| + if (stop.not) { + if (capturing.not and: { (line.size > 0) and: { line[0] == $( } }) { + capturing = true; balance = 0; current = List.new; + }; + if (capturing) { + current.add(line); + line.do { |c| + if (c == $( ) { balance = balance + 1 }; + if (c == $) ) { balance = balance - 1 }; + }; + if (balance == 0) { + var blk = current.join($\n); + blocks.add(blk); + capturing = false; current = nil; + if (untilPred.notNil and: { untilPred.value(blk) }) { + stop = true; + }; + }; + }; + }; + }; + blocks; +}; + +s = Server.internal; +s.waitForBoot({ + Routine({ + var blocks, setupOk = true, sectionAOk = true; + var jumpedOk = true, jumpedNonExistent = true; + s.sync; + try { (~base ++ "engine.scd").load } { |e| ("engine err: " ++ e.errorString).postln }; + 2.wait; + s.sync; + + // Charge les blocs jump.scd jusqu'a et y compris le bloc TRACK A + // (~sections['A'] = ...). + blocks = ~loadAllBlocks.(~base ++ "control/jump.scd", { |b| + b.contains("~sections['A']") or: { b.contains("~sections[\\A]") } + }); + + // Execute le 1er bloc (SETUP) et le bloc TRACK A + try { blocks[0].interpret } { |e| + setupOk = false; ("setup err: " ++ e.errorString).postln }; + ~assert.("jump SETUP execute", setupOk); + ~assert.("~jumpTo defini", ~jumpTo.notNil); + ~assert.("~sections defini", ~sections.notNil); + + // Cherche le bloc qui contient ~sections['A'] ou ~sections[\A] + blocks.do { |b| + if (b.contains("~sections['A']") or: { b.contains("~sections[\\A]") }) { + try { b.interpret } { |e| + sectionAOk = false; ("track A err: " ++ e.errorString).postln }; + }; + }; + ~assert.("track A bloc execute", sectionAOk); + ~assert.("~sections['A'] presente", ~sections['A'.asSymbol].notNil + or: { ~sections[\A].notNil }); + + // ~jumpTo.('A', 'minimal_kick_t5_sub_melody_pad') + try { ~jumpTo.('A', 'minimal_kick_t5_sub_melody_pad') } + { |e| jumpedOk = false; ("jumpTo err: " ++ e.errorString).postln }; + ~assert.("~jumpTo('A','minimal_..._pad') sans erreur", jumpedOk); + ~assert.("section a set ~melodyInst = \\pad", ~melodyInst == \pad, + "got: " ++ ~melodyInst); + + // ~jumpTo.('A', 'inexistante_xxx') : doit poster mais ne pas crasher + try { ~jumpTo.('A', 'inexistante_xxx') } + { |e| jumpedNonExistent = false; ("err: " ++ e.errorString).postln }; + ~assert.("~jumpTo section inexistante : pas de crash", jumpedNonExistent); + + ~report.value; + }).play; +}, 15, { "boot timeout".postln; 1.exit }); diff --git a/sound_algo/tests/e2e_08_live.scd b/sound_algo/tests/e2e_08_live.scd new file mode 100644 index 0000000..076582b --- /dev/null +++ b/sound_algo/tests/e2e_08_live.scd @@ -0,0 +1,106 @@ +// ===================================================================== +// e2e_08_live.scd +// Verifie les helpers live.scd (LFO, vcf, drop, ...) et le bon +// fonctionnement d'un LFO sur une variable globale (sans serveur). +// ===================================================================== + +"=== e2e_08_live ===".postln; + +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +~testCount = 0; +~testFailed = 0; + +~assert = { |label, cond, info| + ~testCount = ~testCount + 1; + if (cond) { + (" [OK] " ++ label).postln; + } { + ~testFailed = ~testFailed + 1; + (" [FAIL] " ++ label ++ if (info.notNil) { " : " ++ info } { "" }).postln; + }; +}; + +~report = { + ("== " ++ ~testCount ++ " tests, " ++ ~testFailed ++ " failed ==").postln; + if (~testFailed > 0) { 1.exit } { 0.exit }; +}; + +~loadAllBlocks = { |path| + var src = File.readAllString(path); + var lines = src.split($\n); + var blocks = List.new; + var capturing = false, balance = 0, current = nil; + lines.do { |line| + if (capturing.not and: { (line.size > 0) and: { line[0] == $( } }) { + capturing = true; balance = 0; current = List.new; + }; + if (capturing) { + current.add(line); + line.do { |c| + if (c == $( ) { balance = balance + 1 }; + if (c == $) ) { balance = balance - 1 }; + }; + if (balance == 0) { + blocks.add(current.join($\n)); + capturing = false; current = nil; + }; + }; + }; + blocks; +}; + +s = Server.internal; +s.waitForBoot({ + Routine({ + var initialKick, valueAfterLfo, blocksFx, blocksLive; + s.sync; + try { (~base ++ "engine.scd").load } { |e| ("engine err: " ++ e.errorString).postln }; + 2.wait; + s.sync; + + // fx_bus.scd : on charge le 1er bloc (defs SynthDef + setup buses) + blocksFx = ~loadAllBlocks.(~base ++ "live/fx_bus.scd"); + blocksFx.do { |b| + try { b.interpret } { |e| + // ignore les erreurs runtime non critiques + }; + }; + + // live.scd : pareil, on charge tous les blocs (le 1er bloc est le SETUP + // gigantesque qui contient les SynthDef + les helpers) + blocksLive = ~loadAllBlocks.(~base ++ "live/live.scd"); + blocksLive.do { |b| + try { b.interpret } { |e| /* ignore demos errors */ }; + }; + s.sync; + + ~assert.("~lfoTo defini", ~lfoTo.notNil); + ~assert.("~lfoStopVar defini", ~lfoStopVar.notNil); + ~assert.("~vcfOn defini", ~vcfOn.notNil); + ~assert.("~vcfOff defini", ~vcfOff.notNil); + ~assert.("~drop defini", ~drop.notNil); + ~assert.("~breakdown defini", ~breakdown.notNil); + ~assert.("~stutter defini", ~stutter.notNil); + ~assert.("~handsUp defini", ~handsUp.notNil); + + // --- Test LFO sur ~kickAmp (sans audio, juste Routine sclang) --- + initialKick = ~kickAmp ? 0.5; + ~kickAmp = 0.5; // baseline + ~lfoTo.(\kickAmp, 2.0, 0.3, \sin, 0.5); // 2Hz pour bouger vite + 1.0.wait; + valueAfterLfo = ~kickAmp; + ~assert.("LFO modifie ~kickAmp", + valueAfterLfo != 0.5, + "kickAmp inchange (" ++ valueAfterLfo ++ ")"); + ~assert.("LFO depth respecte (0.5 +/- 0.3)", + (valueAfterLfo > 0.15) and: { valueAfterLfo < 0.85 }, + "value " ++ valueAfterLfo); + + ~lfoStopVar.(\kickAmp); + ~assert.("~lfoStopVar -> ~lfos[\\kickAmp].isNil", + ~lfos[\kickAmp].isNil, + "still: " ++ ~lfos[\kickAmp]); + + ~report.value; + }).play; +}, 15, { "boot timeout".postln; 1.exit }); diff --git a/sound_algo/tests/e2e_09_tracks.scd b/sound_algo/tests/e2e_09_tracks.scd new file mode 100644 index 0000000..975d535 --- /dev/null +++ b/sound_algo/tests/e2e_09_tracks.scd @@ -0,0 +1,51 @@ +// ===================================================================== +// e2e_09_tracks.scd +// Verifie que chaque tracks/*.scd compile (.compile retourne une +// Function et non nil) sans executer la Routine. +// ===================================================================== + +"=== e2e_09_tracks ===".postln; + +// ~base auto-derive depuis l'emplacement du test (portable entre worktrees). +~base = PathName(thisProcess.nowExecutingPath).pathOnly ++ "../"; +~testCount = 0; +~testFailed = 0; + +~assert = { |label, cond, info| + ~testCount = ~testCount + 1; + if (cond) { + (" [OK] " ++ label).postln; + } { + ~testFailed = ~testFailed + 1; + (" [FAIL] " ++ label ++ if (info.notNil) { " : " ++ info } { "" }).postln; + }; +}; + +~report = { + ("== " ++ ~testCount ++ " tests, " ++ ~testFailed ++ " failed ==").postln; + if (~testFailed > 0) { 1.exit } { 0.exit }; +}; + +// Scan recursif : tracks/*.scd ET tracks/<album>/*.scd (sous-dossiers +// d'album generes par la convention "<L>_<slug>/<L>NN_<sub>.scd"). +// Skip _album.scd : c'est un orchestrateur multi-bloc, pas une track. +~scanTracks = { |dirPath| + PathName(dirPath).entries.do { |entry| + if (entry.isFolder) { + ~scanTracks.(entry.fullPath); + } { + if (entry.fullPath.endsWith(".scd") and: { + entry.fileName.beginsWith("_").not + }) { + var src = File.readAllString(entry.fullPath); + var compiled = src.compile; + ~assert.("compile " ++ entry.fileName, + compiled.isKindOf(Function), + "got class " ++ compiled.class); + }; + }; + }; +}; +~scanTracks.(~base ++ "tracks/"); + +~report.value; diff --git a/sound_algo/tests/e2e_10_timestamps.scd b/sound_algo/tests/e2e_10_timestamps.scd new file mode 100644 index 0000000..3691066 --- /dev/null +++ b/sound_algo/tests/e2e_10_timestamps.scd @@ -0,0 +1,116 @@ +// ===================================================================== +// e2e_10_timestamps.scd +// Verifie que les timestamps `[X M:SS]` dans les .postln des +// tracks/*.scd sont monotoniquement croissants. +// Detecte les copy-paste casses ou les sections "new --" hors +// chronologie (cf timestamps refacto F/G/M/N). +// Pure analyse statique : ne lance aucune Routine. +// ===================================================================== + +"=== e2e_10_timestamps ===".postln; + +~base = "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/"; +~testCount = 0; +~testFailed = 0; + +~assert = { |label, cond, info| + ~testCount = ~testCount + 1; + if (cond) { + (" [OK] " ++ label).postln; + } { + ~testFailed = ~testFailed + 1; + (" [FAIL] " ++ label ++ if (info.notNil) { " : " ++ info } { "" }).postln; + }; +}; + +~report = { + ("== " ++ ~testCount ++ " tests, " ++ ~testFailed ++ " failed ==").postln; + if (~testFailed > 0) { 1.exit } { 0.exit }; +}; + +// Parse "M:SS" -> seconds. Returns nil si format invalide. +~parseTs = { |str| + var parts, m, s; + parts = str.split($:); + if (parts.size != 2) { nil } { + m = parts[0].asInteger; + s = parts[1].asInteger; + (m * 60) + s; + }; +}; + +// Extrait les couples (timestamp_seconds, line_number) d'un fichier +// en cherchant les "[X M:SS] ...".postln; ou .postln (parenthese). +~extractTimestamps = { |srcLines, tag| + var pattern, results = List.new; + // pattern : [<tag> <m>:<ss>] ex: [A 0:00] ou [A02 1:30] + pattern = "[" ++ tag ++ " "; + srcLines.do { |line, i| + var startIdx, endIdx, tsStr, ts; + startIdx = line.find(pattern); + if (startIdx.notNil) { + endIdx = line.find("]", false, startIdx); + if (endIdx.notNil) { + tsStr = line.copyRange(startIdx + pattern.size, endIdx - 1); + ts = ~parseTs.(tsStr); + if (ts.notNil) { + results.add([ts, i + 1, tsStr]); + }; + }; + }; + }; + results.array; +}; + +// Verifie monotonie pour une track donnee +~checkTrack = { |trackPath| + var fileName, src, lines, tag, timestamps, prevTs, allOk; + fileName = PathName(trackPath).fileName; + // tag = portion avant le premier '_' du nom de fichier + // A_acid_journey.scd -> "A" (legacy standalone) + // A02_minimal_acid.scd -> "A02" (album sub-track v2) + tag = fileName.split($_)[0]; + src = File.readAllString(trackPath); + lines = src.split($\n); + timestamps = ~extractTimestamps.(lines, tag); + + // Au moins 2 timestamps attendus (intro + outro minimum) + ~assert.(fileName ++ " has timestamps", + timestamps.size >= 2, + "found " ++ timestamps.size); + + // Monotonie : chaque ts >= precedent + prevTs = -1; + allOk = true; + timestamps.do { |triple| + var ts = triple[0], lineNum = triple[1], tsStr = triple[2]; + if (ts < prevTs) { + allOk = false; + (" -> regression line " ++ lineNum + ++ " : [" ++ tag ++ " " ++ tsStr ++ "] vient apres " + ++ prevTs).postln; + }; + prevTs = ts; + }; + ~assert.(fileName ++ " timestamps monotones", allOk); +}; + +// Iter recursif : tracks/*.scd ET tracks/<album>/*.scd +// Skip prefixe "_" (orchestrateurs : _index.scd, _album.scd -- ils ne +// contiennent pas de timestamps de sections, c'est de la metadonnee). +~scanForTs = { |dirPath| + PathName(dirPath).entries.do { |entry| + if (entry.isFolder) { + ~scanForTs.(entry.fullPath); + } { + if (entry.fullPath.endsWith(".scd") and: { + entry.fileName.beginsWith("_").not + }) { + ~checkTrack.(entry.fullPath); + }; + }; + }; +}; +~scanForTs.(~base ++ "tracks/"); + +~report.value; diff --git a/sound_algo/tests/run_all.sh b/sound_algo/tests/run_all.sh new file mode 100755 index 0000000..f3ba8fb --- /dev/null +++ b/sound_algo/tests/run_all.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# ===================================================================== +# run_all.sh -- runner pour la suite de tests E2E sound_algo +# Execute chaque tests/e2e_NN_xxx.scd et reporte PASS/FAIL. +# +# Note : sclang termine parfois en exit code != 0 (libc++abi sur quit +# du serveur interne) meme quand tous les tests passent. On parse la +# ligne "== N tests, M failed ==" dans la sortie au lieu de l'exit code. +# ===================================================================== + +set -u +cd "$(dirname "$0")/.." # racine du projet + +SCLANG="${SCLANG:-/Applications/SuperCollider.app/Contents/MacOS/sclang}" +TESTS_DIR="tests" +LOGS_DIR="tests/.logs" +mkdir -p "$LOGS_DIR" + +if [ ! -x "$SCLANG" ]; then + echo "[ERROR] sclang introuvable a $SCLANG" + exit 2 +fi + +results=() +total_pass=0 +total_fail=0 +total_skip=0 + +for scd in "$TESTS_DIR"/e2e_*.scd; do + name=$(basename "$scd" .scd) + label="${name#e2e_}" + log="$LOGS_DIR/${name}.log" + + echo "----------------------------------------------------------------" + echo "[RUN] $label" + echo "----------------------------------------------------------------" + + # Limite de temps : 60s par test (perl alarm si timeout coreutils absent) + # 2>&1 dans le sous-shell pour eviter le "Abort trap: 6" de sclang + # (innofensif, vient du arret du serveur interne ; on parse la sortie SC). + ( perl -e 'alarm 60; exec @ARGV' "$SCLANG" "$scd" ) > "$log" 2>&1 + rc=$? + + # Parse le resume "== N tests, M failed ==" + summary=$(grep -E '^== [0-9]+ tests, [0-9]+ failed ==' "$log" | tail -1) + if [ -z "$summary" ]; then + # Pas de resume -> SKIP/CRASH + total_skip=$((total_skip + 1)) + results+=("[SKIP] $label") + echo " -> [SKIP] (pas de resume; rc=$rc)" + # Affiche les 30 dernieres lignes pour debug + echo " --- last 30 lines of $log ---" + tail -30 "$log" | sed 's/^/ /' + continue + fi + + n_tests=$(echo "$summary" | sed -E 's/^== ([0-9]+) tests, ([0-9]+) failed ==/\1/') + n_failed=$(echo "$summary" | sed -E 's/^== ([0-9]+) tests, ([0-9]+) failed ==/\2/') + + if [ "$n_failed" = "0" ]; then + total_pass=$((total_pass + 1)) + results+=("[OK] $label ($n_tests tests)") + echo " -> [OK] $n_tests tests" + else + total_fail=$((total_fail + 1)) + results+=("[FAIL] $label ($n_failed/$n_tests)") + echo " -> [FAIL] $n_failed/$n_tests failed" + # Affiche les FAIL specifiques + grep -E '^\s*\[FAIL\]' "$log" | sed 's/^/ /' + fi +done + +echo +echo "================================================================" +echo " RESUME FINAL" +echo "================================================================" +for r in "${results[@]}"; do + echo " $r" +done +echo +echo " Tests OK : $total_pass" +echo " Tests FAIL : $total_fail" +echo " Tests SKIP : $total_skip" +echo "================================================================" + +if [ "$total_fail" -gt 0 ] || [ "$total_skip" -gt 0 ]; then + exit 1 +fi +exit 0 diff --git a/sound_algo/tracks/A_acid_journey/A01_acid_journey.scd b/sound_algo/tracks/A_acid_journey/A01_acid_journey.scd new file mode 100644 index 0000000..661e456 --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A01_acid_journey.scd @@ -0,0 +1,146 @@ +// ===================================================================== +// A01_acid_journey.scd -- Album A "Acid Journey", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// PREREQUIS : engine.scd evalue (les SynthDef + helpers doivent exister). +// ===================================================================== + +// --- TRACK A01 : "ACID JOURNEY" 8 minutes --------------------------- +// 0:00 minimal -> 2:00 acid rave -> 4:00 detroit -> 5:30 hard -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A01 0:00] minimal -- kick T5 sub + melody PAD...".postln; + ~bpm = 124; ~acidCutoff = 500; ~acidRq = 0.25; ~acidDrive = 1.5; ~acidAmp = 0.3; + ~kickAmp = 0.5; ~hatAmp = 0.08; ~melodyAmp = 0.14; + ~kickFreq = 42; ~kickPitchAmt = 2.0; ~kickDecay = 0.5; + ~kickDrive = 1.0; ~kickClick = 0.05; // T5 sub deep + ~melodyInst = \pad; // PAD pour l'intro + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 1500; + ~melodyNotes = [60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0, + 60,0,0,0,0,0,0,0, 65,0,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 120.wait; + + "[A01 2:00] acid rave -- kick T1 + melody LEAD + variations...".postln; + ~bpm = 132; ~acidCutoff = 800; ~acidRq = 0.15; ~acidDrive = 2.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.3; ~kickClick = 0.2; + ~melodyInst = \lead; // LEAD pour le drop + ~melodyAttack = 0.012; ~melodyRelease = 0.25; ~melodyCutoff = 2400; + ~melodyAmp = 0.16; + ~acidNotes = [36,36,48,36,39,36,43,39, 36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~melodyNotes = [60,0,67,0,70,0,67,65, 63,0,60,0,0,67,70,72, + 75,0,72,70,67,0,0,65, 63,60,0,67,70,0,72,0]; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + // 120s avec micro-variations toutes les 4s + 30.do { |k| + if (0.25.coin) { ~acidCutoff = rrand(600, 1400); ~reload.value }; + // Melodie : alterne entre genMelody + mutate de l'existant + if (0.20.coin) { + if (0.5.coin) { + // 50% : nouveau pattern dans une scale aleatoire + ~melodyNotes = ~genMelody.(0.55, + [~scaleMinorPent, ~scaleMinor, ~scaleDorian, ~scaleHigh].choose); + } { + // 50% : mutation legere du pattern existant + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + ~reload.value; + }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + // 5% chance d'octavate la melodie + if (0.05.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.25); ~reload.value }; + 4.wait; + }; + + "[A01 4:00] detroit stabs -- kick T2 + melody STAB...".postln; + ~bpm = 128; ~acidCutoff = 700; ~acidDrive = 2.2; + ~kickFreq = 65; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.45; + ~melodyInst = \stab; // STAB style Detroit + ~melodyDrive = 2.8; ~melodyCutoff = 1500; + ~melodyNotes = [63,0,0,0,70,0,67,0, 65,0,0,0,70,0,72,0, + 63,0,0,0,67,0,70,0, 65,0,60,0,67,0,0,0]; + ~melodyAttack = 0.001; ~melodyRelease = 0.06; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + // 90s avec stabs qui mutent (Detroit = Cm avec variations chromatiques) + 18.do { |k| + if (0.3.coin) { + ~melodyNotes = ~genMelody.(0.35, + [~scaleMinor, ~scaleDorian, ~scaleHarmonicMin].choose); + ~reload.value; + }; + if (0.2.coin) { ~acidCutoff = rrand(500, 1500); ~reload.value }; + if (0.15.coin) { ~kickClick = rrand(0.2, 0.55); ~reload.value }; + // Transposition aleatoire (-5/+5 semi-tons) toutes les ~30s + if (0.07.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + " -> melodie transposee".postln; + }; + 5.wait; + }; + + "[A01 5:30] hard push -- kick T4 distordu...".postln; + ~bpm = 140; ~acidCutoff = 1500; ~acidRq = 0.08; ~acidDrive = 3.8; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; // T4 distordu + ~melodyAmp = 0; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + 60.wait; + "[A01 6:30] new -- supersaw + ml1 long melody + vcf moog + dub fx...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; ~melodyCutoff = 2200; + ~melodyAmp = 0.16; + ~melodyNotes = (~ml1 ? [60,0,67,0,70,0,67,65, 63,0,60,0,0,67,70,72]).copy; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.45) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + 45.wait; + + "[A01 7:15] new -- guzheng + acid evolve...".postln; + ~melodyInst = \guzheng; + ~melodyAttack = 0.001; ~melodyRelease = 0.6; ~melodyCutoff = 4000; + ~melodyAmp = 0.18; + ~vcfOff !? { ~vcfOff.() }; + ~stutter !? { ~stutter.(8, 1.5) }; + ~fxPreset !? { ~fxPreset.(\space) }; + TempoClock.default.tempo = ~bpm/60; ~reload.value; + 30.wait; + + + "[A01 7:45] outro -- melody PAD qui s'efface...".postln; + ~melodyInst = \pad; // PAD doux pour finir + ~melodyAttack = 0.5; ~melodyRelease = 2.0; ~melodyAmp = 0.12; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~acidCutoff = 200 + (x * 1300); + ~acidAmp = x * 0.32; ~kickAmp = x * 0.5; ~hatAmp = x * 0.16; + ~melodyAmp = x * 0.12; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[A01 8:15] === fin ACID JOURNEY ===".postln; +}).play; +"=== TRACK A : ACID JOURNEY 7 min lancee ===".postln; +) + + +// ===================================================================== +// TWEAKS LIVE -- voir palette/tweaks_template.scd (charge dans 00_load) +// Ouvrir tweaks_template.scd et Cmd+Entree sur une ligne. +// ===================================================================== + +// ===================================================================== +// SECTIONS / JUMP TO -- voir jump.scd +// Ouvrir jump.scd, evaluer SETUP JUMP, puis le bloc TRACK X correspondant, +// puis Cmd+Entree sur la ligne ~jumpTo.('X', 'slug'). +// ===================================================================== diff --git a/sound_algo/tracks/A_acid_journey/A02_minimal_acid.scd b/sound_algo/tracks/A_acid_journey/A02_minimal_acid.scd new file mode 100644 index 0000000..89eab4a --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A02_minimal_acid.scd @@ -0,0 +1,77 @@ +// ===================================================================== +// A02_minimal_acid.scd -- Album A "Acid Journey", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A02 : "MINIMAL ACID" 4 minutes --------------------------- +// 0:00 sub pulse -> 1:00 303 enter -> 2:30 ride -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A02 0:00] sub pulse -- kick deep + pluck minimal...".postln; + ~bpm = 120; + ~kickFreq = 38; ~kickPitchAmt = 1.5; ~kickDecay = 0.6; + ~kickDrive = 0.9; ~kickClick = 0.04; ~kickAmp = 0.55; + ~hatAmp = 0.04; + ~acidAmp = 0; ~acidCutoff = 350; ~acidRq = 0.3; ~acidDrive = 1.2; + ~melodyInst = \pluck; + ~melodyAttack = 0.002; ~melodyRelease = 0.4; ~melodyCutoff = 1200; + ~melodyAmp = 0.10; + ~melodyNotes = [60,0,0,0, 0,0,0,0, 67,0,0,0, 0,0,0,0, + 0,0,0,0, 65,0,0,0, 0,0,0,0, 0,0,63,0]; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 60.wait; + + "[A02 1:00] 303 enter -- acid pattern subtil...".postln; + ~acidAmp = 0.22; ~acidCutoff = 600; ~acidDrive = 1.8; + ~acidNotes = [36,36,36,39, 41,36,43,36, 36,39,36,41, 36,43,36,36]; + ~acidSlides = [0,1,0,0, 0,0,1,0, 0,0,1,0, 0,0,0,1]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,1]; ~hatAmp = 0.10; + ~reload.value; + Pdef(\acidSeq).play; + // 90s avec micro-mutations 303 + 18.do { |k| + if (0.30.coin) { ~acidCutoff = rrand(450, 900); ~reload.value }; + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.35, ~scaleMinorPent); + ~reload.value; + }; + if (0.12.coin) { ~acidSlides = ~genAcidSlides.(0.25); ~reload.value }; + 5.wait; + }; + + "[A02 2:30] ride -- hat 16th + clap on 3...".postln; + ~hatSteps = [1,0,1,1, 1,0,1,1, 1,0,1,1, 1,0,1,1]; ~hatAmp = 0.14; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~acidCutoff = 1100; ~melodyAmp = 0.13; + ~reload.value; + Pdef(\clapSeq).play; + // 60s + 12.do { |k| + if (0.25.coin) { ~acidCutoff = rrand(800, 1500); ~reload.value }; + if (0.15.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[A02 3:30] outro -- 303 only fade...".postln; + ~enableHarmony.(\off); + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.14; ~clapAmp = x * 0.5; + ~melodyAmp = x * 0.13; ~acidAmp = x * 0.22; + ~acidCutoff = 200 + (x * 900); + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \clapSeq, \acidSeq, \melodySeq].do { |k| Pdef(k).stop }; + "[A02 4:00] === fin MINIMAL ACID ===".postln; +}).play; +"=== TRACK A02 : MINIMAL ACID 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A03_acid_house.scd b/sound_algo/tracks/A_acid_journey/A03_acid_house.scd new file mode 100644 index 0000000..ce497ff --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A03_acid_house.scd @@ -0,0 +1,91 @@ +// ===================================================================== +// A03_acid_house.scd -- Album A "Acid Journey", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A03 : "ACID HOUSE (Chicago)" 6 minutes ------------------- +// 0:00 four-on-floor -> 1:30 303 squelch -> 3:00 rhodes chord -> 4:30 climax -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A03 0:00] four-on-floor -- house kick + open hat shuffle...".postln; + ~bpm = 122; + ~kickFreq = 50; ~kickPitchAmt = 2.5; ~kickDecay = 0.4; + ~kickDrive = 1.2; ~kickClick = 0.18; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,1]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~acidAmp = 0; ~acidCutoff = 700; ~acidRq = 0.18; ~acidDrive = 2.0; + ~melodyInst = \pluck; ~melodyAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 90.wait; + + "[A03 1:30] 303 squelch -- pure acid bass...".postln; + ~acidAmp = 0.32; ~acidCutoff = 850; + ~acidNotes = [36,48,36,36, 39,36,43,36, 41,36,48,36, 39,36,36,43]; + ~acidSlides = [0,1,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]; + ~reload.value; + Pdef(\acidSeq).play; + // 90s mutation 303 progressive + 18.do { |k| + ~acidCutoff = 600 + (k * 35); + if (0.35.coin) { ~acidRq = rrand(0.10, 0.25) }; + if (0.20.coin) { ~acidSlides = ~genAcidSlides.(0.35); }; + if (0.15.coin) { ~acidNotes = ~genMelody.(0.7, ~scaleAcid); }; + ~reload.value; + 5.wait; + }; + + "[A03 3:00] rhodes chord -- jazzy vibe...".postln; + ~melodyInst = \rhodes; + ~melodyAttack = 0.01; ~melodyRelease = 1.2; ~melodyCutoff = 2200; + ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 65,0,0,0, 70,0,0,0, + 63,0,0,0, 69,0,0,0, 67,0,0,0, 0,0,0,0]; + ~enableHarmony.(\third); + ~reload.value; + Pdef(\melodySeq).play; Pdef(\harmonySeq).play; + // 90s avec mutations rhodes + 18.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.45, ~scaleDorian); + ~reload.value; + }; + if (0.18.coin) { ~melodyCutoff = rrand(1600, 2800); ~reload.value }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-3, -5, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[A03 4:30] climax -- 303 + rhodes + clap drive...".postln; + ~bpm = 124; + ~acidCutoff = 1200; ~acidDrive = 2.6; + ~melodyAmp = 0.18; ~kickAmp = 0.6; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.12; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 60.wait; + + "[A03 5:30] outro -- rhodes seul s'eteint...".postln; + [\kickSeq, \hatSeq, \clapSeq].do { |k| Pdef(k).stop }; + ~acidAmp = 0; + ~enableHarmony.(\off); + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~melodyCutoff = 400 + (x * 1800); + ~reload.value; + 1.wait; + }; + [\acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[A03 6:00] === fin ACID HOUSE ===".postln; +}).play; +"=== TRACK A03 : ACID HOUSE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A04_detroit_acid.scd b/sound_algo/tracks/A_acid_journey/A04_detroit_acid.scd new file mode 100644 index 0000000..9eae1d1 --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A04_detroit_acid.scd @@ -0,0 +1,91 @@ +// ===================================================================== +// A04_detroit_acid.scd -- Album A "Acid Journey", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A04 : "DETROIT ACID" 5 minutes --------------------------- +// 0:00 cold pads -> 1:00 stab enter -> 2:30 acid line -> 4:00 climax -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A04 0:00] cold pads -- intro Detroit machine soul...".postln; + ~bpm = 128; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.22; + ~kickDrive = 1.5; ~kickClick = 0.35; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatAmp = 0; ~clapAmp = 0; + ~acidAmp = 0; + ~melodyInst = \warm_pad; + ~melodyAttack = 0.8; ~melodyRelease = 2.5; ~melodyCutoff = 1200; + ~melodyAmp = 0.13; + ~melodyNotes = [60,0,0,0,0,0,0,0, 63,0,0,0,0,0,0,0, + 67,0,0,0,0,0,0,0, 65,0,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + Pdef(\harmonySeq).play; + 60.wait; + + "[A04 1:00] stab enter -- detroit chord stabs...".postln; + ~melodyInst = \stab; + ~melodyAttack = 0.001; ~melodyRelease = 0.08; + ~melodyDrive = 2.5; ~melodyCutoff = 1600; ~melodyAmp = 0.15; + ~melodyNotes = [63,0,0,0, 70,0,67,0, 65,0,0,0, 70,0,72,0, + 63,0,0,0, 67,0,70,0, 65,0,60,0, 67,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.12; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.5; + ~enableHarmony.(\off); + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + // 90s stabs evoluant + 18.do { |k| + if (0.30.coin) { + ~melodyNotes = ~genMelody.(0.4, [~scaleMinor, ~scaleDorian].choose); + ~reload.value; + }; + if (0.18.coin) { ~melodyCutoff = rrand(1100, 2200); ~reload.value }; + if (0.12.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[A04 2:30] acid line -- 303 + stabs ride together...".postln; + ~acidAmp = 0.26; ~acidCutoff = 750; ~acidRq = 0.16; ~acidDrive = 2.4; + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidSlides = [0,0,1,0, 0,0,0,1, 0,0,0,1, 0,0,0,0]; + ~reload.value; + Pdef(\acidSeq).play; + // 90s acid + stabs + 18.do { |k| + if (0.25.coin) { ~acidCutoff = rrand(550, 1200); ~reload.value }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleHarmonicMin); + ~reload.value; + }; + if (0.15.coin) { ~kickClick = rrand(0.25, 0.5); ~reload.value }; + 5.wait; + }; + + "[A04 4:00] climax -- everything raised...".postln; + ~acidCutoff = 1400; ~melodyAmp = 0.18; ~kickDrive = 2.0; + ~hatSteps = [1,0,1,1, 1,0,1,1, 1,0,1,1, 1,0,1,1]; ~hatAmp = 0.16; + ~reload.value; + 30.wait; + + "[A04 4:30] outro -- short fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.16; ~clapAmp = x * 0.5; + ~melodyAmp = x * 0.18; ~acidAmp = x * 0.26; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \clapSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[A04 5:00] === fin DETROIT ACID ===".postln; +}).play; +"=== TRACK A04 : DETROIT ACID 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A05_dub_acid.scd b/sound_algo/tracks/A_acid_journey/A05_dub_acid.scd new file mode 100644 index 0000000..fe42cd6 --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A05_dub_acid.scd @@ -0,0 +1,90 @@ +// ===================================================================== +// A05_dub_acid.scd -- Album A "Acid Journey", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A05 : "DUB ACID" 7 minutes ------------------------------- +// 0:00 dub chord -> 1:30 acid sub -> 3:30 echo break -> 5:00 climax -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A05 0:00] dub chord -- chorus + delay long...".postln; + ~bpm = 118; + ~kickFreq = 45; ~kickPitchAmt = 1.8; ~kickDecay = 0.55; + ~kickDrive = 1.0; ~kickClick = 0.06; ~kickAmp = 0.50; + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~hatAmp = 0; + ~acidAmp = 0; + ~melodyInst = \rhodes; + ~melodyAttack = 0.05; ~melodyRelease = 1.8; ~melodyCutoff = 1400; + ~melodyAmp = 0.13; + ~melodyNotes = [60,0,0,0,0,0,0,0, 0,0,0,0, 65,0,0,0, + 0,0,0,0, 67,0,0,0, 0,0,0,0, 70,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + Pdef(\harmonySeq).play; + 90.wait; + + "[A05 1:30] acid sub -- 303 deep + hat 16th low...".postln; + ~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.07; + ~acidAmp = 0.24; ~acidCutoff = 500; ~acidRq = 0.20; ~acidDrive = 1.6; + ~acidNotes = [36,36,36,36, 36,39,36,36, 36,36,41,36, 36,36,36,43]; + ~acidSlides = [0,0,0,0, 0,0,0,0, 0,0,1,0, 0,0,0,1]; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + // 120s 303 + dub progress + 24.do { |k| + if (0.18.coin) { ~acidCutoff = rrand(400, 850); ~reload.value }; + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.35, ~scaleDorian); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.2); + ~reload.value; + }; + 5.wait; + }; + + "[A05 3:30] echo break -- kick out, echo space...".postln; + ~kickAmp = 0; ~hatAmp = 0; + ~acidCutoff = 900; ~melodyAmp = 0.15; + ~stutter !? { ~stutter.(6, 1.2) }; + ~reload.value; + // 90s rhodes seul + 303 dans le brouillard + 18.do { |k| + if (0.30.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.3, ~scaleDorian); + ~reload.value; + }; + if (0.20.coin) { ~acidCutoff = rrand(700, 1300); ~reload.value }; + 5.wait; + }; + + "[A05 5:00] climax -- kick revient + everything wide...".postln; + ~kickAmp = 0.55; ~hatAmp = 0.12; + ~hatSteps = [1,0,1,0, 1,0,1,0, 1,0,1,1, 1,0,1,0]; + ~acidCutoff = 1300; ~acidDrive = 2.3; + ~melodyAmp = 0.18; + ~reload.value; + 90.wait; + + "[A05 6:30] outro -- echo emporte tout...".postln; + [\kickSeq, \hatSeq].do { |k| Pdef(k).stop }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; ~acidAmp = x * 0.24; + ~acidCutoff = 200 + (x * 1100); + ~reload.value; + 1.wait; + }; + [\acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[A05 7:00] === fin DUB ACID ===".postln; +}).play; +"=== TRACK A05 : DUB ACID 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A06_ambient_acid.scd b/sound_algo/tracks/A_acid_journey/A06_ambient_acid.scd new file mode 100644 index 0000000..ea16984 --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A06_ambient_acid.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// A06_ambient_acid.scd -- Album A "Acid Journey", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A06 : "AMBIENT ACID" 8 minutes --------------------------- +// 0:00 drone bed -> 1:30 acid whisper -> 3:30 koto float -> 5:30 climax -> 7:00 dissolve +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A06 0:00] drone bed -- pad infini, no kick...".postln; + ~bpm = 100; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; + ~acidAmp = 0; + ~melodyInst = \drone; + ~melodyAttack = 1.5; ~melodyRelease = 4.0; ~melodyCutoff = 900; + ~melodyAmp = 0.13; + ~melodyNotes = [60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, 65,0,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + Pdef(\melodySeq).play; + ~enableHarmony.(\fifth); + Pdef(\harmonySeq).play; + 90.wait; + + "[A06 1:30] acid whisper -- 303 tres doux dans le lointain...".postln; + ~acidAmp = 0.10; ~acidCutoff = 400; ~acidRq = 0.40; ~acidDrive = 0.8; + ~acidNotes = [36,0,0,0, 0,0,39,0, 0,0,0,0, 0,0,0,41, + 0,0,36,0, 0,0,0,0, 39,0,0,0, 0,0,0,0]; + ~acidSlides = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,0]; + ~reload.value; + Pdef(\acidSeq).play; + // 120s evolution lente + 24.do { |k| + if (0.18.coin) { ~acidCutoff = rrand(350, 700); ~reload.value }; + if (0.15.coin) { + ~melodyNotes = ~genMelody.(0.20, ~scaleHirajoshi); + ~reload.value; + }; + 5.wait; + }; + + "[A06 3:30] koto float -- pizz cristallin...".postln; + ~melodyInst = \koto; + ~melodyAttack = 0.001; ~melodyRelease = 1.5; ~melodyCutoff = 3500; + ~melodyAmp = 0.16; + ~melodyNotes = [72,0,0,0, 75,0,0,72, 0,77,0,0, 72,0,75,0, + 79,0,0,0, 0,75,0,72, 0,0,77,0, 0,72,0,75]; + ~enableHarmony.(\arp); + ~reload.value; + // 120s koto evolue + 24.do { |k| + if (0.30.coin) { + ~melodyNotes = ~genMelody.(0.45, ~scaleJapanese); + ~reload.value; + }; + if (0.18.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleHirajoshi); + ~reload.value; + }; + 5.wait; + }; + + "[A06 5:30] climax -- kick brushed entre...".postln; + ~kickAmp = 0.30; ~kickFreq = 40; ~kickDecay = 0.7; ~kickDrive = 0.7; + ~kickSteps = [1,0,0,0, 0,0,0,0, 0,0,0,0, 1,0,0,0]; + ~hatAmp = 0.05; ~hatSteps = [0,0,1,0, 0,0,0,0, 0,0,1,0, 0,0,0,0]; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + 90.wait; + + "[A06 7:00] dissolve -- tout fond dans le drone...".postln; + [\kickSeq, \hatSeq, \acidSeq].do { |k| Pdef(k).stop }; + ~melodyInst = \drone; + ~melodyAttack = 2.0; ~melodyRelease = 5.0; + ~enableHarmony.(\fifth); + ~reload.value; + 60.do { |k| + var x = 1 - ((k + 1) / 60); + ~melodyAmp = x * 0.16; + ~melodyCutoff = 200 + (x * 700); + ~reload.value; + 1.wait; + }; + [\melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[A06 8:00] === fin AMBIENT ACID ===".postln; +}).play; +"=== TRACK A06 : AMBIENT ACID 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A07_acid_techno.scd b/sound_algo/tracks/A_acid_journey/A07_acid_techno.scd new file mode 100644 index 0000000..e4ad6f5 --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A07_acid_techno.scd @@ -0,0 +1,91 @@ +// ===================================================================== +// A07_acid_techno.scd -- Album A "Acid Journey", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A07 : "ACID TECHNO (Berlin)" 6 minutes ------------------- +// 0:00 hard kick -> 1:00 303 line -> 2:30 lead enter -> 4:00 peak -> 5:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A07 0:00] hard kick -- techno punisher...".postln; + ~bpm = 135; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.30; + ~kickDrive = 2.5; ~kickClick = 0.40; ~kickAmp = 0.62; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,1]; ~hatAmp = 0.18; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.55; + ~acidAmp = 0; ~melodyAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 60.wait; + + "[A07 1:00] 303 line -- berlin acid Phrygian...".postln; + ~acidAmp = 0.34; ~acidCutoff = 900; ~acidRq = 0.13; ~acidDrive = 3.0; + ~acidNotes = [36,36,49,36, 41,36,48,36, 37,36,43,36, 49,36,41,36]; + ~acidSlides = [0,1,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]; + ~reload.value; + Pdef(\acidSeq).play; + // 90s 303 sweep + 18.do { |k| + ~acidCutoff = 700 + (k * 30); + if (0.30.coin) { ~acidRq = rrand(0.10, 0.18); ~reload.value }; + if (0.25.coin) { + ~acidNotes = ~genMelody.(0.7, ~scaleAcidWide); + ~acidSlides = ~genAcidSlides.(0.35); + ~reload.value; + }; + ~reload.value; + 5.wait; + }; + + "[A07 2:30] lead enter -- square stab phrygian...".postln; + ~melodyInst = \square_lead; + ~melodyAttack = 0.005; ~melodyRelease = 0.18; ~melodyCutoff = 2400; + ~melodyAmp = 0.16; ~melodyDrive = 2.0; + ~melodyNotes = [60,0,61,0, 0,67,0,63, 0,68,0,0, 65,0,67,0, + 63,0,0,61, 67,0,0,68, 0,63,0,67, 0,65,0,0]; + ~reload.value; + Pdef(\melodySeq).play; + // 90s lead phrygian variations + 18.do { |k| + if (0.30.coin) { + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~reload.value; + }; + if (0.20.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-7, -5, 5, 7].choose); + ~reload.value; + }; + if (0.15.coin) { ~melodyCutoff = rrand(1800, 3200); ~reload.value }; + 5.wait; + }; + + "[A07 4:00] peak -- everything drives...".postln; + ~bpm = 138; + ~kickDrive = 3.2; ~acidCutoff = 1500; ~acidDrive = 3.5; + ~melodyAmp = 0.20; ~melodyDrive = 2.8; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.16; + ~vcfOn !? { ~vcfOn.(\moog, 1500, 0.5) }; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 60.wait; + + "[A07 5:00] outro -- filter close...".postln; + ~vcfOff !? { ~vcfOff.() }; + 60.do { |k| + var x = 1 - ((k + 1) / 60); + ~kickAmp = x * 0.62; ~hatAmp = x * 0.16; ~clapAmp = x * 0.55; + ~melodyAmp = x * 0.20; ~acidAmp = x * 0.34; + ~acidCutoff = 200 + (x * 1300); + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \clapSeq, \acidSeq, \melodySeq].do { |k| Pdef(k).stop }; + "[A07 6:00] === fin ACID TECHNO ===".postln; +}).play; +"=== TRACK A07 : ACID TECHNO 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A08_dark_acid.scd b/sound_algo/tracks/A_acid_journey/A08_dark_acid.scd new file mode 100644 index 0000000..dc8150c --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A08_dark_acid.scd @@ -0,0 +1,95 @@ +// ===================================================================== +// A08_dark_acid.scd -- Album A "Acid Journey", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A08 : "DARK ACID (Psy)" 6 minutes ------------------------ +// 0:00 dark intro -> 1:00 303 evil -> 2:30 hard lead -> 4:00 break -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A08 0:00] dark intro -- low pad + sparse kick...".postln; + ~bpm = 130; + ~kickFreq = 48; ~kickPitchAmt = 2.2; ~kickDecay = 0.45; + ~kickDrive = 2.0; ~kickClick = 0.20; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0, 0,0,0,0, 1,0,0,0, 0,0,0,0]; + ~hatAmp = 0; + ~acidAmp = 0; + ~melodyInst = \drone; + ~melodyAttack = 0.5; ~melodyRelease = 3.0; ~melodyCutoff = 700; + ~melodyAmp = 0.12; + ~melodyNotes = [48,0,0,0,0,0,0,0, 49,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, 53,0,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~vcfOn !? { ~vcfOn.(\ladder, 600, 0.6) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + Pdef(\harmonySeq).play; + 60.wait; + + "[A08 1:00] 303 evil -- phrygian acid sub...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.10; + ~acidAmp = 0.30; ~acidCutoff = 600; ~acidRq = 0.14; ~acidDrive = 2.8; + ~acidNotes = [36,36,37,36, 41,36,48,37, 36,49,36,41, 37,36,43,36]; + ~acidSlides = [0,0,1,0, 0,0,0,1, 0,0,0,0, 1,0,0,0]; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + // 90s acid sombre + 18.do { |k| + if (0.25.coin) { ~acidCutoff = rrand(450, 1000); ~reload.value }; + if (0.20.coin) { + ~acidNotes = ~genMelody.(0.7, ~scaleAcid); + ~reload.value; + }; + 5.wait; + }; + + "[A08 2:30] hard lead -- square + cutoff modulation...".postln; + ~melodyInst = \hard_lead; + ~melodyAttack = 0.003; ~melodyRelease = 0.20; ~melodyCutoff = 1800; + ~melodyAmp = 0.16; ~melodyDrive = 3.0; + ~melodyNotes = [60,0,0,61, 0,63,0,0, 65,0,68,0, 67,0,63,0, + 61,0,60,0, 0,67,0,63, 0,68,0,65, 67,0,0,0]; + ~enableHarmony.(\off); + ~reload.value; + Pdef(\melodySeq).play; + Pdef(\harmonySeq).stop; + // 90s lead evolution + 18.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~reload.value; + }; + if (0.15.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.3, ~scalePhrygian); + ~reload.value; + }; + 5.wait; + }; + + "[A08 4:00] break -- kick out, 303 alone screams...".postln; + ~kickAmp = 0; ~hatAmp = 0; ~melodyAmp = 0; + ~acidCutoff = 1800; ~acidDrive = 3.8; + ~reload.value; + 30.wait; + + "[A08 4:30] outro -- back in hard then fade...".postln; + ~kickAmp = 0.55; ~hatAmp = 0.10; ~melodyAmp = 0.16; + ~reload.value; + ~vcfOff !? { ~vcfOff.() }; + 90.do { |k| + var x = 1 - ((k + 1) / 90); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.10; + ~melodyAmp = x * 0.16; ~acidAmp = x * 0.30; + ~acidCutoff = 200 + (x * 1500); + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \acidSeq, \melodySeq].do { |k| Pdef(k).stop }; + "[A08 6:00] === fin DARK ACID ===".postln; +}).play; +"=== TRACK A08 : DARK ACID 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A09_tribal_acid.scd b/sound_algo/tracks/A_acid_journey/A09_tribal_acid.scd new file mode 100644 index 0000000..7cf7614 --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A09_tribal_acid.scd @@ -0,0 +1,88 @@ +// ===================================================================== +// A09_tribal_acid.scd -- Album A "Acid Journey", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A09 : "TRIBAL ACID (World)" 7 minutes -------------------- +// 0:00 percussion build -> 1:30 handpan -> 3:00 acid sub -> 4:30 climax -> 6:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A09 0:00] percussion build -- tabla + taiko intro...".postln; + ~bpm = 128; + ~kickFreq = 50; ~kickPitchAmt = 2.0; ~kickDecay = 0.40; + ~kickDrive = 1.4; ~kickClick = 0.15; ~kickAmp = 0.45; + ~kickSteps = [1,0,0,0, 0,0,1,0, 1,0,0,0, 0,1,0,0]; + ~hatAmp = 0; + ~percSteps = [0,1,0,1, 1,0,1,0, 0,1,1,0, 1,0,1,1]; ~percAmp = 0.30; + ~acidAmp = 0; ~melodyAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 90.wait; + + "[A09 1:30] handpan -- vietnam pent...".postln; + ~melodyInst = \handpan; + ~melodyAttack = 0.005; ~melodyRelease = 1.4; ~melodyCutoff = 2200; + ~melodyAmp = 0.16; + ~melodyNotes = [60,0,67,0, 65,0,70,63, 67,0,0,72, 70,0,75,0, + 63,0,67,0, 70,0,65,72, 0,67,0,75, 70,0,0,0]; + ~reload.value; + Pdef(\melodySeq).play; + // 90s handpan vietnam + 18.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.50, [~scaleVietnam, ~scaleVietnamMaj].choose); + ~reload.value; + }; + if (0.15.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.20.coin) { ~melodyCutoff = rrand(1700, 2700); ~reload.value }; + 5.wait; + }; + + "[A09 3:00] acid sub -- 303 wide low + handpan flies...".postln; + ~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.08; + ~acidAmp = 0.22; ~acidCutoff = 700; ~acidRq = 0.18; ~acidDrive = 2.0; + ~acidNotes = [36,36,48,36, 36,39,36,43, 36,48,36,41, 36,39,36,36]; + ~acidSlides = [0,0,1,0, 0,0,0,1, 0,1,0,0, 0,0,0,0]; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + // 90s + 18.do { |k| + if (0.20.coin) { ~acidCutoff = rrand(550, 1100); ~reload.value }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleVietnam); + ~reload.value; + }; + 5.wait; + }; + + "[A09 4:30] climax -- gong + everything ride...".postln; + ~melodyInst = \gong; + ~melodyAttack = 0.005; ~melodyRelease = 3.0; ~melodyCutoff = 1800; + ~melodyAmp = 0.18; + ~percAmp = 0.40; ~kickAmp = 0.55; + ~hatSteps = [1,0,1,1, 1,0,1,1, 1,0,1,1, 1,0,1,1]; ~hatAmp = 0.14; + ~reload.value; + 90.wait; + + "[A09 6:00] outro -- percussion seules s'eteignent...".postln; + [\hatSeq, \acidSeq, \melodySeq].do { |k| Pdef(k).stop }; + ~melodyAmp = 0; ~acidAmp = 0; + ~reload.value; + 60.do { |k| + var x = 1 - ((k + 1) / 60); + ~kickAmp = x * 0.55; ~percAmp = x * 0.40; + ~reload.value; + 1.wait; + }; + [\kickSeq, \percSeq].do { |k| Pdef(k).stop }; + "[A09 7:00] === fin TRIBAL ACID ===".postln; +}).play; +"=== TRACK A09 : TRIBAL ACID 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A10_cosmic_acid.scd b/sound_algo/tracks/A_acid_journey/A10_cosmic_acid.scd new file mode 100644 index 0000000..46cb388 --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A10_cosmic_acid.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// A10_cosmic_acid.scd -- Album A "Acid Journey", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A10 : "COSMIC ACID (Psy-Trance)" 8 minutes --------------- +// 0:00 launch -> 1:30 303 wide -> 3:30 supersaw -> 5:30 storm -> 7:00 atmos +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A10 0:00] launch -- offbeat bass + riser...".postln; + ~bpm = 132; + ~kickFreq = 55; ~kickPitchAmt = 2.5; ~kickDecay = 0.32; + ~kickDrive = 1.8; ~kickClick = 0.20; ~kickAmp = 0.58; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.50; + ~acidAmp = 0; ~melodyAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + Pdef(\harmonySeq).play; + 90.wait; + + "[A10 1:30] 303 wide -- octave -1 a +1 acid...".postln; + ~acidAmp = 0.32; ~acidCutoff = 800; ~acidRq = 0.15; ~acidDrive = 2.5; + ~acidNotes = [24,36,36,48, 39,36,51,36, 24,43,36,48, 36,41,36,39]; + ~acidSlides = [0,0,1,0, 0,1,0,0, 0,0,0,1, 0,0,0,1]; + ~reload.value; + Pdef(\acidSeq).play; + // 120s acid evolue + 24.do { |k| + ~acidCutoff = 600 + ((k % 12) * 60); + if (0.25.coin) { ~acidRq = rrand(0.10, 0.20); }; + if (0.20.coin) { + ~acidNotes = ~genMelody.(0.75, ~scaleAcidWide); + ~acidSlides = ~genAcidSlides.(0.40); + }; + ~reload.value; + 5.wait; + }; + + "[A10 3:30] supersaw -- big lead...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.008; ~melodyRelease = 0.40; ~melodyCutoff = 2800; + ~melodyAmp = 0.18; + ~melodyNotes = [60,0,67,0, 70,67,72,0, 75,0,72,70, 67,72,75,0, + 72,0,79,75, 70,67,72,0, 75,72,70,67, 72,0,0,0]; + ~enableHarmony.(\third); + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + // 120s supersaw evolution + 24.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~reload.value; + }; + if (0.18.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { ~melodyCutoff = rrand(2200, 3400); ~reload.value }; + 5.wait; + }; + + "[A10 5:30] storm -- vcf moog + hat 16th...".postln; + ~vcfOn !? { ~vcfOn.(\moog, 1500, 0.4) }; + ~hatSteps = [1,0,1,1, 1,0,1,1, 1,0,1,1, 1,0,1,1]; ~hatAmp = 0.15; + ~reload.value; + 90.wait; + + "[A10 7:00] atmos -- bass cuts, supersaw flies...".postln; + ~vcfOff !? { ~vcfOff.() }; + [\kickSeq, \hatSeq, \clapSeq, \acidSeq].do { |k| Pdef(k).stop }; + ~melodyAttack = 0.05; ~melodyRelease = 1.5; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 60.do { |k| + var x = 1 - ((k + 1) / 60); + ~melodyAmp = x * 0.18; + ~melodyCutoff = 600 + (x * 2200); + ~reload.value; + 1.wait; + }; + [\melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[A10 8:00] === fin COSMIC ACID ===".postln; +}).play; +"=== TRACK A10 : COSMIC ACID 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A11_trance_acid.scd b/sound_algo/tracks/A_acid_journey/A11_trance_acid.scd new file mode 100644 index 0000000..33d933a --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A11_trance_acid.scd @@ -0,0 +1,100 @@ +// ===================================================================== +// A11_trance_acid.scd -- Album A "Acid Journey", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A11 : "TRANCE ACID (Goa)" 7 minutes ---------------------- +// 0:00 trance pulse -> 1:30 303 climb -> 3:00 supersaw lead -> 5:00 break -> 5:30 drop +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A11 0:00] trance pulse -- offbeat bass...".postln; + ~bpm = 138; + ~kickFreq = 56; ~kickPitchAmt = 2.8; ~kickDecay = 0.30; + ~kickDrive = 1.8; ~kickClick = 0.22; ~kickAmp = 0.60; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.14; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.50; + ~acidAmp = 0; ~melodyAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + Pdef(\harmonySeq).play; + 90.wait; + + "[A11 1:30] 303 climb -- pent climb...".postln; + ~acidAmp = 0.28; ~acidCutoff = 600; ~acidRq = 0.16; ~acidDrive = 2.2; + ~acidNotes = [36,36,48,36, 41,36,48,43, 36,48,36,41, 48,36,43,36]; + ~acidSlides = [0,0,1,0, 0,0,0,1, 0,0,0,0, 0,0,0,1]; + ~reload.value; + Pdef(\acidSeq).play; + // 90s climb cutoff + 18.do { |k| + ~acidCutoff = 550 + (k * 35); + if (0.20.coin) { + ~acidNotes = ~genMelody.(0.7, ~scaleMinorPent); + ~acidSlides = ~genAcidSlides.(0.30); + }; + ~reload.value; + 5.wait; + }; + + "[A11 3:00] supersaw lead -- uplifting trance lead...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.012; ~melodyRelease = 0.55; ~melodyCutoff = 2800; + ~melodyAmp = 0.18; + ~melodyNotes = [72,0,75,0, 79,0,77,75, 70,72,75,77, 79,0,82,0, + 77,75,72,0, 70,72,75,0, 77,75,72,70, 72,0,0,0]; + ~enableHarmony.(\third); + ~reload.value; + Pdef(\melodySeq).play; + // 120s lead trance + 24.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.60, ~scaleMinorPent); + ~reload.value; + }; + if (0.18.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinorPent); + ~reload.value; + }; + if (0.15.coin) { ~melodyCutoff = rrand(2200, 3500); ~reload.value }; + 5.wait; + }; + + "[A11 5:00] break -- kick out, lead alone reverb wash...".postln; + [\kickSeq, \hatSeq, \clapSeq, \acidSeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~melodyAttack = 0.08; ~melodyRelease = 1.5; + ~reload.value; + 30.wait; + + "[A11 5:30] drop -- everything back, peak...".postln; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~melodyAttack = 0.012; ~melodyRelease = 0.55; + ~bpm = 140; + ~acidCutoff = 1400; ~acidDrive = 3.0; + ~kickDrive = 2.2; ~melodyAmp = 0.20; + ~hatSteps = [1,0,1,1, 1,0,1,1, 1,0,1,1, 1,0,1,1]; ~hatAmp = 0.16; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + 60.wait; + + "[A11 6:30] outro -- close down...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.60; ~hatAmp = x * 0.16; ~clapAmp = x * 0.50; + ~melodyAmp = x * 0.20; ~acidAmp = x * 0.28; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \clapSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[A11 7:00] === fin TRANCE ACID ===".postln; +}).play; +"=== TRACK A11 : TRANCE ACID 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A12_hard_acid.scd b/sound_algo/tracks/A_acid_journey/A12_hard_acid.scd new file mode 100644 index 0000000..50ee901 --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A12_hard_acid.scd @@ -0,0 +1,88 @@ +// ===================================================================== +// A12_hard_acid.scd -- Album A "Acid Journey", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A12 : "HARD ACID (Hardstyle)" 5 minutes ------------------ +// 0:00 hard kick -> 1:00 303 brutal -> 2:30 hard lead -> 3:30 peak -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A12 0:00] hard kick -- distorted T4 punisher...".postln; + ~bpm = 142; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.30; ~kickAmp = 0.65; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,1]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.55; + ~acidAmp = 0; ~melodyAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 60.wait; + + "[A12 1:00] 303 brutal -- harmonic minor evil...".postln; + ~acidAmp = 0.34; ~acidCutoff = 1100; ~acidRq = 0.10; ~acidDrive = 3.5; + ~acidNotes = [36,36,48,36, 39,36,47,36, 36,48,36,41, 39,36,43,36]; + ~acidSlides = [0,0,1,0, 0,1,0,0, 0,0,0,1, 0,0,0,1]; + ~reload.value; + Pdef(\acidSeq).play; + // 90s acid sweep + 18.do { |k| + ~acidCutoff = 900 + (k * 25); + if (0.30.coin) { ~acidRq = rrand(0.08, 0.14); }; + if (0.20.coin) { + ~acidNotes = ~genMelody.(0.8, ~scaleHarmonicMin); + ~acidSlides = ~genAcidSlides.(0.40); + }; + ~reload.value; + 5.wait; + }; + + "[A12 2:30] hard lead -- screaming saw lead...".postln; + ~melodyInst = \hard_lead; + ~melodyAttack = 0.002; ~melodyRelease = 0.15; ~melodyCutoff = 2400; + ~melodyAmp = 0.18; ~melodyDrive = 3.5; + ~melodyNotes = [60,0,68,0, 67,0,71,68, 65,0,68,0, 67,71,72,0, + 71,0,68,67, 65,68,0,71, 0,72,71,68, 67,0,0,0]; + ~reload.value; + Pdef(\melodySeq).play; + ~vcfOn !? { ~vcfOn.(\moog, 1800, 0.55) }; + // 60s lead variations + 12.do { |k| + if (0.30.coin) { + ~melodyNotes = ~genMelody.(0.65, ~scaleHarmonicMin); + ~reload.value; + }; + if (0.18.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[A12 3:30] peak -- everything maxed...".postln; + ~bpm = 145; + ~kickDrive = 4.0; ~acidCutoff = 1700; ~acidDrive = 4.0; + ~melodyAmp = 0.22; ~melodyDrive = 4.0; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.18; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 60.wait; + + "[A12 4:30] outro -- hard cut...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.65; ~hatAmp = x * 0.18; ~clapAmp = x * 0.55; + ~melodyAmp = x * 0.22; ~acidAmp = x * 0.34; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \clapSeq, \acidSeq, \melodySeq].do { |k| Pdef(k).stop }; + "[A12 5:00] === fin HARD ACID ===".postln; +}).play; +"=== TRACK A12 : HARD ACID 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A13_acidcore.scd b/sound_algo/tracks/A_acid_journey/A13_acidcore.scd new file mode 100644 index 0000000..80ae0f2 --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A13_acidcore.scd @@ -0,0 +1,88 @@ +// ===================================================================== +// A13_acidcore.scd -- Album A "Acid Journey", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A13 : "ACIDCORE" 4 minutes ------------------------------- +// 0:00 gabber kick -> 0:45 303 distort -> 2:00 hard lead -> 3:00 peak -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A13 0:00] gabber kick -- distorted four-on-floor...".postln; + ~bpm = 145; + ~kickFreq = 70; ~kickPitchAmt = 6.0; ~kickDecay = 0.22; + ~kickDrive = 4.5; ~kickClick = 0.40; ~kickAmp = 0.68; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; + ~hatSteps = [0,0,1,1, 0,0,1,1, 0,0,1,1, 0,0,1,1]; ~hatAmp = 0.18; + ~acidAmp = 0; ~melodyAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 45.wait; + + "[A13 0:45] 303 distort -- phrygian acid...".postln; + ~acidAmp = 0.36; ~acidCutoff = 1200; ~acidRq = 0.10; ~acidDrive = 4.0; + ~acidNotes = [36,49,36,37, 41,36,48,36, 37,49,36,41, 36,43,36,37]; + ~acidSlides = [0,0,1,0, 0,1,0,0, 0,0,0,1, 0,0,0,1]; + ~reload.value; + Pdef(\acidSeq).play; + // 75s 303 evolve + 15.do { |k| + if (0.35.coin) { ~acidCutoff = rrand(800, 1700); ~reload.value }; + if (0.25.coin) { + ~acidNotes = ~genMelody.(0.85, ~scalePhrygian); + ~acidSlides = ~genAcidSlides.(0.45); + ~reload.value; + }; + 5.wait; + }; + + "[A13 2:00] hard lead -- screaming...".postln; + ~melodyInst = \hard_lead; + ~melodyAttack = 0.001; ~melodyRelease = 0.10; ~melodyCutoff = 2800; + ~melodyAmp = 0.20; ~melodyDrive = 4.0; + ~melodyNotes = [60,0,61,0, 63,0,68,0, 65,67,68,0, 70,0,68,67, + 63,0,61,0, 67,0,68,0, 0,68,67,63, 61,0,0,0]; + ~reload.value; + Pdef(\melodySeq).play; + ~vcfOn !? { ~vcfOn.(\ms20, 2200, 0.60) }; + // 60s lead phrygian + 12.do { |k| + if (0.30.coin) { + ~melodyNotes = ~genMelody.(0.70, ~scalePhrygian); + ~reload.value; + }; + if (0.20.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, 5].choose); + ~reload.value; + }; + 5.wait; + }; + + "[A13 3:00] peak -- BPM up + everything maxed...".postln; + ~bpm = 150; + ~kickDrive = 5.0; ~acidCutoff = 1900; ~acidDrive = 4.5; + ~melodyAmp = 0.24; ~melodyDrive = 4.5; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.20; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 30.wait; + + "[A13 3:30] outro -- hard fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.68; ~hatAmp = x * 0.20; + ~melodyAmp = x * 0.24; ~acidAmp = x * 0.36; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \acidSeq, \melodySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[A13 4:00] === fin ACIDCORE ===".postln; +}).play; +"=== TRACK A13 : ACIDCORE 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A14_industrial_acid.scd b/sound_algo/tracks/A_acid_journey/A14_industrial_acid.scd new file mode 100644 index 0000000..8fe5e09 --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A14_industrial_acid.scd @@ -0,0 +1,88 @@ +// ===================================================================== +// A14_industrial_acid.scd -- Album A "Acid Journey", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK A14 : "INDUSTRIAL ACID" 5 minutes ------------------------ +// 0:00 metal pulse -> 1:00 fm growl -> 2:30 303 grind -> 3:30 climax -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A14 0:00] metal pulse -- broken kick + ring mod hat...".postln; + ~bpm = 148; + ~kickFreq = 50; ~kickPitchAmt = 3.5; ~kickDecay = 0.30; + ~kickDrive = 3.2; ~kickClick = 0.35; ~kickAmp = 0.62; + ~kickSteps = [1,0,0,1, 0,1,0,0, 1,0,1,0, 0,1,0,1]; + ~hatSteps = [0,1,1,0, 1,0,1,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.16; + ~percSteps = [0,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,1,0]; ~percAmp = 0.28; + ~acidAmp = 0; ~melodyAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 60.wait; + + "[A14 1:00] fm growl -- hungarian metal lead...".postln; + ~melodyInst = \fm_lead; + ~melodyAttack = 0.005; ~melodyRelease = 0.20; ~melodyCutoff = 2200; + ~melodyAmp = 0.16; ~melodyDrive = 3.0; + ~melodyNotes = [60,0,63,0, 66,0,71,67, 0,68,0,63, 66,0,71,0, + 62,0,66,63, 0,67,71,68, 0,63,0,66, 71,0,0,0]; + ~reload.value; + Pdef(\melodySeq).play; + ~vcfOn !? { ~vcfOn.(\formant, 1400, 0.50) }; + // 90s fm metal evolution + 18.do { |k| + if (0.30.coin) { + ~melodyNotes = ~genMelody.(0.60, ~scaleHungarian); + ~reload.value; + }; + if (0.18.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.30, ~scaleHungarian); + ~reload.value; + }; + if (0.15.coin) { ~melodyCutoff = rrand(1700, 2700); ~reload.value }; + 5.wait; + }; + + "[A14 2:30] 303 grind -- distorted acid bass...".postln; + ~acidAmp = 0.32; ~acidCutoff = 1000; ~acidRq = 0.12; ~acidDrive = 3.5; + ~acidNotes = [36,36,49,36, 42,36,48,42, 36,49,36,42, 48,36,43,36]; + ~acidSlides = [0,0,1,0, 0,1,0,0, 0,0,0,0, 1,0,0,1]; + ~reload.value; + Pdef(\acidSeq).play; + // 60s 303 grind + 12.do { |k| + if (0.25.coin) { + ~acidNotes = ~genMelody.(0.80, ~scalePhrygian); + ~acidSlides = ~genAcidSlides.(0.40); + ~reload.value; + }; + 5.wait; + }; + + "[A14 3:30] climax -- everything roars...".postln; + ~kickDrive = 4.0; ~acidDrive = 4.0; + ~melodyAmp = 0.20; ~melodyDrive = 4.0; + ~percAmp = 0.40; + ~stutter !? { ~stutter.(12, 1.5) }; + ~reload.value; + 60.wait; + + "[A14 4:30] outro -- collapse...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.62; ~hatAmp = x * 0.16; ~percAmp = x * 0.40; + ~melodyAmp = x * 0.20; ~acidAmp = x * 0.32; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \percSeq, \acidSeq, \melodySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[A14 5:00] === fin INDUSTRIAL ACID ===".postln; +}).play; +"=== TRACK A14 : INDUSTRIAL ACID 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/A15_acid_finale.scd b/sound_algo/tracks/A_acid_journey/A15_acid_finale.scd new file mode 100644 index 0000000..1e5310e --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/A15_acid_finale.scd @@ -0,0 +1,112 @@ +// ===================================================================== +// A15_acid_finale.scd -- Album A "Acid Journey", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Cloture de l'album : voyage Hijaz oriental + 303 + ethereal outro. +// ===================================================================== + +// --- TRACK A15 : "ACID FINALE (Hijaz)" 6 minutes -------------------- +// 0:00 hijaz prelude -> 1:00 303 oriental -> 2:30 supersaw climb -> 4:00 peak -> 5:00 ethereal +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[A15 0:00] hijaz prelude -- guzheng intro arabe...".postln; + ~bpm = 150; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 2.0; ~kickClick = 0.25; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatAmp = 0; + ~acidAmp = 0; + ~melodyInst = \guzheng; + ~melodyAttack = 0.001; ~melodyRelease = 1.2; ~melodyCutoff = 3000; + ~melodyAmp = 0.16; + ~melodyNotes = [60,0,61,0, 64,0,65,0, 67,0,68,0, 70,0,72,0, + 68,0,67,0, 65,0,64,0, 61,0,60,0, 0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + Pdef(\harmonySeq).play; + 60.wait; + + "[A15 1:00] 303 oriental -- hijaz acid line...".postln; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,1]; ~hatAmp = 0.14; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.50; + ~acidAmp = 0.28; ~acidCutoff = 800; ~acidRq = 0.16; ~acidDrive = 2.4; + ~acidNotes = [36,37,40,41, 36,43,44,46, 41,40,37,36, 44,43,41,40]; + ~acidSlides = [0,0,1,0, 0,0,0,1, 0,1,0,0, 0,0,0,1]; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + // 90s 303 hijaz evolution + 18.do { |k| + ~acidCutoff = 700 + (k * 30); + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.55, ~scaleHijaz); + ~reload.value; + }; + if (0.20.coin) { + ~acidNotes = ~genMelody.(0.75, ~scaleHijaz); + ~acidSlides = ~genAcidSlides.(0.35); + ~reload.value; + }; + ~reload.value; + 5.wait; + }; + + "[A15 2:30] supersaw climb -- big anthem lead...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.012; ~melodyRelease = 0.55; ~melodyCutoff = 2800; + ~melodyAmp = 0.20; + ~melodyNotes = [72,0,73,0, 76,0,77,0, 79,0,80,77, 76,73,72,0, + 77,0,80,0, 82,80,77,76, 73,72,70,72, 73,76,77,0]; + ~enableHarmony.(\third); + ~reload.value; + Pdef(\melodySeq).play; + ~fxPreset !? { ~fxPreset.(\trance) }; + // 90s climb supersaw + 18.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.60, ~scaleHijaz); + ~reload.value; + }; + if (0.18.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.20); + ~reload.value; + }; + if (0.15.coin) { ~melodyCutoff = rrand(2400, 3400); ~reload.value }; + 5.wait; + }; + + "[A15 4:00] peak -- everything erupts...".postln; + ~kickDrive = 2.8; ~acidCutoff = 1500; ~acidDrive = 3.0; + ~melodyAmp = 0.22; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.16; + ~vcfOn !? { ~vcfOn.(\moog, 1700, 0.45) }; + ~reload.value; + 60.wait; + + "[A15 5:00] ethereal -- outro koto + drone vanish...".postln; + ~vcfOff !? { ~vcfOff.() }; + [\kickSeq, \hatSeq, \clapSeq, \acidSeq].do { |k| Pdef(k).stop }; + ~melodyInst = \koto; + ~melodyAttack = 0.001; ~melodyRelease = 2.5; ~melodyCutoff = 3200; + ~enableHarmony.(\arp); + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 60.do { |k| + var x = 1 - ((k + 1) / 60); + ~melodyAmp = x * 0.22; + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.40, ~scaleHijaz); + ~reload.value; + }; + ~reload.value; + 1.wait; + }; + [\melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[A15 6:00] === fin ACID FINALE -- album A complete ===".postln; +}).play; +"=== TRACK A15 : ACID FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/A_acid_journey/_album.scd b/sound_algo/tracks/A_acid_journey/_album.scd new file mode 100644 index 0000000..7c9045e --- /dev/null +++ b/sound_algo/tracks/A_acid_journey/_album.scd @@ -0,0 +1,111 @@ +// ===================================================================== +// _album.scd -- Album A "Acid Journey" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM A (1 fois pour declarer ~playAlbum / ~playTrack) +// 3. ~playTrack.(\A, 7) pour jouer la track 7 isolement +// ~playAlbum.(\A) pour enchainer 01 -> 15 sequentiellement +// ~stopAlbum.() pour interrompre l'album +// +// Chaque track est autonome : tu peux aussi ouvrir A07_acid_techno.scd +// et Cmd+Entree directement sur son bloc (...). +// ===================================================================== + +( // --- SETUP ALBUM A --- +~albums = ~albums ? (); +~albums[\A] = ( + title: "Acid Journey", + folder: "tracks/A_acid_journey/", + tracks: [ + \A01_acid_journey, + \A02_minimal_acid, + \A03_acid_house, + \A04_detroit_acid, + \A05_dub_acid, + \A06_ambient_acid, + \A07_acid_techno, + \A08_dark_acid, + \A09_tribal_acid, + \A10_cosmic_acid, + \A11_trance_acid, + \A12_hard_acid, + \A13_acidcore, + \A14_industrial_acid, + \A15_acid_finale, + ], + durations: [480, 240, 360, 300, 420, 480, 360, 360, 420, 480, 420, 300, 240, 300, 360], +); + +~playTrack = { |album = \A, n = 1| + var info, file, path; + info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + file = info[\tracks][n - 1]; + if (file.isNil) { + ("!! track " ++ album ++ n ++ " inexistante (1-" ++ info[\tracks].size ++ ")").postln; + } { + path = (~base ? "") ++ info[\folder] ++ file ++ ".scd"; + ("[ALBUM " ++ album ++ "] track " ++ n ++ " : " ++ file).postln; + path.load; + }; + }; +}; + +~stopAlbum = { + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[ALBUM] stop".postln; +}; + +~playAlbum = { |album = \A, gap = 8| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ~stopAlbum.(); + ~albumRoutine = Routine({ + ("=== ALBUM " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + ("[ALBUM " ++ album ++ "] -> track " ++ (i + 1) ++ "/" + ++ info[\tracks].size ++ " : " ++ slug + ++ " (" ++ dur ++ "s)").postln; + ~playTrack.(album, i + 1); + (dur + gap).wait; + }; + ("=== ALBUM " ++ album ++ " complete ===").postln; + }).play; + }; +}; + +"[album A] setup OK -- ~playTrack.(\\A, n) | ~playAlbum.(\\A) | ~stopAlbum.()".postln; +) + + +// ===================================================================== +// RACCOURCIS LIVE -- Cmd+Entree sur la ligne souhaitee +// ===================================================================== + +( ~playTrack.(\A, 1); ) // A01 acid_journey (8 min) +( ~playTrack.(\A, 2); ) // A02 minimal_acid (4 min) +( ~playTrack.(\A, 3); ) // A03 acid_house (6 min) +( ~playTrack.(\A, 4); ) // A04 detroit_acid (5 min) +( ~playTrack.(\A, 5); ) // A05 dub_acid (7 min) +( ~playTrack.(\A, 6); ) // A06 ambient_acid (8 min) +( ~playTrack.(\A, 7); ) // A07 acid_techno (6 min) +( ~playTrack.(\A, 8); ) // A08 dark_acid (6 min) +( ~playTrack.(\A, 9); ) // A09 tribal_acid (7 min) +( ~playTrack.(\A, 10); ) // A10 cosmic_acid (8 min) +( ~playTrack.(\A, 11); ) // A11 trance_acid (7 min) +( ~playTrack.(\A, 12); ) // A12 hard_acid (5 min) +( ~playTrack.(\A, 13); ) // A13 acidcore (4 min) +( ~playTrack.(\A, 14); ) // A14 industrial_acid (5 min) +( ~playTrack.(\A, 15); ) // A15 acid_finale (6 min) + +( ~playAlbum.(\A); ) // album entier 01 -> 15 (~ 88 min) +( ~stopAlbum.(); ) // arret immediat diff --git a/sound_algo/tracks/B_deep_to_hard/B01_deep_intro.scd b/sound_algo/tracks/B_deep_to_hard/B01_deep_intro.scd new file mode 100644 index 0000000..4adb181 --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B01_deep_intro.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B01_deep_intro.scd -- Album B "Deep to Hard", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B01 : "DEEP INTRO" 4 min --------------------- +// 0:00 intro -> 0:52 build -> 1:44 climax -> 2:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B01 0:00] intro pad...".postln; + ~bpm = 118; + ~kickFreq = 42; ~kickPitchAmt = 2.0; ~kickDecay = 0.55; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \pad; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 52.wait; + + "[B01 0:52] build...".postln; + ~bpm = 121; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B01 1:44] climax...".postln; + ~bpm = 123; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B01 2:36] outro section...".postln; + ~bpm = 118; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 4.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[B01 3:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B01 3:30] === fin Deep Intro ===".postln; +}).play; +"=== TRACK B01 : DEEP INTRO 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B02_deep_house.scd b/sound_algo/tracks/B_deep_to_hard/B02_deep_house.scd new file mode 100644 index 0000000..c85da1b --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B02_deep_house.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B02_deep_house.scd -- Album B "Deep to Hard", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B02 : "DEEP HOUSE" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B02 0:00] intro rhodes...".postln; + ~bpm = 120; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.45; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \rhodes; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 67.wait; + + "[B02 1:07] build...".postln; + ~bpm = 123; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleDorian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B02 2:14] climax...".postln; + ~bpm = 125; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B02 3:21] outro section...".postln; + ~bpm = 120; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleDorian); ~reload.value }; + 5.wait; + }; + + "[B02 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B02 4:30] === fin Deep House ===".postln; +}).play; +"=== TRACK B02 : DEEP HOUSE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B03_minimal_techno.scd b/sound_algo/tracks/B_deep_to_hard/B03_minimal_techno.scd new file mode 100644 index 0000000..fe9704a --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B03_minimal_techno.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B03_minimal_techno.scd -- Album B "Deep to Hard", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B03 : "MINIMAL TECHNO" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B03 0:00] intro stab...".postln; + ~bpm = 124; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \stab; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 82.wait; + + "[B03 1:22] build...".postln; + ~bpm = 127; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B03 2:44] climax...".postln; + ~bpm = 129; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B03 4:06] outro section...".postln; + ~bpm = 124; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[B03 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B03 5:30] === fin Minimal Techno ===".postln; +}).play; +"=== TRACK B03 : MINIMAL TECHNO 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B04_detroit_techno.scd b/sound_algo/tracks/B_deep_to_hard/B04_detroit_techno.scd new file mode 100644 index 0000000..0d4a1c8 --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B04_detroit_techno.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B04_detroit_techno.scd -- Album B "Deep to Hard", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B04 : "DETROIT TECHNO" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B04 0:00] intro stab...".postln; + ~bpm = 128; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \stab; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 97.wait; + + "[B04 1:37] build...".postln; + ~bpm = 131; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleDorian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B04 3:14] climax...".postln; + ~bpm = 133; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B04 4:51] outro section...".postln; + ~bpm = 128; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleDorian); ~reload.value }; + 5.wait; + }; + + "[B04 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B04 6:30] === fin Detroit Techno ===".postln; +}).play; +"=== TRACK B04 : DETROIT TECHNO 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B05_acid_techno.scd b/sound_algo/tracks/B_deep_to_hard/B05_acid_techno.scd new file mode 100644 index 0000000..f1bf17b --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B05_acid_techno.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B05_acid_techno.scd -- Album B "Deep to Hard", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B05 : "ACID TECHNO" 8 min --------------------- +// 0:00 intro -> 1:52 build -> 3:44 climax -> 5:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B05 0:00] intro lead...".postln; + ~bpm = 130; + ~kickFreq = 58; ~kickPitchAmt = 3.5; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \lead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 112.wait; + + "[B05 1:52] build...".postln; + ~bpm = 133; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleAcid); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B05 3:44] climax...".postln; + ~bpm = 135; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleAcid); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B05 5:36] outro section...".postln; + ~bpm = 130; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleAcid); ~reload.value }; + 5.wait; + }; + + "[B05 7:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B05 7:30] === fin Acid Techno ===".postln; +}).play; +"=== TRACK B05 : ACID TECHNO 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B06_industrial_techno.scd b/sound_algo/tracks/B_deep_to_hard/B06_industrial_techno.scd new file mode 100644 index 0000000..f335c2e --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B06_industrial_techno.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B06_industrial_techno.scd -- Album B "Deep to Hard", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B06 : "INDUSTRIAL TECHNO" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B06 0:00] intro hardLead...".postln; + ~bpm = 132; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.26; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \hardLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [72,0,75,0,79,0,75,72,70,0,67,0,72,0,75,0,79,0,75,72,70,0,67,0,72,0,75,0,79,0,75,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 82.wait; + + "[B06 1:22] build...".postln; + ~bpm = 135; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scalePhrygian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B06 2:44] climax...".postln; + ~bpm = 137; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B06 4:06] outro section...".postln; + ~bpm = 132; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scalePhrygian); ~reload.value }; + 5.wait; + }; + + "[B06 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B06 5:30] === fin Industrial Techno ===".postln; +}).play; +"=== TRACK B06 : INDUSTRIAL TECHNO 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B07_schranz.scd b/sound_algo/tracks/B_deep_to_hard/B07_schranz.scd new file mode 100644 index 0000000..5fe2b92 --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B07_schranz.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B07_schranz.scd -- Album B "Deep to Hard", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B07 : "SCHRANZ" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B07 0:00] intro saw3...".postln; + ~bpm = 136; + ~kickFreq = 60; ~kickPitchAmt = 4.5; ~kickDecay = 0.25; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.62; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \saw3; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 67.wait; + + "[B07 1:07] build...".postln; + ~bpm = 139; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHarmonicMin); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B07 2:14] climax...".postln; + ~bpm = 141; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B07 3:21] outro section...".postln; + ~bpm = 136; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHarmonicMin); ~reload.value }; + 5.wait; + }; + + "[B07 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.62; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B07 4:30] === fin Schranz ===".postln; +}).play; +"=== TRACK B07 : SCHRANZ 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B08_hardgroove.scd b/sound_algo/tracks/B_deep_to_hard/B08_hardgroove.scd new file mode 100644 index 0000000..3fa21c9 --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B08_hardgroove.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B08_hardgroove.scd -- Album B "Deep to Hard", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B08 : "HARDGROOVE" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B08 0:00] intro supersaw...".postln; + ~bpm = 138; + ~kickFreq = 62; ~kickPitchAmt = 4.5; ~kickDecay = 0.25; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.62; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \supersaw; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [72,0,75,0,79,0,75,72,70,0,67,0,72,0,75,0,79,0,75,72,70,0,67,0,72,0,75,0,79,0,75,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 82.wait; + + "[B08 1:22] build...".postln; + ~bpm = 141; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B08 2:44] climax...".postln; + ~bpm = 143; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B08 4:06] outro section...".postln; + ~bpm = 138; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[B08 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.62; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B08 5:30] === fin Hardgroove ===".postln; +}).play; +"=== TRACK B08 : HARDGROOVE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B09_hardtechno.scd b/sound_algo/tracks/B_deep_to_hard/B09_hardtechno.scd new file mode 100644 index 0000000..f71a1a2 --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B09_hardtechno.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B09_hardtechno.scd -- Album B "Deep to Hard", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B09 : "HARDTECHNO" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B09 0:00] intro hardLead...".postln; + ~bpm = 140; + ~kickFreq = 62; ~kickPitchAmt = 5.0; ~kickDecay = 0.24; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.65; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \hardLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [72,0,75,0,79,0,75,72,70,0,67,0,72,0,75,0,79,0,75,72,70,0,67,0,72,0,75,0,79,0,75,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 97.wait; + + "[B09 1:37] build...".postln; + ~bpm = 143; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scalePhrygian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B09 3:14] climax...".postln; + ~bpm = 145; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B09 4:51] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scalePhrygian); ~reload.value }; + 5.wait; + }; + + "[B09 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.65; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B09 6:30] === fin Hardtechno ===".postln; +}).play; +"=== TRACK B09 : HARDTECHNO 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B10_gabber_intro.scd b/sound_algo/tracks/B_deep_to_hard/B10_gabber_intro.scd new file mode 100644 index 0000000..3fa9847 --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B10_gabber_intro.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B10_gabber_intro.scd -- Album B "Deep to Hard", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B10 : "GABBER INTRO" 8 min --------------------- +// 0:00 intro -> 1:52 build -> 3:44 climax -> 5:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B10 0:00] intro saw3...".postln; + ~bpm = 142; + ~kickFreq = 65; ~kickPitchAmt = 5.0; ~kickDecay = 0.22; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.65; + ~kickSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \saw3; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 112.wait; + + "[B10 1:52] build...".postln; + ~bpm = 145; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B10 3:44] climax...".postln; + ~bpm = 147; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B10 5:36] outro section...".postln; + ~bpm = 142; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[B10 7:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.65; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B10 7:30] === fin Gabber Intro ===".postln; +}).play; +"=== TRACK B10 : GABBER INTRO 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B11_gabber.scd b/sound_algo/tracks/B_deep_to_hard/B11_gabber.scd new file mode 100644 index 0000000..d9c045a --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B11_gabber.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B11_gabber.scd -- Album B "Deep to Hard", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B11 : "GABBER" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B11 0:00] intro hardLead...".postln; + ~bpm = 144; + ~kickFreq = 66; ~kickPitchAmt = 5.5; ~kickDecay = 0.2; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.7; + ~kickSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \hardLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [72,0,75,0,79,0,75,72,70,0,67,0,72,0,75,0,79,0,75,72,70,0,67,0,72,0,75,0,79,0,75,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 97.wait; + + "[B11 1:37] build...".postln; + ~bpm = 147; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHarmonicMin); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B11 3:14] climax...".postln; + ~bpm = 149; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B11 4:51] outro section...".postln; + ~bpm = 144; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHarmonicMin); ~reload.value }; + 5.wait; + }; + + "[B11 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.7; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B11 6:30] === fin Gabber ===".postln; +}).play; +"=== TRACK B11 : GABBER 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B12_frenchcore.scd b/sound_algo/tracks/B_deep_to_hard/B12_frenchcore.scd new file mode 100644 index 0000000..d2fbaa8 --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B12_frenchcore.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B12_frenchcore.scd -- Album B "Deep to Hard", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B12 : "FRENCHCORE" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B12 0:00] intro hooverbass...".postln; + ~bpm = 145; + ~kickFreq = 68; ~kickPitchAmt = 5.5; ~kickDecay = 0.2; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.7; + ~kickSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \hooverbass; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 67.wait; + + "[B12 1:07] build...".postln; + ~bpm = 148; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scalePhrygian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B12 2:14] climax...".postln; + ~bpm = 150; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B12 3:21] outro section...".postln; + ~bpm = 145; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scalePhrygian); ~reload.value }; + 5.wait; + }; + + "[B12 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.7; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B12 4:30] === fin Frenchcore ===".postln; +}).play; +"=== TRACK B12 : FRENCHCORE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B13_hardcore.scd b/sound_algo/tracks/B_deep_to_hard/B13_hardcore.scd new file mode 100644 index 0000000..076dfc3 --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B13_hardcore.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B13_hardcore.scd -- Album B "Deep to Hard", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B13 : "HARDCORE" 4 min --------------------- +// 0:00 intro -> 0:52 build -> 1:44 climax -> 2:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B13 0:00] intro hooverbass...".postln; + ~bpm = 145; + ~kickFreq = 70; ~kickPitchAmt = 5.8; ~kickDecay = 0.18; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.7; + ~kickSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \hooverbass; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 52.wait; + + "[B13 0:52] build...".postln; + ~bpm = 148; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHarmonicMin); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B13 1:44] climax...".postln; + ~bpm = 150; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B13 2:36] outro section...".postln; + ~bpm = 145; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 4.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHarmonicMin); ~reload.value }; + 5.wait; + }; + + "[B13 3:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.7; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B13 3:30] === fin Hardcore ===".postln; +}).play; +"=== TRACK B13 : HARDCORE 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B14_terrorcore.scd b/sound_algo/tracks/B_deep_to_hard/B14_terrorcore.scd new file mode 100644 index 0000000..1084e6a --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B14_terrorcore.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B14_terrorcore.scd -- Album B "Deep to Hard", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B14 : "TERRORCORE" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B14 0:00] intro fmLead...".postln; + ~bpm = 145; + ~kickFreq = 72; ~kickPitchAmt = 6.0; ~kickDecay = 0.18; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.7; + ~kickSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \fmLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [72,0,75,0,79,0,75,72,70,0,67,0,72,0,75,0,79,0,75,72,70,0,67,0,72,0,75,0,79,0,75,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 67.wait; + + "[B14 1:07] build...".postln; + ~bpm = 148; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scalePhrygian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B14 2:14] climax...".postln; + ~bpm = 150; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B14 3:21] outro section...".postln; + ~bpm = 145; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scalePhrygian); ~reload.value }; + 5.wait; + }; + + "[B14 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.7; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B14 4:30] === fin Terrorcore ===".postln; +}).play; +"=== TRACK B14 : TERRORCORE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/B15_finale_collapse.scd b/sound_algo/tracks/B_deep_to_hard/B15_finale_collapse.scd new file mode 100644 index 0000000..2b8fff1 --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/B15_finale_collapse.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// B15_finale_collapse.scd -- Album B "Deep to Hard", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK B15 : "FINALE COLLAPSE" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[B15 0:00] intro drone...".postln; + ~bpm = 145; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \drone; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 82.wait; + + "[B15 1:22] build...".postln; + ~bpm = 148; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[B15 2:44] climax...".postln; + ~bpm = 150; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[B15 4:06] outro section...".postln; + ~bpm = 145; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[B15 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[B15 5:30] === fin Finale Collapse ===".postln; +}).play; +"=== TRACK B15 : FINALE COLLAPSE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/B_deep_to_hard/_album.scd b/sound_algo/tracks/B_deep_to_hard/_album.scd new file mode 100644 index 0000000..47b95c0 --- /dev/null +++ b/sound_algo/tracks/B_deep_to_hard/_album.scd @@ -0,0 +1,30 @@ +// ===================================================================== +// _album.scd -- Album B "Deep to Hard" : 15 tracks +// ===================================================================== + +( // --- SETUP ALBUM B --- +~albums = ~albums ? (); +~albums[\B] = ( + title: "Deep to Hard", + folder: "tracks/B_deep_to_hard/", + tracks: [ + \B01_deep_intro, + \B02_deep_house, + \B03_minimal_techno, + \B04_detroit_techno, + \B05_acid_techno, + \B06_industrial_techno, + \B07_schranz, + \B08_hardgroove, + \B09_hardtechno, + \B10_gabber_intro, + \B11_gabber, + \B12_frenchcore, + \B13_hardcore, + \B14_terrorcore, + \B15_finale_collapse, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album B] setup OK".postln; +) diff --git a/sound_algo/tracks/CLAUDE.md b/sound_algo/tracks/CLAUDE.md new file mode 100644 index 0000000..db738aa --- /dev/null +++ b/sound_algo/tracks/CLAUDE.md @@ -0,0 +1,71 @@ +# tracks/ — Albums A-W (15 tracks par lettre) + +23 albums live, une lettre par album, 15 tracks par album. Chaque +track est autonome, 4-8 minutes : Cmd+Entree sur le bloc `(...)` pour +la lancer. + +## Structure album + +```text +tracks/ + <L>_<slug>/ ex: A_acid_journey/ + _album.scd orchestrateur (~playAlbum.(\A) / ~playTrack.(\A, n)) + <L>01_<sub_slug>.scd ex: A01_acid_journey.scd (track 1) + <L>02_<sub_slug>.scd ex: A02_minimal_acid.scd (track 2) + ... + <L>15_<sub_slug>.scd ex: A15_acid_finale.scd (track 15) +``` + +Conventions album : + +- 15 tracks numerotees `<L>01` a `<L>15`, sub-styles varies (BPM + progressif, gammes differentes, instruments variant) +- `_album.scd` declare `~albums[\<L>]` (titre, ordre, durees) et + expose `~playTrack.(\<L>, n)` / `~playAlbum.(\<L>)` / `~stopAlbum.()` +- Le prefixe `_` exclut le fichier du test E2E `e2e_09_tracks` + (c'est un orchestrateur multi-bloc, pas une track autonome) + +## Structure type + +```supercollider +( +~track !? { ~track.stop }; // stop l'ancienne Routine +~track = Routine({ + "[X 0:00] section ...".postln; + ~bpm = 124; ~kickFreq = 42; ~melodyInst = \pad; + ~melodyNotes = [60,0,...]; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; // rebuild Pdef + [\kickSeq, \hatSeq, ...].do { |k| Pdef(k).play }; + 120.wait; // 2 minutes + + "[X 2:00] next section ...".postln; + ~bpm = 132; ... + ~reload.value; + ... +}).play; +) +``` + +## Conventions + +- En-tete commentaire : nom + duree + sections + timestamps (0:00 -> X:XX) +- `~track.stop` AVANT chaque relance pour eviter superposition +- `~reload.value` apres chaque modification de `~xxx` -> Pdef +- Sections delimitees par `.wait` (secondes) + log `"[X M:SS] ...".postln` +- BPM via `TempoClock.default.tempo = ~bpm/60` +- Variations live via `if (0.20.coin) { ... }` dans des `.do` loops +- Nommage : `<LETTER>_<slug>.scd`, ex `A_acid_journey.scd` + +## Section helpers + +Chaque section devrait etre referencee dans `control/jump.scd` +via `~sections[\X][\slug] = { ... }` pour permettre `~jumpTo.(\X, \slug)`. + +## Anti-patterns + +- Ne pas oublier `~track !? { ~track.stop }` -> Routines empilees +- Ne pas omettre `~reload.value` apres modif `~xxx` -> Pdef stale +- Ne pas appeler `Pdef(k).play` sans avoir defini les patterns dans engine +- Ne pas hardcoder de chemins absolus (utiliser `~base`) +- Ne pas creer de tracks > 10 min sans transition (fatigue auditive) diff --git a/sound_algo/tracks/C_hypnotic_loop/C01_hypno_intro.scd b/sound_algo/tracks/C_hypnotic_loop/C01_hypno_intro.scd new file mode 100644 index 0000000..b0e7d6d --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C01_hypno_intro.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C01_hypno_intro.scd -- Album C "Hypnotic Loop", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C01 : "HYPNO INTRO" 4 min --------------------- +// 0:00 intro -> 0:52 build -> 1:44 climax -> 2:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C01 0:00] intro pad...".postln; + ~bpm = 124; + ~kickFreq = 50; ~kickPitchAmt = 2.5; ~kickDecay = 0.4; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \pad; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 52.wait; + + "[C01 0:52] build...".postln; + ~bpm = 124; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleDorian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C01 1:44] climax...".postln; + ~bpm = 126; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C01 2:36] outro section...".postln; + ~bpm = 124; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 4.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleDorian); ~reload.value }; + 5.wait; + }; + + "[C01 3:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C01 3:30] === fin Hypno Intro ===".postln; +}).play; +"=== TRACK C01 : HYPNO INTRO 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C02_repeat_one.scd b/sound_algo/tracks/C_hypnotic_loop/C02_repeat_one.scd new file mode 100644 index 0000000..1ecc8d0 --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C02_repeat_one.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C02_repeat_one.scd -- Album C "Hypnotic Loop", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C02 : "REPEAT ONE" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C02 0:00] intro pluck...".postln; + ~bpm = 124; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \pluck; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 67.wait; + + "[C02 1:07] build...".postln; + ~bpm = 124; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinorPent); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C02 2:14] climax...".postln; + ~bpm = 126; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C02 3:21] outro section...".postln; + ~bpm = 124; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinorPent); ~reload.value }; + 5.wait; + }; + + "[C02 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C02 4:30] === fin Repeat One ===".postln; +}).play; +"=== TRACK C02 : REPEAT ONE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C03_minimal_pulse.scd b/sound_algo/tracks/C_hypnotic_loop/C03_minimal_pulse.scd new file mode 100644 index 0000000..a040702 --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C03_minimal_pulse.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C03_minimal_pulse.scd -- Album C "Hypnotic Loop", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C03 : "MINIMAL PULSE" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C03 0:00] intro stab...".postln; + ~bpm = 125; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.52; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \stab; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 82.wait; + + "[C03 1:22] build...".postln; + ~bpm = 125; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C03 2:44] climax...".postln; + ~bpm = 127; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C03 4:06] outro section...".postln; + ~bpm = 125; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[C03 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.52; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C03 5:30] === fin Minimal Pulse ===".postln; +}).play; +"=== TRACK C03 : MINIMAL PULSE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C04_phase_shift.scd b/sound_algo/tracks/C_hypnotic_loop/C04_phase_shift.scd new file mode 100644 index 0000000..835263d --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C04_phase_shift.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C04_phase_shift.scd -- Album C "Hypnotic Loop", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C04 : "PHASE SHIFT" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C04 0:00] intro fmBell...".postln; + ~bpm = 125; + ~kickFreq = 58; ~kickPitchAmt = 3.2; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.52; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \fmBell; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 97.wait; + + "[C04 1:37] build...".postln; + ~bpm = 125; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleJapanese); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C04 3:14] climax...".postln; + ~bpm = 127; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C04 4:51] outro section...".postln; + ~bpm = 125; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleJapanese); ~reload.value }; + 5.wait; + }; + + "[C04 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.52; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C04 6:30] === fin Phase Shift ===".postln; +}).play; +"=== TRACK C04 : PHASE SHIFT 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C05_loop_evolve.scd b/sound_algo/tracks/C_hypnotic_loop/C05_loop_evolve.scd new file mode 100644 index 0000000..b2ec10f --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C05_loop_evolve.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C05_loop_evolve.scd -- Album C "Hypnotic Loop", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C05 : "LOOP EVOLVE" 8 min --------------------- +// 0:00 intro -> 1:52 build -> 3:44 climax -> 5:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C05 0:00] intro saw3...".postln; + ~bpm = 126; + ~kickFreq = 58; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \saw3; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 112.wait; + + "[C05 1:52] build...".postln; + ~bpm = 126; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleDorian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C05 3:44] climax...".postln; + ~bpm = 128; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C05 5:36] outro section...".postln; + ~bpm = 126; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleDorian); ~reload.value }; + 5.wait; + }; + + "[C05 7:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C05 7:30] === fin Loop Evolve ===".postln; +}).play; +"=== TRACK C05 : LOOP EVOLVE 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C06_resonance_walk.scd b/sound_algo/tracks/C_hypnotic_loop/C06_resonance_walk.scd new file mode 100644 index 0000000..8221338 --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C06_resonance_walk.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C06_resonance_walk.scd -- Album C "Hypnotic Loop", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C06 : "RESONANCE WALK" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C06 0:00] intro lead...".postln; + ~bpm = 126; + ~kickFreq = 58; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \lead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 82.wait; + + "[C06 1:22] build...".postln; + ~bpm = 126; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleAcid); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C06 2:44] climax...".postln; + ~bpm = 128; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleAcid); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C06 4:06] outro section...".postln; + ~bpm = 126; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleAcid); ~reload.value }; + 5.wait; + }; + + "[C06 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C06 5:30] === fin Resonance Walk ===".postln; +}).play; +"=== TRACK C06 : RESONANCE WALK 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C07_acid_drift.scd b/sound_algo/tracks/C_hypnotic_loop/C07_acid_drift.scd new file mode 100644 index 0000000..367f288 --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C07_acid_drift.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C07_acid_drift.scd -- Album C "Hypnotic Loop", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C07 : "ACID DRIFT" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C07 0:00] intro lead...".postln; + ~bpm = 127; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \lead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 67.wait; + + "[C07 1:07] build...".postln; + ~bpm = 127; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleAcidWide); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C07 2:14] climax...".postln; + ~bpm = 129; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleAcidWide); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C07 3:21] outro section...".postln; + ~bpm = 127; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleAcidWide); ~reload.value }; + 5.wait; + }; + + "[C07 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C07 4:30] === fin Acid Drift ===".postln; +}).play; +"=== TRACK C07 : ACID DRIFT 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C08_modular_groove.scd b/sound_algo/tracks/C_hypnotic_loop/C08_modular_groove.scd new file mode 100644 index 0000000..f49f714 --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C08_modular_groove.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C08_modular_groove.scd -- Album C "Hypnotic Loop", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C08 : "MODULAR GROOVE" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C08 0:00] intro pluck...".postln; + ~bpm = 127; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \pluck; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 82.wait; + + "[C08 1:22] build...".postln; + ~bpm = 127; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C08 2:44] climax...".postln; + ~bpm = 129; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C08 4:06] outro section...".postln; + ~bpm = 127; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[C08 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C08 5:30] === fin Modular Groove ===".postln; +}).play; +"=== TRACK C08 : MODULAR GROOVE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C09_repetition_zen.scd b/sound_algo/tracks/C_hypnotic_loop/C09_repetition_zen.scd new file mode 100644 index 0000000..a5ed26b --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C09_repetition_zen.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C09_repetition_zen.scd -- Album C "Hypnotic Loop", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C09 : "REPETITION ZEN" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C09 0:00] intro rhodes...".postln; + ~bpm = 128; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \rhodes; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 97.wait; + + "[C09 1:37] build...".postln; + ~bpm = 128; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleDorian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C09 3:14] climax...".postln; + ~bpm = 130; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C09 4:51] outro section...".postln; + ~bpm = 128; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleDorian); ~reload.value }; + 5.wait; + }; + + "[C09 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C09 6:30] === fin Repetition Zen ===".postln; +}).play; +"=== TRACK C09 : REPETITION ZEN 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C10_dubby_loop.scd b/sound_algo/tracks/C_hypnotic_loop/C10_dubby_loop.scd new file mode 100644 index 0000000..900a1af --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C10_dubby_loop.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C10_dubby_loop.scd -- Album C "Hypnotic Loop", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C10 : "DUBBY LOOP" 8 min --------------------- +// 0:00 intro -> 1:52 build -> 3:44 climax -> 5:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C10 0:00] intro fmBell...".postln; + ~bpm = 128; + ~kickFreq = 62; ~kickPitchAmt = 3.5; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \fmBell; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 112.wait; + + "[C10 1:52] build...".postln; + ~bpm = 128; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C10 3:44] climax...".postln; + ~bpm = 130; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C10 5:36] outro section...".postln; + ~bpm = 128; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[C10 7:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C10 7:30] === fin Dubby Loop ===".postln; +}).play; +"=== TRACK C10 : DUBBY LOOP 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C11_filter_walk.scd b/sound_algo/tracks/C_hypnotic_loop/C11_filter_walk.scd new file mode 100644 index 0000000..d64bd98 --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C11_filter_walk.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C11_filter_walk.scd -- Album C "Hypnotic Loop", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C11 : "FILTER WALK" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C11 0:00] intro saw3...".postln; + ~bpm = 127; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \saw3; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 97.wait; + + "[C11 1:37] build...".postln; + ~bpm = 127; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleAcid); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C11 3:14] climax...".postln; + ~bpm = 129; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleAcid); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C11 4:51] outro section...".postln; + ~bpm = 127; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleAcid); ~reload.value }; + 5.wait; + }; + + "[C11 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C11 6:30] === fin Filter Walk ===".postln; +}).play; +"=== TRACK C11 : FILTER WALK 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C12_subtle_chaos.scd b/sound_algo/tracks/C_hypnotic_loop/C12_subtle_chaos.scd new file mode 100644 index 0000000..3ab5771 --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C12_subtle_chaos.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C12_subtle_chaos.scd -- Album C "Hypnotic Loop", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C12 : "SUBTLE CHAOS" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C12 0:00] intro stab...".postln; + ~bpm = 126; + ~kickFreq = 58; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \stab; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 67.wait; + + "[C12 1:07] build...".postln; + ~bpm = 126; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scalePhrygian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C12 2:14] climax...".postln; + ~bpm = 128; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C12 3:21] outro section...".postln; + ~bpm = 126; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scalePhrygian); ~reload.value }; + 5.wait; + }; + + "[C12 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C12 4:30] === fin Subtle Chaos ===".postln; +}).play; +"=== TRACK C12 : SUBTLE CHAOS 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C13_pulse_minimal.scd b/sound_algo/tracks/C_hypnotic_loop/C13_pulse_minimal.scd new file mode 100644 index 0000000..c5ced10 --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C13_pulse_minimal.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C13_pulse_minimal.scd -- Album C "Hypnotic Loop", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C13 : "PULSE MINIMAL" 4 min --------------------- +// 0:00 intro -> 0:52 build -> 1:44 climax -> 2:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C13 0:00] intro pluck...".postln; + ~bpm = 125; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \pluck; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,63,0,67,0,70,67,0,63,0,60,0,0,0,60,0,63,0,67,0,70,0,72,0,70,67,63,0,60,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 52.wait; + + "[C13 0:52] build...".postln; + ~bpm = 125; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinorPent); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C13 1:44] climax...".postln; + ~bpm = 127; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C13 2:36] outro section...".postln; + ~bpm = 125; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 4.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinorPent); ~reload.value }; + 5.wait; + }; + + "[C13 3:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C13 3:30] === fin Pulse Minimal ===".postln; +}).play; +"=== TRACK C13 : PULSE MINIMAL 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C14_morning_loop.scd b/sound_algo/tracks/C_hypnotic_loop/C14_morning_loop.scd new file mode 100644 index 0000000..2ec8f4f --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C14_morning_loop.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C14_morning_loop.scd -- Album C "Hypnotic Loop", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C14 : "MORNING LOOP" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C14 0:00] intro rhodes...".postln; + ~bpm = 124; + ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.35; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \rhodes; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 67.wait; + + "[C14 1:07] build...".postln; + ~bpm = 124; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleDorian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C14 2:14] climax...".postln; + ~bpm = 126; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C14 3:21] outro section...".postln; + ~bpm = 124; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleDorian); ~reload.value }; + 5.wait; + }; + + "[C14 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C14 4:30] === fin Morning Loop ===".postln; +}).play; +"=== TRACK C14 : MORNING LOOP 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/C15_loop_dissolve.scd b/sound_algo/tracks/C_hypnotic_loop/C15_loop_dissolve.scd new file mode 100644 index 0000000..bd1a893 --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/C15_loop_dissolve.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// C15_loop_dissolve.scd -- Album C "Hypnotic Loop", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK C15 : "LOOP DISSOLVE" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[C15 0:00] intro drone...".postln; + ~bpm = 124; + ~kickFreq = 50; ~kickPitchAmt = 2.5; ~kickDecay = 0.4; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.45; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \drone; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 82.wait; + + "[C15 1:22] build...".postln; + ~bpm = 124; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[C15 2:44] climax...".postln; + ~bpm = 126; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[C15 4:06] outro section...".postln; + ~bpm = 124; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[C15 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[C15 5:30] === fin Loop Dissolve ===".postln; +}).play; +"=== TRACK C15 : LOOP DISSOLVE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/C_hypnotic_loop/_album.scd b/sound_algo/tracks/C_hypnotic_loop/_album.scd new file mode 100644 index 0000000..515ffc9 --- /dev/null +++ b/sound_algo/tracks/C_hypnotic_loop/_album.scd @@ -0,0 +1,30 @@ +// ===================================================================== +// _album.scd -- Album C "Hypnotic Loop" : 15 tracks +// ===================================================================== + +( // --- SETUP ALBUM C --- +~albums = ~albums ? (); +~albums[\C] = ( + title: "Hypnotic Loop", + folder: "tracks/C_hypnotic_loop/", + tracks: [ + \C01_hypno_intro, + \C02_repeat_one, + \C03_minimal_pulse, + \C04_phase_shift, + \C05_loop_evolve, + \C06_resonance_walk, + \C07_acid_drift, + \C08_modular_groove, + \C09_repetition_zen, + \C10_dubby_loop, + \C11_filter_walk, + \C12_subtle_chaos, + \C13_pulse_minimal, + \C14_morning_loop, + \C15_loop_dissolve, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album C] setup OK".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D01_wobble_intro.scd b/sound_algo/tracks/D_wobble_drop/D01_wobble_intro.scd new file mode 100644 index 0000000..ae8f2d6 --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D01_wobble_intro.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D01_wobble_intro.scd -- Album D "Wobble Drop", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D01 : "WOBBLE INTRO" 4 min --------------------- +// 0:00 intro -> 0:52 build -> 1:44 climax -> 2:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D01 0:00] intro pad...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.5; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \pad; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 52.wait; + + "[D01 0:52] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D01 1:44] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D01 2:36] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 4.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[D01 3:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D01 3:30] === fin Wobble Intro ===".postln; +}).play; +"=== TRACK D01 : WOBBLE INTRO 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D02_first_drop.scd b/sound_algo/tracks/D_wobble_drop/D02_first_drop.scd new file mode 100644 index 0000000..1d80d1b --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D02_first_drop.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D02_first_drop.scd -- Album D "Wobble Drop", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D02 : "FIRST DROP" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D02 0:00] intro fmBell...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.45; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \fmBell; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 67.wait; + + "[D02 1:07] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D02 2:14] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D02 3:21] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[D02 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D02 4:30] === fin First Drop ===".postln; +}).play; +"=== TRACK D02 : FIRST DROP 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D03_chop_dubstep.scd b/sound_algo/tracks/D_wobble_drop/D03_chop_dubstep.scd new file mode 100644 index 0000000..dcd0971 --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D03_chop_dubstep.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D03_chop_dubstep.scd -- Album D "Wobble Drop", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D03 : "CHOP DUBSTEP" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D03 0:00] intro fmBell...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.4; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \fmBell; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 82.wait; + + "[D03 1:22] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scalePhrygian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D03 2:44] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D03 4:06] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scalePhrygian); ~reload.value }; + 5.wait; + }; + + "[D03 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D03 5:30] === fin Chop Dubstep ===".postln; +}).play; +"=== TRACK D03 : CHOP DUBSTEP 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D04_riddim_groove.scd b/sound_algo/tracks/D_wobble_drop/D04_riddim_groove.scd new file mode 100644 index 0000000..1714401 --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D04_riddim_groove.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D04_riddim_groove.scd -- Album D "Wobble Drop", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D04 : "RIDDIM GROOVE" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D04 0:00] intro growl...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.4; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \growl; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 97.wait; + + "[D04 1:37] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHarmonicMin); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D04 3:14] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D04 4:51] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHarmonicMin); ~reload.value }; + 5.wait; + }; + + "[D04 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D04 6:30] === fin Riddim Groove ===".postln; +}).play; +"=== TRACK D04 : RIDDIM GROOVE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D05_brostep_lead.scd b/sound_algo/tracks/D_wobble_drop/D05_brostep_lead.scd new file mode 100644 index 0000000..d8a2578 --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D05_brostep_lead.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D05_brostep_lead.scd -- Album D "Wobble Drop", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D05 : "BROSTEP LEAD" 8 min --------------------- +// 0:00 intro -> 1:52 build -> 3:44 climax -> 5:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D05 0:00] intro growl...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.4; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \growl; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 112.wait; + + "[D05 1:52] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D05 3:44] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D05 5:36] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[D05 7:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D05 7:30] === fin Brostep Lead ===".postln; +}).play; +"=== TRACK D05 : BROSTEP LEAD 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D06_neuro_wobble.scd b/sound_algo/tracks/D_wobble_drop/D06_neuro_wobble.scd new file mode 100644 index 0000000..7c110f4 --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D06_neuro_wobble.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D06_neuro_wobble.scd -- Album D "Wobble Drop", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D06 : "NEURO WOBBLE" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D06 0:00] intro reeseHard...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.8; ~kickDecay = 0.38; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \reeseHard; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 82.wait; + + "[D06 1:22] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scalePhrygian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D06 2:44] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D06 4:06] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scalePhrygian); ~reload.value }; + 5.wait; + }; + + "[D06 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D06 5:30] === fin Neuro Wobble ===".postln; +}).play; +"=== TRACK D06 : NEURO WOBBLE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D07_deep_dub.scd b/sound_algo/tracks/D_wobble_drop/D07_deep_dub.scd new file mode 100644 index 0000000..00f4624 --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D07_deep_dub.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D07_deep_dub.scd -- Album D "Wobble Drop", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D07 : "DEEP DUB" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D07 0:00] intro reese...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.45; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \reese; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 67.wait; + + "[D07 1:07] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D07 2:14] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D07 3:21] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[D07 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D07 4:30] === fin Deep Dub ===".postln; +}).play; +"=== TRACK D07 : DEEP DUB 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D08_glitch_drop.scd b/sound_algo/tracks/D_wobble_drop/D08_glitch_drop.scd new file mode 100644 index 0000000..132ea7b --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D08_glitch_drop.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D08_glitch_drop.scd -- Album D "Wobble Drop", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D08 : "GLITCH DROP" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D08 0:00] intro fmLead...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.8; ~kickDecay = 0.4; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \fmLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 82.wait; + + "[D08 1:22] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHarmonicMin); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D08 2:44] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D08 4:06] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHarmonicMin); ~reload.value }; + 5.wait; + }; + + "[D08 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D08 5:30] === fin Glitch Drop ===".postln; +}).play; +"=== TRACK D08 : GLITCH DROP 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D09_half_step.scd b/sound_algo/tracks/D_wobble_drop/D09_half_step.scd new file mode 100644 index 0000000..b56487e --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D09_half_step.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D09_half_step.scd -- Album D "Wobble Drop", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D09 : "HALF STEP" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D09 0:00] intro growl...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.45; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \growl; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 97.wait; + + "[D09 1:37] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D09 3:14] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D09 4:51] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[D09 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D09 6:30] === fin Half Step ===".postln; +}).play; +"=== TRACK D09 : HALF STEP 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D10_tear_out.scd b/sound_algo/tracks/D_wobble_drop/D10_tear_out.scd new file mode 100644 index 0000000..6b2a92a --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D10_tear_out.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D10_tear_out.scd -- Album D "Wobble Drop", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D10 : "TEAR OUT" 8 min --------------------- +// 0:00 intro -> 1:52 build -> 3:44 climax -> 5:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D10 0:00] intro reeseHard...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 4.0; ~kickDecay = 0.38; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.62; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \reeseHard; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 112.wait; + + "[D10 1:52] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scalePhrygian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D10 3:44] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D10 5:36] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scalePhrygian); ~reload.value }; + 5.wait; + }; + + "[D10 7:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.62; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D10 7:30] === fin Tear Out ===".postln; +}).play; +"=== TRACK D10 : TEAR OUT 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D11_drumstep.scd b/sound_algo/tracks/D_wobble_drop/D11_drumstep.scd new file mode 100644 index 0000000..753ae01 --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D11_drumstep.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D11_drumstep.scd -- Album D "Wobble Drop", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D11 : "DRUMSTEP" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D11 0:00] intro fmBell...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.4; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \fmBell; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 97.wait; + + "[D11 1:37] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D11 3:14] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D11 4:51] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[D11 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D11 6:30] === fin Drumstep ===".postln; +}).play; +"=== TRACK D11 : DRUMSTEP 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D12_dub_breakdown.scd b/sound_algo/tracks/D_wobble_drop/D12_dub_breakdown.scd new file mode 100644 index 0000000..a6bff5c --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D12_dub_breakdown.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D12_dub_breakdown.scd -- Album D "Wobble Drop", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D12 : "DUB BREAKDOWN" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D12 0:00] intro vocalPad...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.5; ~kickDecay = 0.5; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \vocalPad; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 67.wait; + + "[D12 1:07] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleDorian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D12 2:14] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D12 3:21] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleDorian); ~reload.value }; + 5.wait; + }; + + "[D12 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D12 4:30] === fin Dub Breakdown ===".postln; +}).play; +"=== TRACK D12 : DUB BREAKDOWN 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D13_chop_glitch.scd b/sound_algo/tracks/D_wobble_drop/D13_chop_glitch.scd new file mode 100644 index 0000000..313b69a --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D13_chop_glitch.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D13_chop_glitch.scd -- Album D "Wobble Drop", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D13 : "CHOP GLITCH" 4 min --------------------- +// 0:00 intro -> 0:52 build -> 1:44 climax -> 2:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D13 0:00] intro fmLead...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 3.8; ~kickDecay = 0.4; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \fmLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 52.wait; + + "[D13 0:52] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHarmonicMin); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D13 1:44] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D13 2:36] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 4.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHarmonicMin); ~reload.value }; + 5.wait; + }; + + "[D13 3:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D13 3:30] === fin Chop Glitch ===".postln; +}).play; +"=== TRACK D13 : CHOP GLITCH 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D14_final_drop.scd b/sound_algo/tracks/D_wobble_drop/D14_final_drop.scd new file mode 100644 index 0000000..1e53028 --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D14_final_drop.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D14_final_drop.scd -- Album D "Wobble Drop", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D14 : "FINAL DROP" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D14 0:00] intro growl...".postln; + ~bpm = 140; + ~kickFreq = 48; ~kickPitchAmt = 4.0; ~kickDecay = 0.38; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.62; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \growl; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [36,0,0,0,36,0,39,0,36,0,0,0,41,0,39,0,36,0,0,0,36,0,43,0,39,0,36,0,41,0,39,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 67.wait; + + "[D14 1:07] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scalePhrygian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D14 2:14] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D14 3:21] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scalePhrygian); ~reload.value }; + 5.wait; + }; + + "[D14 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.62; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D14 4:30] === fin Final Drop ===".postln; +}).play; +"=== TRACK D14 : FINAL DROP 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/D15_wobble_outro.scd b/sound_algo/tracks/D_wobble_drop/D15_wobble_outro.scd new file mode 100644 index 0000000..83aabaa --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/D15_wobble_outro.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// D15_wobble_outro.scd -- Album D "Wobble Drop", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK D15 : "WOBBLE OUTRO" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[D15 0:00] intro drone...".postln; + ~bpm = 140; + ~kickFreq = 46; ~kickPitchAmt = 3.5; ~kickDecay = 0.55; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \drone; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 82.wait; + + "[D15 1:22] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[D15 2:44] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[D15 4:06] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[D15 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[D15 5:30] === fin Wobble Outro ===".postln; +}).play; +"=== TRACK D15 : WOBBLE OUTRO 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/D_wobble_drop/_album.scd b/sound_algo/tracks/D_wobble_drop/_album.scd new file mode 100644 index 0000000..c2083a6 --- /dev/null +++ b/sound_algo/tracks/D_wobble_drop/_album.scd @@ -0,0 +1,30 @@ +// ===================================================================== +// _album.scd -- Album D "Wobble Drop" : 15 tracks +// ===================================================================== + +( // --- SETUP ALBUM D --- +~albums = ~albums ? (); +~albums[\D] = ( + title: "Wobble Drop", + folder: "tracks/D_wobble_drop/", + tracks: [ + \D01_wobble_intro, + \D02_first_drop, + \D03_chop_dubstep, + \D04_riddim_groove, + \D05_brostep_lead, + \D06_neuro_wobble, + \D07_deep_dub, + \D08_glitch_drop, + \D09_half_step, + \D10_tear_out, + \D11_drumstep, + \D12_dub_breakdown, + \D13_chop_glitch, + \D14_final_drop, + \D15_wobble_outro, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album D] setup OK".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E01_pipa_intro.scd b/sound_algo/tracks/E_vietnam_hard/E01_pipa_intro.scd new file mode 100644 index 0000000..9820509 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E01_pipa_intro.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E01_pipa_intro.scd -- Album E "Vietnam Hard", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E01 : "PIPA INTRO" 4 min --------------------- +// 0:00 intro -> 0:52 build -> 1:44 climax -> 2:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E01 0:00] intro pipa...".postln; + ~bpm = 110; + ~kickFreq = 50; ~kickPitchAmt = 2.5; ~kickDecay = 0.4; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \pipa; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 52.wait; + + "[E01 0:52] build...".postln; + ~bpm = 110; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleVietnam); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E01 1:44] climax...".postln; + ~bpm = 112; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleVietnam); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E01 2:36] outro section...".postln; + ~bpm = 110; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 4.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleVietnam); ~reload.value }; + 5.wait; + }; + + "[E01 3:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E01 3:30] === fin Pipa Intro ===".postln; +}).play; +"=== TRACK E01 : PIPA INTRO 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E02_erhu_morning.scd b/sound_algo/tracks/E_vietnam_hard/E02_erhu_morning.scd new file mode 100644 index 0000000..4f9a146 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E02_erhu_morning.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E02_erhu_morning.scd -- Album E "Vietnam Hard", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E02 : "ERHU MORNING" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E02 0:00] intro erhu...".postln; + ~bpm = 115; + ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.38; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \erhu; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 67.wait; + + "[E02 1:07] build...".postln; + ~bpm = 115; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleVietnamMaj); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E02 2:14] climax...".postln; + ~bpm = 117; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleVietnamMaj); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E02 3:21] outro section...".postln; + ~bpm = 115; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleVietnamMaj); ~reload.value }; + 5.wait; + }; + + "[E02 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E02 4:30] === fin Erhu Morning ===".postln; +}).play; +"=== TRACK E02 : ERHU MORNING 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E03_guzheng_dance.scd b/sound_algo/tracks/E_vietnam_hard/E03_guzheng_dance.scd new file mode 100644 index 0000000..9823232 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E03_guzheng_dance.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E03_guzheng_dance.scd -- Album E "Vietnam Hard", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E03 : "GUZHENG DANCE" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E03 0:00] intro guzheng...".postln; + ~bpm = 118; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.35; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.52; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \guzheng; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 82.wait; + + "[E03 1:22] build...".postln; + ~bpm = 118; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleVietnam); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E03 2:44] climax...".postln; + ~bpm = 120; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleVietnam); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E03 4:06] outro section...".postln; + ~bpm = 118; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleVietnam); ~reload.value }; + 5.wait; + }; + + "[E03 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.52; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E03 5:30] === fin Guzheng Dance ===".postln; +}).play; +"=== TRACK E03 : GUZHENG DANCE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E04_koto_groove.scd b/sound_algo/tracks/E_vietnam_hard/E04_koto_groove.scd new file mode 100644 index 0000000..a290c01 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E04_koto_groove.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E04_koto_groove.scd -- Album E "Vietnam Hard", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E04 : "KOTO GROOVE" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E04 0:00] intro koto...".postln; + ~bpm = 120; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \koto; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 97.wait; + + "[E04 1:37] build...".postln; + ~bpm = 120; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHirajoshi); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E04 3:14] climax...".postln; + ~bpm = 122; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHirajoshi); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E04 4:51] outro section...".postln; + ~bpm = 120; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHirajoshi); ~reload.value }; + 5.wait; + }; + + "[E04 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E04 6:30] === fin Koto Groove ===".postln; +}).play; +"=== TRACK E04 : KOTO GROOVE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E05_shakuhachi_walk.scd b/sound_algo/tracks/E_vietnam_hard/E05_shakuhachi_walk.scd new file mode 100644 index 0000000..81a50c7 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E05_shakuhachi_walk.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E05_shakuhachi_walk.scd -- Album E "Vietnam Hard", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E05 : "SHAKUHACHI WALK" 8 min --------------------- +// 0:00 intro -> 1:52 build -> 3:44 climax -> 5:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E05 0:00] intro shakuhachi...".postln; + ~bpm = 122; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \shakuhachi; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 112.wait; + + "[E05 1:52] build...".postln; + ~bpm = 122; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleJapanese); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E05 3:44] climax...".postln; + ~bpm = 124; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E05 5:36] outro section...".postln; + ~bpm = 122; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleJapanese); ~reload.value }; + 5.wait; + }; + + "[E05 7:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E05 7:30] === fin Shakuhachi Walk ===".postln; +}).play; +"=== TRACK E05 : SHAKUHACHI WALK 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E06_taiko_rise.scd b/sound_algo/tracks/E_vietnam_hard/E06_taiko_rise.scd new file mode 100644 index 0000000..ab85dff --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E06_taiko_rise.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E06_taiko_rise.scd -- Album E "Vietnam Hard", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E06 : "TAIKO RISE" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E06 0:00] intro pipa...".postln; + ~bpm = 125; + ~kickFreq = 58; ~kickPitchAmt = 3.5; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \pipa; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 82.wait; + + "[E06 1:22] build...".postln; + ~bpm = 125; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleVietnam); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E06 2:44] climax...".postln; + ~bpm = 127; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleVietnam); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E06 4:06] outro section...".postln; + ~bpm = 125; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleVietnam); ~reload.value }; + 5.wait; + }; + + "[E06 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E06 5:30] === fin Taiko Rise ===".postln; +}).play; +"=== TRACK E06 : TAIKO RISE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E07_acid_pipa.scd b/sound_algo/tracks/E_vietnam_hard/E07_acid_pipa.scd new file mode 100644 index 0000000..502975a --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E07_acid_pipa.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E07_acid_pipa.scd -- Album E "Vietnam Hard", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E07 : "ACID PIPA" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E07 0:00] intro lead...".postln; + ~bpm = 128; + ~kickFreq = 58; ~kickPitchAmt = 3.8; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \lead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 67.wait; + + "[E07 1:07] build...".postln; + ~bpm = 128; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleVietnam); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E07 2:14] climax...".postln; + ~bpm = 130; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleVietnam); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E07 3:21] outro section...".postln; + ~bpm = 128; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleVietnam); ~reload.value }; + 5.wait; + }; + + "[E07 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E07 4:30] === fin Acid Pipa ===".postln; +}).play; +"=== TRACK E07 : ACID PIPA 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E08_hard_erhu.scd b/sound_algo/tracks/E_vietnam_hard/E08_hard_erhu.scd new file mode 100644 index 0000000..c8e80a4 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E08_hard_erhu.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E08_hard_erhu.scd -- Album E "Vietnam Hard", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E08 : "HARD ERHU" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E08 0:00] intro erhu...".postln; + ~bpm = 130; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.58; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \erhu; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[E08 1:22] build...".postln; + ~bpm = 130; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleVietnam); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E08 2:44] climax...".postln; + ~bpm = 132; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleVietnam); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E08 4:06] outro section...".postln; + ~bpm = 130; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleVietnam); ~reload.value }; + 5.wait; + }; + + "[E08 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.58; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E08 5:30] === fin Hard Erhu ===".postln; +}).play; +"=== TRACK E08 : HARD ERHU 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E09_growl_drop.scd b/sound_algo/tracks/E_vietnam_hard/E09_growl_drop.scd new file mode 100644 index 0000000..34c3ae3 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E09_growl_drop.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E09_growl_drop.scd -- Album E "Vietnam Hard", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E09 : "GROWL DROP" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E09 0:00] intro growl...".postln; + ~bpm = 132; + ~kickFreq = 62; ~kickPitchAmt = 4.5; ~kickDecay = 0.26; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \growl; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 97.wait; + + "[E09 1:37] build...".postln; + ~bpm = 132; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleVietnam); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E09 3:14] climax...".postln; + ~bpm = 134; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleVietnam); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E09 4:51] outro section...".postln; + ~bpm = 132; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleVietnam); ~reload.value }; + 5.wait; + }; + + "[E09 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E09 6:30] === fin Growl Drop ===".postln; +}).play; +"=== TRACK E09 : GROWL DROP 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E10_hard_techno_asia.scd b/sound_algo/tracks/E_vietnam_hard/E10_hard_techno_asia.scd new file mode 100644 index 0000000..9a892d4 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E10_hard_techno_asia.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E10_hard_techno_asia.scd -- Album E "Vietnam Hard", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E10 : "HARD TECHNO ASIA" 8 min --------------------- +// 0:00 intro -> 1:52 build -> 3:44 climax -> 5:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E10 0:00] intro hardLead...".postln; + ~bpm = 135; + ~kickFreq = 62; ~kickPitchAmt = 4.5; ~kickDecay = 0.25; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \hardLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 112.wait; + + "[E10 1:52] build...".postln; + ~bpm = 135; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHijaz); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E10 3:44] climax...".postln; + ~bpm = 137; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHijaz); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E10 5:36] outro section...".postln; + ~bpm = 135; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHijaz); ~reload.value }; + 5.wait; + }; + + "[E10 7:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E10 7:30] === fin Hard Techno Asia ===".postln; +}).play; +"=== TRACK E10 : HARD TECHNO ASIA 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E11_acid_hijaz.scd b/sound_algo/tracks/E_vietnam_hard/E11_acid_hijaz.scd new file mode 100644 index 0000000..e00fc1d --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E11_acid_hijaz.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E11_acid_hijaz.scd -- Album E "Vietnam Hard", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E11 : "ACID HIJAZ" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E11 0:00] intro lead...".postln; + ~bpm = 133; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.58; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \lead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 97.wait; + + "[E11 1:37] build...".postln; + ~bpm = 133; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHijaz); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E11 3:14] climax...".postln; + ~bpm = 135; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHijaz); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E11 4:51] outro section...".postln; + ~bpm = 133; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHijaz); ~reload.value }; + 5.wait; + }; + + "[E11 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.58; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E11 6:30] === fin Acid Hijaz ===".postln; +}).play; +"=== TRACK E11 : ACID HIJAZ 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E12_zen_break.scd b/sound_algo/tracks/E_vietnam_hard/E12_zen_break.scd new file mode 100644 index 0000000..877be0b --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E12_zen_break.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E12_zen_break.scd -- Album E "Vietnam Hard", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E12 : "ZEN BREAK" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E12 0:00] intro shakuhachi...".postln; + ~bpm = 120; + ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.4; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \shakuhachi; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 67.wait; + + "[E12 1:07] build...".postln; + ~bpm = 120; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleJapanese); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E12 2:14] climax...".postln; + ~bpm = 122; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E12 3:21] outro section...".postln; + ~bpm = 120; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleJapanese); ~reload.value }; + 5.wait; + }; + + "[E12 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E12 4:30] === fin Zen Break ===".postln; +}).play; +"=== TRACK E12 : ZEN BREAK 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E13_pipa_finale.scd b/sound_algo/tracks/E_vietnam_hard/E13_pipa_finale.scd new file mode 100644 index 0000000..74af249 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E13_pipa_finale.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E13_pipa_finale.scd -- Album E "Vietnam Hard", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E13 : "PIPA FINALE" 4 min --------------------- +// 0:00 intro -> 0:52 build -> 1:44 climax -> 2:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E13 0:00] intro pipa...".postln; + ~bpm = 130; + ~kickFreq = 58; ~kickPitchAmt = 3.5; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \pipa; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 52.wait; + + "[E13 0:52] build...".postln; + ~bpm = 130; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleVietnamMaj); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E13 1:44] climax...".postln; + ~bpm = 132; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleVietnamMaj); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E13 2:36] outro section...".postln; + ~bpm = 130; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 4.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleVietnamMaj); ~reload.value }; + 5.wait; + }; + + "[E13 3:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E13 3:30] === fin Pipa Finale ===".postln; +}).play; +"=== TRACK E13 : PIPA FINALE 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E14_growl_hijaz.scd b/sound_algo/tracks/E_vietnam_hard/E14_growl_hijaz.scd new file mode 100644 index 0000000..08aee85 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E14_growl_hijaz.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E14_growl_hijaz.scd -- Album E "Vietnam Hard", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E14 : "GROWL HIJAZ" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E14 0:00] intro growl...".postln; + ~bpm = 135; + ~kickFreq = 62; ~kickPitchAmt = 4.5; ~kickDecay = 0.25; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.6; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \growl; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 67.wait; + + "[E14 1:07] build...".postln; + ~bpm = 135; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHijaz); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E14 2:14] climax...".postln; + ~bpm = 137; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHijaz); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E14 3:21] outro section...".postln; + ~bpm = 135; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHijaz); ~reload.value }; + 5.wait; + }; + + "[E14 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.6; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E14 4:30] === fin Growl Hijaz ===".postln; +}).play; +"=== TRACK E14 : GROWL HIJAZ 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/E15_gong_dissolve.scd b/sound_algo/tracks/E_vietnam_hard/E15_gong_dissolve.scd new file mode 100644 index 0000000..1f2e0c5 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/E15_gong_dissolve.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// E15_gong_dissolve.scd -- Album E "Vietnam Hard", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK E15 : "GONG DISSOLVE" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[E15 0:00] intro drone...".postln; + ~bpm = 110; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.45; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \drone; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,63,0,65,67,70,0,72,0,70,67,65,0,63,60,63,0,65,0,67,70,72,75,70,67,0,65,67,0,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 82.wait; + + "[E15 1:22] build...".postln; + ~bpm = 110; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleVietnam); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[E15 2:44] climax...".postln; + ~bpm = 112; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleVietnam); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[E15 4:06] outro section...".postln; + ~bpm = 110; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleVietnam); ~reload.value }; + 5.wait; + }; + + "[E15 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[E15 5:30] === fin Gong Dissolve ===".postln; +}).play; +"=== TRACK E15 : GONG DISSOLVE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/E_vietnam_hard/_album.scd b/sound_algo/tracks/E_vietnam_hard/_album.scd new file mode 100644 index 0000000..ef0ad54 --- /dev/null +++ b/sound_algo/tracks/E_vietnam_hard/_album.scd @@ -0,0 +1,30 @@ +// ===================================================================== +// _album.scd -- Album E "Vietnam Hard" : 15 tracks +// ===================================================================== + +( // --- SETUP ALBUM E --- +~albums = ~albums ? (); +~albums[\E] = ( + title: "Vietnam Hard", + folder: "tracks/E_vietnam_hard/", + tracks: [ + \E01_pipa_intro, + \E02_erhu_morning, + \E03_guzheng_dance, + \E04_koto_groove, + \E05_shakuhachi_walk, + \E06_taiko_rise, + \E07_acid_pipa, + \E08_hard_erhu, + \E09_growl_drop, + \E10_hard_techno_asia, + \E11_acid_hijaz, + \E12_zen_break, + \E13_pipa_finale, + \E14_growl_hijaz, + \E15_gong_dissolve, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album E] setup OK".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F01_warm_intro.scd b/sound_algo/tracks/F_trance_uplifter/F01_warm_intro.scd new file mode 100644 index 0000000..37adb81 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F01_warm_intro.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F01_warm_intro.scd -- Album F "Trance Uplifter", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F01 : "WARM INTRO" 4 min --------------------- +// 0:00 intro -> 0:52 build -> 1:44 climax -> 2:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F01 0:00] intro warmPad...".postln; + ~bpm = 138; + ~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.32; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \warmPad; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 52.wait; + + "[F01 0:52] build...".postln; + ~bpm = 138; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F01 1:44] climax...".postln; + ~bpm = 140; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F01 2:36] outro section...".postln; + ~bpm = 138; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 4.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[F01 3:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F01 3:30] === fin Warm Intro ===".postln; +}).play; +"=== TRACK F01 : WARM INTRO 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F02_arp_awakening.scd b/sound_algo/tracks/F_trance_uplifter/F02_arp_awakening.scd new file mode 100644 index 0000000..4efc880 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F02_arp_awakening.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F02_arp_awakening.scd -- Album F "Trance Uplifter", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F02 : "ARP AWAKENING" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F02 0:00] intro squareLead...".postln; + ~bpm = 138; + ~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.32; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.5; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \squareLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 67.wait; + + "[F02 1:07] build...".postln; + ~bpm = 138; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F02 2:14] climax...".postln; + ~bpm = 140; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F02 3:21] outro section...".postln; + ~bpm = 138; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[F02 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F02 4:30] === fin Arp Awakening ===".postln; +}).play; +"=== TRACK F02 : ARP AWAKENING 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F03_uplift_one.scd b/sound_algo/tracks/F_trance_uplifter/F03_uplift_one.scd new file mode 100644 index 0000000..db960c3 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F03_uplift_one.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F03_uplift_one.scd -- Album F "Trance Uplifter", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F03 : "UPLIFT ONE" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F03 0:00] intro supersaw...".postln; + ~bpm = 138; + ~kickFreq = 52; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \supersaw; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 82.wait; + + "[F03 1:22] build...".postln; + ~bpm = 138; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F03 2:44] climax...".postln; + ~bpm = 140; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F03 4:06] outro section...".postln; + ~bpm = 138; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[F03 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F03 5:30] === fin Uplift One ===".postln; +}).play; +"=== TRACK F03 : UPLIFT ONE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F04_progressive.scd b/sound_algo/tracks/F_trance_uplifter/F04_progressive.scd new file mode 100644 index 0000000..9a73594 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F04_progressive.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F04_progressive.scd -- Album F "Trance Uplifter", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F04 : "PROGRESSIVE" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F04 0:00] intro organLead...".postln; + ~bpm = 138; + ~kickFreq = 52; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \organLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 97.wait; + + "[F04 1:37] build...".postln; + ~bpm = 138; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleDorian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F04 3:14] climax...".postln; + ~bpm = 140; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F04 4:51] outro section...".postln; + ~bpm = 138; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleDorian); ~reload.value }; + 5.wait; + }; + + "[F04 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F04 6:30] === fin Progressive ===".postln; +}).play; +"=== TRACK F04 : PROGRESSIVE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F05_classic_trance.scd b/sound_algo/tracks/F_trance_uplifter/F05_classic_trance.scd new file mode 100644 index 0000000..3f09466 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F05_classic_trance.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F05_classic_trance.scd -- Album F "Trance Uplifter", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F05 : "CLASSIC TRANCE" 8 min --------------------- +// 0:00 intro -> 1:52 build -> 3:44 climax -> 5:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F05 0:00] intro supersaw...".postln; + ~bpm = 138; + ~kickFreq = 52; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \supersaw; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 112.wait; + + "[F05 1:52] build...".postln; + ~bpm = 138; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F05 3:44] climax...".postln; + ~bpm = 140; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F05 5:36] outro section...".postln; + ~bpm = 138; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[F05 7:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F05 7:30] === fin Classic Trance ===".postln; +}).play; +"=== TRACK F05 : CLASSIC TRANCE 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F06_epic_lead.scd b/sound_algo/tracks/F_trance_uplifter/F06_epic_lead.scd new file mode 100644 index 0000000..c396264 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F06_epic_lead.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F06_epic_lead.scd -- Album F "Trance Uplifter", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F06 : "EPIC LEAD" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F06 0:00] intro hardLead...".postln; + ~bpm = 138; + ~kickFreq = 55; ~kickPitchAmt = 3.2; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \hardLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[F06 1:22] build...".postln; + ~bpm = 138; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHarmonicMin); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F06 2:44] climax...".postln; + ~bpm = 140; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F06 4:06] outro section...".postln; + ~bpm = 138; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHarmonicMin); ~reload.value }; + 5.wait; + }; + + "[F06 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F06 5:30] === fin Epic Lead ===".postln; +}).play; +"=== TRACK F06 : EPIC LEAD 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F07_tech_trance.scd b/sound_algo/tracks/F_trance_uplifter/F07_tech_trance.scd new file mode 100644 index 0000000..a920817 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F07_tech_trance.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F07_tech_trance.scd -- Album F "Trance Uplifter", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F07 : "TECH TRANCE" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F07 0:00] intro saw3...".postln; + ~bpm = 140; + ~kickFreq = 55; ~kickPitchAmt = 3.2; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \saw3; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 67.wait; + + "[F07 1:07] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F07 2:14] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F07 3:21] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[F07 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F07 4:30] === fin Tech Trance ===".postln; +}).play; +"=== TRACK F07 : TECH TRANCE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F08_uplift_anthem.scd b/sound_algo/tracks/F_trance_uplifter/F08_uplift_anthem.scd new file mode 100644 index 0000000..f0880dc --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F08_uplift_anthem.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F08_uplift_anthem.scd -- Album F "Trance Uplifter", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F08 : "UPLIFT ANTHEM" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F08 0:00] intro organLead...".postln; + ~bpm = 140; + ~kickFreq = 55; ~kickPitchAmt = 3.2; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \organLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 82.wait; + + "[F08 1:22] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHarmonicMin); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F08 2:44] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F08 4:06] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHarmonicMin); ~reload.value }; + 5.wait; + }; + + "[F08 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F08 5:30] === fin Uplift Anthem ===".postln; +}).play; +"=== TRACK F08 : UPLIFT ANTHEM 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F09_psy_ride.scd b/sound_algo/tracks/F_trance_uplifter/F09_psy_ride.scd new file mode 100644 index 0000000..fb941ab --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F09_psy_ride.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F09_psy_ride.scd -- Album F "Trance Uplifter", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F09 : "PSY RIDE" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F09 0:00] intro fmLead...".postln; + ~bpm = 142; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.27; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \fmLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 97.wait; + + "[F09 1:37] build...".postln; + ~bpm = 142; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scalePhrygian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F09 3:14] climax...".postln; + ~bpm = 144; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F09 4:51] outro section...".postln; + ~bpm = 142; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scalePhrygian); ~reload.value }; + 5.wait; + }; + + "[F09 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F09 6:30] === fin Psy Ride ===".postln; +}).play; +"=== TRACK F09 : PSY RIDE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F10_breakdown_choir.scd b/sound_algo/tracks/F_trance_uplifter/F10_breakdown_choir.scd new file mode 100644 index 0000000..e487672 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F10_breakdown_choir.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F10_breakdown_choir.scd -- Album F "Trance Uplifter", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F10 : "BREAKDOWN CHOIR" 8 min --------------------- +// 0:00 intro -> 1:52 build -> 3:44 climax -> 5:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F10 0:00] intro choir...".postln; + ~bpm = 138; + ~kickFreq = 0; ~kickPitchAmt = 0; ~kickDecay = 0; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \choir; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 112.wait; + + "[F10 1:52] build...".postln; + ~bpm = 138; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F10 3:44] climax...".postln; + ~bpm = 140; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 22.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F10 5:36] outro section...".postln; + ~bpm = 138; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[F10 7:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F10 7:30] === fin Breakdown Choir ===".postln; +}).play; +"=== TRACK F10 : BREAKDOWN CHOIR 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F11_uplift_back.scd b/sound_algo/tracks/F_trance_uplifter/F11_uplift_back.scd new file mode 100644 index 0000000..6a138e7 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F11_uplift_back.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F11_uplift_back.scd -- Album F "Trance Uplifter", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F11 : "UPLIFT BACK" 7 min --------------------- +// 0:00 intro -> 1:37 build -> 3:14 climax -> 4:51 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F11 0:00] intro supersaw...".postln; + ~bpm = 138; + ~kickFreq = 52; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \supersaw; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 97.wait; + + "[F11 1:37] build...".postln; + ~bpm = 138; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F11 3:14] climax...".postln; + ~bpm = 140; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 19.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F11 4:51] outro section...".postln; + ~bpm = 138; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[F11 6:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F11 6:30] === fin Uplift Back ===".postln; +}).play; +"=== TRACK F11 : UPLIFT BACK 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F12_squareLead_drive.scd b/sound_algo/tracks/F_trance_uplifter/F12_squareLead_drive.scd new file mode 100644 index 0000000..315add3 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F12_squareLead_drive.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F12_squareLead_drive.scd -- Album F "Trance Uplifter", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F12 : "SQUARELEAD DRIVE" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F12 0:00] intro squareLead...".postln; + ~bpm = 140; + ~kickFreq = 55; ~kickPitchAmt = 3.2; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]; ~hatAmp = 0.10; + ~melodyInst = \squareLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 67.wait; + + "[F12 1:07] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleDorian); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F12 2:14] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F12 3:21] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleDorian); ~reload.value }; + 5.wait; + }; + + "[F12 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F12 4:30] === fin Squarelead Drive ===".postln; +}).play; +"=== TRACK F12 : SQUARELEAD DRIVE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F13_emo_finale.scd b/sound_algo/tracks/F_trance_uplifter/F13_emo_finale.scd new file mode 100644 index 0000000..0eee19e --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F13_emo_finale.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F13_emo_finale.scd -- Album F "Trance Uplifter", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F13 : "EMO FINALE" 4 min --------------------- +// 0:00 intro -> 0:52 build -> 1:44 climax -> 2:36 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F13 0:00] intro organLead...".postln; + ~bpm = 138; + ~kickFreq = 52; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \organLead; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 52.wait; + + "[F13 0:52] build...".postln; + ~bpm = 138; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F13 1:44] climax...".postln; + ~bpm = 140; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F13 2:36] outro section...".postln; + ~bpm = 138; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 4.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[F13 3:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F13 3:30] === fin Emo Finale ===".postln; +}).play; +"=== TRACK F13 : EMO FINALE 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F14_drop_anthem.scd b/sound_algo/tracks/F_trance_uplifter/F14_drop_anthem.scd new file mode 100644 index 0000000..a8eeac0 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F14_drop_anthem.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F14_drop_anthem.scd -- Album F "Trance Uplifter", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F14 : "DROP ANTHEM" 5 min --------------------- +// 0:00 intro -> 1:07 build -> 2:14 climax -> 3:21 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F14 0:00] intro supersaw...".postln; + ~bpm = 140; + ~kickFreq = 55; ~kickPitchAmt = 3.2; ~kickDecay = 0.28; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.55; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]; ~hatAmp = 0.10; + ~melodyInst = \supersaw; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,67,72,75,70,67,63,60,65,72,77,79,75,72,70,67,67,72,75,79,75,72,67,65,63,67,72,75,70,67,63,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 67.wait; + + "[F14 1:07] build...".postln; + ~bpm = 140; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHarmonicMin); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F14 2:14] climax...".postln; + ~bpm = 142; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 13.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F14 3:21] outro section...".postln; + ~bpm = 140; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 7.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleHarmonicMin); ~reload.value }; + 5.wait; + }; + + "[F14 4:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.55; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F14 4:30] === fin Drop Anthem ===".postln; +}).play; +"=== TRACK F14 : DROP ANTHEM 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/F15_outro_warmPad.scd b/sound_algo/tracks/F_trance_uplifter/F15_outro_warmPad.scd new file mode 100644 index 0000000..4f92fe2 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/F15_outro_warmPad.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// F15_outro_warmPad.scd -- Album F "Trance Uplifter", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK F15 : "OUTRO WARMPAD" 6 min --------------------- +// 0:00 intro -> 1:22 build -> 2:44 climax -> 4:06 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[F15 0:00] intro warmPad...".postln; + ~bpm = 138; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.4; + ~kickDrive = 1.5; ~kickClick = 0.2; ~kickAmp = 0.45; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; ~hatAmp = 0.10; + ~melodyInst = \warmPad; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,67,0,0,0,70,0,0,0,72,0,0,0,72,0,0,0,70,0,0,0,67,0,0,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidCutoff = 700; ~acidRq = 0.2; ~acidDrive = 2.0; ~acidAmp = 0.22; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 82.wait; + + "[F15 1:22] build...".postln; + ~bpm = 138; ~melodyCutoff = 2400; ~acidCutoff = 1000; ~acidDrive = 2.5; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); ~reload.value }; + if (0.15.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.10.coin) { ~melodyCutoff = rrand(1800, 3500); ~reload.value }; + 5.wait; + }; + + "[F15 2:44] climax...".postln; + ~bpm = 140; ~acidCutoff = 1400; ~acidDrive = 3.2; ~melodyAmp = 0.18; + ~hatAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 16.do { |k| + if (0.25.coin) { ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); ~reload.value }; + if (0.20.coin) { ~acidCutoff = rrand(900, 1800); ~reload.value }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.3); ~reload.value }; + if (0.07.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5,7].choose); ~reload.value }; + 5.wait; + }; + + "[F15 4:06] outro section...".postln; + ~bpm = 138; ~acidCutoff = 800; ~melodyAmp = 0.14; + TempoClock.default.tempo = ~bpm/60; + ~reload.value; + 10.do { |k| + if (0.15.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.15, ~scaleMinor); ~reload.value }; + 5.wait; + }; + + "[F15 5:00] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; + ~acidAmp = x * 0.22; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.14; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[F15 5:30] === fin Outro Warmpad ===".postln; +}).play; +"=== TRACK F15 : OUTRO WARMPAD 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/F_trance_uplifter/_album.scd b/sound_algo/tracks/F_trance_uplifter/_album.scd new file mode 100644 index 0000000..f0b4235 --- /dev/null +++ b/sound_algo/tracks/F_trance_uplifter/_album.scd @@ -0,0 +1,30 @@ +// ===================================================================== +// _album.scd -- Album F "Trance Uplifter" : 15 tracks +// ===================================================================== + +( // --- SETUP ALBUM F --- +~albums = ~albums ? (); +~albums[\F] = ( + title: "Trance Uplifter", + folder: "tracks/F_trance_uplifter/", + tracks: [ + \F01_warm_intro, + \F02_arp_awakening, + \F03_uplift_one, + \F04_progressive, + \F05_classic_trance, + \F06_epic_lead, + \F07_tech_trance, + \F08_uplift_anthem, + \F09_psy_ride, + \F10_breakdown_choir, + \F11_uplift_back, + \F12_squareLead_drive, + \F13_emo_finale, + \F14_drop_anthem, + \F15_outro_warmPad, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album F] setup OK".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G01_motor_city.scd b/sound_algo/tracks/G_detroit_soulful/G01_motor_city.scd new file mode 100644 index 0000000..a39338e --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G01_motor_city.scd @@ -0,0 +1,67 @@ +// ===================================================================== +// G01_motor_city.scd -- Album G "Detroit Soulful", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK G01 : "MOTOR CITY" 4 minutes ------------------------------ +// 0:00 intro pad -> 0:45 kick 4/4 -> 1:30 organ stabs -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G01 0:00] intro warmPad...".postln; + ~bpm = 124; + ~melodyInst = \warmPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 1800; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0, 63,0,0,0, 67,0,0,0, 70,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 63,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 45.wait; + + "[G01 0:45] kick 4/4 + clap backbeat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.35; ~kickClick = 0.12; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~reload.value; + 45.wait; + + "[G01 1:30] organ stabs Detroit + variations...".postln; + ~melodyInst = \organLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.18; ~melodyCutoff = 4500; + ~melodyAmp = 0.18; + ~melodyNotes = [63,0,0,0, 67,0,70,0, 65,0,0,0, 70,0,72,0, + 63,0,0,0, 67,0,70,0, 60,0,67,0, 63,0,0,0]; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.4, + [~scaleMinor, ~scaleDorian, ~scaleMinorPent].choose); + ~reload.value; + }; + if (0.10.coin) { ~melodyCutoff = rrand(3500, 5500); ~reload.value }; + 5.wait; + }; + + "[G01 3:30] outro -- pad fade...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.5; ~hatAmp = x * 0.15; ~clapAmp = x * 0.32; + ~melodyAmp = x * 0.18; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G01 4:00] === fin MOTOR CITY ===".postln; +}).play; +"=== TRACK G01 : MOTOR CITY 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G02_rhodes_dreams.scd b/sound_algo/tracks/G_detroit_soulful/G02_rhodes_dreams.scd new file mode 100644 index 0000000..76c8aa2 --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G02_rhodes_dreams.scd @@ -0,0 +1,64 @@ +// ===================================================================== +// G02_rhodes_dreams.scd -- Album G "Detroit Soulful", track 2/15 +// ===================================================================== + +// --- TRACK G02 : "RHODES DREAMS" 5 minutes --------------------------- +// 0:00 rhodes solo -> 1:00 kick groove -> 2:30 lead -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G02 0:00] rhodes intro...".postln; + ~bpm = 122; + ~melodyInst = \rhodes; ~melodyAttack = 0.01; ~melodyRelease = 0.8; + ~melodyCutoff = 3500; ~melodyAmp = 0.20; + ~melodyNotes = [60,0,67,0, 70,0,72,0, 67,0,70,0, 65,0,63,0, + 60,0,67,0, 72,0,70,0, 67,0,63,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 60.wait; + + "[G02 1:00] kick deep + hats subtils...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.40; ~kickClick = 0.08; + ~hatSteps = [0,1,0,1, 0,1,0,1, 0,1,0,1, 0,1,0,1]; ~hatAmp = 0.10; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.25; + ~reload.value; + 90.wait; + + "[G02 2:30] fmLead jazzy par-dessus...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.45; ~melodyCutoff = 4200; + ~melodyAmp = 0.16; + ~melodyNotes = ~genMelody.(0.55, ~scaleDorian); + ~reload.value; + 24.do { |k| + if (0.25.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleDorian); + ~reload.value; + }; + if (0.15.coin) { ~melodyCutoff = rrand(3500, 5000); ~reload.value }; + 5.wait; + }; + + "[G02 4:30] outro -- rhodes fade...".postln; + ~melodyInst = \rhodes; + ~melodyAttack = 0.02; ~melodyRelease = 1.2; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.45; ~hatAmp = x * 0.10; ~clapAmp = x * 0.25; + ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G02 5:00] === fin RHODES DREAMS ===".postln; +}).play; +"=== TRACK G02 : RHODES DREAMS 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G03_strings_of_life.scd b/sound_algo/tracks/G_detroit_soulful/G03_strings_of_life.scd new file mode 100644 index 0000000..72a3d7e --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G03_strings_of_life.scd @@ -0,0 +1,74 @@ +// ===================================================================== +// G03_strings_of_life.scd -- Album G, track 3/15 +// ===================================================================== + +// --- TRACK G03 : "STRINGS OF LIFE" 6 minutes ------------------------- +// 0:00 strings -> 1:00 kick -> 2:30 piano stabs -> 4:30 climax -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G03 0:00] strings intro -- hommage Rhythim...".postln; + ~bpm = 124; + ~melodyInst = \strings; ~melodyAttack = 0.3; ~melodyRelease = 1.2; + ~melodyCutoff = 3500; ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 74,0,0,0, 72,0,0,0, 67,0,0,0, 65,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 60.wait; + + "[G03 1:00] kick 4/4 + perc...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; + ~kickFreq = 52; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.15; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.14; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~reload.value; + 90.wait; + + "[G03 2:30] stab piano variations...".postln; + ~melodyInst = \stab; + ~melodyAttack = 0.001; ~melodyRelease = 0.08; ~melodyCutoff = 4000; + ~melodyDrive = 2.5; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,67,0, 72,0,67,0, 65,0,72,0, 67,0,65,0, + 63,0,67,0, 70,0,67,0, 60,0,65,0, 63,0,60,0]; + ~reload.value; + 24.do { |k| + if (0.22.coin) { + ~melodyNotes = ~genMelody.(0.5, + [~scaleMinorPent, ~scaleMinor, ~scaleDorian].choose); + ~reload.value; + }; + if (0.12.coin) { ~melodyDrive = rrand(2.0, 3.5); ~reload.value }; + 5.wait; + }; + + "[G03 4:30] climax -- supersaw + strings...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; ~melodyCutoff = 4500; + ~melodyAmp = 0.20; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~reload.value; + 60.wait; + + "[G03 5:30] outro -- strings fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \strings; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.50; ~hatAmp = x * 0.14; ~clapAmp = x * 0.32; + ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G03 6:00] === fin STRINGS OF LIFE ===".postln; +}).play; +"=== TRACK G03 : STRINGS OF LIFE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G04_jazz_machine.scd b/sound_algo/tracks/G_detroit_soulful/G04_jazz_machine.scd new file mode 100644 index 0000000..bd09bf7 --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G04_jazz_machine.scd @@ -0,0 +1,83 @@ +// ===================================================================== +// G04_jazz_machine.scd -- Album G, track 4/15 +// ===================================================================== + +// --- TRACK G04 : "JAZZ MACHINE" 7 minutes ---------------------------- +// 0:00 rhodes -> 1:00 swing -> 2:30 stabs -> 4:30 fmLead -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G04 0:00] rhodes seul...".postln; + ~bpm = 126; + ~melodyInst = \rhodes; ~melodyAttack = 0.01; ~melodyRelease = 0.7; + ~melodyCutoff = 3500; ~melodyAmp = 0.22; + ~melodyNotes = ~genMelody.(0.55, ~scaleDorian); + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 60.wait; + + "[G04 1:00] groove swing -- kick + hats jazzy...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.48; + ~kickFreq = 50; ~kickPitchAmt = 2.7; ~kickDecay = 0.30; ~kickClick = 0.10; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,0,1,1, 0,1,0,1]; ~hatAmp = 0.13; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.28; + ~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,0,0,0]; + ~percAmp = 0.18; + ~reload.value; + 90.wait; + + "[G04 2:30] stabs detroit jazzy...".postln; + ~melodyInst = \stab; + ~melodyAttack = 0.001; ~melodyRelease = 0.07; ~melodyCutoff = 3500; + ~melodyDrive = 2.4; ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.45, ~scaleDorian); + ~reload.value; + 24.do { |k| + if (0.25.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.3, ~scaleDorian); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5,-3,3,5].choose); + ~reload.value; + }; + 5.wait; + }; + + "[G04 4:30] fmLead solo evolutif...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4500; + ~melodyAmp = 0.18; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.2, 2500, \sin, 4500) }; + ~reload.value; + 24.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.6, + [~scaleDorian, ~scaleMinorPent, ~scaleBlues].choose); + ~reload.value; + }; + 5.wait; + }; + + "[G04 6:30] outro warmPad...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.48; ~hatAmp = x * 0.13; ~clapAmp = x * 0.28; + ~percAmp = x * 0.18; ~melodyAmp = x * 0.18; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G04 7:00] === fin JAZZ MACHINE ===".postln; +}).play; +"=== TRACK G04 : JAZZ MACHINE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G05_warehouse_groove.scd b/sound_algo/tracks/G_detroit_soulful/G05_warehouse_groove.scd new file mode 100644 index 0000000..f6183cc --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G05_warehouse_groove.scd @@ -0,0 +1,80 @@ +// ===================================================================== +// G05_warehouse_groove.scd -- Album G, track 5/15 +// ===================================================================== + +// --- TRACK G05 : "WAREHOUSE GROOVE" 8 minutes ------------------------ +// 0:00 pad -> 1:00 kick -> 2:30 organ -> 4:30 supersaw -> 6:30 stab -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G05 0:00] pad chaleureux...".postln; + ~bpm = 125; + ~melodyInst = \warmPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 1800; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 70,0,0,0, 75,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 60.wait; + + "[G05 1:00] kick warehouse + clap...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 52; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.18; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~reload.value; + 90.wait; + + "[G05 2:30] organ stab...".postln; + ~melodyInst = \organLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.18; ~melodyCutoff = 4500; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[G05 4:30] supersaw layer + vcf moog...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; ~melodyCutoff = 4500; + ~melodyAmp = 0.18; + ~vcfOn !? { ~vcfOn.(\moog, 2200, 0.4) }; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.25, 2500, \sin, 4500) }; + ~reload.value; + 120.wait; + + "[G05 6:30] stab final + drive...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \stab; + ~melodyAttack = 0.001; ~melodyRelease = 0.08; ~melodyDrive = 3.0; + ~melodyAmp = 0.20; + ~reload.value; + 60.wait; + + "[G05 7:30] outro...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.16; ~clapAmp = x * 0.35; + ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G05 8:00] === fin WAREHOUSE GROOVE ===".postln; +}).play; +"=== TRACK G05 : WAREHOUSE GROOVE 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G06_belleville_nights.scd b/sound_algo/tracks/G_detroit_soulful/G06_belleville_nights.scd new file mode 100644 index 0000000..2b30f55 --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G06_belleville_nights.scd @@ -0,0 +1,63 @@ +// ===================================================================== +// G06_belleville_nights.scd -- Album G, track 6/15 +// ===================================================================== + +// --- TRACK G06 : "BELLEVILLE NIGHTS" 6 minutes ----------------------- +// 0:00 vocalPad -> 1:00 groove -> 2:30 rhodes -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G06 0:00] vocalPad nocturne...".postln; + ~bpm = 123; + ~melodyInst = \vocalPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 2500; ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 63,0,0,0, 67,0,0,0, 70,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 63,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 60.wait; + + "[G06 1:00] groove douce...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.40; ~kickClick = 0.08; + ~hatSteps = [0,1,1,0, 0,1,1,0, 0,1,1,0, 0,1,1,0]; ~hatAmp = 0.12; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.28; + ~reload.value; + 90.wait; + + "[G06 2:30] rhodes melodique...".postln; + ~melodyInst = \rhodes; + ~melodyAttack = 0.01; ~melodyRelease = 0.7; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~reload.value; + 24.do { |k| + if (0.22.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinorPent); + ~reload.value; + }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[G06 4:30] outro -- vocalPad fade...".postln; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.45; ~hatAmp = x * 0.12; ~clapAmp = x * 0.28; + ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G06 5:00] === fin BELLEVILLE NIGHTS ===".postln; +}).play; +"=== TRACK G06 : BELLEVILLE NIGHTS 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G07_soul_stomp.scd b/sound_algo/tracks/G_detroit_soulful/G07_soul_stomp.scd new file mode 100644 index 0000000..81e252b --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G07_soul_stomp.scd @@ -0,0 +1,68 @@ +// ===================================================================== +// G07_soul_stomp.scd -- Album G, track 7/15 +// ===================================================================== + +// --- TRACK G07 : "SOUL STOMP" 5 minutes ------------------------------ +// 0:00 kick punch -> 1:00 organ stomp -> 3:00 lead -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G07 0:00] kick punchy direct...".postln; + ~bpm = 126; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.28; ~kickClick = 0.25; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~snareSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~melodyInst = \warmPad; ~melodyAmp = 0.14; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 70,0,0,0, 67,0,0,0, + 63,0,0,0, 70,0,0,0, 65,0,0,0, 63,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 60.wait; + + "[G07 1:00] organ stomp Detroit...".postln; + ~melodyInst = \organLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.15; ~melodyCutoff = 4800; + ~melodyAmp = 0.20; + ~melodyNotes = [63,0,67,0, 70,0,72,0, 70,0,67,0, 63,0,60,0, + 65,0,70,0, 72,0,75,0, 72,0,70,0, 65,0,63,0]; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.10.coin) { ~melodyCutoff = rrand(3500, 5500); ~reload.value }; + 5.wait; + }; + + "[G07 3:00] hardLead climax...".postln; + ~melodyInst = \hardLead; + ~melodyAttack = 0.003; ~melodyRelease = 0.25; ~melodyCutoff = 5000; + ~melodyAmp = 0.18; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.45) }; + ~reload.value; + 90.wait; + + "[G07 4:30] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.16; ~clapAmp = x * 0.35; + ~melodyAmp = x * 0.18; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G07 5:00] === fin SOUL STOMP ===".postln; +}).play; +"=== TRACK G07 : SOUL STOMP 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G08_organ_chapel.scd b/sound_algo/tracks/G_detroit_soulful/G08_organ_chapel.scd new file mode 100644 index 0000000..abdcf62 --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G08_organ_chapel.scd @@ -0,0 +1,69 @@ +// ===================================================================== +// G08_organ_chapel.scd -- Album G, track 8/15 +// ===================================================================== + +// --- TRACK G08 : "ORGAN CHAPEL" 6 minutes ---------------------------- +// 0:00 organ choeur -> 1:00 kick -> 2:30 stab -> 4:30 climax -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G08 0:00] organ chapel intro...".postln; + ~bpm = 122; + ~melodyInst = \organLead; ~melodyAttack = 0.05; ~melodyRelease = 0.6; + ~melodyCutoff = 3500; ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 70,0,0,0, 67,0,0,0, 65,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 60.wait; + + "[G08 1:00] kick liturgique...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; + ~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.40; ~kickClick = 0.10; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.28; + ~reload.value; + 90.wait; + + "[G08 2:30] stab + variations modales...".postln; + ~melodyInst = \stab; + ~melodyAttack = 0.001; ~melodyRelease = 0.08; ~melodyDrive = 2.5; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~reload.value; + 24.do { |k| + if (0.22.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleHarmonicMin); + ~reload.value; + }; + 5.wait; + }; + + "[G08 4:30] climax -- choir + supersaw...".postln; + ~melodyInst = \choir; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2800; + ~melodyAmp = 0.22; + ~reload.value; + 60.wait; + + "[G08 5:30] outro -- organ fade...".postln; + ~melodyInst = \organLead; + ~melodyAttack = 0.05; ~melodyRelease = 1.2; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.50; ~hatAmp = x * 0.13; ~clapAmp = x * 0.28; + ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G08 6:00] === fin ORGAN CHAPEL ===".postln; +}).play; +"=== TRACK G08 : ORGAN CHAPEL 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G09_underground_resistance.scd b/sound_algo/tracks/G_detroit_soulful/G09_underground_resistance.scd new file mode 100644 index 0000000..ec37a2f --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G09_underground_resistance.scd @@ -0,0 +1,77 @@ +// ===================================================================== +// G09_underground_resistance.scd -- Album G, track 9/15 +// ===================================================================== + +// --- TRACK G09 : "UNDERGROUND RESISTANCE" 7 minutes ------------------ +// 0:00 acid bass -> 1:00 kick hard -> 2:30 stab militant -> 4:30 lead -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G09 0:00] acid bass UR style...".postln; + ~bpm = 128; + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 700; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.30; + ~melodyInst = \warmPad; ~melodyAmp = 0.10; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[G09 1:00] kick hard Detroit...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 58; ~kickPitchAmt = 4.0; ~kickDecay = 0.25; ~kickClick = 0.30; + ~kickDrive = 2.0; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~reload.value; + 90.wait; + + "[G09 2:30] stab militant...".postln; + ~melodyInst = \stab; + ~melodyAttack = 0.001; ~melodyRelease = 0.06; ~melodyDrive = 3.5; + ~melodyCutoff = 3500; ~melodyAmp = 0.20; + ~melodyNotes = [60,0,67,0, 63,0,60,0, 65,0,72,0, 67,0,65,0, + 60,0,67,0, 63,0,60,0, 65,0,70,0, 67,0,65,0]; + ~reload.value; + 24.do { |k| + if (0.25.coin) { ~acidCutoff = rrand(700, 1500); ~reload.value }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.3, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[G09 4:30] supersaw lead militant...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; ~melodyCutoff = 4500; + ~melodyAmp = 0.20; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~lfoTo !? { ~lfoTo.(\acidCutoff, 0.15, 700, \saw, 1500) }; + ~reload.value; + 120.wait; + + "[G09 6:30] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~lfoStopVar !? { ~lfoStopVar.(\acidCutoff) }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.18; ~clapAmp = x * 0.35; + ~acidAmp = x * 0.30; ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G09 7:00] === fin UNDERGROUND RESISTANCE ===".postln; +}).play; +"=== TRACK G09 : UNDERGROUND RESISTANCE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G10_deep_funk.scd b/sound_algo/tracks/G_detroit_soulful/G10_deep_funk.scd new file mode 100644 index 0000000..2d0a181 --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G10_deep_funk.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// G10_deep_funk.scd -- Album G, track 10/15 +// ===================================================================== + +// --- TRACK G10 : "DEEP FUNK" 8 minutes ------------------------------- +// 0:00 rhodes -> 1:00 groove -> 2:30 fmBass funk -> 4:30 lead -> 6:30 stab -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G10 0:00] rhodes deep...".postln; + ~bpm = 124; + ~melodyInst = \rhodes; ~melodyAttack = 0.01; ~melodyRelease = 0.7; + ~melodyCutoff = 3500; ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.55, ~scaleDorian); + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 60.wait; + + "[G10 1:00] groove funk...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,1, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.50; + ~kickFreq = 50; ~kickPitchAmt = 2.8; ~kickDecay = 0.30; ~kickClick = 0.15; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~reload.value; + 90.wait; + + "[G10 2:30] fmBass funk groove...".postln; + ~melodyInst = \fmBass; + ~melodyAttack = 0.005; ~melodyRelease = 0.2; ~melodyCutoff = 2500; + ~melodyAmp = 0.22; + ~melodyNotes = [36,0,36,38, 36,0,38,36, 36,0,41,38, 36,0,36,38, + 36,0,36,38, 36,0,38,41, 36,0,38,36, 36,0,36,0]; + ~reload.value; + 24.do { |k| + if (0.25.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleDorian); + ~reload.value; + }; + 5.wait; + }; + + "[G10 4:30] supersaw lead...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; ~melodyCutoff = 4500; + ~melodyAmp = 0.18; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinorPent); + ~reload.value; + 120.wait; + + "[G10 6:30] stab funk...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \stab; + ~melodyAttack = 0.001; ~melodyRelease = 0.06; ~melodyDrive = 2.8; + ~melodyAmp = 0.18; + ~reload.value; + 60.wait; + + "[G10 7:30] outro...".postln; + ~melodyInst = \rhodes; + ~melodyAttack = 0.02; ~melodyRelease = 1.2; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.50; ~hatAmp = x * 0.10; ~clapAmp = x * 0.32; + ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G10 8:00] === fin DEEP FUNK ===".postln; +}).play; +"=== TRACK G10 : DEEP FUNK 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G11_galactic_soul.scd b/sound_algo/tracks/G_detroit_soulful/G11_galactic_soul.scd new file mode 100644 index 0000000..58fcfbc --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G11_galactic_soul.scd @@ -0,0 +1,75 @@ +// ===================================================================== +// G11_galactic_soul.scd -- Album G, track 11/15 +// ===================================================================== + +// --- TRACK G11 : "GALACTIC SOUL" 7 minutes --------------------------- +// 0:00 vocalPad -> 1:00 kick spatial -> 2:30 fmLead -> 4:30 supersaw -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G11 0:00] vocalPad cosmique...".postln; + ~bpm = 124; + ~melodyInst = \vocalPad; ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~melodyCutoff = 2500; ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 72,0,0,0, 75,0,0,0, + 72,0,0,0, 67,0,0,0, 60,0,0,0, 65,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 60.wait; + + "[G11 1:00] kick spatial...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; + ~kickFreq = 50; ~kickPitchAmt = 3.0; ~kickDecay = 0.35; ~kickClick = 0.12; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.14; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; + ~reload.value; + 90.wait; + + "[G11 2:30] fmLead galactic...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4500; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~reload.value; + 24.do { |k| + if (0.22.coin) { + ~melodyNotes = ~genMelody.(0.55, + [~scaleMinorPent, ~scaleDorian, ~scaleHigh].choose); + ~reload.value; + }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.25); ~reload.value }; + 5.wait; + }; + + "[G11 4:30] supersaw cosmic...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4500; + ~melodyAmp = 0.20; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.15, 2500, \sin, 4500) }; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~reload.value; + 120.wait; + + "[G11 6:30] outro -- vocalPad...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.50; ~hatAmp = x * 0.14; ~clapAmp = x * 0.30; + ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G11 7:00] === fin GALACTIC SOUL ===".postln; +}).play; +"=== TRACK G11 : GALACTIC SOUL 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G12_midnight_drive.scd b/sound_algo/tracks/G_detroit_soulful/G12_midnight_drive.scd new file mode 100644 index 0000000..5b5bf49 --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G12_midnight_drive.scd @@ -0,0 +1,62 @@ +// ===================================================================== +// G12_midnight_drive.scd -- Album G, track 12/15 +// ===================================================================== + +// --- TRACK G12 : "MIDNIGHT DRIVE" 5 minutes -------------------------- +// 0:00 pad -> 0:45 groove -> 2:00 stab -> 4:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G12 0:00] pad nocturne...".postln; + ~bpm = 125; + ~melodyInst = \warmPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 1800; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 70,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 65,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 45.wait; + + "[G12 0:45] groove minimal...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.48; + ~kickFreq = 48; ~kickPitchAmt = 2.8; ~kickDecay = 0.35; ~kickClick = 0.10; + ~hatSteps = [0,0,1,0, 0,1,1,0, 0,0,1,0, 0,1,1,0]; ~hatAmp = 0.13; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.28; + ~reload.value; + 75.wait; + + "[G12 2:00] stab + variations...".postln; + ~melodyInst = \stab; + ~melodyAttack = 0.001; ~melodyRelease = 0.07; ~melodyDrive = 2.5; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[G12 4:00] outro...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.48; ~hatAmp = x * 0.13; ~clapAmp = x * 0.28; + ~melodyAmp = x * 0.18; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G12 4:30] === fin MIDNIGHT DRIVE ===".postln; +}).play; +"=== TRACK G12 : MIDNIGHT DRIVE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G13_paradise_garage.scd b/sound_algo/tracks/G_detroit_soulful/G13_paradise_garage.scd new file mode 100644 index 0000000..0a27a9a --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G13_paradise_garage.scd @@ -0,0 +1,59 @@ +// ===================================================================== +// G13_paradise_garage.scd -- Album G, track 13/15 +// ===================================================================== + +// --- TRACK G13 : "PARADISE GARAGE" 4 minutes ------------------------- +// 0:00 organ + kick -> 1:30 lead -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G13 0:00] organ + kick paradise...".postln; + ~bpm = 125; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; + ~kickFreq = 50; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.15; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~snareSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~melodyInst = \organLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.18; ~melodyCutoff = 4500; + ~melodyAmp = 0.20; + ~melodyNotes = [63,0,67,0, 70,0,72,0, 70,0,67,0, 63,0,60,0, + 65,0,67,0, 72,0,75,0, 72,0,70,0, 67,0,65,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 90.wait; + + "[G13 1:30] hardLead disco...".postln; + ~melodyInst = \hardLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 5000; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[G13 3:30] outro...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.50; ~hatAmp = x * 0.16; ~clapAmp = x * 0.32; + ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G13 4:00] === fin PARADISE GARAGE ===".postln; +}).play; +"=== TRACK G13 : PARADISE GARAGE 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G14_choir_breakdown.scd b/sound_algo/tracks/G_detroit_soulful/G14_choir_breakdown.scd new file mode 100644 index 0000000..94fe87e --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G14_choir_breakdown.scd @@ -0,0 +1,63 @@ +// ===================================================================== +// G14_choir_breakdown.scd -- Album G, track 14/15 +// ===================================================================== + +// --- TRACK G14 : "CHOIR BREAKDOWN" 5 minutes ------------------------- +// 0:00 choir intro -> 1:00 break drums -> 2:30 climax -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G14 0:00] choir intro...".postln; + ~bpm = 123; + ~melodyInst = \choir; ~melodyAttack = 0.4; ~melodyRelease = 1.5; + ~melodyCutoff = 2800; ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 70,0,0,0, 67,0,0,0, 65,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 60.wait; + + "[G14 1:00] drums entrent doucement...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.48; + ~kickFreq = 50; ~kickPitchAmt = 2.5; ~kickDecay = 0.35; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.28; + ~reload.value; + 90.wait; + + "[G14 2:30] climax -- supersaw + choir layered...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; ~melodyCutoff = 4500; + ~melodyAmp = 0.20; + ~vcfOn !? { ~vcfOn.(\moog, 2200, 0.4) }; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[G14 4:30] outro -- choir fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.48; ~hatAmp = x * 0.13; ~clapAmp = x * 0.28; + ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G14 5:00] === fin CHOIR BREAKDOWN ===".postln; +}).play; +"=== TRACK G14 : CHOIR BREAKDOWN 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/G15_detroit_finale.scd b/sound_algo/tracks/G_detroit_soulful/G15_detroit_finale.scd new file mode 100644 index 0000000..d995285 --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/G15_detroit_finale.scd @@ -0,0 +1,74 @@ +// ===================================================================== +// G15_detroit_finale.scd -- Album G, track 15/15 +// ===================================================================== + +// --- TRACK G15 : "DETROIT FINALE" 6 minutes -------------------------- +// 0:00 pad -> 0:45 kick -> 1:30 organ + stab -> 3:30 climax all -> 5:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[G15 0:00] warmPad final...".postln; + ~bpm = 126; + ~melodyInst = \warmPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 1800; ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 70,0,0,0, 67,0,0,0, 65,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 45.wait; + + "[G15 0:45] kick 4/4 final...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 52; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.15; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~reload.value; + 45.wait; + + "[G15 1:30] organ + stab apotheose...".postln; + ~melodyInst = \organLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.18; ~melodyCutoff = 4800; + ~melodyAmp = 0.20; + ~melodyNotes = [63,0,67,0, 70,0,72,0, 70,0,67,0, 63,0,60,0, + 65,0,67,0, 72,0,75,0, 72,0,70,0, 67,0,65,0]; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[G15 3:30] climax -- supersaw + vcf + lfo...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.22; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.2, 2500, \sin, 5000) }; + ~reload.value; + 90.wait; + + "[G15 5:00] outro grand fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 60.do { |k| + var x = 1 - ((k + 1) / 60); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.16; ~clapAmp = x * 0.35; + ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[G15 6:00] === fin DETROIT FINALE ===".postln; +}).play; +"=== TRACK G15 : DETROIT FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/G_detroit_soulful/_album.scd b/sound_algo/tracks/G_detroit_soulful/_album.scd new file mode 100644 index 0000000..ad767e8 --- /dev/null +++ b/sound_algo/tracks/G_detroit_soulful/_album.scd @@ -0,0 +1,60 @@ +// ===================================================================== +// _album.scd -- Album G "Detroit Soulful" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM G +// 3. ~playTrack.(\G, n) pour une track / ~playAlbum.(\G) pour l'album +// ~stopAlbum.() pour interrompre. +// ===================================================================== + +( // --- SETUP ALBUM G --- +~albums = ~albums ? (); +~albums[\G] = ( + title: "Detroit Soulful", + folder: "tracks/G_detroit_soulful/", + tracks: [ + \G01_motor_city, + \G02_rhodes_dreams, + \G03_strings_of_life, + \G04_jazz_machine, + \G05_warehouse_groove, + \G06_belleville_nights, + \G07_soul_stomp, + \G08_organ_chapel, + \G09_underground_resistance, + \G10_deep_funk, + \G11_galactic_soul, + \G12_midnight_drive, + \G13_paradise_garage, + \G14_choir_breakdown, + \G15_detroit_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album G] setup OK -- ~playTrack.(\\G, n) | ~playAlbum.(\\G) | ~stopAlbum.()".postln; +) + + +// ===================================================================== +// RACCOURCIS LIVE -- Cmd+Entree sur la ligne souhaitee +// ===================================================================== + +( ~playTrack.(\G, 1); ) // G01 motor_city (4 min) +( ~playTrack.(\G, 2); ) // G02 rhodes_dreams (5 min) +( ~playTrack.(\G, 3); ) // G03 strings_of_life (6 min) +( ~playTrack.(\G, 4); ) // G04 jazz_machine (7 min) +( ~playTrack.(\G, 5); ) // G05 warehouse_groove (8 min) +( ~playTrack.(\G, 6); ) // G06 belleville_nights (6 min) +( ~playTrack.(\G, 7); ) // G07 soul_stomp (5 min) +( ~playTrack.(\G, 8); ) // G08 organ_chapel (6 min) +( ~playTrack.(\G, 9); ) // G09 underground_resistance(7 min) +( ~playTrack.(\G, 10); ) // G10 deep_funk (8 min) +( ~playTrack.(\G, 11); ) // G11 galactic_soul (7 min) +( ~playTrack.(\G, 12); ) // G12 midnight_drive (5 min) +( ~playTrack.(\G, 13); ) // G13 paradise_garage (4 min) +( ~playTrack.(\G, 14); ) // G14 choir_breakdown (5 min) +( ~playTrack.(\G, 15); ) // G15 detroit_finale (6 min) + +( ~playAlbum.(\G); ) // album entier 01 -> 15 +( ~stopAlbum.(); ) // arret immediat diff --git a/sound_algo/tracks/H_acid_trance/H01_first_state.scd b/sound_algo/tracks/H_acid_trance/H01_first_state.scd new file mode 100644 index 0000000..3a0a965 --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H01_first_state.scd @@ -0,0 +1,71 @@ +// ===================================================================== +// H01_first_state.scd -- Album H "Acid Trance", track 1/15 +// ===================================================================== + +// --- TRACK H01 : "FIRST STATE" 4 minutes ----------------------------- +// 0:00 pad -> 0:45 kick + acid -> 1:30 lead -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H01 0:00] pad intro trance...".postln; + ~bpm = 138; + ~melodyInst = \warmPad; ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0, + 63,0,0,0,0,0,0,0, 70,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 600; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 45.wait; + + "[H01 0:45] kick + acid entre...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.20; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; + ~acidAmp = 0.30; + ~reload.value; + 45.wait; + + "[H01 1:30] squareLead arpege...".postln; + ~melodyInst = \squareLead; + ~melodyAttack = 0.003; ~melodyRelease = 0.15; ~melodyCutoff = 5500; + ~melodyAmp = 0.18; + ~melodyNotes = [60,67,72,75, 70,67,63,67, 65,72,75,77, 72,70,67,63, + 63,70,75,79, 75,72,70,67, 60,65,70,75, 67,63,60,67]; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~acidCutoff = rrand(800, 1500); ~reload.value }; + if (0.15.coin) { + ~melodyNotes = ~genMelody.(0.6, + [~scaleMinor, ~scaleHarmonicMin].choose); + ~reload.value; + }; + 5.wait; + }; + + "[H01 3:30] outro fade...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.16; ~clapAmp = x * 0.30; + ~acidAmp = x * 0.30; ~melodyAmp = x * 0.18; + ~acidCutoff = 200 + (x * 1300); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H01 4:00] === fin FIRST STATE ===".postln; +}).play; +"=== TRACK H01 : FIRST STATE 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H02_goa_dream.scd b/sound_algo/tracks/H_acid_trance/H02_goa_dream.scd new file mode 100644 index 0000000..28488c7 --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H02_goa_dream.scd @@ -0,0 +1,68 @@ +// ===================================================================== +// H02_goa_dream.scd -- Album H, track 2/15 +// ===================================================================== + +// --- TRACK H02 : "GOA DREAM" 5 minutes ------------------------------- +// 0:00 drone -> 1:00 kick goa -> 2:30 acid + lead -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H02 0:00] drone goa intro...".postln; + ~bpm = 140; + ~melodyInst = \drone; ~melodyAttack = 1.0; ~melodyRelease = 2.5; + ~melodyCutoff = 1500; ~melodyAmp = 0.18; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 55,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + ~acidNotes = [36,36,48,36, 41,36,43,41, 36,43,36,41, 48,36,36,43]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 700; ~acidRq = 0.15; ~acidDrive = 2.5; ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[H02 1:00] kick goa direct...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.25; ~kickClick = 0.25; + ~hatSteps = [0,1,1,1, 0,1,1,1, 0,1,1,1, 0,1,1,1]; ~hatAmp = 0.18; + ~acidAmp = 0.32; + ~reload.value; + 90.wait; + + "[H02 2:30] acid evolve + squareLead...".postln; + ~melodyInst = \squareLead; + ~melodyAttack = 0.003; ~melodyRelease = 0.12; ~melodyCutoff = 5500; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.65, ~scaleHijaz); + ~reload.value; + 24.do { |k| + if (0.25.coin) { ~acidCutoff = rrand(700, 1800); ~reload.value }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.3, ~scaleHijaz); + ~reload.value; + }; + 5.wait; + }; + + "[H02 4:30] outro...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.18; + ~acidAmp = x * 0.32; ~melodyAmp = x * 0.18; + ~acidCutoff = 200 + (x * 1500); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H02 5:00] === fin GOA DREAM ===".postln; +}).play; +"=== TRACK H02 : GOA DREAM 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H03_303_ascension.scd b/sound_algo/tracks/H_acid_trance/H03_303_ascension.scd new file mode 100644 index 0000000..79ca429 --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H03_303_ascension.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// H03_303_ascension.scd -- Album H, track 3/15 +// ===================================================================== + +// --- TRACK H03 : "303 ASCENSION" 6 minutes --------------------------- +// 0:00 pad -> 1:00 kick -> 2:00 build acid -> 3:00 drop -> 4:30 climax -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H03 0:00] pad...".postln; + ~bpm = 142; + ~melodyInst = \warmPad; ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0,0,0,0,0, 63,0,0,0,0,0,0,0, + 67,0,0,0,0,0,0,0, 70,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 500; ~acidRq = 0.20; ~acidDrive = 2.5; ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 60.wait; + + "[H03 1:00] kick 4/4 + acid doux...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.20; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; + ~acidAmp = 0.25; + ~reload.value; + 60.wait; + + "[H03 2:00] BUILD acid ascension...".postln; + Synth(\riser, [\dur, 32, \startCutoff, 500, \endCutoff, 12000, \amp, 0.3]); + 32.do { |k| + var x = (k + 1) / 32; + ~acidCutoff = 500 + (x * 2000); ~acidRq = 0.20 - (x * 0.12); + ~hatAmp = 0.15 + (x * 0.06); + ~reload.value; 1.wait; + }; + + "[H03 3:00] === DROP ===".postln; + Synth(\impact, [\freq, 40, \decay, 2.5, \amp, 0.6]); + ~melodyInst = \squareLead; + ~melodyAttack = 0.002; ~melodyRelease = 0.15; ~melodyCutoff = 6000; + ~melodyAmp = 0.18; + ~melodyNotes = [60,67,72,75, 70,67,63,67, 63,70,75,77, 72,70,63,67, + 65,72,77,79, 75,72,65,67, 60,67,72,75, 70,67,63,60]; + ~acidAmp = 0.32; + ~reload.value; + 90.wait; + + "[H03 4:30] climax hardLead + vcf moog...".postln; + ~melodyInst = \hardLead; + ~melodyAttack = 0.002; ~melodyRelease = 0.25; ~melodyCutoff = 6000; + ~melodyAmp = 0.20; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~reload.value; + 60.wait; + + "[H03 5:30] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.18; ~clapAmp = x * 0.30; + ~acidAmp = x * 0.32; ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H03 6:00] === fin 303 ASCENSION ===".postln; +}).play; +"=== TRACK H03 : 303 ASCENSION 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H04_psy_acid.scd b/sound_algo/tracks/H_acid_trance/H04_psy_acid.scd new file mode 100644 index 0000000..9a65aed --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H04_psy_acid.scd @@ -0,0 +1,80 @@ +// ===================================================================== +// H04_psy_acid.scd -- Album H, track 4/15 +// ===================================================================== + +// --- TRACK H04 : "PSY ACID" 7 minutes -------------------------------- +// 0:00 pad -> 1:00 kick psy -> 2:30 squareLead -> 4:30 hooverbass -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H04 0:00] pad psy intro...".postln; + ~bpm = 144; + ~melodyInst = \warmPad; ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0, 63,0,0,0, 67,0,0,0, 70,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 63,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 700; ~acidRq = 0.15; ~acidDrive = 2.8; ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 60.wait; + + "[H04 1:00] kick psy + offbeat hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.58; + ~kickFreq = 62; ~kickPitchAmt = 4.0; ~kickDecay = 0.22; ~kickClick = 0.28; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; + ~acidAmp = 0.32; + ~reload.value; + 90.wait; + + "[H04 2:30] squareLead psy...".postln; + ~melodyInst = \squareLead; + ~melodyAttack = 0.002; ~melodyRelease = 0.10; ~melodyCutoff = 6000; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.65, ~scaleHijaz); + ~reload.value; + 24.do { |k| + if (0.25.coin) { ~acidCutoff = rrand(700, 1800); ~reload.value }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.3, ~scaleHijaz); + ~reload.value; + }; + if (0.10.coin) { ~acidSlides = ~genAcidSlides.(0.4); ~reload.value }; + 5.wait; + }; + + "[H04 4:30] hooverbass massif...".postln; + ~melodyInst = \hooverbass; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 1800; + ~melodyAmp = 0.20; + ~melodyNotes = [36,0,0,0, 39,0,0,0, 41,0,0,0, 36,0,0,0, + 36,0,0,0, 41,0,0,0, 43,0,0,0, 39,0,0,0]; + ~vcfOn !? { ~vcfOn.(\moog, 1500, 0.45) }; + ~reload.value; + 120.wait; + + "[H04 6:30] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.58; ~hatAmp = x * 0.18; + ~acidAmp = x * 0.32; ~melodyAmp = x * 0.20; + ~acidCutoff = 200 + (x * 1500); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H04 7:00] === fin PSY ACID ===".postln; +}).play; +"=== TRACK H04 : PSY ACID 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H05_uplifting_303.scd b/sound_algo/tracks/H_acid_trance/H05_uplifting_303.scd new file mode 100644 index 0000000..85cb3f3 --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H05_uplifting_303.scd @@ -0,0 +1,95 @@ +// ===================================================================== +// H05_uplifting_303.scd -- Album H, track 5/15 +// ===================================================================== + +// --- TRACK H05 : "UPLIFTING 303" 8 minutes --------------------------- +// 0:00 pad -> 1:00 kick -> 2:00 build -> 2:30 drop -> 4:30 break -> 5:30 climax -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H05 0:00] pad uplifting...".postln; + ~bpm = 138; + ~melodyInst = \warmPad; ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 72,0,0,0, 75,0,0,0, + 77,0,0,0, 75,0,0,0, 72,0,0,0, 67,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + ~acidNotes = [36,36,48,36, 41,36,43,41, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 600; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 60.wait; + + "[H05 1:00] kick + acid...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.20; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~acidAmp = 0.30; + ~reload.value; + 60.wait; + + "[H05 2:00] BUILD...".postln; + Synth(\riser, [\dur, 30, \startCutoff, 500, \endCutoff, 13000, \amp, 0.4]); + 30.do { |k| + var x = (k + 1) / 30; + ~acidCutoff = 600 + (x * 2200); ~acidRq = 0.18 - (x * 0.12); + ~reload.value; 1.wait; + }; + + "[H05 2:30] === DROP supersaw ===".postln; + Synth(\impact, [\freq, 40, \decay, 3, \amp, 0.7]); + ~melodyInst = \supersaw; + ~melodyAttack = 0.003; ~melodyRelease = 0.3; ~melodyCutoff = 5500; + ~melodyAmp = 0.20; + ~melodyNotes = [60,67,72,77, 75,72,67,72, 65,72,77,79, 77,75,72,67, + 63,70,75,79, 77,75,70,67, 67,72,77,79, 75,72,67,60]; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~reload.value; + 120.wait; + + "[H05 4:30] breakdown -- choir...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~kickSteps=(0!16); ~hatAmp=0.05; ~clapSteps=(0!16); ~acidAmp = 0; + ~melodyInst = \choir; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2800; + ~melodyAmp = 0.22; + ~reload.value; + 60.wait; + + "[H05 5:30] climax FINAL...".postln; + Synth(\riser, [\dur, 8, \startCutoff, 1000, \endCutoff, 13000, \amp, 0.5]); + 8.wait; + Synth(\impact, [\freq, 38, \decay, 3, \amp, 0.7]); + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~acidAmp = 0.35; ~acidCutoff = 2000; + ~melodyInst = \hardLead; + ~melodyAttack = 0.002; ~melodyRelease = 0.25; ~melodyCutoff = 6000; + ~melodyAmp = 0.22; + ~reload.value; + 112.wait; + + "[H05 7:30] outro...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.18; ~clapAmp = x * 0.32; + ~acidAmp = x * 0.35; ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H05 8:00] === fin UPLIFTING 303 ===".postln; +}).play; +"=== TRACK H05 : UPLIFTING 303 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H06_progressive_drift.scd b/sound_algo/tracks/H_acid_trance/H06_progressive_drift.scd new file mode 100644 index 0000000..07be3d4 --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H06_progressive_drift.scd @@ -0,0 +1,70 @@ +// ===================================================================== +// H06_progressive_drift.scd -- Album H, track 6/15 +// ===================================================================== + +// --- TRACK H06 : "PROGRESSIVE DRIFT" 6 minutes ----------------------- +// 0:00 pad -> 1:00 kick -> 2:30 acid evolve -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H06 0:00] pad progressive...".postln; + ~bpm = 138; + ~melodyInst = \warmPad; ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 70,0,0,0, 65,0,0,0, 67,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 600; ~acidRq = 0.20; ~acidDrive = 2.0; ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 60.wait; + + "[H06 1:00] kick deep + acid soft...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.50; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.15; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.28; + ~acidAmp = 0.25; + ~reload.value; + 90.wait; + + "[H06 2:30] acid evolve + lfo...".postln; + ~lfoTo !? { ~lfoTo.(\acidCutoff, 0.08, 600, \sin, 1800) }; + ~melodyInst = \squareLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.2; ~melodyCutoff = 4500; + ~melodyAmp = 0.16; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[H06 4:30] outro...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\acidCutoff) }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.50; ~hatAmp = x * 0.13; ~clapAmp = x * 0.28; + ~acidAmp = x * 0.25; ~melodyAmp = x * 0.16; + ~acidCutoff = 200 + (x * 1300); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H06 5:00] === fin PROGRESSIVE DRIFT ===".postln; +}).play; +"=== TRACK H06 : PROGRESSIVE DRIFT 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H07_hard_trance.scd b/sound_algo/tracks/H_acid_trance/H07_hard_trance.scd new file mode 100644 index 0000000..f6fa37a --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H07_hard_trance.scd @@ -0,0 +1,65 @@ +// ===================================================================== +// H07_hard_trance.scd -- Album H, track 7/15 +// ===================================================================== + +// --- TRACK H07 : "HARD TRANCE" 5 minutes ----------------------------- +// 0:00 kick hard direct -> 1:00 acid + lead -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H07 0:00] kick hard immediate...".postln; + ~bpm = 145; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.60; + ~kickFreq = 65; ~kickPitchAmt = 4.5; ~kickDecay = 0.22; ~kickClick = 0.35; + ~kickDrive = 2.0; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.20; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~snareSteps=(0!16); ~percSteps=(0!16); + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 1200; ~acidRq = 0.10; ~acidDrive = 3.5; ~acidAmp = 0.32; + ~melodyInst = \warmPad; ~melodyAmp = 0.10; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 70,0,0,0, 72,0,0,0, + 75,0,0,0, 72,0,0,0, 67,0,0,0, 60,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 60.wait; + + "[H07 1:00] hardLead...".postln; + ~melodyInst = \hardLead; + ~melodyAttack = 0.002; ~melodyRelease = 0.20; ~melodyCutoff = 5500; + ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.65, ~scaleMinor); + ~vcfOn !? { ~vcfOn.(\moog, 2800, 0.4) }; + ~reload.value; + 30.do { |k| + if (0.25.coin) { ~acidCutoff = rrand(1000, 2000); ~reload.value }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.3, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[H07 3:30] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.60; ~hatAmp = x * 0.20; ~clapAmp = x * 0.35; + ~acidAmp = x * 0.32; ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H07 4:00] === fin HARD TRANCE ===".postln; +}).play; +"=== TRACK H07 : HARD TRANCE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H08_hoover_storm.scd b/sound_algo/tracks/H_acid_trance/H08_hoover_storm.scd new file mode 100644 index 0000000..2c845f9 --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H08_hoover_storm.scd @@ -0,0 +1,75 @@ +// ===================================================================== +// H08_hoover_storm.scd -- Album H, track 8/15 +// ===================================================================== + +// --- TRACK H08 : "HOOVER STORM" 6 minutes ---------------------------- +// 0:00 pad -> 1:00 kick -> 2:30 hooverbass storm -> 4:30 climax -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H08 0:00] pad...".postln; + ~bpm = 142; + ~melodyInst = \warmPad; ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0, 63,0,0,0, 67,0,0,0, 72,0,0,0, + 70,0,0,0, 67,0,0,0, 63,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 60.wait; + + "[H08 1:00] kick + clap...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.20; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~reload.value; + 90.wait; + + "[H08 2:30] hooverbass storm...".postln; + ~melodyInst = \hooverbass; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 1800; + ~melodyAmp = 0.22; + ~melodyNotes = [36,0,0,0, 39,0,0,0, 41,0,0,0, 36,0,0,0, + 36,0,0,0, 41,0,0,0, 43,0,0,0, 39,0,0,0]; + ~vcfOn !? { ~vcfOn.(\moog, 1500, 0.45) }; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinor); + ~reload.value; + }; + if (0.10.coin) { ~melodyDrive = rrand(2.0, 3.5); ~reload.value }; + 5.wait; + }; + + "[H08 4:30] climax -- supersaw layer...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; ~melodyCutoff = 5000; + ~melodyAmp = 0.20; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.3, 2500, \sin, 5000) }; + ~reload.value; + 60.wait; + + "[H08 5:30] outro...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.16; ~clapAmp = x * 0.32; + ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H08 6:00] === fin HOOVER STORM ===".postln; +}).play; +"=== TRACK H08 : HOOVER STORM 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H09_acid_cathedral.scd b/sound_algo/tracks/H_acid_trance/H09_acid_cathedral.scd new file mode 100644 index 0000000..5c833a5 --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H09_acid_cathedral.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// H09_acid_cathedral.scd -- Album H, track 9/15 +// ===================================================================== + +// --- TRACK H09 : "ACID CATHEDRAL" 7 minutes -------------------------- +// 0:00 choir -> 1:00 kick -> 2:30 acid + organ -> 4:30 supersaw -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H09 0:00] choir cathedral...".postln; + ~bpm = 140; + ~melodyInst = \choir; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 2800; ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 70,0,0,0, 67,0,0,0, 65,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 700; ~acidRq = 0.15; ~acidDrive = 2.5; ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 60.wait; + + "[H09 1:00] kick liturgique + acid...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 58; ~kickPitchAmt = 3.5; ~kickDecay = 0.30; ~kickClick = 0.20; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; + ~acidAmp = 0.30; + ~reload.value; + 90.wait; + + "[H09 2:30] organ acid cathedral...".postln; + ~melodyInst = \organLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.18; ~melodyCutoff = 4500; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~reload.value; + 24.do { |k| + if (0.22.coin) { ~acidCutoff = rrand(700, 1700); ~reload.value }; + if (0.18.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleHarmonicMin); + ~reload.value; + }; + 5.wait; + }; + + "[H09 4:30] supersaw cathedral...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.20; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.2, 2500, \sin, 5000) }; + ~reload.value; + 120.wait; + + "[H09 6:30] outro choir...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.15; ~clapAmp = x * 0.30; + ~acidAmp = x * 0.30; ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H09 7:00] === fin ACID CATHEDRAL ===".postln; +}).play; +"=== TRACK H09 : ACID CATHEDRAL 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H10_supersaw_epic.scd b/sound_algo/tracks/H_acid_trance/H10_supersaw_epic.scd new file mode 100644 index 0000000..03c9161 --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H10_supersaw_epic.scd @@ -0,0 +1,90 @@ +// ===================================================================== +// H10_supersaw_epic.scd -- Album H, track 10/15 +// ===================================================================== + +// --- TRACK H10 : "SUPERSAW EPIC" 8 minutes --------------------------- +// 0:00 pad -> 1:00 kick -> 2:00 supersaw -> 4:00 break -> 5:00 climax -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H10 0:00] pad epic...".postln; + ~bpm = 140; + ~melodyInst = \warmPad; ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~melodyCutoff = 1800; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 72,0,0,0, 75,0,0,0, + 77,0,0,0, 75,0,0,0, 72,0,0,0, 67,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 600; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 60.wait; + + "[H10 1:00] kick + acid...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.22; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~acidAmp = 0.30; + ~reload.value; + 60.wait; + + "[H10 2:00] supersaw epic anthem...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.22; + ~melodyNotes = [60,67,72,77, 75,72,67,72, 65,72,77,79, 77,75,72,67, + 63,70,75,79, 77,75,70,67, 67,72,77,79, 75,72,67,60]; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.2, 2500, \sin, 5000) }; + ~reload.value; + 120.wait; + + "[H10 4:00] break -- choir + sub...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~kickSteps=(0!16); ~hatAmp=0.05; ~clapSteps=(0!16); ~acidAmp = 0; + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyAmp = 0.22; + ~reload.value; + 60.wait; + + "[H10 5:00] climax FINAL...".postln; + Synth(\riser, [\dur, 16, \startCutoff, 800, \endCutoff, 13000, \amp, 0.5]); + 16.wait; + Synth(\impact, [\freq, 38, \decay, 3, \amp, 0.7]); + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.20; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~acidAmp = 0.35; ~acidCutoff = 2000; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5500; + ~melodyAmp = 0.24; + ~vcfOn !? { ~vcfOn.(\moog, 2800, 0.4) }; + ~reload.value; + 134.wait; + + "[H10 7:30] outro grand fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.20; ~clapAmp = x * 0.32; + ~acidAmp = x * 0.35; ~melodyAmp = x * 0.24; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H10 8:00] === fin SUPERSAW EPIC ===".postln; +}).play; +"=== TRACK H10 : SUPERSAW EPIC 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H11_dark_psytrance.scd b/sound_algo/tracks/H_acid_trance/H11_dark_psytrance.scd new file mode 100644 index 0000000..21352ab --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H11_dark_psytrance.scd @@ -0,0 +1,79 @@ +// ===================================================================== +// H11_dark_psytrance.scd -- Album H, track 11/15 +// ===================================================================== + +// --- TRACK H11 : "DARK PSYTRANCE" 7 minutes -------------------------- +// 0:00 drone dark -> 1:00 kick psy -> 2:30 reese + acid -> 4:30 hard -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H11 0:00] drone dark...".postln; + ~bpm = 145; + ~melodyInst = \drone; ~melodyAttack = 1.0; ~melodyRelease = 2.5; + ~melodyCutoff = 1200; ~melodyAmp = 0.18; + ~melodyNotes = [36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 36,0,0,0,0,0,0,0, 39,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 700; ~acidRq = 0.12; ~acidDrive = 3.0; ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[H11 1:00] kick psy hard...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.60; + ~kickFreq = 62; ~kickPitchAmt = 4.0; ~kickDecay = 0.22; ~kickClick = 0.30; + ~hatSteps = [0,1,1,1, 0,1,1,1, 0,1,1,1, 0,1,1,1]; ~hatAmp = 0.18; + ~acidAmp = 0.35; + ~reload.value; + 90.wait; + + "[H11 2:30] reese dark + acid...".postln; + ~melodyInst = \reese; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; ~melodyCutoff = 1500; + ~melodyAmp = 0.20; + ~melodyNotes = [36,0,0,0, 39,0,0,0, 41,0,0,0, 36,0,0,0, + 36,0,0,0, 41,0,0,0, 39,0,0,0, 36,0,0,0]; + ~vcfOn !? { ~vcfOn.(\ladder, 1500, 0.5) }; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~acidCutoff = rrand(700, 2000); ~reload.value }; + if (0.18.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scalePhrygian); + ~reload.value; + }; + 5.wait; + }; + + "[H11 4:30] hardLead dark climax...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \hardLead; + ~melodyAttack = 0.002; ~melodyRelease = 0.25; ~melodyCutoff = 5500; + ~melodyAmp = 0.20; + ~lfoTo !? { ~lfoTo.(\acidCutoff, 0.2, 700, \saw, 1800) }; + ~reload.value; + 120.wait; + + "[H11 6:30] outro...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\acidCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.60; ~hatAmp = x * 0.18; + ~acidAmp = x * 0.35; ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H11 7:00] === fin DARK PSYTRANCE ===".postln; +}).play; +"=== TRACK H11 : DARK PSYTRANCE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H12_nitzhonot_303.scd b/sound_algo/tracks/H_acid_trance/H12_nitzhonot_303.scd new file mode 100644 index 0000000..811a1eb --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H12_nitzhonot_303.scd @@ -0,0 +1,70 @@ +// ===================================================================== +// H12_nitzhonot_303.scd -- Album H, track 12/15 +// ===================================================================== + +// --- TRACK H12 : "NITZHONOT 303" 5 minutes --------------------------- +// 0:00 pad -> 0:45 kick + acid -> 2:00 lead anthem -> 4:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H12 0:00] pad uplifting...".postln; + ~bpm = 142; + ~melodyInst = \warmPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 1800; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 74,0,0,0, 72,0,0,0, 67,0,0,0, 65,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + ~acidNotes = [36,36,48,36, 41,36,43,41, 36,43,36,41, 48,36,36,43]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.15; ~acidDrive = 2.5; ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 45.wait; + + "[H12 0:45] kick + acid bouncy...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.22; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~acidAmp = 0.32; + ~reload.value; + 75.wait; + + "[H12 2:00] squareLead anthem...".postln; + ~melodyInst = \squareLead; + ~melodyAttack = 0.002; ~melodyRelease = 0.12; ~melodyCutoff = 6000; + ~melodyAmp = 0.20; + ~melodyNotes = [60,67,72,77, 75,72,67,77, 65,72,77,79, 77,75,72,65, + 63,70,75,79, 77,75,70,67, 67,72,77,79, 75,72,67,60]; + ~reload.value; + 24.do { |k| + if (0.22.coin) { ~acidCutoff = rrand(800, 1800); ~reload.value }; + if (0.18.coin) { + ~melodyNotes = ~genMelody.(0.65, + [~scaleMinor, ~scaleHarmonicMin].choose); + ~reload.value; + }; + 5.wait; + }; + + "[H12 4:00] outro...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.18; ~clapAmp = x * 0.32; + ~acidAmp = x * 0.32; ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H12 4:30] === fin NITZHONOT 303 ===".postln; +}).play; +"=== TRACK H12 : NITZHONOT 303 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H13_full_on_acid.scd b/sound_algo/tracks/H_acid_trance/H13_full_on_acid.scd new file mode 100644 index 0000000..e73726d --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H13_full_on_acid.scd @@ -0,0 +1,64 @@ +// ===================================================================== +// H13_full_on_acid.scd -- Album H, track 13/15 +// ===================================================================== + +// --- TRACK H13 : "FULL ON ACID" 4 minutes ---------------------------- +// 0:00 kick + acid full -> 1:00 squareLead -> 3:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H13 0:00] kick + acid direct full...".postln; + ~bpm = 145; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.58; + ~kickFreq = 62; ~kickPitchAmt = 4.0; ~kickDecay = 0.22; ~kickClick = 0.28; + ~hatSteps = [0,1,1,1, 0,1,1,1, 0,1,1,1, 0,1,1,1]; ~hatAmp = 0.18; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~snareSteps=(0!16); ~percSteps=(0!16); + ~acidNotes = [36,36,48,36, 41,36,43,41, 36,43,36,41, 48,36,36,43]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 1200; ~acidRq = 0.10; ~acidDrive = 3.5; ~acidAmp = 0.35; + ~melodyInst = \warmPad; ~melodyAmp = 0.10; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 70,0,0,0, 75,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 60,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 60.wait; + + "[H13 1:00] squareLead arp...".postln; + ~melodyInst = \squareLead; + ~melodyAttack = 0.002; ~melodyRelease = 0.12; ~melodyCutoff = 6000; + ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.7, ~scaleMinor); + ~vcfOn !? { ~vcfOn.(\moog, 2800, 0.4) }; + ~reload.value; + 24.do { |k| + if (0.25.coin) { ~acidCutoff = rrand(1000, 2000); ~reload.value }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.3, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[H13 3:00] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.58; ~hatAmp = x * 0.18; ~clapAmp = x * 0.32; + ~acidAmp = x * 0.35; ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H13 3:30] === fin FULL ON ACID ===".postln; +}).play; +"=== TRACK H13 : FULL ON ACID 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H14_breakdown_climax.scd b/sound_algo/tracks/H_acid_trance/H14_breakdown_climax.scd new file mode 100644 index 0000000..9291e5e --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H14_breakdown_climax.scd @@ -0,0 +1,80 @@ +// ===================================================================== +// H14_breakdown_climax.scd -- Album H, track 14/15 +// ===================================================================== + +// --- TRACK H14 : "BREAKDOWN CLIMAX" 5 minutes ------------------------ +// 0:00 kick -> 1:00 build -> 1:30 break -> 2:30 drop -> 4:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H14 0:00] kick + acid intro...".postln; + ~bpm = 142; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.20; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.30; + ~snareSteps=(0!16); ~percSteps=(0!16); + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.30; + ~melodyInst = \warmPad; ~melodyAmp = 0.12; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 70,0,0,0, 72,0,0,0, + 75,0,0,0, 72,0,0,0, 67,0,0,0, 60,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 60.wait; + + "[H14 1:00] BUILD 1...".postln; + Synth(\riser, [\dur, 30, \startCutoff, 800, \endCutoff, 12000, \amp, 0.4]); + 30.do { |k| + var x = (k + 1) / 30; + ~acidCutoff = 800 + (x * 1500); ~hatAmp = 0.16 + (x * 0.05); + ~reload.value; 1.wait; + }; + + "[H14 1:30] === BREAKDOWN ===".postln; + Synth(\impact, [\freq, 38, \decay, 3, \amp, 0.7]); + ~kickSteps=(0!16); ~hatAmp=0.05; ~clapSteps=(0!16); ~acidAmp = 0; + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; ~melodyCutoff = 2800; + ~melodyAmp = 0.22; + ~reload.value; + 60.wait; + + "[H14 2:30] === DROP supersaw ===".postln; + Synth(\riser, [\dur, 8, \startCutoff, 800, \endCutoff, 13000, \amp, 0.5]); + 8.wait; + Synth(\impact, [\freq, 38, \decay, 3, \amp, 0.8]); + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.18; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~acidAmp = 0.35; ~acidCutoff = 1800; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5500; + ~melodyAmp = 0.22; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~reload.value; + 82.wait; + + "[H14 4:00] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.18; ~clapAmp = x * 0.30; + ~acidAmp = x * 0.35; ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H14 4:30] === fin BREAKDOWN CLIMAX ===".postln; +}).play; +"=== TRACK H14 : BREAKDOWN CLIMAX 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/H15_trance_finale.scd b/sound_algo/tracks/H_acid_trance/H15_trance_finale.scd new file mode 100644 index 0000000..0e6301c --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/H15_trance_finale.scd @@ -0,0 +1,87 @@ +// ===================================================================== +// H15_trance_finale.scd -- Album H, track 15/15 +// ===================================================================== + +// --- TRACK H15 : "TRANCE FINALE" 6 minutes --------------------------- +// 0:00 pad -> 1:00 kick -> 2:00 anthem -> 3:30 break -> 4:00 climax -> 5:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[H15 0:00] pad finale...".postln; + ~bpm = 140; + ~melodyInst = \warmPad; ~melodyAttack = 0.6; ~melodyRelease = 2.0; + ~melodyCutoff = 1800; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 72,0,0,0, 75,0,0,0, + 77,0,0,0, 75,0,0,0, 72,0,0,0, 67,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~clapSteps=(0!16); + ~acidNotes = [36,36,48,36, 39,36,43,39, 36,41,36,39, 43,36,36,41]; + ~acidAccents = [1,0,0,0,1,0,1,0, 0,1,0,0,1,0,0,1]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 700; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 60.wait; + + "[H15 1:00] kick + acid...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 60; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.22; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.16; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~acidAmp = 0.30; + ~reload.value; + 60.wait; + + "[H15 2:00] anthem supersaw...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.22; + ~melodyNotes = [60,67,72,77, 75,72,67,72, 65,72,77,79, 77,75,72,67, + 63,70,75,79, 77,75,70,67, 67,72,77,79, 75,72,67,60]; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~reload.value; + 90.wait; + + "[H15 3:30] break choir...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~kickSteps=(0!16); ~hatAmp=0.05; ~acidAmp = 0; + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyAmp = 0.22; + ~reload.value; + 30.wait; + + "[H15 4:00] climax FINAL...".postln; + Synth(\riser, [\dur, 8, \startCutoff, 1000, \endCutoff, 13000, \amp, 0.5]); + 8.wait; + Synth(\impact, [\freq, 38, \decay, 3, \amp, 0.7]); + Synth(\crash, [\decay, 4, \amp, 0.4]); + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.20; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; + ~acidAmp = 0.35; ~acidCutoff = 2000; + ~melodyInst = \hardLead; + ~melodyAttack = 0.002; ~melodyRelease = 0.30; ~melodyCutoff = 6000; + ~melodyAmp = 0.24; + ~reload.value; + 52.wait; + + "[H15 5:00] outro grand fade...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 60.do { |k| + var x = 1 - ((k + 1) / 60); + ~kickAmp = x * 0.55; ~hatAmp = x * 0.20; ~clapAmp = x * 0.32; + ~acidAmp = x * 0.35; ~melodyAmp = x * 0.24; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[H15 6:00] === fin TRANCE FINALE ===".postln; +}).play; +"=== TRACK H15 : TRANCE FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/H_acid_trance/_album.scd b/sound_algo/tracks/H_acid_trance/_album.scd new file mode 100644 index 0000000..2ef2ac3 --- /dev/null +++ b/sound_algo/tracks/H_acid_trance/_album.scd @@ -0,0 +1,54 @@ +// ===================================================================== +// _album.scd -- Album H "Acid Trance" : 15 tracks orchestrateur +// ===================================================================== + +( // --- SETUP ALBUM H --- +~albums = ~albums ? (); +~albums[\H] = ( + title: "Acid Trance", + folder: "tracks/H_acid_trance/", + tracks: [ + \H01_first_state, + \H02_goa_dream, + \H03_303_ascension, + \H04_psy_acid, + \H05_uplifting_303, + \H06_progressive_drift, + \H07_hard_trance, + \H08_hoover_storm, + \H09_acid_cathedral, + \H10_supersaw_epic, + \H11_dark_psytrance, + \H12_nitzhonot_303, + \H13_full_on_acid, + \H14_breakdown_climax, + \H15_trance_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album H] setup OK -- ~playTrack.(\\H, n) | ~playAlbum.(\\H) | ~stopAlbum.()".postln; +) + + +// ===================================================================== +// RACCOURCIS LIVE +// ===================================================================== + +( ~playTrack.(\H, 1); ) // H01 first_state (4 min) +( ~playTrack.(\H, 2); ) // H02 goa_dream (5 min) +( ~playTrack.(\H, 3); ) // H03 303_ascension (6 min) +( ~playTrack.(\H, 4); ) // H04 psy_acid (7 min) +( ~playTrack.(\H, 5); ) // H05 uplifting_303 (8 min) +( ~playTrack.(\H, 6); ) // H06 progressive_drift (6 min) +( ~playTrack.(\H, 7); ) // H07 hard_trance (5 min) +( ~playTrack.(\H, 8); ) // H08 hoover_storm (6 min) +( ~playTrack.(\H, 9); ) // H09 acid_cathedral (7 min) +( ~playTrack.(\H, 10); ) // H10 supersaw_epic (8 min) +( ~playTrack.(\H, 11); ) // H11 dark_psytrance (7 min) +( ~playTrack.(\H, 12); ) // H12 nitzhonot_303 (5 min) +( ~playTrack.(\H, 13); ) // H13 full_on_acid (4 min) +( ~playTrack.(\H, 14); ) // H14 breakdown_climax (5 min) +( ~playTrack.(\H, 15); ) // H15 trance_finale (6 min) + +( ~playAlbum.(\H); ) +( ~stopAlbum.(); ) diff --git a/sound_algo/tracks/I_liquid_dnb/I01_first_drops.scd b/sound_algo/tracks/I_liquid_dnb/I01_first_drops.scd new file mode 100644 index 0000000..65b6f7f --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I01_first_drops.scd @@ -0,0 +1,64 @@ +// ===================================================================== +// I01_first_drops.scd -- Album I "Liquid DnB", track 1/15 +// ===================================================================== + +// --- TRACK I01 : "FIRST DROPS" 4 minutes ----------------------------- +// 0:00 pad -> 0:45 amen -> 1:30 lead -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I01 0:00] warmPad intro...".postln; + ~bpm = 174; + ~melodyInst = \warmPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 2000; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0,0,0,0,0, 67,0,0,0,0,0,0,0, + 63,0,0,0,0,0,0,0, 70,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 45.wait; + + "[I01 0:45] amen break...".postln; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.50; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; ~kickClick = 0.30; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.5; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.12; + ~reload.value; + 45.wait; + + "[I01 1:30] fmLead smooth...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.16; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[I01 3:30] outro...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.50; ~snareAmp = x * 0.5; ~hatAmp = x * 0.12; + ~melodyAmp = x * 0.18; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I01 4:00] === fin FIRST DROPS ===".postln; +}).play; +"=== TRACK I01 : FIRST DROPS 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I02_smooth_amen.scd b/sound_algo/tracks/I_liquid_dnb/I02_smooth_amen.scd new file mode 100644 index 0000000..4442c7c --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I02_smooth_amen.scd @@ -0,0 +1,67 @@ +// ===================================================================== +// I02_smooth_amen.scd -- Album I, track 2/15 +// ===================================================================== + +// --- TRACK I02 : "SMOOTH AMEN" 5 minutes ----------------------------- +// 0:00 amen + pad -> 1:00 rhodes -> 2:30 lead -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I02 0:00] amen smooth + pad...".postln; + ~bpm = 174; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.48; + ~kickFreq = 52; ~kickPitchAmt = 3.5; ~kickDecay = 0.22; ~kickClick = 0.25; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.45; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.10; + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~melodyInst = \warmPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 2000; ~melodyAmp = 0.16; + ~melodyNotes = [60,0,0,0, 0,0,0,0, 67,0,0,0, 0,0,0,0, + 63,0,0,0, 0,0,0,0, 70,0,0,0, 0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[I02 1:00] rhodes liquid...".postln; + ~melodyInst = \rhodes; + ~melodyAttack = 0.01; ~melodyRelease = 0.7; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~reload.value; + 90.wait; + + "[I02 2:30] fmLead -- variations...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.18; + ~reload.value; + 24.do { |k| + if (0.22.coin) { + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~reload.value; + }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[I02 4:30] outro pad...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.48; ~snareAmp = x * 0.45; ~hatAmp = x * 0.10; + ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I02 5:00] === fin SMOOTH AMEN ===".postln; +}).play; +"=== TRACK I02 : SMOOTH AMEN 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I03_rhodes_rain.scd b/sound_algo/tracks/I_liquid_dnb/I03_rhodes_rain.scd new file mode 100644 index 0000000..3a9b38a --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I03_rhodes_rain.scd @@ -0,0 +1,71 @@ +// ===================================================================== +// I03_rhodes_rain.scd -- Album I, track 3/15 +// ===================================================================== + +// --- TRACK I03 : "RHODES RAIN" 6 minutes ----------------------------- +// 0:00 rhodes solo -> 1:00 amen -> 2:30 sub -> 4:30 lead -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I03 0:00] rhodes solo pluvieux...".postln; + ~bpm = 174; + ~melodyInst = \rhodes; ~melodyAttack = 0.01; ~melodyRelease = 0.7; + ~melodyCutoff = 3500; ~melodyAmp = 0.22; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 60.wait; + + "[I03 1:00] amen entre...".postln; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.48; + ~kickFreq = 52; ~kickPitchAmt = 3.5; ~kickDecay = 0.20; ~kickClick = 0.25; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.45; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.10; + ~reload.value; + 90.wait; + + "[I03 2:30] subBoom rain...".postln; + ~melodyInst = \subBoom; + ~melodyAttack = 0.005; ~melodyRelease = 0.6; ~melodyCutoff = 800; + ~melodyAmp = 0.25; + ~melodyNotes = [36,0,0,0, 36,0,0,0, 39,0,0,0, 41,0,0,0, + 36,0,0,0, 36,0,0,0, 41,0,0,0, 39,0,0,0]; + ~reload.value; + 120.wait; + + "[I03 4:30] fmLead delicate...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 5000; + ~melodyAmp = 0.18; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[I03 5:30] outro -- rhodes fade...".postln; + ~melodyInst = \rhodes; + ~melodyAttack = 0.02; ~melodyRelease = 1.2; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.48; ~snareAmp = x * 0.45; ~hatAmp = x * 0.10; + ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I03 6:00] === fin RHODES RAIN ===".postln; +}).play; +"=== TRACK I03 : RHODES RAIN 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I04_sub_meditation.scd b/sound_algo/tracks/I_liquid_dnb/I04_sub_meditation.scd new file mode 100644 index 0000000..df56e04 --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I04_sub_meditation.scd @@ -0,0 +1,70 @@ +// ===================================================================== +// I04_sub_meditation.scd -- Album I, track 4/15 +// ===================================================================== + +// --- TRACK I04 : "SUB MEDITATION" 7 minutes -------------------------- +// 0:00 drone -> 1:00 amen subtle -> 2:30 sub -> 4:30 reese -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I04 0:00] drone meditatif...".postln; + ~bpm = 174; + ~melodyInst = \drone; ~melodyAttack = 1.0; ~melodyRelease = 2.5; + ~melodyCutoff = 1500; ~melodyAmp = 0.18; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[I04 1:00] amen subtle...".postln; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.45; + ~kickFreq = 50; ~kickPitchAmt = 3.5; ~kickDecay = 0.22; ~kickClick = 0.20; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.40; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.08; + ~reload.value; + 90.wait; + + "[I04 2:30] subBoom meditation...".postln; + ~melodyInst = \subBoom; + ~melodyAttack = 0.005; ~melodyRelease = 0.7; ~melodyCutoff = 700; + ~melodyAmp = 0.28; + ~melodyNotes = [36,0,0,0, 36,0,0,0, 39,0,0,0, 41,0,0,0, + 36,0,0,0, 36,0,0,0, 41,0,0,0, 39,0,0,0]; + ~reload.value; + 120.wait; + + "[I04 4:30] reeseDnB rouler...".postln; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 1200; + ~melodyAmp = 0.22; + ~vcfOn !? { ~vcfOn.(\ladder, 1500, 0.5) }; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.3, 1200, \sin, 2200) }; + ~reload.value; + 120.wait; + + "[I04 6:30] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.45; ~snareAmp = x * 0.40; ~hatAmp = x * 0.08; + ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I04 7:00] === fin SUB MEDITATION ===".postln; +}).play; +"=== TRACK I04 : SUB MEDITATION 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I05_atmospheric_roller.scd b/sound_algo/tracks/I_liquid_dnb/I05_atmospheric_roller.scd new file mode 100644 index 0000000..2fae6a9 --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I05_atmospheric_roller.scd @@ -0,0 +1,87 @@ +// ===================================================================== +// I05_atmospheric_roller.scd -- Album I, track 5/15 +// ===================================================================== + +// --- TRACK I05 : "ATMOSPHERIC ROLLER" 8 minutes ---------------------- +// 0:00 pad -> 1:00 amen -> 2:30 fmLead -> 4:30 break -> 5:30 reese -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I05 0:00] vocalPad atmosphere...".postln; + ~bpm = 174; + ~melodyInst = \vocalPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 2500; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 72,0,0,0, 75,0,0,0, + 72,0,0,0, 67,0,0,0, 65,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 60.wait; + + "[I05 1:00] amen roller...".postln; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.50; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.20; ~kickClick = 0.25; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.50; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.12; + ~reload.value; + 90.wait; + + "[I05 2:30] fmLead lead...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~reload.value; + 24.do { |k| + if (0.22.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[I05 4:30] break vocalPad...".postln; + ~kickSteps=(0!16); ~snareSteps=(0!16); ~hatAmp=0.06; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyAmp = 0.22; + ~reload.value; + 60.wait; + + "[I05 5:30] DROP -- reese...".postln; + Synth(\impact, [\freq, 45, \decay, 2, \amp, 0.5]); + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 1500; + ~melodyAmp = 0.22; + ~melodyNotes = [36,0,0,0, 36,0,0,0, 39,0,0,0, 41,0,0,0, + 36,0,0,0, 36,0,0,0, 41,0,0,0, 39,0,0,0]; + ~vcfOn !? { ~vcfOn.(\ladder, 1500, 0.5) }; + ~reload.value; + 120.wait; + + "[I05 7:30] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.50; ~snareAmp = x * 0.50; ~hatAmp = x * 0.13; + ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I05 8:00] === fin ATMOSPHERIC ROLLER ===".postln; +}).play; +"=== TRACK I05 : ATMOSPHERIC ROLLER 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I06_jazzy_breaks.scd b/sound_algo/tracks/I_liquid_dnb/I06_jazzy_breaks.scd new file mode 100644 index 0000000..a7a871c --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I06_jazzy_breaks.scd @@ -0,0 +1,64 @@ +// ===================================================================== +// I06_jazzy_breaks.scd -- Album I, track 6/15 +// ===================================================================== + +// --- TRACK I06 : "JAZZY BREAKS" 6 minutes ---------------------------- +// 0:00 rhodes -> 1:00 amen jazzy -> 2:30 fmLead -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I06 0:00] rhodes jazzy intro...".postln; + ~bpm = 174; + ~melodyInst = \rhodes; ~melodyAttack = 0.01; ~melodyRelease = 0.7; + ~melodyCutoff = 3500; ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.55, ~scaleDorian); + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 60.wait; + + "[I06 1:00] amen jazzy...".postln; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.48; + ~kickFreq = 52; ~kickPitchAmt = 3.5; ~kickDecay = 0.22; ~kickClick = 0.22; + ~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,0, 0,1,1,1, 1,1,1,0, 0,1,1,1]; ~hatAmp = 0.11; + ~percInst = \rim; ~percSteps = [0,0,1,0, 0,0,0,1, 0,0,1,0, 0,0,0,0]; + ~percAmp = 0.16; + ~reload.value; + 90.wait; + + "[I06 2:30] fmLead jazzy...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4500; + ~melodyAmp = 0.18; + ~reload.value; + 24.do { |k| + if (0.22.coin) { + ~melodyNotes = ~genMelody.(0.55, + [~scaleDorian, ~scaleMinorPent, ~scaleBlues].choose); + ~reload.value; + }; + 5.wait; + }; + + "[I06 4:30] outro...".postln; + ~melodyInst = \rhodes; + ~melodyAttack = 0.02; ~melodyRelease = 1.2; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.48; ~snareAmp = x * 0.45; ~hatAmp = x * 0.11; + ~percAmp = x * 0.16; ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I06 5:00] === fin JAZZY BREAKS ===".postln; +}).play; +"=== TRACK I06 : JAZZY BREAKS 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I07_minimal_dnb.scd b/sound_algo/tracks/I_liquid_dnb/I07_minimal_dnb.scd new file mode 100644 index 0000000..8d7fc8f --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I07_minimal_dnb.scd @@ -0,0 +1,67 @@ +// ===================================================================== +// I07_minimal_dnb.scd -- Album I, track 7/15 +// ===================================================================== + +// --- TRACK I07 : "MINIMAL DNB" 5 minutes ----------------------------- +// 0:00 amen direct -> 1:00 sub -> 3:00 lead -> 4:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I07 0:00] amen minimal direct...".postln; + ~bpm = 174; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.50; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.20; ~kickClick = 0.25; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.50; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,0,1,0, 0,1,1,1, 1,0,1,0, 0,1,1,1]; ~hatAmp = 0.10; + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~melodyInst = \warmPad; ~melodyAmp = 0.10; + ~melodyNotes = [60,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 63,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[I07 1:00] subBoom minimal...".postln; + ~melodyInst = \subBoom; + ~melodyAttack = 0.005; ~melodyRelease = 0.6; ~melodyCutoff = 700; + ~melodyAmp = 0.25; + ~melodyNotes = [36,0,0,0, 36,0,0,0, 39,0,0,0, 41,0,0,0, + 36,0,0,0, 36,0,0,0, 41,0,0,0, 39,0,0,0]; + ~reload.value; + 120.wait; + + "[I07 3:00] fmLead doux...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; ~melodyCutoff = 4500; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + 12.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[I07 4:00] outro...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.50; ~snareAmp = x * 0.50; ~hatAmp = x * 0.10; + ~melodyAmp = x * 0.18; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I07 4:30] === fin MINIMAL DNB ===".postln; +}).play; +"=== TRACK I07 : MINIMAL DNB 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I08_jungle_revival.scd b/sound_algo/tracks/I_liquid_dnb/I08_jungle_revival.scd new file mode 100644 index 0000000..0cf9f37 --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I08_jungle_revival.scd @@ -0,0 +1,72 @@ +// ===================================================================== +// I08_jungle_revival.scd -- Album I, track 8/15 +// ===================================================================== + +// --- TRACK I08 : "JUNGLE REVIVAL" 6 minutes -------------------------- +// 0:00 pad -> 1:00 amen jungle -> 2:30 sub808 -> 4:30 lead -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I08 0:00] pad reggae...".postln; + ~bpm = 174; + ~melodyInst = \warmPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 2000; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 70,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 60.wait; + + "[I08 1:00] amen jungle classic...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,1,0, 1,0,0,0]; ~kickAmp = 0.52; + ~kickFreq = 50; ~kickPitchAmt = 3.5; ~kickDecay = 0.20; ~kickClick = 0.28; + ~snareSteps = [0,0,0,0, 1,0,0,1, 0,0,1,0, 1,0,0,1]; ~snareAmp = 0.50; + ~snareFreq = 250; ~snareNoiseAmt = 0.75; ~snareDecay = 0.09; + ~hatSteps = [1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1]; ~hatAmp = 0.10; + ~reload.value; + 90.wait; + + "[I08 2:30] bass808 jungle...".postln; + ~melodyInst = \bass808; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; ~melodyCutoff = 800; + ~melodyAmp = 0.25; + ~melodyNotes = [36,0,0,0, 39,0,0,0, 41,0,0,0, 36,0,0,0, + 36,0,0,0, 41,0,0,0, 43,0,0,0, 39,0,0,0]; + ~reload.value; + 120.wait; + + "[I08 4:30] fmLead jungle...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; ~melodyCutoff = 4500; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~reload.value; + 12.do { |k| + if (0.22.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[I08 5:30] outro pad...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.52; ~snareAmp = x * 0.50; ~hatAmp = x * 0.10; + ~melodyAmp = x * 0.25; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I08 6:00] === fin JUNGLE REVIVAL ===".postln; +}).play; +"=== TRACK I08 : JUNGLE REVIVAL 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I09_neurofunk_lite.scd b/sound_algo/tracks/I_liquid_dnb/I09_neurofunk_lite.scd new file mode 100644 index 0000000..348e0b1 --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I09_neurofunk_lite.scd @@ -0,0 +1,70 @@ +// ===================================================================== +// I09_neurofunk_lite.scd -- Album I, track 9/15 +// ===================================================================== + +// --- TRACK I09 : "NEUROFUNK LITE" 7 minutes -------------------------- +// 0:00 pad -> 1:00 amen tight -> 2:30 reeseHard -> 4:30 lead -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I09 0:00] pad neurotech...".postln; + ~bpm = 174; + ~melodyInst = \drone; ~melodyAttack = 0.8; ~melodyRelease = 2.0; + ~melodyCutoff = 1500; ~melodyAmp = 0.18; + ~melodyNotes = [36,0,0,0, 0,0,0,0, 36,0,0,0, 39,0,0,0, + 36,0,0,0, 0,0,0,0, 36,0,0,0, 41,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[I09 1:00] amen tight + clap...".postln; + ~kickSteps = [1,0,0,0, 0,0,1,0, 1,0,1,0, 0,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 58; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; ~kickClick = 0.32; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.55; + ~snareFreq = 260; ~snareNoiseAmt = 0.8; ~snareDecay = 0.08; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~reload.value; + 90.wait; + + "[I09 2:30] reeseHard wobble...".postln; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyDrive = 2.5; ~melodyAmp = 0.22; + ~melodyNotes = [36,0,0,0, 39,0,0,0, 41,0,0,0, 36,0,0,0, + 36,0,0,0, 41,0,0,0, 43,0,0,0, 39,0,0,0]; + ~vcfOn !? { ~vcfOn.(\ladder, 1500, 0.55) }; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.35, 1200, \saw, 2200) }; + ~reload.value; + 120.wait; + + "[I09 4:30] hardLead techno...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \hardLead; + ~melodyAttack = 0.003; ~melodyRelease = 0.2; ~melodyCutoff = 5000; + ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~reload.value; + 120.wait; + + "[I09 6:30] outro...".postln; + ~melodyInst = \drone; + ~melodyAttack = 0.8; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~snareAmp = x * 0.55; ~hatAmp = x * 0.13; + ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I09 7:00] === fin NEUROFUNK LITE ===".postln; +}).play; +"=== TRACK I09 : NEUROFUNK LITE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I10_deep_liquid.scd b/sound_algo/tracks/I_liquid_dnb/I10_deep_liquid.scd new file mode 100644 index 0000000..52572b8 --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I10_deep_liquid.scd @@ -0,0 +1,81 @@ +// ===================================================================== +// I10_deep_liquid.scd -- Album I, track 10/15 +// ===================================================================== + +// --- TRACK I10 : "DEEP LIQUID" 8 minutes ----------------------------- +// 0:00 pad -> 1:00 rhodes -> 2:30 amen -> 4:00 sub -> 5:30 lead -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I10 0:00] vocalPad deep...".postln; + ~bpm = 174; + ~melodyInst = \vocalPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 2500; ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 72,0,0,0, 75,0,0,0, + 72,0,0,0, 67,0,0,0, 65,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 60.wait; + + "[I10 1:00] rhodes liquid...".postln; + ~melodyInst = \rhodes; + ~melodyAttack = 0.01; ~melodyRelease = 0.7; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + 90.wait; + + "[I10 2:30] amen subtle...".postln; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.48; + ~kickFreq = 52; ~kickPitchAmt = 3.5; ~kickDecay = 0.20; ~kickClick = 0.22; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.45; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.10; + ~reload.value; + 90.wait; + + "[I10 4:00] subBoom deep...".postln; + ~melodyInst = \subBoom; + ~melodyAttack = 0.005; ~melodyRelease = 0.6; ~melodyCutoff = 800; + ~melodyAmp = 0.25; + ~melodyNotes = [36,0,0,0, 36,0,0,0, 39,0,0,0, 41,0,0,0, + 36,0,0,0, 36,0,0,0, 41,0,0,0, 39,0,0,0]; + ~reload.value; + 90.wait; + + "[I10 5:30] fmLead -- variations...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.18; + ~reload.value; + 24.do { |k| + if (0.22.coin) { + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~reload.value; + }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[I10 7:30] outro...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.48; ~snareAmp = x * 0.45; ~hatAmp = x * 0.10; + ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I10 8:00] === fin DEEP LIQUID ===".postln; +}).play; +"=== TRACK I10 : DEEP LIQUID 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I11_breakbeat_soul.scd b/sound_algo/tracks/I_liquid_dnb/I11_breakbeat_soul.scd new file mode 100644 index 0000000..17ebb5f --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I11_breakbeat_soul.scd @@ -0,0 +1,80 @@ +// ===================================================================== +// I11_breakbeat_soul.scd -- Album I, track 11/15 +// ===================================================================== + +// --- TRACK I11 : "BREAKBEAT SOUL" 7 minutes -------------------------- +// 0:00 rhodes -> 1:00 break -> 2:30 stab -> 4:30 lead -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I11 0:00] rhodes soul intro...".postln; + ~bpm = 174; + ~melodyInst = \rhodes; ~melodyAttack = 0.01; ~melodyRelease = 0.7; + ~melodyCutoff = 3500; ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.55, ~scaleDorian); + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 60.wait; + + "[I11 1:00] break soulful...".postln; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.48; + ~kickFreq = 52; ~kickPitchAmt = 3.2; ~kickDecay = 0.22; ~kickClick = 0.20; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.48; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.11; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.25; + ~reload.value; + 90.wait; + + "[I11 2:30] stab soulful...".postln; + ~melodyInst = \stab; + ~melodyAttack = 0.001; ~melodyRelease = 0.06; ~melodyDrive = 2.3; + ~melodyCutoff = 3500; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,67,0, 70,0,67,0, 65,0,72,0, 70,0,65,0, + 63,0,67,0, 70,0,67,0, 60,0,65,0, 63,0,60,0]; + ~reload.value; + 24.do { |k| + if (0.22.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleDorian); + ~reload.value; + }; + 5.wait; + }; + + "[I11 4:30] fmLead soul...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.18; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.2, 3000, \sin, 5000) }; + ~reload.value; + 24.do { |k| + if (0.22.coin) { + ~melodyNotes = ~genMelody.(0.55, + [~scaleMinorPent, ~scaleDorian].choose); + ~reload.value; + }; + 5.wait; + }; + + "[I11 6:30] outro...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \rhodes; + ~melodyAttack = 0.02; ~melodyRelease = 1.2; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.48; ~snareAmp = x * 0.48; ~hatAmp = x * 0.11; + ~clapAmp = x * 0.25; ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I11 7:00] === fin BREAKBEAT SOUL ===".postln; +}).play; +"=== TRACK I11 : BREAKBEAT SOUL 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I12_choir_step.scd b/sound_algo/tracks/I_liquid_dnb/I12_choir_step.scd new file mode 100644 index 0000000..987d403 --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I12_choir_step.scd @@ -0,0 +1,63 @@ +// ===================================================================== +// I12_choir_step.scd -- Album I, track 12/15 +// ===================================================================== + +// --- TRACK I12 : "CHOIR STEP" 5 minutes ------------------------------ +// 0:00 choir -> 1:00 amen -> 2:30 lead -> 4:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I12 0:00] choir intro...".postln; + ~bpm = 174; + ~melodyInst = \choir; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 2800; ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 70,0,0,0, 67,0,0,0, 65,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 60.wait; + + "[I12 1:00] amen + choir layered...".postln; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.48; + ~kickFreq = 52; ~kickPitchAmt = 3.5; ~kickDecay = 0.22; ~kickClick = 0.22; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.45; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.10; + ~reload.value; + 90.wait; + + "[I12 2:30] fmLead -- variations...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~reload.value; + 18.do { |k| + if (0.22.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[I12 4:00] outro choir fade...".postln; + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.48; ~snareAmp = x * 0.45; ~hatAmp = x * 0.10; + ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I12 4:30] === fin CHOIR STEP ===".postln; +}).play; +"=== TRACK I12 : CHOIR STEP 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I13_techstep_minimal.scd b/sound_algo/tracks/I_liquid_dnb/I13_techstep_minimal.scd new file mode 100644 index 0000000..d5907a0 --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I13_techstep_minimal.scd @@ -0,0 +1,63 @@ +// ===================================================================== +// I13_techstep_minimal.scd -- Album I, track 13/15 +// ===================================================================== + +// --- TRACK I13 : "TECHSTEP MINIMAL" 4 minutes ------------------------ +// 0:00 amen tight -> 1:00 reese -> 3:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I13 0:00] amen tight techstep...".postln; + ~bpm = 174; + ~kickSteps = [1,0,0,0, 0,0,1,0, 1,0,1,0, 0,0,0,0]; ~kickAmp = 0.55; + ~kickFreq = 58; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; ~kickClick = 0.32; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.55; + ~snareFreq = 260; ~snareNoiseAmt = 0.8; ~snareDecay = 0.08; + ~hatSteps = [1,0,1,0, 0,1,1,1, 1,0,1,0, 0,1,1,1]; ~hatAmp = 0.13; + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~melodyInst = \drone; ~melodyAmp = 0.10; + ~melodyNotes = [36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[I13 1:00] reese minimal...".postln; + ~melodyInst = \reese; + ~melodyAttack = 0.005; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.22; + ~melodyNotes = [36,0,0,0, 36,0,0,0, 39,0,0,0, 41,0,0,0, + 36,0,0,0, 36,0,0,0, 41,0,0,0, 39,0,0,0]; + ~vcfOn !? { ~vcfOn.(\ladder, 1500, 0.5) }; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.4, 1200, \saw, 2200) }; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[I13 3:00] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 0.8; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.55; ~snareAmp = x * 0.55; ~hatAmp = x * 0.13; + ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I13 3:30] === fin TECHSTEP MINIMAL ===".postln; +}).play; +"=== TRACK I13 : TECHSTEP MINIMAL 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I14_amen_breakdown.scd b/sound_algo/tracks/I_liquid_dnb/I14_amen_breakdown.scd new file mode 100644 index 0000000..d96a3e7 --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I14_amen_breakdown.scd @@ -0,0 +1,67 @@ +// ===================================================================== +// I14_amen_breakdown.scd -- Album I, track 14/15 +// ===================================================================== + +// --- TRACK I14 : "AMEN BREAKDOWN" 5 minutes -------------------------- +// 0:00 amen -> 1:00 break -> 2:00 drop -> 4:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I14 0:00] amen + pad...".postln; + ~bpm = 174; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.52; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.20; ~kickClick = 0.25; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.50; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.12; + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + ~melodyInst = \warmPad; ~melodyAmp = 0.14; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 70,0,0,0, 67,0,0,0, 65,0,0,0, 60,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[I14 1:00] BREAKDOWN choir...".postln; + ~kickSteps=(0!16); ~snareSteps=(0!16); ~hatAmp=0.05; + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; ~melodyCutoff = 2800; + ~melodyAmp = 0.22; + ~reload.value; + 60.wait; + + "[I14 2:00] === DROP amen + reese ===".postln; + Synth(\impact, [\freq, 45, \decay, 2, \amp, 0.5]); + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.14; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 1500; + ~melodyAmp = 0.22; + ~melodyNotes = [36,0,0,0, 36,0,0,0, 39,0,0,0, 41,0,0,0, + 36,0,0,0, 36,0,0,0, 41,0,0,0, 39,0,0,0]; + ~vcfOn !? { ~vcfOn.(\ladder, 1500, 0.5) }; + ~reload.value; + 120.wait; + + "[I14 4:00] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~melodyInst = \warmPad; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~kickAmp = x * 0.52; ~snareAmp = x * 0.50; ~hatAmp = x * 0.14; + ~melodyAmp = x * 0.22; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I14 4:30] === fin AMEN BREAKDOWN ===".postln; +}).play; +"=== TRACK I14 : AMEN BREAKDOWN 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/I15_liquid_finale.scd b/sound_algo/tracks/I_liquid_dnb/I15_liquid_finale.scd new file mode 100644 index 0000000..7505406 --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/I15_liquid_finale.scd @@ -0,0 +1,70 @@ +// ===================================================================== +// I15_liquid_finale.scd -- Album I, track 15/15 +// ===================================================================== + +// --- TRACK I15 : "LIQUID FINALE" 6 minutes --------------------------- +// 0:00 pad -> 1:00 rhodes -> 2:00 amen -> 3:30 sub + lead -> 5:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[I15 0:00] vocalPad finale...".postln; + ~bpm = 174; + ~melodyInst = \vocalPad; ~melodyAttack = 0.5; ~melodyRelease = 1.8; + ~melodyCutoff = 2500; ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 72,0,0,0, 75,0,0,0, + 72,0,0,0, 67,0,0,0, 65,0,0,0, 60,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 60.wait; + + "[I15 1:00] rhodes liquid...".postln; + ~melodyInst = \rhodes; + ~melodyAttack = 0.01; ~melodyRelease = 0.7; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~reload.value; + 60.wait; + + "[I15 2:00] amen entre...".postln; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.50; + ~kickFreq = 52; ~kickPitchAmt = 3.5; ~kickDecay = 0.20; ~kickClick = 0.25; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~snareAmp = 0.48; + ~snareFreq = 240; ~snareNoiseAmt = 0.7; ~snareDecay = 0.10; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.12; + ~reload.value; + 90.wait; + + "[I15 3:30] subBoom + fmLead...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 5000; + ~melodyAmp = 0.20; + ~vcfOn !? { ~vcfOn.(\moog, 2500, 0.4) }; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.2, 3000, \sin, 5000) }; + ~melodyNotes = [60,0,67,0, 72,0,67,0, 65,0,72,0, 75,0,70,0, + 63,0,67,0, 70,0,67,0, 60,0,65,0, 63,0,60,0]; + ~reload.value; + 90.wait; + + "[I15 5:00] outro grand fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.6; ~melodyRelease = 2.5; + ~reload.value; + 60.do { |k| + var x = 1 - ((k + 1) / 60); + ~kickAmp = x * 0.50; ~snareAmp = x * 0.48; ~hatAmp = x * 0.12; + ~melodyAmp = x * 0.20; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[I15 6:00] === fin LIQUID FINALE ===".postln; +}).play; +"=== TRACK I15 : LIQUID FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/I_liquid_dnb/_album.scd b/sound_algo/tracks/I_liquid_dnb/_album.scd new file mode 100644 index 0000000..74fc322 --- /dev/null +++ b/sound_algo/tracks/I_liquid_dnb/_album.scd @@ -0,0 +1,54 @@ +// ===================================================================== +// _album.scd -- Album I "Liquid DnB" : 15 tracks orchestrateur +// ===================================================================== + +( // --- SETUP ALBUM I --- +~albums = ~albums ? (); +~albums[\I] = ( + title: "Liquid DnB", + folder: "tracks/I_liquid_dnb/", + tracks: [ + \I01_first_drops, + \I02_smooth_amen, + \I03_rhodes_rain, + \I04_sub_meditation, + \I05_atmospheric_roller, + \I06_jazzy_breaks, + \I07_minimal_dnb, + \I08_jungle_revival, + \I09_neurofunk_lite, + \I10_deep_liquid, + \I11_breakbeat_soul, + \I12_choir_step, + \I13_techstep_minimal, + \I14_amen_breakdown, + \I15_liquid_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album I] setup OK -- ~playTrack.(\\I, n) | ~playAlbum.(\\I) | ~stopAlbum.()".postln; +) + + +// ===================================================================== +// RACCOURCIS LIVE +// ===================================================================== + +( ~playTrack.(\I, 1); ) // I01 first_drops (4 min) +( ~playTrack.(\I, 2); ) // I02 smooth_amen (5 min) +( ~playTrack.(\I, 3); ) // I03 rhodes_rain (6 min) +( ~playTrack.(\I, 4); ) // I04 sub_meditation (7 min) +( ~playTrack.(\I, 5); ) // I05 atmospheric_roller (8 min) +( ~playTrack.(\I, 6); ) // I06 jazzy_breaks (6 min) +( ~playTrack.(\I, 7); ) // I07 minimal_dnb (5 min) +( ~playTrack.(\I, 8); ) // I08 jungle_revival (6 min) +( ~playTrack.(\I, 9); ) // I09 neurofunk_lite (7 min) +( ~playTrack.(\I, 10); ) // I10 deep_liquid (8 min) +( ~playTrack.(\I, 11); ) // I11 breakbeat_soul (7 min) +( ~playTrack.(\I, 12); ) // I12 choir_step (5 min) +( ~playTrack.(\I, 13); ) // I13 techstep_minimal (4 min) +( ~playTrack.(\I, 14); ) // I14 amen_breakdown (5 min) +( ~playTrack.(\I, 15); ) // I15 liquid_finale (6 min) + +( ~playAlbum.(\I); ) +( ~stopAlbum.(); ) diff --git a/sound_algo/tracks/J_ambient_cinematic/J01_first_light.scd b/sound_algo/tracks/J_ambient_cinematic/J01_first_light.scd new file mode 100644 index 0000000..038eb8c --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J01_first_light.scd @@ -0,0 +1,65 @@ +// ===================================================================== +// J01_first_light.scd -- Album J "Ambient Cinematic", track 1/15 +// ===================================================================== + +// --- TRACK J01 : "FIRST LIGHT" 4 minutes ----------------------------- +// 0:00 drone -> 1:00 strings -> 2:30 flute -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J01 0:00] drone aube...".postln; + ~bpm = 70; + ~melodyInst = \drone; ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~melodyCutoff = 1500; ~melodyAmp = 0.20; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 55,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 50, \decay, 8, \amp, 0.4]); + 60.wait; + + "[J01 1:00] strings aurore...".postln; + ~melodyInst = \strings; + ~melodyAttack = 0.4; ~melodyRelease = 1.2; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 74,0,0,0, 72,0,0,0, 67,0,0,0, 65,0,0,0]; + ~reload.value; + 90.wait; + + "[J01 2:30] flute melodique...".postln; + ~melodyInst = \flute; + ~melodyAttack = 0.08; ~melodyRelease = 0.5; ~melodyCutoff = 4000; + ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.4, ~scaleMinorPent); + ~reload.value; + 12.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[J01 3:30] outro lent...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~reload.value; + 20.do { |k| + var x = 1 - ((k + 1) / 20); + ~melodyAmp = x * 0.20; ~melodyCutoff = 200 + (x * 1000); + ~reload.value; 1.5.wait; + }; + Synth(\gong, [\freq, 40, \decay, 12, \amp, 0.5]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J01 4:00] === fin FIRST LIGHT ===".postln; +}).play; +"=== TRACK J01 : FIRST LIGHT 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J02_drone_meditation.scd b/sound_algo/tracks/J_ambient_cinematic/J02_drone_meditation.scd new file mode 100644 index 0000000..dce0361 --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J02_drone_meditation.scd @@ -0,0 +1,60 @@ +// ===================================================================== +// J02_drone_meditation.scd -- Album J, track 2/15 +// ===================================================================== + +// --- TRACK J02 : "DRONE MEDITATION" 5 minutes ------------------------ +// 0:00 drone -> 1:30 didgeridoo -> 3:00 vocalPad -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J02 0:00] drone profond...".postln; + ~bpm = 60; + ~melodyInst = \drone; ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~melodyCutoff = 1200; ~melodyAmp = 0.20; + ~melodyNotes = [36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 36,0,0,0,0,0,0,0, 43,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 45, \decay, 10, \amp, 0.5]); + 90.wait; + + "[J02 1:30] didgeridoo terrestre...".postln; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; ~melodyCutoff = 1500; + ~melodyAmp = 0.22; + ~reload.value; + 90.wait; + + "[J02 3:00] vocalPad spirit...".postln; + ~melodyInst = \vocalPad; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,0,0,0,0,0, 65,0,0,0,0,0,0,0, + 67,0,0,0,0,0,0,0, 60,0,0,0,0,0,0,0]; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.08, 700, \sin, 2200) }; + ~reload.value; + 90.wait; + + "[J02 4:30] outro...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~reload.value; + 20.do { |k| + var x = 1 - ((k + 1) / 20); + ~melodyAmp = x * 0.22; ~melodyCutoff = 200 + (x * 1000); + ~reload.value; 1.5.wait; + }; + Synth(\gong, [\freq, 35, \decay, 15, \amp, 0.6]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J02 5:00] === fin DRONE MEDITATION ===".postln; +}).play; +"=== TRACK J02 : DRONE MEDITATION 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J03_strings_horizon.scd b/sound_algo/tracks/J_ambient_cinematic/J03_strings_horizon.scd new file mode 100644 index 0000000..6c5f18c --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J03_strings_horizon.scd @@ -0,0 +1,66 @@ +// ===================================================================== +// J03_strings_horizon.scd -- Album J, track 3/15 +// ===================================================================== + +// --- TRACK J03 : "STRINGS HORIZON" 6 minutes ------------------------- +// 0:00 drone -> 1:00 strings -> 2:30 handpan -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J03 0:00] drone horizon...".postln; + ~bpm = 75; + ~melodyInst = \drone; ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~melodyCutoff = 1500; ~melodyAmp = 0.18; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 50, \decay, 10, \amp, 0.5]); + 60.wait; + + "[J03 1:00] strings emerge...".postln; + ~melodyInst = \strings; + ~melodyAttack = 0.4; ~melodyRelease = 1.2; ~melodyCutoff = 3500; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 74,0,0,0, 72,0,0,0, 67,0,0,0, 65,0,0,0]; + ~reload.value; + 90.wait; + + "[J03 2:30] handpan delicat...".postln; + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 1.8; ~melodyCutoff = 5000; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,67,0, 70,0,72,0, 75,0,72,70, 67,0,63,60, + 63,0,67,0, 70,0,75,0, 79,0,75,72, 70,0,65,60]; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[J03 4:30] outro...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~melodyCutoff = 200 + (x * 1000); + ~reload.value; 1.wait; + }; + Synth(\gong, [\freq, 40, \decay, 12, \amp, 0.5]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J03 6:00] === fin STRINGS HORIZON ===".postln; +}).play; +"=== TRACK J03 : STRINGS HORIZON 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J04_choir_cathedral.scd b/sound_algo/tracks/J_ambient_cinematic/J04_choir_cathedral.scd new file mode 100644 index 0000000..7081a3a --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J04_choir_cathedral.scd @@ -0,0 +1,73 @@ +// ===================================================================== +// J04_choir_cathedral.scd -- Album J, track 4/15 +// ===================================================================== + +// --- TRACK J04 : "CHOIR CATHEDRAL" 7 minutes ------------------------- +// 0:00 drone -> 1:30 choir -> 3:00 strings -> 4:30 organ -> 6:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J04 0:00] drone cathedral...".postln; + ~bpm = 65; + ~melodyInst = \drone; ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~melodyCutoff = 1500; ~melodyAmp = 0.18; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 55,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 45, \decay, 12, \amp, 0.5]); + 90.wait; + + "[J04 1:30] choir entre...".postln; + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; ~melodyCutoff = 2800; + ~melodyAmp = 0.24; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 70,0,0,0, 67,0,0,0, 65,0,0,0, 60,0,0,0]; + ~reload.value; + 90.wait; + + "[J04 3:00] strings + choir layered...".postln; + ~melodyInst = \strings; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 3500; + ~melodyAmp = 0.22; + ~reload.value; + 18.do { |k| + if (0.18.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleHarmonicMin); + ~reload.value; + }; + 5.wait; + }; + + "[J04 4:30] organ liturgique...".postln; + ~melodyInst = \organLead; + ~melodyAttack = 0.05; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 67,0,0,0, 72,0,0,0, 75,0,0,0, + 77,0,0,0, 75,0,0,0, 72,0,0,0, 67,0,0,0]; + ~reload.value; + 90.wait; + + "[J04 6:00] outro...".postln; + ~melodyInst = \drone; + ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~reload.value; + 40.do { |k| + var x = 1 - ((k + 1) / 40); + ~melodyAmp = x * 0.24; ~melodyCutoff = 200 + (x * 1000); + ~reload.value; 1.5.wait; + }; + Synth(\gong, [\freq, 35, \decay, 15, \amp, 0.6]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J04 7:00] === fin CHOIR CATHEDRAL ===".postln; +}).play; +"=== TRACK J04 : CHOIR CATHEDRAL 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J05_endless_sky.scd b/sound_algo/tracks/J_ambient_cinematic/J05_endless_sky.scd new file mode 100644 index 0000000..10ba79d --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J05_endless_sky.scd @@ -0,0 +1,83 @@ +// ===================================================================== +// J05_endless_sky.scd -- Album J, track 5/15 +// ===================================================================== + +// --- TRACK J05 : "ENDLESS SKY" 8 minutes ----------------------------- +// 0:00 drone -> 1:30 strings -> 3:00 flute -> 4:30 handpan -> 6:00 vocalPad -> 7:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J05 0:00] drone celeste...".postln; + ~bpm = 70; + ~melodyInst = \drone; ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~melodyCutoff = 1500; ~melodyAmp = 0.18; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 50, \decay, 10, \amp, 0.5]); + 90.wait; + + "[J05 1:30] strings...".postln; + ~melodyInst = \strings; + ~melodyAttack = 0.4; ~melodyRelease = 1.2; ~melodyCutoff = 3500; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 74,0,0,0, 72,0,0,0, 67,0,0,0, 65,0,0,0]; + ~reload.value; + 90.wait; + + "[J05 3:00] flute melodique...".postln; + ~melodyInst = \flute; + ~melodyAttack = 0.08; ~melodyRelease = 0.5; ~melodyCutoff = 4000; + ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinorPent); + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[J05 4:30] handpan jardin...".postln; + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 1.8; ~melodyCutoff = 5000; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,67,0, 70,0,72,0, 75,0,72,70, 67,0,63,60, + 63,0,67,0, 70,0,75,0, 79,0,75,72, 70,0,65,60]; + ~reload.value; + 90.wait; + + "[J05 6:00] vocalPad spirit...".postln; + ~melodyInst = \vocalPad; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.08, 700, \sin, 2200) }; + ~reload.value; + 60.wait; + + "[J05 7:00] outro grand fade...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~reload.value; + 40.do { |k| + var x = 1 - ((k + 1) / 40); + ~melodyAmp = x * 0.22; ~melodyCutoff = 200 + (x * 1000); + ~reload.value; 1.5.wait; + }; + Synth(\gong, [\freq, 35, \decay, 15, \amp, 0.6]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J05 8:00] === fin ENDLESS SKY ===".postln; +}).play; +"=== TRACK J05 : ENDLESS SKY 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J06_handpan_garden.scd b/sound_algo/tracks/J_ambient_cinematic/J06_handpan_garden.scd new file mode 100644 index 0000000..acf411d --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J06_handpan_garden.scd @@ -0,0 +1,65 @@ +// ===================================================================== +// J06_handpan_garden.scd -- Album J, track 6/15 +// ===================================================================== + +// --- TRACK J06 : "HANDPAN GARDEN" 6 minutes -------------------------- +// 0:00 drone -> 1:00 handpan -> 2:30 perc tom doux -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J06 0:00] drone jardin...".postln; + ~bpm = 80; + ~melodyInst = \drone; ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~melodyCutoff = 1500; ~melodyAmp = 0.18; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 55,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 60.wait; + + "[J06 1:00] handpan principal...".postln; + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 1.8; ~melodyCutoff = 5000; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,67,0, 70,0,72,0, 75,0,72,70, 67,0,63,60, + 63,0,67,0, 70,0,75,0, 79,0,75,72, 70,0,65,60]; + ~reload.value; + 90.wait; + + "[J06 2:30] tom doux + handpan...".postln; + ~percInst = \tom; + ~percSteps = [1,0,0,0, 0,0,0,1, 0,0,1,0, 0,0,0,0]; ~percAmp = 0.18; + ~tomFreq = 70; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[J06 4:30] outro...".postln; + ~percSteps=(0!16); + ~melodyInst = \drone; + ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~percAmp = x * 0.18; + ~melodyCutoff = 200 + (x * 1000); + ~reload.value; 1.wait; + }; + Synth(\gong, [\freq, 40, \decay, 12, \amp, 0.5]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J06 6:00] === fin HANDPAN GARDEN ===".postln; +}).play; +"=== TRACK J06 : HANDPAN GARDEN 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J07_glacial_drift.scd b/sound_algo/tracks/J_ambient_cinematic/J07_glacial_drift.scd new file mode 100644 index 0000000..d65b98e --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J07_glacial_drift.scd @@ -0,0 +1,66 @@ +// ===================================================================== +// J07_glacial_drift.scd -- Album J, track 7/15 +// ===================================================================== + +// --- TRACK J07 : "GLACIAL DRIFT" 5 minutes --------------------------- +// 0:00 drone glace -> 1:30 vocalPad -> 3:00 strings -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J07 0:00] drone glace...".postln; + ~bpm = 65; + ~melodyInst = \drone; ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~melodyCutoff = 1200; ~melodyAmp = 0.20; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 45, \decay, 10, \amp, 0.5]); + 90.wait; + + "[J07 1:30] vocalPad gel...".postln; + ~melodyInst = \vocalPad; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 63,0,0,0, 67,0,0,0, 70,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 63,0,0,0]; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.05, 700, \sin, 2200) }; + ~reload.value; + 90.wait; + + "[J07 3:00] strings glaciaux...".postln; + ~melodyInst = \strings; + ~melodyAttack = 0.5; ~melodyRelease = 1.5; ~melodyCutoff = 3000; + ~melodyAmp = 0.20; + ~reload.value; + 18.do { |k| + if (0.18.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[J07 4:30] outro...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~reload.value; + 20.do { |k| + var x = 1 - ((k + 1) / 20); + ~melodyAmp = x * 0.20; ~melodyCutoff = 200 + (x * 800); + ~reload.value; 1.5.wait; + }; + Synth(\gong, [\freq, 35, \decay, 15, \amp, 0.6]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J07 5:00] === fin GLACIAL DRIFT ===".postln; +}).play; +"=== TRACK J07 : GLACIAL DRIFT 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J08_dark_matter.scd b/sound_algo/tracks/J_ambient_cinematic/J08_dark_matter.scd new file mode 100644 index 0000000..314b5b6 --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J08_dark_matter.scd @@ -0,0 +1,62 @@ +// ===================================================================== +// J08_dark_matter.scd -- Album J, track 8/15 +// ===================================================================== + +// --- TRACK J08 : "DARK MATTER" 6 minutes ----------------------------- +// 0:00 drone dark -> 1:30 didgeridoo -> 3:00 reese drone -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J08 0:00] drone dark matter...".postln; + ~bpm = 60; + ~melodyInst = \drone; ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~melodyCutoff = 1000; ~melodyAmp = 0.22; + ~melodyNotes = [36,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 36,0,0,0,0,0,0,0, 39,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 35, \decay, 15, \amp, 0.6]); + 90.wait; + + "[J08 1:30] didgeridoo terre...".postln; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; ~melodyCutoff = 1200; + ~melodyAmp = 0.22; + ~reload.value; + 90.wait; + + "[J08 3:00] reese drone obscur...".postln; + ~melodyInst = \reese; + ~melodyAttack = 0.5; ~melodyRelease = 1.5; ~melodyCutoff = 800; + ~melodyDrive = 1.8; ~melodyAmp = 0.22; + ~melodyNotes = [36,0,0,0, 0,0,0,0, 39,0,0,0, 0,0,0,0, + 36,0,0,0, 0,0,0,0, 41,0,0,0, 0,0,0,0]; + ~vcfOn !? { ~vcfOn.(\ladder, 1000, 0.5) }; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.05, 600, \sin, 1500) }; + ~reload.value; + 90.wait; + + "[J08 4:30] outro...".postln; + ~vcfOff !? { ~vcfOff.() }; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~reload.value; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~melodyCutoff = 200 + (x * 800); + ~reload.value; 1.wait; + }; + Synth(\gong, [\freq, 30, \decay, 18, \amp, 0.7]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J08 6:00] === fin DARK MATTER ===".postln; +}).play; +"=== TRACK J08 : DARK MATTER 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J09_oceanic.scd b/sound_algo/tracks/J_ambient_cinematic/J09_oceanic.scd new file mode 100644 index 0000000..a23247d --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J09_oceanic.scd @@ -0,0 +1,74 @@ +// ===================================================================== +// J09_oceanic.scd -- Album J, track 9/15 +// ===================================================================== + +// --- TRACK J09 : "OCEANIC" 7 minutes --------------------------------- +// 0:00 drone ocean -> 1:30 strings vagues -> 3:00 vocalPad -> 4:30 flute -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J09 0:00] drone oceanique...".postln; + ~bpm = 70; + ~melodyInst = \drone; ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~melodyCutoff = 1500; ~melodyAmp = 0.20; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 45, \decay, 10, \amp, 0.5]); + 90.wait; + + "[J09 1:30] strings vagues...".postln; + ~melodyInst = \strings; + ~melodyAttack = 0.6; ~melodyRelease = 1.5; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 74,0,0,0, 72,0,0,0, 67,0,0,0, 65,0,0,0]; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.06, 1500, \sin, 3500) }; + ~reload.value; + 90.wait; + + "[J09 3:00] vocalPad ondulee...".postln; + ~melodyInst = \vocalPad; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 2500; + ~melodyAmp = 0.22; + ~reload.value; + 90.wait; + + "[J09 4:30] flute aquatique...".postln; + ~melodyInst = \flute; + ~melodyAttack = 0.08; ~melodyRelease = 0.5; ~melodyCutoff = 4000; + ~melodyAmp = 0.18; + ~melodyNotes = ~genMelody.(0.4, ~scaleMinorPent); + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[J09 6:30] outro...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~reload.value; + 20.do { |k| + var x = 1 - ((k + 1) / 20); + ~melodyAmp = x * 0.22; ~melodyCutoff = 200 + (x * 1000); + ~reload.value; 1.5.wait; + }; + Synth(\gong, [\freq, 35, \decay, 15, \amp, 0.6]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J09 7:00] === fin OCEANIC ===".postln; +}).play; +"=== TRACK J09 : OCEANIC 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J10_deep_space.scd b/sound_algo/tracks/J_ambient_cinematic/J10_deep_space.scd new file mode 100644 index 0000000..73c6f1a --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J10_deep_space.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// J10_deep_space.scd -- Album J, track 10/15 +// ===================================================================== + +// --- TRACK J10 : "DEEP SPACE" 8 minutes ------------------------------ +// 0:00 drone -> 1:30 vocalPad -> 3:00 strings -> 4:30 didgeridoo -> 6:00 handpan -> 7:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J10 0:00] drone galactique...".postln; + ~bpm = 65; + ~melodyInst = \drone; ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~melodyCutoff = 1500; ~melodyAmp = 0.20; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 55,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 50, \decay, 12, \amp, 0.5]); + 90.wait; + + "[J10 1:30] vocalPad cosmic...".postln; + ~melodyInst = \vocalPad; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 2500; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,0, 63,0,0,0, 67,0,0,0, 70,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 63,0,0,0]; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.05, 800, \sin, 2500) }; + ~reload.value; + 90.wait; + + "[J10 3:00] strings stellaires...".postln; + ~melodyInst = \strings; + ~melodyAttack = 0.5; ~melodyRelease = 1.5; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~reload.value; + 18.do { |k| + if (0.18.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinor); + ~reload.value; + }; + 5.wait; + }; + + "[J10 4:30] didgeridoo planete...".postln; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; ~melodyCutoff = 1500; + ~melodyAmp = 0.22; + ~reload.value; + 90.wait; + + "[J10 6:00] handpan etoiles...".postln; + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 1.8; ~melodyCutoff = 5000; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,67,0, 70,0,72,0, 75,0,72,70, 67,0,63,60, + 63,0,67,0, 70,0,75,0, 79,0,75,72, 70,0,65,60]; + ~reload.value; + 60.wait; + + "[J10 7:00] outro grand fade...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~reload.value; + 40.do { |k| + var x = 1 - ((k + 1) / 40); + ~melodyAmp = x * 0.22; ~melodyCutoff = 200 + (x * 1000); + ~reload.value; 1.5.wait; + }; + Synth(\gong, [\freq, 30, \decay, 18, \amp, 0.7]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J10 8:00] === fin DEEP SPACE ===".postln; +}).play; +"=== TRACK J10 : DEEP SPACE 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J11_neural_dreams.scd b/sound_algo/tracks/J_ambient_cinematic/J11_neural_dreams.scd new file mode 100644 index 0000000..aebdf8f --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J11_neural_dreams.scd @@ -0,0 +1,76 @@ +// ===================================================================== +// J11_neural_dreams.scd -- Album J, track 11/15 +// ===================================================================== + +// --- TRACK J11 : "NEURAL DREAMS" 7 minutes --------------------------- +// 0:00 drone -> 1:30 fmBell -> 3:00 vocalPad -> 4:30 handpan -> 6:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J11 0:00] drone neural...".postln; + ~bpm = 75; + ~melodyInst = \drone; ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~melodyCutoff = 1500; ~melodyAmp = 0.20; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 50, \decay, 10, \amp, 0.5]); + 90.wait; + + "[J11 1:30] fmBell dreams...".postln; + ~melodyInst = \fmBell; + ~melodyAttack = 0.005; ~melodyRelease = 1.2; ~melodyCutoff = 5000; + ~melodyAmp = 0.18; + ~melodyNotes = [60,0,67,0, 72,0,75,0, 70,0,72,0, 67,0,60,0, + 63,0,67,0, 70,0,75,0, 72,0,67,0, 60,0,63,0]; + ~reload.value; + 90.wait; + + "[J11 3:00] vocalPad onirique...".postln; + ~melodyInst = \vocalPad; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 2500; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 70,0,0,0, 67,0,0,0, 65,0,0,0, 60,0,0,0]; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.06, 800, \sin, 2500) }; + ~reload.value; + 90.wait; + + "[J11 4:30] handpan reverie...".postln; + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 1.8; ~melodyCutoff = 5000; + ~melodyAmp = 0.22; + ~melodyNotes = ~genMelody.(0.4, ~scaleMinorPent); + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[J11 6:00] outro...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~reload.value; + 40.do { |k| + var x = 1 - ((k + 1) / 40); + ~melodyAmp = x * 0.22; ~melodyCutoff = 200 + (x * 1000); + ~reload.value; 1.5.wait; + }; + Synth(\gong, [\freq, 35, \decay, 15, \amp, 0.6]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J11 7:00] === fin NEURAL DREAMS ===".postln; +}).play; +"=== TRACK J11 : NEURAL DREAMS 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J12_ritual_bells.scd b/sound_algo/tracks/J_ambient_cinematic/J12_ritual_bells.scd new file mode 100644 index 0000000..83747bf --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J12_ritual_bells.scd @@ -0,0 +1,68 @@ +// ===================================================================== +// J12_ritual_bells.scd -- Album J, track 12/15 +// ===================================================================== + +// --- TRACK J12 : "RITUAL BELLS" 5 minutes ---------------------------- +// 0:00 drone gong -> 1:30 fmBell -> 3:00 handpan -> 4:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J12 0:00] drone + gong rituel...".postln; + ~bpm = 70; + ~melodyInst = \drone; ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~melodyCutoff = 1500; ~melodyAmp = 0.20; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 60, \decay, 10, \amp, 0.5]); + 45.wait; + Synth(\gong, [\freq, 50, \decay, 10, \amp, 0.5]); + 45.wait; + + "[J12 1:30] fmBell ceremonie...".postln; + ~melodyInst = \fmBell; + ~melodyAttack = 0.005; ~melodyRelease = 1.5; ~melodyCutoff = 5500; + ~melodyAmp = 0.20; + ~melodyNotes = [72,0,0,0, 75,0,0,0, 79,0,0,0, 72,0,0,0, + 77,0,0,0, 75,0,0,0, 72,0,0,0, 70,0,0,0]; + ~reload.value; + 90.wait; + + "[J12 3:00] handpan rituel...".postln; + ~melodyInst = \handpan; + ~melodyAttack = 0.001; ~melodyRelease = 1.8; ~melodyCutoff = 5000; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,67,0, 70,0,72,0, 75,0,72,70, 67,0,63,60, + 63,0,67,0, 70,0,75,0, 79,0,75,72, 70,0,65,60]; + ~reload.value; + 12.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[J12 4:00] outro -- gong final...".postln; + Synth(\gong, [\freq, 40, \decay, 15, \amp, 0.6]); + ~melodyInst = \drone; + ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~reload.value; + 20.do { |k| + var x = 1 - ((k + 1) / 20); + ~melodyAmp = x * 0.22; ~melodyCutoff = 200 + (x * 1000); + ~reload.value; 1.5.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J12 5:00] === fin RITUAL BELLS ===".postln; +}).play; +"=== TRACK J12 : RITUAL BELLS 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J13_morning_haze.scd b/sound_algo/tracks/J_ambient_cinematic/J13_morning_haze.scd new file mode 100644 index 0000000..d887ecc --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J13_morning_haze.scd @@ -0,0 +1,63 @@ +// ===================================================================== +// J13_morning_haze.scd -- Album J, track 13/15 +// ===================================================================== + +// --- TRACK J13 : "MORNING HAZE" 4 minutes ---------------------------- +// 0:00 drone -> 1:00 flute -> 2:30 strings -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J13 0:00] drone aurore...".postln; + ~bpm = 80; + ~melodyInst = \drone; ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~melodyCutoff = 1800; ~melodyAmp = 0.18; + ~melodyNotes = [60,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 60,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 60.wait; + + "[J13 1:00] flute matin...".postln; + ~melodyInst = \flute; + ~melodyAttack = 0.08; ~melodyRelease = 0.5; ~melodyCutoff = 4000; + ~melodyAmp = 0.20; + ~melodyNotes = ~genMelody.(0.4, ~scaleMinorPent); + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2, ~scaleMinorPent); + ~reload.value; + }; + 5.wait; + }; + + "[J13 2:30] strings douces...".postln; + ~melodyInst = \strings; + ~melodyAttack = 0.4; ~melodyRelease = 1.2; ~melodyCutoff = 3500; + ~melodyAmp = 0.20; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 74,0,0,0, 72,0,0,0, 67,0,0,0, 65,0,0,0]; + ~reload.value; + 60.wait; + + "[J13 3:30] outro...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.5; ~melodyRelease = 3.0; + ~reload.value; + 20.do { |k| + var x = 1 - ((k + 1) / 20); + ~melodyAmp = x * 0.20; ~melodyCutoff = 200 + (x * 1200); + ~reload.value; 1.5.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J13 4:00] === fin MORNING HAZE ===".postln; +}).play; +"=== TRACK J13 : MORNING HAZE 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J14_gong_threshold.scd b/sound_algo/tracks/J_ambient_cinematic/J14_gong_threshold.scd new file mode 100644 index 0000000..4c595eb --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J14_gong_threshold.scd @@ -0,0 +1,64 @@ +// ===================================================================== +// J14_gong_threshold.scd -- Album J, track 14/15 +// ===================================================================== + +// --- TRACK J14 : "GONG THRESHOLD" 5 minutes -------------------------- +// 0:00 gong + drone -> 1:30 vocalPad -> 3:00 didgeridoo -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J14 0:00] gongs + drone...".postln; + ~bpm = 65; + ~melodyInst = \drone; ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~melodyCutoff = 1200; ~melodyAmp = 0.20; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 60, \decay, 12, \amp, 0.6]); + 30.wait; + Synth(\gong, [\freq, 50, \decay, 12, \amp, 0.5]); + 30.wait; + Synth(\gong, [\freq, 45, \decay, 12, \amp, 0.5]); + 30.wait; + + "[J14 1:30] vocalPad seuil...".postln; + ~melodyInst = \vocalPad; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,0, 63,0,0,0, 67,0,0,0, 70,0,0,0, + 72,0,0,0, 70,0,0,0, 67,0,0,0, 63,0,0,0]; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.05, 700, \sin, 2200) }; + ~reload.value; + 90.wait; + + "[J14 3:00] didgeridoo terre...".postln; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.5; ~melodyRelease = 2.0; ~melodyCutoff = 1500; + ~melodyAmp = 0.22; + ~reload.value; + 90.wait; + + "[J14 4:30] outro -- gong threshold...".postln; + Synth(\gong, [\freq, 35, \decay, 18, \amp, 0.7]); + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~reload.value; + 20.do { |k| + var x = 1 - ((k + 1) / 20); + ~melodyAmp = x * 0.22; ~melodyCutoff = 200 + (x * 800); + ~reload.value; 1.5.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J14 5:00] === fin GONG THRESHOLD ===".postln; +}).play; +"=== TRACK J14 : GONG THRESHOLD 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/J15_eternity_fade.scd b/sound_algo/tracks/J_ambient_cinematic/J15_eternity_fade.scd new file mode 100644 index 0000000..de20442 --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/J15_eternity_fade.scd @@ -0,0 +1,67 @@ +// ===================================================================== +// J15_eternity_fade.scd -- Album J, track 15/15 +// ===================================================================== + +// --- TRACK J15 : "ETERNITY FADE" 6 minutes --------------------------- +// 0:00 drone -> 1:00 strings -> 2:30 choir -> 4:00 vocalPad -> 5:00 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[J15 0:00] drone eternite...".postln; + ~bpm = 60; + ~melodyInst = \drone; ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~melodyCutoff = 1500; ~melodyAmp = 0.20; + ~melodyNotes = [48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 48,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0]; + ~kickSteps=(0!16); ~hatSteps=(0!16); ~snareSteps=(0!16); + ~clapSteps=(0!16); ~percSteps=(0!16); ~acidAmp=0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + Synth(\gong, [\freq, 50, \decay, 12, \amp, 0.5]); + 60.wait; + + "[J15 1:00] strings infinies...".postln; + ~melodyInst = \strings; + ~melodyAttack = 0.6; ~melodyRelease = 1.5; ~melodyCutoff = 3500; + ~melodyAmp = 0.22; + ~melodyNotes = [60,0,0,0, 65,0,0,0, 67,0,0,0, 72,0,0,0, + 74,0,0,0, 72,0,0,0, 67,0,0,0, 65,0,0,0]; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.05, 1500, \sin, 3500) }; + ~reload.value; + 90.wait; + + "[J15 2:30] choir cosmic...".postln; + ~melodyInst = \choir; + ~melodyAttack = 0.5; ~melodyRelease = 1.8; ~melodyCutoff = 2800; + ~melodyAmp = 0.24; + ~reload.value; + 90.wait; + + "[J15 4:00] vocalPad horizon...".postln; + ~melodyInst = \vocalPad; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 2500; + ~melodyAmp = 0.22; + ~reload.value; + 60.wait; + + "[J15 5:00] outro grand fade vers eternite...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~melodyInst = \drone; + ~melodyAttack = 2.0; ~melodyRelease = 3.5; + ~reload.value; + 40.do { |k| + var x = 1 - ((k + 1) / 40); + ~melodyAmp = x * 0.24; ~melodyCutoff = 200 + (x * 1300); + ~reload.value; 1.5.wait; + }; + Synth(\gong, [\freq, 30, \decay, 20, \amp, 0.8]); + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[J15 6:00] === fin ETERNITY FADE ===".postln; +}).play; +"=== TRACK J15 : ETERNITY FADE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/J_ambient_cinematic/_album.scd b/sound_algo/tracks/J_ambient_cinematic/_album.scd new file mode 100644 index 0000000..32e1f81 --- /dev/null +++ b/sound_algo/tracks/J_ambient_cinematic/_album.scd @@ -0,0 +1,54 @@ +// ===================================================================== +// _album.scd -- Album J "Ambient Cinematic" : 15 tracks orchestrateur +// ===================================================================== + +( // --- SETUP ALBUM J --- +~albums = ~albums ? (); +~albums[\J] = ( + title: "Ambient Cinematic", + folder: "tracks/J_ambient_cinematic/", + tracks: [ + \J01_first_light, + \J02_drone_meditation, + \J03_strings_horizon, + \J04_choir_cathedral, + \J05_endless_sky, + \J06_handpan_garden, + \J07_glacial_drift, + \J08_dark_matter, + \J09_oceanic, + \J10_deep_space, + \J11_neural_dreams, + \J12_ritual_bells, + \J13_morning_haze, + \J14_gong_threshold, + \J15_eternity_fade, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album J] setup OK -- ~playTrack.(\\J, n) | ~playAlbum.(\\J) | ~stopAlbum.()".postln; +) + + +// ===================================================================== +// RACCOURCIS LIVE +// ===================================================================== + +( ~playTrack.(\J, 1); ) // J01 first_light (4 min) +( ~playTrack.(\J, 2); ) // J02 drone_meditation (5 min) +( ~playTrack.(\J, 3); ) // J03 strings_horizon (6 min) +( ~playTrack.(\J, 4); ) // J04 choir_cathedral (7 min) +( ~playTrack.(\J, 5); ) // J05 endless_sky (8 min) +( ~playTrack.(\J, 6); ) // J06 handpan_garden (6 min) +( ~playTrack.(\J, 7); ) // J07 glacial_drift (5 min) +( ~playTrack.(\J, 8); ) // J08 dark_matter (6 min) +( ~playTrack.(\J, 9); ) // J09 oceanic (7 min) +( ~playTrack.(\J, 10); ) // J10 deep_space (8 min) +( ~playTrack.(\J, 11); ) // J11 neural_dreams (7 min) +( ~playTrack.(\J, 12); ) // J12 ritual_bells (5 min) +( ~playTrack.(\J, 13); ) // J13 morning_haze (4 min) +( ~playTrack.(\J, 14); ) // J14 gong_threshold (5 min) +( ~playTrack.(\J, 15); ) // J15 eternity_fade (6 min) + +( ~playAlbum.(\J); ) +( ~stopAlbum.(); ) diff --git a/sound_algo/tracks/K_tribal_ethno/K01_tribal_opening.scd b/sound_algo/tracks/K_tribal_ethno/K01_tribal_opening.scd new file mode 100644 index 0000000..da0f785 --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K01_tribal_opening.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K01_tribal_opening.scd -- Album K "TRIBAL OPENING", track 01/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K01 : "TRIBAL OPENING" 4 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 1:48 drop -> 2:48 variation -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K01 0:00] intro -- handpan solo + perc tom...".postln; + ~bpm = 100; + ~kickAmp = 0.51; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 50; ~kickPitchAmt = 3.9; ~kickDecay = 0.31; + ~kickDrive = 1.2; ~kickClick = 0.24; + ~melodyInst = \handpan; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3058; + ~melodyNotes = [64,0,0,0,72,62,55,0,0,0,0,0,0,60,0,72,64,69,72,69,0,0,0,0,0,0,0,0,0,0,0,0]; + ~kickSteps = [0,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0]; + ~hatSteps = [0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,1]; + ~percInst = \tom; + ~percSteps = [0,1,0,0,1,0,0,0,0,0,0,0,1,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 48.wait; + + "[K01 0:48] build -- kick + hat + melody plus dense...".postln; + ~bpm = 104; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [65,0,0,0,0,57,0,69,67,0,0,64,65,72,55,69,0,0,60,0,62,69,57,57,64,55,72,0,65,0,57,60]; + ~melodyCutoff = 3558; + ~percSteps = [1,0,1,0,1,0,1,0,1,1,0,0,1,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 12.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(983, 4058); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K01 1:48] drop -- variation + ensemble dense...".postln; + ~bpm = 96; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.56; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,79,0,77,72,0,0,0,77,0,0,84,87,75,0,0,70,0,0,82,0,0,84,0,0,0,0,84,0,84,0,0]; + ~melodyAmp = 0.24; + ~reload.value; + 10.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,1,0,1,0,1,0,1,1,0,0,1,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[K01 2:48] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 106; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \handpan; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3858; + ~melodyNotes = [36,38,33,0,0,0,33,0,31,0,0,31,0,0,0,45,0,0,41,36,0,41,36,36,0,41,33,40,0,0,0,33]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.2, 983, \sin, 3058) }; + ~vcfOn !? { ~vcfOn.(\moog, 1183, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 42.wait; + + "[K01 3:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.51; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3058); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K01 4:00] === fin TRIBAL OPENING ===".postln; +}).play; +"=== TRACK K01 : TRIBAL OPENING 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K02_handpan_dawn.scd b/sound_algo/tracks/K_tribal_ethno/K02_handpan_dawn.scd new file mode 100644 index 0000000..47b44fe --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K02_handpan_dawn.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K02_handpan_dawn.scd -- Album K "HANDPAN DAWN", track 02/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K02 : "HANDPAN DAWN" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K02 0:00] intro -- handpan solo + perc tom...".postln; + ~bpm = 105; + ~kickAmp = 0.46; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 54; ~kickPitchAmt = 2.4; ~kickDecay = 0.33; + ~kickDrive = 1.2; ~kickClick = 0.15; + ~melodyInst = \handpan; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2371; + ~melodyNotes = [0,0,0,67,70,0,74,0,0,0,60,0,0,0,0,60,67,0,67,0,0,72,0,0,72,0,65,77,0,74,0,0]; + ~kickSteps = [1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0]; + ~hatSteps = [0,0,1,0,0,1,0,0,1,0,0,1,1,0,1,1]; + ~percInst = \tom; + ~percSteps = [0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 60.wait; + + "[K02 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 107; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [62,0,65,69,74,0,69,74,0,0,0,0,70,0,60,0,69,0,69,0,0,0,74,0,70,67,65,0,62,70,70,72]; + ~melodyCutoff = 2871; + ~percSteps = [0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,1]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(927, 3371); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K02 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 109; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.51; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,70,70,75,82,82,87,84,70,80,87,70,0,0,0,87,84,0,0,82,0,0,82,0,87,0,0,0,70,0,80]; + ~melodyAmp = 0.24; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[K02 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 111; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \handpan; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3171; + ~melodyNotes = [0,0,0,0,0,35,0,0,0,0,47,43,0,43,38,35,0,0,0,0,0,0,50,38,0,0,0,0,33,0,0,0]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.24, 927, \sin, 2371) }; + ~vcfOn !? { ~vcfOn.(\moog, 1127, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 60.wait; + + "[K02 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.46; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2371); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K02 5:00] === fin HANDPAN DAWN ===".postln; +}).play; +"=== TRACK K02 : HANDPAN DAWN 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K03_didgeridoo_drift.scd b/sound_algo/tracks/K_tribal_ethno/K03_didgeridoo_drift.scd new file mode 100644 index 0000000..d6a58d4 --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K03_didgeridoo_drift.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K03_didgeridoo_drift.scd -- Album K "DIDGERIDOO DRIFT", track 03/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K03 : "DIDGERIDOO DRIFT" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K03 0:00] intro -- didgeridoo solo + perc tom...".postln; + ~bpm = 95; + ~kickAmp = 0.52; ~hatAmp = 0.06; ~melodyAmp = 0.21; + ~kickFreq = 43; ~kickPitchAmt = 2.1; ~kickDecay = 0.44; + ~kickDrive = 1.2; ~kickClick = 0.26; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2789; + ~melodyNotes = [0,0,65,0,0,72,65,0,0,0,0,63,0,60,0,0,70,0,65,0,70,63,0,0,0,0,0,68,70,0,0,63]; + ~kickSteps = [0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0]; + ~hatSteps = [1,1,0,0,1,1,0,0,0,0,0,0,1,1,0,0]; + ~percInst = \tom; + ~percSteps = [0,0,1,0,0,0,1,1,1,0,0,1,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 72.wait; + + "[K03 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 93; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [75,0,72,75,0,72,0,0,0,58,0,58,0,70,68,0,60,60,0,0,60,0,68,70,70,0,68,75,68,0,0,63]; + ~melodyCutoff = 3289; + ~percSteps = [0,1,1,1,0,1,1,0,0,1,1,1,1,0,0,0]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1034, 3789); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K03 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 95; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.57; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [80,80,84,0,0,70,72,82,80,70,0,0,72,70,0,0,0,84,75,0,75,0,0,0,72,75,0,0,79,0,72,77]; + ~melodyAmp = 0.23; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,1,0,1,1,0,0,1,1,1,1,0,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[K03 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 101; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3589; + ~melodyNotes = [0,41,48,46,53,0,0,36,38,53,41,0,0,0,46,43,45,0,53,0,0,46,48,0,0,0,0,0,0,0,0,0]; + ~melodyAmp = 0.21; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.29, 1034, \sin, 2789) }; + ~vcfOn !? { ~vcfOn.(\moog, 1234, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 78.wait; + + "[K03 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.21; ~kickAmp = x * 0.52; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2789); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K03 6:00] === fin DIDGERIDOO DRIFT ===".postln; +}).play; +"=== TRACK K03 : DIDGERIDOO DRIFT 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K04_taiko_war.scd b/sound_algo/tracks/K_tribal_ethno/K04_taiko_war.scd new file mode 100644 index 0000000..5bb4ee6 --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K04_taiko_war.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K04_taiko_war.scd -- Album K "TAIKO WAR", track 04/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K04 : "TAIKO WAR" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K04 0:00] intro -- taiko solo + perc taiko...".postln; + ~bpm = 110; + ~kickAmp = 0.53; ~hatAmp = 0.06; ~melodyAmp = 0.18; + ~kickFreq = 46; ~kickPitchAmt = 3.2; ~kickDecay = 0.49; + ~kickDrive = 1.2; ~kickClick = 0.13; + ~melodyInst = \taiko; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2620; + ~melodyNotes = [0,65,0,67,0,0,0,60,0,58,68,0,0,0,0,75,58,63,70,0,0,0,0,0,0,58,0,0,0,0,75,75]; + ~kickSteps = [0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0]; + ~hatSteps = [1,0,0,0,1,1,0,0,0,0,1,0,0,0,1,0]; + ~percInst = \taiko; + ~percSteps = [1,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 84.wait; + + "[K04 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 110; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [60,0,0,67,63,72,0,0,58,0,67,67,70,75,0,0,0,0,72,0,0,58,65,70,0,0,65,0,0,67,0,0]; + ~melodyCutoff = 3120; + ~percSteps = [0,0,1,0,1,0,1,1,1,1,0,1,0,0,0,1]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1478, 3620); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K04 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 108; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.58; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [72,81,77,0,0,0,74,0,77,0,0,79,0,0,0,0,67,69,0,0,84,0,0,84,0,84,0,0,0,84,72,0]; + ~melodyAmp = 0.2; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,1,0,1,0,1,1,1,1,0,1,0,0,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[K04 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 108; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \taiko; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3420; + ~melodyNotes = [0,0,0,0,52,48,0,0,0,0,0,0,0,0,40,52,0,50,55,47,0,0,38,0,0,40,0,52,0,0,48,0]; + ~melodyAmp = 0.18; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.3, 1478, \sin, 2620) }; + ~vcfOn !? { ~vcfOn.(\moog, 1678, 0.4) }; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + 96.wait; + + "[K04 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; ~kickAmp = x * 0.53; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2620); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K04 7:00] === fin TAIKO WAR ===".postln; +}).play; +"=== TRACK K04 : TAIKO WAR 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K05_tabla_groove.scd b/sound_algo/tracks/K_tribal_ethno/K05_tabla_groove.scd new file mode 100644 index 0000000..62204cd --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K05_tabla_groove.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K05_tabla_groove.scd -- Album K "TABLA GROOVE", track 05/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K05 : "TABLA GROOVE" 8 minutes ---------------------- +// 0:00 intro -> 1:36 build -> 3:36 drop -> 5:36 variation -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K05 0:00] intro -- tabla solo + perc tabla...".postln; + ~bpm = 115; + ~kickAmp = 0.55; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 56; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.2; ~kickClick = 0.16; + ~melodyInst = \tabla; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2707; + ~melodyNotes = [0,71,0,0,67,76,0,76,74,79,0,0,0,0,0,62,67,0,0,0,67,64,0,0,64,69,71,74,0,0,0,0]; + ~kickSteps = [0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0]; + ~hatSteps = [1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0]; + ~percInst = \tabla; + ~percSteps = [0,0,1,1,0,1,1,1,0,1,0,1,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 96.wait; + + "[K05 1:36] build -- kick + hat + melody plus dense...".postln; + ~bpm = 111; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,62,0,69,0,0,0,0,64,0,64,69,76,0,71,0,69,0,69,0,71,0,0,0,69,79,0,0,0,0,62,64]; + ~melodyCutoff = 3207; + ~percSteps = [0,1,1,0,0,0,1,0,0,1,1,1,1,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(940, 3707); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K05 3:36] drop -- variation + ensemble dense...".postln; + ~bpm = 119; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.6; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [77,70,82,0,0,0,0,0,0,0,82,82,0,84,79,0,0,79,0,0,70,87,0,82,0,0,0,75,75,0,87,0]; + ~melodyAmp = 0.24; + ~reload.value; + 20.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,0,0,0,1,0,0,1,1,1,1,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[K05 5:36] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 113; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \tabla; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3507; + ~melodyNotes = [0,31,48,33,0,41,36,43,0,0,0,38,48,48,0,31,0,0,36,0,0,45,0,0,0,0,36,0,33,0,0,38]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.21, 940, \sin, 2707) }; + ~vcfOn !? { ~vcfOn.(\moog, 1140, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 114.wait; + + "[K05 7:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.55; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2707); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K05 8:00] === fin TABLA GROOVE ===".postln; +}).play; +"=== TRACK K05 : TABLA GROOVE 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K06_jungle_chant.scd b/sound_algo/tracks/K_tribal_ethno/K06_jungle_chant.scd new file mode 100644 index 0000000..44a2d4b --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K06_jungle_chant.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K06_jungle_chant.scd -- Album K "JUNGLE CHANT", track 06/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K06 : "JUNGLE CHANT" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K06 0:00] intro -- flute solo + perc tom...".postln; + ~bpm = 108; + ~kickAmp = 0.5; ~hatAmp = 0.06; ~melodyAmp = 0.19; + ~kickFreq = 57; ~kickPitchAmt = 2.2; ~kickDecay = 0.48; + ~kickDrive = 1.2; ~kickClick = 0.23; + ~melodyInst = \flute; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3706; + ~melodyNotes = [74,67,0,0,69,69,0,77,67,77,0,69,0,0,0,0,0,0,0,0,0,70,62,69,72,0,60,0,0,74,0,0]; + ~kickSteps = [0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0]; + ~hatSteps = [0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0]; + ~percInst = \tom; + ~percSteps = [0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 72.wait; + + "[K06 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 108; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,69,0,0,0,62,74,0,62,0,0,0,70,62,0,62,72,0,77,0,0,0,72,62,0,0,60,0,69,60,77,70]; + ~melodyCutoff = 4206; + ~percSteps = [0,0,1,1,0,1,1,0,0,0,0,1,0,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(926, 4706); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K06 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 106; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.55; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,91,0,81,79,81,0,0,0,86,0,0,0,0,0,0,0,84,0,0,0,0,86,81,91,0,0,76,0,74]; + ~melodyAmp = 0.21; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,1,1,0,1,1,0,0,0,0,1,0,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[K06 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 104; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \flute; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4506; + ~melodyNotes = [0,0,40,0,52,42,0,35,0,0,0,37,52,0,40,42,42,0,0,40,49,0,37,0,0,44,37,45,45,0,47,0]; + ~melodyAmp = 0.19; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.19, 926, \sin, 3706) }; + ~vcfOn !? { ~vcfOn.(\moog, 1126, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 78.wait; + + "[K06 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.19; ~kickAmp = x * 0.5; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3706); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K06 6:00] === fin JUNGLE CHANT ===".postln; +}).play; +"=== TRACK K06 : JUNGLE CHANT 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K07_desert_walk.scd b/sound_algo/tracks/K_tribal_ethno/K07_desert_walk.scd new file mode 100644 index 0000000..48e328d --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K07_desert_walk.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K07_desert_walk.scd -- Album K "DESERT WALK", track 07/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K07 : "DESERT WALK" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K07 0:00] intro -- didgeridoo solo + perc tom...".postln; + ~bpm = 100; + ~kickAmp = 0.54; ~hatAmp = 0.06; ~melodyAmp = 0.21; + ~kickFreq = 52; ~kickPitchAmt = 3.6; ~kickDecay = 0.54; + ~kickDrive = 1.2; ~kickClick = 0.26; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3585; + ~melodyNotes = [71,0,0,0,0,76,0,0,0,74,0,0,0,0,0,0,72,0,64,62,0,0,0,69,79,0,0,0,0,0,76,0]; + ~kickSteps = [0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [1,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0]; + ~percInst = \tom; + ~percSteps = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 60.wait; + + "[K07 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 100; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [62,62,0,71,67,0,74,76,0,62,0,0,62,74,0,71,0,0,76,0,0,0,67,0,0,72,0,67,62,74,79,69]; + ~melodyCutoff = 4085; + ~percSteps = [0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1487, 4585); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K07 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 100; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.59; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,89,0,81,86,0,0,0,86,0,82,0,82,77,89,0,81,0,0,0,81,0,0,0,77,89,0,0,86,84,0,0]; + ~melodyAmp = 0.23; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHigh); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[K07 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 96; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4385; + ~melodyNotes = [0,0,0,0,0,0,0,0,52,35,35,52,0,0,42,42,49,0,44,35,0,40,49,0,0,35,49,47,0,0,0,0]; + ~melodyAmp = 0.21; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.21, 1487, \sin, 3585) }; + ~vcfOn !? { ~vcfOn.(\moog, 1687, 0.4) }; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + 60.wait; + + "[K07 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.21; ~kickAmp = x * 0.54; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3585); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K07 5:00] === fin DESERT WALK ===".postln; +}).play; +"=== TRACK K07 : DESERT WALK 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K08_polyrhythm_storm.scd b/sound_algo/tracks/K_tribal_ethno/K08_polyrhythm_storm.scd new file mode 100644 index 0000000..09fe6a7 --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K08_polyrhythm_storm.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K08_polyrhythm_storm.scd -- Album K "POLYRHYTHM STORM", track 08/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K08 : "POLYRHYTHM STORM" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K08 0:00] intro -- handpan solo + perc tabla...".postln; + ~bpm = 120; + ~kickAmp = 0.46; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 63; ~kickPitchAmt = 3.7; ~kickDecay = 0.27; + ~kickDrive = 1.2; ~kickClick = 0.16; + ~melodyInst = \handpan; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3121; + ~melodyNotes = [0,0,0,58,58,0,68,58,68,75,60,67,58,0,60,0,70,63,0,68,0,0,0,0,67,0,75,0,70,0,65,0]; + ~kickSteps = [0,0,0,1,1,0,0,1,0,0,0,0,0,1,0,0]; + ~hatSteps = [0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,0]; + ~percInst = \tabla; + ~percSteps = [1,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 72.wait; + + "[K08 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 120; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [60,0,60,0,58,68,0,60,0,0,72,0,0,0,75,0,65,65,67,68,75,70,0,63,72,0,65,67,58,0,0,0]; + ~melodyCutoff = 3621; + ~percSteps = [1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(980, 4121); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K08 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 118; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.51; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,80,79,0,0,0,70,0,0,0,0,0,0,0,0,0,0,77,70,0,70,84,0,80,0,0,0,75,0,0]; + ~melodyAmp = 0.25; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHungarian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[K08 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 120; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \handpan; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3921; + ~melodyNotes = [0,33,0,36,36,0,0,45,0,0,38,0,0,40,0,0,0,0,0,0,48,31,45,31,40,0,36,0,0,0,0,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.27, 980, \sin, 3121) }; + ~vcfOn !? { ~vcfOn.(\moog, 1180, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 78.wait; + + "[K08 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.46; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3121); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K08 6:00] === fin POLYRHYTHM STORM ===".postln; +}).play; +"=== TRACK K08 : POLYRHYTHM STORM 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K09_shamanic_trance.scd b/sound_algo/tracks/K_tribal_ethno/K09_shamanic_trance.scd new file mode 100644 index 0000000..e73ed45 --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K09_shamanic_trance.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K09_shamanic_trance.scd -- Album K "SHAMANIC TRANCE", track 09/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K09 : "SHAMANIC TRANCE" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K09 0:00] intro -- drone solo + perc taiko...".postln; + ~bpm = 112; + ~kickAmp = 0.53; ~hatAmp = 0.06; ~melodyAmp = 0.19; + ~kickFreq = 62; ~kickPitchAmt = 2.1; ~kickDecay = 0.5; + ~kickDrive = 1.2; ~kickClick = 0.25; + ~melodyInst = \drone; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3650; + ~melodyNotes = [0,0,0,65,0,60,65,0,57,0,0,0,0,69,0,0,0,0,55,0,0,0,0,0,65,0,0,0,64,55,0,0]; + ~kickSteps = [0,1,1,0,0,0,1,1,0,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0]; + ~percInst = \taiko; + ~percSteps = [0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 84.wait; + + "[K09 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 110; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [64,65,65,69,57,0,0,64,0,64,0,55,0,0,62,0,0,0,65,64,55,60,0,0,0,57,55,0,55,0,67,72]; + ~melodyCutoff = 4150; + ~percSteps = [0,1,1,1,1,0,0,0,0,1,1,0,1,0,1,0]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1372, 4650); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K09 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 116; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.58; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,76,0,69,83,86,86,0,79,76,0,0,0,86,71,74,0,86,0,76,0,0,71,76,0,69,0,83,79,0,0]; + ~melodyAmp = 0.21; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,1,1,0,0,0,0,1,1,0,1,0,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[K09 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 108; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \drone; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4450; + ~melodyNotes = [0,38,41,0,0,0,0,40,0,0,45,48,38,48,0,43,0,0,31,0,0,0,0,43,0,0,40,40,0,38,43,0]; + ~melodyAmp = 0.19; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.28, 1372, \sin, 3650) }; + ~vcfOn !? { ~vcfOn.(\moog, 1572, 0.4) }; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + 96.wait; + + "[K09 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.19; ~kickAmp = x * 0.53; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3650); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K09 7:00] === fin SHAMANIC TRANCE ===".postln; +}).play; +"=== TRACK K09 : SHAMANIC TRANCE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K10_forest_ritual.scd b/sound_algo/tracks/K_tribal_ethno/K10_forest_ritual.scd new file mode 100644 index 0000000..7a09cb2 --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K10_forest_ritual.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K10_forest_ritual.scd -- Album K "FOREST RITUAL", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K10 : "FOREST RITUAL" 8 minutes ---------------------- +// 0:00 intro -> 1:36 build -> 3:36 drop -> 5:36 variation -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K10 0:00] intro -- handpan solo + perc tom...".postln; + ~bpm = 102; + ~kickAmp = 0.54; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 49; ~kickPitchAmt = 2.3; ~kickDecay = 0.53; + ~kickDrive = 1.2; ~kickClick = 0.14; + ~melodyInst = \handpan; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3610; + ~melodyNotes = [66,0,0,59,0,0,0,0,0,71,0,0,0,0,67,0,0,0,74,0,74,64,57,0,0,0,71,0,0,0,0,62]; + ~kickSteps = [0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0]; + ~hatSteps = [0,0,1,1,0,1,0,0,1,0,0,0,1,0,0,0]; + ~percInst = \tom; + ~percSteps = [0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 96.wait; + + "[K10 1:36] build -- kick + hat + melody plus dense...".postln; + ~bpm = 104; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [69,64,66,71,67,71,59,0,64,64,71,0,0,67,57,57,59,74,0,74,67,74,67,64,0,0,71,59,59,71,0,0]; + ~melodyCutoff = 4110; + ~percSteps = [0,1,1,1,1,1,0,0,0,0,1,0,0,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1107, 4610); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K10 3:36] drop -- variation + ensemble dense...".postln; + ~bpm = 98; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.59; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,71,0,0,0,76,0,79,78,78,0,78,0,71,0,0,0,0,0,0,83,0,0,0,0,0,86,0,0,0,0,71]; + ~melodyAmp = 0.25; + ~reload.value; + 20.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,1,1,1,0,0,0,0,1,0,0,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[K10 5:36] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 106; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \handpan; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4410; + ~melodyNotes = [0,40,0,40,35,37,0,0,0,0,0,35,0,40,0,0,52,45,40,0,42,0,0,0,49,0,0,0,0,0,0,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.28, 1107, \sin, 3610) }; + ~vcfOn !? { ~vcfOn.(\moog, 1307, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 114.wait; + + "[K10 7:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.54; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3610); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K10 8:00] === fin FOREST RITUAL ===".postln; +}).play; +"=== TRACK K10 : FOREST RITUAL 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K11_river_song.scd b/sound_algo/tracks/K_tribal_ethno/K11_river_song.scd new file mode 100644 index 0000000..0847082 --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K11_river_song.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K11_river_song.scd -- Album K "RIVER SONG", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K11 : "RIVER SONG" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K11 0:00] intro -- flute solo + perc tom...".postln; + ~bpm = 98; + ~kickAmp = 0.48; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 42; ~kickPitchAmt = 3.4; ~kickDecay = 0.54; + ~kickDrive = 1.2; ~kickClick = 0.17; + ~melodyInst = \flute; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2640; + ~melodyNotes = [0,0,70,0,0,0,65,60,68,0,0,72,0,0,0,65,65,0,72,0,75,0,0,67,63,0,72,0,0,75,0,0]; + ~kickSteps = [0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1]; + ~hatSteps = [0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0]; + ~percInst = \tom; + ~percSteps = [0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 84.wait; + + "[K11 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 94; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [65,65,0,75,67,65,70,0,0,0,0,58,0,75,63,0,0,75,60,0,63,0,0,75,67,0,0,0,65,68,63,0]; + ~melodyCutoff = 3140; + ~percSteps = [1,1,1,0,1,0,1,1,1,1,1,1,0,1,1,0]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(941, 3640); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K11 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 96; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.53; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [82,0,0,87,70,0,77,70,0,0,84,77,87,0,0,77,0,75,79,79,0,84,0,0,0,79,0,0,0,75,87,77]; + ~melodyAmp = 0.25; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,0,1,0,1,1,1,1,1,1,0,1,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[K11 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 98; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \flute; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3440; + ~melodyNotes = [38,0,0,40,43,0,0,0,31,36,33,40,36,0,0,0,0,48,0,38,0,36,31,0,0,33,0,0,38,0,41,43]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.16, 941, \sin, 2640) }; + ~vcfOn !? { ~vcfOn.(\moog, 1141, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 96.wait; + + "[K11 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.48; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2640); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K11 7:00] === fin RIVER SONG ===".postln; +}).play; +"=== TRACK K11 : RIVER SONG 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K12_fire_dance.scd b/sound_algo/tracks/K_tribal_ethno/K12_fire_dance.scd new file mode 100644 index 0000000..414a2e6 --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K12_fire_dance.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K12_fire_dance.scd -- Album K "FIRE DANCE", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K12 : "FIRE DANCE" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K12 0:00] intro -- handpan solo + perc tabla...".postln; + ~bpm = 118; + ~kickAmp = 0.5; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 47; ~kickPitchAmt = 3.0; ~kickDecay = 0.27; + ~kickDrive = 1.2; ~kickClick = 0.28; + ~melodyInst = \handpan; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3607; + ~melodyNotes = [75,0,0,0,65,0,63,68,75,0,0,0,0,65,65,60,0,72,60,75,0,0,75,68,0,60,0,68,0,0,0,0]; + ~kickSteps = [0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1]; + ~percInst = \tabla; + ~percSteps = [0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[K12 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 120; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [75,68,0,0,58,0,0,0,58,0,58,70,72,0,70,60,68,0,68,63,0,0,0,0,67,72,0,0,0,72,0,0]; + ~melodyCutoff = 4107; + ~percSteps = [1,1,1,1,1,0,0,1,0,1,0,0,1,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1448, 4607); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K12 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 122; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.55; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,71,0,74,79,0,71,79,0,78,0,0,74,78,0,0,0,0,86,0,83,78,0,71,0,69,0,0,0,78,81,74]; + ~melodyAmp = 0.25; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,1,1,0,0,1,0,1,0,0,1,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[K12 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 122; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \handpan; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4407; + ~melodyNotes = [0,0,40,49,0,0,42,0,42,49,42,0,0,0,40,45,0,42,0,37,0,0,0,0,35,37,0,0,0,37,40,49]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.29, 1448, \sin, 3607) }; + ~vcfOn !? { ~vcfOn.(\moog, 1648, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 60.wait; + + "[K12 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.5; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3607); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K12 5:00] === fin FIRE DANCE ===".postln; +}).play; +"=== TRACK K12 : FIRE DANCE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K13_mountain_call.scd b/sound_algo/tracks/K_tribal_ethno/K13_mountain_call.scd new file mode 100644 index 0000000..b7e1fc6 --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K13_mountain_call.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K13_mountain_call.scd -- Album K "MOUNTAIN CALL", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K13 : "MOUNTAIN CALL" 4 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 1:48 drop -> 2:48 variation -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K13 0:00] intro -- didgeridoo solo + perc taiko...".postln; + ~bpm = 95; + ~kickAmp = 0.45; ~hatAmp = 0.06; ~melodyAmp = 0.18; + ~kickFreq = 63; ~kickPitchAmt = 2.5; ~kickDecay = 0.46; + ~kickDrive = 1.2; ~kickClick = 0.16; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2590; + ~melodyNotes = [0,0,0,64,71,0,0,79,79,71,0,69,62,0,74,0,0,62,0,71,69,0,0,74,0,0,0,64,0,0,79,79]; + ~kickSteps = [0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,1]; + ~percInst = \taiko; + ~percSteps = [0,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 48.wait; + + "[K13 0:48] build -- kick + hat + melody plus dense...".postln; + ~bpm = 95; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [76,0,64,0,0,74,64,0,0,0,74,0,76,79,0,64,79,0,0,0,0,71,62,62,0,72,0,67,64,76,0,64]; + ~melodyCutoff = 3090; + ~percSteps = [1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1]; ~percAmp = 0.36; + ~reload.value; + 12.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1443, 3590); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K13 1:48] drop -- variation + ensemble dense...".postln; + ~bpm = 91; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.5; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,79,76,0,76,0,83,0,81,91,84,0,0,0,91,0,0,0,0,0,83,0,86,0,0,0,0,91,0,0,86]; + ~melodyAmp = 0.2; + ~reload.value; + 10.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[K13 2:48] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 95; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3390; + ~melodyNotes = [0,0,45,52,0,0,45,0,50,0,0,50,38,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,48,0,0]; + ~melodyAmp = 0.18; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.18, 1443, \sin, 2590) }; + ~vcfOn !? { ~vcfOn.(\moog, 1643, 0.4) }; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + 42.wait; + + "[K13 3:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; ~kickAmp = x * 0.45; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2590); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K13 4:00] === fin MOUNTAIN CALL ===".postln; +}).play; +"=== TRACK K13 : MOUNTAIN CALL 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K14_ancestor_voices.scd b/sound_algo/tracks/K_tribal_ethno/K14_ancestor_voices.scd new file mode 100644 index 0000000..600511b --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K14_ancestor_voices.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K14_ancestor_voices.scd -- Album K "ANCESTOR VOICES", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K14 : "ANCESTOR VOICES" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K14 0:00] intro -- choir solo + perc tom...".postln; + ~bpm = 105; + ~kickAmp = 0.49; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 59; ~kickPitchAmt = 3.8; ~kickDecay = 0.48; + ~kickDrive = 1.2; ~kickClick = 0.14; + ~melodyInst = \choir; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3232; + ~melodyNotes = [67,0,72,0,0,0,0,0,62,0,77,70,0,65,0,74,0,0,0,0,0,0,0,67,0,67,0,0,0,0,65,67]; + ~kickSteps = [1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0]; + ~percInst = \tom; + ~percSteps = [0,0,0,0,1,1,1,0,1,0,1,1,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 60.wait; + + "[K14 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 103; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,69,67,67,67,70,0,0,0,77,65,70,0,70,67,0,0,0,67,0,67,0,0,72,65,69,0,0,74,67,65,69]; + ~melodyCutoff = 3732; + ~percSteps = [1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1229, 4232); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K14 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 101; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.54; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,88,0,0,81,88,91,76,91,0,0,83,79,0,0,76,0,0,91,0,0,0,0,0,0,0,0,0,81,88,74,0]; + ~melodyAmp = 0.25; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[K14 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 109; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \choir; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4032; + ~melodyNotes = [0,0,0,0,38,0,0,0,0,0,0,0,38,0,0,47,0,0,0,40,52,0,48,0,48,40,0,0,0,0,40,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.34, 1229, \sin, 3232) }; + ~vcfOn !? { ~vcfOn.(\moog, 1429, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 60.wait; + + "[K14 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.49; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3232); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K14 5:00] === fin ANCESTOR VOICES ===".postln; +}).play; +"=== TRACK K14 : ANCESTOR VOICES 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/K15_tribal_finale.scd b/sound_algo/tracks/K_tribal_ethno/K15_tribal_finale.scd new file mode 100644 index 0000000..c4b72cc --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/K15_tribal_finale.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// K15_tribal_finale.scd -- Album K "TRIBAL FINALE", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK K15 : "TRIBAL FINALE" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[K15 0:00] intro -- handpan solo + perc taiko...".postln; + ~bpm = 110; + ~kickAmp = 0.48; ~hatAmp = 0.06; ~melodyAmp = 0.2; + ~kickFreq = 53; ~kickPitchAmt = 2.3; ~kickDecay = 0.34; + ~kickDrive = 1.2; ~kickClick = 0.25; + ~melodyInst = \handpan; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3360; + ~melodyNotes = [58,58,0,0,0,0,70,0,0,67,0,0,65,0,0,0,0,0,0,0,0,0,0,65,67,63,67,0,0,63,0,58]; + ~kickSteps = [1,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0]; + ~percInst = \taiko; + ~percSteps = [0,0,1,0,0,0,1,1,0,1,1,0,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 72.wait; + + "[K15 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 110; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [60,58,0,0,0,70,0,75,72,0,70,60,0,0,0,0,0,68,0,0,67,0,67,0,63,58,67,0,72,67,72,0]; + ~melodyCutoff = 3860; + ~percSteps = [1,1,1,1,1,0,1,1,1,0,1,0,0,1,1,0]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1479, 4360); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[K15 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 114; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.53; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,69,83,0,0,0,0,69,0,79,0,0,81,69,0,0,0,0,83,79,0,0,76,69,0,69,0,69,74,79]; + ~melodyAmp = 0.22; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,1,1,0,1,1,1,0,1,0,0,1,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[K15 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 108; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \handpan; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4160; + ~melodyNotes = [43,0,36,0,0,46,0,0,36,0,0,0,0,0,45,50,43,48,0,0,48,0,0,0,53,0,0,0,0,0,0,0]; + ~melodyAmp = 0.2; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.29, 1479, \sin, 3360) }; + ~vcfOn !? { ~vcfOn.(\moog, 1679, 0.4) }; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + 78.wait; + + "[K15 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.2; ~kickAmp = x * 0.48; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3360); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[K15 6:00] === fin TRIBAL FINALE ===".postln; +}).play; +"=== TRACK K15 : TRIBAL FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/K_tribal_ethno/_album.scd b/sound_algo/tracks/K_tribal_ethno/_album.scd new file mode 100644 index 0000000..f306790 --- /dev/null +++ b/sound_algo/tracks/K_tribal_ethno/_album.scd @@ -0,0 +1,84 @@ +// ===================================================================== +// _album.scd -- Album K "Tribal Ethno" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM K (1 fois) +// 3. ~playTrack.(\K, 7) pour jouer la track 7 isolement +// ~playAlbum.(\K) pour enchainer 01 -> 15 +// ~stopAlbum.() pour interrompre l'album +// ===================================================================== + +( // --- SETUP ALBUM K --- +~albums = ~albums ? (); +~albums[\K] = ( + title: "Tribal Ethno", + folder: "tracks/K_tribal_ethno/", + tracks: [ + \K01_tribal_opening, + \K02_handpan_dawn, + \K03_didgeridoo_drift, + \K04_taiko_war, + \K05_tabla_groove, + \K06_jungle_chant, + \K07_desert_walk, + \K08_polyrhythm_storm, + \K09_shamanic_trance, + \K10_forest_ritual, + \K11_river_song, + \K12_fire_dance, + \K13_mountain_call, + \K14_ancestor_voices, + \K15_tribal_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); + +~playTrack = ~playTrack ? { |album = \K, n = 1| + var info, file, path; + info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + file = info[\tracks][n - 1]; + if (file.isNil) { + ("!! track " ++ album ++ n ++ " inexistante (1-" ++ info[\tracks].size ++ ")").postln; + } { + path = (~base ? "") ++ info[\folder] ++ file ++ ".scd"; + ("[ALBUM " ++ album ++ "] track " ++ n ++ " : " ++ file).postln; + path.load; + }; + }; +}; + +~stopAlbum = ~stopAlbum ? { + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[ALBUM] stop".postln; +}; + +~playAlbum = ~playAlbum ? { |album = \K, gap = 8| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ~stopAlbum.(); + ~albumRoutine = Routine({ + ("=== ALBUM " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + ("[ALBUM " ++ album ++ "] -> track " ++ (i + 1) ++ "/" + ++ info[\tracks].size ++ " : " ++ slug + ++ " (" ++ dur ++ "s)").postln; + ~playTrack.(album, i + 1); + (dur + gap).wait; + }; + ("=== ALBUM " ++ album ++ " complete ===").postln; + }).play; + }; +}; + +"[album K] setup OK".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L01_garage_opening.scd b/sound_algo/tracks/L_future_garage/L01_garage_opening.scd new file mode 100644 index 0000000..a87917c --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L01_garage_opening.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L01_garage_opening.scd -- Album L "GARAGE OPENING", track 01/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L01 : "GARAGE OPENING" 4 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 1:48 drop -> 2:48 variation -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L01 0:00] intro -- warmPad solo + perc rim...".postln; + ~bpm = 130; + ~kickAmp = 0.5; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 63; ~kickPitchAmt = 3.4; ~kickDecay = 0.53; + ~kickDrive = 1.2; ~kickClick = 0.2; + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3030; + ~melodyNotes = [74,0,0,0,60,67,0,0,60,67,0,0,0,0,0,0,0,65,0,0,0,0,0,0,72,60,0,0,0,0,0,0]; + ~kickSteps = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0]; + ~percInst = \rim; + ~percSteps = [1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 48.wait; + + "[L01 0:48] build -- kick + hat + melody plus dense...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,60,69,69,0,74,62,72,65,0,74,62,0,74,60,0,72,0,0,77,67,77,0,77,74,62,0,69,70,72,69,67]; + ~melodyCutoff = 3530; + ~percSteps = [0,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1]; ~percAmp = 0.36; + ~reload.value; + 12.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1304, 4030); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L01 1:48] drop -- variation + ensemble dense...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.55; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,84,0,0,0,79,0,80,79,70,79,82,0,0,75,0,0,0,0,72,0,87,0,0,0,70,84,0,0,87,77,70]; + ~melodyAmp = 0.24; + ~reload.value; + 10.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[L01 2:48] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \warmPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3830; + ~melodyNotes = [0,0,0,42,40,0,0,0,44,0,0,52,0,40,0,0,0,0,0,42,0,45,0,35,0,40,0,40,45,0,49,52]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.3, 1304, \sin, 3030) }; + ~vcfOn !? { ~vcfOn.(\moog, 1504, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 42.wait; + + "[L01 3:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.5; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3030); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L01 4:00] === fin GARAGE OPENING ===".postln; +}).play; +"=== TRACK L01 : GARAGE OPENING 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L02_midnight_dub.scd b/sound_algo/tracks/L_future_garage/L02_midnight_dub.scd new file mode 100644 index 0000000..5c16dc1 --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L02_midnight_dub.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L02_midnight_dub.scd -- Album L "MIDNIGHT DUB", track 02/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L02 : "MIDNIGHT DUB" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L02 0:00] intro -- vocalPad solo + perc rim...".postln; + ~bpm = 132; + ~kickAmp = 0.53; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 51; ~kickPitchAmt = 2.6; ~kickDecay = 0.41; + ~kickDrive = 1.2; ~kickClick = 0.23; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3271; + ~melodyNotes = [74,72,0,0,71,0,69,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,79,0,0,0,76,0,0,0]; + ~kickSteps = [1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1]; + ~hatSteps = [1,1,0,0,1,0,1,0,0,1,0,0,0,1,0,1]; + ~percInst = \rim; + ~percSteps = [0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 60.wait; + + "[L02 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,74,76,71,76,74,72,72,72,0,72,0,0,69,69,0,0,0,0,67,0,76,74,62,72,0,62,0,62,76,71,69]; + ~melodyCutoff = 3771; + ~percSteps = [1,0,1,0,1,0,0,1,0,1,0,1,1,1,1,1]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(900, 4271); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L02 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.58; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,80,77,82,82,72,0,79,0,84,87,79,0,0,0,0,0,0,0,0,79,0,87,0,0,0,0,0,0,70]; + ~melodyAmp = 0.25; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,1,0,1,0,0,1,0,1,0,1,1,1,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[L02 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 128; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4071; + ~melodyNotes = [0,45,0,50,0,0,0,52,38,0,43,0,48,0,0,0,0,52,0,0,0,0,50,0,0,0,0,0,0,0,0,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.25, 900, \sin, 3271) }; + ~vcfOn !? { ~vcfOn.(\moog, 1100, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 60.wait; + + "[L02 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.53; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3271); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L02 5:00] === fin MIDNIGHT DUB ===".postln; +}).play; +"=== TRACK L02 : MIDNIGHT DUB 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L03_rain_on_glass.scd b/sound_algo/tracks/L_future_garage/L03_rain_on_glass.scd new file mode 100644 index 0000000..9d13dfa --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L03_rain_on_glass.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L03_rain_on_glass.scd -- Album L "RAIN ON GLASS", track 03/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L03 : "RAIN ON GLASS" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L03 0:00] intro -- warmPad solo + perc hat...".postln; + ~bpm = 135; + ~kickAmp = 0.47; ~hatAmp = 0.06; ~melodyAmp = 0.24; + ~kickFreq = 41; ~kickPitchAmt = 2.9; ~kickDecay = 0.3; + ~kickDrive = 1.2; ~kickClick = 0.14; + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3368; + ~melodyNotes = [0,0,0,0,0,60,0,77,0,67,0,72,60,0,0,0,72,62,0,62,65,60,67,69,0,0,69,70,72,0,0,0]; + ~kickSteps = [0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0]; + ~hatSteps = [1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0]; + ~percInst = \hat; + ~percSteps = [0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 72.wait; + + "[L03 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 135; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,67,0,0,77,62,72,0,0,70,62,65,67,70,72,0,65,0,67,72,65,0,67,77,69,0,0,70,65,0,0,0]; + ~melodyCutoff = 3868; + ~percSteps = [0,1,1,0,1,1,1,1,1,0,1,0,1,1,0,0]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1469, 4368); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L03 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 139; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.52; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [74,69,81,0,0,0,76,0,0,77,67,0,0,0,77,84,76,72,0,79,0,0,0,0,69,67,67,79,0,0,0,0]; + ~melodyAmp = 0.26; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,0,1,1,1,1,1,0,1,0,1,1,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[L03 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 141; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \warmPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4168; + ~melodyNotes = [0,0,0,0,45,42,0,0,35,0,0,47,49,35,0,44,40,37,40,0,0,0,0,0,49,42,45,0,0,0,0,0]; + ~melodyAmp = 0.24; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.33, 1469, \sin, 3368) }; + ~vcfOn !? { ~vcfOn.(\moog, 1669, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 78.wait; + + "[L03 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.24; ~kickAmp = x * 0.47; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3368); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L03 6:00] === fin RAIN ON GLASS ===".postln; +}).play; +"=== TRACK L03 : RAIN ON GLASS 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L04_warehouse_echo.scd b/sound_algo/tracks/L_future_garage/L04_warehouse_echo.scd new file mode 100644 index 0000000..007efc9 --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L04_warehouse_echo.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L04_warehouse_echo.scd -- Album L "WAREHOUSE ECHO", track 04/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L04 : "WAREHOUSE ECHO" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L04 0:00] intro -- pad solo + perc rim...".postln; + ~bpm = 138; + ~kickAmp = 0.45; ~hatAmp = 0.06; ~melodyAmp = 0.24; + ~kickFreq = 52; ~kickPitchAmt = 3.0; ~kickDecay = 0.44; + ~kickDrive = 1.2; ~kickClick = 0.09; + ~melodyInst = \pad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3010; + ~melodyNotes = [0,74,0,64,0,0,64,0,74,62,0,74,0,0,0,62,0,0,57,57,0,67,74,0,0,0,74,74,71,62,0,74]; + ~kickSteps = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1]; + ~hatSteps = [0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0]; + ~percInst = \rim; + ~percSteps = [1,1,1,0,1,1,0,0,0,0,1,0,0,0,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 84.wait; + + "[L04 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [66,0,67,67,0,0,67,74,64,74,71,71,0,69,71,0,0,66,67,71,64,62,66,0,0,64,59,67,0,57,69,66]; + ~melodyCutoff = 3510; + ~percSteps = [1,1,1,1,0,1,1,0,0,0,1,0,0,1,1,0]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1450, 4010); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L04 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.5; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,70,79,80,0,0,75,82,0,0,77,87,87,0,0,0,0,0,80,0,0,0,80,0,72,79,84,82,70,75,0]; + ~melodyAmp = 0.26; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,1,0,1,1,0,0,0,1,0,0,1,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[L04 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 144; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \pad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3810; + ~melodyNotes = [0,0,0,33,0,47,0,0,50,0,0,0,0,0,0,0,47,0,42,0,0,42,33,0,0,0,0,0,0,40,0,0]; + ~melodyAmp = 0.24; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.21, 1450, \sin, 3010) }; + ~vcfOn !? { ~vcfOn.(\moog, 1650, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 96.wait; + + "[L04 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.24; ~kickAmp = x * 0.45; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3010); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L04 7:00] === fin WAREHOUSE ECHO ===".postln; +}).play; +"=== TRACK L04 : WAREHOUSE ECHO 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L05_submerged_bass.scd b/sound_algo/tracks/L_future_garage/L05_submerged_bass.scd new file mode 100644 index 0000000..f52e86a --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L05_submerged_bass.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L05_submerged_bass.scd -- Album L "SUBMERGED BASS", track 05/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L05 : "SUBMERGED BASS" 8 minutes ---------------------- +// 0:00 intro -> 1:36 build -> 3:36 drop -> 5:36 variation -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L05 0:00] intro -- subBoom solo + perc hat...".postln; + ~bpm = 130; + ~kickAmp = 0.55; ~hatAmp = 0.06; ~melodyAmp = 0.19; + ~kickFreq = 57; ~kickPitchAmt = 3.0; ~kickDecay = 0.31; + ~kickDrive = 1.2; ~kickClick = 0.16; + ~melodyInst = \subBoom; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2760; + ~melodyNotes = [0,0,0,60,0,0,0,60,60,77,65,70,0,74,0,0,0,0,67,0,0,77,0,0,0,60,0,0,0,0,0,69]; + ~kickSteps = [0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1]; + ~hatSteps = [0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1]; + ~percInst = \hat; + ~percSteps = [0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 96.wait; + + "[L05 1:36] build -- kick + hat + melody plus dense...".postln; + ~bpm = 126; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [65,72,0,0,69,69,0,72,62,0,65,0,70,0,77,65,60,60,0,69,74,65,0,0,67,77,0,72,0,0,0,0]; + ~melodyCutoff = 3260; + ~percSteps = [0,0,1,1,1,1,0,1,0,1,0,1,1,1,1,1]; ~percAmp = 0.36; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1061, 3760); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L05 3:36] drop -- variation + ensemble dense...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.6; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [72,0,75,82,87,0,0,0,72,82,87,0,0,0,70,0,0,0,0,0,84,84,0,0,0,0,0,0,0,82,0,75]; + ~melodyAmp = 0.21; + ~reload.value; + 20.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,1,1,1,1,0,1,0,1,0,1,1,1,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[L05 5:36] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 128; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \subBoom; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3560; + ~melodyNotes = [0,0,0,52,0,35,0,45,0,42,35,0,0,49,40,0,49,0,0,0,44,0,0,0,0,52,0,35,49,0,49,0]; + ~melodyAmp = 0.19; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.21, 1061, \sin, 2760) }; + ~vcfOn !? { ~vcfOn.(\moog, 1261, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 114.wait; + + "[L05 7:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.19; ~kickAmp = x * 0.55; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2760); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L05 8:00] === fin SUBMERGED BASS ===".postln; +}).play; +"=== TRACK L05 : SUBMERGED BASS 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L06_vocal_haze.scd b/sound_algo/tracks/L_future_garage/L06_vocal_haze.scd new file mode 100644 index 0000000..5ae6863 --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L06_vocal_haze.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L06_vocal_haze.scd -- Album L "VOCAL HAZE", track 06/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L06 : "VOCAL HAZE" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L06 0:00] intro -- vocalPad solo + perc rim...".postln; + ~bpm = 134; + ~kickAmp = 0.48; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 60; ~kickPitchAmt = 2.5; ~kickDecay = 0.5; + ~kickDrive = 1.2; ~kickClick = 0.09; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3383; + ~melodyNotes = [64,71,0,62,0,0,62,74,59,0,67,0,0,0,0,0,0,59,69,0,0,0,67,69,0,0,0,0,0,0,0,59]; + ~kickSteps = [0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0]; + ~hatSteps = [0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1]; + ~percInst = \rim; + ~percSteps = [1,0,0,0,1,1,0,0,1,1,1,0,1,1,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 72.wait; + + "[L06 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [59,66,71,0,64,64,64,0,74,0,67,59,71,74,0,71,67,64,0,0,0,59,64,0,74,64,0,0,0,62,66,0]; + ~melodyCutoff = 3883; + ~percSteps = [1,1,0,1,0,1,0,0,1,1,1,0,1,1,0,0]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1115, 4383); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L06 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.53; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,83,0,0,76,88,86,0,0,0,0,0,0,0,0,0,0,74,0,74,0,86,0,91,0,0,91,0,0,0,91]; + ~melodyAmp = 0.24; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,0,1,0,1,0,0,1,1,1,0,1,1,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[L06 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4183; + ~melodyNotes = [0,52,44,42,0,37,0,0,44,0,0,0,0,0,0,35,0,0,45,40,0,0,35,35,0,40,0,0,37,0,35,0]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.24, 1115, \sin, 3383) }; + ~vcfOn !? { ~vcfOn.(\moog, 1315, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 78.wait; + + "[L06 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.48; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3383); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L06 6:00] === fin VOCAL HAZE ===".postln; +}).play; +"=== TRACK L06 : VOCAL HAZE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L07_step_two.scd b/sound_algo/tracks/L_future_garage/L07_step_two.scd new file mode 100644 index 0000000..a14a6e2 --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L07_step_two.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L07_step_two.scd -- Album L "STEP TWO", track 07/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L07 : "STEP TWO" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L07 0:00] intro -- warmPad solo + perc hat...".postln; + ~bpm = 136; + ~kickAmp = 0.46; ~hatAmp = 0.06; ~melodyAmp = 0.24; + ~kickFreq = 51; ~kickPitchAmt = 2.6; ~kickDecay = 0.38; + ~kickDrive = 1.2; ~kickClick = 0.15; + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3572; + ~melodyNotes = [0,0,0,0,0,0,77,62,0,60,0,60,0,0,0,0,0,72,0,77,0,0,70,0,0,0,65,0,0,67,0,0]; + ~kickSteps = [0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0]; + ~hatSteps = [0,0,0,0,1,1,0,0,0,1,0,1,1,1,0,0]; + ~percInst = \hat; + ~percSteps = [0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 60.wait; + + "[L07 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 138; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [72,65,67,70,0,0,0,69,69,0,0,62,0,62,0,77,0,0,0,67,65,74,0,72,67,70,0,62,60,0,67,0]; + ~melodyCutoff = 4072; + ~percSteps = [1,1,1,1,1,1,1,0,1,1,0,0,1,1,0,0]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1063, 4572); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L07 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 138; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.51; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,79,84,0,74,77,0,0,86,0,0,0,0,0,79,0,74,72,0,84,79,86,74,0,82,77,0,0,89,0,0,79]; + ~melodyAmp = 0.26; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,1,1,1,1,0,1,1,0,0,1,1,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[L07 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \warmPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4372; + ~melodyNotes = [0,0,40,45,0,35,0,0,0,0,0,49,40,0,35,0,0,0,45,0,44,0,40,44,40,0,0,44,0,42,45,45]; + ~melodyAmp = 0.24; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.31, 1063, \sin, 3572) }; + ~vcfOn !? { ~vcfOn.(\moog, 1263, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 60.wait; + + "[L07 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.24; ~kickAmp = x * 0.46; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3572); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L07 5:00] === fin STEP TWO ===".postln; +}).play; +"=== TRACK L07 : STEP TWO 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L08_london_drizzle.scd b/sound_algo/tracks/L_future_garage/L08_london_drizzle.scd new file mode 100644 index 0000000..de96445 --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L08_london_drizzle.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L08_london_drizzle.scd -- Album L "LONDON DRIZZLE", track 08/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L08 : "LONDON DRIZZLE" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L08 0:00] intro -- pad solo + perc rim...".postln; + ~bpm = 132; + ~kickAmp = 0.5; ~hatAmp = 0.06; ~melodyAmp = 0.19; + ~kickFreq = 41; ~kickPitchAmt = 2.3; ~kickDecay = 0.42; + ~kickDrive = 1.2; ~kickClick = 0.15; + ~melodyInst = \pad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3611; + ~melodyNotes = [0,0,65,0,70,0,0,70,0,0,67,67,77,0,0,62,0,77,62,74,70,0,0,69,65,67,0,0,74,72,0,0]; + ~kickSteps = [1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,0,1,0,1,0,1,1,0,0,1,0,1,1,0]; + ~percInst = \rim; + ~percSteps = [0,0,1,1,0,0,0,0,1,0,0,0,1,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 72.wait; + + "[L08 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,60,0,60,70,0,0,77,0,74,70,0,0,65,65,62,0,77,62,0,0,62,60,0,0,70,72,67,72,62,0]; + ~melodyCutoff = 4111; + ~percSteps = [1,1,0,0,0,0,1,0,1,1,0,1,0,0,0,0]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1246, 4611); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L08 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.55; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,69,0,84,81,0,0,74,81,0,79,0,0,0,74,0,72,0,0,72,81,0,81,67,0,0,0,81,74,0,0,0]; + ~melodyAmp = 0.21; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,0,0,0,0,1,0,1,1,0,1,0,0,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[L08 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \pad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4411; + ~melodyNotes = [0,0,0,0,43,0,0,45,33,0,0,0,0,0,0,0,38,33,48,0,38,43,40,0,0,0,0,31,0,0,0,0]; + ~melodyAmp = 0.19; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.23, 1246, \sin, 3611) }; + ~vcfOn !? { ~vcfOn.(\moog, 1446, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 78.wait; + + "[L08 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.19; ~kickAmp = x * 0.5; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3611); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L08 6:00] === fin LONDON DRIZZLE ===".postln; +}).play; +"=== TRACK L08 : LONDON DRIZZLE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L09_breath_pad.scd b/sound_algo/tracks/L_future_garage/L09_breath_pad.scd new file mode 100644 index 0000000..9689d87 --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L09_breath_pad.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L09_breath_pad.scd -- Album L "BREATH PAD", track 09/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L09 : "BREATH PAD" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L09 0:00] intro -- warmPad solo + perc hat...".postln; + ~bpm = 130; + ~kickAmp = 0.46; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 44; ~kickPitchAmt = 2.8; ~kickDecay = 0.46; + ~kickDrive = 1.2; ~kickClick = 0.3; + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3270; + ~melodyNotes = [62,0,57,69,64,0,0,0,57,0,0,0,0,71,0,0,0,0,71,0,0,0,59,0,0,0,74,0,0,0,0,69]; + ~kickSteps = [0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0]; + ~hatSteps = [0,1,0,1,1,1,1,0,0,0,1,1,0,0,0,0]; + ~percInst = \hat; + ~percSteps = [0,0,1,0,0,1,1,1,0,1,1,1,0,0,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 84.wait; + + "[L09 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [57,0,74,74,0,66,0,0,0,66,0,59,69,0,57,0,62,69,0,0,69,59,0,0,69,64,0,59,0,0,0,64]; + ~melodyCutoff = 3770; + ~percSteps = [1,1,1,0,1,0,1,0,1,0,1,1,0,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1348, 4270); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L09 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 126; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.51; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [75,0,75,72,0,79,84,84,82,0,0,0,0,77,0,84,0,0,0,84,84,0,70,72,79,79,0,0,0,0,0,0]; + ~melodyAmp = 0.24; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,0,1,0,1,0,1,0,1,1,0,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[L09 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \warmPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4070; + ~melodyNotes = [0,0,0,0,0,0,45,0,0,50,38,0,0,0,48,43,45,0,46,43,0,0,41,0,0,43,36,0,0,0,48,0]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.3, 1348, \sin, 3270) }; + ~vcfOn !? { ~vcfOn.(\moog, 1548, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 96.wait; + + "[L09 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.46; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3270); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L09 7:00] === fin BREATH PAD ===".postln; +}).play; +"=== TRACK L09 : BREATH PAD 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L10_deep_swing.scd b/sound_algo/tracks/L_future_garage/L10_deep_swing.scd new file mode 100644 index 0000000..3cca52d --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L10_deep_swing.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L10_deep_swing.scd -- Album L "DEEP SWING", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L10 : "DEEP SWING" 8 minutes ---------------------- +// 0:00 intro -> 1:36 build -> 3:36 drop -> 5:36 variation -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L10 0:00] intro -- subBoom solo + perc rim...".postln; + ~bpm = 138; + ~kickAmp = 0.55; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 65; ~kickPitchAmt = 3.9; ~kickDecay = 0.36; + ~kickDrive = 1.2; ~kickClick = 0.24; + ~melodyInst = \subBoom; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3172; + ~melodyNotes = [0,74,74,0,69,0,0,0,0,0,0,0,0,59,69,0,66,62,0,0,66,0,0,64,0,0,0,0,0,59,0,71]; + ~kickSteps = [0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0]; + ~hatSteps = [1,1,0,1,0,0,1,0,0,1,0,0,1,1,0,0]; + ~percInst = \rim; + ~percSteps = [0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 96.wait; + + "[L10 1:36] build -- kick + hat + melody plus dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,62,0,74,0,59,74,62,57,0,0,0,74,74,64,0,57,0,0,66,74,74,0,69,62,0,71,62,0,0,74,71]; + ~melodyCutoff = 3672; + ~percSteps = [0,1,0,0,0,0,0,1,1,1,1,1,0,1,1,0]; ~percAmp = 0.36; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1333, 4172); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L10 3:36] drop -- variation + ensemble dense...".postln; + ~bpm = 138; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.6; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [75,0,82,0,0,82,79,84,87,0,0,72,0,0,87,77,0,80,70,0,0,82,87,77,0,0,75,87,0,0,0,0]; + ~melodyAmp = 0.24; + ~reload.value; + 20.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,0,0,0,0,0,1,1,1,1,1,0,1,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[L10 5:36] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 144; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \subBoom; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3972; + ~melodyNotes = [0,0,31,0,38,0,43,0,0,48,31,0,0,36,0,0,33,33,31,0,0,0,0,0,41,40,43,0,0,0,0,0]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.31, 1333, \sin, 3172) }; + ~vcfOn !? { ~vcfOn.(\moog, 1533, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 114.wait; + + "[L10 7:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.55; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3172); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L10 8:00] === fin DEEP SWING ===".postln; +}).play; +"=== TRACK L10 : DEEP SWING 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L11_ghost_clap.scd b/sound_algo/tracks/L_future_garage/L11_ghost_clap.scd new file mode 100644 index 0000000..1b6f61c --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L11_ghost_clap.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L11_ghost_clap.scd -- Album L "GHOST CLAP", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L11 : "GHOST CLAP" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L11 0:00] intro -- vocalPad solo + perc rim...".postln; + ~bpm = 134; + ~kickAmp = 0.52; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 57; ~kickPitchAmt = 3.9; ~kickDecay = 0.36; + ~kickDrive = 1.2; ~kickClick = 0.17; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2861; + ~melodyNotes = [0,0,0,0,0,55,0,0,0,0,0,0,57,0,0,0,0,62,0,0,64,0,0,0,0,0,62,0,0,0,0,0]; + ~kickSteps = [1,0,0,0,0,0,0,0,1,1,1,0,1,0,1,0]; + ~hatSteps = [0,0,0,0,0,1,0,1,0,1,1,0,0,0,0,0]; + ~percInst = \rim; + ~percSteps = [1,0,1,0,1,0,1,0,1,1,1,0,1,0,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 84.wait; + + "[L11 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,0,0,0,69,55,0,60,0,0,57,0,72,67,62,65,64,0,0,0,57,0,64,0,0,0,72,72,0,0,0]; + ~melodyCutoff = 3361; + ~percSteps = [1,1,1,0,1,0,1,0,1,1,0,1,0,0,0,0]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1189, 3861); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L11 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.57; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [72,0,0,0,0,0,76,84,0,81,74,67,69,0,0,77,79,69,84,0,0,0,77,84,0,79,69,0,69,69,81,0]; + ~melodyAmp = 0.25; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,0,1,0,1,0,1,1,0,1,0,0,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[L11 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3661; + ~melodyNotes = [48,0,0,0,45,0,48,0,43,38,0,55,0,38,47,38,0,40,52,0,0,52,47,0,0,52,0,50,0,0,52,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.19, 1189, \sin, 2861) }; + ~vcfOn !? { ~vcfOn.(\moog, 1389, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 96.wait; + + "[L11 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.52; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2861); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L11 7:00] === fin GHOST CLAP ===".postln; +}).play; +"=== TRACK L11 : GHOST CLAP 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L12_subterranean.scd b/sound_algo/tracks/L_future_garage/L12_subterranean.scd new file mode 100644 index 0000000..91c6001 --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L12_subterranean.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L12_subterranean.scd -- Album L "SUBTERRANEAN", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L12 : "SUBTERRANEAN" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L12 0:00] intro -- warmPad solo + perc hat...".postln; + ~bpm = 136; + ~kickAmp = 0.45; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 65; ~kickPitchAmt = 2.9; ~kickDecay = 0.34; + ~kickDrive = 1.2; ~kickClick = 0.12; + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3051; + ~melodyNotes = [0,77,69,62,0,0,0,0,0,0,74,0,0,0,0,0,0,0,0,0,0,0,74,0,0,0,0,0,0,0,62,0]; + ~kickSteps = [0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0]; + ~hatSteps = [1,1,1,0,0,1,0,0,1,1,0,0,1,1,1,0]; + ~percInst = \hat; + ~percSteps = [0,1,0,1,1,0,0,0,0,0,0,0,0,1,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 60.wait; + + "[L12 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,69,0,0,70,72,0,0,0,60,67,72,67,0,62,69,0,77,0,62,0,72,69,67,0,0,0,60,77,69,0,77]; + ~melodyCutoff = 3551; + ~percSteps = [0,0,0,1,1,0,0,0,1,1,1,1,0,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1349, 4051); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L12 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.5; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,0,0,0,84,0,76,74,0,0,72,76,0,67,79,0,84,76,0,0,69,0,0,0,84,72,84,0,0,0]; + ~melodyAmp = 0.25; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,0,1,1,0,0,0,1,1,1,1,0,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[L12 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \warmPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3851; + ~melodyNotes = [0,0,33,31,0,0,0,0,0,0,0,0,38,48,0,45,0,0,41,0,0,0,0,0,0,0,0,0,0,0,48,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.2, 1349, \sin, 3051) }; + ~vcfOn !? { ~vcfOn.(\moog, 1549, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 60.wait; + + "[L12 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.45; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3051); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L12 5:00] === fin SUBTERRANEAN ===".postln; +}).play; +"=== TRACK L12 : SUBTERRANEAN 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L13_neon_droplets.scd b/sound_algo/tracks/L_future_garage/L13_neon_droplets.scd new file mode 100644 index 0000000..3e28550 --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L13_neon_droplets.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L13_neon_droplets.scd -- Album L "NEON DROPLETS", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L13 : "NEON DROPLETS" 4 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 1:48 drop -> 2:48 variation -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L13 0:00] intro -- rhodes solo + perc rim...".postln; + ~bpm = 132; + ~kickAmp = 0.48; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 43; ~kickPitchAmt = 2.1; ~kickDecay = 0.32; + ~kickDrive = 1.2; ~kickClick = 0.21; + ~melodyInst = \rhodes; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3045; + ~melodyNotes = [60,0,77,0,0,0,0,0,0,69,0,0,0,74,69,0,0,69,0,60,0,0,0,0,0,0,74,72,0,0,77,0]; + ~kickSteps = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,0,0,0,1,0,1,0,0,1,0,1,0,0,1]; + ~percInst = \rim; + ~percSteps = [0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 48.wait; + + "[L13 0:48] build -- kick + hat + melody plus dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [60,0,0,74,0,0,70,0,60,69,60,67,72,69,60,0,72,0,0,65,0,60,65,0,0,65,70,0,0,0,0,0]; + ~melodyCutoff = 3545; + ~percSteps = [0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1]; ~percAmp = 0.36; + ~reload.value; + 12.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1045, 4045); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L13 1:48] drop -- variation + ensemble dense...".postln; + ~bpm = 128; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.53; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,81,0,0,0,86,0,83,0,83,0,86,0,74,78,0,83,0,69,0,81,0,0,0,0,0,0,78,78,0,0]; + ~melodyAmp = 0.25; + ~reload.value; + 10.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHigh); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[L13 2:48] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \rhodes; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3845; + ~melodyNotes = [0,0,0,0,0,44,0,42,0,0,47,44,47,0,37,44,52,47,0,37,35,40,0,0,0,0,0,0,0,0,0,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.2, 1045, \sin, 3045) }; + ~vcfOn !? { ~vcfOn.(\moog, 1245, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 42.wait; + + "[L13 3:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.48; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3045); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L13 4:00] === fin NEON DROPLETS ===".postln; +}).play; +"=== TRACK L13 : NEON DROPLETS 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L14_bassline_dub.scd b/sound_algo/tracks/L_future_garage/L14_bassline_dub.scd new file mode 100644 index 0000000..84ea9cb --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L14_bassline_dub.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L14_bassline_dub.scd -- Album L "BASSLINE DUB", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L14 : "BASSLINE DUB" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L14 0:00] intro -- subBoom solo + perc hat...".postln; + ~bpm = 130; + ~kickAmp = 0.53; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 44; ~kickPitchAmt = 2.9; ~kickDecay = 0.43; + ~kickDrive = 1.2; ~kickClick = 0.14; + ~melodyInst = \subBoom; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3395; + ~melodyNotes = [0,76,0,0,0,0,67,69,62,0,79,0,0,0,0,62,0,0,0,0,0,0,64,0,0,0,67,0,0,0,0,0]; + ~kickSteps = [0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0]; + ~hatSteps = [0,1,1,1,0,0,1,1,0,0,0,0,1,0,0,1]; + ~percInst = \hat; + ~percSteps = [0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[L14 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [72,0,67,62,0,79,0,0,0,0,0,62,0,76,0,0,0,76,64,0,71,0,64,67,0,64,0,69,64,0,79,0]; + ~melodyCutoff = 3895; + ~percSteps = [1,1,0,1,0,1,0,0,1,1,0,1,1,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1218, 4395); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L14 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.58; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [81,0,0,0,86,0,82,0,0,0,0,84,0,74,0,74,0,0,82,0,0,84,0,0,0,0,0,0,0,81,0,82]; + ~melodyAmp = 0.25; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,0,1,0,1,0,0,1,1,0,1,1,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[L14 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \subBoom; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4195; + ~melodyNotes = [0,0,43,0,0,0,38,0,55,0,0,52,0,0,38,0,43,0,50,0,0,55,45,0,0,0,55,0,0,52,45,55]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.34, 1218, \sin, 3395) }; + ~vcfOn !? { ~vcfOn.(\moog, 1418, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 60.wait; + + "[L14 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.53; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3395); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L14 5:00] === fin BASSLINE DUB ===".postln; +}).play; +"=== TRACK L14 : BASSLINE DUB 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/L15_garage_finale.scd b/sound_algo/tracks/L_future_garage/L15_garage_finale.scd new file mode 100644 index 0000000..1335767 --- /dev/null +++ b/sound_algo/tracks/L_future_garage/L15_garage_finale.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// L15_garage_finale.scd -- Album L "GARAGE FINALE", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK L15 : "GARAGE FINALE" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[L15 0:00] intro -- warmPad solo + perc rim...".postln; + ~bpm = 135; + ~kickAmp = 0.5; ~hatAmp = 0.06; ~melodyAmp = 0.2; + ~kickFreq = 54; ~kickPitchAmt = 2.1; ~kickDecay = 0.41; + ~kickDrive = 1.2; ~kickClick = 0.12; + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2677; + ~melodyNotes = [62,0,0,76,72,0,69,64,0,0,0,76,0,0,64,0,0,0,0,0,0,0,64,0,0,79,71,0,67,67,0,64]; + ~kickSteps = [0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0]; + ~percInst = \rim; + ~percSteps = [0,0,0,0,0,1,1,0,0,1,0,1,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 72.wait; + + "[L15 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 131; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [76,67,74,74,0,62,72,74,0,71,69,72,72,76,0,0,0,0,0,0,71,0,72,79,0,79,0,67,0,0,0,71]; + ~melodyCutoff = 3177; + ~percSteps = [0,1,1,1,1,1,0,1,0,1,1,0,1,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1110, 3677); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[L15 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 137; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.55; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [74,0,78,0,0,0,76,0,0,0,86,0,0,0,0,0,83,0,0,0,0,0,0,0,0,79,0,79,86,0,0,69]; + ~melodyAmp = 0.22; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,1,1,1,0,1,0,1,1,0,1,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[L15 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 135; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \warmPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3477; + ~melodyNotes = [45,38,43,0,0,0,0,0,0,55,40,45,45,38,0,0,0,0,45,38,48,0,50,47,0,0,0,0,50,52,0,0]; + ~melodyAmp = 0.2; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.32, 1110, \sin, 2677) }; + ~vcfOn !? { ~vcfOn.(\moog, 1310, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 78.wait; + + "[L15 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.2; ~kickAmp = x * 0.5; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2677); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[L15 6:00] === fin GARAGE FINALE ===".postln; +}).play; +"=== TRACK L15 : GARAGE FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/L_future_garage/_album.scd b/sound_algo/tracks/L_future_garage/_album.scd new file mode 100644 index 0000000..05aeae3 --- /dev/null +++ b/sound_algo/tracks/L_future_garage/_album.scd @@ -0,0 +1,84 @@ +// ===================================================================== +// _album.scd -- Album L "Future Garage" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM L (1 fois) +// 3. ~playTrack.(\L, 7) pour jouer la track 7 isolement +// ~playAlbum.(\L) pour enchainer 01 -> 15 +// ~stopAlbum.() pour interrompre l'album +// ===================================================================== + +( // --- SETUP ALBUM L --- +~albums = ~albums ? (); +~albums[\L] = ( + title: "Future Garage", + folder: "tracks/L_future_garage/", + tracks: [ + \L01_garage_opening, + \L02_midnight_dub, + \L03_rain_on_glass, + \L04_warehouse_echo, + \L05_submerged_bass, + \L06_vocal_haze, + \L07_step_two, + \L08_london_drizzle, + \L09_breath_pad, + \L10_deep_swing, + \L11_ghost_clap, + \L12_subterranean, + \L13_neon_droplets, + \L14_bassline_dub, + \L15_garage_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); + +~playTrack = ~playTrack ? { |album = \L, n = 1| + var info, file, path; + info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + file = info[\tracks][n - 1]; + if (file.isNil) { + ("!! track " ++ album ++ n ++ " inexistante (1-" ++ info[\tracks].size ++ ")").postln; + } { + path = (~base ? "") ++ info[\folder] ++ file ++ ".scd"; + ("[ALBUM " ++ album ++ "] track " ++ n ++ " : " ++ file).postln; + path.load; + }; + }; +}; + +~stopAlbum = ~stopAlbum ? { + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[ALBUM] stop".postln; +}; + +~playAlbum = ~playAlbum ? { |album = \L, gap = 8| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ~stopAlbum.(); + ~albumRoutine = Routine({ + ("=== ALBUM " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + ("[ALBUM " ++ album ++ "] -> track " ++ (i + 1) ++ "/" + ++ info[\tracks].size ++ " : " ++ slug + ++ " (" ++ dur ++ "s)").postln; + ~playTrack.(album, i + 1); + (dur + gap).wait; + }; + ("=== ALBUM " ++ album ++ " complete ===").postln; + }).play; + }; +}; + +"[album L] setup OK".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M01_pixel_intro.scd b/sound_algo/tracks/M_chiptune_madness/M01_pixel_intro.scd new file mode 100644 index 0000000..0b73682 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M01_pixel_intro.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M01_pixel_intro.scd -- Album M "PIXEL INTRO", track 01/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M01 : "PIXEL INTRO" 4 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 1:48 drop -> 2:48 variation -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M01 0:00] intro -- squareLead solo + perc tom...".postln; + ~bpm = 140; + ~kickAmp = 0.5; ~hatAmp = 0.06; ~melodyAmp = 0.21; + ~kickFreq = 63; ~kickPitchAmt = 2.9; ~kickDecay = 0.3; + ~kickDrive = 1.2; ~kickClick = 0.29; + ~melodyInst = \squareLead; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3164; + ~melodyNotes = [0,77,0,70,70,62,72,0,0,0,65,0,0,0,0,74,0,0,0,0,0,62,72,0,0,0,0,77,0,0,67,0]; + ~kickSteps = [1,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,1,0,0,1,0,0,0,0,1,0,0,1,1,0]; + ~percInst = \tom; + ~percSteps = [0,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 48.wait; + + "[M01 0:48] build -- kick + hat + melody plus dense...".postln; + ~bpm = 140; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,69,60,67,0,0,62,60,74,67,74,69,60,65,62,77,0,65,69,62,67,70,0,62,0,0,65,0,67,77,65,0]; + ~melodyCutoff = 3664; + ~percSteps = [1,0,1,1,1,1,1,1,1,0,1,0,0,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 12.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1071, 4164); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M01 1:48] drop -- variation + ensemble dense...".postln; + ~bpm = 142; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.55; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [83,74,0,0,74,0,0,0,0,0,81,74,86,0,0,79,74,74,79,0,76,0,0,78,69,83,79,0,0,86,79,83]; + ~melodyAmp = 0.23; + ~reload.value; + 10.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,1,1,1,1,1,1,1,0,1,0,0,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[M01 2:48] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 144; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \squareLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3964; + ~melodyNotes = [53,0,46,0,48,0,43,0,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,50,0,0,41,0,0,46,0,0]; + ~melodyAmp = 0.21; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.25, 1071, \sin, 3164) }; + ~vcfOn !? { ~vcfOn.(\moog, 1271, 0.4) }; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + 42.wait; + + "[M01 3:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.21; ~kickAmp = x * 0.5; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3164); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M01 4:00] === fin PIXEL INTRO ===".postln; +}).play; +"=== TRACK M01 : PIXEL INTRO 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M02_eight_bit_run.scd b/sound_algo/tracks/M_chiptune_madness/M02_eight_bit_run.scd new file mode 100644 index 0000000..3f972c8 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M02_eight_bit_run.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M02_eight_bit_run.scd -- Album M "EIGHT BIT RUN", track 02/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M02 : "EIGHT BIT RUN" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M02 0:00] intro -- squareLead solo + perc tom...".postln; + ~bpm = 150; + ~kickAmp = 0.55; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 58; ~kickPitchAmt = 3.5; ~kickDecay = 0.34; + ~kickDrive = 1.2; ~kickClick = 0.21; + ~melodyInst = \squareLead; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2460; + ~melodyNotes = [0,0,0,69,62,72,0,0,69,0,70,60,0,0,0,0,0,0,0,67,0,67,0,0,77,0,0,0,62,0,0,77]; + ~kickSteps = [1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1]; + ~hatSteps = [0,0,0,0,0,1,0,1,0,1,1,0,0,1,0,0]; + ~percInst = \tom; + ~percSteps = [1,0,0,0,1,1,0,0,1,1,0,0,1,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 60.wait; + + "[M02 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 148; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,65,0,65,0,0,62,0,70,0,0,0,67,0,0,67,70,0,77,72,60,0,72,0,0,0,0,74,0,70,0]; + ~melodyCutoff = 2960; + ~percSteps = [0,0,0,1,0,0,1,0,0,0,0,1,1,1,1,0]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1276, 3460); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M02 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 146; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.6; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [79,76,0,74,0,84,0,0,81,76,76,0,77,72,0,0,84,74,0,79,74,81,77,0,0,72,72,0,0,77,0,67]; + ~melodyAmp = 0.25; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,0,1,0,0,1,0,0,0,0,1,1,1,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[M02 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 156; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \squareLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3260; + ~melodyNotes = [0,0,0,0,53,50,0,0,0,0,41,0,0,0,53,0,0,43,0,46,38,0,0,50,50,0,0,0,0,38,0,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.19, 1276, \sin, 2460) }; + ~vcfOn !? { ~vcfOn.(\moog, 1476, 0.4) }; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + 60.wait; + + "[M02 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.55; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2460); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M02 5:00] === fin EIGHT BIT RUN ===".postln; +}).play; +"=== TRACK M02 : EIGHT BIT RUN 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M03_boss_battle.scd b/sound_algo/tracks/M_chiptune_madness/M03_boss_battle.scd new file mode 100644 index 0000000..1a5e5b5 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M03_boss_battle.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M03_boss_battle.scd -- Album M "BOSS BATTLE", track 03/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M03 : "BOSS BATTLE" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M03 0:00] intro -- saw3 solo + perc tom...".postln; + ~bpm = 165; + ~kickAmp = 0.48; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 61; ~kickPitchAmt = 3.0; ~kickDecay = 0.3; + ~kickDrive = 1.2; ~kickClick = 0.11; + ~melodyInst = \saw3; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3176; + ~melodyNotes = [0,0,0,70,65,0,0,72,0,0,0,0,65,0,67,62,0,72,0,0,0,70,0,0,65,0,0,0,0,69,0,0]; + ~kickSteps = [0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1]; + ~hatSteps = [1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1]; + ~percInst = \tom; + ~percSteps = [1,0,0,0,1,1,0,0,1,0,1,1,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 72.wait; + + "[M03 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 169; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [62,0,0,60,0,70,0,67,65,0,0,69,0,62,69,70,0,67,0,0,77,0,65,62,65,60,0,0,0,0,65,77]; + ~melodyCutoff = 3676; + ~percSteps = [1,1,0,0,0,1,1,0,1,1,1,1,1,0,1,0]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1312, 4176); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M03 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 169; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.53; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,0,77,0,0,0,72,77,77,0,0,0,72,77,0,72,0,0,79,77,0,0,0,75,70,0,0,70,0,0]; + ~melodyAmp = 0.24; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,0,0,0,1,1,0,1,1,1,1,1,0,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[M03 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 171; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \saw3; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3976; + ~melodyNotes = [46,0,0,45,38,0,45,0,0,48,0,43,0,36,41,41,0,0,0,0,0,0,0,0,0,36,0,0,0,41,48,0]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.23, 1312, \sin, 3176) }; + ~vcfOn !? { ~vcfOn.(\moog, 1512, 0.4) }; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + 78.wait; + + "[M03 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.48; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3176); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M03 6:00] === fin BOSS BATTLE ===".postln; +}).play; +"=== TRACK M03 : BOSS BATTLE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M04_save_point.scd b/sound_algo/tracks/M_chiptune_madness/M04_save_point.scd new file mode 100644 index 0000000..3c310d1 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M04_save_point.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M04_save_point.scd -- Album M "SAVE POINT", track 04/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M04 : "SAVE POINT" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M04 0:00] intro -- stab solo + perc tom...".postln; + ~bpm = 145; + ~kickAmp = 0.54; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 42; ~kickPitchAmt = 3.0; ~kickDecay = 0.41; + ~kickDrive = 1.2; ~kickClick = 0.29; + ~melodyInst = \stab; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3489; + ~melodyNotes = [0,75,0,72,0,0,75,0,0,0,65,0,0,65,0,68,0,63,70,0,0,0,0,0,0,0,0,0,0,0,0,0]; + ~kickSteps = [0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,1,1,1,0,1,0,0,1,1,0,0,0,1,1]; + ~percInst = \tom; + ~percSteps = [0,0,1,0,0,0,0,0,0,1,0,0,1,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 84.wait; + + "[M04 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 149; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,0,0,0,0,58,0,60,0,0,0,68,72,0,63,75,65,68,0,0,0,60,68,75,70,0,0,63,0,0,0]; + ~melodyCutoff = 3989; + ~percSteps = [0,0,1,0,0,1,1,1,0,0,1,0,1,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1359, 4489); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M04 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 145; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.59; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [75,0,84,84,0,84,87,0,70,0,72,82,87,84,79,0,72,0,79,87,80,82,87,84,0,80,0,0,0,72,0,0]; + ~melodyAmp = 0.24; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHigh); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,1,0,0,1,1,1,0,0,1,0,1,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[M04 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 145; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \stab; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4289; + ~melodyNotes = [0,48,0,0,0,38,0,0,45,0,0,45,0,0,33,33,48,40,0,43,0,0,0,48,38,0,0,40,40,0,41,0]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.31, 1359, \sin, 3489) }; + ~vcfOn !? { ~vcfOn.(\moog, 1559, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 96.wait; + + "[M04 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.54; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3489); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M04 7:00] === fin SAVE POINT ===".postln; +}).play; +"=== TRACK M04 : SAVE POINT 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M05_level_one.scd b/sound_algo/tracks/M_chiptune_madness/M05_level_one.scd new file mode 100644 index 0000000..f1d173d --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M05_level_one.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M05_level_one.scd -- Album M "LEVEL ONE", track 05/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M05 : "LEVEL ONE" 8 minutes ---------------------- +// 0:00 intro -> 1:36 build -> 3:36 drop -> 5:36 variation -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M05 0:00] intro -- squareLead solo + perc tom...".postln; + ~bpm = 155; + ~kickAmp = 0.5; ~hatAmp = 0.06; ~melodyAmp = 0.19; + ~kickFreq = 49; ~kickPitchAmt = 2.9; ~kickDecay = 0.47; + ~kickDrive = 1.2; ~kickClick = 0.18; + ~melodyInst = \squareLead; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3722; + ~melodyNotes = [0,62,0,67,0,0,0,0,0,57,0,0,0,66,67,0,57,0,0,0,67,69,0,62,0,66,0,66,62,0,67,0]; + ~kickSteps = [0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0]; + ~percInst = \tom; + ~percSteps = [0,0,1,1,0,0,0,1,1,0,0,0,1,0,1,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 96.wait; + + "[M05 1:36] build -- kick + hat + melody plus dense...".postln; + ~bpm = 157; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [71,0,0,57,66,69,62,0,71,69,62,64,0,0,0,57,59,69,74,67,0,66,0,66,66,59,0,69,66,0,0,0]; + ~melodyCutoff = 4222; + ~percSteps = [0,0,1,1,0,1,0,0,1,0,0,1,1,1,1,0]; ~percAmp = 0.36; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1381, 4722); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M05 3:36] drop -- variation + ensemble dense...".postln; + ~bpm = 153; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.55; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [79,80,0,0,70,75,0,75,75,0,0,80,0,75,0,77,0,0,0,79,0,0,79,72,75,0,70,75,82,87,80,87]; + ~melodyAmp = 0.21; + ~reload.value; + 20.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,1,1,0,1,0,0,1,0,0,1,1,1,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[M05 5:36] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 153; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \squareLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4522; + ~melodyNotes = [52,0,55,0,0,0,0,0,50,52,45,0,0,38,47,0,50,0,45,40,0,0,0,0,43,0,0,0,47,40,0,55]; + ~melodyAmp = 0.19; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.28, 1381, \sin, 3722) }; + ~vcfOn !? { ~vcfOn.(\moog, 1581, 0.4) }; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + 114.wait; + + "[M05 7:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.19; ~kickAmp = x * 0.5; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3722); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M05 8:00] === fin LEVEL ONE ===".postln; +}).play; +"=== TRACK M05 : LEVEL ONE 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M06_game_over.scd b/sound_algo/tracks/M_chiptune_madness/M06_game_over.scd new file mode 100644 index 0000000..7a33a1f --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M06_game_over.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M06_game_over.scd -- Album M "GAME OVER", track 06/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M06 : "GAME OVER" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M06 0:00] intro -- squareLead solo + perc tom...".postln; + ~bpm = 140; + ~kickAmp = 0.5; ~hatAmp = 0.06; ~melodyAmp = 0.2; + ~kickFreq = 40; ~kickPitchAmt = 4.0; ~kickDecay = 0.53; + ~kickDrive = 1.2; ~kickClick = 0.27; + ~melodyInst = \squareLead; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3580; + ~melodyNotes = [60,0,64,72,0,0,0,0,0,0,0,0,62,0,0,65,0,72,55,0,57,0,0,0,0,69,0,62,69,0,0,67]; + ~kickSteps = [1,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0]; + ~hatSteps = [0,0,0,0,1,0,0,0,1,0,1,1,0,1,0,0]; + ~percInst = \tom; + ~percSteps = [0,0,1,0,1,0,1,0,1,1,0,0,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 72.wait; + + "[M06 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 138; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [62,60,0,55,60,62,0,0,0,0,69,67,69,0,0,69,0,0,0,0,72,0,55,0,72,60,64,0,62,0,65,0]; + ~melodyCutoff = 4080; + ~percSteps = [0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,1]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1016, 4580); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M06 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 142; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.55; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,67,0,0,0,0,76,81,0,0,84,74,0,0,0,72,79,0,0,0,74,0,79,79,0,74,69,69,0,0,76]; + ~melodyAmp = 0.22; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[M06 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 140; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \squareLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4380; + ~melodyNotes = [0,0,0,47,0,0,0,49,0,0,42,0,0,40,0,0,0,35,42,44,0,0,37,0,37,0,0,0,42,0,0,0]; + ~melodyAmp = 0.2; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.28, 1016, \sin, 3580) }; + ~vcfOn !? { ~vcfOn.(\moog, 1216, 0.4) }; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + 78.wait; + + "[M06 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.2; ~kickAmp = x * 0.5; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3580); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M06 6:00] === fin GAME OVER ===".postln; +}).play; +"=== TRACK M06 : GAME OVER 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M07_warp_zone.scd b/sound_algo/tracks/M_chiptune_madness/M07_warp_zone.scd new file mode 100644 index 0000000..aefbd66 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M07_warp_zone.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M07_warp_zone.scd -- Album M "WARP ZONE", track 07/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M07 : "WARP ZONE" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M07 0:00] intro -- fmLead solo + perc tom...".postln; + ~bpm = 175; + ~kickAmp = 0.51; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 52; ~kickPitchAmt = 2.6; ~kickDecay = 0.31; + ~kickDrive = 1.2; ~kickClick = 0.13; + ~melodyInst = \fmLead; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2858; + ~melodyNotes = [72,0,0,79,72,0,0,0,76,74,0,0,0,0,0,0,0,0,0,0,71,0,0,0,79,0,0,0,0,69,0,0]; + ~kickSteps = [0,0,0,0,0,0,1,1,1,0,1,0,1,1,0,0]; + ~hatSteps = [0,0,0,0,0,1,1,0,0,0,1,0,0,1,1,0]; + ~percInst = \tom; + ~percSteps = [0,0,0,1,1,1,0,1,0,0,0,0,0,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 60.wait; + + "[M07 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 175; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [67,0,64,0,0,64,67,0,0,64,0,64,0,64,79,76,0,74,0,79,0,79,67,76,0,76,79,79,79,0,0,0]; + ~melodyCutoff = 3358; + ~percSteps = [0,0,0,1,1,1,0,1,1,1,1,1,1,1,1,0]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1481, 3858); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M07 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 173; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.56; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [84,0,81,0,74,0,74,0,0,0,0,67,81,74,72,0,0,67,0,84,76,0,0,0,77,67,0,0,0,79,0,76]; + ~melodyAmp = 0.25; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,0,1,1,1,0,1,1,1,1,1,1,1,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[M07 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 179; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \fmLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3658; + ~melodyNotes = [0,0,0,33,0,40,40,33,0,0,38,0,38,0,0,48,45,0,0,43,40,0,0,0,45,0,0,0,0,43,0,36]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.26, 1481, \sin, 2858) }; + ~vcfOn !? { ~vcfOn.(\moog, 1681, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 60.wait; + + "[M07 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.51; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2858); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M07 5:00] === fin WARP ZONE ===".postln; +}).play; +"=== TRACK M07 : WARP ZONE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M08_coin_rush.scd b/sound_algo/tracks/M_chiptune_madness/M08_coin_rush.scd new file mode 100644 index 0000000..656270e --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M08_coin_rush.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M08_coin_rush.scd -- Album M "COIN RUSH", track 08/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M08 : "COIN RUSH" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M08 0:00] intro -- squareLead solo + perc tom...".postln; + ~bpm = 160; + ~kickAmp = 0.49; ~hatAmp = 0.06; ~melodyAmp = 0.24; + ~kickFreq = 40; ~kickPitchAmt = 2.5; ~kickDecay = 0.47; + ~kickDrive = 1.2; ~kickClick = 0.29; + ~melodyInst = \squareLead; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3550; + ~melodyNotes = [0,0,0,76,67,0,0,0,0,71,0,0,67,67,0,79,62,0,67,69,0,0,76,0,0,0,67,0,0,0,0,0]; + ~kickSteps = [0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0]; + ~hatSteps = [0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,1]; + ~percInst = \tom; + ~percSteps = [0,0,1,0,0,1,1,0,1,1,0,0,0,1,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 72.wait; + + "[M08 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 156; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [76,0,72,67,76,0,0,69,76,0,67,0,0,67,74,76,0,0,71,0,0,76,0,0,0,0,64,0,72,0,0,0]; + ~melodyCutoff = 4050; + ~percSteps = [1,1,1,0,1,1,0,1,1,1,0,0,0,1,1,1]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1125, 4550); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M08 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 158; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.54; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [76,86,0,0,84,0,0,81,76,79,0,0,76,84,0,0,0,86,0,0,0,83,88,76,0,0,0,86,86,0,0,76]; + ~melodyAmp = 0.26; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,0,1,1,0,1,1,1,0,0,0,1,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[M08 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 164; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \squareLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4350; + ~melodyNotes = [0,0,33,36,0,0,38,0,48,48,0,0,43,36,0,0,0,48,43,0,0,0,0,0,0,36,0,0,31,41,0,0]; + ~melodyAmp = 0.24; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.22, 1125, \sin, 3550) }; + ~vcfOn !? { ~vcfOn.(\moog, 1325, 0.4) }; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + 78.wait; + + "[M08 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.24; ~kickAmp = x * 0.49; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3550); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M08 6:00] === fin COIN RUSH ===".postln; +}).play; +"=== TRACK M08 : COIN RUSH 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M09_speedrun.scd b/sound_algo/tracks/M_chiptune_madness/M09_speedrun.scd new file mode 100644 index 0000000..8577116 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M09_speedrun.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M09_speedrun.scd -- Album M "SPEEDRUN", track 09/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M09 : "SPEEDRUN" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M09 0:00] intro -- saw3 solo + perc tom...".postln; + ~bpm = 180; + ~kickAmp = 0.54; ~hatAmp = 0.06; ~melodyAmp = 0.24; + ~kickFreq = 41; ~kickPitchAmt = 3.2; ~kickDecay = 0.28; + ~kickDrive = 1.2; ~kickClick = 0.27; + ~melodyInst = \saw3; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3747; + ~melodyNotes = [0,0,0,0,0,0,0,0,69,0,0,0,0,60,0,0,0,57,0,0,62,0,0,0,0,67,0,0,67,67,60,62]; + ~kickSteps = [0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0]; + ~hatSteps = [0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0]; + ~percInst = \tom; + ~percSteps = [0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 84.wait; + + "[M09 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 178; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [67,69,0,67,67,0,55,62,0,65,62,60,69,72,62,0,0,0,72,0,64,0,64,65,62,57,72,0,0,55,69,69]; + ~melodyCutoff = 4247; + ~percSteps = [1,0,1,0,1,1,0,1,1,1,0,1,0,0,0,0]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1293, 4747); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M09 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 176; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.59; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,89,0,0,0,89,81,0,82,0,72,0,0,89,77,0,0,0,0,84,0,0,79,0,0,0,0,72,0,82,0,0]; + ~melodyAmp = 0.26; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,1,0,1,1,0,1,1,1,0,1,0,0,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[M09 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 178; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \saw3; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4547; + ~melodyNotes = [0,42,45,0,0,0,0,40,40,0,40,0,0,0,40,35,0,0,0,0,0,0,0,0,0,0,43,33,35,40,0,0]; + ~melodyAmp = 0.24; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.16, 1293, \sin, 3747) }; + ~vcfOn !? { ~vcfOn.(\moog, 1493, 0.4) }; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + 96.wait; + + "[M09 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.24; ~kickAmp = x * 0.54; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3747); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M09 7:00] === fin SPEEDRUN ===".postln; +}).play; +"=== TRACK M09 : SPEEDRUN 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M10_hidden_stage.scd b/sound_algo/tracks/M_chiptune_madness/M10_hidden_stage.scd new file mode 100644 index 0000000..82235b2 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M10_hidden_stage.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M10_hidden_stage.scd -- Album M "HIDDEN STAGE", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M10 : "HIDDEN STAGE" 8 minutes ---------------------- +// 0:00 intro -> 1:36 build -> 3:36 drop -> 5:36 variation -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M10 0:00] intro -- stab solo + perc tom...".postln; + ~bpm = 150; + ~kickAmp = 0.49; ~hatAmp = 0.06; ~melodyAmp = 0.2; + ~kickFreq = 59; ~kickPitchAmt = 2.5; ~kickDecay = 0.33; + ~kickDrive = 1.2; ~kickClick = 0.14; + ~melodyInst = \stab; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2805; + ~melodyNotes = [0,60,0,0,0,70,0,0,67,0,0,0,63,0,0,67,0,0,0,0,67,0,0,0,0,68,0,0,0,0,0,65]; + ~kickSteps = [0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0]; + ~hatSteps = [0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0]; + ~percInst = \tom; + ~percSteps = [0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 96.wait; + + "[M10 1:36] build -- kick + hat + melody plus dense...".postln; + ~bpm = 150; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [75,0,0,58,65,63,0,68,0,70,72,67,0,68,0,0,75,0,65,0,0,0,0,75,72,0,68,72,0,0,0,65]; + ~melodyCutoff = 3305; + ~percSteps = [0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1455, 3805); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M10 3:36] drop -- variation + ensemble dense...".postln; + ~bpm = 146; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.54; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,0,0,74,0,0,0,67,0,72,69,0,0,79,0,0,72,77,0,0,0,0,0,84,0,84,0,74,0,0]; + ~melodyAmp = 0.22; + ~reload.value; + 20.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHigh); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[M10 5:36] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 148; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \stab; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3605; + ~melodyNotes = [48,43,45,0,38,0,0,48,0,47,0,52,48,0,55,0,45,38,52,0,0,0,52,0,48,0,38,0,55,0,0,48]; + ~melodyAmp = 0.2; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.28, 1455, \sin, 2805) }; + ~vcfOn !? { ~vcfOn.(\moog, 1655, 0.4) }; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + 114.wait; + + "[M10 7:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.2; ~kickAmp = x * 0.49; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2805); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M10 8:00] === fin HIDDEN STAGE ===".postln; +}).play; +"=== TRACK M10 : HIDDEN STAGE 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M11_retro_arcade.scd b/sound_algo/tracks/M_chiptune_madness/M11_retro_arcade.scd new file mode 100644 index 0000000..1b9809b --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M11_retro_arcade.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M11_retro_arcade.scd -- Album M "RETRO ARCADE", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M11 : "RETRO ARCADE" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M11 0:00] intro -- squareLead solo + perc tom...".postln; + ~bpm = 145; + ~kickAmp = 0.52; ~hatAmp = 0.06; ~melodyAmp = 0.24; + ~kickFreq = 43; ~kickPitchAmt = 3.9; ~kickDecay = 0.49; + ~kickDrive = 1.2; ~kickClick = 0.24; + ~melodyInst = \squareLead; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2480; + ~melodyNotes = [76,0,0,0,67,0,0,0,0,67,0,62,69,0,74,64,71,67,67,62,0,0,72,74,0,76,0,72,69,0,69,76]; + ~kickSteps = [0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1]; + ~percInst = \tom; + ~percSteps = [1,0,1,1,0,1,0,1,1,1,1,0,0,1,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 84.wait; + + "[M11 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 147; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,0,79,0,76,0,79,0,74,0,67,71,0,72,0,62,0,0,0,67,0,69,0,0,0,0,0,0,0,69,0]; + ~melodyCutoff = 2980; + ~percSteps = [0,1,1,1,0,1,1,0,1,1,1,1,0,0,0,1]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(988, 3480); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M11 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 147; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.57; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,69,0,0,77,0,77,81,81,0,77,84,81,0,81,0,0,84,76,0,84,0,0,0,0,74,84,0,69,0,0,0]; + ~melodyAmp = 0.26; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,1,0,1,1,0,1,1,1,1,0,0,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[M11 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 145; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \squareLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3280; + ~melodyNotes = [0,38,0,0,0,0,36,0,40,0,31,0,0,48,0,43,45,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0]; + ~melodyAmp = 0.24; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.19, 988, \sin, 2480) }; + ~vcfOn !? { ~vcfOn.(\moog, 1188, 0.4) }; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + 96.wait; + + "[M11 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.24; ~kickAmp = x * 0.52; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2480); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M11 7:00] === fin RETRO ARCADE ===".postln; +}).play; +"=== TRACK M11 : RETRO ARCADE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M12_glitch_world.scd b/sound_algo/tracks/M_chiptune_madness/M12_glitch_world.scd new file mode 100644 index 0000000..794c9d0 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M12_glitch_world.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M12_glitch_world.scd -- Album M "GLITCH WORLD", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M12 : "GLITCH WORLD" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M12 0:00] intro -- fmLead solo + perc tom...".postln; + ~bpm = 170; + ~kickAmp = 0.46; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 56; ~kickPitchAmt = 3.4; ~kickDecay = 0.49; + ~kickDrive = 1.2; ~kickClick = 0.29; + ~melodyInst = \fmLead; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3354; + ~melodyNotes = [0,55,0,69,0,62,0,0,55,0,0,60,72,0,65,64,0,57,65,0,55,0,0,62,0,0,0,67,0,0,69,0]; + ~kickSteps = [0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,1]; + ~hatSteps = [0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1]; + ~percInst = \tom; + ~percSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 60.wait; + + "[M12 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 170; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,67,0,0,0,72,0,67,62,0,0,0,57,72,57,0,0,72,0,0,57,0,0,67,72,69,69,57,67,0,65,60]; + ~melodyCutoff = 3854; + ~percSteps = [1,1,0,1,0,1,0,1,1,0,1,1,1,0,0,0]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1280, 4354); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M12 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 174; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.51; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [86,78,0,0,83,69,74,0,83,0,0,0,0,0,79,0,0,79,78,0,79,0,74,74,0,0,0,0,81,79,0,0]; + ~melodyAmp = 0.24; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHungarian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,0,1,0,1,0,1,1,0,1,1,1,0,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[M12 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 170; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \fmLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4154; + ~melodyNotes = [42,0,52,47,0,35,0,0,0,35,0,52,47,0,0,0,37,47,0,0,52,52,0,0,0,0,40,0,0,0,0,0]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.22, 1280, \sin, 3354) }; + ~vcfOn !? { ~vcfOn.(\moog, 1480, 0.4) }; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + 60.wait; + + "[M12 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.46; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3354); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M12 5:00] === fin GLITCH WORLD ===".postln; +}).play; +"=== TRACK M12 : GLITCH WORLD 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M13_final_boss.scd b/sound_algo/tracks/M_chiptune_madness/M13_final_boss.scd new file mode 100644 index 0000000..28e3b25 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M13_final_boss.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M13_final_boss.scd -- Album M "FINAL BOSS", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M13 : "FINAL BOSS" 4 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 1:48 drop -> 2:48 variation -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M13 0:00] intro -- saw3 solo + perc tom...".postln; + ~bpm = 175; + ~kickAmp = 0.49; ~hatAmp = 0.06; ~melodyAmp = 0.2; + ~kickFreq = 58; ~kickPitchAmt = 3.8; ~kickDecay = 0.35; + ~kickDrive = 1.2; ~kickClick = 0.1; + ~melodyInst = \saw3; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2861; + ~melodyNotes = [0,0,0,0,0,62,0,0,71,69,0,72,69,0,67,0,0,62,0,67,0,79,0,79,0,0,0,71,72,74,0,62]; + ~kickSteps = [0,0,1,0,1,0,1,1,0,0,1,1,1,0,0,0]; + ~hatSteps = [0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1]; + ~percInst = \tom; + ~percSteps = [0,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 48.wait; + + "[M13 0:48] build -- kick + hat + melody plus dense...".postln; + ~bpm = 177; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,74,0,0,0,0,67,0,0,71,64,0,67,64,64,62,0,79,79,0,62,69,0,0,0,0,0,0,0,0,74]; + ~melodyCutoff = 3361; + ~percSteps = [1,0,0,1,1,0,0,0,1,1,1,1,1,0,1,0]; ~percAmp = 0.36; + ~reload.value; + 12.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1500, 3861); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M13 1:48] drop -- variation + ensemble dense...".postln; + ~bpm = 173; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.54; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,86,86,0,0,89,72,0,0,86,77,86,0,84,86,0,0,84,84,0,84,77,0,0,0,0,0,0,0,0,0]; + ~melodyAmp = 0.22; + ~reload.value; + 10.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,0,1,1,0,0,0,1,1,1,1,1,0,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[M13 2:48] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 179; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \saw3; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3661; + ~melodyNotes = [0,0,40,0,0,0,44,42,40,35,45,0,0,49,0,49,0,0,0,0,0,35,47,37,45,0,0,0,0,0,35,49]; + ~melodyAmp = 0.2; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.22, 1500, \sin, 2861) }; + ~vcfOn !? { ~vcfOn.(\moog, 1700, 0.4) }; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + 42.wait; + + "[M13 3:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.2; ~kickAmp = x * 0.49; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2861); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M13 4:00] === fin FINAL BOSS ===".postln; +}).play; +"=== TRACK M13 : FINAL BOSS 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M14_victory_theme.scd b/sound_algo/tracks/M_chiptune_madness/M14_victory_theme.scd new file mode 100644 index 0000000..5f13a25 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M14_victory_theme.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M14_victory_theme.scd -- Album M "VICTORY THEME", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M14 : "VICTORY THEME" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M14 0:00] intro -- squareLead solo + perc tom...".postln; + ~bpm = 160; + ~kickAmp = 0.49; ~hatAmp = 0.06; ~melodyAmp = 0.2; + ~kickFreq = 54; ~kickPitchAmt = 3.7; ~kickDecay = 0.4; + ~kickDrive = 1.2; ~kickClick = 0.2; + ~melodyInst = \squareLead; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2854; + ~melodyNotes = [0,62,69,57,0,0,0,0,0,0,0,0,69,0,0,0,65,0,0,0,0,0,0,0,55,67,0,0,0,64,69,0]; + ~kickSteps = [0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0]; + ~hatSteps = [0,0,1,0,1,0,0,0,0,1,1,1,0,0,0,1]; + ~percInst = \tom; + ~percSteps = [0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 60.wait; + + "[M14 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 164; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [62,64,0,64,64,64,62,65,65,55,0,57,62,72,0,0,0,0,0,0,64,64,69,0,0,0,72,69,60,64,0,69]; + ~melodyCutoff = 3354; + ~percSteps = [1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1248, 3854); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M14 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 156; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.54; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,89,0,0,82,84,86,81,84,74,89,89,0,0,0,79,0,77,81,0,74,89,77,84,0,74,0,0,0,0,0,81]; + ~melodyAmp = 0.22; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHigh); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[M14 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 160; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \squareLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3654; + ~melodyNotes = [0,0,40,47,0,0,33,0,0,0,45,35,0,47,47,0,0,45,47,0,0,38,0,38,0,42,40,42,0,0,35,0]; + ~melodyAmp = 0.2; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.18, 1248, \sin, 2854) }; + ~vcfOn !? { ~vcfOn.(\moog, 1448, 0.4) }; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + 60.wait; + + "[M14 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.2; ~kickAmp = x * 0.49; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2854); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M14 5:00] === fin VICTORY THEME ===".postln; +}).play; +"=== TRACK M14 : VICTORY THEME 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/M15_credits_chip.scd b/sound_algo/tracks/M_chiptune_madness/M15_credits_chip.scd new file mode 100644 index 0000000..d21f013 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/M15_credits_chip.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// M15_credits_chip.scd -- Album M "CREDITS CHIP", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK M15 : "CREDITS CHIP" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[M15 0:00] intro -- stab solo + perc tom...".postln; + ~bpm = 150; + ~kickAmp = 0.53; ~hatAmp = 0.06; ~melodyAmp = 0.19; + ~kickFreq = 45; ~kickPitchAmt = 3.4; ~kickDecay = 0.45; + ~kickDrive = 1.2; ~kickClick = 0.13; + ~melodyInst = \stab; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2707; + ~melodyNotes = [67,0,0,70,0,0,74,0,0,69,0,0,0,0,0,62,0,0,0,0,0,77,67,0,69,0,0,0,0,0,72,74]; + ~kickSteps = [0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0]; + ~hatSteps = [1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; + ~percInst = \tom; + ~percSteps = [0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 72.wait; + + "[M15 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 146; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,0,0,0,60,77,62,62,69,65,74,0,0,0,77,0,65,0,60,0,0,0,0,70,62,0,0,77,0,0,0]; + ~melodyCutoff = 3207; + ~percSteps = [1,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1435, 3707); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[M15 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 152; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.58; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [86,0,74,0,0,84,77,74,0,0,82,0,0,0,86,0,0,79,77,0,72,0,0,89,0,0,0,0,0,0,0,77]; + ~melodyAmp = 0.21; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[M15 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 156; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \stab; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3507; + ~melodyNotes = [52,0,0,52,0,0,0,0,44,0,0,0,0,0,49,45,0,42,42,0,0,0,0,37,37,0,0,0,0,47,49,0]; + ~melodyAmp = 0.19; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.29, 1435, \sin, 2707) }; + ~vcfOn !? { ~vcfOn.(\moog, 1635, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 78.wait; + + "[M15 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.19; ~kickAmp = x * 0.53; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2707); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[M15 6:00] === fin CREDITS CHIP ===".postln; +}).play; +"=== TRACK M15 : CREDITS CHIP 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/M_chiptune_madness/_album.scd b/sound_algo/tracks/M_chiptune_madness/_album.scd new file mode 100644 index 0000000..4ed2b42 --- /dev/null +++ b/sound_algo/tracks/M_chiptune_madness/_album.scd @@ -0,0 +1,84 @@ +// ===================================================================== +// _album.scd -- Album M "Chiptune Madness" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM M (1 fois) +// 3. ~playTrack.(\M, 7) pour jouer la track 7 isolement +// ~playAlbum.(\M) pour enchainer 01 -> 15 +// ~stopAlbum.() pour interrompre l'album +// ===================================================================== + +( // --- SETUP ALBUM M --- +~albums = ~albums ? (); +~albums[\M] = ( + title: "Chiptune Madness", + folder: "tracks/M_chiptune_madness/", + tracks: [ + \M01_pixel_intro, + \M02_eight_bit_run, + \M03_boss_battle, + \M04_save_point, + \M05_level_one, + \M06_game_over, + \M07_warp_zone, + \M08_coin_rush, + \M09_speedrun, + \M10_hidden_stage, + \M11_retro_arcade, + \M12_glitch_world, + \M13_final_boss, + \M14_victory_theme, + \M15_credits_chip, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); + +~playTrack = ~playTrack ? { |album = \M, n = 1| + var info, file, path; + info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + file = info[\tracks][n - 1]; + if (file.isNil) { + ("!! track " ++ album ++ n ++ " inexistante (1-" ++ info[\tracks].size ++ ")").postln; + } { + path = (~base ? "") ++ info[\folder] ++ file ++ ".scd"; + ("[ALBUM " ++ album ++ "] track " ++ n ++ " : " ++ file).postln; + path.load; + }; + }; +}; + +~stopAlbum = ~stopAlbum ? { + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[ALBUM] stop".postln; +}; + +~playAlbum = ~playAlbum ? { |album = \M, gap = 8| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ~stopAlbum.(); + ~albumRoutine = Routine({ + ("=== ALBUM " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + ("[ALBUM " ++ album ++ "] -> track " ++ (i + 1) ++ "/" + ++ info[\tracks].size ++ " : " ++ slug + ++ " (" ++ dur ++ "s)").postln; + ~playTrack.(album, i + 1); + (dur + gap).wait; + }; + ("=== ALBUM " ++ album ++ " complete ===").postln; + }).play; + }; +}; + +"[album M] setup OK".postln; +) diff --git a/sound_algo/tracks/N_phonk/N01_phonk_opening.scd b/sound_algo/tracks/N_phonk/N01_phonk_opening.scd new file mode 100644 index 0000000..a36c0f7 --- /dev/null +++ b/sound_algo/tracks/N_phonk/N01_phonk_opening.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N01_phonk_opening.scd -- Album N "PHONK OPENING", track 01/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N01 : "PHONK OPENING" 4 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 1:48 drop -> 2:48 variation -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N01 0:00] intro -- warmPad solo + perc cowbell...".postln; + ~bpm = 130; + ~kickAmp = 0.54; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 61; ~kickPitchAmt = 2.4; ~kickDecay = 0.34; + ~kickDrive = 1.2; ~kickClick = 0.17; + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2870; + ~melodyNotes = [0,72,70,0,0,0,72,70,62,0,0,0,67,67,0,0,70,0,65,0,0,62,0,62,0,77,0,0,60,0,72,60]; + ~kickSteps = [0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0]; + ~hatSteps = [1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,0]; + ~percInst = \cowbell; + ~percSteps = [1,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 48.wait; + + "[N01 0:48] build -- kick + hat + melody plus dense...".postln; + ~bpm = 128; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [72,0,62,69,74,0,62,67,0,0,62,60,0,67,0,60,60,72,0,69,70,0,0,0,0,60,0,0,0,0,72,72]; + ~melodyCutoff = 3370; + ~percSteps = [0,1,0,1,0,0,0,0,0,1,1,1,1,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 12.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(970, 3870); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N01 1:48] drop -- variation + ensemble dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.59; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [79,81,0,79,84,0,84,84,76,0,0,77,79,81,84,0,67,0,0,0,79,77,69,0,0,0,0,0,69,84,72,0]; + ~melodyAmp = 0.25; + ~reload.value; + 10.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,0,1,0,0,0,0,0,1,1,1,1,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[N01 2:48] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \warmPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3670; + ~melodyNotes = [47,0,35,40,50,0,0,0,0,0,0,33,0,33,0,0,40,0,0,0,0,35,0,47,0,0,45,38,50,0,0,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.2, 970, \sin, 2870) }; + ~vcfOn !? { ~vcfOn.(\moog, 1170, 0.4) }; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + 42.wait; + + "[N01 3:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.54; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2870); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N01 4:00] === fin PHONK OPENING ===".postln; +}).play; +"=== TRACK N01 : PHONK OPENING 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N02_memphis_drift.scd b/sound_algo/tracks/N_phonk/N02_memphis_drift.scd new file mode 100644 index 0000000..571a101 --- /dev/null +++ b/sound_algo/tracks/N_phonk/N02_memphis_drift.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N02_memphis_drift.scd -- Album N "MEMPHIS DRIFT", track 02/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N02 : "MEMPHIS DRIFT" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N02 0:00] intro -- subBoom solo + perc cowbell...".postln; + ~bpm = 132; + ~kickAmp = 0.53; ~hatAmp = 0.06; ~melodyAmp = 0.19; + ~kickFreq = 42; ~kickPitchAmt = 2.5; ~kickDecay = 0.53; + ~kickDrive = 1.2; ~kickClick = 0.11; + ~melodyInst = \subBoom; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3411; + ~melodyNotes = [59,74,67,0,0,0,74,0,66,0,0,0,67,59,0,0,0,0,64,0,0,64,0,74,0,0,0,0,0,0,0,0]; + ~kickSteps = [0,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0]; + ~hatSteps = [0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0]; + ~percInst = \cowbell; + ~percSteps = [0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 60.wait; + + "[N02 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [64,0,0,0,69,0,0,67,62,66,59,0,67,0,0,74,0,66,0,0,0,0,64,0,67,71,0,71,62,59,66,0]; + ~melodyCutoff = 3911; + ~percSteps = [0,1,1,0,0,1,0,0,1,0,1,1,1,0,0,0]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1300, 4411); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N02 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.58; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [84,0,0,74,77,74,69,0,67,72,69,0,81,0,74,0,0,0,77,0,0,74,0,0,74,79,79,69,0,0,0,0]; + ~melodyAmp = 0.21; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,0,0,1,0,0,1,0,1,1,1,0,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[N02 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \subBoom; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4211; + ~melodyNotes = [0,52,44,0,0,52,0,0,0,40,0,52,37,0,52,0,47,0,47,0,0,44,37,0,0,49,0,49,0,35,45,0]; + ~melodyAmp = 0.19; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.23, 1300, \sin, 3411) }; + ~vcfOn !? { ~vcfOn.(\moog, 1500, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 60.wait; + + "[N02 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.19; ~kickAmp = x * 0.53; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3411); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N02 5:00] === fin MEMPHIS DRIFT ===".postln; +}).play; +"=== TRACK N02 : MEMPHIS DRIFT 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N03_cowbell_curse.scd b/sound_algo/tracks/N_phonk/N03_cowbell_curse.scd new file mode 100644 index 0000000..47f1ffa --- /dev/null +++ b/sound_algo/tracks/N_phonk/N03_cowbell_curse.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N03_cowbell_curse.scd -- Album N "COWBELL CURSE", track 03/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N03 : "COWBELL CURSE" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N03 0:00] intro -- fmBass solo + perc cowbell...".postln; + ~bpm = 135; + ~kickAmp = 0.54; ~hatAmp = 0.06; ~melodyAmp = 0.21; + ~kickFreq = 53; ~kickPitchAmt = 2.3; ~kickDecay = 0.41; + ~kickDrive = 1.2; ~kickClick = 0.23; + ~melodyInst = \fmBass; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2676; + ~melodyNotes = [0,0,0,69,0,0,0,0,64,69,0,0,76,0,0,74,64,0,64,0,69,76,64,0,0,0,0,0,74,0,0,74]; + ~kickSteps = [0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0]; + ~percInst = \cowbell; + ~percSteps = [1,1,0,0,0,1,1,0,0,0,0,1,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 72.wait; + + "[N03 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 135; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,69,0,64,79,0,64,0,0,62,0,0,69,0,0,0,0,72,79,0,0,64,0,0,79,0,0,0,0,71,76,79]; + ~melodyCutoff = 3176; + ~percSteps = [0,1,0,1,1,0,1,1,0,1,0,1,0,1,1,0]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1238, 3676); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N03 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 139; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.59; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,83,79,74,81,0,69,0,0,86,0,0,71,0,69,0,0,81,76,0,71,0,0,71,71,0,0,0,76,81]; + ~melodyAmp = 0.23; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,0,1,1,0,1,1,0,1,0,1,0,1,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[N03 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 135; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \fmBass; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3476; + ~melodyNotes = [0,0,0,0,0,40,40,0,0,0,0,47,0,50,45,0,0,43,0,33,45,43,0,0,43,0,0,45,38,0,0,0]; + ~melodyAmp = 0.21; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.21, 1238, \sin, 2676) }; + ~vcfOn !? { ~vcfOn.(\moog, 1438, 0.4) }; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + 78.wait; + + "[N03 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.21; ~kickAmp = x * 0.54; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2676); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N03 6:00] === fin COWBELL CURSE ===".postln; +}).play; +"=== TRACK N03 : COWBELL CURSE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N04_dark_alley.scd b/sound_algo/tracks/N_phonk/N04_dark_alley.scd new file mode 100644 index 0000000..f2a6e73 --- /dev/null +++ b/sound_algo/tracks/N_phonk/N04_dark_alley.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N04_dark_alley.scd -- Album N "DARK ALLEY", track 04/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N04 : "DARK ALLEY" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N04 0:00] intro -- warmPad solo + perc cowbell...".postln; + ~bpm = 138; + ~kickAmp = 0.52; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 56; ~kickPitchAmt = 3.5; ~kickDecay = 0.31; + ~kickDrive = 1.2; ~kickClick = 0.13; + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3422; + ~melodyNotes = [0,0,62,0,0,0,0,64,0,57,0,62,0,0,0,0,0,0,69,67,0,0,0,0,72,69,0,0,62,0,60,0]; + ~kickSteps = [0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,0,1,0,0,0,1,0,1,1,0,1,0,1,0]; + ~percInst = \cowbell; + ~percSteps = [1,1,1,0,1,0,1,0,0,0,0,1,1,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 84.wait; + + "[N04 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 138; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [69,60,0,60,67,69,0,0,57,65,0,64,0,0,0,0,0,64,0,60,0,0,0,67,0,64,0,62,64,0,0,0]; + ~melodyCutoff = 3922; + ~percSteps = [1,0,1,1,0,1,1,1,1,1,1,1,1,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1352, 4422); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N04 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 140; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.57; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,69,0,0,77,77,0,0,0,72,0,0,0,0,0,0,67,81,0,0,0,0,0,0,76,77,84,84,72,0,69]; + ~melodyAmp = 0.25; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,1,1,0,1,1,1,1,1,1,1,1,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[N04 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \warmPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4222; + ~melodyNotes = [0,50,0,0,0,45,38,52,0,0,50,52,0,55,0,0,52,0,48,47,0,0,48,0,0,0,55,45,0,48,0,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.21, 1352, \sin, 3422) }; + ~vcfOn !? { ~vcfOn.(\moog, 1552, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 96.wait; + + "[N04 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.52; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3422); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N04 7:00] === fin DARK ALLEY ===".postln; +}).play; +"=== TRACK N04 : DARK ALLEY 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N05_tape_hiss.scd b/sound_algo/tracks/N_phonk/N05_tape_hiss.scd new file mode 100644 index 0000000..2e3c7fe --- /dev/null +++ b/sound_algo/tracks/N_phonk/N05_tape_hiss.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N05_tape_hiss.scd -- Album N "TAPE HISS", track 05/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N05 : "TAPE HISS" 8 minutes ---------------------- +// 0:00 intro -> 1:36 build -> 3:36 drop -> 5:36 variation -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N05 0:00] intro -- bass808 solo + perc cowbell...".postln; + ~bpm = 130; + ~kickAmp = 0.48; ~hatAmp = 0.06; ~melodyAmp = 0.19; + ~kickFreq = 42; ~kickPitchAmt = 3.8; ~kickDecay = 0.53; + ~kickDrive = 1.2; ~kickClick = 0.1; + ~melodyInst = \bass808; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3331; + ~melodyNotes = [74,0,0,67,0,74,0,72,64,64,72,0,71,76,69,0,0,0,76,0,69,0,67,0,0,0,72,0,62,64,0,0]; + ~kickSteps = [0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0]; + ~hatSteps = [1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1]; + ~percInst = \cowbell; + ~percSteps = [0,0,0,1,1,1,0,0,1,0,1,1,0,0,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 96.wait; + + "[N05 1:36] build -- kick + hat + melody plus dense...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [79,72,0,0,64,71,76,74,0,79,0,0,67,74,64,62,0,0,76,79,79,64,79,76,79,62,72,0,0,0,0,0]; + ~melodyCutoff = 3831; + ~percSteps = [1,0,0,1,0,1,1,1,1,0,1,1,1,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1167, 4331); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N05 3:36] drop -- variation + ensemble dense...".postln; + ~bpm = 128; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.53; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [71,0,0,81,78,0,0,0,0,0,0,79,69,0,0,0,71,79,78,78,0,0,0,83,0,0,71,69,0,0,0,0]; + ~melodyAmp = 0.21; + ~reload.value; + 20.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,0,1,0,1,1,1,1,0,1,1,1,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[N05 5:36] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \bass808; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4131; + ~melodyNotes = [36,0,0,38,45,40,0,38,45,0,0,0,0,38,0,40,38,0,0,31,0,0,41,0,0,33,36,48,0,0,0,0]; + ~melodyAmp = 0.19; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.28, 1167, \sin, 3331) }; + ~vcfOn !? { ~vcfOn.(\moog, 1367, 0.4) }; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + 114.wait; + + "[N05 7:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.19; ~kickAmp = x * 0.48; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3331); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N05 8:00] === fin TAPE HISS ===".postln; +}).play; +"=== TRACK N05 : TAPE HISS 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N06_anguish_808.scd b/sound_algo/tracks/N_phonk/N06_anguish_808.scd new file mode 100644 index 0000000..9e3cc7d --- /dev/null +++ b/sound_algo/tracks/N_phonk/N06_anguish_808.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N06_anguish_808.scd -- Album N "808 ANGUISH", track 06/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N06 : "808 ANGUISH" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N06 0:00] intro -- subBoom solo + perc cowbell...".postln; + ~bpm = 134; + ~kickAmp = 0.48; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 40; ~kickPitchAmt = 2.2; ~kickDecay = 0.51; + ~kickDrive = 1.2; ~kickClick = 0.2; + ~melodyInst = \subBoom; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2533; + ~melodyNotes = [67,0,65,65,68,0,0,63,0,65,60,0,65,0,67,65,65,68,65,0,0,68,0,0,0,0,0,0,0,0,0,68]; + ~kickSteps = [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0]; + ~hatSteps = [1,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0]; + ~percInst = \cowbell; + ~percSteps = [1,0,1,0,1,0,0,1,1,0,0,0,1,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 72.wait; + + "[N06 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [58,0,65,0,67,0,0,75,0,0,0,70,70,0,0,70,67,65,63,0,0,60,65,72,0,0,0,0,0,72,0,60]; + ~melodyCutoff = 3033; + ~percSteps = [1,1,1,1,0,1,1,0,0,1,1,1,1,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1191, 3533); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N06 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 138; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.53; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [69,77,76,81,69,84,0,0,0,84,72,0,0,76,72,76,76,72,76,77,84,67,77,0,0,76,0,0,74,81,0,0]; + ~melodyAmp = 0.24; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,1,0,1,1,0,0,1,1,1,1,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[N06 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 138; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \subBoom; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3333; + ~melodyNotes = [38,0,0,0,50,0,50,0,0,47,0,52,0,0,40,40,48,52,0,0,0,0,0,0,52,0,48,0,0,0,0,0]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.22, 1191, \sin, 2533) }; + ~vcfOn !? { ~vcfOn.(\moog, 1391, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 78.wait; + + "[N06 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.48; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2533); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N06 6:00] === fin 808 ANGUISH ===".postln; +}).play; +"=== TRACK N06 : 808 ANGUISH 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N07_drift_phonk.scd b/sound_algo/tracks/N_phonk/N07_drift_phonk.scd new file mode 100644 index 0000000..4ef0001 --- /dev/null +++ b/sound_algo/tracks/N_phonk/N07_drift_phonk.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N07_drift_phonk.scd -- Album N "DRIFT PHONK", track 07/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N07 : "DRIFT PHONK" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N07 0:00] intro -- fmBass solo + perc cowbell...".postln; + ~bpm = 132; + ~kickAmp = 0.48; ~hatAmp = 0.06; ~melodyAmp = 0.21; + ~kickFreq = 57; ~kickPitchAmt = 3.3; ~kickDecay = 0.3; + ~kickDrive = 1.2; ~kickClick = 0.13; + ~melodyInst = \fmBass; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2412; + ~melodyNotes = [75,0,0,63,0,63,0,67,0,0,65,0,0,72,0,75,65,0,0,0,0,0,65,0,0,70,63,0,0,68,0,68]; + ~kickSteps = [0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0]; + ~hatSteps = [0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0]; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 60.wait; + + "[N07 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,72,75,70,75,0,63,60,65,0,67,67,70,72,67,0,0,68,70,70,60,0,0,75,65,65,0,0,70,0,0]; + ~melodyCutoff = 2912; + ~percSteps = [0,1,0,0,1,1,0,0,0,0,0,0,0,1,0,0]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1432, 3412); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N07 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.53; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,79,0,86,79,84,0,0,91,0,0,83,0,0,0,0,0,0,81,0,0,0,0,0,0,91,0,0,88,84,0]; + ~melodyAmp = 0.23; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,0,0,1,1,0,0,0,0,0,0,0,1,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[N07 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 128; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \fmBass; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3212; + ~melodyNotes = [0,48,0,41,0,48,0,0,0,0,41,0,0,43,46,0,0,0,41,0,0,0,43,53,38,0,0,41,0,43,0,0]; + ~melodyAmp = 0.21; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.29, 1432, \sin, 2412) }; + ~vcfOn !? { ~vcfOn.(\moog, 1632, 0.4) }; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + 60.wait; + + "[N07 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.21; ~kickAmp = x * 0.48; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2412); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N07 5:00] === fin DRIFT PHONK ===".postln; +}).play; +"=== TRACK N07 : DRIFT PHONK 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N08_haunted_ride.scd b/sound_algo/tracks/N_phonk/N08_haunted_ride.scd new file mode 100644 index 0000000..a7ea440 --- /dev/null +++ b/sound_algo/tracks/N_phonk/N08_haunted_ride.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N08_haunted_ride.scd -- Album N "HAUNTED RIDE", track 08/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N08 : "HAUNTED RIDE" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N08 0:00] intro -- reese solo + perc cowbell...".postln; + ~bpm = 136; + ~kickAmp = 0.47; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 50; ~kickPitchAmt = 3.8; ~kickDecay = 0.42; + ~kickDrive = 1.2; ~kickClick = 0.16; + ~melodyInst = \reese; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2791; + ~melodyNotes = [72,0,0,0,0,0,0,0,0,60,68,0,0,0,0,0,0,0,75,68,0,68,63,68,65,60,0,0,0,0,0,75]; + ~kickSteps = [1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0]; + ~hatSteps = [1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0]; + ~percInst = \cowbell; + ~percSteps = [1,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 72.wait; + + "[N08 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [70,60,0,0,0,0,72,60,0,58,0,72,0,0,0,60,0,70,65,65,72,60,70,0,0,75,67,0,0,58,58,70]; + ~melodyCutoff = 3291; + ~percSteps = [0,1,1,0,0,0,0,0,0,0,1,1,0,0,1,0]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1177, 3791); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N08 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.52; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,67,0,74,0,0,0,76,81,76,0,69,0,76,0,76,69,69,0,0,76,72,81,0,67,0,67,69,84,0,74,81]; + ~melodyAmp = 0.24; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,0,0,0,0,0,0,0,1,1,0,0,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[N08 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \reese; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3591; + ~melodyNotes = [0,0,45,45,45,0,0,0,48,0,0,0,0,41,45,53,41,0,36,0,0,45,46,0,0,38,0,45,36,0,45,0]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.21, 1177, \sin, 2791) }; + ~vcfOn !? { ~vcfOn.(\moog, 1377, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 78.wait; + + "[N08 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.47; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2791); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N08 6:00] === fin HAUNTED RIDE ===".postln; +}).play; +"=== TRACK N08 : HAUNTED RIDE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N09_midnight_chase.scd b/sound_algo/tracks/N_phonk/N09_midnight_chase.scd new file mode 100644 index 0000000..4b5da53 --- /dev/null +++ b/sound_algo/tracks/N_phonk/N09_midnight_chase.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N09_midnight_chase.scd -- Album N "MIDNIGHT CHASE", track 09/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N09 : "MIDNIGHT CHASE" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N09 0:00] intro -- subBoom solo + perc cowbell...".postln; + ~bpm = 138; + ~kickAmp = 0.49; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 52; ~kickPitchAmt = 2.6; ~kickDecay = 0.26; + ~kickDrive = 1.2; ~kickClick = 0.19; + ~melodyInst = \subBoom; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2436; + ~melodyNotes = [75,0,67,0,0,72,0,0,60,0,70,0,72,60,0,0,0,0,0,70,0,75,0,0,68,0,60,0,0,0,75,63]; + ~kickSteps = [0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0]; + ~hatSteps = [0,1,0,1,0,0,1,1,0,0,0,0,1,0,0,1]; + ~percInst = \cowbell; + ~percSteps = [0,0,0,0,0,0,0,1,0,1,0,1,1,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 84.wait; + + "[N09 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,65,75,67,72,0,0,65,58,67,0,0,0,63,72,0,0,68,70,0,68,58,0,0,75,63,0,70,0,68,0]; + ~melodyCutoff = 2936; + ~percSteps = [0,0,0,1,0,1,0,0,0,1,1,0,1,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1205, 3436); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N09 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 142; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.54; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [74,0,0,0,77,84,89,82,79,74,89,0,0,84,74,72,77,0,0,0,0,79,0,0,89,86,84,84,0,74,0,0]; + ~melodyAmp = 0.24; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,0,1,0,1,0,0,0,1,1,0,1,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[N09 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 138; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \subBoom; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3236; + ~melodyNotes = [0,0,43,52,43,0,0,0,50,50,50,0,38,0,0,0,0,48,47,38,45,0,47,55,47,50,45,45,0,0,0,0]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.3, 1205, \sin, 2436) }; + ~vcfOn !? { ~vcfOn.(\moog, 1405, 0.4) }; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + 96.wait; + + "[N09 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.49; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2436); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N09 7:00] === fin MIDNIGHT CHASE ===".postln; +}).play; +"=== TRACK N09 : MIDNIGHT CHASE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N10_cursed_bells.scd b/sound_algo/tracks/N_phonk/N10_cursed_bells.scd new file mode 100644 index 0000000..d81117b --- /dev/null +++ b/sound_algo/tracks/N_phonk/N10_cursed_bells.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N10_cursed_bells.scd -- Album N "CURSED BELLS", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N10 : "CURSED BELLS" 8 minutes ---------------------- +// 0:00 intro -> 1:36 build -> 3:36 drop -> 5:36 variation -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N10 0:00] intro -- warmPad solo + perc cowbell...".postln; + ~bpm = 134; + ~kickAmp = 0.49; ~hatAmp = 0.06; ~melodyAmp = 0.21; + ~kickFreq = 60; ~kickPitchAmt = 3.3; ~kickDecay = 0.45; + ~kickDrive = 1.2; ~kickClick = 0.24; + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3671; + ~melodyNotes = [0,0,0,69,0,67,0,74,0,0,0,0,0,66,0,0,62,0,0,0,0,69,0,0,0,0,0,0,0,57,64,57]; + ~kickSteps = [0,0,1,1,0,1,0,0,0,0,0,0,1,1,0,1]; + ~hatSteps = [0,1,1,1,0,0,0,0,0,1,1,0,1,0,1,0]; + ~percInst = \cowbell; + ~percSteps = [0,1,0,0,0,1,1,0,1,1,0,0,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 96.wait; + + "[N10 1:36] build -- kick + hat + melody plus dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [62,57,59,59,71,62,0,0,0,0,57,57,0,0,66,0,59,0,0,67,74,67,69,66,67,66,69,0,64,62,59,0]; + ~melodyCutoff = 4171; + ~percSteps = [1,0,0,0,0,1,1,0,1,1,0,1,0,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1144, 4671); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N10 3:36] drop -- variation + ensemble dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.54; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [78,0,0,71,0,83,0,0,69,0,0,0,0,78,0,0,0,0,0,0,74,81,69,86,81,0,78,0,0,79,0,76]; + ~melodyAmp = 0.23; + ~reload.value; + 20.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,0,0,0,1,1,0,1,1,0,1,0,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[N10 5:36] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 140; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \warmPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4471; + ~melodyNotes = [0,0,0,50,46,38,0,0,0,0,53,0,38,0,50,46,0,0,0,46,0,0,45,50,0,0,43,0,36,0,0,0]; + ~melodyAmp = 0.21; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.21, 1144, \sin, 3671) }; + ~vcfOn !? { ~vcfOn.(\moog, 1344, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 114.wait; + + "[N10 7:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.21; ~kickAmp = x * 0.49; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3671); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N10 8:00] === fin CURSED BELLS ===".postln; +}).play; +"=== TRACK N10 : CURSED BELLS 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N11_trap_phonk.scd b/sound_algo/tracks/N_phonk/N11_trap_phonk.scd new file mode 100644 index 0000000..b768bd7 --- /dev/null +++ b/sound_algo/tracks/N_phonk/N11_trap_phonk.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N11_trap_phonk.scd -- Album N "TRAP PHONK", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N11 : "TRAP PHONK" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N11 0:00] intro -- bass808 solo + perc cowbell...".postln; + ~bpm = 130; + ~kickAmp = 0.48; ~hatAmp = 0.06; ~melodyAmp = 0.18; + ~kickFreq = 64; ~kickPitchAmt = 3.1; ~kickDecay = 0.41; + ~kickDrive = 1.2; ~kickClick = 0.27; + ~melodyInst = \bass808; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2674; + ~melodyNotes = [0,0,62,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,0,0,0,0,66,59,0,0,0,0,0,0,0]; + ~kickSteps = [0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0]; + ~hatSteps = [1,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0]; + ~percInst = \cowbell; + ~percSteps = [1,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 84.wait; + + "[N11 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,62,57,66,57,74,0,0,0,0,62,57,59,71,64,74,0,0,0,71,0,69,62,0,0,0,62,62,59,62,64,0]; + ~melodyCutoff = 3174; + ~percSteps = [1,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(980, 3674); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N11 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 128; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.53; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [67,0,79,0,0,0,0,0,0,0,0,0,81,77,84,77,0,76,0,0,79,0,84,76,79,67,0,0,76,0,0,77]; + ~melodyAmp = 0.2; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,1,1,1,1,1,1,1,0,1,1,0,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[N11 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \bass808; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3474; + ~melodyNotes = [48,0,38,36,0,0,0,48,0,43,53,0,0,41,0,0,0,0,0,50,36,50,53,0,0,0,0,0,38,0,0,46]; + ~melodyAmp = 0.18; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.31, 980, \sin, 2674) }; + ~vcfOn !? { ~vcfOn.(\moog, 1180, 0.4) }; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + 96.wait; + + "[N11 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; ~kickAmp = x * 0.48; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2674); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N11 7:00] === fin TRAP PHONK ===".postln; +}).play; +"=== TRACK N11 : TRAP PHONK 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N12_low_riser.scd b/sound_algo/tracks/N_phonk/N12_low_riser.scd new file mode 100644 index 0000000..c53a877 --- /dev/null +++ b/sound_algo/tracks/N_phonk/N12_low_riser.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N12_low_riser.scd -- Album N "LOW RISER", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N12 : "LOW RISER" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N12 0:00] intro -- reese solo + perc cowbell...".postln; + ~bpm = 132; + ~kickAmp = 0.47; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 41; ~kickPitchAmt = 3.5; ~kickDecay = 0.31; + ~kickDrive = 1.2; ~kickClick = 0.13; + ~melodyInst = \reese; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2552; + ~melodyNotes = [62,0,79,0,79,76,67,69,0,0,64,76,0,71,0,0,0,71,69,0,72,0,62,79,62,0,0,0,0,0,79,79]; + ~kickSteps = [0,1,0,1,0,0,0,0,0,0,1,1,0,1,0,1]; + ~hatSteps = [0,0,0,1,0,0,0,1,1,0,1,1,0,1,1,0]; + ~percInst = \cowbell; + ~percSteps = [0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 60.wait; + + "[N12 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [62,71,79,0,72,0,0,0,64,69,72,0,0,0,0,0,0,67,72,0,0,0,72,69,0,0,0,0,69,64,69,0]; + ~melodyCutoff = 3052; + ~percSteps = [0,0,1,1,1,1,0,0,1,1,1,1,1,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1097, 3552); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N12 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 128; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.52; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [91,74,0,84,0,91,84,0,0,86,76,79,0,0,81,0,86,79,0,0,76,84,86,0,0,76,83,84,0,74,0,0]; + ~melodyAmp = 0.25; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,1,1,1,1,0,0,1,1,1,1,1,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[N12 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 132; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \reese; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3352; + ~melodyNotes = [52,0,0,38,0,0,45,50,48,0,0,0,0,0,0,40,0,43,38,0,40,45,0,0,0,0,48,0,0,0,0,55]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.18, 1097, \sin, 2552) }; + ~vcfOn !? { ~vcfOn.(\moog, 1297, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 60.wait; + + "[N12 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.47; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2552); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N12 5:00] === fin LOW RISER ===".postln; +}).play; +"=== TRACK N12 : LOW RISER 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N13_ghost_drift.scd b/sound_algo/tracks/N_phonk/N13_ghost_drift.scd new file mode 100644 index 0000000..92c356c --- /dev/null +++ b/sound_algo/tracks/N_phonk/N13_ghost_drift.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N13_ghost_drift.scd -- Album N "GHOST DRIFT", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N13 : "GHOST DRIFT" 4 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 1:48 drop -> 2:48 variation -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N13 0:00] intro -- warmPad solo + perc cowbell...".postln; + ~bpm = 136; + ~kickAmp = 0.49; ~hatAmp = 0.06; ~melodyAmp = 0.19; + ~kickFreq = 53; ~kickPitchAmt = 3.6; ~kickDecay = 0.51; + ~kickDrive = 1.2; ~kickClick = 0.19; + ~melodyInst = \warmPad; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3569; + ~melodyNotes = [69,70,0,0,0,0,0,0,0,77,74,69,0,0,69,69,0,0,0,60,0,0,0,0,0,0,0,62,60,0,62,0]; + ~kickSteps = [0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,0]; + ~percInst = \cowbell; + ~percSteps = [0,0,0,0,0,1,1,1,0,0,1,0,0,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 48.wait; + + "[N13 0:48] build -- kick + hat + melody plus dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,72,0,0,0,0,72,60,67,0,69,0,60,0,62,69,69,70,0,65,60,0,60,60,72,60,69,62,0,70,0]; + ~melodyCutoff = 4069; + ~percSteps = [1,1,1,1,0,0,1,0,1,1,0,1,0,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 12.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(923, 4569); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N13 1:48] drop -- variation + ensemble dense...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.54; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [81,0,72,86,0,0,0,77,0,0,0,0,0,0,81,0,0,0,82,0,0,72,0,77,0,0,79,0,0,84,79,0]; + ~melodyAmp = 0.21; + ~reload.value; + 10.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,1,0,0,1,0,1,1,0,1,0,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[N13 2:48] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \warmPad; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4369; + ~melodyNotes = [31,0,0,0,40,0,36,33,48,0,36,43,0,45,31,40,0,0,40,0,0,0,36,40,0,36,0,33,41,31,0,36]; + ~melodyAmp = 0.19; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.34, 923, \sin, 3569) }; + ~vcfOn !? { ~vcfOn.(\moog, 1123, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 42.wait; + + "[N13 3:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.19; ~kickAmp = x * 0.49; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3569); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N13 4:00] === fin GHOST DRIFT ===".postln; +}).play; +"=== TRACK N13 : GHOST DRIFT 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N14_gospel_808.scd b/sound_algo/tracks/N_phonk/N14_gospel_808.scd new file mode 100644 index 0000000..7a8e91d --- /dev/null +++ b/sound_algo/tracks/N_phonk/N14_gospel_808.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N14_gospel_808.scd -- Album N "808 GOSPEL", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N14 : "808 GOSPEL" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N14 0:00] intro -- bass808 solo + perc cowbell...".postln; + ~bpm = 130; + ~kickAmp = 0.55; ~hatAmp = 0.06; ~melodyAmp = 0.21; + ~kickFreq = 41; ~kickPitchAmt = 2.8; ~kickDecay = 0.46; + ~kickDrive = 1.2; ~kickClick = 0.3; + ~melodyInst = \bass808; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3027; + ~melodyNotes = [0,0,0,0,0,74,71,0,0,76,67,0,72,0,76,62,76,0,72,0,0,64,0,0,0,0,0,69,0,72,76,0]; + ~kickSteps = [0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1]; + ~hatSteps = [0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0]; + ~percInst = \cowbell; + ~percSteps = [0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 60.wait; + + "[N14 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 128; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [79,0,0,0,0,0,76,0,62,0,0,0,67,71,67,0,69,79,71,0,67,79,64,74,0,0,0,0,0,0,0,76]; + ~melodyCutoff = 3527; + ~percSteps = [0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1340, 4027); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N14 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 130; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.6; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [72,74,0,0,0,0,79,84,0,72,0,0,76,0,77,0,0,69,81,74,72,0,0,67,0,0,81,0,0,69,0,72]; + ~melodyAmp = 0.23; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[N14 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 128; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \bass808; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3827; + ~melodyNotes = [0,47,0,0,0,0,0,48,55,0,43,40,48,47,0,52,55,0,45,0,0,0,0,0,0,0,0,43,50,0,38,0]; + ~melodyAmp = 0.21; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.24, 1340, \sin, 3027) }; + ~vcfOn !? { ~vcfOn.(\moog, 1540, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + 60.wait; + + "[N14 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.21; ~kickAmp = x * 0.55; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3027); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N14 5:00] === fin 808 GOSPEL ===".postln; +}).play; +"=== TRACK N14 : 808 GOSPEL 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/N15_phonk_finale.scd b/sound_algo/tracks/N_phonk/N15_phonk_finale.scd new file mode 100644 index 0000000..80e0b58 --- /dev/null +++ b/sound_algo/tracks/N_phonk/N15_phonk_finale.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// N15_phonk_finale.scd -- Album N "PHONK FINALE", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK N15 : "PHONK FINALE" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[N15 0:00] intro -- subBoom solo + perc cowbell...".postln; + ~bpm = 138; + ~kickAmp = 0.5; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 54; ~kickPitchAmt = 3.9; ~kickDecay = 0.46; + ~kickDrive = 1.2; ~kickClick = 0.17; + ~melodyInst = \subBoom; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2230; + ~melodyNotes = [0,0,62,70,70,0,74,0,0,0,0,0,72,0,0,0,0,69,0,0,0,69,0,0,0,72,60,0,0,0,70,62]; + ~kickSteps = [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0]; + ~hatSteps = [1,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0]; + ~percInst = \cowbell; + ~percSteps = [0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 72.wait; + + "[N15 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 136; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,69,0,0,74,0,0,70,0,69,72,0,65,0,0,70,60,77,0,65,77,67,70,0,65,67,65,0,72,0,74,77]; + ~melodyCutoff = 2730; + ~percSteps = [0,1,0,1,1,0,1,0,1,1,1,1,0,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1274, 3230); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[N15 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 134; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.55; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,0,0,0,0,86,84,74,84,77,0,81,0,0,81,0,72,0,0,0,0,0,77,0,0,0,84,72,0,82]; + ~melodyAmp = 0.25; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,0,1,1,0,1,0,1,1,1,1,0,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[N15 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 142; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \subBoom; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3030; + ~melodyNotes = [33,40,0,40,48,31,0,0,40,0,40,38,48,31,0,33,0,0,38,33,31,43,0,0,45,48,36,0,43,36,41,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.18, 1274, \sin, 2230) }; + ~vcfOn !? { ~vcfOn.(\moog, 1474, 0.4) }; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + 78.wait; + + "[N15 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.5; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2230); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[N15 6:00] === fin PHONK FINALE ===".postln; +}).play; +"=== TRACK N15 : PHONK FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/N_phonk/_album.scd b/sound_algo/tracks/N_phonk/_album.scd new file mode 100644 index 0000000..e85e171 --- /dev/null +++ b/sound_algo/tracks/N_phonk/_album.scd @@ -0,0 +1,84 @@ +// ===================================================================== +// _album.scd -- Album N "Phonk" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM N (1 fois) +// 3. ~playTrack.(\N, 7) pour jouer la track 7 isolement +// ~playAlbum.(\N) pour enchainer 01 -> 15 +// ~stopAlbum.() pour interrompre l'album +// ===================================================================== + +( // --- SETUP ALBUM N --- +~albums = ~albums ? (); +~albums[\N] = ( + title: "Phonk", + folder: "tracks/N_phonk/", + tracks: [ + \N01_phonk_opening, + \N02_memphis_drift, + \N03_cowbell_curse, + \N04_dark_alley, + \N05_tape_hiss, + \N06_anguish_808, + \N07_drift_phonk, + \N08_haunted_ride, + \N09_midnight_chase, + \N10_cursed_bells, + \N11_trap_phonk, + \N12_low_riser, + \N13_ghost_drift, + \N14_gospel_808, + \N15_phonk_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); + +~playTrack = ~playTrack ? { |album = \N, n = 1| + var info, file, path; + info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + file = info[\tracks][n - 1]; + if (file.isNil) { + ("!! track " ++ album ++ n ++ " inexistante (1-" ++ info[\tracks].size ++ ")").postln; + } { + path = (~base ? "") ++ info[\folder] ++ file ++ ".scd"; + ("[ALBUM " ++ album ++ "] track " ++ n ++ " : " ++ file).postln; + path.load; + }; + }; +}; + +~stopAlbum = ~stopAlbum ? { + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[ALBUM] stop".postln; +}; + +~playAlbum = ~playAlbum ? { |album = \N, gap = 8| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ~stopAlbum.(); + ~albumRoutine = Routine({ + ("=== ALBUM " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + ("[ALBUM " ++ album ++ "] -> track " ++ (i + 1) ++ "/" + ++ info[\tracks].size ++ " : " ++ slug + ++ " (" ++ dur ++ "s)").postln; + ~playTrack.(album, i + 1); + (dur + gap).wait; + }; + ("=== ALBUM " ++ album ++ " complete ===").postln; + }).play; + }; +}; + +"[album N] setup OK".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O01_asian_opening.scd b/sound_algo/tracks/O_asian_cinematic/O01_asian_opening.scd new file mode 100644 index 0000000..c8c7fdf --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O01_asian_opening.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O01_asian_opening.scd -- Album O "ASIAN OPENING", track 01/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O01 : "ASIAN OPENING" 4 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 1:48 drop -> 2:48 variation -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O01 0:00] intro -- koto solo + perc tom...".postln; + ~bpm = 80; + ~kickAmp = 0.48; ~hatAmp = 0.06; ~melodyAmp = 0.21; + ~kickFreq = 59; ~kickPitchAmt = 3.8; ~kickDecay = 0.54; + ~kickDrive = 1.2; ~kickClick = 0.26; + ~melodyInst = \koto; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2564; + ~melodyNotes = [64,72,0,0,0,0,0,0,55,55,0,0,60,0,0,0,0,55,0,0,0,67,0,69,0,0,0,62,57,0,0,0]; + ~kickSteps = [0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0]; + ~hatSteps = [1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1]; + ~percInst = \tom; + ~percSteps = [0,1,0,1,1,0,0,0,1,1,1,1,0,0,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 48.wait; + + "[O01 0:48] build -- kick + hat + melody plus dense...".postln; + ~bpm = 80; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,57,64,55,72,55,0,0,57,62,0,57,55,55,72,64,0,55,0,60,0,55,64,0,0,67,0,0,0,0,69,0]; + ~melodyCutoff = 3064; + ~percSteps = [1,0,1,0,1,1,1,1,1,1,1,0,0,1,1,0]; ~percAmp = 0.36; + ~reload.value; + 12.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1194, 3564); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O01 1:48] drop -- variation + ensemble dense...".postln; + ~bpm = 80; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.53; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,76,69,83,0,78,0,86,83,0,0,79,0,69,0,0,0,0,79,0,0,0,86,76,0,0,83,0,0,83,78,79]; + ~melodyAmp = 0.23; + ~reload.value; + 10.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,1,0,1,1,1,1,1,1,1,0,0,1,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[O01 2:48] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 86; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \koto; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3364; + ~melodyNotes = [0,38,0,0,38,55,43,0,0,55,0,0,52,0,0,50,48,45,0,0,0,45,0,0,48,0,0,0,43,52,50,50]; + ~melodyAmp = 0.21; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.24, 1194, \sin, 2564) }; + ~vcfOn !? { ~vcfOn.(\moog, 1394, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 42.wait; + + "[O01 3:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.21; ~kickAmp = x * 0.48; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2564); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O01 4:00] === fin ASIAN OPENING ===".postln; +}).play; +"=== TRACK O01 : ASIAN OPENING 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O02_koto_solo.scd b/sound_algo/tracks/O_asian_cinematic/O02_koto_solo.scd new file mode 100644 index 0000000..9a64840 --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O02_koto_solo.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O02_koto_solo.scd -- Album O "KOTO SOLO", track 02/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O02 : "KOTO SOLO" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O02 0:00] intro -- koto solo + perc tom...".postln; + ~bpm = 75; + ~kickAmp = 0.52; ~hatAmp = 0.06; ~melodyAmp = 0.18; + ~kickFreq = 55; ~kickPitchAmt = 2.2; ~kickDecay = 0.54; + ~kickDrive = 1.2; ~kickClick = 0.11; + ~melodyInst = \koto; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3162; + ~melodyNotes = [0,63,70,0,68,68,65,0,0,63,60,68,0,0,0,0,70,0,0,0,0,0,0,0,0,0,60,0,0,0,75,63]; + ~kickSteps = [0,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0]; + ~hatSteps = [0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0]; + ~percInst = \tom; + ~percSteps = [0,0,1,1,0,1,0,1,0,0,1,0,1,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 60.wait; + + "[O02 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 73; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [58,0,0,0,65,67,0,0,67,65,67,0,0,0,0,63,0,75,67,58,63,60,65,0,67,0,72,72,0,67,63,65]; + ~melodyCutoff = 3662; + ~percSteps = [0,0,1,0,0,1,0,0,0,0,1,1,1,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1325, 4162); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O02 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 71; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.57; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,0,0,0,0,69,0,0,0,0,71,0,79,0,0,0,0,0,78,79,0,0,0,0,0,0,0,0,69,78]; + ~melodyAmp = 0.2; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHirajoshi); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,1,0,0,1,0,0,0,0,1,1,1,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[O02 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 81; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \koto; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3962; + ~melodyNotes = [45,0,31,31,0,38,0,0,0,0,48,36,0,43,0,0,0,0,33,0,0,0,40,0,45,33,0,0,0,45,31,0]; + ~melodyAmp = 0.18; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.16, 1325, \sin, 3162) }; + ~vcfOn !? { ~vcfOn.(\moog, 1525, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 60.wait; + + "[O02 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; ~kickAmp = x * 0.52; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3162); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O02 5:00] === fin KOTO SOLO ===".postln; +}).play; +"=== TRACK O02 : KOTO SOLO 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O03_erhu_lament.scd b/sound_algo/tracks/O_asian_cinematic/O03_erhu_lament.scd new file mode 100644 index 0000000..952af13 --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O03_erhu_lament.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O03_erhu_lament.scd -- Album O "ERHU LAMENT", track 03/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O03 : "ERHU LAMENT" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O03 0:00] intro -- erhu solo + perc tom...".postln; + ~bpm = 70; + ~kickAmp = 0.45; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 58; ~kickPitchAmt = 2.6; ~kickDecay = 0.5; + ~kickDrive = 1.2; ~kickClick = 0.26; + ~melodyInst = \erhu; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3450; + ~melodyNotes = [64,0,0,0,0,0,64,0,0,64,0,66,62,0,0,0,0,0,0,67,67,0,57,66,0,0,0,0,69,64,57,0]; + ~kickSteps = [0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1]; + ~percInst = \tom; + ~percSteps = [1,1,0,1,1,1,0,1,0,0,1,1,1,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 72.wait; + + "[O03 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 70; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,71,0,0,66,69,62,0,0,0,71,0,0,62,0,71,59,0,0,59,69,71,57,69,0,62,64,0,0,59,0,71]; + ~melodyCutoff = 3950; + ~percSteps = [0,1,0,1,1,0,0,0,0,0,0,0,0,1,0,0]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1161, 4450); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O03 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 68; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.5; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,76,0,74,72,76,79,0,0,81,76,0,0,0,79,72,81,0,69,0,0,0,79,0,81,84,0,0,74,79]; + ~melodyAmp = 0.24; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,0,1,1,0,0,0,0,0,0,0,0,1,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[O03 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 66; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \erhu; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4250; + ~melodyNotes = [0,38,0,0,0,0,38,0,0,0,35,40,0,0,38,0,0,0,0,38,0,47,0,0,38,0,38,0,40,0,0,33]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.34, 1161, \sin, 3450) }; + ~vcfOn !? { ~vcfOn.(\moog, 1361, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 78.wait; + + "[O03 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.45; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3450); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O03 6:00] === fin ERHU LAMENT ===".postln; +}).play; +"=== TRACK O03 : ERHU LAMENT 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O04_pipa_journey.scd b/sound_algo/tracks/O_asian_cinematic/O04_pipa_journey.scd new file mode 100644 index 0000000..581b94c --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O04_pipa_journey.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O04_pipa_journey.scd -- Album O "PIPA JOURNEY", track 04/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O04 : "PIPA JOURNEY" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O04 0:00] intro -- pipa solo + perc taiko...".postln; + ~bpm = 90; + ~kickAmp = 0.52; ~hatAmp = 0.06; ~melodyAmp = 0.24; + ~kickFreq = 52; ~kickPitchAmt = 2.9; ~kickDecay = 0.42; + ~kickDrive = 1.2; ~kickClick = 0.1; + ~melodyInst = \pipa; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3308; + ~melodyNotes = [0,0,0,62,0,0,0,0,77,0,0,62,65,0,0,69,0,0,60,0,0,0,0,0,0,72,77,0,0,70,0,0]; + ~kickSteps = [0,0,0,0,1,0,0,0,1,0,0,0,1,1,0,1]; + ~hatSteps = [1,0,1,0,0,1,0,0,0,1,0,1,0,1,0,0]; + ~percInst = \taiko; + ~percSteps = [1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 84.wait; + + "[O04 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 94; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,69,77,69,0,0,0,0,60,0,0,60,0,0,0,69,0,62,0,0,72,0,67,0,0,0,69,67,74,70,0,60]; + ~melodyCutoff = 3808; + ~percSteps = [1,0,0,0,1,0,1,0,1,0,0,0,1,1,0,0]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1459, 4308); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O04 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 94; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.57; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [79,0,79,79,88,0,83,0,81,91,81,0,0,0,0,83,0,74,91,0,0,0,0,0,88,81,81,0,88,76,0,0]; + ~melodyAmp = 0.26; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleVietnam); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,0,0,1,0,1,0,1,0,0,0,1,1,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[O04 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 86; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \pipa; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4108; + ~melodyNotes = [50,0,0,0,55,40,0,0,0,0,43,0,0,0,55,48,0,0,0,38,45,0,52,47,52,0,55,38,38,0,0,0]; + ~melodyAmp = 0.24; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.17, 1459, \sin, 3308) }; + ~vcfOn !? { ~vcfOn.(\moog, 1659, 0.4) }; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + 96.wait; + + "[O04 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.24; ~kickAmp = x * 0.52; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3308); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O04 7:00] === fin PIPA JOURNEY ===".postln; +}).play; +"=== TRACK O04 : PIPA JOURNEY 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O05_shakuhachi_breath.scd b/sound_algo/tracks/O_asian_cinematic/O05_shakuhachi_breath.scd new file mode 100644 index 0000000..8df242c --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O05_shakuhachi_breath.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O05_shakuhachi_breath.scd -- Album O "SHAKUHACHI BREATH", track 05/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O05 : "SHAKUHACHI BREATH" 8 minutes ---------------------- +// 0:00 intro -> 1:36 build -> 3:36 drop -> 5:36 variation -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O05 0:00] intro -- shakuhachi solo + perc tom...".postln; + ~bpm = 72; + ~kickAmp = 0.52; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 56; ~kickPitchAmt = 2.1; ~kickDecay = 0.51; + ~kickDrive = 1.2; ~kickClick = 0.18; + ~melodyInst = \shakuhachi; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3633; + ~melodyNotes = [0,68,0,0,0,0,0,0,0,0,0,75,0,0,58,0,65,70,0,0,65,0,0,0,60,0,75,0,65,65,0,0]; + ~kickSteps = [0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0]; + ~hatSteps = [1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0]; + ~percInst = \tom; + ~percSteps = [1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 96.wait; + + "[O05 1:36] build -- kick + hat + melody plus dense...".postln; + ~bpm = 70; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [58,0,0,75,75,0,0,70,63,63,70,0,70,70,0,0,0,58,0,75,75,63,0,0,72,60,63,0,0,72,0,58]; + ~melodyCutoff = 4133; + ~percSteps = [1,0,0,0,1,0,1,1,0,0,1,1,0,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(936, 4633); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O05 3:36] drop -- variation + ensemble dense...".postln; + ~bpm = 72; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.57; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,83,88,91,0,0,0,91,86,91,0,0,79,91,83,83,76,76,0,0,88,0,81,86,0,88,0,0,0,74,0,0]; + ~melodyAmp = 0.25; + ~reload.value; + 20.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHirajoshi); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,0,0,1,0,1,1,0,0,1,1,0,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[O05 5:36] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 68; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \shakuhachi; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4433; + ~melodyNotes = [36,38,0,0,0,0,0,43,50,0,0,48,0,0,0,45,0,0,43,0,36,38,53,53,0,0,0,45,48,0,45,36]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.25, 936, \sin, 3633) }; + ~vcfOn !? { ~vcfOn.(\moog, 1136, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 114.wait; + + "[O05 7:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.52; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3633); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O05 8:00] === fin SHAKUHACHI BREATH ===".postln; +}).play; +"=== TRACK O05 : SHAKUHACHI BREATH 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O06_guzheng_river.scd b/sound_algo/tracks/O_asian_cinematic/O06_guzheng_river.scd new file mode 100644 index 0000000..33294f5 --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O06_guzheng_river.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O06_guzheng_river.scd -- Album O "GUZHENG RIVER", track 06/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O06 : "GUZHENG RIVER" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O06 0:00] intro -- guzheng solo + perc tom...".postln; + ~bpm = 85; + ~kickAmp = 0.52; ~hatAmp = 0.06; ~melodyAmp = 0.18; + ~kickFreq = 48; ~kickPitchAmt = 3.4; ~kickDecay = 0.36; + ~kickDrive = 1.2; ~kickClick = 0.28; + ~melodyInst = \guzheng; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3120; + ~melodyNotes = [71,74,0,0,79,62,62,0,0,0,0,0,0,76,69,64,0,0,62,0,0,0,0,0,0,67,76,0,0,0,64,0]; + ~kickSteps = [0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0]; + ~hatSteps = [0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1]; + ~percInst = \tom; + ~percSteps = [1,0,0,1,0,0,0,1,1,0,1,1,0,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 72.wait; + + "[O06 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 87; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [72,69,0,0,79,0,71,0,0,0,0,72,69,69,0,0,79,0,72,0,62,0,0,0,71,69,72,67,62,79,67,0]; + ~melodyCutoff = 3620; + ~percSteps = [0,1,1,0,0,1,0,0,0,1,0,0,0,1,1,1]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(976, 4120); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O06 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 85; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.57; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,0,0,0,77,0,0,89,0,82,0,86,0,0,72,0,0,72,0,84,86,0,0,82,0,0,0,0,0,84]; + ~melodyAmp = 0.2; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,1,0,0,1,0,0,0,1,0,0,0,1,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[O06 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 91; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \guzheng; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3920; + ~melodyNotes = [0,0,0,0,36,0,48,0,0,0,36,0,45,38,0,0,0,0,0,33,0,43,0,0,0,31,0,0,0,40,48,33]; + ~melodyAmp = 0.18; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.17, 976, \sin, 3120) }; + ~vcfOn !? { ~vcfOn.(\moog, 1176, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 78.wait; + + "[O06 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.18; ~kickAmp = x * 0.52; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3120); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O06 6:00] === fin GUZHENG RIVER ===".postln; +}).play; +"=== TRACK O06 : GUZHENG RIVER 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O07_temple_bells.scd b/sound_algo/tracks/O_asian_cinematic/O07_temple_bells.scd new file mode 100644 index 0000000..a9c237d --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O07_temple_bells.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O07_temple_bells.scd -- Album O "TEMPLE BELLS", track 07/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O07 : "TEMPLE BELLS" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O07 0:00] intro -- handpan solo + perc tom...".postln; + ~bpm = 95; + ~kickAmp = 0.51; ~hatAmp = 0.06; ~melodyAmp = 0.22; + ~kickFreq = 40; ~kickPitchAmt = 2.6; ~kickDecay = 0.29; + ~kickDrive = 1.2; ~kickClick = 0.09; + ~melodyInst = \handpan; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2616; + ~melodyNotes = [0,0,79,0,71,76,0,67,0,79,76,0,0,0,71,64,0,0,0,0,0,0,67,62,0,0,0,74,0,71,0,62]; + ~kickSteps = [0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0]; + ~hatSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0]; + ~percInst = \tom; + ~percSteps = [1,1,1,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 60.wait; + + "[O07 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 99; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,64,76,0,0,0,69,0,0,0,0,0,69,79,67,0,64,71,67,79,0,0,64,69,0,0,76,0,71,0,79]; + ~melodyCutoff = 3116; + ~percSteps = [1,1,1,1,0,1,1,0,0,0,0,0,0,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(912, 3616); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O07 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 93; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.56; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,0,79,0,72,0,77,0,0,0,72,82,0,77,84,84,0,0,79,82,84,70,0,0,79,75,82,0,87,70,82]; + ~melodyAmp = 0.24; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHirajoshi); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,1,0,1,1,0,0,0,0,0,0,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[O07 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 95; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \handpan; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3416; + ~melodyNotes = [0,0,0,0,0,45,47,0,40,40,0,0,40,37,0,49,0,44,0,40,0,49,37,0,40,0,0,0,42,0,0,0]; + ~melodyAmp = 0.22; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.19, 912, \sin, 2616) }; + ~vcfOn !? { ~vcfOn.(\moog, 1112, 0.4) }; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + 60.wait; + + "[O07 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.22; ~kickAmp = x * 0.51; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2616); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O07 5:00] === fin TEMPLE BELLS ===".postln; +}).play; +"=== TRACK O07 : TEMPLE BELLS 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O08_bamboo_grove.scd b/sound_algo/tracks/O_asian_cinematic/O08_bamboo_grove.scd new file mode 100644 index 0000000..756e44f --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O08_bamboo_grove.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O08_bamboo_grove.scd -- Album O "BAMBOO GROVE", track 08/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O08 : "BAMBOO GROVE" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O08 0:00] intro -- shakuhachi solo + perc tom...".postln; + ~bpm = 80; + ~kickAmp = 0.49; ~hatAmp = 0.06; ~melodyAmp = 0.21; + ~kickFreq = 58; ~kickPitchAmt = 2.2; ~kickDecay = 0.41; + ~kickDrive = 1.2; ~kickClick = 0.11; + ~melodyInst = \shakuhachi; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3101; + ~melodyNotes = [0,0,55,62,0,0,64,0,0,0,69,0,60,0,60,0,0,0,60,0,0,0,0,55,0,0,65,0,0,0,65,0]; + ~kickSteps = [0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,1]; + ~hatSteps = [1,1,1,0,0,1,0,1,1,1,0,0,0,0,0,0]; + ~percInst = \tom; + ~percSteps = [1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 72.wait; + + "[O08 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 76; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,69,0,72,72,0,0,60,69,0,65,0,64,0,62,67,60,0,0,0,0,65,62,60,0,0,0,0,65,55,0,67]; + ~melodyCutoff = 3601; + ~percSteps = [1,1,1,0,0,1,1,1,0,0,1,1,0,1,1,1]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1136, 4101); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O08 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 80; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.54; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [83,0,91,84,0,0,88,0,0,0,0,0,0,0,0,0,0,91,91,84,83,0,0,88,83,76,0,0,0,76,88,0]; + ~melodyAmp = 0.23; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHirajoshi); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,1,0,0,1,1,1,0,0,1,1,0,1,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[O08 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 86; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \shakuhachi; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3901; + ~melodyNotes = [38,48,0,0,47,38,0,0,0,0,0,0,0,0,0,52,38,52,0,0,0,45,38,43,0,0,0,0,0,0,0,55]; + ~melodyAmp = 0.21; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.16, 1136, \sin, 3101) }; + ~vcfOn !? { ~vcfOn.(\moog, 1336, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 78.wait; + + "[O08 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.21; ~kickAmp = x * 0.49; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3101); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O08 6:00] === fin BAMBOO GROVE ===".postln; +}).play; +"=== TRACK O08 : BAMBOO GROVE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O09_silk_road.scd b/sound_algo/tracks/O_asian_cinematic/O09_silk_road.scd new file mode 100644 index 0000000..cc3a04f --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O09_silk_road.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O09_silk_road.scd -- Album O "SILK ROAD", track 09/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O09 : "SILK ROAD" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O09 0:00] intro -- pipa solo + perc taiko...".postln; + ~bpm = 100; + ~kickAmp = 0.47; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 54; ~kickPitchAmt = 2.9; ~kickDecay = 0.29; + ~kickDrive = 1.2; ~kickClick = 0.17; + ~melodyInst = \pipa; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3719; + ~melodyNotes = [62,0,0,0,0,55,60,55,0,72,0,62,0,62,0,60,0,0,0,0,0,0,0,0,0,0,0,0,55,0,0,67]; + ~kickSteps = [0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0]; + ~hatSteps = [0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1]; + ~percInst = \taiko; + ~percSteps = [0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 84.wait; + + "[O09 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 96; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,60,72,65,0,0,65,0,67,0,57,64,72,0,67,0,72,0,0,0,0,0,64,55,0,0,0,57,0,0,0]; + ~melodyCutoff = 4219; + ~percSteps = [1,1,0,1,0,1,0,0,1,0,0,0,1,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1249, 4719); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O09 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 104; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.52; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [91,84,0,0,0,0,0,84,88,0,0,0,0,76,0,88,0,84,86,0,0,84,88,0,0,88,0,76,0,86,0,0]; + ~melodyAmp = 0.25; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleVietnam); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,0,1,0,1,0,0,1,0,0,0,1,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[O09 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 104; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \pipa; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4519; + ~melodyNotes = [0,0,0,0,0,0,0,43,43,0,0,0,50,0,0,0,0,43,0,42,47,38,0,0,0,0,40,0,50,0,47,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.29, 1249, \sin, 3719) }; + ~vcfOn !? { ~vcfOn.(\moog, 1449, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 96.wait; + + "[O09 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.47; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3719); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O09 7:00] === fin SILK ROAD ===".postln; +}).play; +"=== TRACK O09 : SILK ROAD 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O10_mountain_mist.scd b/sound_algo/tracks/O_asian_cinematic/O10_mountain_mist.scd new file mode 100644 index 0000000..64cab48 --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O10_mountain_mist.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O10_mountain_mist.scd -- Album O "MOUNTAIN MIST", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O10 : "MOUNTAIN MIST" 8 minutes ---------------------- +// 0:00 intro -> 1:36 build -> 3:36 drop -> 5:36 variation -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O10 0:00] intro -- flute solo + perc tom...".postln; + ~bpm = 70; + ~kickAmp = 0.53; ~hatAmp = 0.06; ~melodyAmp = 0.19; + ~kickFreq = 50; ~kickPitchAmt = 2.6; ~kickDecay = 0.26; + ~kickDrive = 1.2; ~kickClick = 0.19; + ~melodyInst = \flute; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3434; + ~melodyNotes = [0,65,0,74,0,0,0,74,60,0,65,0,0,0,0,69,70,65,0,67,0,77,0,0,69,0,70,0,69,0,0,0]; + ~kickSteps = [0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0]; + ~hatSteps = [0,0,0,1,0,1,1,1,0,1,1,0,0,1,0,1]; + ~percInst = \tom; + ~percSteps = [1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 96.wait; + + "[O10 1:36] build -- kick + hat + melody plus dense...".postln; + ~bpm = 74; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [69,0,0,70,74,0,70,0,69,0,0,70,0,0,72,62,0,0,0,74,70,67,65,67,0,0,60,62,0,60,0,0]; + ~melodyCutoff = 3934; + ~percSteps = [1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0]; ~percAmp = 0.36; + ~reload.value; + 24.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1018, 4434); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O10 3:36] drop -- variation + ensemble dense...".postln; + ~bpm = 70; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.58; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [74,71,86,69,69,0,0,76,0,0,0,0,0,0,0,86,0,81,79,0,0,0,0,78,0,0,0,0,78,78,0,0]; + ~melodyAmp = 0.21; + ~reload.value; + 20.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[O10 5:36] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 68; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \flute; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4234; + ~melodyNotes = [0,0,47,0,47,38,0,35,0,40,0,35,43,47,33,0,0,0,38,0,50,38,0,50,35,0,47,0,0,47,40,0]; + ~melodyAmp = 0.19; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.3, 1018, \sin, 3434) }; + ~vcfOn !? { ~vcfOn.(\moog, 1218, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 114.wait; + + "[O10 7:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.19; ~kickAmp = x * 0.53; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3434); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O10 8:00] === fin MOUNTAIN MIST ===".postln; +}).play; +"=== TRACK O10 : MOUNTAIN MIST 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O11_sakura_wind.scd b/sound_algo/tracks/O_asian_cinematic/O11_sakura_wind.scd new file mode 100644 index 0000000..d0b7989 --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O11_sakura_wind.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O11_sakura_wind.scd -- Album O "SAKURA WIND", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O11 : "SAKURA WIND" 7 minutes ---------------------- +// 0:00 intro -> 1:24 build -> 3:09 drop -> 4:54 variation -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O11 0:00] intro -- koto solo + perc tom...".postln; + ~bpm = 78; + ~kickAmp = 0.48; ~hatAmp = 0.06; ~melodyAmp = 0.21; + ~kickFreq = 64; ~kickPitchAmt = 3.8; ~kickDecay = 0.3; + ~kickDrive = 1.2; ~kickClick = 0.12; + ~melodyInst = \koto; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2571; + ~melodyNotes = [71,69,0,0,76,0,0,0,0,0,0,0,0,79,0,0,62,0,0,0,0,0,0,0,72,0,67,76,79,76,0,0]; + ~kickSteps = [0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0]; + ~hatSteps = [1,0,1,0,1,0,1,0,0,1,1,0,0,0,0,0]; + ~percInst = \tom; + ~percSteps = [0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 84.wait; + + "[O11 1:24] build -- kick + hat + melody plus dense...".postln; + ~bpm = 78; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [79,0,0,0,0,69,0,0,79,72,76,0,0,76,62,79,0,72,0,0,0,0,0,0,0,79,74,79,76,0,0,0]; + ~melodyCutoff = 3071; + ~percSteps = [0,1,0,1,1,0,1,0,1,1,0,0,0,1,0,0]; ~percAmp = 0.36; + ~reload.value; + 21.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1246, 3571); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O11 3:09] drop -- variation + ensemble dense...".postln; + ~bpm = 80; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.53; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [79,81,0,0,76,79,0,81,71,81,0,69,0,0,0,79,83,0,71,0,69,0,0,0,0,78,74,0,0,74,0,71]; + ~melodyAmp = 0.23; + ~reload.value; + 17.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHirajoshi); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,1,0,1,1,0,1,0,1,1,0,0,0,1,0,0].scramble; ~reload.value }; + 6.wait; + }; + + "[O11 4:54] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 82; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \koto; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3371; + ~melodyNotes = [0,0,35,47,0,0,37,0,44,40,47,0,0,42,45,0,0,49,42,37,52,0,0,0,49,0,0,0,0,0,0,0]; + ~melodyAmp = 0.21; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.25, 1246, \sin, 2571) }; + ~vcfOn !? { ~vcfOn.(\moog, 1446, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 96.wait; + + "[O11 6:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.21; ~kickAmp = x * 0.48; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2571); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O11 7:00] === fin SAKURA WIND ===".postln; +}).play; +"=== TRACK O11 : SAKURA WIND 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O12_dragon_dance.scd b/sound_algo/tracks/O_asian_cinematic/O12_dragon_dance.scd new file mode 100644 index 0000000..68b092f --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O12_dragon_dance.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O12_dragon_dance.scd -- Album O "DRAGON DANCE", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O12 : "DRAGON DANCE" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O12 0:00] intro -- pipa solo + perc taiko...".postln; + ~bpm = 110; + ~kickAmp = 0.49; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 49; ~kickPitchAmt = 3.0; ~kickDecay = 0.52; + ~kickDrive = 1.2; ~kickClick = 0.1; + ~melodyInst = \pipa; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2554; + ~melodyNotes = [62,74,0,67,0,67,74,0,64,0,0,0,0,74,59,0,71,62,71,64,0,67,0,0,59,62,66,57,64,0,0,0]; + ~kickSteps = [0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0]; + ~hatSteps = [0,0,1,0,1,0,0,0,1,1,1,0,0,0,1,1]; + ~percInst = \taiko; + ~percSteps = [1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 60.wait; + + "[O12 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 106; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,0,59,0,0,0,62,0,74,0,57,64,0,59,69,66,0,71,0,59,59,0,64,71,0,0,0,0,57,69,0,0]; + ~melodyCutoff = 3054; + ~percSteps = [1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(996, 3554); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O12 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 108; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.54; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [79,0,0,0,0,78,76,74,71,0,83,0,0,0,0,76,0,71,74,0,0,0,81,0,83,0,0,76,78,0,0,0]; + ~melodyAmp = 0.25; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleVietnam); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0].scramble; ~reload.value }; + 6.wait; + }; + + "[O12 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 108; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \pipa; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3354; + ~melodyNotes = [38,0,52,0,45,55,0,0,55,0,48,0,38,0,50,40,0,0,38,0,0,0,40,47,52,0,38,0,52,40,0,0]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.22, 996, \sin, 2554) }; + ~vcfOn !? { ~vcfOn.(\moog, 1196, 0.4) }; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + 60.wait; + + "[O12 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.49; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2554); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O12 5:00] === fin DRAGON DANCE ===".postln; +}).play; +"=== TRACK O12 : DRAGON DANCE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O13_zen_garden.scd b/sound_algo/tracks/O_asian_cinematic/O13_zen_garden.scd new file mode 100644 index 0000000..76ff353 --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O13_zen_garden.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O13_zen_garden.scd -- Album O "ZEN GARDEN", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O13 : "ZEN GARDEN" 4 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 1:48 drop -> 2:48 variation -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O13 0:00] intro -- shakuhachi solo + perc tom...".postln; + ~bpm = 65; + ~kickAmp = 0.5; ~hatAmp = 0.06; ~melodyAmp = 0.19; + ~kickFreq = 49; ~kickPitchAmt = 3.7; ~kickDecay = 0.41; + ~kickDrive = 1.2; ~kickClick = 0.22; + ~melodyInst = \shakuhachi; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2819; + ~melodyNotes = [0,0,0,0,64,0,57,69,0,0,0,0,74,57,0,0,0,0,0,0,0,0,0,74,0,0,74,0,66,66,0,0]; + ~kickSteps = [0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0]; + ~hatSteps = [0,0,1,0,0,0,0,0,1,0,0,1,0,1,0,0]; + ~percInst = \tom; + ~percSteps = [0,1,1,0,0,0,1,0,1,1,0,1,1,0,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 48.wait; + + "[O13 0:48] build -- kick + hat + melody plus dense...".postln; + ~bpm = 61; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [64,62,64,66,0,64,59,0,0,0,0,0,59,74,0,0,0,0,66,67,57,67,0,62,0,0,0,71,0,0,67,67]; + ~melodyCutoff = 3319; + ~percSteps = [0,0,1,1,0,1,0,0,0,1,0,1,1,0,0,1]; ~percAmp = 0.36; + ~reload.value; + 12.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1416, 3819); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O13 1:48] drop -- variation + ensemble dense...".postln; + ~bpm = 69; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.55; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,79,83,74,0,0,88,0,91,0,0,0,0,0,91,0,76,0,0,0,74,0,74,0,84,76,81,0,0,0,0,0]; + ~melodyAmp = 0.21; + ~reload.value; + 10.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleHirajoshi); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [0,0,1,1,0,1,0,0,0,1,0,1,1,0,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[O13 2:48] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 63; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \shakuhachi; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3619; + ~melodyNotes = [0,0,38,53,0,0,43,36,0,46,0,36,0,0,45,0,0,0,0,41,0,0,0,41,0,0,45,36,0,0,0,43]; + ~melodyAmp = 0.19; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.19, 1416, \sin, 2819) }; + ~vcfOn !? { ~vcfOn.(\moog, 1616, 0.4) }; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + 42.wait; + + "[O13 3:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.19; ~kickAmp = x * 0.5; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2819); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O13 4:00] === fin ZEN GARDEN ===".postln; +}).play; +"=== TRACK O13 : ZEN GARDEN 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O14_imperial_court.scd b/sound_algo/tracks/O_asian_cinematic/O14_imperial_court.scd new file mode 100644 index 0000000..169d3b6 --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O14_imperial_court.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O14_imperial_court.scd -- Album O "IMPERIAL COURT", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O14 : "IMPERIAL COURT" 5 minutes ---------------------- +// 0:00 intro -> 1:00 build -> 2:15 drop -> 3:30 variation -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O14 0:00] intro -- guzheng solo + perc taiko...".postln; + ~bpm = 95; + ~kickAmp = 0.51; ~hatAmp = 0.06; ~melodyAmp = 0.23; + ~kickFreq = 42; ~kickPitchAmt = 4.0; ~kickDecay = 0.32; + ~kickDrive = 1.2; ~kickClick = 0.26; + ~melodyInst = \guzheng; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 3413; + ~melodyNotes = [79,62,74,71,0,0,0,71,67,71,0,79,67,62,62,0,0,72,62,0,67,74,0,0,64,69,0,0,0,64,0,0]; + ~kickSteps = [0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0]; + ~hatSteps = [0,1,0,0,0,1,1,1,1,0,0,1,0,0,0,0]; + ~percInst = \taiko; + ~percSteps = [1,0,0,1,0,1,0,0,0,1,0,0,1,1,1,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\cinematic); + 60.wait; + + "[O14 1:00] build -- kick + hat + melody plus dense...".postln; + ~bpm = 97; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [72,76,0,0,76,0,76,69,0,0,64,0,0,0,64,0,64,0,0,0,71,67,72,69,74,0,74,67,74,0,0,0]; + ~melodyCutoff = 3913; + ~percSteps = [1,1,0,0,0,1,0,1,1,0,1,1,1,1,0,1]; ~percAmp = 0.36; + ~reload.value; + 15.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1066, 4413); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O14 2:15] drop -- variation + ensemble dense...".postln; + ~bpm = 97; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.56; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [0,0,86,0,83,88,0,76,91,0,83,79,84,0,0,79,86,0,74,88,84,0,81,0,0,0,76,0,0,88,83,0]; + ~melodyAmp = 0.25; + ~reload.value; + 12.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleVietnam); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,1,0,0,0,1,0,1,1,0,1,1,1,1,0,1].scramble; ~reload.value }; + 6.wait; + }; + + "[O14 3:30] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 99; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \guzheng; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 4213; + ~melodyNotes = [0,0,48,47,0,0,40,47,0,0,50,0,0,52,0,0,52,50,52,52,45,0,52,0,0,43,0,0,45,40,40,52]; + ~melodyAmp = 0.23; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.18, 1066, \sin, 3413) }; + ~vcfOn !? { ~vcfOn.(\moog, 1266, 0.4) }; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + 60.wait; + + "[O14 4:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.23; ~kickAmp = x * 0.51; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 3413); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O14 5:00] === fin IMPERIAL COURT ===".postln; +}).play; +"=== TRACK O14 : IMPERIAL COURT 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/O15_asian_finale.scd b/sound_algo/tracks/O_asian_cinematic/O15_asian_finale.scd new file mode 100644 index 0000000..30512ce --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/O15_asian_finale.scd @@ -0,0 +1,93 @@ +// ===================================================================== +// O15_asian_finale.scd -- Album O "ASIAN FINALE", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK O15 : "ASIAN FINALE" 6 minutes ---------------------- +// 0:00 intro -> 1:12 build -> 2:42 drop -> 4:12 variation -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[O15 0:00] intro -- erhu solo + perc tom...".postln; + ~bpm = 85; + ~kickAmp = 0.51; ~hatAmp = 0.06; ~melodyAmp = 0.24; + ~kickFreq = 58; ~kickPitchAmt = 3.6; ~kickDecay = 0.38; + ~kickDrive = 1.2; ~kickClick = 0.17; + ~melodyInst = \erhu; + ~melodyAttack = 0.05; ~melodyRelease = 0.8; ~melodyCutoff = 2632; + ~melodyNotes = [0,0,0,0,67,0,62,0,72,0,0,76,69,0,0,0,0,74,0,0,0,0,0,0,0,0,0,0,76,0,0,76]; + ~kickSteps = [0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1]; + ~hatSteps = [0,1,0,0,0,0,0,0,0,1,0,1,0,0,1,1]; + ~percInst = \tom; + ~percSteps = [0,0,1,1,0,0,0,0,1,0,0,0,0,1,0,0]; ~percAmp = 0.32; + ~snareSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; + ~acidAmp = 0; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 72.wait; + + "[O15 1:12] build -- kick + hat + melody plus dense...".postln; + ~bpm = 89; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]; + ~hatSteps = [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]; ~hatAmp = 0.10; + ~melodyNotes = [0,62,0,0,71,64,0,0,0,0,0,0,62,64,0,76,0,74,0,0,0,0,64,0,79,0,71,0,0,62,79,0]; + ~melodyCutoff = 3132; + ~percSteps = [1,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1]; ~percAmp = 0.36; + ~reload.value; + 18.do { |k| + if (0.20.coin) { ~melodyNotes = ~mutate.(~melodyNotes, 0.2); ~reload.value }; + if (0.15.coin) { ~melodyCutoff = rrand(1224, 3632); ~reload.value }; + if (0.10.coin) { ~melodyNotes = ~octavate.(~melodyNotes, 0.2); ~reload.value }; + 5.wait; + }; + + "[O15 2:42] drop -- variation + ensemble dense...".postln; + ~bpm = 83; TempoClock.default.tempo = ~bpm/60; + ~kickSteps = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0]; ~kickAmp = 0.56; + ~clapSteps = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]; ~clapAmp = 0.32; + ~melodyNotes = [77,0,0,0,0,84,0,0,79,0,75,79,0,87,0,84,84,0,0,72,0,84,87,77,80,0,80,0,0,0,0,84]; + ~melodyAmp = 0.26; + ~reload.value; + 15.do { |k| + if (0.25.coin) { + ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); + ~reload.value; + }; + if (0.20.coin) { ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); ~reload.value }; + if (0.15.coin) { ~percSteps = [1,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1].scramble; ~reload.value }; + 6.wait; + }; + + "[O15 4:12] variation -- timbre nouveau + fx evolve...".postln; + ~bpm = 91; TempoClock.default.tempo = ~bpm/60; + ~melodyInst = \erhu; + ~melodyAttack = 0.01; ~melodyRelease = 0.5; ~melodyCutoff = 3432; + ~melodyNotes = [48,0,43,0,38,0,0,0,52,47,40,45,0,0,0,0,55,40,52,0,0,0,48,0,43,0,0,0,0,0,0,50]; + ~melodyAmp = 0.24; + ~lfoTo !? { ~lfoTo.(\melodyCutoff, 0.29, 1224, \sin, 2632) }; + ~vcfOn !? { ~vcfOn.(\moog, 1424, 0.4) }; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + 78.wait; + + "[O15 5:30] outro -- fade global...".postln; + ~lfoStopVar !? { ~lfoStopVar.(\melodyCutoff) }; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.24; ~kickAmp = x * 0.51; + ~hatAmp = x * 0.10; ~percAmp = x * 0.32; ~clapAmp = x * 0.32; + ~melodyCutoff = 250 + (x * 2632); + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[O15 6:00] === fin ASIAN FINALE ===".postln; +}).play; +"=== TRACK O15 : ASIAN FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/O_asian_cinematic/_album.scd b/sound_algo/tracks/O_asian_cinematic/_album.scd new file mode 100644 index 0000000..f82644f --- /dev/null +++ b/sound_algo/tracks/O_asian_cinematic/_album.scd @@ -0,0 +1,84 @@ +// ===================================================================== +// _album.scd -- Album O "Asian Cinematic" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM O (1 fois) +// 3. ~playTrack.(\O, 7) pour jouer la track 7 isolement +// ~playAlbum.(\O) pour enchainer 01 -> 15 +// ~stopAlbum.() pour interrompre l'album +// ===================================================================== + +( // --- SETUP ALBUM O --- +~albums = ~albums ? (); +~albums[\O] = ( + title: "Asian Cinematic", + folder: "tracks/O_asian_cinematic/", + tracks: [ + \O01_asian_opening, + \O02_koto_solo, + \O03_erhu_lament, + \O04_pipa_journey, + \O05_shakuhachi_breath, + \O06_guzheng_river, + \O07_temple_bells, + \O08_bamboo_grove, + \O09_silk_road, + \O10_mountain_mist, + \O11_sakura_wind, + \O12_dragon_dance, + \O13_zen_garden, + \O14_imperial_court, + \O15_asian_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); + +~playTrack = ~playTrack ? { |album = \O, n = 1| + var info, file, path; + info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + file = info[\tracks][n - 1]; + if (file.isNil) { + ("!! track " ++ album ++ n ++ " inexistante (1-" ++ info[\tracks].size ++ ")").postln; + } { + path = (~base ? "") ++ info[\folder] ++ file ++ ".scd"; + ("[ALBUM " ++ album ++ "] track " ++ n ++ " : " ++ file).postln; + path.load; + }; + }; +}; + +~stopAlbum = ~stopAlbum ? { + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[ALBUM] stop".postln; +}; + +~playAlbum = ~playAlbum ? { |album = \O, gap = 8| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ~stopAlbum.(); + ~albumRoutine = Routine({ + ("=== ALBUM " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + ("[ALBUM " ++ album ++ "] -> track " ++ (i + 1) ++ "/" + ++ info[\tracks].size ++ " : " ++ slug + ++ " (" ++ dur ++ "s)").postln; + ~playTrack.(album, i + 1); + (dur + gap).wait; + }; + ("=== ALBUM " ++ album ++ " complete ===").postln; + }).play; + }; +}; + +"[album O] setup OK".postln; +) diff --git a/sound_algo/tracks/P_industrial/P01_industrial.scd b/sound_algo/tracks/P_industrial/P01_industrial.scd new file mode 100644 index 0000000..d7545a5 --- /dev/null +++ b/sound_algo/tracks/P_industrial/P01_industrial.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P01_industrial.scd -- Album P "Industrial", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Industrial" 4 min (240s) +// ===================================================================== + +// --- TRACK P01 : "INDUSTRIAL" 4 minutes ------------- +// 0:00 intro -> 0:52 groove -> 1:55 drop -> 2:47 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P01 0:00] intro / atmosphere...".postln; + ~bpm = 150; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 52.wait; + + "[P01 0:52] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scaleHarmonicMin); + ~melodyCutoff = 1800; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P01 1:55] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 10.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P01 2:47] variations / second wave...".postln; + ~melodyInst = \hooverbass; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 43.wait; + + "[P01 3:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P01 4:00] === fin INDUSTRIAL ===".postln; +}).play; +"=== TRACK P01 : INDUSTRIAL 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P02_ebm_classic.scd b/sound_algo/tracks/P_industrial/P02_ebm_classic.scd new file mode 100644 index 0000000..dd45a46 --- /dev/null +++ b/sound_algo/tracks/P_industrial/P02_ebm_classic.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P02_ebm_classic.scd -- Album P "Industrial", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "EBM Classic" 5 min (300s) +// ===================================================================== + +// --- TRACK P02 : "EBM CLASSIC" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P02 0:00] intro / atmosphere...".postln; + ~bpm = 133; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \hooverbass; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 67.wait; + + "[P02 1:07] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1800; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P02 2:28] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P02 3:35] variations / second wave...".postln; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 55.wait; + + "[P02 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P02 5:00] === fin EBM CLASSIC ===".postln; +}).play; +"=== TRACK P02 : EBM CLASSIC 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P03_dark_factory.scd b/sound_algo/tracks/P_industrial/P03_dark_factory.scd new file mode 100644 index 0000000..bfec6bc --- /dev/null +++ b/sound_algo/tracks/P_industrial/P03_dark_factory.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P03_dark_factory.scd -- Album P "Industrial", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Dark Factory" 6 min (360s) +// ===================================================================== + +// --- TRACK P03 : "DARK FACTORY" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P03 0:00] intro / atmosphere...".postln; + ~bpm = 136; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[P03 1:22] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1800; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P03 3:01] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P03 4:23] variations / second wave...".postln; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 67.wait; + + "[P03 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P03 6:00] === fin DARK FACTORY ===".postln; +}).play; +"=== TRACK P03 : DARK FACTORY 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P04_metal_pulse.scd b/sound_algo/tracks/P_industrial/P04_metal_pulse.scd new file mode 100644 index 0000000..ef461f3 --- /dev/null +++ b/sound_algo/tracks/P_industrial/P04_metal_pulse.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P04_metal_pulse.scd -- Album P "Industrial", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Metal Pulse" 7 min (420s) +// ===================================================================== + +// --- TRACK P04 : "METAL PULSE" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P04 0:00] intro / atmosphere...".postln; + ~bpm = 148; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 97.wait; + + "[P04 1:37] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1800; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P04 3:34] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P04 5:11] variations / second wave...".postln; + ~melodyInst = \hooverbass; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 79.wait; + + "[P04 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P04 7:00] === fin METAL PULSE ===".postln; +}).play; +"=== TRACK P04 : METAL PULSE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P05_industrial_dub.scd b/sound_algo/tracks/P_industrial/P05_industrial_dub.scd new file mode 100644 index 0000000..b752933 --- /dev/null +++ b/sound_algo/tracks/P_industrial/P05_industrial_dub.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P05_industrial_dub.scd -- Album P "Industrial", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Industrial Dub" 8 min (480s) +// ===================================================================== + +// --- TRACK P05 : "INDUSTRIAL DUB" 8 minutes ------------- +// 0:00 intro -> 1:52 groove -> 4:07 drop -> 5:59 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P05 0:00] intro / atmosphere...".postln; + ~bpm = 134; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \hooverbass; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 112.wait; + + "[P05 1:52] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1800; + ~reload.value; + 33.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P05 4:07] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 22.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P05 5:59] variations / second wave...".postln; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 91.wait; + + "[P05 7:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P05 8:00] === fin INDUSTRIAL DUB ===".postln; +}).play; +"=== TRACK P05 : INDUSTRIAL DUB 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P06_rust_machine.scd b/sound_algo/tracks/P_industrial/P06_rust_machine.scd new file mode 100644 index 0000000..ed5dea9 --- /dev/null +++ b/sound_algo/tracks/P_industrial/P06_rust_machine.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P06_rust_machine.scd -- Album P "Industrial", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Rust Machine" 6 min (360s) +// ===================================================================== + +// --- TRACK P06 : "RUST MACHINE" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P06 0:00] intro / atmosphere...".postln; + ~bpm = 141; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[P06 1:22] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1800; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P06 3:01] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P06 4:23] variations / second wave...".postln; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 67.wait; + + "[P06 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P06 6:00] === fin RUST MACHINE ===".postln; +}).play; +"=== TRACK P06 : RUST MACHINE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P07_steel_ritual.scd b/sound_algo/tracks/P_industrial/P07_steel_ritual.scd new file mode 100644 index 0000000..547e6fd --- /dev/null +++ b/sound_algo/tracks/P_industrial/P07_steel_ritual.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P07_steel_ritual.scd -- Album P "Industrial", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Steel Ritual" 5 min (300s) +// ===================================================================== + +// --- TRACK P07 : "STEEL RITUAL" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P07 0:00] intro / atmosphere...".postln; + ~bpm = 132; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 67.wait; + + "[P07 1:07] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scaleHarmonicMin); + ~melodyCutoff = 1800; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P07 2:28] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P07 3:35] variations / second wave...".postln; + ~melodyInst = \fmBass; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 55.wait; + + "[P07 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P07 5:00] === fin STEEL RITUAL ===".postln; +}).play; +"=== TRACK P07 : STEEL RITUAL 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P08_acid_industrial.scd b/sound_algo/tracks/P_industrial/P08_acid_industrial.scd new file mode 100644 index 0000000..1077379 --- /dev/null +++ b/sound_algo/tracks/P_industrial/P08_acid_industrial.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P08_acid_industrial.scd -- Album P "Industrial", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Acid Industrial" 6 min (360s) +// ===================================================================== + +// --- TRACK P08 : "ACID INDUSTRIAL" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P08 0:00] intro / atmosphere...".postln; + ~bpm = 137; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \fmBass; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[P08 1:22] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1800; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P08 3:01] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P08 4:23] variations / second wave...".postln; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 67.wait; + + "[P08 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P08 6:00] === fin ACID INDUSTRIAL ===".postln; +}).play; +"=== TRACK P08 : ACID INDUSTRIAL 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P09_noise_engine.scd b/sound_algo/tracks/P_industrial/P09_noise_engine.scd new file mode 100644 index 0000000..2c41813 --- /dev/null +++ b/sound_algo/tracks/P_industrial/P09_noise_engine.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P09_noise_engine.scd -- Album P "Industrial", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Noise Engine" 7 min (420s) +// ===================================================================== + +// --- TRACK P09 : "NOISE ENGINE" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P09 0:00] intro / atmosphere...".postln; + ~bpm = 144; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 97.wait; + + "[P09 1:37] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1800; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P09 3:34] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P09 5:11] variations / second wave...".postln; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 79.wait; + + "[P09 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P09 7:00] === fin NOISE ENGINE ===".postln; +}).play; +"=== TRACK P09 : NOISE ENGINE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P10_dystopia.scd b/sound_algo/tracks/P_industrial/P10_dystopia.scd new file mode 100644 index 0000000..786d3c0 --- /dev/null +++ b/sound_algo/tracks/P_industrial/P10_dystopia.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P10_dystopia.scd -- Album P "Industrial", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Dystopia" 8 min (480s) +// ===================================================================== + +// --- TRACK P10 : "DYSTOPIA" 8 minutes ------------- +// 0:00 intro -> 1:52 groove -> 4:07 drop -> 5:59 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P10 0:00] intro / atmosphere...".postln; + ~bpm = 138; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 112.wait; + + "[P10 1:52] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1800; + ~reload.value; + 33.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P10 4:07] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 22.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P10 5:59] variations / second wave...".postln; + ~melodyInst = \hooverbass; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 91.wait; + + "[P10 7:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P10 8:00] === fin DYSTOPIA ===".postln; +}).play; +"=== TRACK P10 : DYSTOPIA 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P11_smoke_stack.scd b/sound_algo/tracks/P_industrial/P11_smoke_stack.scd new file mode 100644 index 0000000..134d1e0 --- /dev/null +++ b/sound_algo/tracks/P_industrial/P11_smoke_stack.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P11_smoke_stack.scd -- Album P "Industrial", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Smoke Stack" 7 min (420s) +// ===================================================================== + +// --- TRACK P11 : "SMOKE STACK" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P11 0:00] intro / atmosphere...".postln; + ~bpm = 142; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \hooverbass; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 97.wait; + + "[P11 1:37] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scaleHarmonicMin); + ~melodyCutoff = 1800; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P11 3:34] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P11 5:11] variations / second wave...".postln; + ~melodyInst = \fmBass; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 79.wait; + + "[P11 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P11 7:00] === fin SMOKE STACK ===".postln; +}).play; +"=== TRACK P11 : SMOKE STACK 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P12_ebm_strict.scd b/sound_algo/tracks/P_industrial/P12_ebm_strict.scd new file mode 100644 index 0000000..f815188 --- /dev/null +++ b/sound_algo/tracks/P_industrial/P12_ebm_strict.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P12_ebm_strict.scd -- Album P "Industrial", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "EBM Strict" 5 min (300s) +// ===================================================================== + +// --- TRACK P12 : "EBM STRICT" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P12 0:00] intro / atmosphere...".postln; + ~bpm = 140; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \fmBass; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 67.wait; + + "[P12 1:07] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1800; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P12 2:28] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P12 3:35] variations / second wave...".postln; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 55.wait; + + "[P12 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P12 5:00] === fin EBM STRICT ===".postln; +}).play; +"=== TRACK P12 : EBM STRICT 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P13_furnace.scd b/sound_algo/tracks/P_industrial/P13_furnace.scd new file mode 100644 index 0000000..1bc0172 --- /dev/null +++ b/sound_algo/tracks/P_industrial/P13_furnace.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P13_furnace.scd -- Album P "Industrial", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Furnace" 4 min (240s) +// ===================================================================== + +// --- TRACK P13 : "FURNACE" 4 minutes ------------- +// 0:00 intro -> 0:52 groove -> 1:55 drop -> 2:47 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P13 0:00] intro / atmosphere...".postln; + ~bpm = 150; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 52.wait; + + "[P13 0:52] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1800; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P13 1:55] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 10.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P13 2:47] variations / second wave...".postln; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 43.wait; + + "[P13 3:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P13 4:00] === fin FURNACE ===".postln; +}).play; +"=== TRACK P13 : FURNACE 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P14_urban_decay.scd b/sound_algo/tracks/P_industrial/P14_urban_decay.scd new file mode 100644 index 0000000..28515ae --- /dev/null +++ b/sound_algo/tracks/P_industrial/P14_urban_decay.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P14_urban_decay.scd -- Album P "Industrial", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Urban Decay" 5 min (300s) +// ===================================================================== + +// --- TRACK P14 : "URBAN DECAY" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P14 0:00] intro / atmosphere...".postln; + ~bpm = 137; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \didgeridoo; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 67.wait; + + "[P14 1:07] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1800; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P14 2:28] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P14 3:35] variations / second wave...".postln; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 55.wait; + + "[P14 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P14 5:00] === fin URBAN DECAY ===".postln; +}).play; +"=== TRACK P14 : URBAN DECAY 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/P15_industrial_finale.scd b/sound_algo/tracks/P_industrial/P15_industrial_finale.scd new file mode 100644 index 0000000..d58ac4b --- /dev/null +++ b/sound_algo/tracks/P_industrial/P15_industrial_finale.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// P15_industrial_finale.scd -- Album P "Industrial", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Industrial Finale" 6 min (360s) +// ===================================================================== + +// --- TRACK P15 : "INDUSTRIAL FINALE" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[P15 0:00] intro / atmosphere...".postln; + ~bpm = 134; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.28; + ~kickDrive = 3.5; ~kickClick = 0.3; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,0,1, 1,1,0,1, 0,1,0,1, 1,1,0,1]; ~hatAmp = 0.1; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,1,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,1]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.144; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 82.wait; + + "[P15 1:22] build / groove...".postln; + ~melodyAmp = 0.204; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1800; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[P15 3:01] drop / climax...".postln; + ~melodyAmp = 0.240; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[P15 4:23] variations / second wave...".postln; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.216; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 67.wait; + + "[P15 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.240; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.100; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[P15 6:00] === fin INDUSTRIAL FINALE ===".postln; +}).play; +"=== TRACK P15 : INDUSTRIAL FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/P_industrial/_album.scd b/sound_algo/tracks/P_industrial/_album.scd new file mode 100644 index 0000000..937f345 --- /dev/null +++ b/sound_algo/tracks/P_industrial/_album.scd @@ -0,0 +1,84 @@ +// ===================================================================== +// _album.scd -- Album P "Industrial" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM P +// 3. ~playTrack.(\P, n) pour jouer la track n isolement +// ~playAlbum.(\P) pour enchainer 01 -> 15 +// ~stopAlbum.() pour arreter +// ===================================================================== + +( // --- SETUP ALBUM P --- +~albums = ~albums ? (); +~albums[\P] = ( + title: "Industrial", + folder: "tracks/P_industrial/", + tracks: [ + \P01_industrial, + \P02_ebm_classic, + \P03_dark_factory, + \P04_metal_pulse, + \P05_industrial_dub, + \P06_rust_machine, + \P07_steel_ritual, + \P08_acid_industrial, + \P09_noise_engine, + \P10_dystopia, + \P11_smoke_stack, + \P12_ebm_strict, + \P13_furnace, + \P14_urban_decay, + \P15_industrial_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); + +~playTrack = ~playTrack ? { |album = \P, n = 1| + var info, file, path; + info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + file = info[\tracks][n - 1]; + if (file.isNil) { + ("!! track " ++ album ++ n ++ " inexistante").postln; + } { + path = (~base ? "") ++ info[\folder] ++ file ++ ".scd"; + ("[ALBUM " ++ album ++ "] track " ++ n ++ " : " ++ file).postln; + path.load; + }; + }; +}; + +~stopAlbum = ~stopAlbum ? { + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[ALBUM] stop".postln; +}; + +~playAlbum = ~playAlbum ? { |album = \P, gap = 8| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ~stopAlbum.(); + ~albumRoutine = Routine({ + ("=== ALBUM " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + ("[ALBUM " ++ album ++ "] -> track " ++ (i + 1) ++ "/" + ++ info[\tracks].size ++ " : " ++ slug + ++ " (" ++ dur ++ "s)").postln; + ~playTrack.(album, i + 1); + (dur + gap).wait; + }; + ("=== ALBUM " ++ album ++ " complete ===").postln; + }).play; + }; +}; + +"[album P] setup OK".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q01_neurofunk_dnb.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q01_neurofunk_dnb.scd new file mode 100644 index 0000000..0ad85b1 --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q01_neurofunk_dnb.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q01_neurofunk_dnb.scd -- Album Q "Neurofunk DnB", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Neurofunk DnB" 4 min (240s) +// ===================================================================== + +// --- TRACK Q01 : "NEUROFUNK DNB" 4 minutes ------------- +// 0:00 intro -> 0:52 groove -> 1:55 drop -> 2:47 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q01 0:00] intro / atmosphere...".postln; + ~bpm = 173; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dubstep) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 52.wait; + + "[Q01 0:52] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1400; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q01 1:55] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 10.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q01 2:47] variations / second wave...".postln; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 43.wait; + + "[Q01 3:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q01 4:00] === fin NEUROFUNK DNB ===".postln; +}).play; +"=== TRACK Q01 : NEUROFUNK DNB 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q02_amen_storm.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q02_amen_storm.scd new file mode 100644 index 0000000..b1c2469 --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q02_amen_storm.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q02_amen_storm.scd -- Album Q "Neurofunk DnB", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Amen Storm" 5 min (300s) +// ===================================================================== + +// --- TRACK Q02 : "AMEN STORM" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q02 0:00] intro / atmosphere...".postln; + ~bpm = 175; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinorPent); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 67.wait; + + "[Q02 1:07] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1400; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q02 2:28] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q02 3:35] variations / second wave...".postln; + ~melodyInst = \reese; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 55.wait; + + "[Q02 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q02 5:00] === fin AMEN STORM ===".postln; +}).play; +"=== TRACK Q02 : AMEN STORM 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q03_liquid_neuro.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q03_liquid_neuro.scd new file mode 100644 index 0000000..22d8d3a --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q03_liquid_neuro.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q03_liquid_neuro.scd -- Album Q "Neurofunk DnB", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Liquid Neuro" 6 min (360s) +// ===================================================================== + +// --- TRACK Q03 : "LIQUID NEURO" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q03 0:00] intro / atmosphere...".postln; + ~bpm = 174; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reese; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinorPent); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 82.wait; + + "[Q03 1:22] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scaleHarmonicMin); + ~melodyCutoff = 1400; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q03 3:01] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q03 4:23] variations / second wave...".postln; + ~melodyInst = \growl; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 67.wait; + + "[Q03 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q03 6:00] === fin LIQUID NEURO ===".postln; +}).play; +"=== TRACK Q03 : LIQUID NEURO 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q04_growl_destroyer.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q04_growl_destroyer.scd new file mode 100644 index 0000000..7df5f90 --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q04_growl_destroyer.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q04_growl_destroyer.scd -- Album Q "Neurofunk DnB", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Growl Destroyer" 7 min (420s) +// ===================================================================== + +// --- TRACK Q04 : "GROWL DESTROYER" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q04 0:00] intro / atmosphere...".postln; + ~bpm = 174; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \growl; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 97.wait; + + "[Q04 1:37] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1400; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q04 3:34] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinorPent); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q04 5:11] variations / second wave...".postln; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 79.wait; + + "[Q04 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q04 7:00] === fin GROWL DESTROYER ===".postln; +}).play; +"=== TRACK Q04 : GROWL DESTROYER 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q05_rolling_neuro.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q05_rolling_neuro.scd new file mode 100644 index 0000000..6529fc5 --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q05_rolling_neuro.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q05_rolling_neuro.scd -- Album Q "Neurofunk DnB", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Rolling Neuro" 8 min (480s) +// ===================================================================== + +// --- TRACK Q05 : "ROLLING NEURO" 8 minutes ------------- +// 0:00 intro -> 1:52 groove -> 4:07 drop -> 5:59 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q05 0:00] intro / atmosphere...".postln; + ~bpm = 174; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dubstep) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 112.wait; + + "[Q05 1:52] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~melodyCutoff = 1400; + ~reload.value; + 33.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q05 4:07] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 22.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q05 5:59] variations / second wave...".postln; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 91.wait; + + "[Q05 7:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q05 8:00] === fin ROLLING NEURO ===".postln; +}).play; +"=== TRACK Q05 : ROLLING NEURO 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q06_tech_dnb.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q06_tech_dnb.scd new file mode 100644 index 0000000..1ac12bc --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q06_tech_dnb.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q06_tech_dnb.scd -- Album Q "Neurofunk DnB", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Tech DnB" 6 min (360s) +// ===================================================================== + +// --- TRACK Q06 : "TECH DNB" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q06 0:00] intro / atmosphere...".postln; + ~bpm = 174; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 82.wait; + + "[Q06 1:22] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1400; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q06 3:01] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q06 4:23] variations / second wave...".postln; + ~melodyInst = \subBoom; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 67.wait; + + "[Q06 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q06 6:00] === fin TECH DNB ===".postln; +}).play; +"=== TRACK Q06 : TECH DNB 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q07_minimal_dnb.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q07_minimal_dnb.scd new file mode 100644 index 0000000..601cde8 --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q07_minimal_dnb.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q07_minimal_dnb.scd -- Album Q "Neurofunk DnB", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Minimal DnB" 5 min (300s) +// ===================================================================== + +// --- TRACK Q07 : "MINIMAL DNB" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q07 0:00] intro / atmosphere...".postln; + ~bpm = 175; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \subBoom; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 67.wait; + + "[Q07 1:07] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1400; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q07 2:28] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q07 3:35] variations / second wave...".postln; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 55.wait; + + "[Q07 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q07 5:00] === fin MINIMAL DNB ===".postln; +}).play; +"=== TRACK Q07 : MINIMAL DNB 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q08_dark_dnb.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q08_dark_dnb.scd new file mode 100644 index 0000000..0802e6c --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q08_dark_dnb.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q08_dark_dnb.scd -- Album Q "Neurofunk DnB", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Dark DnB" 6 min (360s) +// ===================================================================== + +// --- TRACK Q08 : "DARK DNB" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q08 0:00] intro / atmosphere...".postln; + ~bpm = 176; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[Q08 1:22] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1400; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q08 3:01] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q08 4:23] variations / second wave...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 67.wait; + + "[Q08 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q08 6:00] === fin DARK DNB ===".postln; +}).play; +"=== TRACK Q08 : DARK DNB 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q09_atmosphere_dnb.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q09_atmosphere_dnb.scd new file mode 100644 index 0000000..cdfb238 --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q09_atmosphere_dnb.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q09_atmosphere_dnb.scd -- Album Q "Neurofunk DnB", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Atmosphere DnB" 7 min (420s) +// ===================================================================== + +// --- TRACK Q09 : "ATMOSPHERE DNB" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q09 0:00] intro / atmosphere...".postln; + ~bpm = 174; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \warmPad; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 97.wait; + + "[Q09 1:37] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1400; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q09 3:34] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q09 5:11] variations / second wave...".postln; + ~melodyInst = \growl; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 79.wait; + + "[Q09 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q09 7:00] === fin ATMOSPHERE DNB ===".postln; +}).play; +"=== TRACK Q09 : ATMOSPHERE DNB 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q10_hard_neuro.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q10_hard_neuro.scd new file mode 100644 index 0000000..0210d34 --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q10_hard_neuro.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q10_hard_neuro.scd -- Album Q "Neurofunk DnB", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Hard Neuro" 8 min (480s) +// ===================================================================== + +// --- TRACK Q10 : "HARD NEURO" 8 minutes ------------- +// 0:00 intro -> 1:52 groove -> 4:07 drop -> 5:59 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q10 0:00] intro / atmosphere...".postln; + ~bpm = 174; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \growl; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dubstep) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 112.wait; + + "[Q10 1:52] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1400; + ~reload.value; + 33.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q10 4:07] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 22.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q10 5:59] variations / second wave...".postln; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 91.wait; + + "[Q10 7:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q10 8:00] === fin HARD NEURO ===".postln; +}).play; +"=== TRACK Q10 : HARD NEURO 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q11_jump_up.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q11_jump_up.scd new file mode 100644 index 0000000..175ba2a --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q11_jump_up.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q11_jump_up.scd -- Album Q "Neurofunk DnB", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Jump Up" 7 min (420s) +// ===================================================================== + +// --- TRACK Q11 : "JUMP UP" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q11 0:00] intro / atmosphere...".postln; + ~bpm = 172; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 97.wait; + + "[Q11 1:37] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1400; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q11 3:34] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinorPent); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q11 5:11] variations / second wave...".postln; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 79.wait; + + "[Q11 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q11 7:00] === fin JUMP UP ===".postln; +}).play; +"=== TRACK Q11 : JUMP UP 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q12_sci_fi_dnb.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q12_sci_fi_dnb.scd new file mode 100644 index 0000000..7e39d3c --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q12_sci_fi_dnb.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q12_sci_fi_dnb.scd -- Album Q "Neurofunk DnB", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Sci Fi DnB" 5 min (300s) +// ===================================================================== + +// --- TRACK Q12 : "SCI FI DNB" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q12 0:00] intro / atmosphere...".postln; + ~bpm = 173; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dubstep) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 67.wait; + + "[Q12 1:07] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1400; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q12 2:28] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q12 3:35] variations / second wave...".postln; + ~melodyInst = \growl; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 55.wait; + + "[Q12 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q12 5:00] === fin SCI FI DNB ===".postln; +}).play; +"=== TRACK Q12 : SCI FI DNB 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q13_breakcore_dnb.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q13_breakcore_dnb.scd new file mode 100644 index 0000000..62abf16 --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q13_breakcore_dnb.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q13_breakcore_dnb.scd -- Album Q "Neurofunk DnB", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Breakcore DnB" 4 min (240s) +// ===================================================================== + +// --- TRACK Q13 : "BREAKCORE DNB" 4 minutes ------------- +// 0:00 intro -> 0:52 groove -> 1:55 drop -> 2:47 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q13 0:00] intro / atmosphere...".postln; + ~bpm = 175; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \growl; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 52.wait; + + "[Q13 0:52] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1400; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q13 1:55] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 10.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q13 2:47] variations / second wave...".postln; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 43.wait; + + "[Q13 3:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q13 4:00] === fin BREAKCORE DNB ===".postln; +}).play; +"=== TRACK Q13 : BREAKCORE DNB 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q14_industrial_dnb.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q14_industrial_dnb.scd new file mode 100644 index 0000000..31dc9d0 --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q14_industrial_dnb.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q14_industrial_dnb.scd -- Album Q "Neurofunk DnB", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Industrial DnB" 5 min (300s) +// ===================================================================== + +// --- TRACK Q14 : "INDUSTRIAL DNB" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q14 0:00] intro / atmosphere...".postln; + ~bpm = 175; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dubstep) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 67.wait; + + "[Q14 1:07] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1400; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q14 2:28] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q14 3:35] variations / second wave...".postln; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 55.wait; + + "[Q14 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q14 5:00] === fin INDUSTRIAL DNB ===".postln; +}).play; +"=== TRACK Q14 : INDUSTRIAL DNB 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/Q15_neuro_finale.scd b/sound_algo/tracks/Q_neurofunk_dnb/Q15_neuro_finale.scd new file mode 100644 index 0000000..750f4e5 --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/Q15_neuro_finale.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// Q15_neuro_finale.scd -- Album Q "Neurofunk DnB", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Neuro Finale" 6 min (360s) +// ===================================================================== + +// --- TRACK Q15 : "NEURO FINALE" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[Q15 0:00] intro / atmosphere...".postln; + ~bpm = 174; + ~kickFreq = 55; ~kickPitchAmt = 4.0; ~kickDecay = 0.18; + ~kickDrive = 1.8; ~kickClick = 0.35; + ~kickSteps = [1,0,0,0, 0,0,1,0, 0,0,1,0, 1,0,0,0]; ~kickAmp = 0.55; + ~hatSteps = [1,1,1,1, 0,1,1,1, 1,1,1,1, 0,1,1,1]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,1, 1,0,1,0]; ~snareAmp = 0.55; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.35; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.25; ~melodyCutoff = 800; + ~melodyAmp = 0.168; + ~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.120; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 82.wait; + + "[Q15 1:22] build / groove...".postln; + ~melodyAmp = 0.238; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1400; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[Q15 3:01] drop / climax...".postln; + ~melodyAmp = 0.280; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2000; + ~acidAmp = 0.200; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[Q15 4:23] variations / second wave...".postln; + ~melodyInst = \reeseDnB; + ~melodyAttack = 0.005; ~melodyRelease = 0.35; + ~melodyAmp = 0.252; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 1600; + ~vcfOn !? { ~vcfOn.(\moog, 1200, 0.5) }; + ~reload.value; + 67.wait; + + "[Q15 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.280; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.550; + ~clapAmp = x * 0.350; + ~acidAmp = x * 0.200; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[Q15 6:00] === fin NEURO FINALE ===".postln; +}).play; +"=== TRACK Q15 : NEURO FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/Q_neurofunk_dnb/_album.scd b/sound_algo/tracks/Q_neurofunk_dnb/_album.scd new file mode 100644 index 0000000..ceb9fa5 --- /dev/null +++ b/sound_algo/tracks/Q_neurofunk_dnb/_album.scd @@ -0,0 +1,84 @@ +// ===================================================================== +// _album.scd -- Album Q "Neurofunk DnB" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM Q +// 3. ~playTrack.(\Q, n) pour jouer la track n isolement +// ~playAlbum.(\Q) pour enchainer 01 -> 15 +// ~stopAlbum.() pour arreter +// ===================================================================== + +( // --- SETUP ALBUM Q --- +~albums = ~albums ? (); +~albums[\Q] = ( + title: "Neurofunk DnB", + folder: "tracks/Q_neurofunk_dnb/", + tracks: [ + \Q01_neurofunk_dnb, + \Q02_amen_storm, + \Q03_liquid_neuro, + \Q04_growl_destroyer, + \Q05_rolling_neuro, + \Q06_tech_dnb, + \Q07_minimal_dnb, + \Q08_dark_dnb, + \Q09_atmosphere_dnb, + \Q10_hard_neuro, + \Q11_jump_up, + \Q12_sci_fi_dnb, + \Q13_breakcore_dnb, + \Q14_industrial_dnb, + \Q15_neuro_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); + +~playTrack = ~playTrack ? { |album = \Q, n = 1| + var info, file, path; + info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + file = info[\tracks][n - 1]; + if (file.isNil) { + ("!! track " ++ album ++ n ++ " inexistante").postln; + } { + path = (~base ? "") ++ info[\folder] ++ file ++ ".scd"; + ("[ALBUM " ++ album ++ "] track " ++ n ++ " : " ++ file).postln; + path.load; + }; + }; +}; + +~stopAlbum = ~stopAlbum ? { + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[ALBUM] stop".postln; +}; + +~playAlbum = ~playAlbum ? { |album = \Q, gap = 8| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ~stopAlbum.(); + ~albumRoutine = Routine({ + ("=== ALBUM " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + ("[ALBUM " ++ album ++ "] -> track " ++ (i + 1) ++ "/" + ++ info[\tracks].size ++ " : " ++ slug + ++ " (" ++ dur ++ "s)").postln; + ~playTrack.(album, i + 1); + (dur + gap).wait; + }; + ("=== ALBUM " ++ album ++ " complete ===").postln; + }).play; + }; +}; + +"[album Q] setup OK".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R01_synthwave.scd b/sound_algo/tracks/R_synthwave/R01_synthwave.scd new file mode 100644 index 0000000..2179d54 --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R01_synthwave.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R01_synthwave.scd -- Album R "Synthwave", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Synthwave" 4 min (240s) +// ===================================================================== + +// --- TRACK R01 : "SYNTHWAVE" 4 minutes ------------- +// 0:00 intro -> 0:52 groove -> 1:55 drop -> 2:47 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R01 0:00] intro / atmosphere...".postln; + ~bpm = 113; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinorPent); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 52.wait; + + "[R01 0:52] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 3600; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R01 1:55] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleDorian); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 10.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R01 2:47] variations / second wave...".postln; + ~melodyInst = \saw3; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 43.wait; + + "[R01 3:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R01 4:00] === fin SYNTHWAVE ===".postln; +}).play; +"=== TRACK R01 : SYNTHWAVE 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R02_retrowave.scd b/sound_algo/tracks/R_synthwave/R02_retrowave.scd new file mode 100644 index 0000000..30574b3 --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R02_retrowave.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R02_retrowave.scd -- Album R "Synthwave", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Retrowave" 5 min (300s) +// ===================================================================== + +// --- TRACK R02 : "RETROWAVE" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R02 0:00] intro / atmosphere...".postln; + ~bpm = 117; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \saw3; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 67.wait; + + "[R02 1:07] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 3600; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R02 2:28] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R02 3:35] variations / second wave...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 55.wait; + + "[R02 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R02 5:00] === fin RETROWAVE ===".postln; +}).play; +"=== TRACK R02 : RETROWAVE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R03_outrun.scd b/sound_algo/tracks/R_synthwave/R03_outrun.scd new file mode 100644 index 0000000..3b25449 --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R03_outrun.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R03_outrun.scd -- Album R "Synthwave", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Outrun" 6 min (360s) +// ===================================================================== + +// --- TRACK R03 : "OUTRUN" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R03 0:00] intro / atmosphere...".postln; + ~bpm = 113; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[R03 1:22] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleDorian); + ~melodyCutoff = 3600; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R03 3:01] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R03 4:23] variations / second wave...".postln; + ~melodyInst = \fmBass; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 67.wait; + + "[R03 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R03 6:00] === fin OUTRUN ===".postln; +}).play; +"=== TRACK R03 : OUTRUN 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R04_midnight_drive.scd b/sound_algo/tracks/R_synthwave/R04_midnight_drive.scd new file mode 100644 index 0000000..57fd445 --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R04_midnight_drive.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R04_midnight_drive.scd -- Album R "Synthwave", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Midnight Drive" 7 min (420s) +// ===================================================================== + +// --- TRACK R04 : "MIDNIGHT DRIVE" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R04 0:00] intro / atmosphere...".postln; + ~bpm = 112; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \fmBass; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 97.wait; + + "[R04 1:37] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~melodyCutoff = 3600; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R04 3:34] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R04 5:11] variations / second wave...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 79.wait; + + "[R04 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R04 7:00] === fin MIDNIGHT DRIVE ===".postln; +}).play; +"=== TRACK R04 : MIDNIGHT DRIVE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R05_neon_dream.scd b/sound_algo/tracks/R_synthwave/R05_neon_dream.scd new file mode 100644 index 0000000..88e768f --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R05_neon_dream.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R05_neon_dream.scd -- Album R "Synthwave", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Neon Dream" 8 min (480s) +// ===================================================================== + +// --- TRACK R05 : "NEON DREAM" 8 minutes ------------- +// 0:00 intro -> 1:52 groove -> 4:07 drop -> 5:59 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R05 0:00] intro / atmosphere...".postln; + ~bpm = 117; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \warmPad; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 112.wait; + + "[R05 1:52] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleDorian); + ~melodyCutoff = 3600; + ~reload.value; + 33.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R05 4:07] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleDorian); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 22.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R05 5:59] variations / second wave...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 91.wait; + + "[R05 7:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R05 8:00] === fin NEON DREAM ===".postln; +}).play; +"=== TRACK R05 : NEON DREAM 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R06_vapor_cruise.scd b/sound_algo/tracks/R_synthwave/R06_vapor_cruise.scd new file mode 100644 index 0000000..c95cd55 --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R06_vapor_cruise.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R06_vapor_cruise.scd -- Album R "Synthwave", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Vapor Cruise" 6 min (360s) +// ===================================================================== + +// --- TRACK R06 : "VAPOR CRUISE" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R06 0:00] intro / atmosphere...".postln; + ~bpm = 101; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 82.wait; + + "[R06 1:22] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~melodyCutoff = 3600; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R06 3:01] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R06 4:23] variations / second wave...".postln; + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 67.wait; + + "[R06 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R06 6:00] === fin VAPOR CRUISE ===".postln; +}).play; +"=== TRACK R06 : VAPOR CRUISE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R07_eighties_pop.scd b/sound_algo/tracks/R_synthwave/R07_eighties_pop.scd new file mode 100644 index 0000000..4783e52 --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R07_eighties_pop.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R07_eighties_pop.scd -- Album R "Synthwave", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "80s Pop" 5 min (300s) +// ===================================================================== + +// --- TRACK R07 : "80S POP" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R07 0:00] intro / atmosphere...".postln; + ~bpm = 115; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \fmLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleDorian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 67.wait; + + "[R07 1:07] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 3600; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R07 2:28] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R07 3:35] variations / second wave...".postln; + ~melodyInst = \fmBass; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 55.wait; + + "[R07 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R07 5:00] === fin 80S POP ===".postln; +}).play; +"=== TRACK R07 : 80S POP 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R08_dark_synthwave.scd b/sound_algo/tracks/R_synthwave/R08_dark_synthwave.scd new file mode 100644 index 0000000..eb0eccc --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R08_dark_synthwave.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R08_dark_synthwave.scd -- Album R "Synthwave", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Dark Synthwave" 6 min (360s) +// ===================================================================== + +// --- TRACK R08 : "DARK SYNTHWAVE" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R08 0:00] intro / atmosphere...".postln; + ~bpm = 119; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \fmBass; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleDorian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 82.wait; + + "[R08 1:22] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 3600; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R08 3:01] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R08 4:23] variations / second wave...".postln; + ~melodyInst = \warmPad; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleDorian); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 67.wait; + + "[R08 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R08 6:00] === fin DARK SYNTHWAVE ===".postln; +}).play; +"=== TRACK R08 : DARK SYNTHWAVE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R09_space_synthwave.scd b/sound_algo/tracks/R_synthwave/R09_space_synthwave.scd new file mode 100644 index 0000000..b0fbfbd --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R09_space_synthwave.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R09_space_synthwave.scd -- Album R "Synthwave", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Space Synthwave" 7 min (420s) +// ===================================================================== + +// --- TRACK R09 : "SPACE SYNTHWAVE" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R09 0:00] intro / atmosphere...".postln; + ~bpm = 119; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \warmPad; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 97.wait; + + "[R09 1:37] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 3600; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R09 3:34] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinorPent); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R09 5:11] variations / second wave...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 79.wait; + + "[R09 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R09 7:00] === fin SPACE SYNTHWAVE ===".postln; +}).play; +"=== TRACK R09 : SPACE SYNTHWAVE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R10_italo_disco.scd b/sound_algo/tracks/R_synthwave/R10_italo_disco.scd new file mode 100644 index 0000000..c81b58d --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R10_italo_disco.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R10_italo_disco.scd -- Album R "Synthwave", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Italo Disco" 8 min (480s) +// ===================================================================== + +// --- TRACK R10 : "ITALO DISCO" 8 minutes ------------- +// 0:00 intro -> 1:52 groove -> 4:07 drop -> 5:59 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R10 0:00] intro / atmosphere...".postln; + ~bpm = 110; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinorPent); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 112.wait; + + "[R10 1:52] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 3600; + ~reload.value; + 33.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R10 4:07] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleDorian); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 22.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R10 5:59] variations / second wave...".postln; + ~melodyInst = \fmBass; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 91.wait; + + "[R10 7:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R10 8:00] === fin ITALO DISCO ===".postln; +}).play; +"=== TRACK R10 : ITALO DISCO 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R11_synth_funk.scd b/sound_algo/tracks/R_synthwave/R11_synth_funk.scd new file mode 100644 index 0000000..05c607a --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R11_synth_funk.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R11_synth_funk.scd -- Album R "Synthwave", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Synth Funk" 7 min (420s) +// ===================================================================== + +// --- TRACK R11 : "SYNTH FUNK" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R11 0:00] intro / atmosphere...".postln; + ~bpm = 110; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \fmBass; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 97.wait; + + "[R11 1:37] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 3600; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R11 3:34] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R11 5:11] variations / second wave...".postln; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 79.wait; + + "[R11 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R11 7:00] === fin SYNTH FUNK ===".postln; +}).play; +"=== TRACK R11 : SYNTH FUNK 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R12_dream_wave.scd b/sound_algo/tracks/R_synthwave/R12_dream_wave.scd new file mode 100644 index 0000000..ee63227 --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R12_dream_wave.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R12_dream_wave.scd -- Album R "Synthwave", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Dream Wave" 5 min (300s) +// ===================================================================== + +// --- TRACK R12 : "DREAM WAVE" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R12 0:00] intro / atmosphere...".postln; + ~bpm = 106; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \vocalPad; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinorPent); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 67.wait; + + "[R12 1:07] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleDorian); + ~melodyCutoff = 3600; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R12 2:28] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinorPent); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R12 3:35] variations / second wave...".postln; + ~melodyInst = \saw3; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 55.wait; + + "[R12 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R12 5:00] === fin DREAM WAVE ===".postln; +}).play; +"=== TRACK R12 : DREAM WAVE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R13_synthwave_pulse.scd b/sound_algo/tracks/R_synthwave/R13_synthwave_pulse.scd new file mode 100644 index 0000000..30fcc28 --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R13_synthwave_pulse.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R13_synthwave_pulse.scd -- Album R "Synthwave", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Synthwave Pulse" 4 min (240s) +// ===================================================================== + +// --- TRACK R13 : "SYNTHWAVE PULSE" 4 minutes ------------- +// 0:00 intro -> 0:52 groove -> 1:55 drop -> 2:47 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R13 0:00] intro / atmosphere...".postln; + ~bpm = 111; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \saw3; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleDorian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 52.wait; + + "[R13 0:52] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 3600; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R13 1:55] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinorPent); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 10.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R13 2:47] variations / second wave...".postln; + ~melodyInst = \squareLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 43.wait; + + "[R13 3:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R13 4:00] === fin SYNTHWAVE PULSE ===".postln; +}).play; +"=== TRACK R13 : SYNTHWAVE PULSE 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R14_retro_arcade.scd b/sound_algo/tracks/R_synthwave/R14_retro_arcade.scd new file mode 100644 index 0000000..45a0d91 --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R14_retro_arcade.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R14_retro_arcade.scd -- Album R "Synthwave", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Retro Arcade" 5 min (300s) +// ===================================================================== + +// --- TRACK R14 : "RETRO ARCADE" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R14 0:00] intro / atmosphere...".postln; + ~bpm = 117; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \squareLead; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 67.wait; + + "[R14 1:07] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleDorian); + ~melodyCutoff = 3600; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R14 2:28] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinorPent); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R14 3:35] variations / second wave...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 55.wait; + + "[R14 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R14 5:00] === fin RETRO ARCADE ===".postln; +}).play; +"=== TRACK R14 : RETRO ARCADE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/R15_synthwave_finale.scd b/sound_algo/tracks/R_synthwave/R15_synthwave_finale.scd new file mode 100644 index 0000000..4fcf452 --- /dev/null +++ b/sound_algo/tracks/R_synthwave/R15_synthwave_finale.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// R15_synthwave_finale.scd -- Album R "Synthwave", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Synthwave Finale" 6 min (360s) +// ===================================================================== + +// --- TRACK R15 : "SYNTHWAVE FINALE" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[R15 0:00] intro / atmosphere...".postln; + ~bpm = 117; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; + ~kickDrive = 1.0; ~kickClick = 0.18; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.4; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.3; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.4; ~melodyCutoff = 3000; + ~melodyAmp = 0.108; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinorPent); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[R15 1:22] build / groove...".postln; + ~melodyAmp = 0.153; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinorPent); + ~melodyCutoff = 3600; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[R15 3:01] drop / climax...".postln; + ~melodyAmp = 0.180; + ~kickAmp = 0.550; + ~melodyNotes = ~genMelody.(0.6, ~scaleDorian); + ~melodyCutoff = 4200; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[R15 4:23] variations / second wave...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.005; ~melodyRelease = 0.5; + ~melodyAmp = 0.162; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinorPent); + ~melodyCutoff = 3800; + ~vcfOn !? { ~vcfOn.(\moog, 3400, 0.5) }; + ~reload.value; + 67.wait; + + "[R15 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.500; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.400; + ~clapAmp = x * 0.300; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[R15 6:00] === fin SYNTHWAVE FINALE ===".postln; +}).play; +"=== TRACK R15 : SYNTHWAVE FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/R_synthwave/_album.scd b/sound_algo/tracks/R_synthwave/_album.scd new file mode 100644 index 0000000..78435df --- /dev/null +++ b/sound_algo/tracks/R_synthwave/_album.scd @@ -0,0 +1,84 @@ +// ===================================================================== +// _album.scd -- Album R "Synthwave" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM R +// 3. ~playTrack.(\R, n) pour jouer la track n isolement +// ~playAlbum.(\R) pour enchainer 01 -> 15 +// ~stopAlbum.() pour arreter +// ===================================================================== + +( // --- SETUP ALBUM R --- +~albums = ~albums ? (); +~albums[\R] = ( + title: "Synthwave", + folder: "tracks/R_synthwave/", + tracks: [ + \R01_synthwave, + \R02_retrowave, + \R03_outrun, + \R04_midnight_drive, + \R05_neon_dream, + \R06_vapor_cruise, + \R07_eighties_pop, + \R08_dark_synthwave, + \R09_space_synthwave, + \R10_italo_disco, + \R11_synth_funk, + \R12_dream_wave, + \R13_synthwave_pulse, + \R14_retro_arcade, + \R15_synthwave_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); + +~playTrack = ~playTrack ? { |album = \R, n = 1| + var info, file, path; + info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + file = info[\tracks][n - 1]; + if (file.isNil) { + ("!! track " ++ album ++ n ++ " inexistante").postln; + } { + path = (~base ? "") ++ info[\folder] ++ file ++ ".scd"; + ("[ALBUM " ++ album ++ "] track " ++ n ++ " : " ++ file).postln; + path.load; + }; + }; +}; + +~stopAlbum = ~stopAlbum ? { + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[ALBUM] stop".postln; +}; + +~playAlbum = ~playAlbum ? { |album = \R, gap = 8| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ~stopAlbum.(); + ~albumRoutine = Routine({ + ("=== ALBUM " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + ("[ALBUM " ++ album ++ "] -> track " ++ (i + 1) ++ "/" + ++ info[\tracks].size ++ " : " ++ slug + ++ " (" ++ dur ++ "s)").postln; + ~playTrack.(album, i + 1); + (dur + gap).wait; + }; + ("=== ALBUM " ++ album ++ " complete ===").postln; + }).play; + }; +}; + +"[album R] setup OK".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S01_drone_doom.scd b/sound_algo/tracks/S_drone_doom/S01_drone_doom.scd new file mode 100644 index 0000000..cc5a537 --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S01_drone_doom.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S01_drone_doom.scd -- Album S "Drone Doom", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Drone Doom" 4 min (240s) +// ===================================================================== + +// --- TRACK S01 : "DRONE DOOM" 4 minutes ------------- +// 0:00 intro -> 0:52 groove -> 1:55 drop -> 2:47 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S01 0:00] intro / atmosphere...".postln; + ~bpm = 71; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleJapanese); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 52.wait; + + "[S01 0:52] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHijaz); + ~melodyCutoff = 2100; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S01 1:55] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleJapanese); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 10.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S01 2:47] variations / second wave...".postln; + ~melodyInst = \didgeridoo; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 43.wait; + + "[S01 3:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S01 4:00] === fin DRONE DOOM ===".postln; +}).play; +"=== TRACK S01 : DRONE DOOM 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S02_dark_drone.scd b/sound_algo/tracks/S_drone_doom/S02_dark_drone.scd new file mode 100644 index 0000000..8076c67 --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S02_dark_drone.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S02_dark_drone.scd -- Album S "Drone Doom", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Dark Drone" 5 min (300s) +// ===================================================================== + +// --- TRACK S02 : "DARK DRONE" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S02 0:00] intro / atmosphere...".postln; + ~bpm = 70; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \didgeridoo; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleJapanese); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 67.wait; + + "[S02 1:07] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHarmonicMin); + ~melodyCutoff = 2100; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S02 2:28] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S02 3:35] variations / second wave...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 55.wait; + + "[S02 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S02 5:00] === fin DARK DRONE ===".postln; +}).play; +"=== TRACK S02 : DARK DRONE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S03_cathedral.scd b/sound_algo/tracks/S_drone_doom/S03_cathedral.scd new file mode 100644 index 0000000..1d5c679 --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S03_cathedral.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S03_cathedral.scd -- Album S "Drone Doom", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Cathedral" 6 min (360s) +// ===================================================================== + +// --- TRACK S03 : "CATHEDRAL" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S03 0:00] intro / atmosphere...".postln; + ~bpm = 70; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[S03 1:22] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHijaz); + ~melodyCutoff = 2100; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S03 3:01] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleHijaz); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S03 4:23] variations / second wave...".postln; + ~melodyInst = \didgeridoo; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 67.wait; + + "[S03 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S03 6:00] === fin CATHEDRAL ===".postln; +}).play; +"=== TRACK S03 : CATHEDRAL 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S04_subterranean.scd b/sound_algo/tracks/S_drone_doom/S04_subterranean.scd new file mode 100644 index 0000000..25ff1f3 --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S04_subterranean.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S04_subterranean.scd -- Album S "Drone Doom", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Subterranean" 7 min (420s) +// ===================================================================== + +// --- TRACK S04 : "SUBTERRANEAN" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S04 0:00] intro / atmosphere...".postln; + ~bpm = 52; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \didgeridoo; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 97.wait; + + "[S04 1:37] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHarmonicMin); + ~melodyCutoff = 2100; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S04 3:34] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleJapanese); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S04 5:11] variations / second wave...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 79.wait; + + "[S04 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S04 7:00] === fin SUBTERRANEAN ===".postln; +}).play; +"=== TRACK S04 : SUBTERRANEAN 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S05_glacial.scd b/sound_algo/tracks/S_drone_doom/S05_glacial.scd new file mode 100644 index 0000000..3c0defe --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S05_glacial.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S05_glacial.scd -- Album S "Drone Doom", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Glacial" 8 min (480s) +// ===================================================================== + +// --- TRACK S05 : "GLACIAL" 8 minutes ------------- +// 0:00 intro -> 1:52 groove -> 4:07 drop -> 5:59 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S05 0:00] intro / atmosphere...".postln; + ~bpm = 54; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleJapanese); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 112.wait; + + "[S05 1:52] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleJapanese); + ~melodyCutoff = 2100; + ~reload.value; + 33.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S05 4:07] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 22.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S05 5:59] variations / second wave...".postln; + ~melodyInst = \didgeridoo; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 91.wait; + + "[S05 7:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S05 8:00] === fin GLACIAL ===".postln; +}).play; +"=== TRACK S05 : GLACIAL 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S06_ritual_doom.scd b/sound_algo/tracks/S_drone_doom/S06_ritual_doom.scd new file mode 100644 index 0000000..fa9d280 --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S06_ritual_doom.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S06_ritual_doom.scd -- Album S "Drone Doom", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Ritual Doom" 6 min (360s) +// ===================================================================== + +// --- TRACK S06 : "RITUAL DOOM" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S06 0:00] intro / atmosphere...".postln; + ~bpm = 71; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \didgeridoo; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[S06 1:22] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleJapanese); + ~melodyCutoff = 2100; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S06 3:01] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleHijaz); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S06 4:23] variations / second wave...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 67.wait; + + "[S06 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S06 6:00] === fin RITUAL DOOM ===".postln; +}).play; +"=== TRACK S06 : RITUAL DOOM 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S07_monolith.scd b/sound_algo/tracks/S_drone_doom/S07_monolith.scd new file mode 100644 index 0000000..e39de31 --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S07_monolith.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S07_monolith.scd -- Album S "Drone Doom", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Monolith" 5 min (300s) +// ===================================================================== + +// --- TRACK S07 : "MONOLITH" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S07 0:00] intro / atmosphere...".postln; + ~bpm = 77; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 67.wait; + + "[S07 1:07] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHijaz); + ~melodyCutoff = 2100; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S07 2:28] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S07 3:35] variations / second wave...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 55.wait; + + "[S07 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S07 5:00] === fin MONOLITH ===".postln; +}).play; +"=== TRACK S07 : MONOLITH 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S08_abyss.scd b/sound_algo/tracks/S_drone_doom/S08_abyss.scd new file mode 100644 index 0000000..fd5f071 --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S08_abyss.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S08_abyss.scd -- Album S "Drone Doom", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Abyss" 6 min (360s) +// ===================================================================== + +// --- TRACK S08 : "ABYSS" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S08 0:00] intro / atmosphere...".postln; + ~bpm = 79; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHijaz); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 82.wait; + + "[S08 1:22] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 2100; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S08 3:01] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleJapanese); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S08 4:23] variations / second wave...".postln; + ~melodyInst = \didgeridoo; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 67.wait; + + "[S08 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S08 6:00] === fin ABYSS ===".postln; +}).play; +"=== TRACK S08 : ABYSS 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S09_dust_storm.scd b/sound_algo/tracks/S_drone_doom/S09_dust_storm.scd new file mode 100644 index 0000000..4ee406c --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S09_dust_storm.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S09_dust_storm.scd -- Album S "Drone Doom", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Dust Storm" 7 min (420s) +// ===================================================================== + +// --- TRACK S09 : "DUST STORM" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S09 0:00] intro / atmosphere...".postln; + ~bpm = 53; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \didgeridoo; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 97.wait; + + "[S09 1:37] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHijaz); + ~melodyCutoff = 2100; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S09 3:34] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S09 5:11] variations / second wave...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 79.wait; + + "[S09 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S09 7:00] === fin DUST STORM ===".postln; +}).play; +"=== TRACK S09 : DUST STORM 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S10_cosmic_drone.scd b/sound_algo/tracks/S_drone_doom/S10_cosmic_drone.scd new file mode 100644 index 0000000..e2a69da --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S10_cosmic_drone.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S10_cosmic_drone.scd -- Album S "Drone Doom", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Cosmic Drone" 8 min (480s) +// ===================================================================== + +// --- TRACK S10 : "COSMIC DRONE" 8 minutes ------------- +// 0:00 intro -> 1:52 groove -> 4:07 drop -> 5:59 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S10 0:00] intro / atmosphere...".postln; + ~bpm = 61; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scalePhrygian); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 112.wait; + + "[S10 1:52] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 2100; + ~reload.value; + 33.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S10 4:07] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 22.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S10 5:59] variations / second wave...".postln; + ~melodyInst = \didgeridoo; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 91.wait; + + "[S10 7:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S10 8:00] === fin COSMIC DRONE ===".postln; +}).play; +"=== TRACK S10 : COSMIC DRONE 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S11_granite.scd b/sound_algo/tracks/S_drone_doom/S11_granite.scd new file mode 100644 index 0000000..6236fcb --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S11_granite.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S11_granite.scd -- Album S "Drone Doom", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Granite" 7 min (420s) +// ===================================================================== + +// --- TRACK S11 : "GRANITE" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S11 0:00] intro / atmosphere...".postln; + ~bpm = 60; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \didgeridoo; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 97.wait; + + "[S11 1:37] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleJapanese); + ~melodyCutoff = 2100; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S11 3:34] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleJapanese); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S11 5:11] variations / second wave...".postln; + ~melodyInst = \subBoom; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleHijaz); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 79.wait; + + "[S11 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S11 7:00] === fin GRANITE ===".postln; +}).play; +"=== TRACK S11 : GRANITE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S12_dust_to_dust.scd b/sound_algo/tracks/S_drone_doom/S12_dust_to_dust.scd new file mode 100644 index 0000000..7b22bb4 --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S12_dust_to_dust.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S12_dust_to_dust.scd -- Album S "Drone Doom", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Dust To Dust" 5 min (300s) +// ===================================================================== + +// --- TRACK S12 : "DUST TO DUST" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S12 0:00] intro / atmosphere...".postln; + ~bpm = 76; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \subBoom; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleJapanese); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 67.wait; + + "[S12 1:07] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHarmonicMin); + ~melodyCutoff = 2100; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S12 2:28] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S12 3:35] variations / second wave...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 55.wait; + + "[S12 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S12 5:00] === fin DUST TO DUST ===".postln; +}).play; +"=== TRACK S12 : DUST TO DUST 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S13_oblivion.scd b/sound_algo/tracks/S_drone_doom/S13_oblivion.scd new file mode 100644 index 0000000..50353c6 --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S13_oblivion.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S13_oblivion.scd -- Album S "Drone Doom", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Oblivion" 4 min (240s) +// ===================================================================== + +// --- TRACK S13 : "OBLIVION" 4 minutes ------------- +// 0:00 intro -> 0:52 groove -> 1:55 drop -> 2:47 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S13 0:00] intro / atmosphere...".postln; + ~bpm = 68; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 52.wait; + + "[S13 0:52] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHarmonicMin); + ~melodyCutoff = 2100; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S13 1:55] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleHijaz); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 10.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S13 2:47] variations / second wave...".postln; + ~melodyInst = \vocalPad; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 43.wait; + + "[S13 3:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S13 4:00] === fin OBLIVION ===".postln; +}).play; +"=== TRACK S13 : OBLIVION 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S14_eclipse.scd b/sound_algo/tracks/S_drone_doom/S14_eclipse.scd new file mode 100644 index 0000000..bdfd71a --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S14_eclipse.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S14_eclipse.scd -- Album S "Drone Doom", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Eclipse" 5 min (300s) +// ===================================================================== + +// --- TRACK S14 : "ECLIPSE" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S14 0:00] intro / atmosphere...".postln; + ~bpm = 75; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \vocalPad; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHijaz); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 67.wait; + + "[S14 1:07] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHarmonicMin); + ~melodyCutoff = 2100; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S14 2:28] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scaleHijaz); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S14 3:35] variations / second wave...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 55.wait; + + "[S14 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S14 5:00] === fin ECLIPSE ===".postln; +}).play; +"=== TRACK S14 : ECLIPSE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/S15_doom_finale.scd b/sound_algo/tracks/S_drone_doom/S15_doom_finale.scd new file mode 100644 index 0000000..22bc321 --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/S15_doom_finale.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// S15_doom_finale.scd -- Album S "Drone Doom", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Doom Finale" 6 min (360s) +// ===================================================================== + +// --- TRACK S15 : "DOOM FINALE" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[S15 0:00] intro / atmosphere...".postln; + ~bpm = 51; + ~kickFreq = 40; ~kickPitchAmt = 2.0; ~kickDecay = 0.45; + ~kickDrive = 1.0; ~kickClick = 0.05; + ~kickSteps = (0!16); ~kickAmp = 0.4; + ~hatSteps = (0!16); ~hatAmp = 0.05; + ~snareSteps = (0!16); ~snareAmp = 0.3; + ~clapSteps = (0!16); ~clapAmp = 0.2; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.5; ~melodyCutoff = 1500; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHijaz); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.000; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\drone) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 82.wait; + + "[S15 1:22] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHarmonicMin); + ~melodyCutoff = 2100; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[S15 3:01] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.450; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2700; + ~acidAmp = 0.000; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[S15 4:23] variations / second wave...".postln; + ~melodyInst = \drone; + ~melodyAttack = 1.0; ~melodyRelease = 2.6; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleJapanese); + ~melodyCutoff = 2300; + ~vcfOn !? { ~vcfOn.(\moog, 1900, 0.5) }; + ~reload.value; + 67.wait; + + "[S15 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.400; + ~hatAmp = x * 0.050; + ~snareAmp = x * 0.300; + ~clapAmp = x * 0.200; + ~acidAmp = x * 0.000; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[S15 6:00] === fin DOOM FINALE ===".postln; +}).play; +"=== TRACK S15 : DOOM FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/S_drone_doom/_album.scd b/sound_algo/tracks/S_drone_doom/_album.scd new file mode 100644 index 0000000..2425f8a --- /dev/null +++ b/sound_algo/tracks/S_drone_doom/_album.scd @@ -0,0 +1,84 @@ +// ===================================================================== +// _album.scd -- Album S "Drone Doom" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM S +// 3. ~playTrack.(\S, n) pour jouer la track n isolement +// ~playAlbum.(\S) pour enchainer 01 -> 15 +// ~stopAlbum.() pour arreter +// ===================================================================== + +( // --- SETUP ALBUM S --- +~albums = ~albums ? (); +~albums[\S] = ( + title: "Drone Doom", + folder: "tracks/S_drone_doom/", + tracks: [ + \S01_drone_doom, + \S02_dark_drone, + \S03_cathedral, + \S04_subterranean, + \S05_glacial, + \S06_ritual_doom, + \S07_monolith, + \S08_abyss, + \S09_dust_storm, + \S10_cosmic_drone, + \S11_granite, + \S12_dust_to_dust, + \S13_oblivion, + \S14_eclipse, + \S15_doom_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); + +~playTrack = ~playTrack ? { |album = \S, n = 1| + var info, file, path; + info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + file = info[\tracks][n - 1]; + if (file.isNil) { + ("!! track " ++ album ++ n ++ " inexistante").postln; + } { + path = (~base ? "") ++ info[\folder] ++ file ++ ".scd"; + ("[ALBUM " ++ album ++ "] track " ++ n ++ " : " ++ file).postln; + path.load; + }; + }; +}; + +~stopAlbum = ~stopAlbum ? { + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[ALBUM] stop".postln; +}; + +~playAlbum = ~playAlbum ? { |album = \S, gap = 8| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ~stopAlbum.(); + ~albumRoutine = Routine({ + ("=== ALBUM " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + ("[ALBUM " ++ album ++ "] -> track " ++ (i + 1) ++ "/" + ++ info[\tracks].size ++ " : " ++ slug + ++ " (" ++ dur ++ "s)").postln; + ~playTrack.(album, i + 1); + (dur + gap).wait; + }; + ("=== ALBUM " ++ album ++ " complete ===").postln; + }).play; + }; +}; + +"[album S] setup OK".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T01_hardcore_gabber.scd b/sound_algo/tracks/T_hardcore_gabber/T01_hardcore_gabber.scd new file mode 100644 index 0000000..da84b87 --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T01_hardcore_gabber.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T01_hardcore_gabber.scd -- Album T "Hardcore Gabber", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Hardcore Gabber" 4 min (240s) +// ===================================================================== + +// --- TRACK T01 : "HARDCORE GABBER" 4 minutes ------------- +// 0:00 intro -> 0:52 groove -> 1:55 drop -> 2:47 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T01 0:00] intro / atmosphere...".postln; + ~bpm = 172; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHijaz); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 52.wait; + + "[T01 0:52] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHijaz); + ~melodyCutoff = 1800; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T01 1:55] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 10.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T01 2:47] variations / second wave...".postln; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleHijaz); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 43.wait; + + "[T01 3:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T01 4:00] === fin HARDCORE GABBER ===".postln; +}).play; +"=== TRACK T01 : HARDCORE GABBER 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T02_rotterdam.scd b/sound_algo/tracks/T_hardcore_gabber/T02_rotterdam.scd new file mode 100644 index 0000000..6bd8227 --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T02_rotterdam.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T02_rotterdam.scd -- Album T "Hardcore Gabber", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Rotterdam" 5 min (300s) +// ===================================================================== + +// --- TRACK T02 : "ROTTERDAM" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T02 0:00] intro / atmosphere...".postln; + ~bpm = 179; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 67.wait; + + "[T02 1:07] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHijaz); + ~melodyCutoff = 1800; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T02 2:28] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T02 3:35] variations / second wave...".postln; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleHijaz); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 55.wait; + + "[T02 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T02 5:00] === fin ROTTERDAM ===".postln; +}).play; +"=== TRACK T02 : ROTTERDAM 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T03_uptempo.scd b/sound_algo/tracks/T_hardcore_gabber/T03_uptempo.scd new file mode 100644 index 0000000..51181ea --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T03_uptempo.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T03_uptempo.scd -- Album T "Hardcore Gabber", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Uptempo" 6 min (360s) +// ===================================================================== + +// --- TRACK T03 : "UPTEMPO" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T03 0:00] intro / atmosphere...".postln; + ~bpm = 174; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[T03 1:22] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1800; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T03 3:01] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T03 4:23] variations / second wave...".postln; + ~melodyInst = \fmBass; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleHijaz); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 67.wait; + + "[T03 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T03 6:00] === fin UPTEMPO ===".postln; +}).play; +"=== TRACK T03 : UPTEMPO 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T04_acid_gabber.scd b/sound_algo/tracks/T_hardcore_gabber/T04_acid_gabber.scd new file mode 100644 index 0000000..2c3b794 --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T04_acid_gabber.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T04_acid_gabber.scd -- Album T "Hardcore Gabber", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Acid Gabber" 7 min (420s) +// ===================================================================== + +// --- TRACK T04 : "ACID GABBER" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T04 0:00] intro / atmosphere...".postln; + ~bpm = 187; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \fmBass; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHijaz); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 97.wait; + + "[T04 1:37] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHijaz); + ~melodyCutoff = 1800; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T04 3:34] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T04 5:11] variations / second wave...".postln; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 79.wait; + + "[T04 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T04 7:00] === fin ACID GABBER ===".postln; +}).play; +"=== TRACK T04 : ACID GABBER 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T05_industrial_gabber.scd b/sound_algo/tracks/T_hardcore_gabber/T05_industrial_gabber.scd new file mode 100644 index 0000000..1991304 --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T05_industrial_gabber.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T05_industrial_gabber.scd -- Album T "Hardcore Gabber", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Industrial Gabber" 8 min (480s) +// ===================================================================== + +// --- TRACK T05 : "INDUSTRIAL GABBER" 8 minutes ------------- +// 0:00 intro -> 1:52 groove -> 4:07 drop -> 5:59 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T05 0:00] intro / atmosphere...".postln; + ~bpm = 189; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHijaz); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dubstep) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 112.wait; + + "[T05 1:52] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1800; + ~reload.value; + 33.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T05 4:07] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 22.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T05 5:59] variations / second wave...".postln; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 91.wait; + + "[T05 7:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T05 8:00] === fin INDUSTRIAL GABBER ===".postln; +}).play; +"=== TRACK T05 : INDUSTRIAL GABBER 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T06_speedcore.scd b/sound_algo/tracks/T_hardcore_gabber/T06_speedcore.scd new file mode 100644 index 0000000..5212559 --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T06_speedcore.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T06_speedcore.scd -- Album T "Hardcore Gabber", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Speedcore" 6 min (360s) +// ===================================================================== + +// --- TRACK T06 : "SPEEDCORE" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T06 0:00] intro / atmosphere...".postln; + ~bpm = 176; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 82.wait; + + "[T06 1:22] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHarmonicMin); + ~melodyCutoff = 1800; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T06 3:01] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T06 4:23] variations / second wave...".postln; + ~melodyInst = \hooverbass; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleHijaz); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 67.wait; + + "[T06 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T06 6:00] === fin SPEEDCORE ===".postln; +}).play; +"=== TRACK T06 : SPEEDCORE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T07_oldschool_gabba.scd b/sound_algo/tracks/T_hardcore_gabber/T07_oldschool_gabba.scd new file mode 100644 index 0000000..a1de9ba --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T07_oldschool_gabba.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T07_oldschool_gabba.scd -- Album T "Hardcore Gabber", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Oldschool Gabba" 5 min (300s) +// ===================================================================== + +// --- TRACK T07 : "OLDSCHOOL GABBA" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T07 0:00] intro / atmosphere...".postln; + ~bpm = 191; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \hooverbass; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHijaz); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 67.wait; + + "[T07 1:07] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1800; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T07 2:28] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T07 3:35] variations / second wave...".postln; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleHijaz); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 55.wait; + + "[T07 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T07 5:00] === fin OLDSCHOOL GABBA ===".postln; +}).play; +"=== TRACK T07 : OLDSCHOOL GABBA 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T08_dark_hardcore.scd b/sound_algo/tracks/T_hardcore_gabber/T08_dark_hardcore.scd new file mode 100644 index 0000000..88e756a --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T08_dark_hardcore.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T08_dark_hardcore.scd -- Album T "Hardcore Gabber", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Dark Hardcore" 6 min (360s) +// ===================================================================== + +// --- TRACK T08 : "DARK HARDCORE" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T08 0:00] intro / atmosphere...".postln; + ~bpm = 195; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 82.wait; + + "[T08 1:22] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1800; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T08 3:01] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T08 4:23] variations / second wave...".postln; + ~melodyInst = \supersaw; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleHarmonicMin); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 67.wait; + + "[T08 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T08 6:00] === fin DARK HARDCORE ===".postln; +}).play; +"=== TRACK T08 : DARK HARDCORE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T09_happy_hardcore.scd b/sound_algo/tracks/T_hardcore_gabber/T09_happy_hardcore.scd new file mode 100644 index 0000000..9d48186 --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T09_happy_hardcore.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T09_happy_hardcore.scd -- Album T "Hardcore Gabber", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Happy Hardcore" 7 min (420s) +// ===================================================================== + +// --- TRACK T09 : "HAPPY HARDCORE" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T09 0:00] intro / atmosphere...".postln; + ~bpm = 189; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \supersaw; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dry) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 97.wait; + + "[T09 1:37] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1800; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T09 3:34] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T09 5:11] variations / second wave...".postln; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 79.wait; + + "[T09 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T09 7:00] === fin HAPPY HARDCORE ===".postln; +}).play; +"=== TRACK T09 : HAPPY HARDCORE 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T10_frenchcore.scd b/sound_algo/tracks/T_hardcore_gabber/T10_frenchcore.scd new file mode 100644 index 0000000..2458ab1 --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T10_frenchcore.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T10_frenchcore.scd -- Album T "Hardcore Gabber", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Frenchcore" 8 min (480s) +// ===================================================================== + +// --- TRACK T10 : "FRENCHCORE" 8 minutes ------------- +// 0:00 intro -> 1:52 groove -> 4:07 drop -> 5:59 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T10 0:00] intro / atmosphere...".postln; + ~bpm = 182; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 112.wait; + + "[T10 1:52] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1800; + ~reload.value; + 33.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T10 4:07] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scalePhrygian); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 22.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T10 5:59] variations / second wave...".postln; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 91.wait; + + "[T10 7:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T10 8:00] === fin FRENCHCORE ===".postln; +}).play; +"=== TRACK T10 : FRENCHCORE 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T11_terror.scd b/sound_algo/tracks/T_hardcore_gabber/T11_terror.scd new file mode 100644 index 0000000..ef27081 --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T11_terror.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T11_terror.scd -- Album T "Hardcore Gabber", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Terror" 7 min (420s) +// ===================================================================== + +// --- TRACK T11 : "TERROR" 7 minutes ------------- +// 0:00 intro -> 1:37 groove -> 3:34 drop -> 5:11 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T11 0:00] intro / atmosphere...".postln; + ~bpm = 175; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 97.wait; + + "[T11 1:37] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scalePhrygian); + ~melodyCutoff = 1800; + ~reload.value; + 29.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T11 3:34] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 19.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T11 5:11] variations / second wave...".postln; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 79.wait; + + "[T11 6:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T11 7:00] === fin TERROR ===".postln; +}).play; +"=== TRACK T11 : TERROR 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T12_mainstream_hard.scd b/sound_algo/tracks/T_hardcore_gabber/T12_mainstream_hard.scd new file mode 100644 index 0000000..e06fd03 --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T12_mainstream_hard.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T12_mainstream_hard.scd -- Album T "Hardcore Gabber", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Mainstream Hard" 5 min (300s) +// ===================================================================== + +// --- TRACK T12 : "MAINSTREAM HARD" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T12 0:00] intro / atmosphere...".postln; + ~bpm = 174; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHijaz); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dubstep) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 67.wait; + + "[T12 1:07] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleMinor); + ~melodyCutoff = 1800; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T12 2:28] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T12 3:35] variations / second wave...".postln; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleMinor); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 55.wait; + + "[T12 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T12 5:00] === fin MAINSTREAM HARD ===".postln; +}).play; +"=== TRACK T12 : MAINSTREAM HARD 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T13_raw_gabba.scd b/sound_algo/tracks/T_hardcore_gabber/T13_raw_gabba.scd new file mode 100644 index 0000000..cb7c387 --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T13_raw_gabba.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T13_raw_gabba.scd -- Album T "Hardcore Gabber", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Raw Gabba" 4 min (240s) +// ===================================================================== + +// --- TRACK T13 : "RAW GABBA" 4 minutes ------------- +// 0:00 intro -> 0:52 groove -> 1:55 drop -> 2:47 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T13 0:00] intro / atmosphere...".postln; + ~bpm = 193; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \tom; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \reeseHard; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleMinor); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 52.wait; + + "[T13 0:52] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHijaz); + ~melodyCutoff = 1800; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T13 1:55] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleHarmonicMin); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 10.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T13 2:47] variations / second wave...".postln; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scaleHijaz); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 43.wait; + + "[T13 3:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T13 4:00] === fin RAW GABBA ===".postln; +}).play; +"=== TRACK T13 : RAW GABBA 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T14_industrial_core.scd b/sound_algo/tracks/T_hardcore_gabber/T14_industrial_core.scd new file mode 100644 index 0000000..945805b --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T14_industrial_core.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T14_industrial_core.scd -- Album T "Hardcore Gabber", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Industrial Core" 5 min (300s) +// ===================================================================== + +// --- TRACK T14 : "INDUSTRIAL CORE" 5 minutes ------------- +// 0:00 intro -> 1:07 groove -> 2:28 drop -> 3:35 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T14 0:00] intro / atmosphere...".postln; + ~bpm = 185; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \cowbell; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \growl; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHarmonicMin); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 67.wait; + + "[T14 1:07] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHijaz); + ~melodyCutoff = 1800; + ~reload.value; + 20.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T14 2:28] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleMinor); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 13.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T14 3:35] variations / second wave...".postln; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 55.wait; + + "[T14 4:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T14 5:00] === fin INDUSTRIAL CORE ===".postln; +}).play; +"=== TRACK T14 : INDUSTRIAL CORE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/T15_gabber_finale.scd b/sound_algo/tracks/T_hardcore_gabber/T15_gabber_finale.scd new file mode 100644 index 0000000..fedf526 --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/T15_gabber_finale.scd @@ -0,0 +1,104 @@ +// ===================================================================== +// T15_gabber_finale.scd -- Album T "Hardcore Gabber", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// Sub-track : "Gabber Finale" 6 min (360s) +// ===================================================================== + +// --- TRACK T15 : "GABBER FINALE" 6 minutes ------------- +// 0:00 intro -> 1:22 groove -> 3:01 drop -> 4:23 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[T15 0:00] intro / atmosphere...".postln; + ~bpm = 179; + ~kickFreq = 60; ~kickPitchAmt = 5.0; ~kickDecay = 0.18; + ~kickDrive = 3.5; ~kickClick = 0.35; + ~kickSteps = [1,0,1,0, 1,0,1,0, 1,0,1,0, 1,0,1,0]; ~kickAmp = 0.55; + ~hatSteps = [0,1,1,1, 0,1,1,0, 0,1,1,1, 0,1,1,0]; ~hatAmp = 0.13; + ~snareSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~snareAmp = 0.45; + ~clapSteps = [0,0,0,0, 1,0,0,1, 0,0,0,0, 1,0,1,0]; ~clapAmp = 0.4; + ~percInst = \rim; + ~percSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~percAmp = 0.30; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.3; ~melodyCutoff = 1200; + ~melodyAmp = 0.132; + ~melodyNotes = ~genMelody.(0.45, ~scaleHijaz); + ~acidNotes = [36,0,48,0,36,0,43,0, 36,0,41,0,39,0,36,0]; + ~acidSlides = [0,0,1,0,0,0,0,1, 0,0,0,1,0,0,0,0]; + ~acidCutoff = 800; ~acidRq = 0.18; ~acidDrive = 2.5; ~acidAmp = 0.168; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 82.wait; + + "[T15 1:22] build / groove...".postln; + ~melodyAmp = 0.187; + ~melodyNotes = ~genMelody.(0.55, ~scaleHijaz); + ~melodyCutoff = 1800; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.25); + ~reload.value; + }; + if (0.15.coin) { + ~acidCutoff = rrand(500, 1800); ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.3); ~reload.value; + }; + 4.wait; + }; + + "[T15 3:01] drop / climax...".postln; + ~melodyAmp = 0.220; + ~kickAmp = 0.600; + ~melodyNotes = ~genMelody.(0.6, ~scaleHijaz); + ~melodyCutoff = 2400; + ~acidAmp = 0.280; + ~acidCutoff = 1500; ~acidDrive = 3.2; + ~reload.value; + 16.do { |k| + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + ~reload.value; + }; + if (0.10.coin) { + ~melodyNotes = ~transpose.(~melodyNotes, [-5, -3, 3, 5, 7].choose); + ~reload.value; + }; + 5.wait; + }; + + "[T15 4:23] variations / second wave...".postln; + ~melodyInst = \hardLead; + ~melodyAttack = 0.01; ~melodyRelease = 0.4; + ~melodyAmp = 0.198; + ~melodyNotes = ~genMelody.(0.5, ~scalePhrygian); + ~melodyCutoff = 2000; + ~vcfOn !? { ~vcfOn.(\moog, 1600, 0.5) }; + ~reload.value; + 67.wait; + + "[T15 5:30] outro -- fade...".postln; + ~vcfOff !? { ~vcfOff.() }; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.220; + ~kickAmp = x * 0.550; + ~hatAmp = x * 0.130; + ~snareAmp = x * 0.450; + ~clapAmp = x * 0.400; + ~acidAmp = x * 0.280; + ~reload.value; 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq] + .do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[T15 6:00] === fin GABBER FINALE ===".postln; +}).play; +"=== TRACK T15 : GABBER FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/T_hardcore_gabber/_album.scd b/sound_algo/tracks/T_hardcore_gabber/_album.scd new file mode 100644 index 0000000..1abd20a --- /dev/null +++ b/sound_algo/tracks/T_hardcore_gabber/_album.scd @@ -0,0 +1,84 @@ +// ===================================================================== +// _album.scd -- Album T "Hardcore Gabber" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM T +// 3. ~playTrack.(\T, n) pour jouer la track n isolement +// ~playAlbum.(\T) pour enchainer 01 -> 15 +// ~stopAlbum.() pour arreter +// ===================================================================== + +( // --- SETUP ALBUM T --- +~albums = ~albums ? (); +~albums[\T] = ( + title: "Hardcore Gabber", + folder: "tracks/T_hardcore_gabber/", + tracks: [ + \T01_hardcore_gabber, + \T02_rotterdam, + \T03_uptempo, + \T04_acid_gabber, + \T05_industrial_gabber, + \T06_speedcore, + \T07_oldschool_gabba, + \T08_dark_hardcore, + \T09_happy_hardcore, + \T10_frenchcore, + \T11_terror, + \T12_mainstream_hard, + \T13_raw_gabba, + \T14_industrial_core, + \T15_gabber_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); + +~playTrack = ~playTrack ? { |album = \T, n = 1| + var info, file, path; + info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + file = info[\tracks][n - 1]; + if (file.isNil) { + ("!! track " ++ album ++ n ++ " inexistante").postln; + } { + path = (~base ? "") ++ info[\folder] ++ file ++ ".scd"; + ("[ALBUM " ++ album ++ "] track " ++ n ++ " : " ++ file).postln; + path.load; + }; + }; +}; + +~stopAlbum = ~stopAlbum ? { + ~albumRoutine !? { ~albumRoutine.stop; ~albumRoutine = nil }; + ~track !? { ~track.stop; ~track = nil }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + "[ALBUM] stop".postln; +}; + +~playAlbum = ~playAlbum ? { |album = \T, gap = 8| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ~stopAlbum.(); + ~albumRoutine = Routine({ + ("=== ALBUM " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + ("[ALBUM " ++ album ++ "] -> track " ++ (i + 1) ++ "/" + ++ info[\tracks].size ++ " : " ++ slug + ++ " (" ++ dur ++ "s)").postln; + ~playTrack.(album, i + 1); + (dur + gap).wait; + }; + ("=== ALBUM " ++ album ++ " complete ===").postln; + }).play; + }; +}; + +"[album T] setup OK".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U01_vocal_trance.scd b/sound_algo/tracks/U_vocal_trance/U01_vocal_trance.scd new file mode 100644 index 0000000..e47e5ec --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U01_vocal_trance.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U01_vocal_trance.scd -- Album U "Vocal Trance", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U01 : "VOCAL TRANCE" 4 minutes ---------------------- +// 0:00 intro -> 0:24 build -> 1:00 main -> 2:42 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U01 0:00] intro vocal_trance...".postln; + ~bpm = 138; + ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.36; ~kickClick = 0.15; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \choir; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [62,67,63,0,62,0,62,60,65,0,0,0,72,0,0,63,70,0,68,70,62,0,0,0,60,0,0,0,70,67,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,1,0,0,0,1,0,1,1,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 24.wait; + + "[U01 0:24] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 36.wait; + + "[U01 1:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,62,65,0,0,0,0,72,68,68,67,0,0,63,65,70,65,0,0,0,60,0,62,68,72,72,63,67,0,70,63,62]; + ~acidAmp = 0.22; + ~reload.value; + 102.wait; + + "[U01 2:42] variations + mutations...".postln; + ~melodyNotes = [0,0,63,0,62,72,60,0,67,0,67,72,67,0,0,62,0,65,63,60,72,68,0,0,60,62,72,0,0,63,72,0]; + ~reload.value; + 12.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U01 3:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U01 4:00] === fin VOCAL TRANCE ===".postln; +}).play; +"=== TRACK U01 : VOCAL TRANCE 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U02_epic_anthem.scd b/sound_algo/tracks/U_vocal_trance/U02_epic_anthem.scd new file mode 100644 index 0000000..8db47d6 --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U02_epic_anthem.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U02_epic_anthem.scd -- Album U "Vocal Trance", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U02 : "EPIC ANTHEM" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U02 0:00] intro epic_anthem...".postln; + ~bpm = 140; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.18; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \fmLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [65,0,60,60,68,65,0,0,63,0,0,0,65,0,0,62,70,0,0,0,60,0,0,70,68,0,65,72,63,0,0,62]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 30.wait; + + "[U02 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 45.wait; + + "[U02 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [62,60,0,0,0,72,70,0,60,0,72,72,67,60,60,0,72,63,62,0,62,0,62,0,60,70,0,68,0,68,70,67]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[U02 3:30] variations + mutations...".postln; + ~melodyNotes = [62,62,65,63,0,0,0,63,67,60,0,62,0,62,0,0,67,68,67,67,0,0,70,0,68,0,67,72,70,62,63,68]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U02 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U02 5:00] === fin EPIC ANTHEM ===".postln; +}).play; +"=== TRACK U02 : EPIC ANTHEM 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U03_uplift_dream.scd b/sound_algo/tracks/U_vocal_trance/U03_uplift_dream.scd new file mode 100644 index 0000000..72ee92c --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U03_uplift_dream.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U03_uplift_dream.scd -- Album U "Vocal Trance", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U03 : "UPLIFT DREAM" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U03 0:00] intro uplift_dream...".postln; + ~bpm = 138; + ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.36; ~kickClick = 0.15; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \warmPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [63,0,69,0,70,0,0,0,67,62,0,72,65,72,0,0,65,65,0,0,62,0,0,0,70,0,0,0,60,67,67,70]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 36.wait; + + "[U03 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 54.wait; + + "[U03 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [69,62,65,70,65,62,0,0,62,0,67,0,67,65,70,0,0,67,60,65,69,72,0,63,0,69,65,0,65,60,72,62]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[U03 4:18] variations + mutations...".postln; + ~melodyNotes = [65,0,70,60,0,0,0,0,72,65,0,63,0,0,0,72,70,0,63,0,67,0,0,72,67,67,69,62,65,63,0,70]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleDorian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U03 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U03 6:00] === fin UPLIFT DREAM ===".postln; +}).play; +"=== TRACK U03 : UPLIFT DREAM 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U04_vocal_chop.scd b/sound_algo/tracks/U_vocal_trance/U04_vocal_chop.scd new file mode 100644 index 0000000..5a0d143 --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U04_vocal_chop.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U04_vocal_chop.scd -- Album U "Vocal Trance", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U04 : "VOCAL CHOP" 7 minutes ---------------------- +// 0:00 intro -> 0:42 build -> 1:45 main -> 5:06 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U04 0:00] intro vocal_chop...".postln; + ~bpm = 140; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.18; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \vocalPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [77,75,0,0,75,0,0,0,60,0,0,0,63,0,77,70,75,0,0,0,75,0,0,0,63,0,0,72,67,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 42.wait; + + "[U04 0:42] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 63.wait; + + "[U04 1:45] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,0,60,67,63,67,70,0,63,0,70,60,0,75,67,67,70,0,63,0,60,75,0,72,75,0,72,77,0,70,77,70]; + ~acidAmp = 0.22; + ~reload.value; + 201.wait; + + "[U04 5:06] variations + mutations...".postln; + ~melodyNotes = [67,0,77,77,75,77,0,67,70,70,67,75,67,0,77,60,67,67,72,72,72,77,70,67,65,77,70,0,0,72,60,0]; + ~reload.value; + 21.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinorPent, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U04 6:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U04 7:00] === fin VOCAL CHOP ===".postln; +}).play; +"=== TRACK U04 : VOCAL CHOP 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U05_progressive_journey.scd b/sound_algo/tracks/U_vocal_trance/U05_progressive_journey.scd new file mode 100644 index 0000000..e45452b --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U05_progressive_journey.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U05_progressive_journey.scd -- Album U "Vocal Trance", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U05 : "PROGRESSIVE JOURNEY" 8 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 2:00 main -> 5:54 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U05 0:00] intro progressive_journey...".postln; + ~bpm = 136; + ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.36; ~kickClick = 0.15; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \supersaw; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [67,0,0,0,70,0,0,0,63,67,65,70,65,0,0,0,67,0,0,0,60,0,0,0,65,0,0,65,63,0,70,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,1,0,0,0,0,0,1,0,1,1,0,0,1,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 48.wait; + + "[U05 0:48] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 72.wait; + + "[U05 2:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [67,67,0,0,65,0,0,65,65,67,0,63,0,67,72,0,0,0,72,60,0,0,60,60,0,0,60,0,72,0,70,72]; + ~acidAmp = 0.22; + ~reload.value; + 234.wait; + + "[U05 5:54] variations + mutations...".postln; + ~melodyNotes = [0,70,62,0,72,70,0,72,67,70,0,0,72,65,72,60,63,0,72,65,0,60,62,62,62,63,67,67,72,0,63,63]; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U05 7:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U05 8:00] === fin PROGRESSIVE JOURNEY ===".postln; +}).play; +"=== TRACK U05 : PROGRESSIVE JOURNEY 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U06_psy_vocal.scd b/sound_algo/tracks/U_vocal_trance/U06_psy_vocal.scd new file mode 100644 index 0000000..7c6d785 --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U06_psy_vocal.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U06_psy_vocal.scd -- Album U "Vocal Trance", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U06 : "PSY VOCAL" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U06 0:00] intro psy_vocal...".postln; + ~bpm = 142; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.18; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \fmLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [68,0,0,70,65,0,0,0,72,0,0,0,63,0,68,0,72,72,63,0,63,67,0,0,61,0,0,0,70,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 36.wait; + + "[U06 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 54.wait; + + "[U06 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [60,65,67,0,0,61,0,0,63,0,0,60,68,65,63,61,70,65,63,67,60,0,67,0,72,0,0,70,0,67,70,0]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[U06 4:18] variations + mutations...".postln; + ~melodyNotes = [70,67,0,70,60,0,0,0,0,0,68,65,63,60,72,68,0,67,70,63,0,0,67,0,72,0,68,0,61,65,0,0]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scalePhrygian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U06 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U06 6:00] === fin PSY VOCAL ===".postln; +}).play; +"=== TRACK U06 : PSY VOCAL 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U07_balearic_vocal.scd b/sound_algo/tracks/U_vocal_trance/U07_balearic_vocal.scd new file mode 100644 index 0000000..ec59e5a --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U07_balearic_vocal.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U07_balearic_vocal.scd -- Album U "Vocal Trance", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U07 : "BALEARIC VOCAL" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U07 0:00] intro balearic_vocal...".postln; + ~bpm = 132; + ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.36; ~kickClick = 0.15; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \rhodes; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [69,0,62,0,72,0,0,0,63,60,0,0,62,63,0,0,70,0,0,0,62,0,0,0,67,69,72,0,69,69,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 30.wait; + + "[U07 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 45.wait; + + "[U07 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [70,62,0,0,65,60,69,63,0,65,65,63,0,67,0,63,63,60,69,0,69,67,70,62,69,62,65,0,67,60,72,0]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[U07 3:30] variations + mutations...".postln; + ~melodyNotes = [62,72,62,63,67,69,67,70,62,0,0,0,0,72,0,72,62,69,0,63,0,62,0,62,0,63,69,0,70,0,0,0]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleDorian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U07 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U07 5:00] === fin BALEARIC VOCAL ===".postln; +}).play; +"=== TRACK U07 : BALEARIC VOCAL 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U08_deep_vocal_house.scd b/sound_algo/tracks/U_vocal_trance/U08_deep_vocal_house.scd new file mode 100644 index 0000000..e4a32e9 --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U08_deep_vocal_house.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U08_deep_vocal_house.scd -- Album U "Vocal Trance", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U08 : "DEEP VOCAL HOUSE" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U08 0:00] intro deep_vocal_house...".postln; + ~bpm = 128; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.18; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \vocalPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [60,67,0,0,63,0,0,0,63,0,0,65,70,0,0,0,68,0,0,60,63,60,0,0,70,0,0,0,62,0,72,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 36.wait; + + "[U08 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 54.wait; + + "[U08 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [65,60,67,0,0,0,62,70,70,65,68,60,72,0,0,70,0,62,68,72,0,0,62,70,70,0,0,63,62,65,0,63]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[U08 4:18] variations + mutations...".postln; + ~melodyNotes = [63,63,62,72,72,0,0,68,0,63,72,67,0,68,67,60,67,62,70,60,65,72,60,68,0,63,72,0,63,67,68,0]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U08 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U08 6:00] === fin DEEP VOCAL HOUSE ===".postln; +}).play; +"=== TRACK U08 : DEEP VOCAL HOUSE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U09_tech_trance_vocal.scd b/sound_algo/tracks/U_vocal_trance/U09_tech_trance_vocal.scd new file mode 100644 index 0000000..cbc9e2e --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U09_tech_trance_vocal.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U09_tech_trance_vocal.scd -- Album U "Vocal Trance", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U09 : "TECH TRANCE VOCAL" 7 minutes ---------------------- +// 0:00 intro -> 0:42 build -> 1:45 main -> 5:06 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U09 0:00] intro tech_trance_vocal...".postln; + ~bpm = 140; + ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.36; ~kickClick = 0.15; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \supersaw; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [62,0,0,0,63,0,0,0,62,0,0,0,68,0,0,0,72,63,67,0,62,0,0,0,60,0,0,0,70,63,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 42.wait; + + "[U09 0:42] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 63.wait; + + "[U09 1:45] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,72,68,0,72,72,65,72,0,72,67,0,70,0,0,0,67,72,0,62,0,62,63,63,0,65,0,0,0,70,65,62]; + ~acidAmp = 0.22; + ~reload.value; + 201.wait; + + "[U09 5:06] variations + mutations...".postln; + ~melodyNotes = [60,62,0,63,67,0,63,0,60,0,65,0,70,67,62,70,72,72,60,65,0,60,65,63,0,68,60,72,70,0,60,62]; + ~reload.value; + 21.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U09 6:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U09 7:00] === fin TECH TRANCE VOCAL ===".postln; +}).play; +"=== TRACK U09 : TECH TRANCE VOCAL 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U10_epic_orchestral.scd b/sound_algo/tracks/U_vocal_trance/U10_epic_orchestral.scd new file mode 100644 index 0000000..ca64f1d --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U10_epic_orchestral.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U10_epic_orchestral.scd -- Album U "Vocal Trance", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U10 : "EPIC ORCHESTRAL" 8 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 2:00 main -> 5:54 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U10 0:00] intro epic_orchestral...".postln; + ~bpm = 138; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.18; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \strings; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [67,65,0,0,67,0,0,0,67,65,0,0,60,0,0,68,71,0,0,0,71,0,72,0,67,0,0,63,67,0,67,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cinematic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 48.wait; + + "[U10 0:48] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 72.wait; + + "[U10 2:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [71,72,60,0,0,71,60,71,63,0,72,62,68,60,72,0,62,68,67,62,63,71,0,67,0,67,0,0,63,0,72,0]; + ~acidAmp = 0.22; + ~reload.value; + 234.wait; + + "[U10 5:54] variations + mutations...".postln; + ~melodyNotes = [0,0,0,0,0,67,0,0,0,0,68,62,0,0,72,68,63,62,71,0,0,71,0,68,72,68,63,0,60,0,67,68]; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleHarmonicMin, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U10 7:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U10 8:00] === fin EPIC ORCHESTRAL ===".postln; +}).play; +"=== TRACK U10 : EPIC ORCHESTRAL 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U11_hard_trance_vocal.scd b/sound_algo/tracks/U_vocal_trance/U11_hard_trance_vocal.scd new file mode 100644 index 0000000..6b4ed10 --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U11_hard_trance_vocal.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U11_hard_trance_vocal.scd -- Album U "Vocal Trance", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U11 : "HARD TRANCE VOCAL" 7 minutes ---------------------- +// 0:00 intro -> 0:42 build -> 1:45 main -> 5:06 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U11 0:00] intro hard_trance_vocal...".postln; + ~bpm = 146; + ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.36; ~kickClick = 0.15; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \hardLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [62,67,0,0,70,0,67,0,67,0,0,0,67,0,0,70,72,0,0,68,68,0,68,0,62,0,0,0,65,60,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 42.wait; + + "[U11 0:42] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 63.wait; + + "[U11 1:45] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [65,0,0,0,0,0,63,72,67,62,0,65,68,67,72,60,0,67,0,0,70,65,67,72,0,62,62,68,68,0,70,60]; + ~acidAmp = 0.22; + ~reload.value; + 201.wait; + + "[U11 5:06] variations + mutations...".postln; + ~melodyNotes = [68,0,63,63,68,67,72,0,60,62,0,60,67,0,0,0,60,63,70,65,62,72,63,65,72,0,0,63,68,0,70,63]; + ~reload.value; + 21.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U11 6:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U11 7:00] === fin HARD TRANCE VOCAL ===".postln; +}).play; +"=== TRACK U11 : HARD TRANCE VOCAL 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U12_vocal_dub.scd b/sound_algo/tracks/U_vocal_trance/U12_vocal_dub.scd new file mode 100644 index 0000000..b2d18e1 --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U12_vocal_dub.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U12_vocal_dub.scd -- Album U "Vocal Trance", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U12 : "VOCAL DUB" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U12 0:00] intro vocal_dub...".postln; + ~bpm = 134; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.18; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \warmPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [68,0,0,0,67,70,0,0,68,0,0,0,67,0,72,0,72,67,0,0,63,65,65,0,60,68,0,63,60,0,0,72]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,1,0,1,1,0,1,0,0,1,0,0,0,0,0,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 30.wait; + + "[U12 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 45.wait; + + "[U12 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [65,0,67,62,0,60,0,63,0,70,0,67,0,62,0,72,0,72,0,72,62,72,63,68,0,65,70,0,62,62,63,65]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[U12 3:30] variations + mutations...".postln; + ~melodyNotes = [70,67,0,60,68,0,62,63,67,0,67,65,63,72,0,70,0,0,0,0,0,0,0,62,68,62,65,63,72,65,0,72]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U12 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U12 5:00] === fin VOCAL DUB ===".postln; +}).play; +"=== TRACK U12 : VOCAL DUB 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U13_ambient_vocal.scd b/sound_algo/tracks/U_vocal_trance/U13_ambient_vocal.scd new file mode 100644 index 0000000..49eb2ee --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U13_ambient_vocal.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U13_ambient_vocal.scd -- Album U "Vocal Trance", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U13 : "AMBIENT VOCAL" 4 minutes ---------------------- +// 0:00 intro -> 0:24 build -> 1:00 main -> 2:42 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U13 0:00] intro ambient_vocal...".postln; + ~bpm = 130; + ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.36; ~kickClick = 0.15; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \drone; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [69,0,0,62,72,70,63,0,70,0,0,0,70,0,0,0,63,0,0,70,63,0,60,0,67,0,0,0,70,0,69,65]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,1,0,0,1,1,1,0,0,0,0,1,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 24.wait; + + "[U13 0:24] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 36.wait; + + "[U13 1:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,0,70,60,62,60,60,60,65,60,67,69,69,63,0,70,60,63,70,60,0,0,0,0,70,67,72,65,63,0,0,70]; + ~acidAmp = 0.22; + ~reload.value; + 102.wait; + + "[U13 2:42] variations + mutations...".postln; + ~melodyNotes = [63,67,62,0,0,65,70,0,62,65,69,60,65,0,72,0,0,0,65,67,69,69,72,72,0,65,70,65,0,70,65,70]; + ~reload.value; + 12.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleDorian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U13 3:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U13 4:00] === fin AMBIENT VOCAL ===".postln; +}).play; +"=== TRACK U13 : AMBIENT VOCAL 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U14_summer_anthem.scd b/sound_algo/tracks/U_vocal_trance/U14_summer_anthem.scd new file mode 100644 index 0000000..932aade --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U14_summer_anthem.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U14_summer_anthem.scd -- Album U "Vocal Trance", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U14 : "SUMMER ANTHEM" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U14 0:00] intro summer_anthem...".postln; + ~bpm = 136; + ~kickFreq = 55; ~kickPitchAmt = 3.0; ~kickDecay = 0.32; ~kickClick = 0.18; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \organLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [60,0,0,0,67,65,77,0,77,0,75,70,70,75,0,0,63,0,0,70,72,0,0,0,75,0,67,0,63,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,1,0,1,0,1,0,1,0,0,0,0,1,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\trance) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 30.wait; + + "[U14 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 45.wait; + + "[U14 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [75,77,60,0,75,72,63,0,0,77,63,0,60,72,67,75,0,67,75,0,75,0,63,72,75,63,75,0,70,0,67,75]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[U14 3:30] variations + mutations...".postln; + ~melodyNotes = [75,70,0,0,65,65,0,63,70,70,63,77,75,63,63,72,0,75,63,0,67,65,0,70,77,65,75,63,67,0,67,65]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinorPent, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U14 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U14 5:00] === fin SUMMER ANTHEM ===".postln; +}).play; +"=== TRACK U14 : SUMMER ANTHEM 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/U15_vocal_finale.scd b/sound_algo/tracks/U_vocal_trance/U15_vocal_finale.scd new file mode 100644 index 0000000..1d321ac --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/U15_vocal_finale.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// U15_vocal_finale.scd -- Album U "Vocal Trance", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK U15 : "VOCAL FINALE" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[U15 0:00] intro vocal_finale...".postln; + ~bpm = 140; + ~kickFreq = 52; ~kickPitchAmt = 2.8; ~kickDecay = 0.36; ~kickClick = 0.15; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \fmLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.140; + ~melodyNotes = [70,0,0,0,72,0,0,0,67,0,0,65,63,0,0,0,72,0,67,0,62,0,0,0,72,67,63,0,70,72,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cinematic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\tranceLayer); + 36.wait; + + "[U15 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.15; + ~clapSteps = [0,0,0,0, 1,0,0,0, 0,0,0,0, 1,0,0,0]; ~clapAmp = 0.32; + ~melodyAmp = 0.200; + ~reload.value; + 54.wait; + + "[U15 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,0,60,0,62,65,0,60,70,0,70,62,65,70,63,60,67,62,63,68,65,68,72,0,62,62,68,63,0,0,63,70]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[U15 4:18] variations + mutations...".postln; + ~melodyNotes = [0,70,63,70,65,70,65,62,63,65,67,0,68,70,68,72,67,0,63,65,63,63,70,70,72,63,72,63,72,68,0,65]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[U15 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.200; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.15; + ~clapAmp = x * 0.32; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[U15 6:00] === fin VOCAL FINALE ===".postln; +}).play; +"=== TRACK U15 : VOCAL FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/U_vocal_trance/_album.scd b/sound_algo/tracks/U_vocal_trance/_album.scd new file mode 100644 index 0000000..f7a4aa1 --- /dev/null +++ b/sound_algo/tracks/U_vocal_trance/_album.scd @@ -0,0 +1,37 @@ +// ===================================================================== +// _album.scd -- Album U "Vocal Trance" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM U +// 3. ~playTrack.(\U, n) pour jouer la track n isolement +// ~playAlbum.(\U) pour enchainer 01 -> 15 +// ~stopAlbum.() pour interrompre l'album +// ===================================================================== + +( // --- SETUP ALBUM U --- +~albums = ~albums ? (); +~albums[\U] = ( + title: "Vocal Trance", + folder: "tracks/U_vocal_trance/", + tracks: [ + \U01_vocal_trance, + \U02_epic_anthem, + \U03_uplift_dream, + \U04_vocal_chop, + \U05_progressive_journey, + \U06_psy_vocal, + \U07_balearic_vocal, + \U08_deep_vocal_house, + \U09_tech_trance_vocal, + \U10_epic_orchestral, + \U11_hard_trance_vocal, + \U12_vocal_dub, + \U13_ambient_vocal, + \U14_summer_anthem, + \U15_vocal_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album U] setup OK".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V01_glitch_idm.scd b/sound_algo/tracks/V_glitch_idm/V01_glitch_idm.scd new file mode 100644 index 0000000..d894387 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V01_glitch_idm.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V01_glitch_idm.scd -- Album V "Glitch IDM", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V01 : "GLITCH IDM" 4 minutes ---------------------- +// 0:00 intro -> 0:24 build -> 1:00 main -> 2:42 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V01 0:00] intro glitch_idm...".postln; + ~bpm = 130; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.22; ~kickClick = 0.4; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \pluck; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [65,0,0,0,77,0,63,0,72,0,0,0,77,0,0,67,70,0,70,0,63,0,0,0,67,72,0,0,75,65,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 24.wait; + + "[V01 0:24] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 36.wait; + + "[V01 1:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,70,65,70,70,0,63,75,0,0,0,65,72,0,0,0,70,75,63,70,0,0,77,60,0,0,77,72,0,0,75,0]; + ~acidAmp = 0.22; + ~reload.value; + 102.wait; + + "[V01 2:42] variations + mutations...".postln; + ~melodyNotes = [72,0,65,77,0,0,0,77,65,60,0,65,0,70,72,72,0,60,70,0,0,63,0,77,67,77,72,0,0,65,67,63]; + ~reload.value; + 12.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinorPent, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V01 3:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V01 4:00] === fin GLITCH IDM ===".postln; +}).play; +"=== TRACK V01 : GLITCH IDM 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V02_broken_beats.scd b/sound_algo/tracks/V_glitch_idm/V02_broken_beats.scd new file mode 100644 index 0000000..c34ff20 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V02_broken_beats.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V02_broken_beats.scd -- Album V "Glitch IDM", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V02 : "BROKEN BEATS" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V02 0:00] intro broken_beats...".postln; + ~bpm = 140; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.3; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \fmBell; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [72,0,62,62,70,0,0,0,65,0,67,0,60,0,0,0,65,0,0,65,72,0,62,0,60,0,0,70,68,0,72,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 30.wait; + + "[V02 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 45.wait; + + "[V02 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,62,65,60,0,67,70,70,63,67,65,0,68,62,70,0,0,62,0,60,63,63,0,68,67,63,0,0,0,60,70,62]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[V02 3:30] variations + mutations...".postln; + ~melodyNotes = [62,68,63,67,0,0,0,60,60,72,63,60,70,65,68,62,62,60,60,0,72,0,0,62,60,67,67,0,68,72,0,0]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V02 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V02 5:00] === fin BROKEN BEATS ===".postln; +}).play; +"=== TRACK V02 : BROKEN BEATS 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V03_aphex_drill.scd b/sound_algo/tracks/V_glitch_idm/V03_aphex_drill.scd new file mode 100644 index 0000000..b0a50d7 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V03_aphex_drill.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V03_aphex_drill.scd -- Album V "Glitch IDM", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V03 : "APHEX DRILL" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V03 0:00] intro aphex_drill...".postln; + ~bpm = 160; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.22; ~kickClick = 0.4; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \squareLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [72,0,0,67,62,65,0,0,68,0,0,0,63,0,0,0,60,0,0,67,68,0,0,0,68,0,0,65,63,0,0,63]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 36.wait; + + "[V03 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 54.wait; + + "[V03 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [68,68,0,67,62,67,0,0,68,65,0,60,0,63,71,0,65,62,0,60,65,71,62,67,0,62,72,0,68,72,71,0]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[V03 4:18] variations + mutations...".postln; + ~melodyNotes = [60,71,65,0,72,0,65,72,72,67,71,65,60,0,0,72,68,63,65,67,72,65,0,65,60,0,0,71,63,68,0,0]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleHarmonicMin, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V03 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V03 6:00] === fin APHEX DRILL ===".postln; +}).play; +"=== TRACK V03 : APHEX DRILL 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V04_breakcore_chaos.scd b/sound_algo/tracks/V_glitch_idm/V04_breakcore_chaos.scd new file mode 100644 index 0000000..fe6ad06 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V04_breakcore_chaos.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V04_breakcore_chaos.scd -- Album V "Glitch IDM", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V04 : "BREAKCORE CHAOS" 7 minutes ---------------------- +// 0:00 intro -> 0:42 build -> 1:45 main -> 5:06 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V04 0:00] intro breakcore_chaos...".postln; + ~bpm = 180; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.3; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \handpan; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [68,0,63,0,63,0,0,0,60,63,0,0,68,0,0,0,70,0,0,0,63,0,0,0,72,0,68,63,70,0,0,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,1,0,0,1,1,1,0,1,0,0,1,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 42.wait; + + "[V04 0:42] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 63.wait; + + "[V04 1:45] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,0,60,68,0,0,61,0,61,68,61,0,0,0,60,65,0,61,0,72,0,0,0,70,70,72,0,65,61,0,60,61]; + ~acidAmp = 0.22; + ~reload.value; + 201.wait; + + "[V04 5:06] variations + mutations...".postln; + ~melodyNotes = [63,0,61,61,72,0,63,70,61,65,67,0,61,72,68,61,72,60,67,0,61,70,67,70,70,72,72,65,0,63,0,0]; + ~reload.value; + 21.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scalePhrygian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V04 6:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V04 7:00] === fin BREAKCORE CHAOS ===".postln; +}).play; +"=== TRACK V04 : BREAKCORE CHAOS 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V05_fm_skitter.scd b/sound_algo/tracks/V_glitch_idm/V05_fm_skitter.scd new file mode 100644 index 0000000..c945b11 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V05_fm_skitter.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V05_fm_skitter.scd -- Album V "Glitch IDM", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V05 : "FM SKITTER" 8 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 2:00 main -> 5:54 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V05 0:00] intro fm_skitter...".postln; + ~bpm = 135; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.22; ~kickClick = 0.4; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \fmLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [72,63,0,0,63,62,0,0,63,0,0,0,62,70,0,0,72,0,70,63,63,0,0,0,62,0,0,67,69,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 48.wait; + + "[V05 0:48] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 72.wait; + + "[V05 2:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [72,67,70,69,0,72,0,0,67,72,0,0,0,67,0,69,70,62,65,0,72,0,0,0,63,70,60,65,0,72,69,0]; + ~acidAmp = 0.22; + ~reload.value; + 234.wait; + + "[V05 5:54] variations + mutations...".postln; + ~melodyNotes = [72,62,0,72,63,0,69,67,0,0,70,65,0,65,70,60,63,60,67,0,0,70,0,65,70,60,69,67,62,69,0,67]; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleDorian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V05 7:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V05 8:00] === fin FM SKITTER ===".postln; +}).play; +"=== TRACK V05 : FM SKITTER 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V06_ambient_idm.scd b/sound_algo/tracks/V_glitch_idm/V06_ambient_idm.scd new file mode 100644 index 0000000..136049b --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V06_ambient_idm.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V06_ambient_idm.scd -- Album V "Glitch IDM", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V06 : "AMBIENT IDM" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V06 0:00] intro ambient_idm...".postln; + ~bpm = 110; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.3; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \warmPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [60,0,0,0,68,0,72,0,68,0,0,0,63,0,0,0,63,0,0,0,65,0,0,0,68,0,0,0,62,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 36.wait; + + "[V06 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 54.wait; + + "[V06 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,65,70,70,63,65,72,63,0,63,60,67,63,63,62,70,70,72,60,68,0,0,0,60,0,65,68,62,67,60,67,68]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[V06 4:18] variations + mutations...".postln; + ~melodyNotes = [63,72,65,70,65,0,60,63,60,67,0,60,0,0,62,70,67,63,60,62,0,63,62,62,62,65,0,0,0,70,60,65]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V06 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V06 6:00] === fin AMBIENT IDM ===".postln; +}).play; +"=== TRACK V06 : AMBIENT IDM 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V07_drill_n_bass.scd b/sound_algo/tracks/V_glitch_idm/V07_drill_n_bass.scd new file mode 100644 index 0000000..b61df99 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V07_drill_n_bass.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V07_drill_n_bass.scd -- Album V "Glitch IDM", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V07 : "DRILL N BASS" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V07 0:00] intro drill_n_bass...".postln; + ~bpm = 165; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.22; ~kickClick = 0.4; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \pluck; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [67,0,63,0,67,0,0,0,62,60,63,0,63,0,0,0,67,0,68,70,70,0,0,0,72,0,0,0,62,60,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,1,1,0,0,0,0,1,0,1,1,0,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 30.wait; + + "[V07 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 45.wait; + + "[V07 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [72,0,0,70,0,63,72,70,62,68,65,0,0,62,65,70,60,63,72,0,0,72,68,0,65,70,65,72,0,72,62,0]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[V07 3:30] variations + mutations...".postln; + ~melodyNotes = [0,70,60,0,0,0,65,0,68,60,0,0,72,0,72,65,68,0,0,68,0,63,70,65,70,65,0,70,62,0,63,0]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V07 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V07 5:00] === fin DRILL N BASS ===".postln; +}).play; +"=== TRACK V07 : DRILL N BASS 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V08_stutter_groove.scd b/sound_algo/tracks/V_glitch_idm/V08_stutter_groove.scd new file mode 100644 index 0000000..ed82974 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V08_stutter_groove.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V08_stutter_groove.scd -- Album V "Glitch IDM", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V08 : "STUTTER GROOVE" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V08 0:00] intro stutter_groove...".postln; + ~bpm = 128; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.3; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \squareLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [70,0,75,0,70,0,0,0,67,70,0,0,65,0,0,0,72,0,0,0,75,0,0,0,75,0,0,65,60,0,65,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 36.wait; + + "[V08 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 54.wait; + + "[V08 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,60,0,60,77,67,0,67,70,0,75,72,0,70,77,0,0,0,67,0,0,65,0,65,0,60,70,70,77,0,65,0]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[V08 4:18] variations + mutations...".postln; + ~melodyNotes = [70,72,72,65,65,75,67,0,0,70,77,0,0,0,72,67,0,0,63,70,72,77,70,0,63,0,60,67,0,0,0,63]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinorPent, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V08 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V08 6:00] === fin STUTTER GROOVE ===".postln; +}).play; +"=== TRACK V08 : STUTTER GROOVE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V09_clicks_cuts.scd b/sound_algo/tracks/V_glitch_idm/V09_clicks_cuts.scd new file mode 100644 index 0000000..db0fad3 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V09_clicks_cuts.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V09_clicks_cuts.scd -- Album V "Glitch IDM", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V09 : "CLICKS CUTS" 7 minutes ---------------------- +// 0:00 intro -> 0:42 build -> 1:45 main -> 5:06 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V09 0:00] intro clicks_cuts...".postln; + ~bpm = 118; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.22; ~kickClick = 0.4; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \fmBell; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [70,0,0,0,60,0,60,0,62,0,0,0,62,0,0,0,67,0,0,0,70,0,0,0,65,70,0,0,67,0,68,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,1,0,0,0,0,0,0,0,0,1,1,1,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 42.wait; + + "[V09 0:42] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 63.wait; + + "[V09 1:45] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [63,60,70,62,68,63,65,67,63,0,60,0,0,0,62,62,65,0,68,65,62,0,72,67,0,68,0,0,68,65,0,67]; + ~acidAmp = 0.22; + ~reload.value; + 201.wait; + + "[V09 5:06] variations + mutations...".postln; + ~melodyNotes = [0,68,0,68,0,62,62,0,0,65,62,0,0,0,70,0,60,72,0,70,67,62,60,0,0,0,63,0,63,63,0,68]; + ~reload.value; + 21.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V09 6:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V09 7:00] === fin CLICKS CUTS ===".postln; +}).play; +"=== TRACK V09 : CLICKS CUTS 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V10_autechre_machine.scd b/sound_algo/tracks/V_glitch_idm/V10_autechre_machine.scd new file mode 100644 index 0000000..70ae6bb --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V10_autechre_machine.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V10_autechre_machine.scd -- Album V "Glitch IDM", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V10 : "AUTECHRE MACHINE" 8 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 2:00 main -> 5:54 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V10 0:00] intro autechre_machine...".postln; + ~bpm = 145; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.3; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \fmLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [68,67,0,0,63,0,0,0,61,0,0,0,70,0,0,0,72,0,63,0,65,67,63,61,65,0,0,72,72,63,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 48.wait; + + "[V10 0:48] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 72.wait; + + "[V10 2:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [63,63,60,0,63,63,70,60,0,0,0,0,72,0,70,63,67,68,0,61,70,60,70,0,63,60,0,61,63,0,60,0]; + ~acidAmp = 0.22; + ~reload.value; + 234.wait; + + "[V10 5:54] variations + mutations...".postln; + ~melodyNotes = [0,70,60,0,72,0,61,67,65,0,70,60,0,0,61,70,0,0,68,70,0,70,67,0,65,72,72,67,70,0,0,0]; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scalePhrygian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V10 7:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V10 8:00] === fin AUTECHRE MACHINE ===".postln; +}).play; +"=== TRACK V10 : AUTECHRE MACHINE 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V11_neuro_glitch.scd b/sound_algo/tracks/V_glitch_idm/V11_neuro_glitch.scd new file mode 100644 index 0000000..00d503a --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V11_neuro_glitch.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V11_neuro_glitch.scd -- Album V "Glitch IDM", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V11 : "NEURO GLITCH" 7 minutes ---------------------- +// 0:00 intro -> 0:42 build -> 1:45 main -> 5:06 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V11 0:00] intro neuro_glitch...".postln; + ~bpm = 170; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.22; ~kickClick = 0.4; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \hardLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [62,0,0,0,71,0,0,0,67,0,0,0,63,0,0,67,65,65,0,0,68,60,0,67,71,0,0,0,60,0,62,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,1,1,0,1,0,0,1,0,1,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\fifth); + 42.wait; + + "[V11 0:42] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 63.wait; + + "[V11 1:45] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,68,67,65,71,67,62,67,62,0,0,0,0,72,0,65,0,0,72,0,0,67,65,0,68,68,60,0,67,68,63,68]; + ~acidAmp = 0.22; + ~reload.value; + 201.wait; + + "[V11 5:06] variations + mutations...".postln; + ~melodyNotes = [67,65,65,65,0,65,0,0,62,62,0,0,60,0,68,67,67,63,71,60,71,0,0,62,0,60,65,62,67,67,72,0]; + ~reload.value; + 21.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleHarmonicMin, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V11 6:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V11 7:00] === fin NEURO GLITCH ===".postln; +}).play; +"=== TRACK V11 : NEURO GLITCH 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V12_micro_house_glitch.scd b/sound_algo/tracks/V_glitch_idm/V12_micro_house_glitch.scd new file mode 100644 index 0000000..07a1569 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V12_micro_house_glitch.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V12_micro_house_glitch.scd -- Album V "Glitch IDM", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V12 : "MICRO HOUSE GLITCH" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V12 0:00] intro micro_house_glitch...".postln; + ~bpm = 124; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.3; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \rhodes; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [67,0,0,0,65,63,0,70,72,69,0,0,60,0,0,67,72,0,69,0,69,0,0,0,60,0,0,0,65,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,1,1,0,0,1,1,0,0,0,1,0,0,0,0,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 30.wait; + + "[V12 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 45.wait; + + "[V12 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,69,0,72,0,67,63,0,69,70,0,63,69,67,0,70,72,0,0,0,72,63,0,65,0,0,0,63,62,72,60,0]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[V12 3:30] variations + mutations...".postln; + ~melodyNotes = [62,63,70,65,0,63,63,69,0,72,67,63,0,0,72,70,67,0,65,0,69,63,60,63,72,72,0,60,0,0,60,65]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleDorian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V12 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V12 5:00] === fin MICRO HOUSE GLITCH ===".postln; +}).play; +"=== TRACK V12 : MICRO HOUSE GLITCH 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V13_industrial_idm.scd b/sound_algo/tracks/V_glitch_idm/V13_industrial_idm.scd new file mode 100644 index 0000000..ffcffe6 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V13_industrial_idm.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V13_industrial_idm.scd -- Album V "Glitch IDM", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V13 : "INDUSTRIAL IDM" 4 minutes ---------------------- +// 0:00 intro -> 0:24 build -> 1:00 main -> 2:42 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V13 0:00] intro industrial_idm...".postln; + ~bpm = 138; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.22; ~kickClick = 0.4; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \squareLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [65,0,67,72,72,0,0,60,63,60,61,0,63,0,0,63,60,0,0,0,72,0,0,0,68,63,70,72,63,67,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,1,0,0,0,0,0,0,0,1,0,1,0,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\industrial) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\off); + 24.wait; + + "[V13 0:24] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 36.wait; + + "[V13 1:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [65,72,60,61,65,67,0,60,0,61,67,60,0,61,70,63,0,70,0,60,72,0,61,72,68,0,0,60,63,0,0,65]; + ~acidAmp = 0.22; + ~reload.value; + 102.wait; + + "[V13 2:42] variations + mutations...".postln; + ~melodyNotes = [68,0,65,70,63,60,72,72,63,68,0,63,63,67,72,70,0,0,68,0,61,0,70,72,0,67,68,61,63,60,72,60]; + ~reload.value; + 12.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scalePhrygian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V13 3:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V13 4:00] === fin INDUSTRIAL IDM ===".postln; +}).play; +"=== TRACK V13 : INDUSTRIAL IDM 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V14_broken_techno.scd b/sound_algo/tracks/V_glitch_idm/V14_broken_techno.scd new file mode 100644 index 0000000..1f04cfb --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V14_broken_techno.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V14_broken_techno.scd -- Album V "Glitch IDM", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V14 : "BROKEN TECHNO" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V14 0:00] intro broken_techno...".postln; + ~bpm = 140; + ~kickFreq = 55; ~kickPitchAmt = 3.5; ~kickDecay = 0.25; ~kickClick = 0.3; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \stab; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [60,0,0,62,67,65,0,65,70,65,0,0,70,0,0,0,72,0,0,63,70,0,0,0,72,0,0,0,68,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\retro) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\counter); + 30.wait; + + "[V14 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 45.wait; + + "[V14 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,65,65,67,72,70,60,0,63,0,67,0,68,67,0,63,72,63,65,67,70,65,0,0,0,62,67,70,60,0,70,62]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[V14 3:30] variations + mutations...".postln; + ~melodyNotes = [0,60,70,60,63,65,70,0,0,62,67,0,68,60,67,70,0,63,65,65,65,67,0,62,70,68,68,60,0,68,72,72]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V14 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V14 5:00] === fin BROKEN TECHNO ===".postln; +}).play; +"=== TRACK V14 : BROKEN TECHNO 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/V15_glitch_finale.scd b/sound_algo/tracks/V_glitch_idm/V15_glitch_finale.scd new file mode 100644 index 0000000..ecbfcb8 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/V15_glitch_finale.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// V15_glitch_finale.scd -- Album V "Glitch IDM", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK V15 : "GLITCH FINALE" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[V15 0:00] intro glitch_finale...".postln; + ~bpm = 150; + ~kickFreq = 60; ~kickPitchAmt = 4.0; ~kickDecay = 0.22; ~kickClick = 0.4; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \fmLead; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [77,67,0,70,77,0,0,0,60,0,0,0,70,70,70,60,63,0,0,0,72,0,75,75,63,0,0,0,63,77,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,1,0,0,0,1,1,0,0,1,0,1,0,0,0,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\cosmic) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\third); + 36.wait; + + "[V15 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,1, 0,0,1,0, 0,1,0,0, 1,0,0,0]; ~kickAmp = 0.5; + ~hatSteps = [1,0,1,1, 0,1,1,0, 1,1,0,1, 0,1,1,0]; ~hatAmp = 0.1; + ~clapSteps = [0,0,1,0, 1,0,0,1, 0,1,0,0, 0,0,1,0]; ~clapAmp = 0.3; + ~melodyAmp = 0.180; + ~reload.value; + 54.wait; + + "[V15 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [70,75,0,72,70,70,0,75,0,0,70,72,0,0,75,67,65,70,0,65,65,67,0,65,65,0,65,63,65,0,0,0]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[V15 4:18] variations + mutations...".postln; + ~melodyNotes = [75,70,67,65,70,67,67,0,77,77,0,75,65,67,60,0,0,67,0,77,0,72,0,0,60,75,0,60,77,60,0,75]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinorPent, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[V15 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.5; + ~hatAmp = x * 0.1; + ~clapAmp = x * 0.3; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[V15 6:00] === fin GLITCH FINALE ===".postln; +}).play; +"=== TRACK V15 : GLITCH FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/V_glitch_idm/_album.scd b/sound_algo/tracks/V_glitch_idm/_album.scd new file mode 100644 index 0000000..e4bd8d0 --- /dev/null +++ b/sound_algo/tracks/V_glitch_idm/_album.scd @@ -0,0 +1,37 @@ +// ===================================================================== +// _album.scd -- Album V "Glitch IDM" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM V +// 3. ~playTrack.(\V, n) pour jouer la track n isolement +// ~playAlbum.(\V) pour enchainer 01 -> 15 +// ~stopAlbum.() pour interrompre l'album +// ===================================================================== + +( // --- SETUP ALBUM V --- +~albums = ~albums ? (); +~albums[\V] = ( + title: "Glitch IDM", + folder: "tracks/V_glitch_idm/", + tracks: [ + \V01_glitch_idm, + \V02_broken_beats, + \V03_aphex_drill, + \V04_breakcore_chaos, + \V05_fm_skitter, + \V06_ambient_idm, + \V07_drill_n_bass, + \V08_stutter_groove, + \V09_clicks_cuts, + \V10_autechre_machine, + \V11_neuro_glitch, + \V12_micro_house_glitch, + \V13_industrial_idm, + \V14_broken_techno, + \V15_glitch_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album V] setup OK".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W01_dub_techno.scd b/sound_algo/tracks/W_dub_techno/W01_dub_techno.scd new file mode 100644 index 0000000..37338e8 --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W01_dub_techno.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W01_dub_techno.scd -- Album W "Dub Techno", track 1/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W01 : "DUB TECHNO" 4 minutes ---------------------- +// 0:00 intro -> 0:24 build -> 1:00 main -> 2:42 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W01 0:00] intro dub_techno...".postln; + ~bpm = 120; + ~kickFreq = 50; ~kickPitchAmt = 2.2; ~kickDecay = 0.48; ~kickClick = 0.1; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \warmPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [72,62,63,0,68,0,65,0,62,0,0,0,63,0,62,0,68,70,0,0,63,0,0,0,68,0,0,63,63,0,67,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,1,0,0,1,0,1,0,1,1,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 24.wait; + + "[W01 0:24] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 36.wait; + + "[W01 1:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,63,63,0,67,72,0,60,72,72,72,60,67,65,63,68,60,0,0,62,70,0,67,63,0,0,60,67,70,0,0,0]; + ~acidAmp = 0.22; + ~reload.value; + 102.wait; + + "[W01 2:42] variations + mutations...".postln; + ~melodyNotes = [72,67,70,65,62,62,67,68,68,0,72,72,63,0,67,0,60,62,0,70,68,65,65,0,62,68,0,68,60,0,68,0]; + ~reload.value; + 12.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W01 3:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W01 4:00] === fin DUB TECHNO ===".postln; +}).play; +"=== TRACK W01 : DUB TECHNO 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W02_basic_channel.scd b/sound_algo/tracks/W_dub_techno/W02_basic_channel.scd new file mode 100644 index 0000000..3bce9f2 --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W02_basic_channel.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W02_basic_channel.scd -- Album W "Dub Techno", track 2/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W02 : "BASIC CHANNEL" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W02 0:00] intro basic_channel...".postln; + ~bpm = 122; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.45; ~kickClick = 0.08; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \drone; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [68,63,0,70,63,0,0,0,67,0,0,70,62,0,72,0,67,67,68,0,65,0,0,72,63,72,0,0,68,62,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 30.wait; + + "[W02 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 45.wait; + + "[W02 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,60,62,60,0,62,60,67,67,65,65,68,0,0,63,60,0,62,68,67,67,63,68,60,72,0,70,70,72,67,65,0]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[W02 3:30] variations + mutations...".postln; + ~melodyNotes = [0,72,62,0,0,72,72,65,67,0,68,0,0,60,62,72,0,68,63,70,0,0,62,0,70,65,63,0,68,70,0,68]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W02 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W02 5:00] === fin BASIC CHANNEL ===".postln; +}).play; +"=== TRACK W02 : BASIC CHANNEL 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W03_deep_chamber.scd b/sound_algo/tracks/W_dub_techno/W03_deep_chamber.scd new file mode 100644 index 0000000..8eb32cf --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W03_deep_chamber.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W03_deep_chamber.scd -- Album W "Dub Techno", track 3/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W03 : "DEEP CHAMBER" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W03 0:00] intro deep_chamber...".postln; + ~bpm = 118; + ~kickFreq = 50; ~kickPitchAmt = 2.2; ~kickDecay = 0.48; ~kickClick = 0.1; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \rhodes; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [72,0,65,0,60,0,0,0,67,0,0,69,67,0,0,0,70,0,0,0,60,0,0,0,67,60,69,67,60,70,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,1,0,0,0,0,0,0,0,0,1,1,1,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 36.wait; + + "[W03 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 54.wait; + + "[W03 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [70,63,65,69,0,63,62,63,0,70,0,63,70,0,0,0,0,72,72,65,60,65,0,69,60,69,72,0,67,62,62,62]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[W03 4:18] variations + mutations...".postln; + ~melodyNotes = [0,67,69,60,72,69,67,60,0,67,0,60,63,67,0,67,63,67,67,67,62,63,0,63,65,60,62,0,63,0,0,70]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleDorian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W03 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W03 6:00] === fin DEEP CHAMBER ===".postln; +}).play; +"=== TRACK W03 : DEEP CHAMBER 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W04_minimal_dub.scd b/sound_algo/tracks/W_dub_techno/W04_minimal_dub.scd new file mode 100644 index 0000000..430d95e --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W04_minimal_dub.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W04_minimal_dub.scd -- Album W "Dub Techno", track 4/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W04 : "MINIMAL DUB" 7 minutes ---------------------- +// 0:00 intro -> 0:42 build -> 1:45 main -> 5:06 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W04 0:00] intro minimal_dub...".postln; + ~bpm = 120; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.45; ~kickClick = 0.08; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \stab; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [70,0,0,0,70,72,0,0,60,68,0,0,67,0,0,70,72,0,0,0,65,0,0,0,68,0,0,0,60,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,1,0,0,1,1,0,0,0,0,0,0,1,0,0,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 42.wait; + + "[W04 0:42] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 63.wait; + + "[W04 1:45] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [67,60,62,65,0,62,63,63,0,0,72,0,72,0,70,0,0,0,62,60,68,0,67,62,65,63,62,70,62,0,0,62]; + ~acidAmp = 0.22; + ~reload.value; + 201.wait; + + "[W04 5:06] variations + mutations...".postln; + ~melodyNotes = [67,0,72,60,0,0,68,0,72,70,0,0,0,60,72,68,67,62,68,72,0,65,60,0,0,70,0,68,72,0,65,65]; + ~reload.value; + 21.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W04 6:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W04 7:00] === fin MINIMAL DUB ===".postln; +}).play; +"=== TRACK W04 : MINIMAL DUB 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W05_cavern_chord.scd b/sound_algo/tracks/W_dub_techno/W05_cavern_chord.scd new file mode 100644 index 0000000..a4eb8c2 --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W05_cavern_chord.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W05_cavern_chord.scd -- Album W "Dub Techno", track 5/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W05 : "CAVERN CHORD" 8 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 2:00 main -> 5:54 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W05 0:00] intro cavern_chord...".postln; + ~bpm = 124; + ~kickFreq = 50; ~kickPitchAmt = 2.2; ~kickDecay = 0.48; ~kickClick = 0.1; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \warmPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [63,0,62,63,72,0,0,0,60,63,60,0,62,0,62,0,62,65,65,0,70,0,0,0,63,0,0,60,63,0,63,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 48.wait; + + "[W05 0:48] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 72.wait; + + "[W05 2:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [68,72,60,70,0,72,60,62,0,67,72,0,67,70,63,60,72,62,67,60,65,62,65,65,65,63,0,0,63,60,68,70]; + ~acidAmp = 0.22; + ~reload.value; + 234.wait; + + "[W05 5:54] variations + mutations...".postln; + ~melodyNotes = [72,60,0,60,62,65,0,68,68,62,62,70,0,65,72,70,72,68,65,67,63,60,62,0,63,0,67,63,65,72,0,72]; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W05 7:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W05 8:00] === fin CAVERN CHORD ===".postln; +}).play; +"=== TRACK W05 : CAVERN CHORD 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W06_rhodes_dub.scd b/sound_algo/tracks/W_dub_techno/W06_rhodes_dub.scd new file mode 100644 index 0000000..e21b4e1 --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W06_rhodes_dub.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W06_rhodes_dub.scd -- Album W "Dub Techno", track 6/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W06 : "RHODES DUB" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W06 0:00] intro rhodes_dub...".postln; + ~bpm = 122; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.45; ~kickClick = 0.08; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \rhodes; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [70,0,0,0,62,0,60,0,70,0,67,62,60,0,0,0,60,0,0,70,63,0,0,0,60,0,69,0,67,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 36.wait; + + "[W06 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 54.wait; + + "[W06 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [65,0,69,0,69,0,69,60,63,62,65,69,62,65,0,0,67,70,62,72,62,67,69,0,0,0,0,72,70,0,62,67]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[W06 4:18] variations + mutations...".postln; + ~melodyNotes = [63,65,60,63,70,60,62,65,0,69,69,0,0,72,63,0,67,69,0,0,69,63,63,0,63,0,0,0,65,69,72,63]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleDorian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W06 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W06 6:00] === fin RHODES DUB ===".postln; +}).play; +"=== TRACK W06 : RHODES DUB 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W07_berlin_underground.scd b/sound_algo/tracks/W_dub_techno/W07_berlin_underground.scd new file mode 100644 index 0000000..8341161 --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W07_berlin_underground.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W07_berlin_underground.scd -- Album W "Dub Techno", track 7/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W07 : "BERLIN UNDERGROUND" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W07 0:00] intro berlin_underground...".postln; + ~bpm = 126; + ~kickFreq = 50; ~kickPitchAmt = 2.2; ~kickDecay = 0.48; ~kickClick = 0.1; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \warmPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [63,68,0,0,67,0,0,0,63,0,0,0,68,0,0,0,63,0,60,0,65,0,60,0,65,0,67,62,72,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 30.wait; + + "[W07 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 45.wait; + + "[W07 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [72,60,0,63,0,70,67,67,0,0,72,0,72,70,0,62,67,68,70,70,67,72,0,0,63,0,72,67,0,72,60,67]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[W07 3:30] variations + mutations...".postln; + ~melodyNotes = [0,0,67,72,0,60,67,62,68,70,0,72,0,0,60,0,60,72,0,63,68,68,67,62,63,0,63,68,0,0,68,68]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W07 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W07 5:00] === fin BERLIN UNDERGROUND ===".postln; +}).play; +"=== TRACK W07 : BERLIN UNDERGROUND 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W08_ambient_dub.scd b/sound_algo/tracks/W_dub_techno/W08_ambient_dub.scd new file mode 100644 index 0000000..1c49c5a --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W08_ambient_dub.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W08_ambient_dub.scd -- Album W "Dub Techno", track 8/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W08 : "AMBIENT DUB" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W08 0:00] intro ambient_dub...".postln; + ~bpm = 118; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.45; ~kickClick = 0.08; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \drone; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [72,0,63,0,72,0,0,72,68,67,62,63,65,0,62,0,62,72,0,62,60,0,0,62,67,67,0,0,62,0,65,68]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,0,0,1,0,0,0,0,0,1,1,0,0,1,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 36.wait; + + "[W08 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 54.wait; + + "[W08 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [63,0,0,0,63,0,0,62,60,65,0,60,0,65,0,0,63,62,68,0,65,68,62,72,0,0,60,72,67,67,0,0]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[W08 4:18] variations + mutations...".postln; + ~melodyNotes = [70,70,62,0,0,0,60,0,62,62,70,62,0,0,68,0,70,70,0,67,0,0,0,70,0,63,0,67,65,63,60,0]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W08 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W08 6:00] === fin AMBIENT DUB ===".postln; +}).play; +"=== TRACK W08 : AMBIENT DUB 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W09_rolling_sub.scd b/sound_algo/tracks/W_dub_techno/W09_rolling_sub.scd new file mode 100644 index 0000000..0e1fcc6 --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W09_rolling_sub.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W09_rolling_sub.scd -- Album W "Dub Techno", track 9/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W09 : "ROLLING SUB" 7 minutes ---------------------- +// 0:00 intro -> 0:42 build -> 1:45 main -> 5:06 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W09 0:00] intro rolling_sub...".postln; + ~bpm = 124; + ~kickFreq = 50; ~kickPitchAmt = 2.2; ~kickDecay = 0.48; ~kickClick = 0.1; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \subBoom; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [68,0,0,60,70,0,72,0,70,0,63,0,67,0,70,70,72,0,0,0,72,0,0,0,70,0,0,0,68,0,0,60]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 42.wait; + + "[W09 0:42] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 63.wait; + + "[W09 1:45] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [68,60,0,70,68,0,60,0,67,62,0,63,68,70,70,72,68,70,62,0,65,68,67,70,62,0,67,67,0,65,62,0]; + ~acidAmp = 0.22; + ~reload.value; + 201.wait; + + "[W09 5:06] variations + mutations...".postln; + ~melodyNotes = [68,72,68,0,0,67,68,70,72,0,60,63,65,0,0,0,70,0,0,65,63,67,0,62,70,67,67,0,65,65,67,70]; + ~reload.value; + 21.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W09 6:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W09 7:00] === fin ROLLING SUB ===".postln; +}).play; +"=== TRACK W09 : ROLLING SUB 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W10_space_dub.scd b/sound_algo/tracks/W_dub_techno/W10_space_dub.scd new file mode 100644 index 0000000..0014263 --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W10_space_dub.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W10_space_dub.scd -- Album W "Dub Techno", track 10/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W10 : "SPACE DUB" 8 minutes ---------------------- +// 0:00 intro -> 0:48 build -> 2:00 main -> 5:54 variations -> 7:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W10 0:00] intro space_dub...".postln; + ~bpm = 120; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.45; ~kickClick = 0.08; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \vocalPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [67,0,0,0,69,0,0,0,63,62,0,0,67,0,62,0,69,0,0,0,65,0,62,67,72,0,0,69,62,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\space) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 48.wait; + + "[W10 0:48] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 72.wait; + + "[W10 2:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,0,0,69,0,60,0,0,0,0,0,70,69,0,0,65,0,70,0,0,65,63,0,70,0,62,0,0,70,0,70,0]; + ~acidAmp = 0.22; + ~reload.value; + 234.wait; + + "[W10 5:54] variations + mutations...".postln; + ~melodyNotes = [0,0,0,69,69,60,0,63,63,65,69,62,63,0,0,0,72,0,63,0,0,0,70,70,0,0,0,60,0,65,0,0]; + ~reload.value; + 24.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleDorian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W10 7:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W10 8:00] === fin SPACE DUB ===".postln; +}).play; +"=== TRACK W10 : SPACE DUB 8 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W11_dark_dub.scd b/sound_algo/tracks/W_dub_techno/W11_dark_dub.scd new file mode 100644 index 0000000..54e9a9f --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W11_dark_dub.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W11_dark_dub.scd -- Album W "Dub Techno", track 11/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W11 : "DARK DUB" 7 minutes ---------------------- +// 0:00 intro -> 0:42 build -> 1:45 main -> 5:06 variations -> 6:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W11 0:00] intro dark_dub...".postln; + ~bpm = 128; + ~kickFreq = 50; ~kickPitchAmt = 2.2; ~kickDecay = 0.48; ~kickClick = 0.1; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \drone; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [61,65,67,0,72,0,0,65,67,0,63,0,63,67,72,0,68,0,0,72,63,0,0,0,65,0,0,0,67,60,65,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,1]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\dubBass); + 42.wait; + + "[W11 0:42] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 63.wait; + + "[W11 1:45] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [60,70,70,0,60,67,72,0,0,68,0,67,60,0,67,0,0,67,67,70,0,72,0,72,63,63,67,72,72,68,0,72]; + ~acidAmp = 0.22; + ~reload.value; + 201.wait; + + "[W11 5:06] variations + mutations...".postln; + ~melodyNotes = [63,61,67,63,0,0,65,60,63,61,72,0,0,61,61,0,61,72,67,60,60,0,0,63,60,0,60,0,70,67,70,65]; + ~reload.value; + 21.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scalePhrygian, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W11 6:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W11 7:00] === fin DARK DUB ===".postln; +}).play; +"=== TRACK W11 : DARK DUB 7 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W12_dub_pulse.scd b/sound_algo/tracks/W_dub_techno/W12_dub_pulse.scd new file mode 100644 index 0000000..86383c9 --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W12_dub_pulse.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W12_dub_pulse.scd -- Album W "Dub Techno", track 12/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W12 : "DUB PULSE" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W12 0:00] intro dub_pulse...".postln; + ~bpm = 122; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.45; ~kickClick = 0.08; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \stab; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [72,0,0,0,70,70,0,0,70,0,68,0,65,0,0,0,62,0,0,0,72,0,0,0,67,0,0,0,60,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [1,0,1,0,0,0,1,0,0,1,1,0,1,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\bassline); + 30.wait; + + "[W12 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 45.wait; + + "[W12 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [70,67,62,0,72,63,0,70,0,72,0,67,63,62,0,62,60,62,72,70,0,0,72,68,0,0,0,0,63,62,0,0]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[W12 3:30] variations + mutations...".postln; + ~melodyNotes = [60,63,70,0,0,62,72,70,63,0,0,72,72,65,70,60,70,0,0,0,67,70,72,60,70,62,70,0,68,70,67,0]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W12 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W12 5:00] === fin DUB PULSE ===".postln; +}).play; +"=== TRACK W12 : DUB PULSE 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W13_stripped_dub.scd b/sound_algo/tracks/W_dub_techno/W13_stripped_dub.scd new file mode 100644 index 0000000..26d7b03 --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W13_stripped_dub.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W13_stripped_dub.scd -- Album W "Dub Techno", track 13/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W13 : "STRIPPED DUB" 4 minutes ---------------------- +// 0:00 intro -> 0:24 build -> 1:00 main -> 2:42 variations -> 3:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W13 0:00] intro stripped_dub...".postln; + ~bpm = 118; + ~kickFreq = 50; ~kickPitchAmt = 2.2; ~kickDecay = 0.48; ~kickClick = 0.1; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \warmPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [62,0,65,72,62,0,0,0,65,60,0,0,67,0,60,0,68,0,0,65,72,0,0,0,60,0,0,0,62,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 24.wait; + + "[W13 0:24] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 36.wait; + + "[W13 1:00] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [62,0,0,62,0,62,62,0,0,67,0,0,62,68,63,65,70,0,72,63,68,0,65,70,0,70,70,0,0,68,0,60]; + ~acidAmp = 0.22; + ~reload.value; + 102.wait; + + "[W13 2:42] variations + mutations...".postln; + ~melodyNotes = [0,62,68,63,70,0,0,60,0,0,0,0,0,67,0,68,67,0,63,0,65,0,72,0,0,0,65,0,68,63,67,67]; + ~reload.value; + 12.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W13 3:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W13 4:00] === fin STRIPPED DUB ===".postln; +}).play; +"=== TRACK W13 : STRIPPED DUB 4 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W14_echo_chamber.scd b/sound_algo/tracks/W_dub_techno/W14_echo_chamber.scd new file mode 100644 index 0000000..18223b4 --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W14_echo_chamber.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W14_echo_chamber.scd -- Album W "Dub Techno", track 14/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W14 : "ECHO CHAMBER" 5 minutes ---------------------- +// 0:00 intro -> 0:30 build -> 1:15 main -> 3:30 variations -> 4:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W14 0:00] intro echo_chamber...".postln; + ~bpm = 124; + ~kickFreq = 48; ~kickPitchAmt = 2.5; ~kickDecay = 0.45; ~kickClick = 0.08; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \rhodes; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [72,0,0,0,65,0,0,0,65,0,0,0,63,0,0,68,65,0,0,70,70,60,0,65,72,70,0,0,70,0,0,0]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dub) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\arp); + 30.wait; + + "[W14 0:30] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 45.wait; + + "[W14 1:15] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,0,0,0,63,63,72,62,0,60,0,0,62,70,68,60,62,68,72,63,70,67,0,72,68,60,67,68,0,63,0,72]; + ~acidAmp = 0.22; + ~reload.value; + 135.wait; + + "[W14 3:30] variations + mutations...".postln; + ~melodyNotes = [0,0,68,70,70,60,0,0,0,63,0,67,62,62,60,0,72,60,63,0,65,72,68,60,60,63,68,62,62,67,67,0]; + ~reload.value; + 15.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W14 4:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W14 5:00] === fin ECHO CHAMBER ===".postln; +}).play; +"=== TRACK W14 : ECHO CHAMBER 5 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/W15_dub_finale.scd b/sound_algo/tracks/W_dub_techno/W15_dub_finale.scd new file mode 100644 index 0000000..8c529cd --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/W15_dub_finale.scd @@ -0,0 +1,82 @@ +// ===================================================================== +// W15_dub_finale.scd -- Album W "Dub Techno", track 15/15 +// Track autonome -- Cmd+Entree sur le bloc (...) pour la lancer. +// ===================================================================== + +// --- TRACK W15 : "DUB FINALE" 6 minutes ---------------------- +// 0:00 intro -> 0:36 build -> 1:30 main -> 4:18 variations -> 5:30 outro +( +~track !? { ~track.stop }; +~track = Routine({ + ~trackBegin !? { ~trackBegin.value }; + "[W15 0:00] intro dub_finale...".postln; + ~bpm = 120; + ~kickFreq = 50; ~kickPitchAmt = 2.2; ~kickDecay = 0.48; ~kickClick = 0.1; + ~kickAmp = 0; ~hatAmp = 0; ~clapAmp = 0; ~snareAmp = 0; ~percAmp = 0; ~acidAmp = 0; + ~kickSteps = (0!16); ~hatSteps = (0!16); ~clapSteps = (0!16); + ~snareSteps = (0!16); ~percSteps = (0!16); + ~melodyInst = \warmPad; + ~melodyAttack = 0.4; ~melodyRelease = 1.5; ~melodyCutoff = 2200; + ~melodyAmp = 0.126; + ~melodyNotes = [67,0,0,65,65,0,0,0,70,0,0,0,70,60,0,60,67,0,0,63,67,0,0,0,65,0,63,0,70,0,0,72]; + ~acidNotes = [36,36,48,36,39,36,43,39,36,41,36,39,43,36,36,41]; + ~acidSlides = [0,0,0,0,1,0,1,0,0,1,1,0,0,1,1,0]; + TempoClock.default.tempo = ~bpm/60; + ~fxPreset !? { ~fxPreset.(\dream) }; + ~reload.value; + ~playActive !? { ~playActive.value } ?? { ~allSeqs.do { |k| Pdef(k).play } }; + ~enableHarmony.(\chord); + 36.wait; + + "[W15 0:36] build kick + hat...".postln; + ~kickSteps = [1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0]; ~kickAmp = 0.45; + ~hatSteps = [0,0,1,0, 0,0,1,0, 0,0,1,0, 0,0,1,0]; ~hatAmp = 0.06; + ~clapSteps = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; ~clapAmp = 0.0; + ~melodyAmp = 0.180; + ~reload.value; + 54.wait; + + "[W15 1:30] main groove + melody...".postln; + ~melodyAttack = 0.01; ~melodyRelease = 0.6; ~melodyCutoff = 3500; + ~melodyNotes = [0,63,72,67,0,68,0,67,62,70,0,0,0,0,0,68,0,0,72,68,72,0,63,60,60,0,0,72,0,62,72,0]; + ~acidAmp = 0.22; + ~reload.value; + 168.wait; + + "[W15 4:18] variations + mutations...".postln; + ~melodyNotes = [70,0,63,0,0,0,68,0,65,0,0,0,0,67,0,72,0,72,0,0,65,0,62,0,72,65,0,63,63,0,65,0]; + ~reload.value; + 18.do { |k| + if (0.20.coin) { + ~melodyNotes = ~genMelody.(0.55, [~scaleMinor, ~scaleMinorPent, ~scaleDorian].choose); + }; + if (0.20.coin) { + ~melodyNotes = ~mutate.(~melodyNotes, 0.2); + }; + if (0.15.coin) { + ~melodyCutoff = rrand(1500, 5500); + }; + if (0.10.coin) { + ~melodyNotes = ~octavate.(~melodyNotes, 0.25); + }; + ~reload.value; + 4.wait; + }; + + "[W15 5:30] outro -- fade...".postln; + 30.do { |k| + var x = 1 - ((k + 1) / 30); + ~melodyAmp = x * 0.180; + ~kickAmp = x * 0.45; + ~hatAmp = x * 0.06; + ~clapAmp = x * 0.0; + ~acidAmp = x * 0.22; + ~reload.value; + 1.wait; + }; + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, \acidSeq, \melodySeq, \harmonySeq].do { |k| Pdef(k).stop }; + ~fxPreset !? { ~fxPreset.(\dry) }; + "[W15 6:00] === fin DUB FINALE ===".postln; +}).play; +"=== TRACK W15 : DUB FINALE 6 min lancee ===".postln; +) diff --git a/sound_algo/tracks/W_dub_techno/_album.scd b/sound_algo/tracks/W_dub_techno/_album.scd new file mode 100644 index 0000000..88513d9 --- /dev/null +++ b/sound_algo/tracks/W_dub_techno/_album.scd @@ -0,0 +1,37 @@ +// ===================================================================== +// _album.scd -- Album W "Dub Techno" : 15 tracks orchestrateur +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live) +// 2. Cmd+Entree sur SETUP ALBUM W +// 3. ~playTrack.(\W, n) pour jouer la track n isolement +// ~playAlbum.(\W) pour enchainer 01 -> 15 +// ~stopAlbum.() pour interrompre l'album +// ===================================================================== + +( // --- SETUP ALBUM W --- +~albums = ~albums ? (); +~albums[\W] = ( + title: "Dub Techno", + folder: "tracks/W_dub_techno/", + tracks: [ + \W01_dub_techno, + \W02_basic_channel, + \W03_deep_chamber, + \W04_minimal_dub, + \W05_cavern_chord, + \W06_rhodes_dub, + \W07_berlin_underground, + \W08_ambient_dub, + \W09_rolling_sub, + \W10_space_dub, + \W11_dark_dub, + \W12_dub_pulse, + \W13_stripped_dub, + \W14_echo_chamber, + \W15_dub_finale, + ], + durations: [240, 300, 360, 420, 480, 360, 300, 360, 420, 480, 420, 300, 240, 300, 360], +); +"[album W] setup OK".postln; +) diff --git a/sound_algo/tracks/_index.scd b/sound_algo/tracks/_index.scd new file mode 100644 index 0000000..f8dc410 --- /dev/null +++ b/sound_algo/tracks/_index.scd @@ -0,0 +1,114 @@ +// ===================================================================== +// tracks/_index.scd -- Index global des 23 albums (A-W, 15 tracks/album) +// +// Charge tous les _album.scd pour declarer ~albums[\A..\W] + helpers +// ~playTrack / ~playAlbum / ~stopAlbum. +// +// USAGE : +// 1. Charger 00_load.scd (engine + palette + live + memory_guard) +// 2. Cmd+Entree sur SETUP INDEX (1 fois) -- charge les 23 _album.scd +// 3. ~playTrack.(\A, 7) joue track 7 de l'album A +// ~playAlbum.(\A) enchaine A01 -> A15 +// ~stopAlbum.() stop immediat +// ~listAlbums.() liste tous les albums + titres +// +// Total : 23 albums × 15 tracks = 345 tracks autonomes +// (+ 23 standalones X_<slug>.scd a la racine, anciens) +// ===================================================================== + +( // --- SETUP INDEX --- +~base = ~base ?? { "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/" }; + +// Charge chaque _album.scd (declare ~albums[\X]) +[ + \A_acid_journey, + \B_deep_to_hard, + \C_hypnotic_loop, + \D_wobble_drop, + \E_vietnam_hard, + \F_trance_uplifter, + \G_detroit_soulful, + \H_acid_trance, + \I_liquid_dnb, + \J_ambient_cinematic, + \K_tribal_ethno, + \L_future_garage, + \M_chiptune_madness, + \N_phonk, + \O_asian_cinematic, + \P_industrial, + \Q_neurofunk_dnb, + \R_synthwave, + \S_drone_doom, + \T_hardcore_gabber, + \U_vocal_trance, + \V_glitch_idm, + \W_dub_techno, +].do { |dir| + var path = ~base ++ "tracks/" ++ dir ++ "/_album.scd"; + if (File.exists(path)) { + // Les _album.scd ont un SETUP (1er bloc) + des raccourcis Cmd+Entree + // (blocs suivants). On ne charge QUE le 1er bloc via ~loadFirstBlock + // (sinon parser SC echoue sur "unexpected '(' expecting end of file"). + if (~loadFirstBlock.notNil) { + ~loadFirstBlock.(path); + } { + // Fallback : .load full file (echoue si multi-bloc) + path.load; + }; + } { + ("[index] !! manquant : " ++ path).postln; + }; +}; + +// Helper : liste tous les albums + leur titre + nombre de tracks +~listAlbums = { + "".postln; + "=== 23 ALBUMS DISPONIBLES ===".postln; + ~albums.keys.asArray.sort.do { |key| + var info = ~albums[key]; + var dur = info[\durations].sum; + var minTotal = (dur / 60).round(0.1); + (" " ++ key ++ " " ++ info[\title] + ++ " (" ++ info[\tracks].size ++ " tracks, ~" ++ minTotal ++ " min)").postln; + }; + "".postln; + " ~playTrack.(\\A, 7) ~playAlbum.(\\A) ~stopAlbum.()".postln; + " ~listTracks.(\\A) liste les 15 tracks d'un album".postln; +}; + +// Helper : liste les 15 tracks d'un album avec durees +~listTracks = { |album = \A| + var info = ~albums[album.asSymbol]; + if (info.isNil) { + ("!! album " ++ album ++ " inconnu").postln; + } { + ("=== " ++ album ++ " : " ++ info[\title] ++ " ===").postln; + info[\tracks].do { |slug, i| + var dur = info[\durations][i]; + var min = (dur / 60).round(0.1); + (" " ++ (i + 1).asString.padLeft(2) ++ " " + ++ slug ++ " (" ++ dur ++ "s = " ++ min ++ " min)").postln; + }; + }; +}; + +("[index] " ++ ~albums.size ++ " albums charges -- ~listAlbums.()").postln; +) + + +// ===================================================================== +// RACCOURCIS LIVE -- Cmd+Entree sur la ligne souhaitee +// ===================================================================== + +( ~listAlbums.(); ) // liste les 23 albums +( ~listTracks.(\A); ) // liste les 15 tracks de A +( ~listTracks.(\Q); ) // liste les 15 tracks de Q + +( ~playTrack.(\A, 1); ) // joue A01 +( ~playTrack.(\Q, 5); ) // joue Q05 +( ~playTrack.(\W, 10); ) // joue W10 + +( ~playAlbum.(\A); ) // album A en entier +( ~playAlbum.(\J); ) // album J ambient +( ~stopAlbum.(); ) // stop immediat diff --git a/sound_algo/web/README.md b/sound_algo/web/README.md new file mode 100644 index 0000000..6e64fdb --- /dev/null +++ b/sound_algo/web/README.md @@ -0,0 +1,113 @@ +# sound-algo-web + +Pont HTTP + WebSocket + OSC entre le navigateur et SuperCollider pour +piloter `sound_algo` à distance et générer des visuels Hydra synchronisés +au son. + +## Architecture + +``` + navigateur (control / hydra) + │ + │ WebSocket ws://localhost:3000/ws + ▼ + server.js (Node.js) + │ + │ OSC UDP → 127.0.0.1:57121 (vers SC) + │ OSC UDP ← 127.0.0.1:57122 (depuis SC) + ▼ + sclang (web_bridge.scd) +``` + +## Installation + +```bash +cd web +npm install +``` + +## Lancement + +**Terminal 1** (Node bridge) : + +```bash +cd web +npm start +``` + +Le bridge écoute sur `http://localhost:3000`. + +**Terminal 2** (SuperCollider) : + +1. Charger `01_live.scd` bloc `[0]` (engine + setupAll + wrappers). +2. Cmd+Entrée sur le bloc unique de `web_bridge.scd` (à la racine du projet). + +**Navigateur** : http://localhost:3000/ + +- `/control` : surface de contrôle (mixer, BPM, FX, tricks, kicks, patterns, step sequencer) +- `/hydra` : canvas Hydra synchronisé audio (BPM + amplitude RMS par voie) + +## Configuration + +Variables d'environnement (optionnelles) : + +| Variable | Défaut | Rôle | +|---|---|---| +| `HTTP_PORT` | `3000` | Port HTTP du serveur | +| `SC_HOST` | `127.0.0.1` | Adresse de SuperCollider | +| `SC_PORT_OUT` | `57121` | Port d'écoute de SC | +| `SC_PORT_IN` | `57122` | Port d'écoute du bridge | + +Exemple : + +```bash +HTTP_PORT=8080 SC_HOST=192.168.0.10 npm start +``` + +## Surface de contrôle + +| Section | Contrôles | +|---|---| +| Transport | BPM, master volume, fade out, teardown | +| Mixer | 8 voies (kick/hat/snare/clap/perc/acid/melody/harmony) avec vol/mute/solo | +| Kicks | 18 presets `~kk` (techno, gabber, dub, dubstep, ...) | +| Patterns | 13 kits + 15 genres rythmiques | +| Step sequencer | 5 voies × 16 pas, `Send to SC` envoie tous les patterns | +| FX par voie | Cutoff / Drive / RQ pour melody, acid, kick, hat | +| LFO | Cible (`~melodyCutoff`, `~acidCutoff`, ...) + rate + depth | +| Tricks | Drop, breakdown, buildup, glitch, stutter, freeze, tape stop, etc. | +| FX preset | 10 combos `~ff` (dub, space, trance, dubstep, ...) | + +## Hydra (visuels) + +Le canvas est synchronisé au son via 3 messages WebSocket : + +- `/sync/bpm` : nouveau BPM (sur changement) +- `/sync/beat` : un message par beat (incrémente `window.beat`) +- `/sync/amp` : amplitude par voie (`window.amp.kick`, `.hat`, etc.) + +Tous tes patches Hydra peuvent référencer `window.bpm`, `window.beat`, +`window.amp.kick`, etc. pour réagir au son. + +6 presets fournis : `default`, `oscWobble`, `kaleido`, `grid`, `warp`, `pixel`. +Cmd+Entrée (ou Ctrl+Enter) pour évaluer ton code dans l'éditeur. + +## Format des messages WebSocket + +```json +// Navigateur → server.js → SC +{ "address": "/control/setVol", "args": ["kick", 0.8] } +{ "address": "/control/bpm", "args": [128] } + +// SC → server.js → navigateur +{ "address": "/sync/bpm", "args": [128] } +{ "address": "/sync/amp", "args": ["kick", 0.5] } +``` + +Le serveur convertit automatiquement entre JSON (côté WebSocket) et OSC +typé (côté UDP) en mappant : `int → "i"`, `float → "f"`, `string → "s"`. + +## Arrêter + +- Bridge Node : `Ctrl+C` dans le terminal +- Bridge SC : `~webBridgeStop.value` diff --git a/sound_algo/web/package-lock.json b/sound_algo/web/package-lock.json new file mode 100644 index 0000000..8e96401 --- /dev/null +++ b/sound_algo/web/package-lock.json @@ -0,0 +1,1250 @@ +{ + "name": "sound-algo-web", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "sound-algo-web", + "version": "0.1.0", + "dependencies": { + "express": "^5.0.1", + "osc": "^2.4.5", + "ws": "^8.18.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@serialport/binding-mock": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@serialport/binding-mock/-/binding-mock-10.2.2.tgz", + "integrity": "sha512-HAFzGhk9OuFMpuor7aT5G1ChPgn5qSsklTFOTUX72Rl6p0xwcSVsRtG/xaGp6bxpN7fI9D/S8THLBWbBgS6ldw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@serialport/bindings-interface": "^1.2.1", + "debug": "^4.3.3" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@serialport/bindings-cpp": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@serialport/bindings-cpp/-/bindings-cpp-12.0.1.tgz", + "integrity": "sha512-r2XOwY2dDvbW7dKqSPIk2gzsr6M6Qpe9+/Ngs94fNaNlcTRCV02PfaoDmRgcubpNVVcLATlxSxPTIDw12dbKOg==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@serialport/bindings-interface": "1.2.2", + "@serialport/parser-readline": "11.0.0", + "debug": "4.3.4", + "node-addon-api": "7.0.0", + "node-gyp-build": "4.6.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-11.0.0.tgz", + "integrity": "sha512-aZLJhlRTjSmEwllLG7S4J8s8ctRAS0cbvCpO87smLvl3e4BgzbVgF6Z6zaJd3Aji2uSiYgfedCdNc4L6W+1E2g==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-11.0.0.tgz", + "integrity": "sha512-rRAivhRkT3YO28WjmmG4FQX6L+KMb5/ikhyylRfzWPw0nSXy97+u07peS9CbHqaNvJkMhH1locp2H36aGMOEIA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@serialport/parser-delimiter": "11.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@serialport/bindings-cpp/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT", + "optional": true + }, + "node_modules/@serialport/bindings-interface": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@serialport/bindings-interface/-/bindings-interface-1.2.2.tgz", + "integrity": "sha512-CJaUd5bLvtM9c5dmO9rPBHPXTa9R2UwpkJ0wdh9JCYcbrPWsKz+ErvR0hBLeo7NPeiFdjFO4sonRljiw4d2XiA==", + "license": "MIT", + "optional": true, + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/@serialport/parser-byte-length": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-byte-length/-/parser-byte-length-12.0.0.tgz", + "integrity": "sha512-0ei0txFAj+s6FTiCJFBJ1T2hpKkX8Md0Pu6dqMrYoirjPskDLJRgZGLqoy3/lnU1bkvHpnJO+9oJ3PB9v8rNlg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-cctalk": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-cctalk/-/parser-cctalk-12.0.0.tgz", + "integrity": "sha512-0PfLzO9t2X5ufKuBO34DQKLXrCCqS9xz2D0pfuaLNeTkyGUBv426zxoMf3rsMRodDOZNbFblu3Ae84MOQXjnZw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-delimiter": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-12.0.0.tgz", + "integrity": "sha512-gu26tVt5lQoybhorLTPsH2j2LnX3AOP2x/34+DUSTNaUTzu2fBXw+isVjQJpUBFWu6aeQRZw5bJol5X9Gxjblw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-inter-byte-timeout": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-12.0.0.tgz", + "integrity": "sha512-GnCh8K0NAESfhCuXAt+FfBRz1Cf9CzIgXfp7SdMgXwrtuUnCC/yuRTUFWRvuzhYKoAo1TL0hhUo77SFHUH1T/w==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-packet-length": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-packet-length/-/parser-packet-length-12.0.0.tgz", + "integrity": "sha512-p1hiCRqvGHHLCN/8ZiPUY/G0zrxd7gtZs251n+cfNTn+87rwcdUeu9Dps3Aadx30/sOGGFL6brIRGK4l/t7MuQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@serialport/parser-readline": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-12.0.0.tgz", + "integrity": "sha512-O7cywCWC8PiOMvo/gglEBfAkLjp/SENEML46BXDykfKP5mTPM46XMaX1L0waWU6DXJpBgjaL7+yX6VriVPbN4w==", + "license": "MIT", + "optional": true, + "dependencies": { + "@serialport/parser-delimiter": "12.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-ready": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-ready/-/parser-ready-12.0.0.tgz", + "integrity": "sha512-ygDwj3O4SDpZlbrRUraoXIoIqb8sM7aMKryGjYTIF0JRnKeB1ys8+wIp0RFMdFbO62YriUDextHB5Um5cKFSWg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-regex": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-regex/-/parser-regex-12.0.0.tgz", + "integrity": "sha512-dCAVh4P/pZrLcPv9NJ2mvPRBg64L5jXuiRxIlyxxdZGH4WubwXVXY/kBTihQmiAMPxbT3yshSX8f2+feqWsxqA==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-slip-encoder": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-slip-encoder/-/parser-slip-encoder-12.0.0.tgz", + "integrity": "sha512-0APxDGR9YvJXTRfY+uRGhzOhTpU5akSH183RUcwzN7QXh8/1jwFsFLCu0grmAUfi+fItCkR+Xr1TcNJLR13VNA==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/parser-spacepacket": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/parser-spacepacket/-/parser-spacepacket-12.0.0.tgz", + "integrity": "sha512-dozONxhPC/78pntuxpz/NOtVps8qIc/UZzdc/LuPvVsqCoJXiRxOg6ZtCP/W58iibJDKPZPAWPGYeZt9DJxI+Q==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/stream": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@serialport/stream/-/stream-12.0.0.tgz", + "integrity": "sha512-9On64rhzuqKdOQyiYLYv2lQOh3TZU/D3+IWCR5gk0alPel2nwpp4YwDEGiUBfrQZEdQ6xww0PWkzqth4wqwX3Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@serialport/bindings-interface": "1.2.2", + "debug": "4.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/@serialport/stream/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@serialport/stream/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT", + "optional": true + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "license": "Apache-2.0" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==", + "license": "MIT", + "optional": true + }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "license": "MIT", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/osc": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/osc/-/osc-2.4.5.tgz", + "integrity": "sha512-Nc4/qcl+vA/CMxiKS1xrYgzjfnyB3W94gZnrkn3eTzihlndbEml6+wj1YQNKBI4r+qrw3obCcEoU7SVH/OxpxA==", + "license": "(MIT OR GPL-2.0)", + "dependencies": { + "long": "4.0.0", + "slip": "1.0.2", + "wolfy87-eventemitter": "5.2.9", + "ws": "8.18.0" + }, + "optionalDependencies": { + "serialport": "12.0.0" + } + }, + "node_modules/osc/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serialport": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/serialport/-/serialport-12.0.0.tgz", + "integrity": "sha512-AmH3D9hHPFmnF/oq/rvigfiAouAKyK/TjnrkwZRYSFZxNggJxwvbAbfYrLeuvq7ktUdhuHdVdSjj852Z55R+uA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@serialport/binding-mock": "10.2.2", + "@serialport/bindings-cpp": "12.0.1", + "@serialport/parser-byte-length": "12.0.0", + "@serialport/parser-cctalk": "12.0.0", + "@serialport/parser-delimiter": "12.0.0", + "@serialport/parser-inter-byte-timeout": "12.0.0", + "@serialport/parser-packet-length": "12.0.0", + "@serialport/parser-readline": "12.0.0", + "@serialport/parser-ready": "12.0.0", + "@serialport/parser-regex": "12.0.0", + "@serialport/parser-slip-encoder": "12.0.0", + "@serialport/parser-spacepacket": "12.0.0", + "@serialport/stream": "12.0.0", + "debug": "4.3.4" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/serialport/donate" + } + }, + "node_modules/serialport/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/serialport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT", + "optional": true + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/slip/-/slip-1.0.2.tgz", + "integrity": "sha512-XrcHe3NAcyD3wO+O4I13RcS4/3AF+S9RvGNj9JhJeS02HyImwD2E3QWLrmn9hBfL+fB6yapagwxRkeyYzhk98g==", + "license": "(MIT OR GPL-2.0)" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wolfy87-eventemitter": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/wolfy87-eventemitter/-/wolfy87-eventemitter-5.2.9.tgz", + "integrity": "sha512-P+6vtWyuDw+MB01X7UeF8TaHBvbCovf4HPEMF/SV7BdDc1SMTiBy13SRD71lQh4ExFTG1d/WNzDGDCyOKSMblw==", + "license": "Unlicense" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + } +} diff --git a/sound_algo/web/package.json b/sound_algo/web/package.json new file mode 100644 index 0000000..74524cf --- /dev/null +++ b/sound_algo/web/package.json @@ -0,0 +1,20 @@ +{ + "name": "sound-algo-web", + "version": "0.1.0", + "private": true, + "description": "Web bridge pour sound_algo : surface de controle OSC + canvas Hydra synchronise audio", + "main": "server.js", + "type": "module", + "scripts": { + "start": "node server.js", + "dev": "node --watch server.js" + }, + "engines": { + "node": ">=20" + }, + "dependencies": { + "express": "^5.0.1", + "osc": "^2.4.5", + "ws": "^8.18.0" + } +} diff --git a/sound_algo/web/public/control/app.js b/sound_algo/web/public/control/app.js new file mode 100644 index 0000000..c9e6942 --- /dev/null +++ b/sound_algo/web/public/control/app.js @@ -0,0 +1,1595 @@ +// ===================================================================== +// sound_algo · live — surface de contrôle web +// Module unique vanilla JS, pas de framework, pas de build +// ===================================================================== + +// ---------------- Constantes (listes statiques) ---------------------- +const KICKS = ["techno","gabber","dub","dubstep","trance","hardstyle","amen","dnb","jungle","house","detroit","phonk","afro","garage","triphop","footwork","minimal","electro"]; +const PKITS = ["techno","dubstep","dnb","trap","house","hardstyle","jungle","phonk","industrial","hardcore","detroitDeep","lofiHipHop","tribalWorld"]; +const PGENRES = ["hardTechno","acidHouse","trance138","psyTrance","liquidDnB","neurofunk","jungle165","futureBass","deepHouse","techHouse","industrialV2","breakcore","footwork","idm","glitchHop"]; +const FF = ["dub","space","trance","dubstep","retro","industrial","dream","cosmic","drone","dry"]; +const VOICES = ["kick","hat","snare","clap","perc","acid","melody","harmony"]; +const SEQ_VOICES = ["kick","hat","snare","clap","perc","acid","melody","harmony"]; +const M_KINDS = ["short","long","xlong","epic"]; +// Listes hardcodées : utilisées en fallback si SC ne renvoie pas /sync/synthdef +// ou /sync/melody en moins de 5s (catalogues dynamiques). +const M_INSTS_FALLBACK = ["lead","warmPad","pluck","stab","saw3","fmBell","supersaw","rhodes","guzheng","koto","handpan"]; +const M_GENRES_FALLBACK = ["acid","house","techno","trance","dnb","ambient","cinematic","ethno"]; +const SD_CATS = ["drums","bass","lead","pad","world","master"]; +const SEND_BUSES = [["rev","Reverb"],["dly","Delay"],["chr","Chorus"],["phs","Phaser"],["flg","Flanger"],["crsh","Bitcrush"],["tape","Tape"],["shim","Shimmer"],["dist","Dist"]]; +const VCF_TYPES = ["moog","ladder","svf","rlpf","rhpf"]; +// Listes alignées avec SC : +// - VCF presets : live/live.scd:459-475 (~vcfPreset) +// - COMP presets : live/live.scd:1109-1122 (~compOn) +// - SAT modes : live/fx.scd:154 (~fx[\sat][\go]) -> tanh|softclip|fold +const VCF_PRESETS = ["acid","dub","deep","bright","dark","formantA","formantE","formantI","formantO","formantU"]; +const COMP_PRESETS = ["soft","glue","punch","pump"]; +const SAT_MODES = ["tanh","softclip","fold"]; +const TRACKS = "ABCDEFGHIJKLMNOPQRSTUVW".split(""); + +const TRICKS = [ + { osc: "/control/drop", label: "Drop", note: "" }, + { osc: "/control/breakdown", args: [8], label: "Breakdown", note: "8 bars" }, + { osc: "/control/buildup", args: [8], label: "Buildup", note: "8 bars" }, + { osc: "/control/glitch", args: [2], label: "Glitch", note: "2s" }, + { osc: "/control/stutter", args: [8, 1], label: "Stutter", note: "8/1s" }, + { osc: "/control/freeze", label: "Freeze", note: "" }, + { osc: "/control/tapeStop", args: [2], label: "Tape stop", note: "2s" }, + { osc: "/control/tapeReverse", args: [4], label: "Tape rev", note: "4s" }, + { osc: "/control/handsUp", label: "Hands up", note: "" }, + { osc: "/control/jumpCut", args: [0.5], label: "Jump cut", note: "0.5s" }, + { osc: "/control/bitCrushNow", args: [6, 6000, 1], label: "Bit crush", note: "6b 6k 1s" }, +]; + +const CHAINS = [ + { name: "intro" }, + { name: "drop" }, + { name: "breakdown" }, + { name: "buildup", input: { label: "bars", value: 8 } }, + { name: "techno", input: { label: "reps", value: 4 } }, + { name: "dnb", input: { label: "reps", value: 4 } }, + { name: "outroFade", input: { label: "dur s", value: 8 } }, + { name: "stop" }, +]; + +// ---------------- État global --------------------------------------- +const state = { + ws: null, + bpm: 128, + beatCount: 0, + amp: {}, // voice -> { current, target } + muted: new Set(), + soloed: new Set(), + playing: new Set(), + liveEdit: false, + selectedKick: null, + selectedFf: null, + jumpLetter: null, + sectionsByLetter: {}, // 'A' -> [slug, ...] + tapTimes: [], + albums: new Map(), // 'A' -> { title, trackCount, totalSec, slugs: [] } + lastTrack: null, // { letter, n } +}; +VOICES.forEach(v => state.amp[v] = { current: 0, target: 0 }); + +// ----- Catalogues dynamiques (mélodies + SynthDefs) ----------------- +const CAT_KEY = "sound_algo.catalog.v1"; +const catalog = { + // Mélodies : { genre -> [name1, name2, ...] } + melodies: {}, + // SynthDefs : { category -> [name1, name2, ...] } + synthdefs: {}, + // UI state mélodies + melGenre: null, + melLen: "all", + melSearch: "", + melPage: 0, + melActive: null, + // UI state synthdefs + sdCat: "drums", + sdSearch: "", + sdPage: 0, + sdActive: null, + // Reception flags pour fallback timer + gotMelody: false, + gotSynthdef: false, +}; +const CAT_PAGE_SIZE = 50; +try { + const saved = JSON.parse(localStorage.getItem(CAT_KEY) || "{}"); + if (typeof saved.melGenre === "string") catalog.melGenre = saved.melGenre; + if (typeof saved.melLen === "string") catalog.melLen = saved.melLen; + if (typeof saved.melSearch === "string") catalog.melSearch = saved.melSearch; + if (typeof saved.sdCat === "string") catalog.sdCat = saved.sdCat; + if (typeof saved.sdSearch === "string") catalog.sdSearch = saved.sdSearch; +} catch {} +function saveCatalog() { + try { + localStorage.setItem(CAT_KEY, JSON.stringify({ + melGenre: catalog.melGenre, + melLen: catalog.melLen, + melSearch: catalog.melSearch, + sdCat: catalog.sdCat, + sdSearch: catalog.sdSearch, + })); + } catch {} +} + +// État du séquenceur, persisté en localStorage +const SEQ_KEY = "sound_algo.seq.v2"; +const seqState = {}; +SEQ_VOICES.forEach(v => seqState[v] = new Array(16).fill(0)); +try { + const saved = JSON.parse(localStorage.getItem(SEQ_KEY) || "{}"); + SEQ_VOICES.forEach(v => { + if (Array.isArray(saved[v]) && saved[v].length === 16) seqState[v] = saved[v].map(x => x ? 1 : 0); + }); +} catch {} +function saveSeq() { + try { localStorage.setItem(SEQ_KEY, JSON.stringify(seqState)); } catch {} +} + +// État Acid (notes 16, accents 16, slides 16, params) +const ACID_KEY = "sound_algo.acid.v1"; +const ACID_DEFAULT_NOTES = [36,0,38,0,36,41,0,38, 36,43,0,46,38,0,48,0]; +const acidState = { + notes: ACID_DEFAULT_NOTES.slice(), + accents: new Array(16).fill(0), + slides: new Array(16).fill(0), + cutoff: 1500, rq: 0.25, drive: 2.0, amp: 1.0, +}; +try { + const saved = JSON.parse(localStorage.getItem(ACID_KEY) || "{}"); + if (Array.isArray(saved.notes) && saved.notes.length === 16) acidState.notes = saved.notes.map(x => x | 0); + if (Array.isArray(saved.accents) && saved.accents.length === 16) acidState.accents = saved.accents.map(x => x ? 1 : 0); + if (Array.isArray(saved.slides) && saved.slides.length === 16) acidState.slides = saved.slides.map(x => x ? 1 : 0); + if (typeof saved.cutoff === "number") acidState.cutoff = saved.cutoff; + if (typeof saved.rq === "number") acidState.rq = saved.rq; + if (typeof saved.drive === "number") acidState.drive = saved.drive; + if (typeof saved.amp === "number") acidState.amp = saved.amp; +} catch {} +function saveAcid() { + try { localStorage.setItem(ACID_KEY, JSON.stringify(acidState)); } catch {} +} + +// État Harmony (notes 32 + amp) +const HARMONY_KEY = "sound_algo.harmony.v1"; +const HARMONY_DEFAULT_NOTES = (() => { + const a = new Array(32).fill(0); + a[0] = 48; a[8] = 50; a[16] = 53; a[24] = 55; + return a; +})(); +const harmonyState = { + notes: HARMONY_DEFAULT_NOTES.slice(), + amp: 1.0, +}; +try { + const saved = JSON.parse(localStorage.getItem(HARMONY_KEY) || "{}"); + if (Array.isArray(saved.notes) && saved.notes.length === 32) harmonyState.notes = saved.notes.map(x => x | 0); + if (typeof saved.amp === "number") harmonyState.amp = saved.amp; +} catch {} +function saveHarmony() { + try { localStorage.setItem(HARMONY_KEY, JSON.stringify(harmonyState)); } catch {} +} + +const HARMONY_PRESETS = ["off","third","fifth","octave","power","shell","sus2","sus4"]; +const ACID_NOTE_CYCLE = [0, 36, 38, 41, 43, 46, 48, 51, 53]; + +// ---------------- WebSocket bridge ---------------------------------- +const wsDot = document.getElementById("wsDot"); +const wsLabel = document.getElementById("wsLabel"); + +function connect() { + const proto = location.protocol === "https:" ? "wss:" : "ws:"; + state.ws = new WebSocket(`${proto}//${location.host}/ws`); + + state.ws.addEventListener("open", () => { + wsDot.classList.add("online"); + wsDot.classList.remove("offline"); + wsLabel.textContent = "online"; + // Au démarrage : demander la liste des sections pour peupler le tab Jump + send("/control/listSections"); + // Et la liste des albums pour peupler le tab Album + send("/control/listAlbums"); + // Et l'état actuel du séquenceur (Steps tab) + send("/control/getSteps"); + // Catalogues dynamiques (1060 SynthDefs + 2898 mélodies) + send("/control/listSynthdefs"); + send("/control/listMelodies"); + // Fallback : si rien reçu en 5s, peuple avec listes hardcodées + setTimeout(() => { + if (!catalog.gotMelody) { + M_GENRES_FALLBACK.forEach(g => { catalog.melodies[g] = []; }); + renderMelGenres(); + } + if (!catalog.gotSynthdef) { + SD_CATS.forEach(c => { catalog.synthdefs[c] = M_INSTS_FALLBACK.slice(); }); + renderSdGrid(); + } + }, 5000); + }); + state.ws.addEventListener("close", () => { + wsDot.classList.remove("online"); + wsDot.classList.add("offline"); + wsLabel.textContent = "reconnecting…"; + setTimeout(connect, 1000); + }); + state.ws.addEventListener("message", (ev) => { + try { + const msg = JSON.parse(ev.data); + handleSync(msg.address, msg.args || []); + } catch {} + }); +} + +function send(address, ...args) { + if (!state.ws || state.ws.readyState !== WebSocket.OPEN) return; + state.ws.send(JSON.stringify({ address, args })); +} + +// Gestion des messages /sync/* depuis SC +function handleSync(addr, args) { + switch (addr) { + case "/sync/bpm": { + const v = args[0] | 0; + state.bpm = v; + document.getElementById("hudBpm").textContent = v; + const slider = document.getElementById("bpmSlider"); + const out = document.getElementById("outBpm"); + if (slider) { slider.value = v; setSliderFill(slider); } + if (out) out.textContent = v; + break; + } + case "/sync/beat": { + state.beatCount = (state.beatCount + 1) % 16; + flashBeat(); + updateStepMarker(); + const sc = document.getElementById("stepCounter"); + if (sc) sc.textContent = `step ${state.beatCount + 1}/16`; + break; + } + case "/sync/amp": { + const voice = args[0]; + const val = parseFloat(args[1]) || 0; + if (state.amp[voice]) state.amp[voice].target = val; + break; + } + case "/sync/sections": { + const letter = args[0]; + const slugs = args.slice(1); + if (typeof letter === "string") { + state.sectionsByLetter[letter] = slugs; + } + break; + } + case "/sync/album": { + const letter = args[0]; + const title = args[1]; + const trackCount = args[2] | 0; + const totalSec = args[3] | 0; + const slugs = args.slice(4).map(s => String(s)); + if (typeof letter === "string") { + state.albums.set(letter, { title: String(title), trackCount, totalSec, slugs }); + renderAlbumCard(letter); + } + break; + } + case "/sync/synthdef": { + const cat = String(args[0] || ""); + const names = args.slice(1).map(s => String(s)); + if (cat) { + catalog.synthdefs[cat] = names; + catalog.gotSynthdef = true; + renderSdGrid(); + flashSync("sdCounter"); + } + break; + } + case "/sync/melody": { + const genre = String(args[0] || ""); + const names = args.slice(1).map(s => String(s)); + if (genre) { + catalog.melodies[genre] = names; + catalog.gotMelody = true; + renderMelGenres(); + renderMelGrid(); + flashSync("melCounter"); + } + break; + } + case "/sync/steps": { + const voice = String(args[0]); + const steps = args.slice(1, 17).map(v => (v | 0) ? 1 : 0); + if (seqState[voice]) { + seqState[voice] = steps; + renderSeqVoice(voice); + saveSeq(); + } + break; + } + case "/sync/notes": { + const voice = String(args[0]); + const notes = args.slice(1).map(v => v | 0); + // Voie acid : notes MIDI brutes 16 cellules + if (voice === "acid" && notes.length >= 16) { + acidState.notes = notes.slice(0, 16); + renderAcidNotes(); + flashAcidGrid("acidNotesGrid"); + saveAcid(); + } + // Voie harmony : notes MIDI brutes 32 cellules + if (voice === "harmony" && notes.length >= 32) { + harmonyState.notes = notes.slice(0, 32); + renderHarmonyNotes(); + flashAcidGrid("harmonyNotesGrid"); + saveHarmony(); + } + // Sync générique du Steps tab (binaire 16) : downsample si > 16 + if (seqState[voice]) { + const bin = new Array(16).fill(0); + if (notes.length <= 16) { + for (let i = 0; i < Math.min(16, notes.length); i++) { + bin[i] = notes[i] > 0 ? 1 : 0; + } + } else { + // downsample 32 -> 16 (OR sur 2 valeurs consécutives) + for (let i = 0; i < 16; i++) { + const a = notes[i * 2] | 0; + const b = notes[i * 2 + 1] | 0; + bin[i] = (a > 0 || b > 0) ? 1 : 0; + } + } + seqState[voice] = bin; + renderSeqVoice(voice); + saveSeq(); + } + break; + } + case "/sync/acidAccents": { + const accents = args.slice(0, 16).map(v => (v | 0) ? 1 : 0); + if (accents.length === 16) { + acidState.accents = accents; + renderAcidAccents(); + flashAcidGrid("acidAccentsGrid"); + saveAcid(); + } + break; + } + case "/sync/acidSlides": { + const slides = args.slice(0, 16).map(v => (v | 0) ? 1 : 0); + if (slides.length === 16) { + acidState.slides = slides; + renderAcidSlides(); + flashAcidGrid("acidSlidesGrid"); + saveAcid(); + } + break; + } + case "/sync/acidParams": { + const cutoff = parseFloat(args[0]); + const rq = parseFloat(args[1]); + const drive = parseFloat(args[2]); + const amp = parseFloat(args[3]); + if (!isNaN(cutoff)) { acidState.cutoff = cutoff; setAcidSlider("acidCut", cutoff, "outAcidCut", 0); } + if (!isNaN(rq)) { acidState.rq = rq; setAcidSlider("acidRq", rq, "outAcidRq", 2); } + if (!isNaN(drive)) { acidState.drive = drive; setAcidSlider("acidDrive", drive, "outAcidDrive", 2); } + if (!isNaN(amp)) { acidState.amp = amp; setAcidSlider("acidAmp", amp, "outAcidAmp", 2); } + saveAcid(); + break; + } + case "/sync/harmonyAmp": { + const amp = parseFloat(args[0]); + if (!isNaN(amp)) { + harmonyState.amp = amp; + setAcidSlider("harmonyAmp", amp, "outHarmonyAmp", 2); + saveHarmony(); + } + break; + } + case "/sync/pong": { + const ts = args[0]; + const out = document.getElementById("pingResult"); + if (out) out.textContent = `pong ${ts}`; + break; + } + default: + break; + } +} + +function flashBeat() { + const el = document.getElementById("beatPulse"); + if (!el) return; + el.classList.add("flash"); + setTimeout(() => el.classList.remove("flash"), 100); +} + +connect(); + +// ---------------- Tabs (navigation) --------------------------------- +const tabsEl = document.getElementById("tabs"); +const underline = document.getElementById("tabUnderline"); + +function activateTab(target) { + document.querySelectorAll(".tab").forEach(t => t.classList.toggle("active", t.dataset.target === target)); + document.querySelectorAll(".tabpane").forEach(p => p.classList.toggle("active", p.dataset.tab === target)); + positionUnderline(); +} +function positionUnderline() { + const active = tabsEl.querySelector(".tab.active"); + if (!active || !underline) return; + const r = active.getBoundingClientRect(); + const pr = tabsEl.getBoundingClientRect(); + underline.style.left = (active.offsetLeft) + "px"; + underline.style.width = r.width + "px"; +} +tabsEl.querySelectorAll(".tab").forEach(t => { + t.addEventListener("click", () => activateTab(t.dataset.target)); +}); +window.addEventListener("resize", positionUnderline); +requestAnimationFrame(positionUnderline); + +// ---------------- Slider fill helper -------------------------------- +function setSliderFill(el) { + const min = parseFloat(el.min) || 0; + const max = parseFloat(el.max) || 1; + const v = parseFloat(el.value); + const pct = ((v - min) / (max - min)) * 100; + el.style.setProperty("--fill", pct + "%"); +} +function bindSlider(el, onInput) { + setSliderFill(el); + el.addEventListener("input", () => { + setSliderFill(el); + onInput(parseFloat(el.value)); + }); +} + +// ---------------- TRANSPORT ----------------------------------------- +const bpmSlider = document.getElementById("bpmSlider"); +const outBpm = document.getElementById("outBpm"); +let bpmThrottle = null; +bindSlider(bpmSlider, (v) => { + outBpm.textContent = v.toFixed(0); + document.getElementById("hudBpm").textContent = v.toFixed(0); + if (bpmThrottle) return; + bpmThrottle = setTimeout(() => { + send("/control/bpm", parseInt(bpmSlider.value, 10)); + bpmThrottle = null; + }, 100); +}); + +const masterSlider = document.getElementById("masterSlider"); +const outMaster = document.getElementById("outMaster"); +bindSlider(masterSlider, (v) => { + outMaster.textContent = v.toFixed(2); + send("/control/masterVol", v); +}); + +const fadeSlider = document.getElementById("fadeSlider"); +const outFade = document.getElementById("outFade"); +bindSlider(fadeSlider, (v) => { outFade.textContent = v.toFixed(0); }); + +document.getElementById("btnFadeOut").addEventListener("click", () => { + const dur = parseFloat(fadeSlider.value); + if (!confirm(`Fade out ${dur}s ?`)) return; + send("/control/masterFadeOut", dur); +}); +document.getElementById("btnTeardown").addEventListener("click", () => { + if (!confirm("TEARDOWN — couper toute la session ?")) return; + send("/control/teardown"); +}); +document.getElementById("btnPing").addEventListener("click", () => { + document.getElementById("pingResult").textContent = "…"; + send("/control/ping"); +}); +document.getElementById("btnTap").addEventListener("click", () => { + const now = performance.now(); + state.tapTimes.push(now); + state.tapTimes = state.tapTimes.filter(t => now - t < 3000); + if (state.tapTimes.length >= 2) { + const intervals = []; + for (let i = 1; i < state.tapTimes.length; i++) intervals.push(state.tapTimes[i] - state.tapTimes[i-1]); + const avg = intervals.reduce((a,b)=>a+b, 0) / intervals.length; + const bpm = Math.round(60000 / avg); + send("/control/bpm", bpm); + bpmSlider.value = bpm; + setSliderFill(bpmSlider); + outBpm.textContent = bpm; + document.getElementById("hudBpm").textContent = bpm; + } + send("/control/tap"); +}); +document.getElementById("btnPlayAll").addEventListener("click", () => send("/control/playAll")); +document.getElementById("btnStopAll").addEventListener("click", () => send("/control/stopAll")); + +// ---------------- MIXER --------------------------------------------- +const mixerGrid = document.getElementById("mixerGrid"); +// Voies pour lesquelles SC supporte cutoff / drive / RQ par voie +// (cf live/fx.scd:113-145 -- ~fxCut/Rq/Drive n'acceptent que \mel et \acid). +const FX_PER_VOICE_SUPPORTED = new Set(["melody", "acid"]); + +VOICES.forEach((v) => { + const card = document.createElement("div"); + card.className = "mixer-voice"; + card.dataset.voice = v; + const fxBlock = FX_PER_VOICE_SUPPORTED.has(v) ? ` + <div class="voice-fx"> + <label class="ctrl mini"> + <span class="ctrl-row"><span>Cut</span><output class="mono mvfx-out" data-fx="Cut">5000</output></span> + <input type="range" min="50" max="12000" step="10" value="5000" data-mvfx="Cut" /> + </label> + <label class="ctrl mini"> + <span class="ctrl-row"><span>Drv</span><output class="mono mvfx-out" data-fx="Drive">1.00</output></span> + <input type="range" min="0.5" max="5" step="0.05" value="1" data-mvfx="Drive" /> + </label> + <label class="ctrl mini"> + <span class="ctrl-row"><span>RQ</span><output class="mono mvfx-out" data-fx="Rq">0.50</output></span> + <input type="range" min="0.05" max="1.5" step="0.01" value="0.5" data-mvfx="Rq" /> + </label> + </div>` : ""; + card.innerHTML = ` + <div class="playing-dot"></div> + <div class="name">${v}</div> + <div class="mixer-body"> + <div class="vu"><div class="vu-fill" data-vu="${v}"></div></div> + <div class="vfader"><input type="range" min="0" max="1.5" step="0.01" value="1" /></div> + </div> + <div class="vol-display">1.00</div> + <div class="actions"> + <button type="button" class="mute">M</button> + <button type="button" class="solo">S</button> + </div> + <div class="voice-pdef"> + <button type="button" class="pdef-play">▶</button> + <button type="button" class="pdef-stop">■</button> + </div> + ${fxBlock} + `; + const slider = card.querySelector('input[type="range"]'); + const display = card.querySelector('.vol-display'); + setSliderFill(slider); + slider.addEventListener("input", () => { + setSliderFill(slider); + const val = parseFloat(slider.value); + display.textContent = val.toFixed(2); + send("/control/setVol", v, val); + }); + card.querySelector('.mute').addEventListener("click", () => { + if (state.muted.has(v)) { + state.muted.delete(v); + card.querySelector('.mute').classList.remove("active"); + send("/control/unmute", v); + } else { + state.muted.add(v); + card.querySelector('.mute').classList.add("active"); + send("/control/mute", v); + } + }); + card.querySelector('.solo').addEventListener("click", () => { + if (state.soloed.has(v)) { + state.soloed.delete(v); + card.querySelector('.solo').classList.remove("active"); + send("/control/unsolo"); + } else { + mixerGrid.querySelectorAll('.solo.active').forEach(b => b.classList.remove("active")); + state.soloed.clear(); + state.soloed.add(v); + card.querySelector('.solo').classList.add("active"); + send("/control/solo", v); + } + }); + card.querySelector('.pdef-play').addEventListener("click", () => { + send("/control/playPdef", v + "Seq"); + state.playing.add(v); + card.classList.add("playing"); + }); + card.querySelector('.pdef-stop').addEventListener("click", () => { + send("/control/stopPdef", v + "Seq"); + state.playing.delete(v); + card.classList.remove("playing"); + }); + // FX par voie (Cut / Drive / RQ) directement dans la carte mixer + card.querySelectorAll('input[data-mvfx]').forEach(el => { + setSliderFill(el); + const fx = el.dataset.mvfx; + const out = card.querySelector(`output.mvfx-out[data-fx="${fx}"]`); + el.addEventListener("input", () => { + setSliderFill(el); + const val = parseFloat(el.value); + if (out) out.textContent = val < 10 ? val.toFixed(2) : val.toFixed(0); + send(`/control/fx${fx}`, v, val); + }); + }); + mixerGrid.appendChild(card); +}); + +// VU-mètres : smoothing + redraw 30fps +function vuLoop() { + VOICES.forEach(v => { + const a = state.amp[v]; + if (!a) return; + a.current = a.current * 0.7 + a.target * 0.3; + // Décroissance naturelle si plus de message + a.target *= 0.92; + const fill = document.querySelector(`.vu-fill[data-vu="${v}"]`); + if (fill) { + const pct = Math.min(100, a.current * 100); + fill.style.height = pct + "%"; + } + }); + setTimeout(() => requestAnimationFrame(vuLoop), 33); +} +requestAnimationFrame(vuLoop); + +// ---------------- STEPS --------------------------------------------- +const seqGrid = document.getElementById("seqGrid"); +SEQ_VOICES.forEach((v) => { + const lbl = document.createElement("div"); + lbl.className = "seq-label"; + lbl.textContent = v; + lbl.dataset.voice = v; + seqGrid.appendChild(lbl); + for (let i = 0; i < 16; i++) { + const cell = document.createElement("div"); + cell.className = "seq-cell"; + if (i % 4 === 0) cell.classList.add("divider"); + if (seqState[v][i]) cell.classList.add("on"); + cell.dataset.voice = v; + cell.dataset.step = i; + cell.addEventListener("click", () => { + seqState[v][i] = seqState[v][i] ? 0 : 1; + cell.classList.toggle("on", !!seqState[v][i]); + saveSeq(); + if (state.liveEdit) send(`/control/${v}Steps`, ...seqState[v]); + }); + seqGrid.appendChild(cell); + } +}); + +function renderSeqVoice(voice) { + if (!seqGrid || !seqState[voice]) return; + const cells = seqGrid.querySelectorAll(`.seq-cell[data-voice="${voice}"]`); + cells.forEach((cell, i) => { + cell.classList.toggle("on", !!seqState[voice][i]); + }); + const label = seqGrid.querySelector(`.seq-label[data-voice="${voice}"]`); + if (label) { + label.classList.add("synced"); + setTimeout(() => label.classList.remove("synced"), 600); + } +} + +function updateStepMarker() { + const cur = state.beatCount; + document.querySelectorAll(".seq-cell.beat-marker").forEach(c => c.classList.remove("beat-marker")); + document.querySelectorAll(`.seq-cell[data-step="${cur}"]`).forEach(c => c.classList.add("beat-marker")); +} + +document.getElementById("liveEdit").addEventListener("change", (e) => { + state.liveEdit = e.target.checked; +}); +document.querySelectorAll('[data-seq-action]').forEach(b => { + b.addEventListener("click", () => { + const a = b.dataset.seqAction; + if (a === "clear") { + SEQ_VOICES.forEach(v => seqState[v].fill(0)); + document.querySelectorAll('.seq-cell').forEach(c => c.classList.remove("on")); + saveSeq(); + if (state.liveEdit) SEQ_VOICES.forEach(v => send(`/control/${v}Steps`, ...seqState[v])); + } + if (a === "random") { + SEQ_VOICES.forEach(v => { + seqState[v] = Array.from({length: 16}, () => Math.random() < 0.35 ? 1 : 0); + document.querySelectorAll(`.seq-cell[data-voice="${v}"]`).forEach((c, i) => { + c.classList.toggle("on", !!seqState[v][i]); + }); + }); + saveSeq(); + if (state.liveEdit) SEQ_VOICES.forEach(v => send(`/control/${v}Steps`, ...seqState[v])); + } + if (a === "send") { + SEQ_VOICES.forEach(v => send(`/control/${v}Steps`, ...seqState[v])); + } + }); +}); + +// ---------------- KICKS / PATTERNS / FF ----------------------------- +function makeChips(host, items, oscAddr, opts = {}) { + const el = document.getElementById(host); + items.forEach(k => { + const b = document.createElement("button"); + b.className = "chip"; + b.textContent = k; + b.addEventListener("click", () => { + if (opts.exclusive) { + el.querySelectorAll(".chip.active").forEach(c => c.classList.remove("active")); + b.classList.add("active"); + } + send(oscAddr, k); + }); + el.appendChild(b); + }); +} +makeChips("kicksChips", KICKS, "/control/kk", { exclusive: true }); +makeChips("pkitChips", PKITS, "/control/pKit"); +makeChips("pgenreChips", PGENRES, "/control/pGenre"); +makeChips("ffChips", FF, "/control/ff", { exclusive: true }); + +// ---------------- FX par voie --------------------------------------- +const FX_VOICES = [ + { name: "melody", cutoff: 5000, drive: 1.0, rq: 0.4 }, + { name: "acid", cutoff: 1500, drive: 2.0, rq: 0.25 }, + { name: "kick", cutoff: 5000, drive: 1.0, rq: 0.5 }, + { name: "hat", cutoff: 8000, drive: 1.0, rq: 0.5 }, +]; +const fxGrid = document.getElementById("fxGrid"); +FX_VOICES.forEach(cfg => { + const card = document.createElement("div"); + card.className = "fx-voice"; + card.innerHTML = ` + <div class="name">${cfg.name}</div> + <label class="ctrl"> + <span class="ctrl-row"><span>Cutoff</span><output class="mono">${cfg.cutoff}</output></span> + <input type="range" min="50" max="12000" step="10" value="${cfg.cutoff}" data-fx="Cut" data-voice="${cfg.name}" /> + </label> + <label class="ctrl"> + <span class="ctrl-row"><span>Drive</span><output class="mono">${cfg.drive.toFixed(2)}</output></span> + <input type="range" min="0.5" max="5" step="0.05" value="${cfg.drive}" data-fx="Drive" data-voice="${cfg.name}" /> + </label> + <label class="ctrl"> + <span class="ctrl-row"><span>RQ</span><output class="mono">${cfg.rq.toFixed(2)}</output></span> + <input type="range" min="0.05" max="1.5" step="0.01" value="${cfg.rq}" data-fx="Rq" data-voice="${cfg.name}" /> + </label> + `; + card.querySelectorAll('input[type="range"]').forEach(el => { + setSliderFill(el); + const out = el.parentElement.querySelector("output"); + el.addEventListener("input", () => { + setSliderFill(el); + const v = parseFloat(el.value); + out.textContent = v < 10 ? v.toFixed(2) : v.toFixed(0); + send(`/control/fx${el.dataset.fx}`, el.dataset.voice, v); + }); + }); + fxGrid.appendChild(card); +}); + +// VCF master +VCF_TYPES.forEach(t => { + const o = document.createElement("option"); + o.value = t; o.textContent = t; + document.getElementById("vcfType").appendChild(o); +}); +VCF_PRESETS.forEach(p => { + const o = document.createElement("option"); + o.value = p; o.textContent = p; + document.getElementById("vcfPreset").appendChild(o); +}); +const vcfFreq = document.getElementById("vcfFreq"); +const vcfQ = document.getElementById("vcfQ"); +const outVcfFreq = document.getElementById("outVcfFreq"); +const outVcfQ = document.getElementById("outVcfQ"); +bindSlider(vcfFreq, (v) => { + outVcfFreq.textContent = v.toFixed(0); + send("/control/vcfFreq", v); +}); +bindSlider(vcfQ, (v) => { + outVcfQ.textContent = v.toFixed(2); + send("/control/vcfQ", v); +}); +document.getElementById("btnVcfOn").addEventListener("click", () => { + const t = document.getElementById("vcfType").value; + send("/control/vcfOn", t, parseFloat(vcfFreq.value), parseFloat(vcfQ.value)); +}); +document.getElementById("btnVcfOff").addEventListener("click", () => send("/control/vcfOff")); +document.getElementById("vcfPreset").addEventListener("change", (e) => { + if (e.target.value) send("/control/vcfPreset", e.target.value); +}); +document.getElementById("btnVcfSweep").addEventListener("click", () => { + const f = parseFloat(document.getElementById("sweepFrom").value); + const t = parseFloat(document.getElementById("sweepTo").value); + const d = parseFloat(document.getElementById("sweepDur").value); + send("/control/vcfSweep", f, t, d); +}); + +// Comp / Sat +const compChips = document.getElementById("compChips"); +COMP_PRESETS.forEach(p => { + const b = document.createElement("button"); + b.className = "chip"; b.textContent = p; + b.addEventListener("click", () => { + compChips.querySelectorAll(".chip.active").forEach(c => c.classList.remove("active")); + b.classList.add("active"); + send("/control/fxComp", p); + }); + compChips.appendChild(b); +}); +SAT_MODES.forEach(m => { + const o = document.createElement("option"); + o.value = m; o.textContent = m; + document.getElementById("satMode").appendChild(o); +}); +const satAmount = document.getElementById("satAmount"); +const outSat = document.getElementById("outSat"); +bindSlider(satAmount, (v) => { outSat.textContent = v.toFixed(2); }); +document.getElementById("btnSat").addEventListener("click", () => { + const m = document.getElementById("satMode").value; + const a = parseFloat(satAmount.value); + send("/control/fxSat", m, a); +}); + +// ---------------- SENDS --------------------------------------------- +const sendsGrid = document.getElementById("sendsGrid"); +SEND_BUSES.forEach(([key, label]) => { + const cell = document.createElement("div"); + cell.className = "send-cell"; + cell.innerHTML = ` + <div class="name">${label} <span class="key">${key}</span></div> + <input type="range" min="0" max="1" step="0.01" value="0" /> + <div class="ctrl-row"><span class="muted">amount</span><output class="mono">0.00</output></div> + `; + const slider = cell.querySelector("input"); + const out = cell.querySelector("output"); + setSliderFill(slider); + slider.addEventListener("input", () => { + setSliderFill(slider); + const v = parseFloat(slider.value); + out.textContent = v.toFixed(2); + send("/control/sendFx", key, v); + }); + sendsGrid.appendChild(cell); +}); + +// ---------------- LFO ----------------------------------------------- +const lfoTarget = document.getElementById("lfoTarget"); +const lfoRate = document.getElementById("lfoRate"); +const lfoDepth = document.getElementById("lfoDepth"); +const outLfoRate = document.getElementById("outLfoRate"); +const outLfoDepth = document.getElementById("outLfoDepth"); +bindSlider(lfoRate, (v) => outLfoRate.textContent = v.toFixed(2)); +bindSlider(lfoDepth, (v) => outLfoDepth.textContent = v.toFixed(0)); +document.getElementById("btnLfoOn").addEventListener("click", () => { + send("/control/lfoTo", lfoTarget.value, parseFloat(lfoRate.value), parseFloat(lfoDepth.value)); +}); +document.getElementById("btnLfoOff").addEventListener("click", () => { + send("/control/lfoStop", lfoTarget.value); +}); +document.getElementById("btnLfoStopAll").addEventListener("click", () => send("/control/lfoStopAll")); +document.querySelectorAll('#lfoPresets .chip').forEach(c => { + c.addEventListener("click", () => { lfoTarget.value = c.dataset.lfo; }); +}); + +// ---------------- TRICKS -------------------------------------------- +const tricksGrid = document.getElementById("tricksGrid"); +TRICKS.forEach(t => { + const b = document.createElement("button"); + b.className = "btn"; + b.innerHTML = `${t.label}${t.note ? `<small>${t.note}</small>` : ""}`; + b.addEventListener("click", () => send(t.osc, ...(t.args || []))); + tricksGrid.appendChild(b); +}); + +// ---------------- MELODIES (rétrocompat sliders + ~mApply) ---------- +const mApplyGrid = document.getElementById("mApplyGrid"); +M_KINDS.forEach(kind => { + const lbl = document.createElement("div"); + lbl.className = "row-label"; + lbl.textContent = kind; + mApplyGrid.appendChild(lbl); + for (let n = 1; n <= 8; n++) { + const b = document.createElement("button"); + b.className = "btn"; + b.textContent = n; + b.addEventListener("click", () => send("/control/mApply", kind, n)); + mApplyGrid.appendChild(b); + } +}); + +const mAmp = document.getElementById("mAmp"); +const mCut = document.getElementById("mCut"); +const mDrive = document.getElementById("mDrive"); +bindSlider(mAmp, v => { document.getElementById("outMAmp").textContent = v.toFixed(2); send("/control/mAmp", v); }); +bindSlider(mCut, v => { document.getElementById("outMCut").textContent = v.toFixed(0); send("/control/mCut", v); }); +bindSlider(mDrive, v => { document.getElementById("outMDrive").textContent = v.toFixed(2); send("/control/mDrive", v); }); + +document.getElementById("btnMNx").addEventListener("click", () => send("/control/mNx")); +document.getElementById("btnMPv").addEventListener("click", () => send("/control/mPv")); +document.getElementById("btnMOff").addEventListener("click", () => send("/control/mOff")); + +// Genre wrapper rétrocompat (~mGen) : peuplé dynamiquement depuis melodies keys +function renderMGenChips() { + const root = document.getElementById("mGenChips"); + if (!root) return; + root.innerHTML = ""; + const keys = Object.keys(catalog.melodies).sort(); + const genres = keys.length ? keys : M_GENRES_FALLBACK; + genres.forEach(g => { + const b = document.createElement("button"); + b.className = "chip"; b.textContent = g; + b.addEventListener("click", () => { + root.querySelectorAll(".chip.active").forEach(c => c.classList.remove("active")); + b.classList.add("active"); + send("/control/mGen", g); + }); + root.appendChild(b); + }); +} + +// ---------------- CATALOGUE MÉLODIES (dynamique) -------------------- +// Préfixes nommage : m=short, ml=long, mxl=xlong, mepic=epic. +function melLenOfName(name) { + if (name.startsWith("mepic")) return "epic"; + if (name.startsWith("mxl")) return "xlong"; + if (name.startsWith("ml")) return "long"; + if (name.startsWith("m")) return "short"; + return "short"; +} + +function melFiltered() { + const genre = catalog.melGenre; + if (!genre) return []; + const all = catalog.melodies[genre] || []; + const len = catalog.melLen; + const q = catalog.melSearch.trim().toLowerCase(); + return all.filter(name => { + if (len !== "all" && melLenOfName(name) !== len) return false; + if (q && !name.toLowerCase().includes(q)) return false; + return true; + }); +} + +function renderMelGenres() { + const root = document.getElementById("melGenreChips"); + if (!root) return; + const keys = Object.keys(catalog.melodies).sort(); + if (!catalog.melGenre || !keys.includes(catalog.melGenre)) { + catalog.melGenre = keys[0] || null; + } + root.innerHTML = ""; + keys.forEach(g => { + const b = document.createElement("button"); + b.className = "chip" + (g === catalog.melGenre ? " active" : ""); + b.textContent = `${g} (${(catalog.melodies[g] || []).length})`; + b.addEventListener("click", () => { + catalog.melGenre = g; + catalog.melPage = 0; + saveCatalog(); + renderMelGenres(); + renderMelGrid(); + }); + root.appendChild(b); + }); + renderMGenChips(); +} + +function renderMelGrid() { + const grid = document.getElementById("melGrid"); + const counter = document.getElementById("melCounter"); + const pageLbl = document.getElementById("melPage"); + const activeLbl = document.getElementById("melActive"); + if (!grid) return; + const list = melFiltered(); + const totalAll = catalog.melGenre ? (catalog.melodies[catalog.melGenre] || []).length : 0; + const pages = Math.max(1, Math.ceil(list.length / CAT_PAGE_SIZE)); + if (catalog.melPage >= pages) catalog.melPage = pages - 1; + if (catalog.melPage < 0) catalog.melPage = 0; + const start = catalog.melPage * CAT_PAGE_SIZE; + const slice = list.slice(start, start + CAT_PAGE_SIZE); + grid.innerHTML = ""; + slice.forEach(name => { + const cell = document.createElement("button"); + cell.className = "cat-cell mono" + (name === catalog.melActive ? " active" : ""); + cell.textContent = name; + cell.title = name; + cell.addEventListener("click", () => { + catalog.melActive = name; + send("/control/setMelody", name); + renderMelGrid(); + }); + grid.appendChild(cell); + }); + if (counter) counter.textContent = `${list.length} / ${totalAll}`; + if (pageLbl) pageLbl.textContent = `${catalog.melPage + 1} / ${pages}`; + if (activeLbl) activeLbl.textContent = catalog.melActive ? `▶ ${catalog.melActive}` : "— aucune active —"; +} + +// Branchement UI Mélodies +(function bindMelodyCatalog() { + const search = document.getElementById("melSearch"); + if (search) { + search.value = catalog.melSearch; + search.addEventListener("input", () => { + catalog.melSearch = search.value; + catalog.melPage = 0; + saveCatalog(); + renderMelGrid(); + }); + } + document.querySelectorAll("#melLenChips .chip").forEach(b => { + if (b.dataset.len === catalog.melLen) { + document.querySelectorAll("#melLenChips .chip.active").forEach(c => c.classList.remove("active")); + b.classList.add("active"); + } + b.addEventListener("click", () => { + document.querySelectorAll("#melLenChips .chip.active").forEach(c => c.classList.remove("active")); + b.classList.add("active"); + catalog.melLen = b.dataset.len; + catalog.melPage = 0; + saveCatalog(); + renderMelGrid(); + }); + }); + const prev = document.getElementById("melPrev"); + const next = document.getElementById("melNext"); + if (prev) prev.addEventListener("click", () => { catalog.melPage--; renderMelGrid(); }); + if (next) next.addEventListener("click", () => { catalog.melPage++; renderMelGrid(); }); + const refresh = document.getElementById("btnMelRefresh"); + if (refresh) refresh.addEventListener("click", () => send("/control/listMelodies")); +})(); + +// ---------------- CATALOGUE SYNTHDEFS (dynamique) ------------------- +function sdFiltered() { + const cat = catalog.sdCat; + const all = catalog.synthdefs[cat] || []; + const q = catalog.sdSearch.trim().toLowerCase(); + return q ? all.filter(n => n.toLowerCase().includes(q)) : all; +} + +function renderSdGrid() { + const grid = document.getElementById("sdGrid"); + const counter = document.getElementById("sdCounter"); + const pageLbl = document.getElementById("sdPage"); + const activeLbl = document.getElementById("sdActive"); + if (!grid) return; + const list = sdFiltered(); + const totalAll = (catalog.synthdefs[catalog.sdCat] || []).length; + const pages = Math.max(1, Math.ceil(list.length / CAT_PAGE_SIZE)); + if (catalog.sdPage >= pages) catalog.sdPage = pages - 1; + if (catalog.sdPage < 0) catalog.sdPage = 0; + const start = catalog.sdPage * CAT_PAGE_SIZE; + const slice = list.slice(start, start + CAT_PAGE_SIZE); + grid.innerHTML = ""; + slice.forEach(name => { + const cell = document.createElement("button"); + cell.className = `cat-cell mono cat-${catalog.sdCat}` + (name === catalog.sdActive ? " active" : ""); + cell.textContent = name; + cell.title = `${catalog.sdCat} · ${name}`; + cell.addEventListener("click", () => { + catalog.sdActive = name; + send("/control/mInst", name); + renderSdGrid(); + }); + grid.appendChild(cell); + }); + if (counter) counter.textContent = `${list.length} / ${totalAll}`; + if (pageLbl) pageLbl.textContent = `${catalog.sdPage + 1} / ${pages}`; + if (activeLbl) activeLbl.textContent = catalog.sdActive ? `▶ ${catalog.sdActive}` : "— aucun actif —"; +} + +(function bindSynthdefCatalog() { + document.querySelectorAll("#sdCatChips .chip").forEach(b => { + if (b.dataset.cat === catalog.sdCat) { + document.querySelectorAll("#sdCatChips .chip.active").forEach(c => c.classList.remove("active")); + b.classList.add("active"); + } + b.addEventListener("click", () => { + document.querySelectorAll("#sdCatChips .chip.active").forEach(c => c.classList.remove("active")); + b.classList.add("active"); + catalog.sdCat = b.dataset.cat; + catalog.sdPage = 0; + saveCatalog(); + renderSdGrid(); + }); + }); + const search = document.getElementById("sdSearch"); + if (search) { + search.value = catalog.sdSearch; + search.addEventListener("input", () => { + catalog.sdSearch = search.value; + catalog.sdPage = 0; + saveCatalog(); + renderSdGrid(); + }); + } + const prev = document.getElementById("sdPrev"); + const next = document.getElementById("sdNext"); + if (prev) prev.addEventListener("click", () => { catalog.sdPage--; renderSdGrid(); }); + if (next) next.addEventListener("click", () => { catalog.sdPage++; renderSdGrid(); }); + const refresh = document.getElementById("btnSdRefresh"); + if (refresh) refresh.addEventListener("click", () => send("/control/listSynthdefs")); +})(); + +function flashSync(elemId) { + const el = document.getElementById(elemId); + if (!el) return; + el.classList.remove("synced"); + void el.offsetWidth; + el.classList.add("synced"); + setTimeout(() => el.classList.remove("synced"), 600); +} + +// Initial render (vide tant que rien reçu) +renderMelGenres(); +renderMelGrid(); +renderSdGrid(); + +// ---------------- ALBUM --------------------------------------------- +const albumsGrid = document.getElementById("albumsGrid"); +const albumsPlaceholder = document.getElementById("albumsPlaceholder"); +const albumGap = document.getElementById("albumGap"); +const outAlbumGap = document.getElementById("outAlbumGap"); +bindSlider(albumGap, (v) => { outAlbumGap.textContent = v.toFixed(0); }); + +function renderAlbumCard(letter) { + if (albumsPlaceholder && albumsPlaceholder.parentNode) { + albumsPlaceholder.remove(); + } + const data = state.albums.get(letter); + if (!data) return; + let card = albumsGrid.querySelector(`.album-card[data-letter="${letter}"]`); + const wasExpanded = card ? card.classList.contains("expanded") : false; + if (!card) { + card = document.createElement("div"); + card.className = "album-card"; + card.dataset.letter = letter; + // Insertion triée par lettre + const all = Array.from(albumsGrid.querySelectorAll(".album-card")); + const next = all.find(c => c.dataset.letter > letter); + if (next) albumsGrid.insertBefore(card, next); + else albumsGrid.appendChild(card); + } + const minutes = Math.round(data.totalSec / 60); + const tracksHtml = data.slugs.map((slug, i) => { + const num = String(i + 1).padStart(2, "0"); + const last = state.lastTrack && state.lastTrack.letter === letter && state.lastTrack.n === (i + 1); + return `<li class="album-track${last ? " last" : ""}" data-n="${i + 1}"><span class="num mono">${num}</span><span class="slug mono">${slug}</span></li>`; + }).join(""); + card.innerHTML = ` + <div class="album-head"> + <div class="album-badge">${letter}</div> + <div class="album-meta"> + <div class="album-title">${data.title}</div> + <div class="album-stats mono">${data.trackCount} tracks · ~${minutes} min</div> + </div> + </div> + <div class="album-actions"> + <button type="button" class="btn accent album-play">▶ Album entier</button> + <button type="button" class="btn album-toggle">Tracks ▾</button> + </div> + <ul class="album-tracks">${tracksHtml}</ul> + `; + if (wasExpanded) card.classList.add("expanded"); + card.querySelector(".album-play").addEventListener("click", () => { + const gap = parseInt(albumGap.value, 10) || 0; + send("/control/playAlbum", letter, gap); + }); + card.querySelector(".album-toggle").addEventListener("click", () => { + card.classList.toggle("expanded"); + }); + card.querySelectorAll(".album-track").forEach(li => { + li.addEventListener("click", () => { + const n = parseInt(li.dataset.n, 10); + state.lastTrack = { letter, n }; + card.querySelectorAll(".album-track.last").forEach(x => x.classList.remove("last")); + li.classList.add("last"); + send("/control/playTrack", letter, n); + }); + }); +} + +document.getElementById("btnAlbumStop").addEventListener("click", () => { + if (!confirm("Stop album en cours ?")) return; + send("/control/stopAlbum"); +}); +document.getElementById("btnAlbumRefresh").addEventListener("click", () => { + send("/control/listAlbums"); +}); + +// ---------------- JUMP ---------------------------------------------- +const jumpLetters = document.getElementById("jumpLetters"); +const jumpSectionsCard = document.getElementById("jumpSectionsCard"); +const jumpSectionsEl = document.getElementById("jumpSections"); +const jumpLetterLabel = document.getElementById("jumpLetterLabel"); + +TRACKS.forEach(L => { + const b = document.createElement("button"); + b.className = "btn"; + b.textContent = L; + b.addEventListener("click", () => { + state.jumpLetter = L; + jumpLetters.querySelectorAll(".btn.active").forEach(x => x.classList.remove("active")); + b.classList.add("active"); + renderJumpSections(); + }); + jumpLetters.appendChild(b); +}); + +function renderJumpSections() { + const L = state.jumpLetter; + if (!L) { jumpSectionsCard.hidden = true; return; } + jumpSectionsCard.hidden = false; + jumpLetterLabel.textContent = L; + jumpSectionsEl.innerHTML = ""; + const slugs = state.sectionsByLetter[L] || []; + if (slugs.length === 0) { + const m = document.createElement("span"); + m.className = "muted"; + m.textContent = "Aucune section listée — relance /control/listSections."; + jumpSectionsEl.appendChild(m); + const r = document.createElement("button"); + r.className = "btn"; + r.textContent = "↻ refresh"; + r.addEventListener("click", () => send("/control/listSections")); + jumpSectionsEl.appendChild(r); + return; + } + slugs.forEach(slug => { + const c = document.createElement("button"); + c.className = "chip"; + c.textContent = slug; + c.addEventListener("click", () => { + jumpSectionsEl.querySelectorAll(".chip.active").forEach(x => x.classList.remove("active")); + c.classList.add("active"); + send("/control/jumpTo", L, slug); + }); + jumpSectionsEl.appendChild(c); + }); +} + +// Re-render des sections quand /sync/sections arrive +const origHandle = handleSync; +// (handleSync ré-appelle déjà setSectionsByLetter ; on déclenche un repaint sur l'onglet sélectionné) +const _origMessage = state.ws; +// Patch léger : surveiller les changements via interval (simple, pas critique) +setInterval(() => { if (state.jumpLetter) renderJumpSections(); }, 500); + +// ---------------- CHAINS -------------------------------------------- +const chainsGrid = document.getElementById("chainsGrid"); +CHAINS.forEach(c => { + const wrap = document.createElement("div"); + wrap.style.display = "flex"; + wrap.style.gap = "0.4rem"; + wrap.style.alignItems = "center"; + + const b = document.createElement("button"); + b.className = "btn big"; + b.style.flex = "1"; + b.textContent = c.name; + + if (c.input) { + const inp = document.createElement("input"); + inp.type = "number"; + inp.value = c.input.value; + inp.title = c.input.label; + inp.style.width = "70px"; + b.addEventListener("click", () => { + const opt = parseInt(inp.value, 10); + send("/control/chain", c.name, isNaN(opt) ? c.input.value : opt); + }); + wrap.appendChild(b); + wrap.appendChild(inp); + } else { + b.addEventListener("click", () => send("/control/chain", c.name)); + wrap.appendChild(b); + } + chainsGrid.appendChild(wrap); +}); + +// ---------------- SCENES -------------------------------------------- +document.getElementById("btnSaveScene").addEventListener("click", () => { + const n = document.getElementById("sceneName").value.trim(); + if (!n) { alert("nom requis"); return; } + send("/control/saveScene", n); +}); +document.getElementById("btnLoadScene").addEventListener("click", () => { + const n = document.getElementById("sceneName").value.trim(); + if (!n) { alert("nom requis"); return; } + send("/control/loadScene", n); +}); +document.querySelectorAll("#scenePresets .chip").forEach(c => { + c.addEventListener("click", () => { + const n = c.dataset.preset; + document.getElementById("sceneName").value = n; + send("/control/loadScene", n); + }); +}); + +// ---------------- MASTER RETURNS (in Mixer tab) --------------------- +const masterReturnsGrid = document.getElementById("masterReturnsGrid"); +if (masterReturnsGrid) { + SEND_BUSES.forEach(([key, label]) => { + const cell = document.createElement("div"); + cell.className = "master-return-cell"; + cell.innerHTML = ` + <div class="name">${label} <span class="key">${key}</span></div> + <input type="range" min="0" max="1" step="0.01" value="0" /> + <div class="ctrl-row"><span class="muted">amount</span><output class="mono">0.00</output></div> + `; + const slider = cell.querySelector("input"); + const out = cell.querySelector("output"); + setSliderFill(slider); + slider.addEventListener("input", () => { + setSliderFill(slider); + const v = parseFloat(slider.value); + out.textContent = v.toFixed(2); + send("/control/sendFx", key, v); + }); + masterReturnsGrid.appendChild(cell); + }); +} + +// ---------------- ACID ---------------------------------------------- +const acidNotesGrid = document.getElementById("acidNotesGrid"); +const acidAccentsGrid = document.getElementById("acidAccentsGrid"); +const acidSlidesGrid = document.getElementById("acidSlidesGrid"); +const acidLiveCheck = document.getElementById("acidLive"); + +function flashAcidGrid(id) { + const el = document.getElementById(id); + if (!el) return; + el.classList.add("synced"); + setTimeout(() => el.classList.remove("synced"), 600); +} + +function setAcidSlider(id, value, outId, decimals) { + const el = document.getElementById(id); + if (el) { el.value = value; setSliderFill(el); } + const out = document.getElementById(outId); + if (out) out.textContent = value.toFixed(decimals); +} + +function buildAcidNotesGrid() { + acidNotesGrid.innerHTML = ""; + for (let i = 0; i < 16; i++) { + const cell = document.createElement("div"); + cell.className = "acid-cell note"; + if (i % 4 === 0) cell.classList.add("divider"); + const val = acidState.notes[i] | 0; + if (val > 0) cell.classList.add("on"); + cell.dataset.idx = i; + cell.textContent = val > 0 ? val : "·"; + cell.addEventListener("click", () => { + const cur = acidState.notes[i] | 0; + const idx = ACID_NOTE_CYCLE.indexOf(cur); + const next = ACID_NOTE_CYCLE[(idx + 1 + ACID_NOTE_CYCLE.length) % ACID_NOTE_CYCLE.length]; + acidState.notes[i] = next; + cell.textContent = next > 0 ? next : "·"; + cell.classList.toggle("on", next > 0); + saveAcid(); + if (acidLiveCheck && acidLiveCheck.checked) send("/control/acidNotes", ...acidState.notes); + }); + cell.addEventListener("contextmenu", (e) => { + e.preventDefault(); + const cur = acidState.notes[i] | 0; + const idx = ACID_NOTE_CYCLE.indexOf(cur); + const prev = ACID_NOTE_CYCLE[(idx - 1 + ACID_NOTE_CYCLE.length) % ACID_NOTE_CYCLE.length]; + acidState.notes[i] = prev; + cell.textContent = prev > 0 ? prev : "·"; + cell.classList.toggle("on", prev > 0); + saveAcid(); + if (acidLiveCheck && acidLiveCheck.checked) send("/control/acidNotes", ...acidState.notes); + }); + acidNotesGrid.appendChild(cell); + } +} + +function renderAcidNotes() { + if (!acidNotesGrid) return; + acidNotesGrid.querySelectorAll(".acid-cell.note").forEach((cell, i) => { + const val = acidState.notes[i] | 0; + cell.textContent = val > 0 ? val : "·"; + cell.classList.toggle("on", val > 0); + }); +} + +function buildAcidToggleRow(grid, arr, kind, color) { + grid.innerHTML = ""; + for (let i = 0; i < 16; i++) { + const cell = document.createElement("div"); + cell.className = `acid-cell toggle ${kind}`; + if (i % 4 === 0) cell.classList.add("divider"); + if (arr[i]) cell.classList.add("on"); + cell.dataset.idx = i; + cell.addEventListener("click", () => { + arr[i] = arr[i] ? 0 : 1; + cell.classList.toggle("on", !!arr[i]); + saveAcid(); + if (acidLiveCheck && acidLiveCheck.checked) { + if (kind === "accent") send("/control/acidAccents", ...acidState.accents); + else send("/control/acidSlides", ...acidState.slides); + } + }); + grid.appendChild(cell); + } +} + +function renderAcidAccents() { + if (!acidAccentsGrid) return; + acidAccentsGrid.querySelectorAll(".acid-cell.toggle").forEach((c, i) => { + c.classList.toggle("on", !!acidState.accents[i]); + }); +} + +function renderAcidSlides() { + if (!acidSlidesGrid) return; + acidSlidesGrid.querySelectorAll(".acid-cell.toggle").forEach((c, i) => { + c.classList.toggle("on", !!acidState.slides[i]); + }); +} + +if (acidNotesGrid) { + buildAcidNotesGrid(); + buildAcidToggleRow(acidAccentsGrid, acidState.accents, "accent"); + buildAcidToggleRow(acidSlidesGrid, acidState.slides, "slide"); + + const acidCut = document.getElementById("acidCut"); + const acidRq = document.getElementById("acidRq"); + const acidDrive = document.getElementById("acidDrive"); + const acidAmp = document.getElementById("acidAmp"); + bindSlider(acidCut, v => { + document.getElementById("outAcidCut").textContent = v.toFixed(0); + acidState.cutoff = v; saveAcid(); send("/control/acidCut", v); + }); + bindSlider(acidRq, v => { + document.getElementById("outAcidRq").textContent = v.toFixed(2); + acidState.rq = v; saveAcid(); send("/control/acidRq", v); + }); + bindSlider(acidDrive, v => { + document.getElementById("outAcidDrive").textContent = v.toFixed(2); + acidState.drive = v; saveAcid(); send("/control/acidDrive", v); + }); + bindSlider(acidAmp, v => { + document.getElementById("outAcidAmp").textContent = v.toFixed(2); + acidState.amp = v; saveAcid(); send("/control/acidAmp", v); + }); + // Init slider values from state + setAcidSlider("acidCut", acidState.cutoff, "outAcidCut", 0); + setAcidSlider("acidRq", acidState.rq, "outAcidRq", 2); + setAcidSlider("acidDrive", acidState.drive, "outAcidDrive", 2); + setAcidSlider("acidAmp", acidState.amp, "outAcidAmp", 2); + + const accProb = document.getElementById("acidAccProb"); + const sldProb = document.getElementById("acidSldProb"); + bindSlider(accProb, v => { document.getElementById("outAcidAccProb").textContent = v.toFixed(2); }); + bindSlider(sldProb, v => { document.getElementById("outAcidSldProb").textContent = v.toFixed(2); }); + + document.getElementById("btnAcidRandom").addEventListener("click", () => { + send("/control/acidRandom", parseFloat(accProb.value), parseFloat(sldProb.value)); + }); + document.getElementById("btnAcidSend").addEventListener("click", () => { + send("/control/acidNotes", ...acidState.notes); + send("/control/acidAccents", ...acidState.accents); + send("/control/acidSlides", ...acidState.slides); + }); +} + +// ---------------- HARMONY ------------------------------------------- +const harmonyNotesGrid = document.getElementById("harmonyNotesGrid"); +const harmonyLiveCheck = document.getElementById("harmonyLive"); +const harmonyPresetChips = document.getElementById("harmonyPresetChips"); + +function buildHarmonyNotesGrid() { + harmonyNotesGrid.innerHTML = ""; + for (let i = 0; i < 32; i++) { + const cell = document.createElement("div"); + cell.className = "harmony-cell"; + if (i % 8 === 0) cell.classList.add("divider"); + const inp = document.createElement("input"); + inp.type = "number"; + inp.min = "0"; + inp.max = "120"; + inp.step = "1"; + inp.value = harmonyState.notes[i] | 0; + inp.dataset.idx = i; + inp.addEventListener("input", () => { + const v = parseInt(inp.value, 10); + harmonyState.notes[i] = isNaN(v) ? 0 : Math.max(0, Math.min(120, v)); + cell.classList.toggle("on", harmonyState.notes[i] > 0); + saveHarmony(); + if (harmonyLiveCheck && harmonyLiveCheck.checked) send("/control/harmonyNotes", ...harmonyState.notes); + }); + if ((harmonyState.notes[i] | 0) > 0) cell.classList.add("on"); + cell.appendChild(inp); + harmonyNotesGrid.appendChild(cell); + } +} + +function renderHarmonyNotes() { + if (!harmonyNotesGrid) return; + harmonyNotesGrid.querySelectorAll(".harmony-cell").forEach((cell, i) => { + const inp = cell.querySelector("input"); + if (inp) inp.value = harmonyState.notes[i] | 0; + cell.classList.toggle("on", (harmonyState.notes[i] | 0) > 0); + }); +} + +if (harmonyNotesGrid) { + buildHarmonyNotesGrid(); + + const harmonyAmp = document.getElementById("harmonyAmp"); + bindSlider(harmonyAmp, v => { + document.getElementById("outHarmonyAmp").textContent = v.toFixed(2); + harmonyState.amp = v; saveHarmony(); send("/control/harmonyAmp", v); + }); + setAcidSlider("harmonyAmp", harmonyState.amp, "outHarmonyAmp", 2); + + HARMONY_PRESETS.forEach(p => { + const b = document.createElement("button"); + b.className = "chip"; + b.textContent = p; + b.addEventListener("click", () => { + harmonyPresetChips.querySelectorAll(".chip.active").forEach(c => c.classList.remove("active")); + b.classList.add("active"); + send("/control/harmonyPreset", p); + }); + harmonyPresetChips.appendChild(b); + }); + + document.getElementById("btnHarmonySend").addEventListener("click", () => { + send("/control/harmonyNotes", ...harmonyState.notes); + }); +} + +// ---------------- HYDRA tab ----------------------------------------- +const HYDRA_PRESETS = [ + "default", "osc", "kaleido", "grid", "warp", "pixel", + "feedback", "vortex", "liquid", "tunnel", "spectrum", "cellular", + "glitch", "neon", "wireframe", "noise_storm", "mandala", "ripple", + "strobe", "mountains", "cosmos", +]; +const HYDRA_PARAMS = [ + { name: "intensity", min: 0, max: 2, step: 0.01, def: 1 }, + { name: "hueShift", min: 0, max: 1, step: 0.01, def: 0 }, + { name: "speed", min: 0, max: 4, step: 0.01, def: 1 }, + { name: "density", min: 0, max: 2, step: 0.01, def: 1 }, + { name: "feedback", min: 0, max: 1, step: 0.01, def: 0.5 }, +]; + +(function initHydraTab() { + const chips = document.getElementById("hydraPresets"); + if (!chips) return; + HYDRA_PRESETS.forEach(name => { + const b = document.createElement("button"); + b.className = "chip"; + b.textContent = name; + b.addEventListener("click", () => { + chips.querySelectorAll(".chip.active").forEach(c => c.classList.remove("active")); + b.classList.add("active"); + send("/hydra/preset", name); + }); + chips.appendChild(b); + }); + + const params = document.getElementById("hydraParams"); + HYDRA_PARAMS.forEach(p => { + const wrap = document.createElement("label"); + wrap.style.display = "flex"; + wrap.style.flexDirection = "column"; + wrap.style.gap = "0.2rem"; + wrap.style.fontSize = "0.75rem"; + wrap.style.minWidth = "120px"; + const valSpan = document.createElement("span"); + valSpan.textContent = `${p.name} = ${p.def}`; + const slider = document.createElement("input"); + slider.type = "range"; + slider.min = p.min; slider.max = p.max; slider.step = p.step; slider.value = p.def; + slider.addEventListener("input", () => { + const v = parseFloat(slider.value); + valSpan.textContent = `${p.name} = ${v}`; + send("/hydra/param", p.name, v); + }); + wrap.appendChild(valSpan); + wrap.appendChild(slider); + params.appendChild(wrap); + }); + + document.getElementById("btnHydraSendCode").addEventListener("click", () => { + const code = document.getElementById("hydraCode").value.trim(); + if (code.length > 0) send("/hydra/code", code); + }); +})(); + +// ---------------- Init final ---------------------------------------- +// Underline calé après render initial (fonts, layout) +window.addEventListener("load", () => requestAnimationFrame(positionUnderline)); diff --git a/sound_algo/web/public/control/index.html b/sound_algo/web/public/control/index.html new file mode 100644 index 0000000..691f0ea --- /dev/null +++ b/sound_algo/web/public/control/index.html @@ -0,0 +1,499 @@ +<!doctype html> +<html lang="fr"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" /> + <title>sound_algo · live + + + + + + + + +
+
+ +

sound_algo · live

+
+ +
+
+ BPM + 128 +
+
+ BEAT +
+
+
+ + offline +
+ +
+
+ + + + +
+ + +
+
+
+

Tempo

+ +
+ + + +
+
+ +
+

Master

+ + + +
+ +
+

Pdef global

+
+ + +
+

play/stop des Pdef principaux

+
+
+
+ + +
+
+

Albums

+
+ + + +
+
+
+

Charge tracks/_index.scd côté SuperCollider, puis click ↻ Refresh

+
+
+ + +
+
+
+

Master returns

+
+
+
+ + +
+
+ + + + + step 1/16 +
+
+
+ + +
+
+

Acid · notes (16)

+
+ + + + + +
+
+

Accents

+
+

Slides

+
+
+
+

Acid · params

+ + + + +
+
+ + +
+
+

Harmony · notes (32)

+
+ + +
+
+
+
+

Harmony · presets

+
+
+
+

Harmony · params

+ +
+
+ + +
+
+

Kicks (~kk)

+
+
+
+

Pattern kits (~pKit)

+
+
+
+

Pattern genres (~pGenre)

+
+
+
+

FX preset (~ff)

+
+
+
+ + +
+
+

FX par voie

+
+
+
+

VCF master

+
+ + + + +
+ + +
+ + + + +
+
+
+

Compression / Saturation

+
+ Comp: +
+
+
+ Sat mode: + + + +
+
+
+ + +
+
+

FX sends

+
+
+
+ + +
+
+

LFO modulation

+
+ +
+ + +
+ + + +
+
+ + + + + + +
+
+
+ + +
+
+
+ + +
+
+
+

Catalogue mélodies

+ 0 / 0 + +
+
+ Genre : +
+
+
+ Longueur : +
+ + + + + +
+
+
+ + — aucune active — +
+
+
+ + 1 / 1 + +
+
+ +
+

Apply mélodie (kind × n) — rétrocompat

+
+
+ +
+

Réglages

+ + + +
+ + + +
+
+ +
+

Genre wrapper (~mGen) — rétrocompat

+
+
+
+ + +
+
+
+

Catalogue SynthDefs

+ 0 / 0 + +
+
+ Catégorie : +
+ + + + + + +
+
+
+ + — aucun actif — +
+
+
+ + 1 / 1 + +
+

Click = applique au lead courant via ~mInst. Pour drums/master, c'est purement informatif (le moteur les utilise via les Pdef).

+
+
+ + +
+
+

Tracks

+
+
+ +
+ + +
+
+
+ + +
+
+

Save / Load

+
+ + + +
+

Presets

+
+ + + + +
+
+
+ + +
+
+

Hydra visuals

+ +

Presets

+
+

Params

+
+

Custom code

+ +
+ +
+
+
+ +
+ + + + diff --git a/sound_algo/web/public/control/style.css b/sound_algo/web/public/control/style.css new file mode 100644 index 0000000..fd4941c --- /dev/null +++ b/sound_algo/web/public/control/style.css @@ -0,0 +1,1145 @@ +/* ===================================================================== + sound_algo · live — surface de contrôle web + Thème sombre, tactile, animations subtiles + ===================================================================== */ + +:root { + color-scheme: dark; + --bg: #0a0e14; + --bg-2: #0d1219; + --panel: #141a22; + --panel-2: #1a2230; + --panel-3: #232d3d; + --border: #2a3444; + --border-strong: #3a475c; + --text: #e8edf3; + --muted: #7d8a9c; + --accent: #4dd0e1; + --accent-glow: rgba(77, 208, 225, 0.35); + --lime: #aed581; + --lime-glow: rgba(174, 213, 129, 0.35); + --warn: #ffb74d; + --danger: #ef5350; + --danger-glow: rgba(239, 83, 80, 0.4); + --magenta: #ce93d8; + + --radius: 10px; + --radius-sm: 6px; + --radius-lg: 14px; + --t: 150ms ease; + + --mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace; + --sans: 'Inter', system-ui, -apple-system, sans-serif; +} + +* { box-sizing: border-box; } +html, body { margin: 0; padding: 0; } + +body { + min-height: 100vh; + background: + radial-gradient(ellipse at top, #11202c 0%, transparent 60%), + var(--bg); + color: var(--text); + font-family: var(--sans); + font-size: 14px; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + padding-bottom: 4rem; +} + +/* ============================== HEADER ============================== */ +.topbar { + position: sticky; + top: 0; + z-index: 30; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + padding: 0.85rem 1.25rem; + background: rgba(10, 14, 20, 0.85); + backdrop-filter: blur(18px) saturate(150%); + -webkit-backdrop-filter: blur(18px) saturate(150%); + border-bottom: 1px solid var(--border); +} + +.brand { display: flex; align-items: center; gap: 0.7rem; } +.logo { + width: 22px; height: 22px; + border-radius: 6px; + background: + conic-gradient(from 0deg, var(--accent), var(--lime), var(--magenta), var(--accent)); + box-shadow: 0 0 18px var(--accent-glow); + animation: spin 18s linear infinite; +} +@keyframes spin { to { transform: rotate(360deg); } } + +h1 { + font-size: 1.1rem; + margin: 0; + font-weight: 700; + letter-spacing: -0.01em; +} +h1 .sub { color: var(--muted); font-weight: 400; } + +.hud { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; } + +.hud-item { + display: flex; + align-items: center; + gap: 0.4rem; + padding: 0.35rem 0.7rem; + background: var(--panel); + border: 1px solid var(--border); + border-radius: var(--radius-sm); +} +.hud-label { + font-size: 0.65rem; + letter-spacing: 0.12em; + color: var(--muted); + text-transform: uppercase; +} +.hud-value { + font-family: var(--mono); + font-size: 1.2rem; + font-weight: 700; + color: var(--accent); + min-width: 2.5ch; + text-align: right; +} + +.bpm-display .hud-value { color: var(--lime); } + +.beat-pulse { + width: 14px; height: 14px; + border-radius: 50%; + background: var(--panel-3); + transition: transform 100ms ease, background 100ms ease, box-shadow 100ms ease; +} +.beat-pulse.flash { + background: var(--accent); + box-shadow: 0 0 14px var(--accent-glow); + transform: scale(1.4); +} + +.ws-dot { + width: 9px; height: 9px; + border-radius: 50%; + background: var(--danger); + box-shadow: 0 0 8px var(--danger-glow); +} +.ws-dot.online { + background: var(--lime); + box-shadow: 0 0 8px var(--lime-glow); + animation: ws-pulse 2s ease-in-out infinite; +} +@keyframes ws-pulse { + 0%, 100% { box-shadow: 0 0 6px var(--lime-glow); } + 50% { box-shadow: 0 0 16px var(--lime-glow); } +} +.ws-label { + font-size: 0.75rem; + color: var(--muted); + font-family: var(--mono); +} + +.teardown { letter-spacing: 0.08em; font-weight: 700; } + +/* ============================== TABS ============================== */ +.tabs { + position: sticky; + top: 56px; + z-index: 20; + display: flex; + gap: 0.15rem; + padding: 0.4rem 1rem 0; + background: rgba(10, 14, 20, 0.85); + backdrop-filter: blur(18px); + -webkit-backdrop-filter: blur(18px); + border-bottom: 1px solid var(--border); + overflow-x: auto; + scrollbar-width: none; +} +.tabs::-webkit-scrollbar { display: none; } + +.tab { + position: relative; + background: transparent; + border: none; + color: var(--muted); + padding: 0.7rem 0.95rem; + font: 500 0.85rem var(--sans); + cursor: pointer; + white-space: nowrap; + border-radius: var(--radius-sm) var(--radius-sm) 0 0; + transition: color var(--t), background var(--t); + min-height: 44px; +} +.tab:hover { color: var(--text); background: rgba(255,255,255,0.03); } +.tab.active { color: var(--accent); } +.tab:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; } + +.tab-underline { + position: absolute; + bottom: 0; + height: 2px; + background: var(--accent); + border-radius: 2px; + transition: left 220ms cubic-bezier(.4,0,.2,1), width 220ms cubic-bezier(.4,0,.2,1); + pointer-events: none; + box-shadow: 0 0 8px var(--accent-glow); +} + +/* ============================== MAIN / TABPANES ============================== */ +main { + max-width: 1500px; + margin: 0 auto; + padding: 1.25rem; +} + +.tabpane { display: none; animation: fadein 200ms ease; } +.tabpane.active { display: block; } +@keyframes fadein { + from { opacity: 0; transform: translateY(4px); } + to { opacity: 1; transform: translateY(0); } +} + +/* ============================== CARDS / GRID ============================== */ +.grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 1rem; +} + +.card { + background: linear-gradient(180deg, var(--panel) 0%, var(--bg-2) 100%); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + padding: 1.1rem; + margin-bottom: 1rem; + box-shadow: 0 1px 0 rgba(255,255,255,0.02) inset, 0 4px 16px rgba(0,0,0,0.25); +} + +h2 { + margin: 0 0 0.9rem; + font-size: 0.78rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.14em; + color: var(--muted); +} +h3 { + margin: 1.1rem 0 0.5rem; + font-size: 0.72rem; + text-transform: uppercase; + letter-spacing: 0.12em; + color: var(--muted); +} + +.row { + display: flex; + flex-wrap: wrap; + gap: 0.6rem; + align-items: center; + margin: 0.3rem 0; +} + +.hint { color: var(--muted); font-size: 0.78rem; margin: 0.4rem 0 0; } +.muted { color: var(--muted); } +.mono { font-family: var(--mono); font-feature-settings: "tnum"; } + +/* ============================== CONTROLS ============================== */ +.ctrl { + display: flex; + flex-direction: column; + gap: 0.45rem; + margin: 0.5rem 0; +} +.ctrl.mini { flex: 0 0 auto; min-width: 90px; margin: 0; gap: 0.25rem; } +.ctrl.mini > span { font-size: 0.7rem; color: var(--muted); } +.ctrl-row { + display: flex; + justify-content: space-between; + font-size: 0.78rem; + color: var(--muted); +} +.ctrl output { color: var(--accent); font-family: var(--mono); } + +/* Slider custom */ +input[type="range"] { + appearance: none; + -webkit-appearance: none; + width: 100%; + height: 6px; + background: linear-gradient(90deg, var(--accent) var(--fill, 0%), var(--panel-3) var(--fill, 0%)); + border-radius: 4px; + outline: none; + margin: 0.3rem 0; +} +input[type="range"]::-webkit-slider-thumb { + -webkit-appearance: none; + width: 24px; height: 24px; + border-radius: 50%; + background: #fff; + border: 2px solid var(--accent); + cursor: pointer; + box-shadow: 0 2px 8px rgba(0,0,0,0.4), 0 0 0 0 var(--accent-glow); + transition: transform var(--t), box-shadow var(--t); +} +input[type="range"]::-webkit-slider-thumb:hover { + transform: scale(1.08); + box-shadow: 0 2px 8px rgba(0,0,0,0.4), 0 0 0 6px var(--accent-glow); +} +input[type="range"]::-moz-range-thumb { + width: 24px; height: 24px; + border-radius: 50%; + background: #fff; + border: 2px solid var(--accent); + cursor: pointer; +} + +input[type="text"], input[type="number"], select { + background: var(--panel-2); + color: var(--text); + border: 1px solid var(--border); + border-radius: var(--radius-sm); + padding: 0.55rem 0.75rem; + font: 500 0.85rem var(--sans); + min-height: 44px; + transition: border-color var(--t), box-shadow var(--t); +} +input[type="text"], input[type="number"] { font-family: var(--mono); } +input[type="text"]:focus, input[type="number"]:focus, select:focus { + outline: none; + border-color: var(--accent); + box-shadow: 0 0 0 3px var(--accent-glow); +} + +/* Buttons */ +.btn, .chip { + background: var(--panel-2); + color: var(--text); + border: 1px solid var(--border); + border-radius: var(--radius-sm); + padding: 0.6rem 0.95rem; + cursor: pointer; + font: 500 0.85rem var(--sans); + min-height: 44px; + transition: all var(--t); + user-select: none; + -webkit-tap-highlight-color: transparent; +} +.btn:hover, .chip:hover { + background: var(--panel-3); + border-color: var(--border-strong); + transform: translateY(-1px); +} +.btn:active, .chip:active { transform: translateY(0); } +.btn:focus-visible, .chip:focus-visible { + outline: 2px solid var(--accent); + outline-offset: 2px; +} + +.btn.accent { + background: linear-gradient(180deg, rgba(77,208,225,0.18), rgba(77,208,225,0.08)); + border-color: var(--accent); + color: var(--accent); +} +.btn.accent:hover { background: rgba(77,208,225,0.25); box-shadow: 0 0 16px var(--accent-glow); } + +.btn.warn { + background: linear-gradient(180deg, rgba(255,183,77,0.15), rgba(255,183,77,0.06)); + border-color: var(--warn); + color: var(--warn); +} + +.btn.danger { + background: linear-gradient(180deg, rgba(239,83,80,0.18), rgba(239,83,80,0.08)); + border-color: var(--danger); + color: var(--danger); + font-weight: 600; +} +.btn.danger:hover { + background: rgba(239,83,80,0.3); + box-shadow: 0 0 18px var(--danger-glow); +} + +.btn.ghost { background: transparent; } + +.btn.big { + padding: 1rem 1.2rem; + font-size: 0.95rem; + font-weight: 600; + min-height: 64px; +} + +/* Chips */ +.chips { + display: flex; + flex-wrap: wrap; + gap: 0.4rem; +} +.chip { + padding: 0.5rem 0.85rem; + font-size: 0.8rem; + border-radius: 999px; + font-family: var(--mono); +} +.chip.active { + background: linear-gradient(180deg, var(--lime), #82b754); + color: #0a0e14; + border-color: var(--lime); + font-weight: 600; + box-shadow: 0 0 14px var(--lime-glow); +} +.chip.active.alt { + background: linear-gradient(180deg, var(--accent), #2c8a99); + border-color: var(--accent); + box-shadow: 0 0 14px var(--accent-glow); +} + +/* Toggle */ +.toggle { + display: inline-flex; + align-items: center; + gap: 0.5rem; + color: var(--muted); + font-size: 0.8rem; + cursor: pointer; + user-select: none; +} +.toggle input { accent-color: var(--accent); width: 18px; height: 18px; } + +/* ============================== MIXER ============================== */ +.mixer-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); + gap: 0.8rem; +} +.mixer-voice { + display: flex; + flex-direction: column; + align-items: stretch; + gap: 0.55rem; + padding: 0.85rem 0.7rem; + background: linear-gradient(180deg, var(--panel) 0%, var(--bg-2) 100%); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + position: relative; +} +.mixer-voice .name { + text-align: center; + font-size: 0.78rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--text); +} +.mixer-voice .playing-dot { + position: absolute; + top: 8px; right: 10px; + width: 8px; height: 8px; + border-radius: 50%; + background: var(--panel-3); + transition: all var(--t); +} +.mixer-voice.playing .playing-dot { + background: var(--lime); + box-shadow: 0 0 10px var(--lime-glow); +} + +.mixer-body { + display: grid; + grid-template-columns: 18px 1fr; + gap: 0.5rem; + align-items: stretch; + height: 160px; +} + +.vu { + width: 100%; + height: 100%; + background: var(--panel-3); + border-radius: 4px; + position: relative; + overflow: hidden; +} +.vu-fill { + position: absolute; + bottom: 0; left: 0; right: 0; + height: 0%; + background: linear-gradient(0deg, var(--lime) 0%, #ffd54f 60%, var(--danger) 100%); + transition: height 60ms linear; + border-radius: 0 0 4px 4px; +} + +.vfader { + position: relative; + height: 100%; + display: flex; + justify-content: center; +} +.vfader input[type="range"] { + -webkit-appearance: slider-vertical; + appearance: slider-vertical; + writing-mode: bt-lr; + width: 100%; + height: 100%; + background: linear-gradient(0deg, var(--accent) var(--fill, 66%), var(--panel-3) var(--fill, 66%)); + border-radius: 4px; +} + +.mixer-voice .vol-display { + text-align: center; + font-family: var(--mono); + font-size: 0.78rem; + color: var(--accent); +} + +.mixer-voice .actions { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.3rem; +} +.mixer-voice .actions button { + font-size: 0.75rem; + padding: 0.4rem; + min-height: 36px; +} +.mixer-voice .actions button.active { + background: var(--accent); + color: #0a0e14; + border-color: var(--accent); + font-weight: 700; +} +.mixer-voice .actions button.solo.active { + background: var(--magenta); + border-color: var(--magenta); +} + +.mixer-voice .voice-pdef { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.3rem; +} +.mixer-voice .voice-pdef button { + font-size: 0.7rem; + padding: 0.35rem; + min-height: 32px; +} + +/* ============================== STEP SEQUENCER ============================== */ +.seq-toolbar { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + align-items: center; + margin-bottom: 0.8rem; + padding: 0.7rem 0.9rem; + background: var(--panel); + border: 1px solid var(--border); + border-radius: var(--radius); +} + +.seq-grid { + display: grid; + grid-template-columns: 80px repeat(16, minmax(28px, 1fr)); + gap: 4px; + padding: 0.6rem; + background: var(--panel); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + overflow-x: auto; +} +.seq-row { display: contents; } +.seq-label { + font-size: 0.72rem; + font-family: var(--mono); + color: var(--muted); + text-transform: uppercase; + align-self: center; + padding-right: 0.5rem; + text-align: right; +} +.seq-label.synced { color: var(--accent); transition: color 0.6s ease; } +.seq-cell { + aspect-ratio: 1; + min-height: 32px; + background: var(--panel-2); + border: 1px solid var(--border); + border-radius: 5px; + cursor: pointer; + transition: background 80ms, border-color 80ms, transform 80ms; +} +.seq-cell:hover { border-color: var(--accent); } +.seq-cell:active { transform: scale(0.92); } +.seq-cell.on { + background: linear-gradient(180deg, var(--accent), #2c8a99); + border-color: var(--accent); + box-shadow: 0 0 10px var(--accent-glow); +} +.seq-cell.beat-marker { box-shadow: inset 0 0 0 2px var(--lime); } +.seq-cell.on.beat-marker { box-shadow: inset 0 0 0 2px var(--lime), 0 0 14px var(--lime-glow); } +/* division en groupes de 4 */ +.seq-cell:nth-child(17n+2), +.seq-cell:nth-child(17n+6), +.seq-cell:nth-child(17n+10), +.seq-cell:nth-child(17n+14) { /* groupe de 4 visuel via opacity de fond */ } +.seq-cell.divider { border-left-color: var(--border-strong); } + +/* ============================== FX par voie ============================== */ +.fx-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 0.8rem; +} +.fx-voice { + background: var(--panel-2); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 0.85rem; +} +.fx-voice .name { + font-size: 0.78rem; + font-weight: 600; + text-transform: uppercase; + color: var(--accent); + margin-bottom: 0.5rem; + letter-spacing: 0.08em; +} + +/* ============================== SENDS ============================== */ +.sends-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); + gap: 0.8rem; +} +.send-cell { + background: var(--panel-2); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 0.7rem; +} +.send-cell .name { + font-size: 0.78rem; + font-weight: 600; + text-transform: uppercase; + color: var(--text); + margin-bottom: 0.4rem; + letter-spacing: 0.06em; +} +.send-cell .key { color: var(--muted); font-family: var(--mono); font-size: 0.7rem; } + +/* ============================== TRICKS ============================== */ +.tricks-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + gap: 0.7rem; +} +.tricks-grid .btn { + min-height: 80px; + font-weight: 600; + font-size: 0.9rem; + border-radius: var(--radius-lg); + flex-direction: column; + background: linear-gradient(135deg, var(--panel) 0%, var(--panel-2) 100%); + position: relative; + overflow: hidden; +} +.tricks-grid .btn::before { + content: ''; + position: absolute; + inset: 0; + background: radial-gradient(circle at 50% 120%, var(--accent-glow), transparent 60%); + opacity: 0; + transition: opacity var(--t); +} +.tricks-grid .btn:hover::before { opacity: 1; } +.tricks-grid .btn small { + display: block; + font-size: 0.7rem; + font-weight: 400; + color: var(--muted); + font-family: var(--mono); + margin-top: 0.25rem; +} + +/* ============================== MELODIES apply grid ============================== */ +.m-apply-grid { + display: grid; + grid-template-columns: 80px repeat(8, 1fr); + gap: 0.4rem; + align-items: center; +} +.m-apply-grid .row-label { + font-family: var(--mono); + font-size: 0.75rem; + color: var(--muted); + text-align: right; + padding-right: 0.5rem; +} +.m-apply-grid .btn { min-height: 40px; padding: 0.4rem; } + +/* ============================== JUMP ============================== */ +.jump-letters { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(56px, 1fr)); + gap: 0.4rem; +} +.jump-letters .btn { + font-family: var(--mono); + font-size: 1.05rem; + font-weight: 700; + min-height: 56px; + padding: 0; + text-transform: uppercase; +} +.jump-letters .btn.active { + background: linear-gradient(180deg, var(--accent), #2c8a99); + color: #0a0e14; + border-color: var(--accent); + box-shadow: 0 0 16px var(--accent-glow); +} + +/* ============================== CHAINS ============================== */ +.chains-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); + gap: 0.7rem; +} +.chains-grid .btn { min-height: 72px; font-weight: 600; font-size: 0.95rem; } + +/* ============================== ALBUM ============================== */ +.album-toolbar .row { gap: 0.9rem; } +.album-placeholder { + grid-column: 1 / -1; + text-align: center; + padding: 2rem 1rem; + font-style: italic; +} + +.albums-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); + gap: 12px; +} + +.album-card { + display: flex; + flex-direction: column; + gap: 0.7rem; + padding: 16px; + background: linear-gradient(180deg, var(--panel) 0%, var(--bg-2) 100%); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + transition: border-color var(--t), box-shadow var(--t); +} +.album-card:hover { border-color: var(--border-strong); } + +.album-head { + display: flex; + align-items: center; + gap: 0.8rem; +} +.album-badge { + flex: 0 0 48px; + width: 48px; height: 48px; + border-radius: 50%; + background: var(--accent); + color: var(--bg); + font-family: var(--mono); + font-weight: 700; + font-size: 24px; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 0 14px var(--accent-glow); +} +.album-meta { + flex: 1; + min-width: 0; +} +.album-title { + font-weight: 600; + font-size: 0.95rem; + color: var(--text); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.album-stats { + font-size: 0.72rem; + color: var(--muted); + margin-top: 2px; +} + +.album-actions { + display: grid; + grid-template-columns: 1fr auto; + gap: 0.4rem; +} +.album-actions .btn { min-height: 40px; padding: 0.5rem 0.8rem; font-size: 0.8rem; } + +.album-tracks { + list-style: none; + margin: 0; + padding: 0; + max-height: 0; + overflow: hidden; + transition: max-height 200ms ease; +} +.album-card.expanded .album-tracks { + max-height: 720px; + overflow-y: auto; +} +.album-track { + display: flex; + gap: 0.6rem; + align-items: center; + padding: 0.45rem 0.6rem; + border-left: 2px solid transparent; + border-radius: var(--radius-sm); + cursor: pointer; + font-size: 0.78rem; + transition: background 100ms, border-color 100ms; +} +.album-track:hover { + background: rgba(255,255,255,0.03); + border-left-color: var(--accent); +} +.album-track .num { + color: var(--muted); + font-size: 0.72rem; + min-width: 2ch; +} +.album-track .slug { + color: var(--text); +} +.album-track.last { + background: rgba(174, 213, 129, 0.08); + border-left-color: var(--lime); +} +.album-track.last .slug { color: var(--lime); } + +/* ============================== RESPONSIVE ============================== */ +@media (max-width: 720px) { + .topbar { flex-wrap: wrap; gap: 0.6rem; padding: 0.7rem 0.9rem; } + .hud { width: 100%; justify-content: space-between; } + main { padding: 0.8rem; } + .grid { grid-template-columns: 1fr; } + .albums-grid { grid-template-columns: 1fr; } + .seq-grid { grid-template-columns: 60px repeat(16, minmax(22px, 1fr)); } + .seq-label { font-size: 0.6rem; padding-right: 0.25rem; } + .tabs { top: 96px; } + h1 { font-size: 1rem; } +} + +@media (max-width: 460px) { + .seq-grid { grid-template-columns: 50px repeat(8, 1fr); } + /* on n'altère pas la logique : le scroll horizontal prend le relais */ + .seq-grid { grid-template-columns: 60px repeat(16, 26px); } +} + +/* ============================== MIXER · FX par voie ============================== */ +.mixer-voice .voice-fx { + display: flex; + flex-direction: column; + gap: 0.25rem; + margin-top: 0.3rem; + padding-top: 0.5rem; + border-top: 1px dashed var(--border); +} +.mixer-voice .voice-fx .ctrl.mini { + margin: 0; + min-width: 0; +} +.mixer-voice .voice-fx .ctrl-row { + font-size: 0.65rem; +} +.mixer-voice .voice-fx input[type="range"] { + height: 4px; + margin: 0.15rem 0; +} +.mixer-voice .voice-fx input[type="range"]::-webkit-slider-thumb { + width: 14px; height: 14px; +} + +/* ============================== MIXER · Master returns ============================== */ +.master-returns-card { margin-top: 1rem; } +.master-returns-grid { + display: grid; + grid-template-columns: repeat(9, minmax(0, 1fr)); + gap: 0.5rem; +} +@media (max-width: 1100px) { + .master-returns-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } +} +@media (max-width: 560px) { + .master-returns-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } +} +.master-return-cell { + background: var(--panel-2); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 0.5rem 0.55rem; + display: flex; + flex-direction: column; + gap: 0.3rem; +} +.master-return-cell .name { + font-size: 0.72rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--text); + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 0.25rem; +} +.master-return-cell .key { + color: var(--muted); + font-family: var(--mono); + font-size: 0.62rem; + font-weight: 500; +} +.master-return-cell .ctrl-row { + font-size: 0.7rem; +} + +/* ============================== ACID ============================== */ +.acid-toolbar { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + align-items: center; + margin-bottom: 0.7rem; +} +.acid-toolbar .ctrl.mini { display: flex; flex-direction: row; align-items: center; gap: 0.4rem; } +.acid-toolbar .ctrl.mini > span { min-width: 56px; } +.acid-toolbar .ctrl.mini > input[type="range"] { width: 110px; } + +.acid-grid { + display: grid; + grid-template-columns: repeat(16, minmax(28px, 1fr)); + gap: 4px; + padding: 0.5rem; + background: var(--panel); + border: 1px solid var(--border); + border-radius: var(--radius); + margin-bottom: 0.6rem; + transition: box-shadow 0.6s ease, border-color 0.6s ease; +} +.acid-grid.synced { + border-color: var(--accent); + box-shadow: 0 0 14px var(--accent-glow); +} +.acid-cell { + aspect-ratio: 1; + min-height: 44px; + background: #1a212c; + border: 1px solid var(--border); + border-radius: 5px; + cursor: pointer; + font-family: var(--mono); + font-size: 0.78rem; + display: flex; + align-items: center; + justify-content: center; + color: var(--muted); + transition: background 80ms, border-color 80ms, transform 80ms, color 80ms; + user-select: none; +} +.acid-cell:hover { border-color: var(--accent); } +.acid-cell:active { transform: scale(0.92); } +.acid-cell.divider { border-left-color: var(--border-strong); } +.acid-cell.note.on { + background: linear-gradient(180deg, rgba(77,208,225,0.35), rgba(77,208,225,0.15)); + border-color: var(--accent); + color: var(--text); + font-weight: 600; +} +.acid-cell.toggle.accent.on { + background: #ffd54f; + border-color: #ffd54f; + color: #0a0e14; + box-shadow: 0 0 10px rgba(255,213,79,0.45); +} +.acid-cell.toggle.slide.on { + background: #4dd0e1; + border-color: #4dd0e1; + color: #0a0e14; + box-shadow: 0 0 10px var(--accent-glow); +} + +/* ============================== HARMONY ============================== */ +.harmony-grid { + display: grid; + grid-template-columns: repeat(8, minmax(46px, 1fr)); + gap: 4px; + padding: 0.5rem; + background: var(--panel); + border: 1px solid var(--border); + border-radius: var(--radius); + transition: box-shadow 0.6s ease, border-color 0.6s ease; +} +.harmony-grid.synced { + border-color: var(--accent); + box-shadow: 0 0 14px var(--accent-glow); +} +.harmony-cell { + background: #1a212c; + border: 1px solid var(--border); + border-radius: 5px; + padding: 2px; + display: flex; + align-items: stretch; + transition: background 80ms, border-color 80ms; +} +.harmony-cell.divider { border-left-color: var(--border-strong); } +.harmony-cell.on { + background: linear-gradient(180deg, rgba(77,208,225,0.18), rgba(77,208,225,0.05)); + border-color: var(--accent); +} +.harmony-cell input[type="number"] { + width: 100%; + min-height: 36px; + background: transparent; + border: none; + padding: 0.2rem 0.3rem; + font-family: var(--mono); + font-size: 0.78rem; + color: var(--text); + text-align: center; + -moz-appearance: textfield; +} +.harmony-cell input[type="number"]::-webkit-inner-spin-button, +.harmony-cell input[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} +.harmony-cell input[type="number"]:focus { + outline: none; + background: rgba(77,208,225,0.08); +} +@media (max-width: 720px) { + .acid-grid { grid-template-columns: repeat(8, minmax(28px, 1fr)); } + .harmony-grid { grid-template-columns: repeat(4, minmax(46px, 1fr)); } +} + +/* ============================== CATALOGUE (mélodies + SynthDefs) ============================== */ +.melody-catalog .cat-row, +.synthdef-catalog .cat-row { + display: flex; + align-items: center; + gap: 0.5rem; + flex-wrap: wrap; + margin: 0.5rem 0; +} +.cat-header { + display: flex; + align-items: center; + gap: 0.6rem; + margin-bottom: 0.4rem; +} +.cat-header h2 { margin: 0; flex: 1; } +.cat-counter { + font-size: 0.78rem; + padding: 0.2rem 0.5rem; + border-radius: 4px; + background: rgba(77, 208, 225, 0.08); + border: 1px solid rgba(77, 208, 225, 0.2); + transition: background 250ms ease, color 250ms ease; +} +.cat-counter.synced { + background: rgba(166, 218, 149, 0.25); + color: #a6da95; + animation: catFlash 600ms ease; +} +@keyframes catFlash { + 0% { background: rgba(166, 218, 149, 0.5); } + 100% { background: rgba(77, 208, 225, 0.08); } +} +.cat-label { + font-size: 0.78rem; + color: var(--muted, #999); + font-family: var(--mono); + text-transform: uppercase; + letter-spacing: 0.05em; +} +.cat-chips, +.cat-len-chips, +.cat-cat-chips { + flex: 1; + display: flex; + flex-wrap: wrap; + gap: 4px; +} +.cat-search { + flex: 1; + min-width: 200px; + padding: 0.4rem 0.6rem; + background: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.12); + border-radius: 4px; + color: var(--text, #ddd); + font-size: 0.85rem; +} +.cat-search:focus { + outline: none; + border-color: rgba(77, 208, 225, 0.6); + background: rgba(77, 208, 225, 0.05); +} +.cat-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); + gap: 6px; + margin: 0.6rem 0; + content-visibility: auto; + contain-intrinsic-size: 800px; +} +.cat-cell { + padding: 0.4rem 0.5rem; + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 4px; + color: var(--text, #ddd); + font-size: 12px; + font-family: var(--mono); + cursor: pointer; + text-align: left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + transition: background 120ms ease, border-color 120ms ease, color 120ms ease; +} +.cat-cell:hover, +.cat-cell:focus { + background: rgba(77, 208, 225, 0.08); + border-color: rgba(77, 208, 225, 0.4); + color: #4dd0e1; + outline: none; +} +.cat-cell.active { + background: rgba(255, 167, 38, 0.18); + border-color: rgba(255, 167, 38, 0.7); + color: #ffa726; + font-weight: 700; +} +/* Couleur par catégorie SynthDef */ +.cat-cell.cat-drums:hover { border-color: rgba(255, 167, 38, 0.5); color: #ffa726; } +.cat-cell.cat-bass:hover { border-color: rgba(166, 218, 149, 0.5); color: #a6da95; } +.cat-cell.cat-lead:hover { border-color: rgba(77, 208, 225, 0.5); color: #4dd0e1; } +.cat-cell.cat-pad:hover { border-color: rgba(196, 167, 231, 0.5); color: #c4a7e7; } +.cat-cell.cat-world:hover { border-color: rgba(245, 169, 127, 0.5); color: #f5a97f; } +.cat-cell.cat-master:hover { border-color: rgba(238, 153, 160, 0.5); color: #ee99a0; } + +.cat-pager { + display: flex; + align-items: center; + justify-content: center; + gap: 0.6rem; + margin-top: 0.4rem; +} +.cat-pager .btn { padding: 0.2rem 0.6rem; } diff --git a/sound_algo/web/public/hydra/app.js b/sound_algo/web/public/hydra/app.js new file mode 100644 index 0000000..dd87ce4 --- /dev/null +++ b/sound_algo/web/public/hydra/app.js @@ -0,0 +1,366 @@ +// ===================================================================== +// hydra/app.js -- canvas Hydra synchronise avec sound_algo via WebSocket +// +// Variables globales injectees par le bridge : +// window.bpm : BPM courant (envoye par SC sur /sync/bpm) +// window.beat : compteur de beat (incremente sur /sync/beat) +// window.amp : { kick, hat, snare, clap, perc, melody, acid, harmony } +// parametres de volume du mixer (statiques) +// window.rms : { master } -- vrai RMS audio mesure cote SC +// window.hydraParams : { intensity, hueShift, speed, density, feedback } +// sliders globaux pilotables depuis /control/ +// +// Messages WS recus : +// /sync/bpm -- mise a jour tempo +// /sync/beat -- tick de beat +// /sync/amp -- volume mixer par voie +// /sync/rms -- RMS audio reel (master) +// /hydra/preset -- changer de preset +// /hydra/code -- evaluer du code Hydra arbitraire +// /hydra/param -- mise a jour de window.hydraParams +// ===================================================================== + +window.bpm = 128; +window.beat = 0; +window.amp = { kick: 0, hat: 0, snare: 0, clap: 0, perc: 0, + melody: 0, acid: 0, harmony: 0 }; +window.rms = { master: 0 }; +window.hydraParams = { intensity: 1, hueShift: 0, speed: 1, density: 1, feedback: 0.5 }; + +const wsState = document.getElementById("ws-state"); +const bpmDisplay = document.getElementById("bpm"); +const beatDisplay = document.getElementById("beat"); + +let ws = null; + +function connect() { + const proto = location.protocol === "https:" ? "wss:" : "ws:"; + ws = new WebSocket(`${proto}//${location.host}/ws`); + + ws.addEventListener("open", () => { + wsState.textContent = "online"; + wsState.style.color = "#38d977"; + }); + ws.addEventListener("close", () => { + wsState.textContent = "reconnecting…"; + wsState.style.color = "#ff5151"; + setTimeout(connect, 1000); + }); + + ws.addEventListener("message", (ev) => { + try { + const msg = JSON.parse(ev.data); + const addr = msg.address || ""; + if (addr.startsWith("/sync/")) { + const type = addr.slice(6); + switch (type) { + case "bpm": + window.bpm = msg.args[0]; + bpmDisplay.textContent = window.bpm; + break; + case "beat": + window.beat++; + beatDisplay.textContent = window.beat; + break; + case "amp": { + const [voice, amp] = msg.args; + if (voice in window.amp) window.amp[voice] = amp; + break; + } + case "rms": { + const [bus, amp] = msg.args; + if (bus in window.rms) window.rms[bus] = amp; + break; + } + } + } else if (addr === "/hydra/preset") { + const name = msg.args[0]; + if (PRESETS[name]) { + codeArea.value = PRESETS[name]; + run(); + } + } else if (addr === "/hydra/code") { + const code = msg.args[0]; + if (typeof code === "string" && code.length > 0) { + codeArea.value = code; + run(); + } + } else if (addr === "/hydra/param") { + const [name, val] = msg.args; + if (name in window.hydraParams) { + window.hydraParams[name] = val; + } + } + } catch {} + }); +} + +// ---------- Hydra setup ---------------------------------------------- +const canvas = document.getElementById("hydra-canvas"); +canvas.width = window.innerWidth; +canvas.height = window.innerHeight; +window.addEventListener("resize", () => { + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; +}); + +const hydra = new Hydra({ canvas, detectAudio: false, makeGlobal: true }); + +// ---------- Patches presets (Hydra DSL) ------------------------------ +// Chaque preset utilise window.bpm/beat/amp.*/rms.master/hydraParams.* +const PRESETS = { + default: ` +// Default : visualisation reactive a kick + melody +osc(20, 0.1, 1.5) + .modulate(noise(3, 0.1).scrollX(() => window.beat * 0.001)) + .color(() => 0.5 + window.amp.kick * 2, + 0.3 + window.amp.melody * 1.5, + 0.7 + window.amp.acid) + .scale(() => 1 + window.amp.kick * 0.3) + .out() +`.trim(), + + osc: ` +// Osc wobble synchro BPM +osc(() => 30 + Math.sin(window.beat * 0.1) * 20, 0.1, 2) + .rotate(() => window.beat * 0.02) + .kaleid(() => 3 + Math.floor(window.amp.kick * 6)) + .modulateScale(osc(2).scrollX(() => window.beat * 0.005), 0.4) + .out() +`.trim(), + + kaleido: ` +// Kaleidoscope qui s'ouvre sur kick +osc(15, 0.05, 0.8) + .kaleid(() => 4 + Math.floor(window.amp.kick * 8)) + .scale(() => 0.8 + window.amp.melody * 0.5) + .colorama(() => 0.5 + window.amp.acid * 0.3) + .modulate(noise(2, 0.05)) + .out() +`.trim(), + + grid: ` +// Grid pulse : grille rythmique synchro hat +shape(4, 0.3, 0.01) + .repeat(() => 8, () => 8) + .scrollY(() => window.beat * 0.005) + .modulateScrollX(osc(1).rotate(() => window.beat * 0.01)) + .color(() => window.amp.hat * 3, 0.5, 1) + .out() +`.trim(), + + warp: ` +// Warp organique +voronoi(8, 0.2, 0.3) + .modulate(osc(2, 0.1).rotate(() => window.beat * 0.01), 0.3) + .scale(() => 1.5 + window.amp.kick * 0.8) + .color(() => 0.4 + window.amp.melody, 0.2, 0.6) + .out() +`.trim(), + + pixel: ` +// Pixel sort glitchy +osc(40, 0.1, 1.5) + .pixelate(() => 50 + window.amp.kick * 200, + () => 50 + window.amp.kick * 200) + .modulate(noise(2, 0.1)) + .color(2, 0.5, () => window.amp.acid * 3) + .out() +`.trim(), + + feedback: ` +// Feedback loop : la sortie module la frame suivante +osc(10, 0.1, 1.2) + .color(0.8, 0.2, () => window.amp.melody * 2) + .modulate(src(o0).scale(0.99), () => 0.3 + window.hydraParams.feedback * 0.5) + .blend(src(o0), () => 0.4 + window.amp.kick * 0.3) + .out() +`.trim(), + + vortex: ` +// Vortex : rotation acceleree par BPM + zoom kick +osc(25, 0.05, 1) + .rotate(() => window.beat * 0.05 * window.hydraParams.speed) + .scale(() => 0.5 + window.amp.kick * 1.5) + .kaleid(6) + .colorama(() => window.beat * 0.001) + .out() +`.trim(), + + liquid: ` +// Liquid : voronoi modulé acid +voronoi(() => 5 + window.amp.acid * 15, 0.3, 0.1) + .modulate(osc(2).rotate(() => window.beat * 0.02)) + .color(() => 0.2 + window.amp.harmony, 0.5, () => 0.8 + window.amp.melody) + .scale(() => 1 + window.rms.master * 0.5) + .out() +`.trim(), + + tunnel: ` +// Tunnel : kaleido + scrollY constant +osc(30, 0.1, 0.8) + .kaleid(() => 8 + Math.floor(window.amp.snare * 8)) + .scrollY(() => window.beat * 0.01) + .scale(() => 0.4 + window.amp.kick * 0.6) + .color(() => window.amp.melody * 2, 0.3, () => window.amp.acid * 2) + .out() +`.trim(), + + spectrum: ` +// Spectrum : barres verticales par voie (kick/hat/snare/melody) +shape(4, 0.05, 0.01) + .repeat(8, 1) + .scale(() => 0.5 + window.amp.kick + window.amp.snare, + () => 0.3 + window.amp.melody + window.amp.acid) + .color(() => window.amp.kick * 3, + () => window.amp.snare * 3, + () => window.amp.melody * 3) + .out() +`.trim(), + + cellular: ` +// Cellular : automaton-like via shape repeat +shape(() => 3 + Math.floor(window.amp.hat * 6), 0.4, 0.02) + .repeat(() => 12 + Math.floor(window.amp.kick * 8), + () => 12 + Math.floor(window.amp.kick * 8)) + .modulateScale(osc(1).rotate(() => window.beat * 0.005), 0.1) + .color(() => 0.5 + window.amp.acid, 0.4, 0.9) + .out() +`.trim(), + + glitch: ` +// Glitch : modulateRotate + pixelate sur kick +osc(60, 0.2, 2) + .modulateRotate(noise(3, 0.5), () => window.amp.kick * 2) + .pixelate(() => 20 + window.amp.kick * 300, () => 20 + window.amp.snare * 300) + .color(() => 1 + window.amp.acid, 0.2, () => 1 + window.amp.melody) + .out() +`.trim(), + + neon: ` +// Neon : couleurs HSV cyclique saturees +osc(8, 0.05, 2) + .modulate(noise(4, 0.2)) + .colorama(() => 0.1 + window.beat * 0.002 + window.hydraParams.hueShift) + .saturate(() => 1.5 + window.amp.melody * 2) + .scale(() => 1 + window.rms.master * 0.4) + .out() +`.trim(), + + wireframe: ` +// Wireframe : threshold sur osc luma +osc(12, 0.05, 1.5) + .luma(() => 0.4 + window.amp.kick * 0.3, 0.05) + .diff(osc(13, 0.05, 1.5).rotate(() => window.beat * 0.01)) + .color(() => window.amp.hat * 4, () => window.amp.snare * 2, 1) + .out() +`.trim(), + + noise_storm: ` +// Noise storm : turbulence + colorama +noise(() => 4 + window.amp.kick * 8, () => 0.1 + window.amp.snare * 0.5) + .modulate(osc(2).rotate(() => window.beat * 0.03)) + .colorama(() => 0.3 + window.amp.acid * 0.5) + .contrast(() => 1.2 + window.rms.master * 1.5) + .out() +`.trim(), + + mandala: ` +// Mandala : kaleid 12+ + modulateScale acid +osc(20, 0.05, 1) + .kaleid(() => 12 + Math.floor(window.amp.acid * 12)) + .modulateScale(osc(3).rotate(() => window.beat * 0.02), + () => 0.2 + window.amp.melody * 0.5) + .color(() => 0.6 + window.amp.harmony, 0.4, () => 0.8 + window.amp.kick) + .out() +`.trim(), + + ripple: ` +// Ripple : noise depth controlled by snare +osc(15, 0.1, 1) + .modulate(noise(() => 2 + window.amp.snare * 10, 0.2), + () => 0.1 + window.amp.snare * 0.6) + .scale(() => 1 + window.rms.master * 0.3) + .color(() => window.amp.melody * 2, 0.5, () => window.amp.acid * 2) + .out() +`.trim(), + + strobe: ` +// Strobe : invert sur kick (ATTENTION epilepsie) +// threshold haut : ne flash que si amp.kick > 0.7 +osc(20, 0.05, 1) + .invert(() => window.amp.kick > 0.7 ? 1 : 0) + .color(() => 1 + window.amp.snare, 1, 1) + .out() +`.trim(), + + mountains: ` +// Mountains : voronoi scrolling +voronoi(20, 0.1, 0.5) + .scrollY(() => window.beat * 0.003) + .modulate(osc(1, 0.05).rotate(0.1)) + .color(() => 0.3 + window.amp.harmony, () => 0.4 + window.amp.melody, 0.7) + .contrast(1.4) + .out() +`.trim(), + + cosmos: ` +// Cosmos : multi-osc layered + rotate +osc(5, 0.05, 1) + .rotate(() => window.beat * 0.005) + .add(osc(15, 0.1, 1).rotate(() => -window.beat * 0.01), 0.5) + .add(osc(35, 0.2, 1).kaleid(8), () => 0.3 + window.amp.kick * 0.4) + .color(() => 0.5 + window.amp.melody, 0.3, () => 0.7 + window.amp.acid) + .out() +`.trim(), +}; + +// ---------- Editor + run -------------------------------------------- +const editor = document.getElementById("editor"); +const codeArea = document.getElementById("code"); +const status = document.getElementById("status"); +const toggleBtn = document.getElementById("editor-toggle"); + +codeArea.value = PRESETS.default; + +function run() { + try { + eval(codeArea.value); + status.textContent = "[OK] " + new Date().toLocaleTimeString(); + status.style.color = "#38d977"; + } catch (err) { + status.textContent = "[ERR] " + err.message; + status.style.color = "#ff5151"; + } +} + +document.getElementById("run").addEventListener("click", run); +codeArea.addEventListener("keydown", (e) => { + if ((e.ctrlKey || e.metaKey) && e.key === "Enter") { + e.preventDefault(); + run(); + } +}); + +document.querySelectorAll('[data-preset]').forEach((btn) => { + btn.addEventListener("click", () => { + if (PRESETS[btn.dataset.preset]) { + codeArea.value = PRESETS[btn.dataset.preset]; + run(); + } + }); +}); + +toggleBtn.addEventListener("click", () => editor.classList.toggle("open")); +window.addEventListener("keydown", (e) => { + if (e.key === "e" && !["TEXTAREA", "INPUT"].includes(document.activeElement.tagName)) { + editor.classList.toggle("open"); + } +}); + +// Expose la liste des presets pour debug + integration externe +window.HYDRA_PRESETS = Object.keys(PRESETS); + +// Lance le preset par defaut au demarrage et ouvre la WS +connect(); +run(); diff --git a/sound_algo/web/public/hydra/index.html b/sound_algo/web/public/hydra/index.html new file mode 100644 index 0000000..e78584c --- /dev/null +++ b/sound_algo/web/public/hydra/index.html @@ -0,0 +1,143 @@ + + + + + + sound_algo / hydra + + + + + +
+
+ BPM -- · + beat 0 · + offline +
+ +
+ +
+ +
+ + + + + + + +
+
+
+ + + + + + diff --git a/sound_algo/web/public/index.html b/sound_algo/web/public/index.html new file mode 100644 index 0000000..6b3c717 --- /dev/null +++ b/sound_algo/web/public/index.html @@ -0,0 +1,80 @@ + + + + + + sound_algo / web bridge + + + +

sound_algo

+

Pont web entre le navigateur et SuperCollider.
+ Lance (~base ++ "web_bridge.scd").load dans SC pour activer.

+ +
Status :
+ + + diff --git a/sound_algo/web/server.js b/sound_algo/web/server.js new file mode 100644 index 0000000..5fafb33 --- /dev/null +++ b/sound_algo/web/server.js @@ -0,0 +1,172 @@ +// ===================================================================== +// sound_algo / web / server.js +// +// Pont HTTP + WebSocket + OSC entre le navigateur et SuperCollider. +// +// navigateur (control/hydra) +// | +// | WebSocket (port HTTP 3000) +// v +// server.js +// | +// | OSC UDP (port 57121 -> SC, port 57122 <- SC) +// v +// SuperCollider (sclang) -- voir web_bridge.scd +// +// Convention de paths : +// /control/... : navigateur -> SC (mutations parametres) +// /sync/... : SC -> navigateur (BPM, beats, amplitude voies) +// ===================================================================== +import express from "express"; +import { fileURLToPath } from "node:url"; +import { dirname, join } from "node:path"; +import { createServer } from "node:http"; +import { WebSocketServer } from "ws"; +import osc from "osc"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +// --------------------------------------------------------------------- +// Configuration (modifiable via variables d'environnement) +// --------------------------------------------------------------------- +const HTTP_PORT = parseInt(process.env.HTTP_PORT ?? "3000", 10); +const SC_HOST = process.env.SC_HOST ?? "127.0.0.1"; +const SC_PORT_OUT = parseInt(process.env.SC_PORT_OUT ?? "57121", 10); // -> SC +const SC_PORT_IN = parseInt(process.env.SC_PORT_IN ?? "57122", 10); // <- SC + +// --------------------------------------------------------------------- +// HTTP : Express sert public/ +// --------------------------------------------------------------------- +const app = express(); +app.use(express.static(join(__dirname, "public"))); +app.use(express.json()); + +// Healthcheck simple +app.get("/api/health", (_req, res) => { + res.json({ + ok: true, + sc: { host: SC_HOST, portOut: SC_PORT_OUT, portIn: SC_PORT_IN }, + clients: wss?.clients.size ?? 0, + }); +}); + +const httpServer = createServer(app); + +// --------------------------------------------------------------------- +// WebSocket : navigateur <-> server.js +// --------------------------------------------------------------------- +const wss = new WebSocketServer({ server: httpServer, path: "/ws" }); + +function broadcast(msg) { + const payload = JSON.stringify(msg); + for (const client of wss.clients) { + if (client.readyState === client.OPEN) { + client.send(payload); + } + } +} + +wss.on("connection", (ws) => { + console.log(`[ws] client connecte (total: ${wss.clients.size})`); + + ws.on("message", (raw) => { + let msg; + try { + msg = JSON.parse(raw.toString()); + } catch (err) { + console.error("[ws] message non-JSON:", raw.toString()); + return; + } + // Format : { address: "/control/bpm", args: [128] } + if (typeof msg.address === "string" && Array.isArray(msg.args)) { + // Routage direct browser->browser pour /hydra/* (control -> hydra) + // pas besoin de passer par SC : on broadcast immediatement. + if (msg.address.startsWith("/hydra/")) { + broadcast({ address: msg.address, args: msg.args }); + } else { + sendToSC(msg.address, msg.args); + } + } else { + console.warn("[ws] message mal forme:", msg); + } + }); + + ws.on("close", () => { + console.log(`[ws] client deconnecte (total: ${wss.clients.size})`); + }); + + // Hello message + ws.send(JSON.stringify({ + address: "/sync/hello", + args: [{ portOut: SC_PORT_OUT, portIn: SC_PORT_IN }], + })); +}); + +// --------------------------------------------------------------------- +// OSC : server.js <-> SuperCollider (UDP) +// --------------------------------------------------------------------- +const oscPort = new osc.UDPPort({ + localAddress: "127.0.0.1", + localPort: SC_PORT_IN, + remoteAddress: SC_HOST, + remotePort: SC_PORT_OUT, + metadata: false, +}); + +oscPort.on("ready", () => { + console.log( + `[osc] ready -- ecoute :${SC_PORT_IN} <- SC, envoie -> ${SC_HOST}:${SC_PORT_OUT}`, + ); +}); + +oscPort.on("message", (oscMsg) => { + // SC -> navigateur (broadcast a tous les clients WS connectes) + broadcast({ address: oscMsg.address, args: oscMsg.args }); +}); + +oscPort.on("error", (err) => { + console.error("[osc] erreur:", err.message); +}); + +oscPort.open(); + +function sendToSC(address, args) { + const payload = args.map((v) => { + if (typeof v === "number") { + return Number.isInteger(v) ? { type: "i", value: v } : { type: "f", value: v }; + } + if (typeof v === "string") return { type: "s", value: v }; + if (typeof v === "boolean") return { type: "i", value: v ? 1 : 0 }; + return { type: "s", value: String(v) }; + }); + oscPort.send({ address, args: payload }); +} + +// --------------------------------------------------------------------- +// Demarrage HTTP +// --------------------------------------------------------------------- +httpServer.listen(HTTP_PORT, () => { + console.log(""); + console.log("=== sound_algo web bridge ==="); + console.log(` Landing : http://localhost:${HTTP_PORT}/`); + console.log(` Control : http://localhost:${HTTP_PORT}/control/`); + console.log(` Hydra : http://localhost:${HTTP_PORT}/hydra/`); + console.log(` WebSocket : ws://localhost:${HTTP_PORT}/ws`); + console.log(` Health : http://localhost:${HTTP_PORT}/api/health`); + console.log(""); + console.log(" Cote SC : (~base ++ \"web_bridge.scd\").load"); + console.log(""); +}); + +// --------------------------------------------------------------------- +// Cleanup propre +// --------------------------------------------------------------------- +function shutdown() { + console.log("\n[server] shutdown..."); + wss.close(); + oscPort.close(); + httpServer.close(() => process.exit(0)); +} + +process.on("SIGINT", shutdown); +process.on("SIGTERM", shutdown); diff --git a/sound_algo/web_bridge.scd b/sound_algo/web_bridge.scd new file mode 100644 index 0000000..3d7b7f3 --- /dev/null +++ b/sound_algo/web_bridge.scd @@ -0,0 +1,587 @@ +// ===================================================================== +// web_bridge.scd -- Pont OSC vers le serveur web (sound-algo-web) +// +// Le serveur Node.js (web/server.js) ecoute sur :57121 et nous envoie +// les messages /control/... que la surface de controle declenche. +// Nous lui renvoyons /sync/... (BPM, beats, amplitudes RMS par voie) +// pour synchroniser le canvas Hydra avec le son. +// +// PREREQUIS : +// - 01_live.scd > bloc [0] charge (engine + setupAll + wrappers) +// - web/node_modules installes (npm install fait une fois) +// +// USAGE : +// Cmd+Entree sur le bloc ci-dessous : enregistre les OSCdef. +// Le serveur Node n'est PAS demarre automatiquement (relire le +// fichier ne relance pas Node a chaque fois). +// ~webStart.value -- demarre Node + ouvre /control + /hydra +// ~webBridgeStop.value -- ferme les OSCdef SC +// ~webServerStop.value -- tue le serveur Node +// ~webOpenPages.value -- ouvre /control + /hydra a la main +// ===================================================================== +( +// Idempotence : si on relit le fichier, on ferme l'ancien etat OSC +~webBridgeStop !? { ~webBridgeStop.value }; + +~webBridgeNode = NetAddr("127.0.0.1", 57122); // <- vers le serveur Node +~webBridgeIn = 57121; // <- ecoute du serveur +thisProcess.openUDPPort(~webBridgeIn); + +// Relais additionnels pour oscope-of (openFrameworks visualizer) sur :57123. +// Tout /sync/* envoye au Node est aussi diffuse a ces adresses. +~webBridgeRelays = [NetAddr("127.0.0.1", 57123)]; + +// Wrapper d'envoi : Node + tous les relais +~webBroadcast = { |path ...args| + ~webBridgeNode.sendMsg(path, *args); + ~webBridgeRelays.do { |addr| addr.sendMsg(path, *args) }; +}; + +~webBase = ~base ?? { "/Users/electron/Documents/Projets_Creatifs/sound_algo-refonte-v2/" }; +~webHttpUrl = "http://localhost:3000"; + +// ---------- Auto-lancement serveur Node + ouverture pages ----------- +~webServerCheck = { + ("curl -sf " ++ ~webHttpUrl ++ "/api/health > /dev/null 2>&1").systemCmd == 0; +}; + +~webOpenUrl = { |url| + var cmd = switch (thisProcess.platform.name, + \osx, "open " ++ url, + \linux, "xdg-open " ++ url, + \windows, "start " ++ url, + "open " ++ url + ); + cmd.unixCmd; +}; + +~webOpenPages = { + "[web_bridge] ouverture des pages...".postln; + ~webOpenUrl.(~webHttpUrl ++ "/control/"); + ~webOpenUrl.(~webHttpUrl ++ "/hydra/"); +}; + +~webServerStart = { + var webDir = ~webBase ++ "web"; + if (~webServerCheck.()) { + "[web_bridge] serveur Node deja actif sur :3000".postln; + ~webOpenPages.(); + } { + "[web_bridge] demarrage serveur Node en background...".postln; + ("cd " ++ webDir.shellQuote + ++ " && nohup node server.js > /tmp/sound_algo_web.log 2>&1 &" + ).unixCmd; + Routine({ + var tries = 20, ready = false; + while { tries > 0 and: { ready.not } } { + 0.5.wait; + ready = ~webServerCheck.(); + tries = tries - 1; + }; + if (ready) { + "[web_bridge] serveur Node ready".postln; + ~webOpenPages.(); + } { + "[web_bridge] !! timeout au demarrage du serveur Node".postln; + "[web_bridge] !! voir /tmp/sound_algo_web.log".postln; + }; + }).play(AppClock); + }; +}; + +~webServerStop = { + "pkill -f 'node server.js' 2>/dev/null".unixCmd; + "[web_bridge] serveur Node stoppe (pkill node server.js)".postln; +}; + +// Helper unique pour lancer Node + ouvrir les pages +~webStart = { ~webServerStart.value; }; + +// ---------- Broadcast steps/notes vers le browser ------------------- +~webBroadcastSteps = { + var binVoices = [\kick, \hat, \snare, \clap, \perc]; + var binSyms = [\kickSteps, \hatSteps, \snareSteps, \clapSteps, \percSteps]; + var noteVoices = [\acid, \melody, \harmony]; + var noteSyms = [\acidNotes, \melodyNotes, \harmonyNotes]; + var accents = (~acidAccents ? (0!16)).asArray.collect(_.asInteger); + var slides = (~acidSlides ? (0!16)).asArray.collect(_.asInteger); + binVoices.do { |v, i| + var arr = (currentEnvironment[binSyms[i]] ? (0!16)).asArray.collect(_.asInteger); + ~webBroadcast.value(*(["/sync/steps", v.asString] ++ arr)); + }; + noteVoices.do { |v, i| + var arr = (currentEnvironment[noteSyms[i]] ? (0!16)).asArray.collect(_.asInteger); + ~webBroadcast.value(*(["/sync/notes", v.asString] ++ arr)); + }; + // Acid : accents + slides + params (cutoff/rq/drive/amp) + ~webBroadcast.value(*(["/sync/acidAccents"] ++ accents)); + ~webBroadcast.value(*(["/sync/acidSlides"] ++ slides)); + ~webBroadcast.value("/sync/acidParams", + (~acidCutoff ? 800).asFloat, + (~acidRq ? 0.15).asFloat, + (~acidDrive ? 2.0).asFloat, + (~acidAmp ? 0.3).asFloat); + ~webBroadcast.value("/sync/harmonyAmp", (~harmonyAmp ? 0.14).asFloat); +}; + +// ---------- Helpers de dispatch -------------------------------------- +~webBridgeDefs = List.new; + +// Wrapper protege : toute exception dans une action ne tue pas l'OSCdef +~webBridgeAdd = { |path, action| + var key = ("web_" ++ path.replace("/", "_")).asSymbol; + var safe = { |msg, time, addr, recvPort| + try { + action.value(msg, time, addr, recvPort); + } { |err| + ("[web_bridge] " ++ path ++ " err: " ++ err.errorString).postln; + }; + }; + var def = OSCdef(key, safe, path, recvPort: ~webBridgeIn); + ~webBridgeDefs.add(def); + def; +}; + +~webBridgeStop = { + ~webBridgeDefs.do(_.free); + ~webBridgeDefs = List.new; + ~webBeatRoutine !? { ~webBeatRoutine.stop; ~webBeatRoutine = nil }; + ~webAmpRoutine !? { ~webAmpRoutine.stop; ~webAmpRoutine = nil }; + ~webBpmReloadTask !? { ~webBpmReloadTask.stop; ~webBpmReloadTask = nil }; + ~webStepReloadTask !? { ~webStepReloadTask.stop; ~webStepReloadTask = nil }; + // Restaure ~reload si wrappe par ce module + ~webReloadOriginal !? { + ~reload = ~webReloadOriginal; + ~webReloadOriginal = nil; + }; + "[web_bridge] OSCdef + Routines stopped (serveur Node toujours actif, ~webServerStop pour tuer)".postln; +}; + +// ---------- Debounce helper (200ms) --------------------------------- +// Utilise une Task qu'on reschedule -- le compteur est l'identite de +// la Task : seule la derniere lancee survit jusqu'a l'execution. +~webDebounce = { |slot, delay, action| + currentEnvironment[slot] !? { currentEnvironment[slot].stop }; + currentEnvironment[slot] = Task({ + delay.wait; + try { action.value } { |err| + ("[web_bridge] debounce " ++ slot ++ " err: " ++ err.errorString).postln; + }; + currentEnvironment[slot] = nil; + }).play(AppClock); +}; + +// ---------- Transport ------------------------------------------------ +~webBridgeAdd.("/control/bpm", { |msg| + ~bpm = msg[1]; + TempoClock.default.tempo = ~bpm / 60; + // Debounce reload : evite de reload a chaque tick du slider + ~webDebounce.(\webBpmReloadTask, 0.2, { ~reload.value }); + ~webBroadcast.value("/sync/bpm", ~bpm); +}); + +~webBridgeAdd.("/control/masterVol", { |msg| + ~masterVol.(msg[1]); +}); + +~webBridgeAdd.("/control/masterFadeOut", { |msg| + ~masterFadeOut.(msg[1] ? 8); +}); + +~webBridgeAdd.("/control/teardown", { ~teardown.() }); + +// ---------- Mixer ---------------------------------------------------- +~webBridgeAdd.("/control/setVol", { |msg| + ~setVol.(msg[1].asString.asSymbol, msg[2]); +}); + +~webBridgeAdd.("/control/mute", { |msg| ~mute.(msg[1].asString.asSymbol) }); +~webBridgeAdd.("/control/unmute", { |msg| ~unmute.(msg[1].asString.asSymbol) }); +~webBridgeAdd.("/control/solo", { |msg| ~solo.(msg[1].asString.asSymbol) }); +~webBridgeAdd.("/control/unsolo", { ~unsolo.() }); + +// ---------- Kicks / Patterns / FX preset ----------------------------- +~webBridgeAdd.("/control/kk", { |msg| ~kk.(msg[1].asString.asSymbol) }); +~webBridgeAdd.("/control/pKit", { |msg| ~pKit.(msg[1].asString.asSymbol) }); +~webBridgeAdd.("/control/pGenre", { |msg| ~pGenre.(msg[1].asString.asSymbol) }); +~webBridgeAdd.("/control/ff", { |msg| ~ff.(msg[1].asString.asSymbol) }); + +// ---------- Step sequencer (8 voies x 16 pas) ----------------------- +// Voies drums + 3 voies melodiques (acid/melody/harmony) +[\kickSteps, \hatSteps, \snareSteps, \clapSteps, \percSteps, + \melodySteps, \harmonySteps, \acidSteps].do { |sym| + ~webBridgeAdd.("/control/" ++ sym.asString, { |msg| + var steps = msg[1..].asArray.collect(_.asInteger); + currentEnvironment.put(sym, steps); + // Debounce reload : si l'UI envoie plusieurs voies a la suite + ~webDebounce.(\webStepReloadTask, 0.2, { ~reload.value }); + }); +}; + +// ---------- Acid / Harmony ------------------------------------------- +// Acid : notes + accents + slides + cutoff/rq/drive/amp + random +~webBridgeAdd.("/control/acidNotes", { |msg| + var arr = msg[1..].asArray.collect(_.asInteger); + ~acidNotes = arr; + ~reload.value; +}); +~webBridgeAdd.("/control/acidAccents", { |msg| + var arr = msg[1..].asArray.collect(_.asInteger); + ~acidAccents = arr; + ~reload.value; +}); +~webBridgeAdd.("/control/acidSlides", { |msg| + var arr = msg[1..].asArray.collect(_.asInteger); + ~acidSlides = arr; + ~reload.value; +}); +~webBridgeAdd.("/control/acidCutoff", { |msg| ~acidCutoff = msg[1].asFloat; ~reload.value }); +~webBridgeAdd.("/control/acidRq", { |msg| ~acidRq = msg[1].asFloat; ~reload.value }); +~webBridgeAdd.("/control/acidDrive", { |msg| ~acidDrive = msg[1].asFloat; ~reload.value }); +~webBridgeAdd.("/control/acidAmp", { |msg| ~acidAmp = msg[1].asFloat; ~reload.value }); +~webBridgeAdd.("/control/acidRandom", { |msg| + // msg[1]/msg[2] optionnels : seuils 0..1 pour densite accents/slides + var accProb = (msg[1] ? 0.4).asFloat; + var slidProb = (msg[2] ? 0.3).asFloat; + if (~genAcidNotes.notNil) { ~acidNotes = ~genAcidNotes.value }; + if (~genAcidAccents.notNil) { ~acidAccents = ~genAcidAccents.(accProb) }; + if (~genAcidSlides.notNil) { ~acidSlides = ~genAcidSlides.(slidProb) }; + ~reload.value; +}); + +// Harmony : notes + amp + preset (off/third/fifth/octave/power/shell/sus2/sus4) +~webBridgeAdd.("/control/harmonyNotes", { |msg| + var arr = msg[1..].asArray.collect(_.asInteger); + ~harmonyNotes = arr; + ~reload.value; +}); +~webBridgeAdd.("/control/harmonyAmp", { |msg| ~harmonyAmp = msg[1].asFloat; ~reload.value }); +~webBridgeAdd.("/control/harmonyPreset", { |msg| + var preset = msg[1].asString.asSymbol; + currentEnvironment[\enableHarmony] !? { ~enableHarmony.(preset) } + ?? { ("[web_bridge] ~enableHarmony absent (preset=" ++ preset ++ ")").postln }; +}); + +// ---------- FX par voie ---------------------------------------------- +~webBridgeAdd.("/control/fxCut", { |msg| ~fxCut.(msg[1].asString.asSymbol, msg[2]) }); +~webBridgeAdd.("/control/fxDrive", { |msg| ~fxDrive.(msg[1].asString.asSymbol, msg[2]) }); +~webBridgeAdd.("/control/fxRq", { |msg| ~fxRq.(msg[1].asString.asSymbol, msg[2]) }); + +// ---------- LFO ------------------------------------------------------ +~webBridgeAdd.("/control/lfoTo", { |msg| + ~lfoTo.(msg[1].asString.asSymbol, msg[2], msg[3]); +}); +~webBridgeAdd.("/control/lfoStop", { |msg| ~lfoStopVar.(msg[1].asString.asSymbol) }); +~webBridgeAdd.("/control/lfoStopAll", { ~lfoStopAllVars.() }); + +// ---------- Tricks sceniques ----------------------------------------- +~webBridgeAdd.("/control/drop", { ~drop.() }); +~webBridgeAdd.("/control/breakdown", { |msg| ~breakdown.(msg[1] ? 8) }); +~webBridgeAdd.("/control/buildup", { |msg| ~buildup.(msg[1] ? 8) }); +~webBridgeAdd.("/control/glitch", { |msg| ~glitch.(msg[1] ? 2) }); +~webBridgeAdd.("/control/stutter", { |msg| ~stutter.(msg[1] ? 8, msg[2] ? 1) }); +~webBridgeAdd.("/control/freeze", { ~freeze.() }); +~webBridgeAdd.("/control/tapeStop", { |msg| ~tapeStop.(msg[1] ? 2) }); +~webBridgeAdd.("/control/tapeReverse", { |msg| ~tapeReverse.(msg[1] ? 4) }); +~webBridgeAdd.("/control/handsUp", { ~handsUp.() }); +~webBridgeAdd.("/control/jumpCut", { |msg| ~jumpCut.(msg[1] ? 0.5) }); +~webBridgeAdd.("/control/bitCrushNow", { |msg| + ~bitCrushNow.(msg[1] ? 6, msg[2] ? 6000, msg[3] ? 1); +}); + +// ---------- Navigation sections (jump.scd) --------------------------- +~webBridgeAdd.("/control/jumpTo", { |msg| + var letter = msg[1].asString.asSymbol; + var slug = msg[2].asString.asSymbol; + ~jumpTo.(letter, slug); +}); + +// Liste les sections disponibles : envoie /sync/sections (letter, slug1, slug2, ...) par lettre +~webBridgeAdd.("/control/listSections", { + if (~sections.notNil) { + var letters = ~sections.keys.asArray.sort; + letters.do { |k| + var slugs = ~sections[k].keys.asArray.collect(_.asString); + ~webBroadcast.value(*(["/sync/sections", k.asString] ++ slugs)); + }; + } { + "[web_bridge] ~sections n/a".postln; + }; +}); + +// ---------- Albums (tracks/_index.scd) ------------------------------- +// Liste les albums disponibles : envoie /sync/album par lettre triee +// Format : letter, title, trackCount, totalSec, slug1, slug2, ... +~webBridgeAdd.("/control/listAlbums", { + if (~albums.notNil) { + var letters = ~albums.keys.asArray.sort; + letters.do { |k| + var alb = ~albums[k]; + var title = (alb[\title] ? "").asString; + var tracks = (alb[\tracks] ? []).asArray; + var durations = (alb[\durations] ? []).asArray; + var trackCount = tracks.size; + var totalSec = durations.sum.asInteger; + var slugs = tracks.collect(_.asString); + ~webBroadcast.value(*(["/sync/album", k.asString, title, trackCount, totalSec] ++ slugs)); + }; + } { + "[web_bridge] albums non charges (load tracks/_index.scd)".postln; + }; +}); + +// Sync immediate des steps/notes (appele a la connexion WS du client) +~webBridgeAdd.("/control/getSteps", { ~webBroadcastSteps.() }); + +~webBridgeAdd.("/control/playTrack", { |msg| + var letter = msg[1].asString.asSymbol; + var n = msg[2].asInteger; + currentEnvironment[\playTrack] !? { ~playTrack.(letter, n) } + ?? { "[web_bridge] ~playTrack n/a".postln }; +}); + +~webBridgeAdd.("/control/playAlbum", { |msg| + var letter = msg[1].asString.asSymbol; + var gap = msg[2] ? 8; + currentEnvironment[\playAlbum] !? { ~playAlbum.(letter, gap) } + ?? { "[web_bridge] ~playAlbum n/a".postln }; +}); + +~webBridgeAdd.("/control/stopAlbum", { + currentEnvironment[\stopAlbum] !? { ~stopAlbum.() } + ?? { "[web_bridge] ~stopAlbum n/a".postln }; +}); + +// ---------- Chains scenes (control/chain.scd) ------------------------ +~webBridgeAdd.("/control/chain", { |msg| + var name = msg[1].asString.asSymbol; + var opt = msg[2]; + switch (name, + \intro, { ~chIntro.() }, + \drop, { ~chDrop.() }, + \breakdown, { ~chBreakdown.() }, + \buildup, { ~chBuildup.(opt ? 8) }, + \techno, { ~chTechno.(opt ? 4) }, + \dnb, { ~chDnb.(opt ? 4) }, + \outroFade, { ~chOutroFade.(opt ? 16) }, + \stop, { ~chStop.() }, + { ("[web_bridge] chain inconnue: " ++ name).postln } + ); +}); + +// ---------- Pdef control -------------------------------------------- +~webBridgeAdd.("/control/playPdef", { |msg| + Pdef(msg[1].asString.asSymbol).play(TempoClock.default, quant: 4); +}); +~webBridgeAdd.("/control/stopPdef", { |msg| + Pdef(msg[1].asString.asSymbol).stop; +}); +~webBridgeAdd.("/control/playAll", { + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |n| + Pdef(n).play(TempoClock.default, quant: 4); + }; +}); +~webBridgeAdd.("/control/stopAll", { + [\kickSeq, \hatSeq, \snareSeq, \clapSeq, \percSeq, + \acidSeq, \melodySeq, \harmonySeq].do { |n| Pdef(n).stop }; +}); + +// ---------- Melodies API (~m / ~mInst / ...) ------------------------- +~webBridgeAdd.("/control/mApply", { |msg| + var kind = msg[1].asString.asSymbol; + var n = msg[2].asInteger; + ~m[\apply].(kind, n); +}); +~webBridgeAdd.("/control/mInst", { |msg| ~mInst.(msg[1].asString.asSymbol) }); +~webBridgeAdd.("/control/mAmp", { |msg| ~mAmp.(msg[1]) }); +~webBridgeAdd.("/control/mCut", { |msg| ~mCut.(msg[1]) }); +~webBridgeAdd.("/control/mDrive", { |msg| ~mDrive.(msg[1]) }); +~webBridgeAdd.("/control/mOff", { ~mOff.() }); +~webBridgeAdd.("/control/mGen", { |msg| ~mGen.(msg[1].asString.asSymbol) }); +~webBridgeAdd.("/control/mNx", { ~mNx.() }); +~webBridgeAdd.("/control/mPv", { ~mPv.() }); + +// ---------- Sends FX bus (rev/dly/chr/phs/flg/crsh/tape/shim/dist) ---- +~webBridgeAdd.("/control/sendFx", { |msg| + var bus = msg[1].asString.asSymbol; + var amt = msg[2] ? 0.3; + switch (bus, + \rev, { ~sendReverb.(amt) }, + \dly, { ~sendDelay.(amt) }, + \chr, { ~sendChorus.(amt) }, + \phs, { ~sendPhaser.(amt) }, + \flg, { ~sendFlanger.(amt) }, + \crsh, { ~sendBitcrush.(amt) }, + \tape, { ~sendTape.(amt) }, + \shim, { ~sendShimmer.(amt) }, + \dist, { ~sendDist.(amt) }, + { ("[web_bridge] sendFx bus inconnu: " ++ bus).postln } + ); +}); + +// ---------- VCF master (live/fx.scd) -------------------------------- +~webBridgeAdd.("/control/vcfOn", { |msg| + ~fxVcfOn.(msg[1].asString.asSymbol, msg[2] ? 1500, msg[3] ? 0.5); +}); +~webBridgeAdd.("/control/vcfOff", { ~fxVcfOff.() }); +~webBridgeAdd.("/control/vcfFreq", { |msg| ~fxVcfFreq.(msg[1] ? 1500) }); +~webBridgeAdd.("/control/vcfQ", { |msg| ~fxVcfQ.(msg[1] ? 0.5) }); +~webBridgeAdd.("/control/vcfSweep", { |msg| + ~fxVcfSweep.(msg[1] ? 200, msg[2] ? 5000, msg[3] ? 4); +}); +~webBridgeAdd.("/control/vcfPreset", { |msg| ~fxVcfPreset.(msg[1].asString.asSymbol) }); + +// ---------- Comp / Sat master --------------------------------------- +~webBridgeAdd.("/control/fxComp", { |msg| + var preset = msg[1] !? { msg[1].asString.asSymbol } ?? \glue; + ~fxComp.(preset); +}); +~webBridgeAdd.("/control/fxSat", { |msg| + var mode = msg[1].asString.asSymbol; + var amt = msg[2] ? 1.5; + ~fxSat.(mode, amt); +}); + +// ---------- Scenes (live/scenes.scd) -------------------------------- +~webBridgeAdd.("/control/saveScene", { |msg| + currentEnvironment[\saveScene] !? { ~saveScene.(msg[1].asString.asSymbol) } + ?? { "[web_bridge] ~saveScene n/a".postln }; +}); +~webBridgeAdd.("/control/loadScene", { |msg| + currentEnvironment[\loadScene] !? { ~loadScene.(msg[1].asString.asSymbol) } + ?? { "[web_bridge] ~loadScene n/a".postln }; +}); + +// ---------- Tap tempo (optionnel) ----------------------------------- +~webBridgeAdd.("/control/tap", { + currentEnvironment[\tap] !? { ~tap.() } + ?? { "[web_bridge] ~tap n/a".postln }; +}); + +// ---------- Heartbeat ping/pong -------------------------------------- +~webBridgeAdd.("/control/ping", { + ~webBroadcast.value("/sync/pong", Main.elapsedTime); +}); + +// ---------- Catalogue : SynthDefs et melodies ----------------------- +// /control/listSynthdefs : pour chaque categorie, envoie un message +// /sync/synthdef ... (tries alpha). +~webBridgeAdd.("/control/listSynthdefs", { + var cats = ["drums", "bass", "lead", "pad", "world", "master"]; + cats.do { |cat| + var dir = ~webBase ++ "synth/" ++ cat; + var pn = PathName(dir); + var files = pn.files.select { |f| f.extension == "scd" }; + var names = files.collect { |f| f.fileNameWithoutExtension }.asArray.sort; + ~webBroadcast.value(*(["/sync/synthdef", cat] ++ names)); + }; +}); + +// /control/listMelodies : pour chaque genre du ~melodyBank, envoie +// /sync/melody ... +~webBridgeAdd.("/control/listMelodies", { + if (~melodyBank.notNil) { + ~melodyBank.keys.asArray.sort.do { |g| + var names = ~melodyBank[g].asArray.collect(_.asString); + ~webBroadcast.value(*(["/sync/melody", g.asString] ++ names)); + }; + } { + "[web_bridge] ~melodyBank non charge".postln; + }; +}); + +// /control/setMelody [name:str] : applique une melodie nommee a +// ~melodyNotes. Utilise ~useMelody si dispo, sinon assigne direct. +~webBridgeAdd.("/control/setMelody", { |msg| + var name = msg[1].asString.asSymbol; + currentEnvironment[\useMelody] !? { ~useMelody.(name) } ?? { + currentEnvironment[name] !? { + ~melodyNotes = currentEnvironment[name].asArray; + ~reload.value; + } ?? { ("[web_bridge] melodie inconnue: " ++ name).postln }; + }; +}); + +// ---------- Hook ~reload : broadcast auto des steps apres reload ---- +// Wraper idempotent : si deja installe, on ne wrap pas a nouveau. +if (~webReloadOriginal.isNil and: { ~reload.notNil }) { + ~webReloadOriginal = ~reload; + ~reload = { + ~webReloadOriginal.value; + // Diffuse 250ms apres pour laisser les mutations se stabiliser + // (le debounce interne de ~reload tourne sur ~200ms). + AppClock.sched(0.25, { ~webBroadcastSteps.(); nil }); + }; +}; + +// ---------- SC -> web : envoi du beat (sync visuel) ------------------ +// AppClock + (60/bpm).wait : intervalle en secondes, previsible. +~webBeatRoutine !? { ~webBeatRoutine.stop }; +~webBeatRoutine = Routine({ + inf.do { + ~webBroadcast.value("/sync/beat", ~bpm ? 128); + (60 / (~bpm ? 128)).wait; + }; +}).play(AppClock); + +// ---------- SC -> web : amplitude par voie (parametres statiques) ---- +// Les ~xxxAmp sont les volumes du mixer (parametres, pas du signal). +// Hydra peut les utiliser pour pondérer la réactivité par voie. +// 8 voies envoyees (kick, hat, snare, clap, perc, melody, acid, harmony). +~webAmpRoutine !? { ~webAmpRoutine.stop }; +~webAmpRoutine = Routine({ + inf.do { + ~webBroadcast.value("/sync/amp", "kick", ~kickAmp ? 0); + ~webBroadcast.value("/sync/amp", "hat", ~hatAmp ? 0); + ~webBroadcast.value("/sync/amp", "snare", ~snareAmp ? 0); + ~webBroadcast.value("/sync/amp", "clap", ~clapAmp ? 0); + ~webBroadcast.value("/sync/amp", "perc", ~percAmp ? 0); + ~webBroadcast.value("/sync/amp", "melody", ~melodyAmp ? 0); + ~webBroadcast.value("/sync/amp", "acid", ~acidAmp ? 0); + ~webBroadcast.value("/sync/amp", "harmony", ~harmonyAmp ? 0); + 0.1.wait; + }; +}).play(AppClock); + +// ---------- SC -> web : VRAI RMS audio sur master (bus 0) ------------ +// Architecture actuelle : tous les Pdef sortent vers le bus 0 (pas de +// bus dedie par voie). Donc on capture un RMS GLOBAL sur master via +// SynthDef + SendReply.kr a 20 Hz. Hydra peut combiner ce RMS reel +// avec les ~xxxAmp parametres pour decoupler par voie. +// +// Message OSC : /sync/rms master +SynthDef(\webRmsProbe, { |inBus = 0, rate = 20| + var sig = Mix.ar(In.ar(inBus, 2)) * 0.5; + var amp = Amplitude.kr(sig, 0.01, 0.2); + SendReply.kr(Impulse.kr(rate), '/webRms', [amp]); +}).add; + +~webRmsResp !? { ~webRmsResp.free }; +~webRmsSynth !? { ~webRmsSynth.free }; + +// On attend que le SynthDef soit envoye au serveur avant de creer le Synth +Server.default.sync; +~webRmsSynth = Synth.tail(nil, \webRmsProbe, [\inBus, 0, \rate, 20]); + +~webRmsResp = OSCFunc({ |msg| + // msg = ['/webRms', nodeID, replyID, amp] + ~webBroadcast.value("/sync/rms", "master", msg[3].asFloat); +}, '/webRms', Server.default.addr); + +// Annonce initiale +~webBroadcast.value("/sync/bpm", ~bpm ? 128); +~webBroadcastSteps.(); + +"=== web_bridge ready ===".postln; +(" Listen : :" ++ ~webBridgeIn).postln; +" Send to : 127.0.0.1:57122".postln; +" Start web: ~webStart.value".postln; +" Stop SC : ~webBridgeStop.value".postln; +" Stop web : ~webServerStop.value".postln; +" Webapp : http://localhost:3000/".postln; + +// Le serveur Node n'est PAS lance automatiquement -- decommenter si besoin +// ou appeler ~webStart.value depuis l'IDE. +// ~webServerStart.value; +)