
crow
Official crow firmware.
formonome crow·by@monome
Unclaimed. Is this yours? Sign in with GitHub as @monome to claim it.
crow.dfu· 282 KB· +4 files
GPL-3.0· monome/crow·downloads come from the creator’s GitHub releases
v4.0.5Version 4.0.5Latest5 files
FIX Hyperbolic math functions have been restored (Lua 5.2 math compatibility mode) FIX
output[n].query()[andoutput[n].receive = ...] have been fixedv4.0.4Version 4.0.42 files
Fixes #488 Fixes #487 Fixes #483
In general, the behaviour when using
^^cto clear the script will correctly initialize the system now.v4.0.3Version 4.0.32 files
Few small fixes for 4.0.2
v4.0.2RCVersion 4.0.22 files
a huge number of changes all focused on reducing runtime RAM usage, especially when communicating with many ii devices.
v4.0.1Version 4.0.12 files
NEW
timelinelibrary: DOCS NEWsequins: transformers: DOCS NEWsequins: string-syntax: DOCS NEWhotswaplibrary: DOCS NEW seeded pseudo-random generator available asmath.srandom(): DOCS NEW support for newest hardware revision (debug led & hardware i2c pullups) NEW extendeddistingii interface (thanks @jroo, @ryland) NEW method for peeking the current sequins value (thanks @tyleretters)FIX ASL segments now correctly handle
'log'shapes (thanks @beels) FIX dsp samplerate was incorrect. ASL now runs at the correct speed FIXi2ctiming refined for more reliable transmission FIXi2cdriver more resilient to errors FIXinput[n].query()now works correctly via norns (using theinput[n].streamevent) FIX solve "out of memory" errors when loadingiilibraries in data-heavy scripts FIXinput[n].scalemode avoids double-triggers near note boundaries FIXii.<module>.help()is no longer truncated to 1024 characters FIXiiaddress now correctly applies for up to 4 simultaneous crows on the bus FIXclock.synctiming is now more accurate, and runs indefinitely FIX changingclock.tempowhileclockroutines are running no longer skips events FIX true random generator recovers when becoming insufficiently entropic//
Huge thanks to all the contributors!
Updated scripting reference is here.
For anyone with a norns, lookout for @tehn's
fledgescript which makes the firmware update a breeze.v4.0RC6v4.0 Release Candidate 6Beta1 file
Fix for
sequins:settable(used byhotswap) where sequins-with-transformers would error when copying.v4.0RC5v4.0 Release Candidate 5Beta1 file
to flash this release candidate:
- download the zip file and unzip it
- connect crow to a computer which has druid and dfu-util installed
- macOS: you might need to unquarantine the update file
- open a terminal and type in
chmod u+x(with a space after) and drag theosx_linux-update_firmware.commandfile onto the terminal window to autocomplete the command, eg.chmod u+x /Users/me/Downloads/crow-v4.0RC5/osx_linux-update_firmware.command - press return on your keyboard to execute the command
- open a terminal and type in
- in a terminal, execute
druidand when it loads, execute^^bto put crow into bootloader mode - double-click the
update_firmwarefile in thecrow-v4.0RC5folder that corresponds to your OS- windows:
windows-update_firmware.bat - macOS or linux:
osx_linux-update_firmware.command
- windows:
- once complete, you should see
crow connectedin druid
v4.0RC4v4.0 Release Candidate 4Beta1 file
Tiny updates for 4.0 RC.
v3.0.1Version 3.0.12 files
Small patch for fixes from v3.0.0
Changes
- FIX ASL strings accepted from norns (eg.
crow.output[1].action = "lfo()") - FIX First.lua doesn't error on load (uses ASL2
dynnow) - NEW improve ASL2 error messaging for debugging scripts
- CHANGE
delay()is now implemented withclock(no moremetroconflicts, and more slots available) - FIX
crow.reset()returnsclockmodule to default state & tempo - FIX
output[n].actionandoutput[n].executeare fixed (fixes many norns scripts) - FIX the last sample of an ASL slope would not be applied (causing issues at very fast rates)
- FIX ASL strings accepted from norns (eg.
v3.0.0Version 3.0.02 files
A massive update of quality & quantity. Version 3 brings a great deal of new functionality, while solving some bugs & making the ecosystem more robust.
Three new core libraries are introduced for :
sequinsattaches 'behaviour' to data. quickly build sequencers & arpeggiators.clockenables scripting in time with global tempo. mirrors thenornsimplementation.publicshares values with a remote host. remote crow editing & auto-generated UIs.
"A Slope Language" has been updated to ASL2, bringing sample-accuracy & audio-rate oscillation possibilities. New dynamic variables (
dyn) are introduced for updating running ASLs without restarting, plus mutation methods allow for algorithmic waveforms.Just Intonation support is added with
justvoltsandjust12helper functions, as well as explicit support for input quantizers in JI, andoutput.scalewith JI ratios.Changelog
- BREAKING ASL2 runs at audiorate & introduces
dyn. Inline Lua fns no longer supported - NEW Sequins library for rapidly building sequencers & arpeggiators
- NEW Clock library for asynchronous scripting & global transport control
- NEW Public library for simplified remote-control & dynamic UI building for crow scripts
- NEW Just Intonation support (functions, input.mode('scale'), output.scale)
- NEW input.mode('freq') for tracking the frequency of an input signal (channel 1 only)
- CHANGE Userscripts can now be 16k characters (previously 8k)
- NEW support for Teletype
iicontrol (crow as follower). Requires Teletype 4.0+ - FIX aliasing an
iidevice before use would lead to a RAM overflow - FIX
output.voltsnow returns the current voltage at the output jack after shaping & scaling - BREAKING Calibration engine overhauled for explicit control. New auto-calibrate script added
v3.0.0b0v3.0.0 beta 0Beta2 files
beta release of crow v3.0.0
some (kinda outdated) background https://github.com/monome/crow/issues/348
changelog
- NEW norns-style
clocksupport - NEW
sequinslibrary for building sequencers & arpeggiators - CHANGE ASL updated to v2. full audiorate support, dynamic vars, named parameters.
- NEW
publiclibrary for synchronizing variable state with a usb host (eg norns) - NEW just intonation support (functions, input.scale, output.scale)
- NEW frequency detection mode
input[1].mode('freq')-->input[1].freq(hz) ... end. notes - FIX calibration engine overhauled. more accurate & scriptable in lua. example.
- CHANGE userscript storage space is doubled to 16k characters
- FIX RAM usage is dramatically reduced for more runtime memory
- NEW routines for sending raw i2c messages @csboling
- FIX ADC timing & accuracy improvement (lower latency & less noise)
- NEW output.scale can be updated with variable style
output[n].scale = {0,3,6,9} - FIX aliasing an
iidevice before using it would previously lead to an out-of-memory crash - FIX
v = output[n].voltsnow returns the actual voltage at the output jack (shaped & scaled) - NEW up to four
ii.crowfollowers are now supported
breaking changes
- NEW ASL2 no longer supports functions as values (use
dynandmutableinstead) - FIX delay() lib function so it doesn't repeat twice
- NEW norns-style
v2.2.0Version 2.2.02 files
Primarily a maintenance update, pulling in some bugfixes & tooling updates.
New 'raw' communication with
iiis especially useful for anyone developing a newii-enabled device without needing to build a new firmware. See the PR for details. Full documentation coming with next release.- NEW
ii.rawandii.event_rawfor communicating toiidevices without native support @csboling - FIX uploaded userscripts could cause boot to fail, requiring force-bootloader
- FIX
delayfunction would execute 1 too many times - FIX
inputreadings are more stable & accurate
- NEW
v2.1.2Version 2.1.22 files
Patch update to fix missing Disting EX support
See v2.1.1 for full details.
v2.1.1Version 2.1.11 file
NB: hot-fix for modules that wouldn't enumerate after the 2.1.0 update
This update primarily adds support for new
iidevices: W/2 (wtape,wdel,wsyn), Disting EX (disting), and multiple crows (crow). Full docs are forthcoming, but for now you can inquire on-device by sendingii.<device>.help()(eg.ii.wtape.help()to see the full supported API for that device.crow to crow communication
Communication from crow to crow enables:
- expanded I/O capabilities:
ii.crow.volts(...),ii.crow.slew(...)andii.crow.input(...) - high-level I/O helpers:
ii.crow.pulse(...),ii.crow.ar(...),ii.crow.lfo(...) - generic commands:
ii.crow.call1(...),ii.crow.call2(...),ii.crow.call3(...),ii.crow.call4(...) - generic requests:
ii.crow.query0(),ii.crow.query1(...),ii.crow.query2(...),ii.crow.query3(...)
The I/O commands above are handled automatically, so the second crow doesn't need a script running at all. You can also send
ii.crow.reset()to make sure the second crow isn't runningFirstor some other uploaded script.Using the
ii.crow.input(ch)query, will respond with the eventii.crow.event( event )as is customary foriidevices.When the above I/O behaviours aren't sufficient for your uses, you can use the generic commands & requests. These require you to upload a script onto the second crow that handles the generic events. Do so by re-defining the functions:
ii.self.call(...) -- where ... are the received arguments (not a table) ii.self.query(...) -- this function should return the value to be sent back over iiThis feature is marked as 'Early Access' as the command list may change somewhat after we receive more feedback of it in use. Everything works as described, but we welcome your feedback if you can improve things.
For those using crow with norns, you'll need the (TBD) release or later to take advantage of the new
iifeatures.Log
- NEW
iisupport for W/2.0 firmware - NEW [Early Access]
iisupport for Disting EX - NEW [Early Access]
iisupport for crow to crow communication - FIX
iitransmission speed increased to 400kHz (was ~90kHz) - FIX setting
metrotime to zero no longer causes crash (clamps to 500uS) - FIX
crow.reset()now resetsoutput[n].scaleto'none'
- expanded I/O capabilities:
v2.1.0Version 2.1.0Beta1 file
This update primarily adds support for new
iidevices: W/2 (wtape,wdel,wsyn), Disting EX (disting), and multiple crows (crow). Full docs are forthcoming, but for now you can inquire on-device by sendingii.<device>.help()(eg.ii.wtape.help()to see the full supported API for that device.crow to crow communication
Communication from crow to crow enables:
- expanded I/O capabilities:
ii.crow.volts(...),ii.crow.slew(...)andii.crow.input(...) - high-level I/O helpers:
ii.crow.pulse(...),ii.crow.ar(...),ii.crow.lfo(...) - generic commands:
ii.crow.call1(...),ii.crow.call2(...),ii.crow.call3(...),ii.crow.call4(...) - generic requests:
ii.crow.query0(),ii.crow.query1(...),ii.crow.query2(...),ii.crow.query3(...)
The I/O commands above are handled automatically, so the second crow doesn't need a script running at all. You can also send
ii.crow.reset()to make sure the second crow isn't runningFirstor some other uploaded script.Using the
ii.crow.input(ch)query, will respond with the eventii.crow.event( event )as is customary foriidevices.When the above I/O behaviours aren't sufficient for your uses, you can use the generic commands & requests. These require you to upload a script onto the second crow that handles the generic events. Do so by re-defining the functions:
ii.self.call(...) -- where ... are the received arguments (not a table) ii.self.query(...) -- this function should return the value to be sent back over iiThis feature is marked as 'Early Access' as the command list may change somewhat after we receive more feedback of it in use. Everything works as described, but we welcome your feedback if you can improve things.
For those using crow with norns, you'll need the (TBD) release or later to take advantage of the new
iifeatures.Log
- NEW
iisupport for W/2.0 firmware - NEW [Early Access]
iisupport for Disting EX - NEW [Early Access]
iisupport for crow to crow communication - FIX
iitransmission speed increased to 400kHz (was ~90kHz) - FIX setting
metrotime to zero no longer causes crash (clamps to 500uS) - FIX
crow.reset()now resetsoutput[n].scaleto'none'
- expanded I/O capabilities:
v2.0.0Version 2.0.01 file
This update adds a host of new input modes, output quantization and improved/extended ii support.
Input 'window' is great for parameter selectors. Input 'scale' turns crow into a highly reconfigurable quantizer. Input 'volume' and 'peak' allow patching audio signals to the inputs, and analyzing their RMS level ('volume' is analogous to 'stream', and 'peak' to 'change', but operating in the RMS time domain).
Output 'scale' squeezes the output through a highly configurable voltage quantizer. The quantization comes after the slew engine (ASL), so LFOs can easily be converted into arpeggios by simply applying the scale feature. Along with the 'shapes' of the v1.0.3 update, ASL is now useful for describing complex melodies in terms of contours rather than just notes.
ii support continues to improve. The bus is now more resilient to error conditions, and when things go wrong, it can recover more gracefully. New device support has been added for telex-O, W/2.0 and support for Just Friends 3.2 is included. The event handler for
ii.<module>.get()requests has been updated to provide the full context of the request -- if you asked for 2 channels of data, each event includes which channel it's reporting from.For those using crow with norns, you'll need the 200712 release or later to take advantage of these improvements.
Log:
NB: The default git branch from which releases are built is now known as
main.-
BREAKING metro no longer runs immediately after activation or modification
-
BREAKING ii getters that take params, return them (ii..event functions have changed)
-
NEW output 'scale' settings for quantizing CV outputs
-
NEW input mode: 'window'
-
NEW input mode: 'scale'
-
NEW input mode: 'volume'
-
NEW input mode: 'peak'
-
NEW ii support for Mannequins W/2.0 beta (likely to change)
-
NEW ii support for BPC Telex-O module @nordseele
-
NEW ii support for 16n faderbank (all 16 faders are now supported) @discohead
-
NEW ii support for monome ansible (up to 4 simultaneous devices)
-
NEW ii support for Mannequins Just Friends v3.2 features (multiple addresses & getters)
-
FIX after a bad ii get request, the ii bus now recovers
-
FIX after failed ii messages, crow reports debugging suggestions
-
FIX errors in init() correctly reported
-
FIX frozen scripts now timeout @csboling
-
FIX when running out of memory, Lua errors rather than crow crashing @csboling
-
FIX
crow.reset()now sets input & ii-follower callbacks to default valules (fixes norns-clock bug) -
FIX input/output calibration allows more dramatic offset correction
-
NEW errors now provide a traceback @csboling
-
NEW basic reporting of CPU utilization
cputime() -
CHANGE two additional metros / delays available (8 total)
-
v2.0.0RCVersion 2.0 Release CandidateBeta1 file
This update adds a host of new input modes, output quantization and improved/extended ii support.
Input 'window' is great for parameter selectors. Input 'scale' turns crow into a highly reconfigurable quantizer. Input 'volume' and 'peak' allow patching audio signals to the inputs, and analyzing their RMS level ('volume' is analogous to 'stream', and 'peak' to 'change', but operating in the RMS time domain).
Output 'scale' squeezes the output through a highly configurable voltage quantizer. The quantization comes after the slew engine (ASL), so LFOs can easily be converted into arpeggios by simply applying the scale feature. Along with the 'shapes' of the v1.0.3 update, ASL is now useful for describing complex melodies in terms of contours rather than just notes.
ii support continues to improve. The bus is now more resilient to error conditions, and when things go wrong, it can recover more gracefully. New device support has been added for telex-O, and support for Just Friends 3.2 is included. The event handler for
ii.<module>.get()requests has been updated to provide the full context of the request -- if you asked for 2 channels of data, each event will tell you which channel it's reporting from.The above features will be available to norns users in the next update (after June 22 2020).
Log:
NB: The default git branch from which releases are built is now known as
main.-
BREAKING metro no longer runs immediately after activation or modification
-
BREAKING ii getters that take params, return them
-
NEW output 'scale' settings for quantizing CV outputs
-
NEW input mode: 'window'
-
NEW input mode: 'scale'
-
NEW input mode: 'volume'
-
NEW input mode: 'peak'
-
NEW ii support for BPC Telex-O module @nordseele
-
NEW ii support for 16n faderbank (all 16 faders are now supported) @discohead
-
NEW ii support for monome ansible (up to 4 simultaneous devices)
-
NEW ii support for Mannequins Just Friends v3.2 features
-
FIX after a bad ii get request, the ii bus now recovers
-
FIX after failed ii messages, crow reports debugging suggestions
-
FIX errors in init() correctly reported
-
FIX frozen scripts now timeout @csboling
-
FIX when running out of memory, Lua errors rather than crow crashing @csboling
-
NEW errors now provide a traceback @csboling
-
NEW basic reporting of CPU utilization
cputime() -
CHANGE one additional metro / delay available (8 total)
-
v1.0.3Version 1.0.31 file
This update brings non-linear slopes to the ASL / output libraries. This enables snappier envelopes, sinewave LFOs, classic-portamento and much more. A number of
iiupdates are included, notably the ability to use multiples of devices that have assignable addresses (eg. an array of telex-I input devices). CPU usage has been dramatically reduced (~40%) at the expense of one user-assignable timer, resulting in an overall more responsive system (especially with very fast ASL outputs).Log:
- NEW 'shape' parameter for outputs (eg:
output[n].shape = 'log') - NEW Kria
iicommands extended (@csboling) - NEW multiples of the same
iidevice are addressable (eg.ii.txi[1]andii.txi[2]) - FIX CPU usage dramatically reduced (improves overall responsiveness)
- FIX sending
iimessages are now clamped to available range - CHANGE 6 timers are user accessible (for
metro()anddelay()). was 7.
- NEW 'shape' parameter for outputs (eg:
v1.0.2Version 1.0.21 file
Main focus is on extending the ii system:
- NEW devices supported: ER-301(
ii.er301), TelexI(ii.txi), Ansible: Levels (ii.levels) - NEW i2c pullup resistors are enabled by default.
- NEW if pullups deactivated, and crow detects insufficient pullup current, prints a user warning suggesting
ii.pullup(1) - FIX Just Friends
retunecommand now works correctly. - FIX Ansible channel indices are now 1-based
- FIX ii commands are buffered to allow sending up to 16 messages at once
Other:
- NEW
delay(action, time, repeats)function which allows a provided function to be executed in the future, with an optional number of repeats (default 1).
- NEW devices supported: ER-301(
v1.0.2b0Beta1 file
Preliminary v1.0.2 release
Main focus is on extending the ii system:
- NEW devices supported: ER-301(
er301), TelexI(txi), Ansible: Levels (levels) - NEW user warning if crow detects no-pullups
- FIX Just Friends
retunecommand now works correctly. - FIX Ansible channel indices are now 1-based
- FIX ii commands are buffered to allow sending up to 16 messages at once
Other:
- NEW
delay(time, action)function which allows a provided function to be executed in the future.
- NEW devices supported: ER-301(