Releases: sensorium/Mozzi
Anopheles wellcomei
What's Changed
- Fix compilation with configuration option
MOZZI_AUDIO_INPUT
- Fix compilation with ATMEGA328PB CPUs
- Fix some erroneous compilation warnings
Full Changelog: v2.0.0...v2.0.1
Anopheles wellcomei
A new major version, a new mosquito genus!
Mozzi have undergone a fairly big overhaul! Before an automatic changelog, here is an overview of what has changed.
Configuration at the sketch level
The biggest change (at least internally) concerns the way you can configure Mozzi.
Configuration of Mozzi (if desired) is now done in the user sketch itself. This removes the need to fiddle inside Mozzi's sources when using different configurations (EXTERNAL_AUDIO_OUTPUT, STEREO, etc…). For instance in order to use stereo, with an external DAC which timing is controlled by Mozzi, you just need to add:
#include "MozziConfigValues.h" // for named option values
#define MOZZI_AUDIO_MODE MOZZI_OUTPUT_EXTERNAL_TIMED
#define MOZZI_AUDIO_CHANNELS MOZZI_STEREO
#include <Mozzi.h> // note the change from MozziGuts.h, old fashion still works with a warning
at the top of your sketch. Refer to the examples and the documentation for more on this!
Scaling of analog reads
In order to further improve the compatibility between platforms, the range of the analog reads (mozziAnalogRead
) can be explicitly specified:
- or at the sketch level with the config option:
define MOZZI_ANALOG_READ_RESOLUTION 10
- or/and for every analog reads, for instance:
mozziAnalogRead<10>(pin);
Not doing this will fall back on the platform native range (just like Mozzi 1) but will issue a warning (and is not advised).
New fixed point math
A new paradigm for fixed point math arithmetic has been added. This leverages on FixMath which has spawned from Mozzi's development. The goal of this library is to automatized, at the compiler level, the calculations of the range and precision needed for a fixed point type, making coding easier and overflows impossible. Mozzi's functions that were already using fixed point (old paradigm) have been adapted to this! The old way of using fixed point math is still available.
This becomes a requirement for installing Mozzi. If you install Mozzi via the library manager this should be automatically done.
More info on the FixMath page and in Mozzi's examples!
Bugfix/improvements
- the rate at which
updateControl()
was called was slightly off. This had only consequences in some very specific cases (#253) but is now corrected (#256) - the RP2040 (Raspberry Pico) was not on-tune, this is fixed (#254)
- twi_nonblock only compiled when needed (#242)
- some of the ways Mozzi functions internally have been rationalized and improved
Compatibility
This release is not 100% source compatible to earlier versions of Mozzi. Most sketches will continue to compile, but with warnings. Some will need adjustments to keep working. See https://sensorium.github.io/Mozzi/learn/porting/ . If porting is not an option, install an earlier (1.x) version of Mozzi, or use the "Mozzi_1" branch in git.
Change of licence
Mozzi has now changed to LGPL license! (#240)
Changelog
What's Changed
- Mozzi 2.0 - Start config rework by @tfry-git in #211
- Replaced unsigned long into uint32_t for Oscil. by @tomcombriat in #221
- Devel/workflow updates by @tfry-git in #227
- mozzi_midi as header only by @tomcombriat in #222
- Single compilation unit / In-line configuration by @tfry-git in #224
- Implementing auto Range for FixMath by @tomcombriat in #233
- Draft: Mozzi 2.0 miscellanious small stuff by @tfry-git in #230
- Devel/teensy by @tfry-git in #235
- FixMath2.0 by @tomcombriat in #212
- Removed FixMath from Mozzi's sources by @tomcombriat in #238
- Scaling for analog reads by @tfry-git in #239
- Switch to LPGL by @tfry-git in #240
- Specializations of Mozzi classes for U/SFix by @tomcombriat in #236
- Compile twi_nonblock only, when the header is included. by @tfry-git in #242
- Fix/control rate by @tomcombriat in #256
- RP2040 on tune by @tomcombriat in #254
- Mozzi 2.0 master PR by @tfry-git in #243
Full Changelog: 1.1.2...v2.0.0
What's Changed
- Mozzi 2.0 - Start config rework by @tfry-git in #211
- Replaced unsigned long into uint32_t for Oscil. by @tomcombriat in #221
- Devel/workflow updates by @tfry-git in #227
- mozzi_midi as header only by @tomcombriat in #222
- Single compilation unit / In-line configuration by @tfry-git in #224
- Implementing auto Range for FixMath by @tomcombriat in #233
- Draft: Mozzi 2.0 miscellanious small stuff by @tfry-git in #230
- Devel/teensy by @tfry-git in #235
- FixMath2.0 by @tomcombriat in #212
- Removed FixMath from Mozzi's sources by @tomcombriat in #238
- Scaling for analog reads by @tfry-git in #239
- Switch to LPGL by @tfry-git in #240
- Specializations of Mozzi classes for U/SFix by @tomcombriat in #236
- Compile twi_nonblock only, when the header is included. by @tfry-git in #242
- Fix/control rate by @tomcombriat in #256
- RP2040 on tune by @tomcombriat in #254
- Mozzi 2.0 master PR by @tfry-git in #243
Full Changelog: 1.1.2...v2.0.0
Aedes daliensis
Small release, principally to fix the Uno R4 port.
What's Changed
- Fix of mozziAnalogRead for Renesas by @tomcombriat in #214
Full Changelog: 1.1.1...1.1.2
Aedes daliensis
A new release!
Apart for some bug fixing and autobuilds, Mozzi is now supporting two new boards:
- the Arduino Giga thanks to @tfry-git
- the Arduino R4 (@tomcombriat)
A port to the other core for STM32 (STM32duino) has also been ported by @tfry-git.
A few other things have changed, here is the (automatically generated) changelog:
What's Changed
- Add auto-builds for ESP8266 by @tfry-git in #176
- Add more auto-checks by @tfry-git in #180
- Fixed External audio output by @tomcombriat in #179
- Document and auto-build SAMD21 port by @tfry-git in #182
- Fixed triangle_warm8192 wavetable by @tomcombriat in #184
- Added github CI workflow for Pico by @tomcombriat in #185
- Initial Arduino Giga port by @tomcombriat in #183
- Update dependency by @tfry-git in #188
- Devel/giga audio input by @tomcombriat in #186
- Fixed compilation for EXTERNAL_AUDIO_OUTPUT for "new" STM32duino by @tomcombriat in #189
- Add "STM32duino" port by @tfry-git in #181
- Fix IntegerType.h by @tomcombriat in #195
- Creating a devel branch for Arduino R4 by @tomcombriat in #190
- Bump actions/checkout from 3 to 4 in /.github/workflows by @dependabot in #198
- Asynchroneous ADC (mozziAnalogRead) for Uno R4 by @tomcombriat in #199
- Github workflow: Revert version increas in checkout action by @tfry-git in #203
- Fix frequency offset for AVR by @tomcombriat in #202
New Contributors
- @dependabot made their first contribution in #198
Full Changelog: 1.1.0...1.1.1
Aedes daliensis
We are having releases again!
Now Mozzi can work with Arduino's library manager.
There are now several processors supported thanks to @tfry-git and @tomcombriat. See the README or the Mozzi web page.
@tomcombriat has added some new classes with examples:
- Wavefolder: a synthesis technique which folds the wave once it reaches amplitude limits
- MetaOscil: produce non-aliased sounds by automatically switching between stacked oscillators
- MultiResonantFilter: different filter outputs are accessible via low(), high(), band() and notch() functions.
Below is a more detailed automatically generated list of changes:
- Fix header Markdown in README.md by @per1234 in #29
- Add STM32 port by @tfry-git in #35
- Silence some warnings by @tfry-git in #36
- Use correct separator in keywords.txt by @per1234 in #41
- New attempt: Allow to force an ADSR envelope back to zero on noteOn(). by @tfry-git in #40
- Trigger updateControl from within audioHook(), rather than from timer. by @tfry-git in #38
- WORK IN PROGRESS: Port to ESP8266 by @tfry-git in #42
- Support for Teensy LC, 3.5, 3.6 and AVR 8Mhz by @adrianfreed in #44
- Replace CONSTTABLE_READ with a template-based (inline) function that … by @tfry-git in #48
- Adding possibility to use MCP4922 with Mozzi by @tomcombriat in #49
- ESP8266 DAC fixes by @tfry-git in #51
- Fixed AutoRange::AutoRange initialization and AutoRange::next behavior. by @wingunder in #56
- Revert "Fixed AutoRange::AutoRange initialization and AutoRange::next behavior." by @sensorium in #57
- Corrected wrong behavior leading to a wrong value of the starting point of the envelop when using very small values for the release time by @tomcombriat in #65
- Added STEREO_HACK support for STM32 by @Tinwelint78 in #63
- Manually calculate prescaler and overflow for STM32 update timer by @Tinwelint78 in #69
- Allow to define an external audio ouput function by @tomcombriat in #87
- Added examples using DAC MCP49XX/48XX with Mozzi by @tomcombriat in #90
- adding license terms issue #59 by @majikthys in #60
- Added a third template parameter to ADSR to allow long envelopes at AUDIO_RATE by @tomcombriat in #95
- ESP32 support (internal and PT8211 DAC) by @dietervandoren in #97
- External audio: added PT8211 16 bits dual DAC support by @tomcombriat in #103
- Use higher audio rate by default on faster boards by @tfry-git in #99
- Update of the EXTERNAL_AUDIO_OUTPUT examples. On top of #98 by @tomcombriat in #107
- Added missing bracket by @tomcombriat in #111
- Further abstraction of output handling (on top of https://github.com/… by @tfry-git in #98
- Changed comments suggesting the pitch being encoded as frequency by @tomcombriat in #120
- Deprecate STEREO_HACK by @tfry-git in #113
- Low Pass Filter with 16bits for cutoff frequency and resonance by @tomcombriat in #134
- FIX
fromAlmostNBits
for 32 bitters by @tomcombriat in #141 - Teensy4x port by @tomcombriat in #138
- fix endpos_fractional by @apiel in #118
- Split out (most) hardware dependent code into dedicated file by @tfry-git in #145
- interrupt handler speed up and pin adjustment by @j-enns in #150
- Fix overflow for mozziAnalogRead with STM32 by @tomcombriat in #151
- More constant resonance over the frequency range for LowPassFilter by @tomcombriat in #152
- Delete Mozzi symlink by @storrdev in #156
- Updated documentation for Q15n0 with proper limits by @jypma in #161
- Fix compilation for Teensys by @tomcombriat in #160
- Added I2S (native) output support for RP2040 by @tomcombriat in #163
- Added a simple wavefolder by @tomcombriat in #159
- Add "STM32F4 is not supported" to README.md by @dudozermaks in #162
- Mutation of the LowPassFilter into a generic filter by @tomcombriat in #165
- Changed internal functions name of ResonantFilter to current() for lo… by @tomcombriat in #167
- Fix duplicated enum between StateVariable and ResonantFilter by @tomcombriat in #172
- Compile and runtime error when EXTERNAL_AUDIO_OUTPUT is true by @pschatzmann in #173
- Metaoscillators to non-aliased sounds by @tomcombriat in #124
New Contributors
- @per1234 made their first contribution in #29
- @tfry-git made their first contribution in #35
- @adrianfreed made their first contribution in #44
- @wingunder made their first contribution in #56
- @sensorium made their first contribution in #57
- @Tinwelint78 made their first contribution in #63
- @majikthys made their first contribution in #60
- @dietervandoren made their first contribution in #97
- @apiel made their first contribution in #118
- @j-enns made their first contribution in #150
- @storrdev made their first contribution in #156
- @jypma made their first contribution in #161
- @dudozermaks made their first contribution in #162
- @pschatzmann made their first contribution in #173
Full Changelog: v1.0.2...1.1.0
Aedes flavifrons (Legacy)
Don't use this! All Mozzi releases are now considered legacy.
Download the "live" code on the main page, under the "Code" button.
Release notes:
HIFI actually works this time... ie. it's unbroken
Aedes flavifrons
HIFI sketches compile again. The problems were due to more errors around changes in Mozzi's modified FrequencyTimer2 library usage which were not tested properly before release.
Aedes flavifrons
Removed stray FrequencyTimer files from main folder, which stopped anything compiling...!
Aedes flavifrons
- Teensy now compiles, bit of a hack added
|| defined(TEENSYDUINO)
to all Teensy conditional compile lines like this:
#if defined(MK20DX128) || defined(MK20DX256) || defined(TEENSYDUINO) // teensy 3, 3.1 - examples, removed commented ADC.h line from all examples, Teensy doesn't seem to need it anymore
Aedes flavifrons
Testing - please report any bugs on github or the Mozzi users forum
Mostly bug fixes and maintainance, updated to suit Arduino 1.5+. However, the 1.0.5 IDE still produces faster code than any speed optimisation levels compiled with the newer versions.
- added library.properties for Arduino 1.5+
- MozziGuts.cpp and .h, and mozzi_config.h: added STEREO_HACK config option, set it to true to try stereo output, also added Stereo_Hack exammple
- README - updated install instructions
- examples/Mozzi_Midi_Input, added note about rx pin for midi in rather than tx as shown on Arduino page.
- ADSR.h - now IDLE phase will always return 0.
- included ADC.h for Teensy 3+ in mozzi_analog.h and removed it from sketches - not sure why this didn't work before (maybe <> instead of "").
- python scripts sin1024_uint8.py and sin8192_uint8.py, changed broken int16_t casts to int, Might have accidentally changed in a global search/replace.
- examples - changed Sinwave_PWM_leds_HIFI to Sinwave_PWM_leds, can't see any need for extra confusion of HFI
- examples - Detuned_Oscil_Wash - added note about compiling for speed, and that Arduino 1.0.5 still produces faster code.