Device Details
Overview
Name | Version: | Kasm Arpeggiator 1.14 |
Author: | kevleyski |
Device Type: | MIDI Effect |
Description: | Rust code arpeggiators in Ableton Live! With canvas visualizer! This is a demonstration of the Kasm Rust SDK arpeggiator feature. This is a basic demo version of a paid version with heaps more patterns and encoder controlled variations, but hey you can also go make your own, grab the Kasm SDK here: https://pyrmontbrewery.com/get_kasm Testers of this device get A$25 off of the SDK, in Ableton click the "Kasm Rust" title as shown the image above to get the current coupon code - if you can leave a comment here that's wonderful, but no worries mate Students also get a 30% discount, use KASMSTU at the checkout !! NOTE: you need the latest Ableton 12.2 for this as it uses the new V8 jsinterp from Max9 !! But... if you don't have Max4Live or have an older Ableton Live version no worries - Kasm is WebAssembly so it also runs on a regular web browsers too! You can interface with Ableton via WebMIDI instead, this way you can develop and test with Kasm SDK in Chrome/Firefox, try it out here: https://pyrmontbrewery.com/kasm For those interested, this is what the Arpeggiator Rust code looks like (Ableton Live and Web version uses identical WebAssembly)... pub enum ArpeggiatorMode { Up = 0, Down = 1, UpDown = 2, DownUp = 3, Random = 4, Flow = 5, UpIn = 6, DownIn = 7, ExpandingUp = 8, ExpandingDown = 9, LowAndUp = 10, LowAndDown = 11, HiAndUp = 12, HiAndDown = 13, Chord = 14, Octaves = 15, UpDownRepeat = 16, DownUpRepeat = 17, DoubledUp = 18, DoubledDown = 19, Converge = 20, Diverge = 21, ConvergeDiverge = 22, ThumbUp = 23, ThumbUpDown = 24, PinkyUp = 25, PinkyUpDown = 26, CycleThirds = 27, SkipOneUp = 28, SkipOneDown = 29, OuterToInner = 30, InnerToOuter = 31, ReverseFlow = 32, StaggeredUp = 33, StaggeredDown = 34, Bounce = 35, RandomSkip = 36, ChordPulse = 37, OctaveJumpUp = 38, OctaveJumpDown = 39, SpiralUp = 40, SpiralDown = 41, DoubleBackUp = 42, DoubleBackDown = 43, MirrorUp = 44, MirrorDown = 45, RandomMirror = 46, ZigZagUp = 47, // ZigZag Up ZigZagDown = 48, // ZigZag Down ZigZagUpDown = 49, // ZigZag Up & Down ZigZagDownUp = 50, // ZigZag Down & Up SpiralIn = 51, // Spiral In SpiralOut = 52, // Spiral Out SpiralInOut = 53, // Spiral In & Out SpiralOutIn = 54, // Spiral Out & In PinkyDown = 55, // Pinky Down PinkyDownUp = 56, // Pinky Down & Up ThumbDown = 57, // Thumb Down ThumbDownUp = 58, // Thumb Down & Up RandomOctave = 59, // Random Octave RandomCycle = 60, // Random Cycle RandomCycleOctave = 61, // Random Cycle Octave AsPlayed = 62, // As Played MonoBassline = 63, // Mono Bassline ArcadeTrills = 64, // Arcade Trills BouncingFunk = 65, // Bouncing Funk ChordCycle01 = 66, // Chord Cycle 01 ClassicCycle01 = 67, // Classic Cycle 01 ClassicCycle02 = 68, // Classic Cycle 02 ClassicCycle03 = 69, // Classic Cycle 03 ClassicCycle04 = 70, // Classic Cycle 04 ClassicCycle05 = 71, // Classic Cycle 05 ClassicCycle06 = 72, // Classic Cycle 06 ClassicGroove01 = 73, // Classic Groove 01 ClassicGroove02 = 74, // Classic Groove 02 ComplexChordGroove01 = 75, // Complex Chord Groove 01 ComplexChordGroove02 = 76, // Complex Chord Groove 02 ComplexChordGroove03 = 77, // Complex Chord Groove 03 ComplexChordGroove04 = 78, // Complex Chord Groove 04 ComplexChordGroove05 = 79, // Complex Chord Groove 05 ComplexChordGroove06 = 80, // Complex Chord Groove 06 ComplexChordGroove07 = 81, // Complex Chord Groove 07 ComplexChordGroove08 = 82, // Complex Chord Groove 08 ComplexChordGroove09 = 83, // Complex Chord Groove 09 ComplexChordGroove10 = 84, // Complex Chord Groove 10 FallingGlitch = 85, // Falling Glitch GroovyCycle01 = 86, // Groovy Cycle 01 GroovyCycle02 = 87, // Groovy Cycle 02 GroovyCycle03 = 88, // Groovy Cycle 03 GroovyCycle04 = 89, // Groovy Cycle 04 GroovyCycle05 = 90, // Groovy Cycle 05 GroovyCycle06 = 91, // Groovy Cycle 06 GroovyCycle07 = 92, // Groovy Cycle 07 GroovyCycle08 = 93, // Groovy Cycle 08 GroovyCycle09 = 94, // Groovy Cycle 09 GroovyCycle10 = 95, // Groovy Cycle 10 GroovyCycle11 = 96, // Groovy Cycle 11 PercolatingAccents = 97, // Percolating Accents Rolling8ths = 98, // Rolling 8ths ShiftingPulse01 = 99, // Shifting Pulse 01 ShiftingPulse02 = 100, // Shifting Pulse 02 SimpleChordGroove01 = 101, // Simple Chord Groove 01 SimpleChordGroove02 = 102, // Simple Chord Groove 02 SimpleChordGroove03 = 103, // Simple Chord Groove 03 SimpleChordGroove04 = 104, // Simple Chord Groove 04 SimpleChordGroove05 = 105, // Simple Chord Groove 05 SimpleChordGroove06 = 106, // Simple Chord Groove 06 SimpleChordGroove07 = 107, // Simple Chord Groove 07 SimpleChordGroove08 = 108, // Simple Chord Groove 08 SimpleGroove01 = 109, // Simple Groove 01 Swung16ths02 = 110, // Swung 16ths 02 Swung16ths = 111, // Swung 16ths SwungChordCycle = 112, // Swung Chord Cycle SwungChordGroove01 = 113, // Swung Chord Groove 01 SwungChordGroove02 = 114, // Swung Chord Groove 02 SwungChordGroove03 = 115, // Swung Chord Groove 03 SwungChords05 = 116, // Swung Chords 05 SwungDownbeatChords = 117, // Swung Downbeat Chords SwungGroove01 = 118, // Swung Groove 01 SwungGroove02 = 119, // Swung Groove 02 SwungGroove03 = 120, // Swung Groove 03 SwungGroove04 = 121, // Swung Groove 04 SwungGroove05 = 122, // Swung Groove 05 SwungGroove06 = 123, // Swung Groove 06 SwungGroove07 = 124, // Swung Groove 07 SwungGroove08 = 125, // Swung Groove 08 SwungGroove09 = 126, // Swung Groove 09 SwungGroove10 = 127, // Swung Groove 10 SwungGroove11 = 128, // Swung Groove 11 SwungGroove12 = 129, // Swung Groove 12 SwungGroove13 = 130, // Swung Groove 13 SwungGroove14 = 131, // Swung Groove 14 SwungOffbeatChords = 132, // Swung Offbeat Chords SyncopatedChords = 133, // Syncopated Chords TripletGroove01 = 134, // Triplet Groove 01 TripletGroove02 = 135, // Triplet Groove 02 TripletGroove03 = 136, // Triplet Groove 03 TripletGroove04 = 137, // Triplet Groove 04 TripletGroove05 = 138, // Triplet Groove 05 TripletGroove06 = 139, // Triplet Groove 06 TwelveBeatLightlySwung = 140, // Twelve Beat Lightly Swung TwelveBeatSwungChords = 141, // Twelve Beat Swung Chords TwelveBeatsCycle01 = 142, // Twelve Beats Cycle 01 TwelveBeatsCycle02 = 143, // Twelve Beats Cycle 02 TwelveBeatsCycle03 = 144, // Twelve Beats Cycle 03 TwelveBeatsCycle04 = 145, // Twelve Beats Cycle 04 Acid01 = 146, // Acid01 Acid02 = 147, // Acid02 Berlin01 = 148, // Berlin01 ThreeFiveSeven = 149, // 357 Cell = 150, // Cell Minimal = 151, // Minimal Obliq = 152, // Obliq RndFew = 153, // RndFew RndSome = 154, // RndSome RndMost = 155, // RndMost RndAll = 156, // RndAll } fn generate_note_sequence() -> Vec i32 { let held_notes = HELD_NOTES.lock().unwrap(); let flow_order = FLOW_ORDER.lock().unwrap(); let mode = *ARPEGGIATOR_MODE.lock().unwrap(); if held_notes.is_empty() { return vec![]; } let notes: Vec i32 = held_notes.iter().map(|n| n.note).collect(); match mode { ArpeggiatorMode::Up => notes, ArpeggiatorMode::Down => { let mut reversed = notes; reversed.reverse(); reversed }, ArpeggiatorMode::UpDown => { let mut sequence = notes.clone(); let mut down = notes; down.reverse(); if down.len() > 1 { down.remove(0); // Remove duplicate of highest note } if sequence.len() > 1 { down.remove(down.len() - 1); // Remove duplicate of lowest note } sequence.extend(down); sequence }, ArpeggiatorMode::DownUp => { let mut sequence = notes.clone(); sequence.reverse(); let mut up = notes; if up.len() > 1 { up.remove(0); // Remove duplicate of lowest note } if sequence.len() > 1 { up.remove(up.len() - 1); // Remove duplicate of highest note } sequence.extend(up); sequence }, ... |
Details
Live Version Used: | 12.2 |
Max Version Used: | 9.0 |
Date Added: | Aug 16 2025 10:49:46 |
Date Last Updated: | Aug 16 2025 11:34:56 |
Downloads: | 42 |
ⓘ License: | None |
Average Rating
Log in to rate this device |
-n/a- |
Files
Device File: | Kasm Arpy.amxd |
Login to comment on this device.
Browse the full library