Skip to content

Releases: the-drunk-coder/megra.rs

Mégra 0.0.13

08 Sep 15:16
Compare
Choose a tag to compare

As for AppImages, there's one built on Ubuntu and one built on Arch, so you can choose the one closest to your system (both x86_64).

The Ubuntu one might be more generic, but somehow doesn't run on Arch. I still have to figure that out ...

As always, choose the ringbuffer version if you don't want to worry about your system's blocksize. If you can fix it to 512, choose the other one.

Changes for Mégra 0.0.13

  • Visualizer: :exclude keyword to selectively exclude parts from being visualized
  • Visualizer: using ls with compose now leads to individual visualizations for the composed markov chains
  • Visualizer: correctly clearing composed, wrapped generators (no "leftovers")
  • Samples: adding "exclude.txt" to sample folder allows excluding samples
  • Language: vals can now define a row of lookup keys when provided the 'keys symbol as second parameter
  • Effects: add configurable bitcrusher with parameters bcbits bcmode bcdown bcmix
  • Bugfix: sample parameters after sample number are now evaluated
  • Synth: add a simple BLIT oscillator
  • Bugfix: pear now clears probability (sets it back to 100) after :for, as it should be ...
  • Improvement: allow sending OSC from scheduled control events
  • Improvement: allow print in ctrl event
  • Improvement: finally implement ctrl events in step-part
  • Improvement: step-part with identifier AND symbol ...
  • Improvement: bpm for ctrl events
  • Improvement: step-part for ctrl events
  • Improvement: vec for nuc
  • New language construct: mapper, a rudimentary event mapper that takes functions
  • New langauge constructs: event getters to extract a parameter from an event ev-param, ev-tag and ev-name
  • New language construct: note event (can be used to drive scoreviz in conjunction with mapper)
  • New (non-lazy) arithmetic functions: round, floor and ceil
  • midi-mul, midi-add, midi-sub, midi-div, to work with midi notes
  • to-string to turn numbers and some other stuff into strings
  • Language: line between function and macro is now very blurred, i.e. you can do (fun (name) (fun (concat "to-" name) () (send-to name))),
    where in the child function definition name will be replaced ... this may explode at any given moment !!
  • Bugfix (Visualizer): a failed visualizer message doesn't crash scheduling thread anymore
  • Improvement (Visualizer): sending visualizer messages in multiple batches for bigger generators
  • Bugfix: rep not chrashing when generator contains childless states
  • Synth: freeze-add for additive live looping

Mégra 0.0.12

17 Mar 09:08
Compare
Choose a tag to compare
Mégra 0.0.12 Pre-release
Pre-release

Changes for Mégra Version 0.0.12:

  • Editor: Ctrl+S selects current S-Expression
  • Editor: Alt+Up/Down moves between S-Expression
  • Language: @rest and @all for variable argument handling in functions
  • Language: () (empty parenthesis) now evaluate to false
  • Language: comparisons, comparators and a more powerful match statement
  • Language: better naming behaviour for learn, handling sample strings with line breaks correctly
  • Language: corrected behaviour of every, which had an incorrect modulo operation
  • Language: every now also works correctly on transitions with dur events
  • Synth: kpp - KarPlusPlus, a Karplus-Strong approximation.

Known Issues:

Sample events need the :sus argument explicitly specified if you want to use sus-mul further down the line.

;; this won't work
(sx 'foo #t 
    (pear (sus-mul 1.5)
       (nuc 'ba (violin))))

;; this will
(sx 'foo #t 
    (pear (sus-mul 1.5)
       (nuc 'ba (violin :sus 1000))))

Mégra 0.0.11

30 Nov 21:40
Compare
Choose a tag to compare
Mégra 0.0.11 Pre-release
Pre-release

Changes for Mégra Version 0.0.11:

  • send OSC messages to visualizer as bundle (no more stuck nodes)
  • simple spread function (without expanding)
  • resync flag for sx
  • experimental --karl-yerkes-mode (evaluate current expression on every modification)
  • load-file - load other megra files
  • startup file to define instruments etc.
  • allow vec to construct cyc and loop
  • allow nested vec to create chords in loop and cyc
  • mosc (multi-oscillator synth)
  • min and max limiters
  • idx argument for incomplete events (freq-mul and the like) to target specific fields
  • improved sound card handling (should work now on soundcards without input)

Known Issues

If you want to define a function without parameters, the intuitive way to do this would be just leaving the parenthesis empty, but this currently doesn't work. To do so, you have to pass a #f flag:

(fun noparam #f
	(once (saw 100)))

Mégra 0.0.10

30 Sep 10:40
Compare
Choose a tag to compare
Mégra 0.0.10 Pre-release
Pre-release

Changes for Mégra Version 0.0.10:

  • introduce progn
  • introduce match
  • introduce fun (function definition)
  • introduce callback (callback definition, same as fun but as a mnemonic)
  • introduce let (variable definition), defpart now maps to let (no change from user perspective)
  • introduce print
  • introduce midi helpers mtof, mtosym, veltodyn
  • introduce concat to concatenate symbols and strings
  • introduce map struct, pair constructor and insert method
  • add osc sender
  • add some extra types (f64, i32, i64) for osc sender
  • add osc receiver
  • osc callbacks (toplevel functions with args)
  • much more flexible midi callback (toplevel functions with args)
  • start midi port from language instead of from command line
  • negative playback rates for samples (can't believe I didn't think about that before ...)
  • (kinda) lazy evaluation for the arithmetic functions
  • 16-channel mode
  • arbitrary labels for learn
  • allow defining event mappings for learn as map
  • allow defining samples for learn as vec
  • sync on ctrl events
  • :tie flag for learn (auto-restart in case generator gets stuck)
  • reliable playback for long samples

Known Issues

Mégra will always look for an audio input device, and might not start on computers that don't have an audio input device. On laptops, which typically have an internal microphone, or using an external sound card that has both input and output, this shouldn't be an issue. On a computer like a Mac Mini, which doesn't have a built-in microphone, Mégra might not start without an external sound card (to be fixed in the future).

Mégra 0.0.9

31 May 18:20
Compare
Choose a tag to compare
Mégra 0.0.9 Pre-release
Pre-release

If you have used Mégra before version 0.0.8, please also check out the breaking changes there!

Changes for Mégra Version 0.0.9

  • cyc repetition time handling has been fixed
  • dynamic parameters for facts and vals
  • new and more flexible ways to work with samples:
    • keys, keys-add, keys-sub function to replace keys along the pipeline
    • random-sample with shorthand rands to choose a different, random sample every time
    • sample-number (with add,mul,sub and div), with shorthand sno to modify sample numbers
  • corrections in markov chain learning
  • short samples for learn don't cause a crash anymore
  • fixed crash in wavematrix generation
  • synth events now work properly without frequency argument

Mégra 0.0.8

06 May 06:48
Compare
Choose a tag to compare
Mégra 0.0.8 Pre-release
Pre-release

BREAKING CHANGES !

cyc and loop constructors have been changed and, as of now, handle time differently.

  • cyc now slices a fixed-length time cycle into equal parts, according to the number of events provided
  • loop works as before, as a loop of variable time-lenght, where each transition between events is given a fixed transition time
  • both loop and cyc now accept shorthand syntax
  • shorthand syntax has changed a bit

For details, please check the documentation: https://megra-doc.readthedocs.io

Mégra 0.0.7

21 Apr 08:20
Compare
Choose a tag to compare
Mégra 0.0.7 Pre-release
Pre-release

Changes for Mégra Version 0.0.7:

  • add startup flag for maximum number of sample buffers.
  • transpose function
  • update egui dependency to latest version
  • add basic arithmetic functions
  • facts constructor
  • vals constructor
  • allow usage of stereo samples
  • ambisonic-binaural sources (samples only)
  • pear with dur event is now applied to first transition
  • state preservation for named generator processors
  • optional id for every
  • sample import/download mechanism import-sample-set
  • simple cubic waveshaper
  • got rid of (some) annoying clicks when using live input

Known Problems:

  • learn constructor can crash the program if sample strings are too short
  • first keyword parameter isn't read for synths if no note/frequency is specified

Mégra.rs 0.0.6

02 Dec 20:36
Compare
Choose a tag to compare
Mégra.rs 0.0.6 Pre-release
Pre-release

See changelog for new features: https://github.com/the-drunk-coder/megra.rs/blob/main/changelogs/megra_0_0_6.md

There's plenty of new filters in this release.

For macOS, you might need to make the files executable by running chmod +x /path/to/downloaded/megra.

This time, I didn't attach a Linux build because making a 100% portable build is tricky, while installing cargo isn't all that hard. Thus,
I recommend installing cargo using your distro's package manager, and use the respective installation method as described in the
documentation.

For documentation and tutorial, including alternative installation methods, check: https://megra-doc.readthedocs.io/en/latest/

(Spanish version of the documentation is in the making.)

Mégra.rs 0.0.5

01 Aug 22:16
Compare
Choose a tag to compare
Mégra.rs 0.0.5 Pre-release
Pre-release

Now with LFOs and many other improvements.

For macOS and Linux, you might need to make the files executable with chmod +x

For documentation and tutorial, check: https://megra-doc.readthedocs.io/en/latest/

(spanish version of the documentary is in the making)

Mégra.rs 0.0.4

22 Mar 00:54
Compare
Choose a tag to compare
Mégra.rs 0.0.4 Pre-release
Pre-release

Mégra.rs 0.0.4

Use the non-ringbuffer versions if you can make sure your system blocksize is fixed at 512 samples. Otherwise use the ringbuffer version, it might be more stable, but slightly less performant.

Known Issues:

  • You need an input- and an output device to be present on your system, even if you don't use input.
  • On Windows, a USB sound card might work better than internal laptop sound cards.

Alternative Installation:
You can also install from crates.io with cargo, if you have a Rust build environment up and running:

# standard
cargo install megra_rs

# ringbuffer
cargo install megra_rs --features ringbuffer

Enjoy, and good luck!