├── .github ├── dependabot.yml └── workflows │ ├── arduino_lint.yml │ ├── build-and-deploy-site.yml │ └── compile_examples.yml ├── .gitignore ├── ADSR.h ├── AudioDelay.h ├── AudioDelayFeedback.h ├── AudioOutput.h ├── AutoMap.h ├── AutoRange.h ├── CapPoll.h ├── CircularBuffer.h ├── ControlDelay.h ├── DCfilter.h ├── Ead.h ├── EventDelay.h ├── IntMap.h ├── IntegerType.h ├── LICENCE.LPGL ├── LICENSE.TXT ├── Line.h ├── LowPassFilter.h ├── MetaOscil.h ├── Metronome.h ├── Mozzi.h ├── MozziConfigValues.h ├── MozziGuts.h ├── MozziHeadersOnly.h ├── Oscil.h ├── OverSample.h ├── PDResonant.h ├── Phasor.h ├── Portamento.h ├── RCpoll.h ├── README.md ├── Readme_Mozzi_2_0.md ├── ResonantFilter.h ├── ReverbTank.h ├── RollingAverage.h ├── RollingStat.h ├── Sample.h ├── SampleHuffman.h ├── Smooth.h ├── Stack.h ├── StateVariable.h ├── WaveFolder.h ├── WavePacket.h ├── WavePacketSample.h ├── WaveShaper.h ├── config ├── config_example_avr_hifi.h ├── config_example_avr_legacy_standard_mode.h ├── config_example_avr_legacy_standardplus_mode.h ├── config_example_avr_stereo.h ├── config_example_external.h ├── config_example_rp2040_i2s_pt8211_mono.h ├── config_example_rp2040_pwm.h ├── known_16bit_timers.h └── mozzi_config_documentation.h ├── examples ├── 01.Basics │ ├── Control_Gain │ │ └── Control_Gain.ino │ ├── Sinewave │ │ └── Sinewave.ino │ ├── Sinewave_HIFI │ │ └── Sinewave_HIFI.ino │ ├── Skeleton │ │ └── Skeleton.ino │ ├── Skeleton_Multi │ │ ├── Skeleton_Multi.ino │ │ └── Skeleton_Multi_Unit2.cpp │ ├── Table_Resolution │ │ └── Table_Resolution.ino │ ├── Vibrato │ │ └── Vibrato.ino │ └── Vibrato_Midi_Note │ │ └── Vibrato_Midi_Note.ino ├── 02.Control │ ├── Control_Echo_Theremin │ │ └── Control_Echo_Theremin.ino │ ├── Control_Oscil_Wash │ │ └── Control_Oscil_Wash.ino │ ├── Control_Tremelo │ │ └── Control_Tremelo.ino │ ├── EventDelay │ │ └── EventDelay.ino │ ├── Line_Gliss │ │ └── Line_Gliss.ino │ ├── Line_Gliss_Double_32k_HIFI │ │ └── Line_Gliss_Double_32k_HIFI.ino │ ├── Metronome_SampleHuffman │ │ └── Metronome_SampleHuffman.ino │ └── Stop_Start │ │ └── Stop_Start.ino ├── 03.Sensors │ ├── Knob_LDR_x2_WavePacket │ │ └── Knob_LDR_x2_WavePacket.ino │ ├── Knob_LightLevel_FMsynth │ │ └── Knob_LightLevel_FMsynth.ino │ ├── Knob_LightLevel_x2_FMsynth │ │ └── Knob_LightLevel_x2_FMsynth.ino │ ├── Light_Temperature_Detuned │ │ └── Light_Temperature_Detuned.ino │ ├── Light_Temperature_Multi_Oscil │ │ └── Light_Temperature_Multi_Oscil.ino │ ├── Piezo_Frequency │ │ └── Piezo_Frequency.ino │ ├── Piezo_SampleScrubber │ │ ├── Piezo_SampleScrubber.ino │ │ └── blahblah4b_int8.h │ ├── Piezo_SampleTrigger │ │ └── Piezo_SampleTrigger.ino │ ├── Piezo_Switch_Pitch │ │ └── Piezo_Switch_Pitch.ino │ ├── RCpoll │ │ └── RCpoll.ino │ ├── Sinewave_Pinchange_Interrupt │ │ └── Sinewave_Pinchange_Interrupt.ino │ ├── Volume_Knob │ │ └── Volume_Knob.ino │ └── Volume_Knob_LightLevel_Frequency │ │ └── Volume_Knob_LightLevel_Frequency.ino ├── 04.Audio_Input │ ├── Audio_Input │ │ └── Audio_Input.ino │ ├── Audio_Input_with_Knob_Filter │ │ └── Audio_Input_with_Knob_Filter.ino │ └── Audio_and_Control_Input │ │ └── Audio_and_Control_Input.ino ├── 05.Control_Filters │ ├── DCfilter │ │ └── DCfilter.ino │ ├── Line_vs_Smooth │ │ └── Line_vs_Smooth.ino │ ├── MIDI_portamento │ │ └── MIDI_portamento.ino │ ├── RollingAverage │ │ └── RollingAverage.ino │ ├── Smooth │ │ └── Smooth.ino │ ├── Smooth_Frequency │ │ └── Smooth_Frequency.ino │ └── Thermistor_OverSample │ │ └── Thermistor_OverSample.ino ├── 06.Synthesis │ ├── AMsynth │ │ └── AMsynth.ino │ ├── AMsynth_HIFI │ │ └── AMsynth_HIFI.ino │ ├── Brown_Noise_Realtime │ │ └── Brown_Noise_Realtime.ino │ ├── Detuned_Beats_Wash │ │ └── Detuned_Beats_Wash.ino │ ├── Difference_Tone │ │ └── Difference_Tone.ino │ ├── Difference_Tone_FixMath │ │ └── Difference_Tone_FixMath.ino │ ├── FMsynth │ │ └── FMsynth.ino │ ├── FMsynth_32k_HIFI │ │ └── FMsynth_32k_HIFI.ino │ ├── FMsynth_FixMath │ │ └── FMsynth_FixMath.ino │ ├── NonAlias_MetaOscil │ │ └── NonAlias_MetaOscil.ino │ ├── PDresonant │ │ └── PDresonant.ino │ ├── PWM_Phasing │ │ └── PWM_Phasing.ino │ ├── SelfModulator │ │ └── SelfModulator.ino │ ├── WaveFolder │ │ └── WaveFolder.ino │ ├── WavePacket_Double │ │ └── WavePacket_Double.ino │ ├── WavePacket_Sample │ │ └── WavePacket_Sample.ino │ ├── WavePacket_Single │ │ └── WavePacket_Single.ino │ └── Waveshaper │ │ └── Waveshaper.ino ├── 07.Envelopes │ ├── ADSR_Audio_Rate_Envelope │ │ └── ADSR_Audio_Rate_Envelope.ino │ ├── ADSR_Audio_Rate_Envelope_Long │ │ └── ADSR_Audio_Rate_Envelope_Long.ino │ ├── ADSR_Audio_Rate_Envelope_x2 │ │ └── ADSR_Audio_Rate_Envelope_x2.ino │ ├── ADSR_Control_Rate_Envelope │ │ └── ADSR_Control_Rate_Envelope.ino │ ├── Ead_Envelope │ │ └── Ead_Envelope.ino │ ├── Filter_Envelope │ │ └── Filter_Envelope.ino │ └── Phasemod_Envelope │ │ └── Phasemod_Envelope.ino ├── 08.Samples │ ├── Sample │ │ └── Sample.ino │ ├── SampleHuffman_Umpah │ │ ├── SampleHuffman_Umpah.ino │ │ └── umpah_huff.h │ ├── Sample_Loop_Points │ │ └── Sample_Loop_Points.ino │ ├── Sample_Scrub │ │ └── Sample_Scrub.ino │ ├── Samples │ │ └── Samples.ino │ ├── Samples_Tables_Arrays │ │ └── Samples_Tables_Arrays.ino │ └── Wavetable_Swap │ │ └── Wavetable_Swap.ino ├── 09.Delays │ ├── AudioDelay │ │ └── AudioDelay.ino │ ├── AudioDelayFeedback │ │ └── AudioDelayFeedback.ino │ ├── AudioDelayFeedbackAllpass │ │ └── AudioDelayFeedbackAllpass.ino │ ├── AudioDelayFeedbackX2 │ │ └── AudioDelayFeedbackX2.ino │ ├── AudioDelayFeedback_HIFI │ │ └── AudioDelayFeedback_HIFI.ino │ ├── ReverbTank_HIFI │ │ └── ReverbTank_HIFI.ino │ └── ReverbTank_STANDARD │ │ └── ReverbTank_STANDARD.ino ├── 10.Audio_Filters │ ├── LowPassFilterX2 │ │ └── LowPassFilterX2.ino │ ├── MultiResonantFilter │ │ └── MultiResonantFilter.ino │ ├── ResonantFilter │ │ └── ResonantFilter.ino │ ├── ResonantFilter16 │ │ └── ResonantFilter16.ino │ ├── StateVariableFilter │ │ └── StateVariableFilter.ino │ └── StateVariableFilter_HIFI │ │ └── StateVariableFilter_HIFI.ino ├── 11.Communication │ ├── Mozzi_MIDI_Input │ │ └── Mozzi_MIDI_Input.ino │ ├── Mozzi_Processing_Serial │ │ └── Mozzi_Processing_Serial.ino │ ├── Sinewave_PWM_leds_HIFI │ │ └── Sinewave_PWM_leds_HIFI.ino │ ├── Teensy_USB_MIDI_Input │ │ └── Teensy_USB_MIDI_Input.ino │ └── TwoWire_Read_ADXL345 │ │ └── TwoWire_Read_ADXL345.ino ├── 12.Misc │ ├── IntMap_test │ │ └── IntMap_test.ino │ ├── MozziByte_HIFI │ │ └── MozziByte_HIFI.ino │ ├── Risset_Beat_HIFI │ │ └── Risset_Beat_HIFI.ino │ ├── Shepard_Tone_HIFI │ │ └── Shepard_Tone_HIFI.ino │ ├── Stereo │ │ └── Stereo.ino │ └── Stereo_Pan │ │ └── Stereo_Pan.ino └── 13.External_Audio_Output │ ├── ESP32_Bluetooth │ └── ESP32_Bluetooth.ino │ ├── FMsynth_MCP4921_mono_12bits │ └── FMsynth_MCP4921_mono_12bits.ino │ ├── MCP4922_mono_24bits │ └── MCP4922_mono_24bits.ino │ ├── PT8211_stereo_16bits │ └── PT8211_stereo_16bits.ino │ ├── PT8211_stereo_16bits_STM32_SPI2 │ └── PT8211_stereo_16bits_STM32_SPI2.ino │ ├── Sinewave_R2R_DAC │ └── Sinewave_R2R_DAC.ino │ ├── Sinewave_R2R_DAC_74HC595 │ └── Sinewave_R2R_DAC_74HC595.ino │ └── Stereo_Pan_MCP4922_stereo_12bits │ └── Stereo_Pan_MCP4922_stereo_12bits.ino ├── extras ├── Mozzi-resources ├── NEWS.txt ├── VERSION.txt ├── devscripts │ ├── README.md │ ├── mozzi_compile_examples.sh │ ├── mozzi_compile_examples_hifi.sh │ ├── mozzi_copy_extra_sounds.sh │ ├── mozzi_generate_examples_page_buttons.sh │ ├── mozzi_generate_page.sh │ ├── mozzi_release_step1.sh │ ├── mozzi_release_step2.sh │ └── update_version.sh ├── doxygen-style │ ├── .hg │ │ ├── 00changelog.i │ │ ├── branch │ │ ├── branchheads.cache │ │ ├── dirstate │ │ ├── hgrc │ │ ├── requires │ │ ├── store │ │ │ ├── 00changelog.i │ │ │ ├── 00manifest.i │ │ │ ├── data │ │ │ │ ├── _r_e_a_d_m_e.mk.i │ │ │ │ ├── background__navigation.png.i │ │ │ │ ├── doxygen.css.i │ │ │ │ ├── doxygen.png.i │ │ │ │ ├── img__down_arrow.png.i │ │ │ │ ├── readme.mk.i │ │ │ │ └── tabs.css.i │ │ │ ├── fncache │ │ │ └── undo │ │ ├── undo.branch │ │ └── undo.dirstate │ ├── Doxyfile │ ├── DoxygenLayout.xml │ ├── background_navigation.png │ ├── custom_footer.html │ ├── custom_stylesheet.css │ ├── doxygen.css │ ├── doxygen.png │ ├── img_downArrow.png │ ├── latex │ │ ├── doxygen.sty │ │ ├── group__analog.tex │ │ ├── group__core.tex │ │ ├── group__fixmath.tex │ │ ├── group__midi.tex │ │ ├── group__random.tex │ │ ├── group__soundtables.tex │ │ ├── group__util.tex │ │ ├── modules.tex │ │ └── refman.tex │ ├── mozzi-circle.png │ └── tabs.css ├── pd │ └── mozzi-filter.pd ├── python │ ├── audio2huff.py │ ├── char2mozzi.py │ ├── chebyshev_int8.py │ ├── float2mozzi.py │ ├── float2mozzi_uint8.py │ ├── make_standard_tables.py │ ├── sin1024_int8.py │ ├── sin8192_uint8.py │ ├── sin_multi_levels_int8.py │ ├── table_generator_template.py │ └── triangle.py ├── tests │ └── FlashOrRamRead │ │ └── FlashOrRamRead.ino └── website │ ├── Gemfile │ ├── README.markdown │ ├── TODO.md │ ├── _config.yml │ ├── _data │ ├── navigation.yml │ └── ui-text.yml │ ├── _includes │ └── boards-tested.markdown │ ├── _plugins │ ├── backtick_code_block.rb │ ├── include_code.rb │ ├── octopress_filters.rb │ ├── pygments_code.rb │ └── raw.rb │ ├── about.md │ ├── assets │ ├── images │ │ ├── MosquitoGreen.gif │ │ ├── Mozzi3D.gif │ │ ├── MozziByteLabelled.jpg │ │ ├── NoodleBackseatDriver_small.jpg │ │ ├── Spags-grin.jpg │ │ ├── Spags-smile.jpg │ │ ├── bird_32_gray.png │ │ ├── bird_32_gray_fail.png │ │ ├── code_bg.png │ │ ├── dotted-border.png │ │ ├── email.png │ │ ├── icon_download.png │ │ ├── lee.gif │ │ ├── lee.png │ │ ├── line-tile.png │ │ ├── mozzi-circle-green-solid.png │ │ ├── mozzi-circle-green.png │ │ ├── mozzi-circle.gif │ │ ├── mozzi-circle.svg │ │ ├── mozzi-square.png │ │ ├── mozzi_lee_header_c.svg │ │ ├── mozzi_lee_header_crop.png │ │ ├── mozzi_lee_header_crop2.png │ │ ├── mozzi_moon_2d.png │ │ ├── mozzi_poster_tiny.png │ │ ├── mozzi_smooth_courier_rotated_smaller_flying.png │ │ ├── noise.png │ │ ├── rss.png │ │ ├── search.png │ │ └── sprite_download.png │ └── jsX │ │ └── _main.js │ ├── download │ ├── images │ │ └── Spags-grin.jpg │ └── index.markdown │ ├── examples │ ├── example-list.markdown │ ├── examples │ │ ├── 01.Basics │ │ │ ├── Control_Gain │ │ │ │ ├── Control_Gain.ino │ │ │ │ ├── Control_Gain.mp3 │ │ │ │ └── Control_Gain.ogg │ │ │ ├── Sinewave │ │ │ │ ├── Sinewave.ino │ │ │ │ ├── Sinewave.mp3 │ │ │ │ └── Sinewave.ogg │ │ │ ├── Sinewave_HIFI │ │ │ │ ├── Sinewave_HIFI.ino │ │ │ │ ├── Sinewave_HIFI.mp3 │ │ │ │ └── Sinewave_HIFI.ogg │ │ │ ├── Skeleton │ │ │ │ └── Skeleton.ino │ │ │ ├── Skeleton_Multi │ │ │ │ ├── Skeleton_Multi.ino │ │ │ │ └── Skeleton_Multi_Unit2.cpp │ │ │ ├── Table_Resolution │ │ │ │ ├── Table_Resolution.ino │ │ │ │ ├── Table_Resolution.mp3 │ │ │ │ └── Table_Resolution.ogg │ │ │ ├── Vibrato │ │ │ │ ├── Vibrato.ino │ │ │ │ ├── Vibrato.mp3 │ │ │ │ └── Vibrato.ogg │ │ │ └── Vibrato_Midi_Note │ │ │ │ └── Vibrato_Midi_Note.ino │ │ ├── 02.Control │ │ │ ├── Control_Echo_Theremin │ │ │ │ ├── Control_Echo_Theremin.ino │ │ │ │ ├── Control_Echo_Theremin.mp3 │ │ │ │ └── Control_Echo_Theremin.ogg │ │ │ ├── Control_Oscil_Wash │ │ │ │ ├── Control_Oscil_Wash.ino │ │ │ │ ├── Control_Oscil_Wash.mp3 │ │ │ │ └── Control_Oscil_Wash.ogg │ │ │ ├── Control_Tremelo │ │ │ │ ├── Control_Tremelo.ino │ │ │ │ ├── Control_Tremelo.mp3 │ │ │ │ └── Control_Tremelo.ogg │ │ │ ├── EventDelay │ │ │ │ ├── EventDelay.ino │ │ │ │ ├── EventDelay.mp3 │ │ │ │ └── EventDelay.ogg │ │ │ ├── Line_Gliss │ │ │ │ ├── Line_Gliss.ino │ │ │ │ ├── Line_Gliss.mp3 │ │ │ │ └── Line_Gliss.ogg │ │ │ ├── Line_Gliss_Double_32k_HIFI │ │ │ │ ├── Line_Gliss_Double_32k_HIFI.ino │ │ │ │ ├── Line_Gliss_Double_32k_HIFI.mp3 │ │ │ │ └── Line_Gliss_Double_32k_HIFI.ogg │ │ │ ├── Metronome_SampleHuffman │ │ │ │ ├── Metronome_SampleHuffman.ino │ │ │ │ ├── Metronome_SampleHuffman.mp3 │ │ │ │ └── Metronome_SampleHuffman.ogg │ │ │ ├── Pause │ │ │ │ ├── Pause.ino │ │ │ │ ├── Pause.mp3 │ │ │ │ └── Pause.ogg │ │ │ └── Stop_Start │ │ │ │ └── Stop_Start.ino │ │ ├── 03.Sensors │ │ │ ├── Knob_LDR_x2_WavePacket │ │ │ │ ├── Knob_LDR_x2_WavePacket.ino │ │ │ │ ├── Knob_LDR_x2_WavePacket.mp3 │ │ │ │ └── Knob_LDR_x2_WavePacket.ogg │ │ │ ├── Knob_LightLevel_FMsynth │ │ │ │ ├── Knob_LightLevel_FMsynth.ino │ │ │ │ ├── Knob_LightLevel_FMsynth.mp3 │ │ │ │ └── Knob_LightLevel_FMsynth.ogg │ │ │ ├── Knob_LightLevel_x2_FMsynth │ │ │ │ ├── Knob_LightLevel_x2_FMsynth.ino │ │ │ │ ├── Knob_LightLevel_x2_FMsynth.mp3 │ │ │ │ └── Knob_LightLevel_x2_FMsynth.ogg │ │ │ ├── Light_Temperature_Detuned │ │ │ │ ├── Light_Temperature_Detuned.ino │ │ │ │ ├── Light_Temperature_Detuned.mp3 │ │ │ │ └── Light_Temperature_Detuned.ogg │ │ │ ├── Light_Temperature_Multi_Oscil │ │ │ │ ├── Light_Temperature_Multi_Oscil.ino │ │ │ │ ├── Light_Temperature_Multi_Oscil.mp3 │ │ │ │ └── Light_Temperature_Multi_Oscil.ogg │ │ │ ├── Piezo_Frequency │ │ │ │ ├── Piezo_Frequency.ino │ │ │ │ ├── Piezo_Frequency.mp3 │ │ │ │ └── Piezo_Frequency.ogg │ │ │ ├── Piezo_SampleScrubber │ │ │ │ ├── Piezo_SampleScrubber.ino │ │ │ │ ├── Piezo_SampleScrubber.mp3 │ │ │ │ ├── Piezo_SampleScrubber.ogg │ │ │ │ └── blahblah4b_int8.h │ │ │ ├── Piezo_SampleTrigger │ │ │ │ ├── Piezo_SampleTrigger.ino │ │ │ │ ├── Piezo_SampleTrigger.mp3 │ │ │ │ └── Piezo_SampleTrigger.ogg │ │ │ ├── Piezo_Switch_Pitch │ │ │ │ ├── Piezo_Switch_Pitch.ino │ │ │ │ ├── Piezo_Switch_Pitch.mp3 │ │ │ │ └── Piezo_Switch_Pitch.ogg │ │ │ ├── RCpoll │ │ │ │ ├── RCpoll.ino │ │ │ │ ├── RCpoll.mp3 │ │ │ │ └── RCpoll.ogg │ │ │ ├── Sinewave_Pinchange_Interrupt │ │ │ │ ├── Sinewave_Pinchange_Interrupt.ino │ │ │ │ ├── Sinewave_Pinchange_Interrupt.mp3 │ │ │ │ └── Sinewave_Pinchange_Interrupt.ogg │ │ │ ├── Volume_Knob │ │ │ │ ├── Volume_Knob.ino │ │ │ │ ├── Volume_Knob.mp3 │ │ │ │ └── Volume_Knob.ogg │ │ │ └── Volume_Knob_LightLevel_Frequency │ │ │ │ ├── Volume_Knob_LightLevel_Frequency.ino │ │ │ │ ├── Volume_Knob_LightLevel_Frequency.mp3 │ │ │ │ └── Volume_Knob_LightLevel_Frequency.ogg │ │ ├── 04.Audio_Input │ │ │ ├── Audio_Input │ │ │ │ └── Audio_Input.ino │ │ │ ├── Audio_Input_with_Knob_Filter │ │ │ │ ├── Audio_Input_with_Knob_Filter.ino │ │ │ │ ├── Audio_Input_with_Knob_Filter.mp3 │ │ │ │ └── Audio_Input_with_Knob_Filter.ogg │ │ │ └── Audio_and_Control_Input │ │ │ │ └── Audio_and_Control_Input.ino │ │ ├── 05.Control_Filters │ │ │ ├── DCfilter │ │ │ │ └── DCfilter.ino │ │ │ ├── Line_vs_Smooth │ │ │ │ ├── Line_vs_Smooth.ino │ │ │ │ ├── Line_vs_Smooth.mp3 │ │ │ │ └── Line_vs_Smooth.ogg │ │ │ ├── MIDI_portamento │ │ │ │ ├── MIDI_portamento.ino │ │ │ │ ├── MIDI_portamento.mp3 │ │ │ │ └── MIDI_portamento.ogg │ │ │ ├── RollingAverage │ │ │ │ ├── RollingAverage.ino │ │ │ │ ├── RollingAverage.mp3 │ │ │ │ └── RollingAverage.ogg │ │ │ ├── Smooth │ │ │ │ ├── Smooth.ino │ │ │ │ ├── Smooth.mp3 │ │ │ │ └── Smooth.ogg │ │ │ ├── Smooth_Frequency │ │ │ │ ├── Smooth_Frequency.ino │ │ │ │ ├── Smooth_Frequency.mp3 │ │ │ │ └── Smooth_Frequency.ogg │ │ │ └── Thermistor_OverSample │ │ │ │ ├── Thermistor_OverSample.ino │ │ │ │ ├── Thermistor_OverSample.mp3 │ │ │ │ └── Thermistor_OverSample.ogg │ │ ├── 06.Synthesis │ │ │ ├── AMsynth │ │ │ │ ├── AMsynth.ino │ │ │ │ ├── AMsynth.mp3 │ │ │ │ └── AMsynth.ogg │ │ │ ├── AMsynth_HIFI │ │ │ │ ├── AMsynth_HIFI.ino │ │ │ │ ├── AMsynth_HIFI.mp3 │ │ │ │ └── AMsynth_HIFI.ogg │ │ │ ├── Brown_Noise_Realtime │ │ │ │ └── Brown_Noise_Realtime.ino │ │ │ ├── Detuned_Beats_Wash │ │ │ │ ├── Detuned_Beats_Wash.ino │ │ │ │ ├── Detuned_Beats_Wash.mp3 │ │ │ │ └── Detuned_Beats_Wash.ogg │ │ │ ├── Difference_Tone │ │ │ │ └── Difference_Tone.ino │ │ │ ├── Difference_Tone_FixMath │ │ │ │ └── Difference_Tone_FixMath.ino │ │ │ ├── FMsynth │ │ │ │ ├── FMsynth.ino │ │ │ │ ├── FMsynth.mp3 │ │ │ │ └── FMsynth.ogg │ │ │ ├── FMsynth_32k_HIFI │ │ │ │ ├── FMsynth_32k_HIFI.ino │ │ │ │ ├── FMsynth_32k_HIFI.mp3 │ │ │ │ └── FMsynth_32k_HIFI.ogg │ │ │ ├── FMsynth_FixMath │ │ │ │ └── FMsynth_FixMath.ino │ │ │ ├── NonAlias_MetaOscil │ │ │ │ └── NonAlias_MetaOscil.ino │ │ │ ├── PDresonant │ │ │ │ ├── PDresonant.ino │ │ │ │ ├── PDresonant.mp3 │ │ │ │ └── PDresonant.ogg │ │ │ ├── PWM_Phasing │ │ │ │ ├── PWM_Phasing.ino │ │ │ │ ├── PWM_Phasing.mp3 │ │ │ │ └── PWM_Phasing.ogg │ │ │ ├── SelfModulator │ │ │ │ ├── SelfModulator.ino │ │ │ │ ├── SelfModulator.mp3 │ │ │ │ └── SelfModulator.ogg │ │ │ ├── WaveFolder │ │ │ │ └── WaveFolder.ino │ │ │ ├── WavePacket_Double │ │ │ │ ├── WavePacket_Double.ino │ │ │ │ ├── WavePacket_Double.mp3 │ │ │ │ └── WavePacket_Double.ogg │ │ │ ├── WavePacket_Sample │ │ │ │ ├── WavePacket_Sample.ino │ │ │ │ ├── WavePacket_Sample.mp3 │ │ │ │ └── WavePacket_Sample.ogg │ │ │ ├── WavePacket_Single │ │ │ │ ├── WavePacket_Single.ino │ │ │ │ ├── WavePacket_Single.mp3 │ │ │ │ └── WavePacket_Single.ogg │ │ │ └── Waveshaper │ │ │ │ ├── Waveshaper.ino │ │ │ │ ├── Waveshaper.mp3 │ │ │ │ └── Waveshaper.ogg │ │ ├── 07.Envelopes │ │ │ ├── ADSR_Audio_Rate_Envelope │ │ │ │ ├── ADSR_Audio_Rate_Envelope.ino │ │ │ │ ├── ADSR_Audio_Rate_Envelope.mp3 │ │ │ │ └── ADSR_Audio_Rate_Envelope.ogg │ │ │ ├── ADSR_Audio_Rate_Envelope_Long │ │ │ │ └── ADSR_Audio_Rate_Envelope_Long.ino │ │ │ ├── ADSR_Audio_Rate_Envelope_x2 │ │ │ │ ├── ADSR_Audio_Rate_Envelope_x2.ino │ │ │ │ ├── ADSR_Audio_Rate_Envelope_x2.mp3 │ │ │ │ └── ADSR_Audio_Rate_Envelope_x2.ogg │ │ │ ├── ADSR_Control_Rate_Envelope │ │ │ │ ├── ADSR_Control_Rate_Envelope.ino │ │ │ │ ├── ADSR_Control_Rate_Envelope.mp3 │ │ │ │ └── ADSR_Control_Rate_Envelope.ogg │ │ │ ├── Ead_Envelope │ │ │ │ ├── Ead_Envelope.ino │ │ │ │ ├── Ead_Envelope.mp3 │ │ │ │ └── Ead_Envelope.ogg │ │ │ ├── Filter_Envelope │ │ │ │ ├── Filter_Envelope.ino │ │ │ │ ├── Filter_Envelope.mp3 │ │ │ │ └── Filter_Envelope.ogg │ │ │ └── Phasemod_Envelope │ │ │ │ ├── Phasemod_Envelope.ino │ │ │ │ ├── Phasemod_Envelope.mp3 │ │ │ │ └── Phasemod_Envelope.ogg │ │ ├── 08.Samples │ │ │ ├── Sample │ │ │ │ ├── Sample.ino │ │ │ │ ├── Sample.mp3 │ │ │ │ └── Sample.ogg │ │ │ ├── SampleHuffman_Umpah │ │ │ │ ├── SampleHuffman_Umpah.ino │ │ │ │ ├── SampleHuffman_Umpah.mp3 │ │ │ │ ├── SampleHuffman_Umpah.ogg │ │ │ │ └── umpah_huff.h │ │ │ ├── Sample_Loop_Points │ │ │ │ ├── Sample_Loop_Points.ino │ │ │ │ ├── Sample_Loop_Points.mp3 │ │ │ │ └── Sample_Loop_Points.ogg │ │ │ ├── Sample_Scrub │ │ │ │ ├── Sample_Scrub.ino │ │ │ │ ├── Sample_Scrub.mp3 │ │ │ │ └── Sample_Scrub.ogg │ │ │ ├── Samples │ │ │ │ ├── Samples.ino │ │ │ │ ├── Samples.mp3 │ │ │ │ └── Samples.ogg │ │ │ ├── Samples_Tables_Arrays │ │ │ │ ├── Samples_Tables_Arrays.ino │ │ │ │ ├── Samples_Tables_Arrays.mp3 │ │ │ │ └── Samples_Tables_Arrays.ogg │ │ │ └── Wavetable_Swap │ │ │ │ ├── Wavetable_Swap.ino │ │ │ │ ├── Wavetable_Swap.mp3 │ │ │ │ └── Wavetable_Swap.ogg │ │ ├── 09.Delays │ │ │ ├── AudioDelay │ │ │ │ ├── AudioDelay.ino │ │ │ │ ├── AudioDelay.mp3 │ │ │ │ └── AudioDelay.ogg │ │ │ ├── AudioDelayFeedback │ │ │ │ ├── AudioDelayFeedback.ino │ │ │ │ ├── AudioDelayFeedback.mp3 │ │ │ │ └── AudioDelayFeedback.ogg │ │ │ ├── AudioDelayFeedbackAllpass │ │ │ │ ├── AudioDelayFeedbackAllpass.ino │ │ │ │ ├── AudioDelayFeedbackAllpass.mp3 │ │ │ │ └── AudioDelayFeedbackAllpass.ogg │ │ │ ├── AudioDelayFeedbackX2 │ │ │ │ ├── AudioDelayFeedbackX2.ino │ │ │ │ ├── AudioDelayFeedbackX2.mp3 │ │ │ │ └── AudioDelayFeedbackX2.ogg │ │ │ ├── AudioDelayFeedback_HIFI │ │ │ │ ├── AudioDelayFeedback_HIFI.ino │ │ │ │ ├── AudioDelayFeedback_HIFI.mp3 │ │ │ │ └── AudioDelayFeedback_HIFI.ogg │ │ │ ├── ReverbTank_HIFI │ │ │ │ └── ReverbTank_HIFI.ino │ │ │ └── ReverbTank_STANDARD │ │ │ │ ├── ReverbTank_STANDARD.ino │ │ │ │ ├── ReverbTank_STANDARD.mp3 │ │ │ │ └── ReverbTank_STANDARD.ogg │ │ ├── 10.Audio_Filters │ │ │ ├── LowPassFilter │ │ │ │ ├── LowPassFilter.ino │ │ │ │ ├── LowPassFilter.mp3 │ │ │ │ └── LowPassFilter.ogg │ │ │ ├── LowPassFilterX2 │ │ │ │ ├── LowPassFilterX2.ino │ │ │ │ ├── LowPassFilterX2.mp3 │ │ │ │ └── LowPassFilterX2.ogg │ │ │ ├── MultiResonantFilter │ │ │ │ └── MultiResonantFilter.ino │ │ │ ├── ResonantFilter │ │ │ │ └── ResonantFilter.ino │ │ │ ├── ResonantFilter16 │ │ │ │ └── ResonantFilter16.ino │ │ │ ├── StateVariableFilter │ │ │ │ ├── StateVariableFilter.ino │ │ │ │ ├── StateVariableFilter.mp3 │ │ │ │ └── StateVariableFilter.ogg │ │ │ └── StateVariableFilter_HIFI │ │ │ │ ├── StateVariableFilter_HIFI.ino │ │ │ │ ├── StateVariableFilter_HIFI.mp3 │ │ │ │ └── StateVariableFilter_HIFI.ogg │ │ ├── 11.Communication │ │ │ ├── Mozzi_MIDI_Input │ │ │ │ └── Mozzi_MIDI_Input.ino │ │ │ ├── Mozzi_Processing_Serial │ │ │ │ └── Mozzi_Processing_Serial.ino │ │ │ ├── Sinewave_PWM_leds_HIFI │ │ │ │ └── Sinewave_PWM_leds_HIFI.ino │ │ │ ├── Teensy_USB_MIDI_Input │ │ │ │ ├── Teensy_USB_MIDI_Input.ino │ │ │ │ ├── Teensy_USB_MIDI_Input.mp3 │ │ │ │ └── Teensy_USB_MIDI_Input.ogg │ │ │ └── TwoWire_Read_ADXL345 │ │ │ │ └── TwoWire_Read_ADXL345.ino │ │ ├── 12.Misc │ │ │ ├── IntMap_test │ │ │ │ └── IntMap_test.ino │ │ │ ├── MozziByte_HIFI │ │ │ │ └── MozziByte_HIFI.ino │ │ │ ├── Risset_Beat_HIFI │ │ │ │ └── Risset_Beat_HIFI.ino │ │ │ ├── Shepard_Tone_HIFI │ │ │ │ ├── Shepard_Tone_HIFI.ino │ │ │ │ └── triangle512_uint8.h │ │ │ ├── Stereo │ │ │ │ └── Stereo.ino │ │ │ ├── Stereo_Hack │ │ │ │ ├── Stereo_Hack.ino │ │ │ │ ├── Stereo_Hack.mp3 │ │ │ │ └── Stereo_Hack.ogg │ │ │ ├── Stereo_Hack_Pan │ │ │ │ └── Stereo_Hack_Pan.ino │ │ │ └── Stereo_Pan │ │ │ │ └── Stereo_Pan.ino │ │ └── 13.External_Audio_Output │ │ │ ├── ESP32_Bluetooth │ │ │ └── ESP32_Bluetooth.ino │ │ │ ├── FMsynth_MCP4921_mono_12bits │ │ │ └── FMsynth_MCP4921_mono_12bits.ino │ │ │ ├── MCP4922_mono_24bits │ │ │ └── MCP4922_mono_24bits.ino │ │ │ ├── PT8211_stereo_16bits │ │ │ └── PT8211_stereo_16bits.ino │ │ │ ├── PT8211_stereo_16bits_STM32_SPI2 │ │ │ └── PT8211_stereo_16bits_STM32_SPI2.ino │ │ │ ├── Sinewave_R2R_DAC │ │ │ └── Sinewave_R2R_DAC.ino │ │ │ ├── Sinewave_R2R_DAC_74HC595 │ │ │ └── Sinewave_R2R_DAC_74HC595.ino │ │ │ └── Stereo_Pan_MCP4922_stereo_12bits │ │ │ └── Stereo_Pan_MCP4922_stereo_12bits.ino │ └── index.markdown │ ├── extras │ └── doc │ │ └── html │ │ └── files.js │ ├── favicon.png │ ├── gallery │ └── index.markdown │ ├── index.markdown │ ├── learn │ ├── MozziByte-NoobToot.pdf │ ├── a-simple-sketch │ │ └── index.markdown │ ├── configuration │ │ └── index.markdown │ ├── faq │ │ └── index.markdown │ ├── hints │ │ └── index.markdown │ ├── index.markdown │ ├── introductory-tutorial │ │ ├── images │ │ │ ├── by-nc-sa.png │ │ │ ├── fig1.jpg │ │ │ ├── fig2.jpg │ │ │ ├── fig3.jpg │ │ │ ├── fig4.jpg │ │ │ ├── fig5.jpg │ │ │ ├── fig6.jpg │ │ │ ├── fig7.jpg │ │ │ ├── fig8.jpg │ │ │ └── fig9.jpg │ │ └── index.markdown │ ├── output │ │ └── index.markdown │ ├── output_circuits │ │ ├── images │ │ │ └── advanced_filter.png │ │ └── index.markdown │ ├── porting │ │ └── index.markdown │ └── under-the-hood │ │ ├── images │ │ └── Mozzi-system.jpg │ │ └── index.markdown │ ├── package-lock.json │ └── package.json ├── hardware_defines.h ├── internal ├── MozziGuts.hpp ├── MozziGuts_impl_AVR.hpp ├── MozziGuts_impl_ESP32.hpp ├── MozziGuts_impl_ESP8266.hpp ├── MozziGuts_impl_MBED.hpp ├── MozziGuts_impl_RENESAS.hpp ├── MozziGuts_impl_RENESAS_ADC.hpp ├── MozziGuts_impl_RENESAS_analog.hpp ├── MozziGuts_impl_RP2040.hpp ├── MozziGuts_impl_SAMD.hpp ├── MozziGuts_impl_STM32.hpp ├── MozziGuts_impl_STM32duino.hpp ├── MozziGuts_impl_STM32duino_analog.hpp ├── MozziGuts_impl_TEENSY.hpp ├── MozziGuts_impl_template.hpp ├── Readme.md ├── config_checks_avr.h ├── config_checks_esp32.h ├── config_checks_esp8266.h ├── config_checks_generic.h ├── config_checks_mbed.h ├── config_checks_renesas.h ├── config_checks_rp2040.h ├── config_checks_samd21.h ├── config_checks_stm32duino.h ├── config_checks_stm32maple.h ├── config_checks_teensy.h ├── config_checks_template.h ├── disable_2pinmode_on_github_workflow.h ├── disable_stereo_on_github_workflow.h ├── mozzi_macros.h ├── mozzi_rand_p.h ├── teensyPinMap.h └── twi_nonblock.hpp ├── keywords.txt ├── library.properties ├── meta.h ├── mozzi_analog.h ├── mozzi_fixmath.cpp ├── mozzi_fixmath.h ├── mozzi_midi.h ├── mozzi_pgmspace.h ├── mozzi_rand.h ├── mozzi_utils.h ├── mult16x16.h ├── mult16x8.h ├── mult32x16.h ├── primes.h ├── samples ├── a-bomb-huffman.h ├── abomb16384_int8.h ├── bamboo │ ├── bamboo_00_2048_int8.h │ ├── bamboo_00_4096_int8.h │ ├── bamboo_01_2048_int8.h │ ├── bamboo_01_4096_int8.h │ ├── bamboo_02_2048_int8.h │ ├── bamboo_02_4096_int8.h │ ├── bamboo_03_2048_int8.h │ ├── bamboo_03_4096_int8.h │ ├── bamboo_04_2048_int8.h │ ├── bamboo_04_4096_int8.h │ ├── bamboo_05_2048_int8.h │ ├── bamboo_05_4096_int8.h │ ├── bamboo_06_2048_int8.h │ ├── bamboo_07_2048_int8.h │ ├── bamboo_08_2048_int8.h │ ├── bamboo_09_2048_int8.h │ └── bamboo_10_2048_int8.h ├── burroughs1_18649_int8.h ├── empty_0_int8.h ├── raven_arh_int8.h └── thumbpiano_huffman │ ├── thumbpiano0.h │ ├── thumbpiano1.h │ ├── thumbpiano2.h │ ├── thumbpiano3.h │ └── thumbpiano4.h ├── tables ├── BandLimited_SAW │ ├── 512 │ │ ├── saw_max_1024_at_16384_512_int8.h │ │ ├── saw_max_1170_at_16384_512_int8.h │ │ ├── saw_max_1365_at_16384_512_int8.h │ │ ├── saw_max_136_at_16384_512_int8.h │ │ ├── saw_max_138_at_16384_512_int8.h │ │ ├── saw_max_141_at_16384_512_int8.h │ │ ├── saw_max_143_at_16384_512_int8.h │ │ ├── saw_max_146_at_16384_512_int8.h │ │ ├── saw_max_148_at_16384_512_int8.h │ │ ├── saw_max_151_at_16384_512_int8.h │ │ ├── saw_max_154_at_16384_512_int8.h │ │ ├── saw_max_157_at_16384_512_int8.h │ │ ├── saw_max_160_at_16384_512_int8.h │ │ ├── saw_max_1638_at_16384_512_int8.h │ │ ├── saw_max_163_at_16384_512_int8.h │ │ ├── saw_max_167_at_16384_512_int8.h │ │ ├── saw_max_170_at_16384_512_int8.h │ │ ├── saw_max_174_at_16384_512_int8.h │ │ ├── saw_max_178_at_16384_512_int8.h │ │ ├── saw_max_182_at_16384_512_int8.h │ │ ├── saw_max_186_at_16384_512_int8.h │ │ ├── saw_max_190_at_16384_512_int8.h │ │ ├── saw_max_195_at_16384_512_int8.h │ │ ├── saw_max_199_at_16384_512_int8.h │ │ ├── saw_max_2048_at_16384_512_int8.h │ │ ├── saw_max_204_at_16384_512_int8.h │ │ ├── saw_max_210_at_16384_512_int8.h │ │ ├── saw_max_215_at_16384_512_int8.h │ │ ├── saw_max_221_at_16384_512_int8.h │ │ ├── saw_max_227_at_16384_512_int8.h │ │ ├── saw_max_234_at_16384_512_int8.h │ │ ├── saw_max_240_at_16384_512_int8.h │ │ ├── saw_max_248_at_16384_512_int8.h │ │ ├── saw_max_256_at_16384_512_int8.h │ │ ├── saw_max_264_at_16384_512_int8.h │ │ ├── saw_max_2730_at_16384_512_int8.h │ │ ├── saw_max_273_at_16384_512_int8.h │ │ ├── saw_max_282_at_16384_512_int8.h │ │ ├── saw_max_292_at_16384_512_int8.h │ │ ├── saw_max_303_at_16384_512_int8.h │ │ ├── saw_max_315_at_16384_512_int8.h │ │ ├── saw_max_327_at_16384_512_int8.h │ │ ├── saw_max_341_at_16384_512_int8.h │ │ ├── saw_max_356_at_16384_512_int8.h │ │ ├── saw_max_372_at_16384_512_int8.h │ │ ├── saw_max_390_at_16384_512_int8.h │ │ ├── saw_max_4096_at_16384_512_int8.h │ │ ├── saw_max_409_at_16384_512_int8.h │ │ ├── saw_max_431_at_16384_512_int8.h │ │ ├── saw_max_455_at_16384_512_int8.h │ │ ├── saw_max_481_at_16384_512_int8.h │ │ ├── saw_max_512_at_16384_512_int8.h │ │ ├── saw_max_546_at_16384_512_int8.h │ │ ├── saw_max_585_at_16384_512_int8.h │ │ ├── saw_max_630_at_16384_512_int8.h │ │ ├── saw_max_682_at_16384_512_int8.h │ │ ├── saw_max_744_at_16384_512_int8.h │ │ ├── saw_max_8192_at_16384_512_int8.h │ │ ├── saw_max_819_at_16384_512_int8.h │ │ └── saw_max_910_at_16384_512_int8.h │ ├── 1024 │ │ ├── saw_max_1024_at_16384_1024_int8.h │ │ ├── saw_max_1170_at_16384_1024_int8.h │ │ ├── saw_max_1365_at_16384_1024_int8.h │ │ ├── saw_max_136_at_16384_1024_int8.h │ │ ├── saw_max_138_at_16384_1024_int8.h │ │ ├── saw_max_141_at_16384_1024_int8.h │ │ ├── saw_max_143_at_16384_1024_int8.h │ │ ├── saw_max_146_at_16384_1024_int8.h │ │ ├── saw_max_148_at_16384_1024_int8.h │ │ ├── saw_max_151_at_16384_1024_int8.h │ │ ├── saw_max_154_at_16384_1024_int8.h │ │ ├── saw_max_157_at_16384_1024_int8.h │ │ ├── saw_max_160_at_16384_1024_int8.h │ │ ├── saw_max_1638_at_16384_1024_int8.h │ │ ├── saw_max_163_at_16384_1024_int8.h │ │ ├── saw_max_167_at_16384_1024_int8.h │ │ ├── saw_max_170_at_16384_1024_int8.h │ │ ├── saw_max_174_at_16384_1024_int8.h │ │ ├── saw_max_178_at_16384_1024_int8.h │ │ ├── saw_max_182_at_16384_1024_int8.h │ │ ├── saw_max_186_at_16384_1024_int8.h │ │ ├── saw_max_190_at_16384_1024_int8.h │ │ ├── saw_max_195_at_16384_1024_int8.h │ │ ├── saw_max_199_at_16384_1024_int8.h │ │ ├── saw_max_2048_at_16384_1024_int8.h │ │ ├── saw_max_204_at_16384_1024_int8.h │ │ ├── saw_max_210_at_16384_1024_int8.h │ │ ├── saw_max_215_at_16384_1024_int8.h │ │ ├── saw_max_221_at_16384_1024_int8.h │ │ ├── saw_max_227_at_16384_1024_int8.h │ │ ├── saw_max_234_at_16384_1024_int8.h │ │ ├── saw_max_240_at_16384_1024_int8.h │ │ ├── saw_max_248_at_16384_1024_int8.h │ │ ├── saw_max_256_at_16384_1024_int8.h │ │ ├── saw_max_264_at_16384_1024_int8.h │ │ ├── saw_max_2730_at_16384_1024_int8.h │ │ ├── saw_max_273_at_16384_1024_int8.h │ │ ├── saw_max_282_at_16384_1024_int8.h │ │ ├── saw_max_292_at_16384_1024_int8.h │ │ ├── saw_max_303_at_16384_1024_int8.h │ │ ├── saw_max_315_at_16384_1024_int8.h │ │ ├── saw_max_327_at_16384_1024_int8.h │ │ ├── saw_max_341_at_16384_1024_int8.h │ │ ├── saw_max_356_at_16384_1024_int8.h │ │ ├── saw_max_372_at_16384_1024_int8.h │ │ ├── saw_max_390_at_16384_1024_int8.h │ │ ├── saw_max_4096_at_16384_1024_int8.h │ │ ├── saw_max_409_at_16384_1024_int8.h │ │ ├── saw_max_431_at_16384_1024_int8.h │ │ ├── saw_max_455_at_16384_1024_int8.h │ │ ├── saw_max_481_at_16384_1024_int8.h │ │ ├── saw_max_512_at_16384_1024_int8.h │ │ ├── saw_max_546_at_16384_1024_int8.h │ │ ├── saw_max_585_at_16384_1024_int8.h │ │ ├── saw_max_630_at_16384_1024_int8.h │ │ ├── saw_max_682_at_16384_1024_int8.h │ │ ├── saw_max_744_at_16384_1024_int8.h │ │ ├── saw_max_8192_at_16384_1024_int8.h │ │ ├── saw_max_819_at_16384_1024_int8.h │ │ └── saw_max_910_at_16384_1024_int8.h │ └── 2048 │ │ ├── saw_max_1024_at_16384_2048_int8.h │ │ ├── saw_max_1170_at_16384_2048_int8.h │ │ ├── saw_max_1365_at_16384_2048_int8.h │ │ ├── saw_max_136_at_16384_2048_int8.h │ │ ├── saw_max_138_at_16384_2048_int8.h │ │ ├── saw_max_141_at_16384_2048_int8.h │ │ ├── saw_max_143_at_16384_2048_int8.h │ │ ├── saw_max_146_at_16384_2048_int8.h │ │ ├── saw_max_148_at_16384_2048_int8.h │ │ ├── saw_max_151_at_16384_2048_int8.h │ │ ├── saw_max_154_at_16384_2048_int8.h │ │ ├── saw_max_157_at_16384_2048_int8.h │ │ ├── saw_max_160_at_16384_2048_int8.h │ │ ├── saw_max_1638_at_16384_2048_int8.h │ │ ├── saw_max_163_at_16384_2048_int8.h │ │ ├── saw_max_167_at_16384_2048_int8.h │ │ ├── saw_max_170_at_16384_2048_int8.h │ │ ├── saw_max_174_at_16384_2048_int8.h │ │ ├── saw_max_178_at_16384_2048_int8.h │ │ ├── saw_max_182_at_16384_2048_int8.h │ │ ├── saw_max_186_at_16384_2048_int8.h │ │ ├── saw_max_190_at_16384_2048_int8.h │ │ ├── saw_max_195_at_16384_2048_int8.h │ │ ├── saw_max_199_at_16384_2048_int8.h │ │ ├── saw_max_2048_at_16384_2048_int8.h │ │ ├── saw_max_204_at_16384_2048_int8.h │ │ ├── saw_max_210_at_16384_2048_int8.h │ │ ├── saw_max_215_at_16384_2048_int8.h │ │ ├── saw_max_221_at_16384_2048_int8.h │ │ ├── saw_max_227_at_16384_2048_int8.h │ │ ├── saw_max_234_at_16384_2048_int8.h │ │ ├── saw_max_240_at_16384_2048_int8.h │ │ ├── saw_max_248_at_16384_2048_int8.h │ │ ├── saw_max_256_at_16384_2048_int8.h │ │ ├── saw_max_264_at_16384_2048_int8.h │ │ ├── saw_max_2730_at_16384_2048_int8.h │ │ ├── saw_max_273_at_16384_2048_int8.h │ │ ├── saw_max_282_at_16384_2048_int8.h │ │ ├── saw_max_292_at_16384_2048_int8.h │ │ ├── saw_max_303_at_16384_2048_int8.h │ │ ├── saw_max_315_at_16384_2048_int8.h │ │ ├── saw_max_327_at_16384_2048_int8.h │ │ ├── saw_max_341_at_16384_2048_int8.h │ │ ├── saw_max_356_at_16384_2048_int8.h │ │ ├── saw_max_372_at_16384_2048_int8.h │ │ ├── saw_max_390_at_16384_2048_int8.h │ │ ├── saw_max_4096_at_16384_2048_int8.h │ │ ├── saw_max_409_at_16384_2048_int8.h │ │ ├── saw_max_431_at_16384_2048_int8.h │ │ ├── saw_max_455_at_16384_2048_int8.h │ │ ├── saw_max_481_at_16384_2048_int8.h │ │ ├── saw_max_512_at_16384_2048_int8.h │ │ ├── saw_max_546_at_16384_2048_int8.h │ │ ├── saw_max_585_at_16384_2048_int8.h │ │ ├── saw_max_630_at_16384_2048_int8.h │ │ ├── saw_max_682_at_16384_2048_int8.h │ │ ├── saw_max_744_at_16384_2048_int8.h │ │ ├── saw_max_8192_at_16384_2048_int8.h │ │ ├── saw_max_819_at_16384_2048_int8.h │ │ └── saw_max_910_at_16384_2048_int8.h ├── BandLimited_SQUARE │ ├── 512 │ │ ├── square_max_101_at_16384_512_int8.h │ │ ├── square_max_103_at_16384_512_int8.h │ │ ├── square_max_106_at_16384_512_int8.h │ │ ├── square_max_109_at_16384_512_int8.h │ │ ├── square_max_112_at_16384_512_int8.h │ │ ├── square_max_115_at_16384_512_int8.h │ │ ├── square_max_1170_at_16384_512_int8.h │ │ ├── square_max_118_at_16384_512_int8.h │ │ ├── square_max_122_at_16384_512_int8.h │ │ ├── square_max_126_at_16384_512_int8.h │ │ ├── square_max_130_at_16384_512_int8.h │ │ ├── square_max_134_at_16384_512_int8.h │ │ ├── square_max_138_at_16384_512_int8.h │ │ ├── square_max_143_at_16384_512_int8.h │ │ ├── square_max_148_at_16384_512_int8.h │ │ ├── square_max_154_at_16384_512_int8.h │ │ ├── square_max_160_at_16384_512_int8.h │ │ ├── square_max_1638_at_16384_512_int8.h │ │ ├── square_max_167_at_16384_512_int8.h │ │ ├── square_max_174_at_16384_512_int8.h │ │ ├── square_max_182_at_16384_512_int8.h │ │ ├── square_max_190_at_16384_512_int8.h │ │ ├── square_max_199_at_16384_512_int8.h │ │ ├── square_max_210_at_16384_512_int8.h │ │ ├── square_max_221_at_16384_512_int8.h │ │ ├── square_max_234_at_16384_512_int8.h │ │ ├── square_max_248_at_16384_512_int8.h │ │ ├── square_max_264_at_16384_512_int8.h │ │ ├── square_max_2730_at_16384_512_int8.h │ │ ├── square_max_282_at_16384_512_int8.h │ │ ├── square_max_303_at_16384_512_int8.h │ │ ├── square_max_327_at_16384_512_int8.h │ │ ├── square_max_356_at_16384_512_int8.h │ │ ├── square_max_390_at_16384_512_int8.h │ │ ├── square_max_431_at_16384_512_int8.h │ │ ├── square_max_481_at_16384_512_int8.h │ │ ├── square_max_546_at_16384_512_int8.h │ │ ├── square_max_630_at_16384_512_int8.h │ │ ├── square_max_68_at_16384_512_int8.h │ │ ├── square_max_70_at_16384_512_int8.h │ │ ├── square_max_71_at_16384_512_int8.h │ │ ├── square_max_72_at_16384_512_int8.h │ │ ├── square_max_73_at_16384_512_int8.h │ │ ├── square_max_744_at_16384_512_int8.h │ │ ├── square_max_75_at_16384_512_int8.h │ │ ├── square_max_76_at_16384_512_int8.h │ │ ├── square_max_78_at_16384_512_int8.h │ │ ├── square_max_79_at_16384_512_int8.h │ │ ├── square_max_8192_at_16384_512_int8.h │ │ ├── square_max_81_at_16384_512_int8.h │ │ ├── square_max_82_at_16384_512_int8.h │ │ ├── square_max_84_at_16384_512_int8.h │ │ ├── square_max_86_at_16384_512_int8.h │ │ ├── square_max_88_at_16384_512_int8.h │ │ ├── square_max_90_at_16384_512_int8.h │ │ ├── square_max_910_at_16384_512_int8.h │ │ ├── square_max_92_at_16384_512_int8.h │ │ ├── square_max_94_at_16384_512_int8.h │ │ ├── square_max_96_at_16384_512_int8.h │ │ └── square_max_98_at_16384_512_int8.h │ ├── 1024 │ │ ├── square_max_101_at_16384_1024_int8.h │ │ ├── square_max_103_at_16384_1024_int8.h │ │ ├── square_max_106_at_16384_1024_int8.h │ │ ├── square_max_109_at_16384_1024_int8.h │ │ ├── square_max_112_at_16384_1024_int8.h │ │ ├── square_max_115_at_16384_1024_int8.h │ │ ├── square_max_1170_at_16384_1024_int8.h │ │ ├── square_max_118_at_16384_1024_int8.h │ │ ├── square_max_122_at_16384_1024_int8.h │ │ ├── square_max_126_at_16384_1024_int8.h │ │ ├── square_max_130_at_16384_1024_int8.h │ │ ├── square_max_134_at_16384_1024_int8.h │ │ ├── square_max_138_at_16384_1024_int8.h │ │ ├── square_max_143_at_16384_1024_int8.h │ │ ├── square_max_148_at_16384_1024_int8.h │ │ ├── square_max_154_at_16384_1024_int8.h │ │ ├── square_max_160_at_16384_1024_int8.h │ │ ├── square_max_1638_at_16384_1024_int8.h │ │ ├── square_max_167_at_16384_1024_int8.h │ │ ├── square_max_174_at_16384_1024_int8.h │ │ ├── square_max_182_at_16384_1024_int8.h │ │ ├── square_max_190_at_16384_1024_int8.h │ │ ├── square_max_199_at_16384_1024_int8.h │ │ ├── square_max_210_at_16384_1024_int8.h │ │ ├── square_max_221_at_16384_1024_int8.h │ │ ├── square_max_234_at_16384_1024_int8.h │ │ ├── square_max_248_at_16384_1024_int8.h │ │ ├── square_max_264_at_16384_1024_int8.h │ │ ├── square_max_2730_at_16384_1024_int8.h │ │ ├── square_max_282_at_16384_1024_int8.h │ │ ├── square_max_303_at_16384_1024_int8.h │ │ ├── square_max_327_at_16384_1024_int8.h │ │ ├── square_max_356_at_16384_1024_int8.h │ │ ├── square_max_390_at_16384_1024_int8.h │ │ ├── square_max_431_at_16384_1024_int8.h │ │ ├── square_max_481_at_16384_1024_int8.h │ │ ├── square_max_546_at_16384_1024_int8.h │ │ ├── square_max_630_at_16384_1024_int8.h │ │ ├── square_max_68_at_16384_1024_int8.h │ │ ├── square_max_70_at_16384_1024_int8.h │ │ ├── square_max_71_at_16384_1024_int8.h │ │ ├── square_max_72_at_16384_1024_int8.h │ │ ├── square_max_73_at_16384_1024_int8.h │ │ ├── square_max_744_at_16384_1024_int8.h │ │ ├── square_max_75_at_16384_1024_int8.h │ │ ├── square_max_76_at_16384_1024_int8.h │ │ ├── square_max_78_at_16384_1024_int8.h │ │ ├── square_max_79_at_16384_1024_int8.h │ │ ├── square_max_8192_at_16384_1024_int8.h │ │ ├── square_max_81_at_16384_1024_int8.h │ │ ├── square_max_82_at_16384_1024_int8.h │ │ ├── square_max_84_at_16384_1024_int8.h │ │ ├── square_max_86_at_16384_1024_int8.h │ │ ├── square_max_88_at_16384_1024_int8.h │ │ ├── square_max_90_at_16384_1024_int8.h │ │ ├── square_max_910_at_16384_1024_int8.h │ │ ├── square_max_92_at_16384_1024_int8.h │ │ ├── square_max_94_at_16384_1024_int8.h │ │ ├── square_max_96_at_16384_1024_int8.h │ │ └── square_max_98_at_16384_1024_int8.h │ └── 2048 │ │ ├── square_max_101_at_16384_2048_int8.h │ │ ├── square_max_103_at_16384_2048_int8.h │ │ ├── square_max_106_at_16384_2048_int8.h │ │ ├── square_max_109_at_16384_2048_int8.h │ │ ├── square_max_112_at_16384_2048_int8.h │ │ ├── square_max_115_at_16384_2048_int8.h │ │ ├── square_max_1170_at_16384_2048_int8.h │ │ ├── square_max_118_at_16384_2048_int8.h │ │ ├── square_max_122_at_16384_2048_int8.h │ │ ├── square_max_126_at_16384_2048_int8.h │ │ ├── square_max_130_at_16384_2048_int8.h │ │ ├── square_max_134_at_16384_2048_int8.h │ │ ├── square_max_138_at_16384_2048_int8.h │ │ ├── square_max_143_at_16384_2048_int8.h │ │ ├── square_max_148_at_16384_2048_int8.h │ │ ├── square_max_154_at_16384_2048_int8.h │ │ ├── square_max_160_at_16384_2048_int8.h │ │ ├── square_max_1638_at_16384_2048_int8.h │ │ ├── square_max_167_at_16384_2048_int8.h │ │ ├── square_max_174_at_16384_2048_int8.h │ │ ├── square_max_182_at_16384_2048_int8.h │ │ ├── square_max_190_at_16384_2048_int8.h │ │ ├── square_max_199_at_16384_2048_int8.h │ │ ├── square_max_210_at_16384_2048_int8.h │ │ ├── square_max_221_at_16384_2048_int8.h │ │ ├── square_max_234_at_16384_2048_int8.h │ │ ├── square_max_248_at_16384_2048_int8.h │ │ ├── square_max_264_at_16384_2048_int8.h │ │ ├── square_max_2730_at_16384_2048_int8.h │ │ ├── square_max_282_at_16384_2048_int8.h │ │ ├── square_max_303_at_16384_2048_int8.h │ │ ├── square_max_327_at_16384_2048_int8.h │ │ ├── square_max_356_at_16384_2048_int8.h │ │ ├── square_max_390_at_16384_2048_int8.h │ │ ├── square_max_431_at_16384_2048_int8.h │ │ ├── square_max_481_at_16384_2048_int8.h │ │ ├── square_max_546_at_16384_2048_int8.h │ │ ├── square_max_630_at_16384_2048_int8.h │ │ ├── square_max_68_at_16384_2048_int8.h │ │ ├── square_max_70_at_16384_2048_int8.h │ │ ├── square_max_71_at_16384_2048_int8.h │ │ ├── square_max_72_at_16384_2048_int8.h │ │ ├── square_max_73_at_16384_2048_int8.h │ │ ├── square_max_744_at_16384_2048_int8.h │ │ ├── square_max_75_at_16384_2048_int8.h │ │ ├── square_max_76_at_16384_2048_int8.h │ │ ├── square_max_78_at_16384_2048_int8.h │ │ ├── square_max_79_at_16384_2048_int8.h │ │ ├── square_max_8192_at_16384_2048_int8.h │ │ ├── square_max_81_at_16384_2048_int8.h │ │ ├── square_max_82_at_16384_2048_int8.h │ │ ├── square_max_84_at_16384_2048_int8.h │ │ ├── square_max_86_at_16384_2048_int8.h │ │ ├── square_max_88_at_16384_2048_int8.h │ │ ├── square_max_90_at_16384_2048_int8.h │ │ ├── square_max_910_at_16384_2048_int8.h │ │ ├── square_max_92_at_16384_2048_int8.h │ │ ├── square_max_94_at_16384_2048_int8.h │ │ ├── square_max_96_at_16384_2048_int8.h │ │ └── square_max_98_at_16384_2048_int8.h ├── BandLimited_TRI │ ├── 512 │ │ ├── tri_max_103_at_16384_512_int8.h │ │ ├── tri_max_106_at_16384_512_int8.h │ │ ├── tri_max_109_at_16384_512_int8.h │ │ ├── tri_max_112_at_16384_512_int8.h │ │ ├── tri_max_115_at_16384_512_int8.h │ │ ├── tri_max_1170_at_16384_512_int8.h │ │ ├── tri_max_118_at_16384_512_int8.h │ │ ├── tri_max_122_at_16384_512_int8.h │ │ ├── tri_max_126_at_16384_512_int8.h │ │ ├── tri_max_130_at_16384_512_int8.h │ │ ├── tri_max_134_at_16384_512_int8.h │ │ ├── tri_max_138_at_16384_512_int8.h │ │ ├── tri_max_143_at_16384_512_int8.h │ │ ├── tri_max_148_at_16384_512_int8.h │ │ ├── tri_max_154_at_16384_512_int8.h │ │ ├── tri_max_160_at_16384_512_int8.h │ │ ├── tri_max_1638_at_16384_512_int8.h │ │ ├── tri_max_167_at_16384_512_int8.h │ │ ├── tri_max_174_at_16384_512_int8.h │ │ ├── tri_max_182_at_16384_512_int8.h │ │ ├── tri_max_190_at_16384_512_int8.h │ │ ├── tri_max_199_at_16384_512_int8.h │ │ ├── tri_max_210_at_16384_512_int8.h │ │ ├── tri_max_221_at_16384_512_int8.h │ │ ├── tri_max_234_at_16384_512_int8.h │ │ ├── tri_max_248_at_16384_512_int8.h │ │ ├── tri_max_264_at_16384_512_int8.h │ │ ├── tri_max_2730_at_16384_512_int8.h │ │ ├── tri_max_282_at_16384_512_int8.h │ │ ├── tri_max_303_at_16384_512_int8.h │ │ ├── tri_max_327_at_16384_512_int8.h │ │ ├── tri_max_356_at_16384_512_int8.h │ │ ├── tri_max_390_at_16384_512_int8.h │ │ ├── tri_max_431_at_16384_512_int8.h │ │ ├── tri_max_481_at_16384_512_int8.h │ │ ├── tri_max_546_at_16384_512_int8.h │ │ ├── tri_max_630_at_16384_512_int8.h │ │ ├── tri_max_744_at_16384_512_int8.h │ │ ├── tri_max_8192_at_16384_512_int8.h │ │ └── tri_max_910_at_16384_512_int8.h │ ├── 1024 │ │ ├── tri_max_103_at_16384_1024_int8.h │ │ ├── tri_max_106_at_16384_1024_int8.h │ │ ├── tri_max_109_at_16384_1024_int8.h │ │ ├── tri_max_112_at_16384_1024_int8.h │ │ ├── tri_max_115_at_16384_1024_int8.h │ │ ├── tri_max_1170_at_16384_1024_int8.h │ │ ├── tri_max_118_at_16384_1024_int8.h │ │ ├── tri_max_122_at_16384_1024_int8.h │ │ ├── tri_max_126_at_16384_1024_int8.h │ │ ├── tri_max_130_at_16384_1024_int8.h │ │ ├── tri_max_134_at_16384_1024_int8.h │ │ ├── tri_max_138_at_16384_1024_int8.h │ │ ├── tri_max_143_at_16384_1024_int8.h │ │ ├── tri_max_148_at_16384_1024_int8.h │ │ ├── tri_max_154_at_16384_1024_int8.h │ │ ├── tri_max_160_at_16384_1024_int8.h │ │ ├── tri_max_1638_at_16384_1024_int8.h │ │ ├── tri_max_167_at_16384_1024_int8.h │ │ ├── tri_max_174_at_16384_1024_int8.h │ │ ├── tri_max_182_at_16384_1024_int8.h │ │ ├── tri_max_190_at_16384_1024_int8.h │ │ ├── tri_max_199_at_16384_1024_int8.h │ │ ├── tri_max_210_at_16384_1024_int8.h │ │ ├── tri_max_221_at_16384_1024_int8.h │ │ ├── tri_max_234_at_16384_1024_int8.h │ │ ├── tri_max_248_at_16384_1024_int8.h │ │ ├── tri_max_264_at_16384_1024_int8.h │ │ ├── tri_max_2730_at_16384_1024_int8.h │ │ ├── tri_max_282_at_16384_1024_int8.h │ │ ├── tri_max_303_at_16384_1024_int8.h │ │ ├── tri_max_327_at_16384_1024_int8.h │ │ ├── tri_max_356_at_16384_1024_int8.h │ │ ├── tri_max_390_at_16384_1024_int8.h │ │ ├── tri_max_431_at_16384_1024_int8.h │ │ ├── tri_max_481_at_16384_1024_int8.h │ │ ├── tri_max_546_at_16384_1024_int8.h │ │ ├── tri_max_630_at_16384_1024_int8.h │ │ ├── tri_max_744_at_16384_1024_int8.h │ │ ├── tri_max_8192_at_16384_1024_int8.h │ │ └── tri_max_910_at_16384_1024_int8.h │ └── 2048 │ │ ├── tri_max_103_at_16384_2048_int8.h │ │ ├── tri_max_106_at_16384_2048_int8.h │ │ ├── tri_max_109_at_16384_2048_int8.h │ │ ├── tri_max_112_at_16384_2048_int8.h │ │ ├── tri_max_115_at_16384_2048_int8.h │ │ ├── tri_max_1170_at_16384_2048_int8.h │ │ ├── tri_max_118_at_16384_2048_int8.h │ │ ├── tri_max_122_at_16384_2048_int8.h │ │ ├── tri_max_126_at_16384_2048_int8.h │ │ ├── tri_max_130_at_16384_2048_int8.h │ │ ├── tri_max_134_at_16384_2048_int8.h │ │ ├── tri_max_138_at_16384_2048_int8.h │ │ ├── tri_max_143_at_16384_2048_int8.h │ │ ├── tri_max_148_at_16384_2048_int8.h │ │ ├── tri_max_154_at_16384_2048_int8.h │ │ ├── tri_max_160_at_16384_2048_int8.h │ │ ├── tri_max_1638_at_16384_2048_int8.h │ │ ├── tri_max_167_at_16384_2048_int8.h │ │ ├── tri_max_174_at_16384_2048_int8.h │ │ ├── tri_max_182_at_16384_2048_int8.h │ │ ├── tri_max_190_at_16384_2048_int8.h │ │ ├── tri_max_199_at_16384_2048_int8.h │ │ ├── tri_max_210_at_16384_2048_int8.h │ │ ├── tri_max_221_at_16384_2048_int8.h │ │ ├── tri_max_234_at_16384_2048_int8.h │ │ ├── tri_max_248_at_16384_2048_int8.h │ │ ├── tri_max_264_at_16384_2048_int8.h │ │ ├── tri_max_2730_at_16384_2048_int8.h │ │ ├── tri_max_282_at_16384_2048_int8.h │ │ ├── tri_max_303_at_16384_2048_int8.h │ │ ├── tri_max_327_at_16384_2048_int8.h │ │ ├── tri_max_356_at_16384_2048_int8.h │ │ ├── tri_max_390_at_16384_2048_int8.h │ │ ├── tri_max_431_at_16384_2048_int8.h │ │ ├── tri_max_481_at_16384_2048_int8.h │ │ ├── tri_max_546_at_16384_2048_int8.h │ │ ├── tri_max_630_at_16384_2048_int8.h │ │ ├── tri_max_744_at_16384_2048_int8.h │ │ ├── tri_max_8192_at_16384_2048_int8.h │ │ └── tri_max_910_at_16384_2048_int8.h ├── brownnoise8192_int8.h ├── chum78_int8.h ├── chum9_int8.h ├── cos1024_int8.h ├── cos2048_int8.h ├── cos256_int8.h ├── cos4096_int16.h ├── cos4096_int8.h ├── cos512_int8.h ├── cos8192_int8.h ├── cosphase2048_int8.h ├── cosphase256_int8.h ├── cosphase8192_int8.h ├── envelop2048_uint8.h ├── halfsin256_uint8.h ├── halfsinwindow512_uint8.h ├── noise_static_1_16384_int8.h ├── phasor256_int8.h ├── pinknoise8192_int8.h ├── saw1024_int8.h ├── saw2048_int8.h ├── saw256_int8.h ├── saw4096_int8.h ├── saw512_int8.h ├── saw8192_int8.h ├── saw_analogue512_int8.h ├── sin1024_int8.h ├── sin1024_uint8.h ├── sin2048_int8.h ├── sin256_int8.h ├── sin4096_int8.h ├── sin512_int8.h ├── sin8192_int8.h ├── sin8192_uint8.h ├── smoothsquare8192_int8.h ├── square_analogue512_int8.h ├── square_no_alias512_int8.h ├── square_no_alias_2048_int8.h ├── triangle1024_int8.h ├── triangle2048_int8.h ├── triangle512_int8.h ├── triangle_analogue512_int8.h ├── triangle_dist_cubed_2048_int8.h ├── triangle_dist_squared_2048_int8.h ├── triangle_hermes_2048_int8.h ├── triangle_valve_2048_int8.h ├── triangle_valve_2_2048_int8.h ├── triangle_warm8192_int8.h ├── uphasor256_uint8.h ├── waveshape1_softclip_int8.h ├── waveshape2_softerclip_int8.h ├── waveshape_chebyshev_3rd_256_int8.h ├── waveshape_chebyshev_4th_256_int8.h ├── waveshape_chebyshev_5th_256_int8.h ├── waveshape_chebyshev_6th_256_int8.h ├── waveshape_compress_512_to_488_int16.h ├── waveshape_sigmoid_int8.h ├── waveshape_tanh_int8.h └── whitenoise8192_int8.h ├── twi_nonblock.h └── utility ├── FrequencyTimer2.cpp ├── FrequencyTimer2.h ├── TimerOne.cpp └── TimerOne.h /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # See: https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#about-the-dependabotyml-file 2 | version: 2 3 | 4 | updates: 5 | # Configure check for outdated GitHub Actions actions in workflows. 6 | # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/dependabot/README.md 7 | # See: https://docs.github.com/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot 8 | - package-ecosystem: github-actions 9 | directory: /.github/workflows/ 10 | schedule: 11 | interval: daily 12 | labels: 13 | - "topic: infrastructure" 14 | -------------------------------------------------------------------------------- /.github/workflows/arduino_lint.yml: -------------------------------------------------------------------------------- 1 | name: Arduino Lint 2 | on: 3 | push: 4 | pull_request: 5 | # Allow manual trigger 6 | workflow_dispatch: 7 | 8 | jobs: 9 | lint: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - uses: actions/checkout@v4 14 | - uses: arduino/arduino-lint-action@v1 15 | with: 16 | project-type: library 17 | library-manager: update 18 | compliance: specification 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Mozzi-resources 3 | .vscode 4 | *.out 5 | sonar-project.properties 6 | *.bak 7 | *.gch 8 | *#* 9 | Makefile* 10 | tags 11 | user_guide.md 12 | notes.txt 13 | FAQ.md 14 | *.dox 15 | *~ 16 | *.o 17 | *.lo 18 | *.la 19 | *.tar.bz2 20 | *.tar.gz 21 | .deps 22 | .libs 23 | config.sub 24 | config.guess 25 | config.log 26 | config.status 27 | config.h* 28 | configure 29 | install-sh 30 | intltool-* 31 | libtool 32 | ltmain.sh 33 | mkinstalldirs 34 | depcomp 35 | missing 36 | autom4te.cache 37 | autogen.err 38 | stamp-* 39 | aclocal.m4 40 | gnome-doc-utils.make 41 | Makefile 42 | Makefile.in 43 | help/cs/*.mo 44 | help/cs/*.page 45 | help/da/*.mo 46 | help/da/*.page 47 | help/de/*.mo 48 | help/de/*.page 49 | help/es/*.mo 50 | help/es/*.page 51 | help/fr/*.mo 52 | help/fr/*.page 53 | help/lt/*.mo 54 | help/lt/*.page 55 | help/ru/*.mo 56 | help/ru/*.page 57 | help/sl/*.mo 58 | help/sl/*.page 59 | help/zh_CN/*.mo 60 | help/zh_CN/*.page 61 | data/org.gnome.gnote.gschema.valid 62 | data/org.gnome.gnote.gschema.xml 63 | data/org.gnome.gnote.panel-applet 64 | data/org.gnome.gnote.panel-applet.in 65 | data/org.gnome.panel.applet.GnoteAppletFactory.service 66 | data/gnote.desktop 67 | data/gnote.desktop.in 68 | data/gnote.schemas 69 | data/org.gnome.Gnote.service 70 | src/dttest 71 | src/filestest 72 | src/gnote 73 | src/gnote-applet 74 | src/libgnote.a 75 | src/notetest 76 | src/stringtest 77 | src/trietest 78 | src/uritest 79 | src/xmlreadertest 80 | src/addins/addins.mk 81 | src/addins/fixedwidth/fixedwidth.so 82 | m4/intltool.m4 83 | m4/libtool.m4 84 | m4/ltoptions.m4 85 | m4/ltsugar.m4 86 | m4/ltversion.m4 87 | m4/lt~obsolete.m4 88 | m4/gnome-doc-utils.m4 89 | po/.intltool-merge-cache 90 | po/Makefile.in.in 91 | po/POTFILES 92 | po/*.gmo 93 | -------------------------------------------------------------------------------- /AutoRange.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AutoRange.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2013-2024 Tim Barrass and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | #ifndef AUTORANGE_H 13 | #define AUTORANGE_H 14 | 15 | /** @ingroup sensortools 16 | Keeps a running calculation of the range of the input values it receives. 17 | */ 18 | template 19 | class 20 | AutoRange { 21 | 22 | public: 23 | /** Constructor. 24 | @tparam T the type of numbers to to use, eg. int, unsigned int, float etc. 25 | @param min_expected the minimum possible input value. 26 | @param max_expected the maximum possible input value. 27 | */ 28 | AutoRange(T min_expected, T max_expected):range_min(max_expected),range_max(min_expected),range(0) 29 | { 30 | } 31 | 32 | 33 | /** Updates the current range. 34 | @param n the next value to include in the range calculation. 35 | */ 36 | void next(T n) 37 | { 38 | if (n > range_max) 39 | { 40 | range_max = n; 41 | range = range_max - range_min; 42 | } 43 | else 44 | { 45 | if (n< range_min) 46 | { 47 | range_min = n; 48 | range = range_max - range_min; 49 | } 50 | } 51 | } 52 | 53 | /** Returns the current minimum. 54 | @return minimum 55 | */ 56 | T getMin() 57 | { 58 | return range_min; 59 | } 60 | 61 | 62 | /** Returns the current maximum. 63 | @return maximum 64 | */ 65 | T getMax() 66 | { 67 | return range_max; 68 | } 69 | 70 | 71 | /** Returns the current range. 72 | @return range 73 | */ 74 | T getRange() 75 | { 76 | return range; 77 | } 78 | 79 | private: 80 | T range_max, range_min, range; 81 | 82 | }; 83 | 84 | #endif // #ifndef AUTORANGE_H 85 | -------------------------------------------------------------------------------- /CapPoll.h: -------------------------------------------------------------------------------- 1 | /* 2 | * CapPoll.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2015-2024 Tim Barrass and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | #ifndef RCPOLL_H 13 | #define RCPOLL_H 14 | 15 | 16 | /** 17 | A class for reading voltage on a digital pin, derived from http://arduino.cc/en/Tutorial/RCtime. 18 | This is designed to be used in updateControl(). Each time it is called, it checks if a capacitor has charged, 19 | and returns an output reflecting how long it took for the most recent charge. 20 | */ 21 | 22 | template 23 | class CapPoll 24 | { 25 | 26 | public: 27 | /** Constructor. 28 | */ 29 | CapPoll():result(0),rc_cued(true), output(0) 30 | { 31 | ; 32 | } 33 | 34 | /** Checks whether the capacitor has charged, and returns how long it took for the most recent charge. 35 | This would preferably be called in updateControl(), but if the resolution isn't fine enough or the 36 | pin charges too fast for updateControl() to catch, try it in updateAudio(). 37 | @return the sensor value, reflected in how many checking cycles it took to charge the capacitor. 38 | */ 39 | inline 40 | unsigned int next(){ 41 | if (rc_cued){ 42 | pinMode(SENSOR_PIN, INPUT); // turn pin into an input and time till pin goes low 43 | digitalWrite(SENSOR_PIN, LOW); // turn pullups off - or it won't work 44 | rc_cued = false; 45 | } 46 | if(digitalRead(SENSOR_PIN)){ // wait for pin to go low 47 | result++; 48 | } 49 | else{ 50 | output = result; 51 | result = 0; 52 | pinMode(SENSOR_PIN, OUTPUT); // make pin OUTPUT 53 | digitalWrite(SENSOR_PIN, HIGH); // make pin HIGH to discharge capacitor - see the schematic 54 | rc_cued = true; 55 | } 56 | return output; 57 | } 58 | 59 | private: 60 | unsigned int result; 61 | boolean rc_cued; 62 | unsigned int output; 63 | 64 | }; 65 | 66 | #endif // #ifndef RCPOLL_H 67 | 68 | -------------------------------------------------------------------------------- /ControlDelay.h: -------------------------------------------------------------------------------- 1 | /* 2 | * ControlDelay.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2012-2024 Tim Barrass and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | #ifndef CONTROLDELAY_H_ 13 | #define CONTROLDELAY_H_ 14 | 15 | #include "AudioDelay.h" 16 | 17 | /** 18 | @brief Control-rate delay line for delaying control signals. 19 | For example, this could be used to produce echo-like effects using multiple 20 | instances of the same voice, when AudioDelay would be too short for an actual 21 | audio echo. This is in fact just a wrapper of the AudioDelay code. 22 | @tparam NUM_BUFFER_SAMPLES is the length of the delay buffer in samples. This should 23 | be a power of two. 24 | @tparam the type of numbers to use for the signal in the delay. The default is int8_t, but int could be useful 25 | when adding manual feedback. When using int, the input should be limited to 15 bits width, ie. -16384 to 16383. 26 | */ 27 | 28 | template 29 | class ControlDelay: public AudioDelay 30 | { 31 | }; 32 | 33 | /** 34 | @example 02.Control/Control_Echo_Theremin/Control_Echo_Theremin.ino 35 | This is an example of how to use the ControlDelay class. 36 | */ 37 | 38 | #endif // #ifndef CONTROLDELAY_H_ 39 | -------------------------------------------------------------------------------- /IntMap.h: -------------------------------------------------------------------------------- 1 | /* 2 | * IntMap.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2012-2024 Tim Barrass and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | 13 | #ifndef INTMAP_H_ 14 | #define INTMAP_H_ 15 | 16 | /** A faster version of Arduino's map() function. 17 | This uses ints instead of longs internally and does some of the maths at compile time. 18 | */ 19 | class IntMap { 20 | 21 | public: 22 | /** Constructor. 23 | @param in_min the minimum of the input range. 24 | @param in_max the maximum of the input range. 25 | @param out_min the minimum of the output range. 26 | @param out_max the maximum of the output range. 27 | */ 28 | IntMap(int in_min, int in_max, int out_min, int out_max) 29 | : _IN_MIN(in_min),_IN_MAX(in_max),_OUT_MIN(out_min),_OUT_MAX(out_max), 30 | _MULTIPLIER((256L * (out_max-out_min)) / (in_max-in_min)) 31 | { 32 | ; 33 | } 34 | 35 | /** Process the next input value. 36 | @param n the next integer to process. 37 | @return the input integer mapped to the output range. 38 | */ 39 | int operator()(int n) const { 40 | return (int) (((_MULTIPLIER*(n-_IN_MIN))>>8) + _OUT_MIN); 41 | } 42 | 43 | 44 | private: 45 | const int _IN_MIN, _IN_MAX, _OUT_MIN, _OUT_MAX; 46 | const long _MULTIPLIER; 47 | }; 48 | 49 | #endif /* INTMAP_H_ */ 50 | -------------------------------------------------------------------------------- /IntegerType.h: -------------------------------------------------------------------------------- 1 | /* 2 | * IntegerType.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2021-2024 Thomas Friedrichsmeier and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | #ifndef INTTYPE_H_ 13 | #define INTTYPE_H_ 14 | 15 | #include 16 | 17 | /** @ingroup util 18 | Provides appropriate integer types that can bit the given number of bytes on this platform (at most 64). 19 | */ 20 | template struct IntegerType { 21 | // at an odd value, such as 3 bytes? Add one more byte (up to at most 8 bytes).. 22 | typedef typename IntegerType<(BYTES < 8) ? (BYTES+1) : 8>::unsigned_type unsigned_type; 23 | typedef typename IntegerType<(BYTES < 8) ? (BYTES+1) : 8>::signed_type signed_type; 24 | }; 25 | 26 | // These are the specializations for the types that we actually assume to exist: 27 | template<> struct IntegerType<1> { 28 | typedef uint8_t unsigned_type; 29 | typedef int8_t signed_type; 30 | }; 31 | 32 | template<> struct IntegerType<2> { 33 | typedef uint16_t unsigned_type; 34 | typedef int16_t signed_type; 35 | }; 36 | 37 | template<> struct IntegerType<4> { 38 | typedef uint32_t unsigned_type; 39 | typedef int32_t signed_type; 40 | }; 41 | 42 | template<> struct IntegerType<8> { 43 | typedef uint64_t unsigned_type; 44 | typedef int64_t signed_type; 45 | }; 46 | 47 | #endif /* INTTYPE_H_ */ 48 | -------------------------------------------------------------------------------- /LICENSE.TXT: -------------------------------------------------------------------------------- 1 | Mozzi - Sound Synthesis Library for Arduino 2 | 3 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 4 | 5 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. A full copy of this licence is included in these sources as LICENCE.LPGL. 6 | 7 | Note that some of the provided code examples show the use of separate third-party libraries, which may come with different licences. 8 | -------------------------------------------------------------------------------- /LowPassFilter.h: -------------------------------------------------------------------------------- 1 | /* 2 | * LowPassfilter.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2012-2024 Tim Barrass and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | 13 | #ifndef LOWPASS_H_ 14 | #define LOWPASS_H_ 15 | 16 | #include 17 | #warning This header is deprecated, please use ResonantFilter.h instead. 18 | 19 | #endif /* LOWPASS_H_ */ 20 | -------------------------------------------------------------------------------- /Mozzi.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Mozzi.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2012-2024 Tim Barrass and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | 13 | /** @page basic_info Getting Started 14 | * 15 | * You are currently looking at the Mozzi API documentation. It is the most comprehensive source of all functions and 16 | * classes available in Mozzi, but not necesarrily the best starting point for learning about Mozzi. For getting 17 | * started, it is recommended to browse through the tutorials at https://sensorium.github.io/Mozzi/learn/ . 18 | */ 19 | 20 | /** @ingroup core 21 | * @file Mozzi.h 22 | * 23 | * This is the main include file in Mozzi. Almost all sketches using Mozzi will want to include this file @em exactly once. 24 | * 25 | * Should your sketch require \ref core Mozzi functions in more than one translation unit (i.e. you have more than one .cpp-file 26 | * in your sketch itself), only *one* of these shall include this file, while any others shall include \ref MozziHeadersOnly instead. 27 | * (Failing to heed this advice will lead to "duplicate definition" errors.) 28 | */ 29 | 30 | #ifndef MOZZI_H_ 31 | #define MOZZI_H_ 32 | 33 | #include "MozziGuts.h" 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /MozziConfigValues.h: -------------------------------------------------------------------------------- 1 | /* 2 | * MozziConfigValues.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2023-2024 Thomas Friedrichsmeier and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | /** @file MozziConfigValues.h 13 | * This file keeps a list of named configuration values. 14 | * 15 | * Note that these are all given as defines, instead of e.g. const ints or enum values, because they need to be usable at preprocessor level, in order to control conditional compilation. 16 | */ 17 | 18 | #ifndef MOZZICONFIG_VALUES_H 19 | #define MOZZICONFIG_VALUES_H 20 | 21 | 22 | 23 | #define MOZZI_MONO 1 24 | #define MOZZI_STEREO 2 25 | 26 | // We try to use distinct values as much as possible so we can catch semantic errors like "#define MOZZI_AUDIO_MODE MOZZI_STEREO" 27 | #define MOZZI_OUTPUT_PWM 101 28 | #define MOZZI_OUTPUT_2PIN_PWM 102 29 | #define MOZZI_OUTPUT_EXTERNAL_TIMED 103 30 | #define MOZZI_OUTPUT_EXTERNAL_CUSTOM 104 31 | #define MOZZI_OUTPUT_PDM_VIA_I2S 105 32 | #define MOZZI_OUTPUT_PDM_VIA_SERIAL 106 33 | #define MOZZI_OUTPUT_I2S_DAC 107 34 | #define MOZZI_OUTPUT_INTERNAL_DAC 108 35 | 36 | #define MOZZI_AUDIO_INPUT_NONE 201 37 | #define MOZZI_AUDIO_INPUT_STANDARD 202 38 | 39 | #define MOZZI_ANALOG_READ_NONE 301 40 | #define MOZZI_ANALOG_READ_STANDARD 302 41 | 42 | #define MOZZI_I2S_FORMAT_PLAIN 401 43 | #define MOZZI_I2S_FORMAT_LSBJ 402 44 | 45 | // defined with some space in between, just in case. This should be numerically ordered. 46 | #define MOZZI_COMPATIBILITY_1_1 1100 47 | #define MOZZI_COMPATIBILITY_2_0 2000 48 | #define MOZZI_COMPATIBILITY_LATEST 9000 // May be upped, arbitrarily 49 | 50 | // For convenience 51 | #include "hardware_defines.h" 52 | 53 | 54 | #endif 55 | -------------------------------------------------------------------------------- /MozziHeadersOnly.h: -------------------------------------------------------------------------------- 1 | /* 2 | * MozziHeadersOnly.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2023-2024 Tim Barrass and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | /** @ingroup core 13 | * @file MozziHeadersOnly.h 14 | * 15 | * This file provides declarations of the \ref core Mozzi functions, but no implementation. Use this only, if you have more than one 16 | * translation unit in your project (i.e. you have more than one .cpp-file in your sketch itself). Otherwise include \ref Mozzi.h, instead. 17 | * 18 | * (Failure to head this advice will lead to "symbol XY undefined" errors.). 19 | */ 20 | 21 | #ifndef MOZZI_HEADERS_ONLY_H_ 22 | #define MOZZI_HEADERS_ONLY_H_ 23 | 24 | #define _MOZZI_HEADER_ONLY 25 | #include "MozziGuts.h" 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /RCpoll.h: -------------------------------------------------------------------------------- 1 | /* 2 | * RCpoll.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2014-2024 Tim Barrass and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | #ifndef RCPOLL_H 13 | #define RCPOLL_H 14 | 15 | 16 | /** 17 | A class for reading voltage on a digital pin, derived from http://arduino.cc/en/Tutorial/RCtime. 18 | This is designed to be used in updateControl(). Each time it is called, it checks if a capacitor has charged, 19 | and returns an output reflecting how long it took for the most recent charge. 20 | */ 21 | 22 | template 23 | class RCpoll 24 | { 25 | 26 | public: 27 | /** Constructor. 28 | */ 29 | RCpoll():result(0),rc_cued(true), output(0) 30 | { 31 | ; 32 | } 33 | 34 | /** Checks whether the capacitor has charged, and returns how long it took for the most recent charge. 35 | This would preferably be called in updateControl(), but if the resolution isn't fine enough or the 36 | pin charges too fast for updateControl() to catch, try it in updateAudio(). 37 | @return the sensor value, reflected in how many checking cycles it took to charge the capacitor. 38 | */ 39 | inline 40 | unsigned int next(){ 41 | if (rc_cued){ 42 | pinMode(SENSOR_PIN, INPUT); // turn pin into an input and time till pin goes low 43 | digitalWrite(SENSOR_PIN, LOW); // turn pullups off - or it won't work 44 | rc_cued = false; 45 | } 46 | if(digitalRead(SENSOR_PIN)){ // wait for pin to go low 47 | result++; 48 | } 49 | else{ 50 | output = result; 51 | result = 0; 52 | pinMode(SENSOR_PIN, OUTPUT); // make pin OUTPUT 53 | digitalWrite(SENSOR_PIN, HIGH); // make pin HIGH to discharge capacitor - see the schematic 54 | rc_cued = true; 55 | } 56 | return output; 57 | } 58 | 59 | private: 60 | unsigned int result; 61 | boolean rc_cued; 62 | unsigned int output; 63 | 64 | }; 65 | 66 | #endif // #ifndef RCPOLL_H 67 | 68 | -------------------------------------------------------------------------------- /Stack.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Stack.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2013-2024 Tim Barrass and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | /** A simple stack, used internally for keeping track of analog input channels as they are read. 13 | This stack is really just an array with a pointer to the most recent item, and memory is allocated at compile time. 14 | @tparam T the kind of numbers (or other things) to store. 15 | @tparam NUM_ITEMS the maximum number of items the stack will need to hold. 16 | */ 17 | template 18 | class Stack 19 | { 20 | private: 21 | T _array[NUM_ITEMS]; 22 | int top; 23 | 24 | public: 25 | /** Constructor 26 | */ 27 | Stack(): top(-1) 28 | { 29 | } 30 | 31 | /** Put an item on the stack. 32 | @param item the thing you want to put on the stack. 33 | */ 34 | void push(T item) 35 | { 36 | if (top< (NUM_ITEMS-1)){ 37 | top++; 38 | _array[top]=item; 39 | } 40 | } 41 | 42 | /** Get the item on top of the stack. 43 | @return T the item 44 | */ 45 | T pop() 46 | { 47 | if(top==-1) return -1; 48 | T item =_array[top]; 49 | top--; 50 | return item; 51 | } 52 | 53 | }; 54 | -------------------------------------------------------------------------------- /WavePacketSample.h: -------------------------------------------------------------------------------- 1 | /* 2 | * WavePacketSample.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2013-2024 Tim Barrass and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | 13 | #ifndef WAVEPACKETSAMPLE_H 14 | #define WAVEPACKETSAMPLE_H 15 | 16 | 17 | #include "WavePacket.h" 18 | /** A WavePacket which allows a custom table to be set as the audio source for the wavepackets (or grains). 19 | @tparam ALGORITHM options are SINGLE or DOUBLE, for a single non-overlapping stream of packets or a double, overlapping stream. 20 | 21 | */ 22 | template 23 | class WavePacketSample: public WavePacket 24 | { 25 | public: 26 | /** Change the sound table which will be played. Needs to be 8192 cells long for now. 27 | @param TABLE_NAME is the name of the array in the table ".h" file you're using. 28 | */ 29 | inline 30 | void setTable(const int8_t * TABLE_NAME) 31 | { 32 | aWav.setTable(TABLE_NAME); 33 | } 34 | 35 | private: 36 | Oscil <8192, MOZZI_AUDIO_RATE> aWav; 37 | }; 38 | 39 | /** @example 06.Synthesis/WavePacket_Sample/WavePacket_Sample.ino 40 | This is an example of how to use the WavePacketSample class. 41 | */ 42 | #endif // #ifndef WAVEPACKETSAMPLE_H 43 | 44 | -------------------------------------------------------------------------------- /config/config_example_avr_hifi.h: -------------------------------------------------------------------------------- 1 | /* Configuration example 2 | 3 | This example is targetted at the AVR platform (Arduino Uno & friends), only! 4 | 5 | Set configuration options according to the mode that was formerly known as "HIFI". 6 | Do read up on the required hardware circuitry! */ 7 | 8 | #include "MozziConfigValues.h" // for named option values 9 | 10 | #define MOZZI_AUDIO_MODE MOZZI_OUTPUT_2PIN_PWM 11 | //#define MOZZI_AUDIO_RATE 32768 // the default, in this mode 12 | //#define MOZZI_PWM_RATE 125000 // the default, in this mode 13 | //#define MOZZI_AUDIO_BITS_PER_CHANNEL 2 // the default, in this mode 14 | 15 | // should you wish to customize the output pins: 16 | //#define AUDIO_AUDIO_PIN_1 TIMER1_A_PIN 17 | //#define MOZZI_AUDIO_PIN_1_REGISTER OCR1A // must also specify the hardware register responsible for this pin 18 | //#define AUDIO_AUDIO_PIN_1_LOW TIMER1_B_PIN 19 | //#define MOZZI_AUDIO_PIN_1_LOW_REGISTER OCR1B // must also specify the hardware register responsible for this pin 20 | -------------------------------------------------------------------------------- /config/config_example_avr_legacy_standard_mode.h: -------------------------------------------------------------------------------- 1 | /* Configuration example 2 | 3 | This example is targetted at the AVR platform (Arduino Uno & friends), only! 4 | 5 | Set configuration options according to the mode that was formerly known as "STANDARD" (not STANDARD_PLUS). */ 6 | 7 | #include "MozziConfigValues.h" // for named option values 8 | 9 | #define MOZZI_AUDIO_MODE MOZZI_OUTPUT_MODE_PWM 10 | #define MOZZI_AUDIO_RATE 16384 11 | #define MOZZI_PWM_RATE 16384 12 | 13 | // should you wish to customize the output pin: 14 | //#define AUDIO_AUDIO_PIN_1 TIMER1_A_PIN 15 | //#define MOZZI_AUDIO_PIN_1_REGISTER OCR1A // must also specify the hardware register responsible for this pin 16 | -------------------------------------------------------------------------------- /config/config_example_avr_legacy_standardplus_mode.h: -------------------------------------------------------------------------------- 1 | /* Configuration example 2 | 3 | This example is targetted at the AVR platform (Arduino Uno & friends), only! 4 | 5 | The configuration formerly known as STANDARD_PLUS is still the default on AVR, so you 6 | do not need to configure anything! This file just lists the relevant settings involved: */ 7 | 8 | #include "MozziConfigValues.h" // for named option values 9 | 10 | // all of these are the defaults on AVR, anyway, thus commented 11 | //#define MOZZI_AUDIO_MODE MOZZI_OUTPUT_MODE_PWM 12 | //#define MOZZI_AUDIO_RATE 16384 13 | //#define MOZZI_PWM_RATE 32768 14 | 15 | 16 | // should you wish to customize the output pin: 17 | //#define AUDIO_AUDIO_PIN_1 TIMER1_A_PIN 18 | //#define MOZZI_AUDIO_PIN_1_REGISTER OCR1A // must also specify the hardware register responsible for this pin 19 | -------------------------------------------------------------------------------- /config/config_example_avr_stereo.h: -------------------------------------------------------------------------------- 1 | /* Configuration example 2 | 3 | This example is targetted at the AVR platform (Arduino Uno & friends), only! 4 | 5 | This example shows setting up stereo mode on AVR. */ 6 | 7 | #include "MozziConfigValues.h" // for named option values 8 | 9 | #define MOZZI_AUDIO_CHANNELS MOZZI_STEREO 10 | 11 | // should you wish to customize the output pins: 12 | //#define AUDIO_AUDIO_PIN_1 TIMER1_A_PIN 13 | //#define MOZZI_AUDIO_PIN_1_REGISTER OCR1A // must also specify the hardware register responsible for this pin 14 | //#define AUDIO_AUDIO_PIN_2 TIMER1_B_PIN 15 | //#define MOZZI_AUDIO_PIN_2_REGISTER OCR1B // must also specify the hardware register responsible for this pin 16 | -------------------------------------------------------------------------------- /config/config_example_external.h: -------------------------------------------------------------------------------- 1 | /* Configuration example 2 | 3 | Configure Mozzi for "external" audio output. You will need to provide an audioOutput() function in your sketch. 4 | 5 | See TODO: link to relevant tutorial 6 | */ 7 | 8 | #include "MozziConfigValues.h" // for named option values 9 | 10 | #define MOZZI_AUDIO_MODE MOZZI_OUTPUT_EXTERNAL_TIMED 11 | // or use this: 12 | //#define MOZZI_AUDIO_MODE MOZZI_OUTPUT_EXTERNAL_CUSTOM 13 | 14 | //#define MOZZI_AUDIO_RATE 32768 // the default, in this mode 15 | //#define MOZZI_AUDIO_BITS 16 // the default in this mode, but e.g. when connecting to a 24-bit DAC, you'd set 24, here. 16 | -------------------------------------------------------------------------------- /config/config_example_rp2040_i2s_pt8211_mono.h: -------------------------------------------------------------------------------- 1 | /* Configuration example 2 | 3 | This example is targetted at the RP2040 (raspberry Pi pico) platform only! 4 | 5 | Configure the Raspberry Pico to output sound in mono on a I2S DAC on LSBJ format (like the PT8211). */ 6 | 7 | 8 | #include "MozziConfigValues.h" // for named option values 9 | 10 | #define MOZZI_AUDIO_MODE MOZZI_OUTPUT_I2S_DAC 11 | #define MOZZI_I2S_FORMAT MOZZI_I2S_FORMAT_LSBJ // PT8211 is on LSBJ format 12 | 13 | // all of these are the defaults on RP2040 outputting on I2S, anyway, thus commented 14 | #define MOZZI_AUDIO_BITS 16 15 | #define MOZZI_I2S_PIN_BCK 20 16 | #define MOZZI_I2S_PIN_WS (MOZZI_I2S_PIN_BCK+1) // CANNOT BE CHANGED, HAS TO BE NEXT TO pBCLK, i.e. default is 21 17 | #define MOZZI_I2S_PIN_DATA 22 18 | 19 | -------------------------------------------------------------------------------- /config/config_example_rp2040_pwm.h: -------------------------------------------------------------------------------- 1 | /* Configuration example 2 | 3 | This example is targetted at the RP2040 (raspberry Pi pico) platform only! 4 | 5 | The configuration formerly known as STANDARD_PLUS is still the default on RP2040, so you 6 | do not need to configure anything! This file just lists the relevant settings involved: */ 7 | 8 | #include "MozziConfigValues.h" // for named option values 9 | 10 | // all of these are the defaults on RP2040, anyway, thus commented 11 | //#define MOZZI_AUDIO_MODE MOZZI_OUTPUT_MODE_PWM 12 | //#define MOZZI_AUDIO_RATE 32768 13 | 14 | 15 | // should you wish to customize the output pin: 16 | //#define AUDIO_AUDIO_PIN_1 0 17 | -------------------------------------------------------------------------------- /examples/01.Basics/Control_Gain/Control_Gain.ino: -------------------------------------------------------------------------------- 1 | /* Example changing the gain of a sinewave, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates the use of a control variable to influence an 5 | audio signal. 6 | 7 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 8 | DAC/A14 on Teensy 3.1, or 9 | check the README or http://sensorium.github.io/Mozzi/ 10 | 11 | Mozzi documentation/API 12 | https://sensorium.github.io/Mozzi/doc/html/index.html 13 | 14 | Mozzi help/discussion/announcements: 15 | https://groups.google.com/forum/#!forum/mozzi-users 16 | 17 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 18 | 19 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 20 | */ 21 | 22 | #include 23 | #include // oscillator template 24 | #include // sine table for oscillator 25 | 26 | // use: Oscil oscilName (wavetable), look in .h file of table #included above 27 | Oscil aSin(SIN2048_DATA); 28 | 29 | // control variable, use the smallest data size you can for anything used in audio 30 | byte gain = 255; 31 | 32 | 33 | void setup(){ 34 | startMozzi(); // start with default control rate of 64 35 | aSin.setFreq(3320); // set the frequency 36 | } 37 | 38 | 39 | void updateControl(){ 40 | // as byte, this will automatically roll around to 255 when it passes 0 41 | gain = gain - 3 ; 42 | } 43 | 44 | 45 | AudioOutput updateAudio(){ 46 | return MonoOutput::from16Bit(aSin.next() * gain); // 8 bits waveform * 8 bits gain makes 16 bits 47 | } 48 | 49 | 50 | void loop(){ 51 | audioHook(); // required here 52 | } 53 | -------------------------------------------------------------------------------- /examples/01.Basics/Sinewave/Sinewave.ino: -------------------------------------------------------------------------------- 1 | /* Example playing a sinewave at a set frequency, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates the use of Oscil to play a wavetable. 5 | 6 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 7 | DAC/A14 on Teensy 3.1, or 8 | check the README or http://sensorium.github.io/Mozzi/ 9 | 10 | Mozzi documentation/API 11 | https://sensorium.github.io/Mozzi/doc/html/index.html 12 | 13 | Mozzi help/discussion/announcements: 14 | https://groups.google.com/forum/#!forum/mozzi-users 15 | 16 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 17 | 18 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 19 | */ 20 | 21 | #define MOZZI_CONTROL_RATE 64 // Hz, powers of 2 are most reliable; 64 Hz is actually the default, but shown here, for clarity 22 | #include 23 | #include // oscillator template 24 | #include // sine table for oscillator 25 | 26 | // use: Oscil oscilName (wavetable), look in .h file of table #included above 27 | Oscil aSin(SIN2048_DATA); 28 | 29 | void setup(){ 30 | startMozzi(); // :) 31 | aSin.setFreq(440); // set the frequency 32 | } 33 | 34 | 35 | void updateControl(){ 36 | // put changing controls in here 37 | } 38 | 39 | 40 | AudioOutput updateAudio(){ 41 | return MonoOutput::from8Bit(aSin.next()); // return an int signal centred around 0 42 | } 43 | 44 | 45 | void loop(){ 46 | audioHook(); // required here 47 | } 48 | -------------------------------------------------------------------------------- /examples/01.Basics/Skeleton/Skeleton.ino: -------------------------------------------------------------------------------- 1 | #include // only needed, if you want to change some defaults 2 | #define MOZZI_CONTROL_RATE 64 // any options then go above the Mozzi.h include 3 | #include // needed once in each sketch 4 | 5 | void setup() { 6 | startMozzi(); 7 | } 8 | 9 | void updateControl() { 10 | // your control code 11 | } 12 | 13 | AudioOutput updateAudio() { 14 | // For mono output, the return value of this function is really just a signed integer. 15 | // However, for best portability of your sketch to different boards and configurations, 16 | // pick one of the variants below, depending on the "natural" range of the audio values 17 | // you generate: 18 | return MonoOutput::from8Bit(0); // if your signal is in 8 bit range 19 | /* OR */ 20 | return MonoOutput::fromAlmostNBit(9, 0); // if your signal is between -244 and 243 (_almost_ 9 bits is a special case on AVR boards) 21 | /* OR */ 22 | return MonoOutput::fromAlmostNBit(9, 0).clip(); // To clip (instead of overflow), should a few stray values exceed the allowable range 23 | /* OR */ 24 | return MonoOutput::from16Bit(0); // if your signal is in 16 bit range, e.g. the product of two 8 bit numbers 25 | /* OR */ 26 | return MonoOutput::fromNBit(21, 0); // if your signal happens to be in 21 bit range 27 | // In case you are wondering: 28 | // In older sketches, you will find "int updateAudio()", returning a plain int value. 29 | // That will still work, but is not recommended. 30 | } 31 | 32 | void loop() { 33 | audioHook(); // fills the audio buffer 34 | } 35 | -------------------------------------------------------------------------------- /examples/01.Basics/Skeleton_Multi/Skeleton_Multi.ino: -------------------------------------------------------------------------------- 1 | /* This example shows how to set up a sketch where Mozzi-related functions are called 2 | from more than one .cpp source file (which will be compiled, separately). 3 | 4 | Unless you have good reason to do this, it is recommended to base your sketch on the 5 | single-file "Skeleton" example, instead. 6 | 7 | Mozzi documentation/API 8 | https://sensorium.github.io/Mozzi/doc/html/index.html 9 | 10 | Mozzi help/discussion/announcements: 11 | https://groups.google.com/forum/#!forum/mozzi-users 12 | 13 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 14 | 15 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 16 | */ 17 | 18 | #include // at the top of your sketch 19 | 20 | void setup() { 21 | startMozzi(); 22 | } 23 | 24 | void updateControl() { 25 | // your control code 26 | } 27 | 28 | void loop() { 29 | audioHook(); // fills the audio buffer 30 | } 31 | -------------------------------------------------------------------------------- /examples/01.Basics/Skeleton_Multi/Skeleton_Multi_Unit2.cpp: -------------------------------------------------------------------------------- 1 | #include // should be included only once in the whole program. Sketches needing 2 | // core Mozzi functions in more than one .cpp file, shall include MozziHeadersOnly.h 3 | // in all but one. 4 | 5 | AudioOutput_t updateAudio() { 6 | return MonoOutput::from8Bit(0); // just a dummy 7 | } 8 | -------------------------------------------------------------------------------- /examples/02.Control/EventDelay/EventDelay.ino: -------------------------------------------------------------------------------- 1 | /* Example of a sound being toggled on an off, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates scheduling with EventDelay. 5 | EventDelay is a way to make non-blocking 6 | time delays for events. Use this instead of 7 | the Arduino delay() function, which doesn't 8 | work with Mozzi. 9 | 10 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 11 | DAC/A14 on Teensy 3.1, or 12 | check the README or http://sensorium.github.io/Mozzi/ 13 | 14 | Mozzi documentation/API 15 | https://sensorium.github.io/Mozzi/doc/html/index.html 16 | 17 | Mozzi help/discussion/announcements: 18 | https://groups.google.com/forum/#!forum/mozzi-users 19 | 20 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 21 | 22 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 23 | */ 24 | 25 | #define MOZZI_CONTROL_RATE 64 26 | #include 27 | #include // oscillator template 28 | #include // sine table for oscillator 29 | #include 30 | 31 | // use: Oscil oscilName (wavetable), look in .h file of table #included above 32 | Oscil aSin(SIN8192_DATA); 33 | 34 | // for scheduling audio gain changes 35 | EventDelay kGainChangeDelay; 36 | 37 | char gain = 1; 38 | 39 | void setup(){ 40 | startMozzi(); 41 | aSin.setFreq(330); // set the frequency 42 | kGainChangeDelay.set(1000); // 1 second countdown, within resolution of MOZZI_CONTROL_RATE 43 | } 44 | 45 | 46 | void updateControl(){ 47 | if(kGainChangeDelay.ready()){ 48 | gain = 1-gain; // flip 0/1 49 | kGainChangeDelay.start(); 50 | } 51 | } 52 | 53 | 54 | AudioOutput updateAudio(){ 55 | return AudioOutput::from8Bit(aSin.next()*gain); 56 | } 57 | 58 | 59 | void loop(){ 60 | audioHook(); 61 | } 62 | -------------------------------------------------------------------------------- /examples/04.Audio_Input/Audio_Input/Audio_Input.ino: -------------------------------------------------------------------------------- 1 | /* Test of audio input using Mozzi sonification library. 2 | 3 | An audio input using the range between 0 to 5V on analog pin A0 (or as 4 | set in MOZZI_AUDIO_INPUT_PIN) is sampled and output on digital pin 9. 5 | 6 | NOTE: MOZZI_AUDIO_INPUT_STANDARD is not available as an option on all 7 | platforms. 8 | 9 | Circuit: 10 | Audio cable centre wire on pin A0, outer shielding to Arduino Ground. 11 | Audio output on DAC/A14 on Teensy 3.0, 3.1, or digital pin 9 on a Uno or similar, or 12 | check the README or http://sensorium.github.io/Mozzi/ 13 | 14 | Mozzi documentation/API 15 | https://sensorium.github.io/Mozzi/doc/html/index.html 16 | 17 | Mozzi help/discussion/announcements: 18 | https://groups.google.com/forum/#!forum/mozzi-users 19 | 20 | Copyright 2013-2024 Tim Barrass and the Mozzi Team 21 | 22 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 23 | */ 24 | 25 | #include 26 | #define MOZZI_AUDIO_INPUT MOZZI_AUDIO_INPUT_STANDARD 27 | #define MOZZI_AUDIO_INPUT_PIN 0 28 | 29 | #include 30 | 31 | void setup(){ 32 | startMozzi(); 33 | } 34 | 35 | 36 | void updateControl(){ 37 | } 38 | 39 | 40 | AudioOutput updateAudio(){ 41 | int asig = getAudioInput(); // range 0-1023 42 | asig = asig - 512; // now range is -512 to 511 43 | // output range in STANDARD mode is -244 to 243, 44 | // we scale down only by one bit, so you might need 45 | // to adjust your signal to suit 46 | return MonoOutput::fromAlmostNBit(9, asig).clip(); 47 | } 48 | 49 | 50 | void loop(){ 51 | audioHook(); 52 | } 53 | -------------------------------------------------------------------------------- /examples/05.Control_Filters/DCfilter/DCfilter.ino: -------------------------------------------------------------------------------- 1 | /* Example of filtering an analog input to remove DC bias, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates DCfilter(), DC-blocking filter useful for 5 | highlighting changes in control signals. 6 | The output of the filter settles to 0 if the incoming signal stays constant. 7 | If the input changes, the filter output swings to track the change and 8 | eventually settles back to 0. 9 | 10 | Mozzi documentation/API 11 | https://sensorium.github.io/Mozzi/doc/html/index.html 12 | 13 | Mozzi help/discussion/announcements: 14 | https://groups.google.com/forum/#!forum/mozzi-users 15 | 16 | Copyright 2013-2024 Tim Barrass and the Mozzi Team 17 | 18 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 19 | */ 20 | 21 | #include 22 | #include 23 | 24 | int sensorPin = A0; 25 | 26 | DCfilter dcFiltered(0.9); // parameter sets how long the filter takes to settle 27 | 28 | void setup() { 29 | //Serial.begin(9600); // for Teensy 3.1, beware printout can cause glitches 30 | Serial.begin(115200); 31 | startMozzi(); 32 | } 33 | 34 | 35 | void updateControl(){ 36 | // read the value from the sensor in 10 bit resolution: 37 | int sensorValue = mozziAnalogRead<10>(sensorPin); 38 | Serial.print(sensorValue); 39 | Serial.print(" Filtered = "); 40 | Serial.println(dcFiltered.next(sensorValue)); 41 | } 42 | 43 | 44 | AudioOutput updateAudio(){ 45 | return 0; 46 | } 47 | 48 | 49 | void loop(){ 50 | audioHook(); 51 | } 52 | -------------------------------------------------------------------------------- /examples/06.Synthesis/PWM_Phasing/PWM_Phasing.ino: -------------------------------------------------------------------------------- 1 | /* Example of pulse width modulation, 2 | using Mozzi sonification library. 3 | 4 | Based Miller Puckette's j03.pulse.width.mod example 5 | in the Pure Data documentation, subtracting 2 sawtooth 6 | waves with slightly different tunings to produce a 7 | varying phase difference. 8 | 9 | Demonstrates Phasor(). 10 | 11 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 12 | DAC/A14 on Teensy 3.1, or 13 | check the README or http://sensorium.github.io/Mozzi/ 14 | 15 | Mozzi documentation/API 16 | https://sensorium.github.io/Mozzi/doc/html/index.html 17 | 18 | Mozzi help/discussion/announcements: 19 | https://groups.google.com/forum/#!forum/mozzi-users 20 | 21 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 22 | 23 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 24 | */ 25 | 26 | #include 27 | #include 28 | 29 | Phasor aPhasor1; 30 | Phasor aPhasor2; 31 | 32 | float freq = 55.f; 33 | 34 | void setup(){ 35 | aPhasor1.setFreq(freq); 36 | aPhasor2.setFreq(freq+0.2f); 37 | startMozzi(); // :) 38 | } 39 | 40 | 41 | void updateControl(){ 42 | } 43 | 44 | 45 | AudioOutput updateAudio(){ 46 | char asig1 = (char)(aPhasor1.next()>>24); 47 | char asig2 = (char)(aPhasor2.next()>>24); 48 | return MonoOutput::fromNBit(9, ((int)asig1-asig2)); 49 | } 50 | 51 | 52 | void loop(){ 53 | audioHook(); // required here 54 | } 55 | -------------------------------------------------------------------------------- /examples/07.Envelopes/Phasemod_Envelope/Phasemod_Envelope.ino: -------------------------------------------------------------------------------- 1 | /* Example of a modulating timbre with a rhythmic 2 | volume envelope, using Mozzi sonification library. 3 | 4 | 5 | Demonstrates phase modulation and modifying 6 | the volume of a sound with an envelope setd in a table. 7 | 8 | Mozzi documentation/API 9 | https://sensorium.github.io/Mozzi/doc/html/index.html 10 | 11 | Mozzi help/discussion/announcements: 12 | https://groups.google.com/forum/#!forum/mozzi-users 13 | 14 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 15 | 16 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 17 | */ 18 | 19 | #define MOZZI_CONTROL_RATE 64 // quite fast, keeps modulation smooth 20 | #include 21 | #include 22 | #include 23 | #include 24 | 25 | // use: Oscil oscilName (wavetable), look in .h file of table #included above 26 | Oscil aCarrier(COS8192_DATA); 27 | Oscil aModulator(COS8192_DATA); 28 | Oscil aModWidth(COS8192_DATA); 29 | Oscil kModFreq1(COS8192_DATA); 30 | Oscil kModFreq2(COS8192_DATA); 31 | Oscil aEnvelop(ENVELOP2048_DATA); 32 | 33 | 34 | void setup() { 35 | startMozzi(); 36 | aCarrier.setFreq(220); 37 | kModFreq1.setFreq(1.78f); 38 | kModFreq2.setFreq(0.1757f); 39 | aModWidth.setFreq(0.1434f); 40 | aEnvelop.setFreq(9.0f); 41 | } 42 | 43 | 44 | void updateControl() { 45 | aModulator.setFreq(277.0f + 0.4313f*kModFreq1.next() + kModFreq2.next()); 46 | } 47 | 48 | 49 | AudioOutput updateAudio(){ 50 | int asig = aCarrier.phMod((int)aModulator.next()*(260u+aModWidth.next())); 51 | return MonoOutput::from16Bit(asig*(byte)aEnvelop.next()); 52 | } 53 | 54 | 55 | void loop() { 56 | audioHook(); 57 | } 58 | -------------------------------------------------------------------------------- /examples/08.Samples/Sample/Sample.ino: -------------------------------------------------------------------------------- 1 | /* Example of playing a sampled sound, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates one-shot samples scheduled 5 | with EventDelay. 6 | 7 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 8 | DAC/A14 on Teensy 3.1, or 9 | check the README or http://sensorium.github.io/Mozzi/ 10 | 11 | Mozzi documentation/API 12 | https://sensorium.github.io/Mozzi/doc/html/index.html 13 | 14 | Mozzi help/discussion/announcements: 15 | https://groups.google.com/forum/#!forum/mozzi-users 16 | 17 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 18 | 19 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 20 | */ 21 | 22 | #include 23 | #include // Sample template 24 | #include 25 | #include 26 | 27 | // use: Sample SampleName (wavetable) 28 | Sample aSample(BURROUGHS1_18649_DATA); 29 | 30 | // for scheduling sample start 31 | EventDelay kTriggerDelay; 32 | 33 | void setup(){ 34 | startMozzi(); 35 | aSample.setFreq((float) BURROUGHS1_18649_SAMPLERATE / (float) BURROUGHS1_18649_NUM_CELLS); // play at the speed it was recorded 36 | kTriggerDelay.set(1500); // 1500 msec countdown, within resolution of MOZZI_CONTROL_RATE 37 | } 38 | 39 | 40 | void updateControl(){ 41 | if(kTriggerDelay.ready()){ 42 | aSample.start(); 43 | kTriggerDelay.start(); 44 | } 45 | } 46 | 47 | 48 | AudioOutput updateAudio(){ 49 | return MonoOutput::from8Bit((int) aSample.next()); 50 | } 51 | 52 | 53 | void loop(){ 54 | audioHook(); 55 | } 56 | -------------------------------------------------------------------------------- /examples/08.Samples/Wavetable_Swap/Wavetable_Swap.ino: -------------------------------------------------------------------------------- 1 | /* Example swapping between sounds played by a single Oscil 2 | with Mozzi sonification library. 3 | 4 | Demonstrates declaring an Oscil without a table, 5 | and Oscil::setTable() method. 6 | 7 | Mozzi documentation/API 8 | https://sensorium.github.io/Mozzi/doc/html/index.html 9 | 10 | Mozzi help/discussion/announcements: 11 | https://groups.google.com/forum/#!forum/mozzi-users 12 | 13 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 14 | 15 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 16 | */ 17 | 18 | #include 19 | #include 20 | #include 21 | 22 | // tables need to be the same size 23 | #include 24 | #include 25 | 26 | // declare with or without a wavetable, and use setTable() later 27 | Oscil <512, MOZZI_AUDIO_RATE> aOscil; 28 | 29 | // for scheduling table swaps 30 | EventDelay kSwapTablesDelay; 31 | 32 | boolean using_sin = true; 33 | 34 | 35 | void setup(){ 36 | startMozzi(); 37 | kSwapTablesDelay.set(1000); // 1 second countdown, within resolution of MOZZI_CONTROL_RATE 38 | aOscil.setFreq(440.f); 39 | } 40 | 41 | 42 | void updateControl(){ 43 | if(kSwapTablesDelay.ready()){ 44 | if (using_sin){ 45 | aOscil.setTable(SAW_ANALOGUE512_DATA); 46 | using_sin = false; 47 | }else{ 48 | aOscil.setTable(SIN512_DATA); 49 | using_sin = true; 50 | } 51 | kSwapTablesDelay.start(); 52 | } 53 | } 54 | 55 | 56 | AudioOutput updateAudio(){ 57 | return MonoOutput::from8Bit(aOscil.next()); 58 | } 59 | 60 | 61 | void loop(){ 62 | audioHook(); // required here 63 | } 64 | -------------------------------------------------------------------------------- /examples/09.Delays/AudioDelay/AudioDelay.ino: -------------------------------------------------------------------------------- 1 | /* Example of modulating a signal by using a variable delay, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates AudioDelay. 5 | 6 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 7 | DAC/A14 on Teensy 3.1, or 8 | check the README or http://sensorium.github.io/Mozzi/ 9 | 10 | Mozzi documentation/API 11 | https://sensorium.github.io/Mozzi/doc/html/index.html 12 | 13 | Mozzi help/discussion/announcements: 14 | https://groups.google.com/forum/#!forum/mozzi-users 15 | 16 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 17 | 18 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 19 | */ 20 | 21 | #define MOZZI_CONTROL_RATE 256 // Hz, powers of 2 are most reliable 22 | #include 23 | #include 24 | #include // wavetable 25 | #include // wavetable 26 | #include 27 | #include // for mtof 28 | 29 | Oscil aTriangle(TRIANGLE_ANALOGUE512_DATA); 30 | Oscil kFreq(COS2048_DATA); 31 | 32 | AudioDelay <256> aDel; 33 | int del_samps; 34 | 35 | void setup(){ 36 | aTriangle.setFreq(mtof(60.f)); 37 | kFreq.setFreq(.63f); 38 | startMozzi(); 39 | } 40 | 41 | void loop(){ 42 | audioHook(); 43 | } 44 | 45 | void updateControl(){ 46 | del_samps = 128+kFreq.next(); 47 | } 48 | 49 | AudioOutput updateAudio(){ 50 | int8_t asig = aDel.next(aTriangle.next(), del_samps); 51 | return MonoOutput::from8Bit(asig); 52 | } 53 | -------------------------------------------------------------------------------- /examples/12.Misc/IntMap_test/IntMap_test.ino: -------------------------------------------------------------------------------- 1 | /* Maps a range of input numbers to an output range, comparing 2 | the results of Mozzi's IntMap object with Arduino map(). 3 | 4 | Demonstrates IntMap, a fast integer replacement for map(). 5 | 6 | Circuit: not required 7 | 8 | Mozzi documentation/API 9 | https://sensorium.github.io/Mozzi/doc/html/index.html 10 | 11 | Mozzi help/discussion/announcements: 12 | https://groups.google.com/forum/#!forum/mozzi-users 13 | 14 | Copyright 2014-2024 Tim Barrass and the Mozzi Team 15 | 16 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 17 | */ 18 | 19 | #include 20 | 21 | const IntMap testIntMap(0,100,10,1000); 22 | 23 | void setup(){ 24 | //Serial.begin(9600); // for Teensy 3.1, beware printout can cause glitches 25 | Serial.begin(115200); 26 | int n; 27 | 28 | int i = -2000; 29 | while(i<5000){ 30 | n = testIntMap(i); 31 | Serial.print("testIntMap: \t"); 32 | Serial.print(n, DEC); 33 | 34 | n = map(i,0,100,10,1000); 35 | Serial.print("\t map: \t"); 36 | Serial.println(n,DEC); 37 | i += 7; 38 | } 39 | } 40 | 41 | void loop(){ 42 | } 43 | -------------------------------------------------------------------------------- /extras/Mozzi-resources: -------------------------------------------------------------------------------- 1 | Mozzi Resources: these lists will grow 2 | 3 | 4 | Synthesis - ways to use or extend Mozzi 5 | - Practical synthesis tutorials- http://www.obiwannabe.co.uk/html/music/6SS/six-simple-synthesisers.html 6 | - Lots of dsp code- http://www.musicdsp.org/showmany.php 7 | - fixed-point dsp for avr with a focus on speed- https://instruct1.cit.cornell.edu/courses/ee476/Math/avrDSP.htm 8 | 9 | 10 | General information/background 11 | - Laboratory for Experimental Computer Science at the Academy of Media Arts Cologne - http://interface.khm.de/index.php/lab/experiments/ 12 | Good arduino audio dsp explanations, and hardware output filter schematics (though they need to be adjusted for Mozzi sample rate) 13 | - CSound 14 | 15 | Hardware 16 | - RC Low-pass Filter Design Tool for PWM - http://sim.okawa-denshi.jp/en/PWMtool.php 17 | - Notch Filter Design Tool at same site. 18 | 19 | 20 | Programming and Optimisation 21 | AVR Freaks AVR Tutorials - [DIS] [ASM] Dirty Math Tricks: Adventures in Division by Ten 22 | http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=37150 23 | 24 | A few remarks on the avr-gcc inline assembler 25 | http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=105855 26 | -------------------------------------------------------------------------------- /extras/VERSION.txt: -------------------------------------------------------------------------------- 1 | version 1.1.0 2 | -------------------------------------------------------------------------------- /extras/devscripts/README.md: -------------------------------------------------------------------------------- 1 | This folder holds scripts to help test changes to Mozzi and to build a deployable release and web page with freshly generated documentation. 2 | Some may be a useful starting point for developers to automate parts of their own process. 3 | The most useful script might be mozzi_compile_examples.sh which will compile and record all the Mozzi examples, so you can come back and listen to them to quickly find problems. 4 | The Makefile is from https://github.com/sudar/Arduino-Makefile, but there are now lots to choose from for different platforms if you search Github. 5 | -------------------------------------------------------------------------------- /extras/devscripts/mozzi_compile_examples.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # run in top folder full of subfolders with mozzi projects 4 | # each with makefiles 5 | 6 | for file in * 7 | 8 | do 9 | if [ -d "$file" ]; then 10 | cd "$file"; 11 | #echo "$file"; 12 | for example in * 13 | do 14 | if [ -d "$example" ]; then 15 | cd "$example"; 16 | echo "$example"; 17 | ls 18 | rm -r Makefile 19 | cp ../../Makefile ./ 20 | make clean 21 | rm -r build* 22 | rm *ogg 23 | rm *mp3 24 | make 25 | make upload 26 | # rec -c 1 -r 384000 "$example".mp3 trim 00:10 00:10 27 | rec -c 1 "$example".wav trim 00:5 00:10 28 | sox -G -c 1 "$example".wav -r 22050 -c 1 "$example".mp3 29 | sox -G -c 1 "$example".wav -r 22050 -c 1 "$example".ogg 30 | rm -r build* 31 | cd ..; 32 | #continue 33 | fi 34 | done 35 | cd ..; 36 | #continue 37 | fi 38 | done 39 | 40 | 41 | exit 0 42 | -------------------------------------------------------------------------------- /extras/devscripts/mozzi_compile_examples_hifi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # run in top folder full of subfolders with mozzi projects 4 | # each with makefiles 5 | 6 | for file in * 7 | 8 | do 9 | if [ -d "$file" ]; then 10 | cd "$file"; 11 | #echo "$file"; 12 | for example in *HIFI 13 | do 14 | if [ -d "$example" ]; then 15 | cd "$example"; 16 | echo "$example"; 17 | ls 18 | make clean 19 | rm -r Makefile 20 | cp ../../Makefile ./ 21 | rm -r build* 22 | rm *ogg 23 | rm *mp3 24 | make 25 | make upload 26 | rec -c 1 -r 22050 "$example".mp3 trim 00:10 00:10 27 | sox "$example".mp3 -r 16384 "$example".ogg 28 | rm -r build* 29 | cd ..; 30 | #continue 31 | fi 32 | done 33 | cd ..; 34 | #continue 35 | fi 36 | done 37 | 38 | 39 | exit 0 -------------------------------------------------------------------------------- /extras/devscripts/mozzi_copy_extra_sounds.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # this is meant to replace sounds which don't get recorded properly from normal compile and recording check 4 | 5 | cd ~/Documents/Arduino/mozzi_compile/examples_sounds_replace/ 6 | for group in * 7 | 8 | do 9 | if [ -d "$group" ]; then 10 | cd "$group"; 11 | #echo "$group"; 12 | for example in * 13 | do 14 | if [ -d "$example" ]; then 15 | cd "$example"; 16 | echo "$example"; 17 | 18 | cp -av *ogg ~/Documents/Arduino/mozzi_compile/examples/$group/$example/ 19 | cp -av *mp3 ~/Documents/Arduino/mozzi_compile/examples/$group/$example/ 20 | 21 | cd ..; 22 | #continue 23 | fi 24 | done 25 | cd ..; 26 | #continue 27 | fi 28 | done 29 | 30 | 31 | exit 0 -------------------------------------------------------------------------------- /extras/devscripts/mozzi_generate_examples_page_buttons.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # run from examples top dir, lists all sketches with full paths 4 | 5 | for group in * 6 | 7 | do 8 | if [ -d "$group" ]; then 9 | echo "

$group

" 10 | cd "$group"; 11 | # echo "***" 12 | for example in * 13 | do 14 | if [ -d "$example" ]; then 15 | echo "" 16 | echo "$example" # {% render_partial _partials/link-to-top.markdown %}" 17 | cd $example 18 | sound="$(ls *.ogg 2>/dev/null)" 19 | cd ../ 20 | if [ -n "$sound" ]; then 21 | echo "" 22 | echo "" 26 | echo "" 27 | 28 | else 29 | echo "...(no recording of this one)" 30 | echo "" 31 | 32 | fi 33 | 34 | echo "" 35 | echo "" 36 | echo "" 42 | echo "***" 43 | 44 | #continue 45 | fi 46 | done 47 | cd ..; 48 | #continue 49 | fi 50 | done 51 | 52 | 53 | exit 0 54 | -------------------------------------------------------------------------------- /extras/devscripts/mozzi_generate_page.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # args: version-name ($NOW) 4 | if [ -z "$1" ] 5 | then 6 | echo "use: mozzi_generate_page.sh " 7 | exit 8 | fi 9 | 10 | NOW=$1 11 | 12 | #move webpage examples to trash 13 | mv -v ~/Mozzi-page/Mozzi/examples/examples ~/.Trash/mozzi-octopress-examples$(date +"%Y-%m-%d-%H:%M:%S") 14 | 15 | #copy compile/examples to webpage examples, for sounds 16 | cp -av ~/Documents/Arduino/mozzi_compile/examples ~/Mozzi-page/Mozzi/examples/examples 17 | 18 | # change to Mozzi-page/Mozzi/examples 19 | cd ~/Mozzi-page/Mozzi/examples/examples/ 20 | 21 | #run script to build examples web page 22 | ~/bin/mozzi_generate_examples_page_buttons.sh > ~/Mozzi-page/Mozzi/examples/example-list.markdown 23 | 24 | #change version number everywhere 25 | cd ~/Mozzi/ 26 | update_version.sh $NOW 27 | 28 | #generate new mozzi docs 29 | cd ~/Mozzi/extras/doxygen-style/ 30 | doxygen Doxyfile 31 | # add .nojekyll file to make sure _underscore files get uploaded (now in source folder) 32 | # touch ~/Mozzi/extras/doc/html/.nojekyll 33 | 34 | #remove web page docs 35 | mv -v ~/Mozzi-page/Mozzi/doc ~/.Trash/doc$(date +"%Y-%m-%d-%H:%M:%S") 36 | 37 | #copy mozzi docs to web page source 38 | cp -av ~/Mozzi/extras/doc ~/Mozzi-page/Mozzi/ 39 | 40 | #check the page in the browser 41 | cd ~/Mozzi-page/ 42 | rake generate 43 | #rake watch 44 | 45 | exit 0 46 | -------------------------------------------------------------------------------- /extras/devscripts/mozzi_release_step1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | #to release: 4 | #update all version numbers 5 | 6 | #move mozzi/compile/examples to examples_old or trash 7 | mv -v ~/Documents/Arduino/mozzi_compile/examples ~/.Trash/examples$(date +"%Y-%m-%d-%H:%M:%S") 8 | 9 | #delete all sound files from Mozzi/examples 10 | find ~/Mozzi/examples/ -name "*.ogg" -print -delete 11 | find ~/Mozzi/examples/ -name "*.mp3" -print -delete 12 | 13 | #copy mozzi/examples from mozzi to mozzi_compile 14 | cp -a ~/Mozzi/examples ~/Documents/Arduino/mozzi_compile/ 15 | 16 | #cd mozzi_compile/examples 17 | cd ~/Documents/Arduino/mozzi_compile/examples/ 18 | 19 | #compile and record STANDARD examples 20 | ~/bin/mozzi_compile_examples.sh 21 | 22 | #compile and record HIFI examples 23 | ~/bin/mozzi_compile_examples_hifi.sh 24 | 25 | 26 | #check recordings and fix any errors 27 | 28 | exit 0 29 | -------------------------------------------------------------------------------- /extras/devscripts/update_version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | #argument 1 = version num or name 4 | #NOW=$(date +"%Y-%m-%d-%k:%M") 5 | NOW=$1 6 | 7 | cd ~/Mozzi/extras/ 8 | 9 | sed -i.bak 's/version [0-9]*-[0-9]*-[0-9]*-[0-9]*:[0-9]*/version '$NOW'/g' VERSION.txt 10 | 11 | sed -i.bak 's/version [0-9]*-[0-9]*-[0-9]*-[0-9]*:[0-9]*/version '$NOW'/g' NEWS.txt 12 | 13 | sed -i.bak 's/version [0-9]*-[0-9]*-[0-9]*-[0-9]*:[0-9]*/version '$NOW'/g' doxygen-style/Doxyfile 14 | 15 | cd ~/Mozzi 16 | 17 | sed -i.bak 's/version [0-9]*-[0-9]*-[0-9]*-[0-9]*:[0-9]*/version '$NOW'/g' README.md 18 | 19 | sed -i.bak 's/version=[0-9]*-[0-9]*-[0-9]*-[0-9]*:[0-9]*/version='$NOW'/g' library.properties 20 | 21 | #cd ~/Mozzi-page/Mozzi/_includes/custom/ 22 | 23 | #sed -i.bak 's/version [0-9]*-[0-9]*-[0-9]*-[0-9]*:[0-9]*/version '$NOW'/g' header.html 24 | 25 | 26 | exit 0 27 | -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/00changelog.i: -------------------------------------------------------------------------------- 1 |  dummy changelog to prevent using the old repo layout -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/branch: -------------------------------------------------------------------------------- 1 | default 2 | -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/branchheads.cache: -------------------------------------------------------------------------------- 1 | 5c39ebebcb77a4d1ff91fc08019be531fe59aba1 7 2 | ccc6cb06b0d88cea6273121ba611d8c8fcdef3cd default 3 | 5c39ebebcb77a4d1ff91fc08019be531fe59aba1 default 4 | -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/dirstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/.hg/dirstate -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/hgrc: -------------------------------------------------------------------------------- 1 | [paths] 2 | default = https://bitbucket.org/rc1/doxygen-style 3 | -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/requires: -------------------------------------------------------------------------------- 1 | revlogv1 2 | store 3 | fncache 4 | -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/store/00changelog.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/.hg/store/00changelog.i -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/store/00manifest.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/.hg/store/00manifest.i -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/store/data/_r_e_a_d_m_e.mk.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/.hg/store/data/_r_e_a_d_m_e.mk.i -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/store/data/background__navigation.png.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/.hg/store/data/background__navigation.png.i -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/store/data/doxygen.css.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/.hg/store/data/doxygen.css.i -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/store/data/doxygen.png.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/.hg/store/data/doxygen.png.i -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/store/data/img__down_arrow.png.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/.hg/store/data/img__down_arrow.png.i -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/store/data/readme.mk.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/.hg/store/data/readme.mk.i -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/store/data/tabs.css.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/.hg/store/data/tabs.css.i -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/store/fncache: -------------------------------------------------------------------------------- 1 | data/README.mk.i 2 | data/background_navigation.png.i 3 | data/doxygen.css.i 4 | data/doxygen.png.i 5 | data/img_downArrow.png.i 6 | data/readme.mk.i 7 | data/tabs.css.i 8 | -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/store/undo: -------------------------------------------------------------------------------- 1 | 00changelog.i0 2 | 00manifest.i0 3 | data/README.mk.i0 4 | data/background_navigation.png.i0 5 | data/doxygen.css.i0 6 | data/doxygen.png.i0 7 | data/img_downArrow.png.i0 8 | data/readme.mk.i0 9 | data/tabs.css.i0 10 | -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/undo.branch: -------------------------------------------------------------------------------- 1 | default -------------------------------------------------------------------------------- /extras/doxygen-style/.hg/undo.dirstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/.hg/undo.dirstate -------------------------------------------------------------------------------- /extras/doxygen-style/background_navigation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/background_navigation.png -------------------------------------------------------------------------------- /extras/doxygen-style/custom_footer.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /extras/doxygen-style/custom_stylesheet.css: -------------------------------------------------------------------------------- 1 | /* Mozzi extra CSS for doxygen 1.8.3.1 */ 2 | 3 | #projectlogo 4 | { 5 | text-align: center; 6 | vertical-align: bottom; 7 | border-collapse: separate; 8 | } 9 | 10 | #projectlogo img 11 | { 12 | max-width: 50%; 13 | margin: 10%; 14 | border: 0px none; 15 | } 16 | 17 | #projectname 18 | { 19 | color: white; 20 | font: 300% Tahoma, Arial,sans-serif; 21 | margin: 0px; 22 | padding: 2px 0px; 23 | } 24 | 25 | #projectbrief 26 | { 27 | color: white; 28 | font: 120% Tahoma, Arial,sans-serif; 29 | margin: 0px; 30 | padding: 0px; 31 | } 32 | 33 | #projectnumber 34 | { 35 | color: white; 36 | font: 50% Tahoma, Arial,sans-serif; 37 | margin: 0px; 38 | padding: 0px; 39 | } 40 | 41 | #titlearea 42 | { 43 | background-color: #94C254; 44 | padding: 5px; 45 | margin: 0px; 46 | width: 100%; 47 | border-bottom: 1px solid #5373B4; 48 | } 49 | -------------------------------------------------------------------------------- /extras/doxygen-style/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/doxygen.png -------------------------------------------------------------------------------- /extras/doxygen-style/img_downArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/img_downArrow.png -------------------------------------------------------------------------------- /extras/doxygen-style/latex/group__analog.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{group__analog}{}\section{Analog} 2 | \label{group__analog}\index{Analog@{Analog}} 3 | Efficient analog input functions for sensors and audio. Helps produce glitch-\/free audio by allowing analog input functions which normally block processing to be performed in the background. -------------------------------------------------------------------------------- /extras/doxygen-style/latex/group__core.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{group__core}{}\section{Core} 2 | \label{group__core}\index{Core@{Core}} 3 | Core definitions and functions. The bones of every Mozzi sketch. -------------------------------------------------------------------------------- /extras/doxygen-style/latex/group__fixmath.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{group__fixmath}{}\section{Fixmath} 2 | \label{group__fixmath}\index{Fixmath@{Fixmath}} 3 | Fixed point fractional number types and conversion routines. Fixed point is often best for fast audio code for Arduino, and these can ease some of the pain. \begin{DoxyNote}{Note} 4 | Take care when converting that the important bits of your numbers will fit in the types you choose! 5 | 6 | Timing\+: converting between fixed and float 10-\/12us, converting between fixed types about 1us. 7 | \end{DoxyNote} 8 | -------------------------------------------------------------------------------- /extras/doxygen-style/latex/group__midi.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{group__midi}{}\section{Midi} 2 | \label{group__midi}\index{Midi@{Midi}} 3 | Midi note number to frequency conversions. Useful if you like playing notes in tune. -------------------------------------------------------------------------------- /extras/doxygen-style/latex/group__random.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{group__random}{}\section{Random} 2 | \label{group__random}\index{Random@{Random}} 3 | Fast random number generator functions. These replace Arduino random() which is so slow it will stop your audio. They can even be used to generate audio noise. -------------------------------------------------------------------------------- /extras/doxygen-style/latex/group__soundtables.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{group__soundtables}{}\section{Soundtables} 2 | \label{group__soundtables}\index{Soundtables@{Soundtables}} 3 | Look-\/up-\/tables and python scripts to generate tables or convert sounds. Includes ready-\/to-\/use wave tables and a few example samples which are in the Mozzi/tables and Mozzi/samples folders. You can convert your own sounds from a program like Audacity to tables for Mozzi with a script called char2mozzi.\+py, in Mozzi/python. Read the int8\+\_\+t2mozzi.\+py file for instructions. Also check out the other scripts in the python folder for templates to use if you want to do your own thing. -------------------------------------------------------------------------------- /extras/doxygen-style/latex/group__util.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{group__util}{}\section{Util} 2 | \label{group__util}\index{Util@{Util}} 3 | Utility functions. Includes functions for debugging and profiling high frequency code with an oscilloscope when serial is too slow, some miscellaneous functions used internally by Mozzi, and python scripts for converting or generating sound tables. -------------------------------------------------------------------------------- /extras/doxygen-style/latex/modules.tex: -------------------------------------------------------------------------------- 1 | \section{Modules} 2 | Here is a list of all modules\+:\begin{DoxyCompactList} 3 | \item \contentsline{section}{Core}{\pageref{group__core}}{} 4 | \item \contentsline{section}{Analog}{\pageref{group__analog}}{} 5 | \item \contentsline{section}{Fixmath}{\pageref{group__fixmath}}{} 6 | \item \contentsline{section}{Midi}{\pageref{group__midi}}{} 7 | \item \contentsline{section}{Random}{\pageref{group__random}}{} 8 | \item \contentsline{section}{Util}{\pageref{group__util}}{} 9 | \item \contentsline{section}{Soundtables}{\pageref{group__soundtables}}{} 10 | \end{DoxyCompactList} 11 | -------------------------------------------------------------------------------- /extras/doxygen-style/mozzi-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/doxygen-style/mozzi-circle.png -------------------------------------------------------------------------------- /extras/pd/mozzi-filter.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 500 301 10; 2 | #X obj 79 98 adc~; 3 | #X obj 80 248 dac~; 4 | #X obj 80 224 *~ 5; 5 | #X obj 80 146 lop~ 4000; 6 | #X obj 80 173 lop~ 4000; 7 | #X obj 80 200 lop~ 4000; 8 | #X text 78 75 input from arduino via line in; 9 | #X text 76 271 out to audacity via jack \, soundflower or similar; 10 | #X text 77 17 Filter for Arduino/Mozzi to remove PWM artifacts when 11 | recording in another audio program \, so you can see a clearer version 12 | of what you're trying to synthesise.; 13 | #X obj 80 122 lop~ 4000; 14 | #X connect 0 0 9 0; 15 | #X connect 2 0 1 0; 16 | #X connect 3 0 4 0; 17 | #X connect 4 0 5 0; 18 | #X connect 5 0 2 0; 19 | #X connect 9 0 3 0; 20 | -------------------------------------------------------------------------------- /extras/python/float2mozzi.py: -------------------------------------------------------------------------------- 1 | ## for converting 32 bit float raw files from Audacity, with values -128 to 127 int8 Mozzi table 2 | 3 | import sys, array, os, textwrap, math 4 | 5 | if len(sys.argv) != 5: 6 | print 'Usage: float2mozzi.py ' 7 | sys.exit(1) 8 | 9 | [infile, outfile, tablename, samplerate] = sys.argv[1:] 10 | 11 | def float2mozzi(infile, outfile, tablename,samplerate): 12 | fin = open(os.path.expanduser(infile), "rb") 13 | print "opened " + infile 14 | valuesetad = os.path.getsize(os.path.expanduser(infile))/4 ## adjust for number format 15 | 16 | ##print valuesetad 17 | valuesfromfile = array.array('f')## array of floats 18 | try: 19 | valuesfromfile.fromfile(fin,valuesetad) 20 | finally: 21 | fin.close() 22 | 23 | values=valuesfromfile.tolist() 24 | ## print values[0] 25 | ## print values[len(values)-1] 26 | ## print len(values) 27 | fout = open(os.path.expanduser(outfile), "w") 28 | fout.write('#ifndef ' + tablename + '_H_' + '\n') 29 | fout.write('#define ' + tablename + '_H_' + '\n \n') 30 | fout.write('#include '+'\n') 31 | fout.write('#include "mozzi_pgmspace.h"'+'\n \n') 32 | fout.write('#define ' + tablename + '_NUM_CELLS '+ str(len(values))+'\n') 33 | fout.write('#define ' + tablename + '_SAMPLERATE '+ str(samplerate)+'\n \n') 34 | outstring = 'CONSTTABLE_STORAGE(int8_t) ' + tablename + '_DATA [] = {' 35 | try: 36 | for num in values: 37 | outstring += str(math.trunc((num*256)+0.5)) + ", " 38 | ## outstring += str(num) + ", " 39 | ##values.fromfile(fin, uint8_tsetad) 40 | finally: 41 | outstring += "};" 42 | outstring = textwrap.fill(outstring, 80) 43 | fout.write(outstring) 44 | fout.write('\n \n #endif /* ' + tablename + '_H_ */\n') 45 | fout.close() 46 | print "wrote " + outfile 47 | 48 | float2mozzi(infile, outfile, tablename, samplerate) 49 | -------------------------------------------------------------------------------- /extras/python/float2mozzi_uint8.py: -------------------------------------------------------------------------------- 1 | ## for converting 32 bit float raw files from Audacity, with values > 0, to 0-255 uint8 Mozzi table 2 | 3 | import sys, array, os, textwrap, math 4 | 5 | def float2mozzi_uint8(infile, outfile, tablename,samplerate): 6 | fin = open(os.path.expanduser(infile), "rb") 7 | print "opened " + infile 8 | valuesetad = os.path.getsize(os.path.expanduser(infile))/4 ## adjust for number format 9 | 10 | ##print valuesetad 11 | valuesfromfile = array.array('f')## array of floats 12 | try: 13 | valuesfromfile.fromfile(fin,valuesetad) 14 | finally: 15 | fin.close() 16 | 17 | values=valuesfromfile.tolist() 18 | ## print values[0] 19 | ## print values[len(values)-1] 20 | ## print len(values) 21 | fout = open(os.path.expanduser(outfile), "w") 22 | fout.write('#ifndef ' + tablename + '_H_' + '\n') 23 | fout.write('#define ' + tablename + '_H_' + '\n \n') 24 | fout.write('#include '+'\n') 25 | fout.write('#include "mozzi_pgmspace.h"'+'\n \n') 26 | fout.write('#define ' + tablename + '_NUM_CELLS '+ str(len(values))+'\n') 27 | fout.write('#define ' + tablename + '_SAMPLERATE '+ str(samplerate)+'\n \n') 28 | outstring = 'CONSTTABLE_STORAGE(int8_t) ' + tablename + '_DATA [] = {' 29 | try: 30 | for num in values: 31 | outstring += str(math.trunc((num*256)+0.5)) + ", " 32 | ## outstring += str(num) + ", " 33 | ##values.fromfile(fin, uint8_tsetad) 34 | finally: 35 | outstring += "};" 36 | outstring = textwrap.fill(outstring, 80) 37 | fout.write(outstring) 38 | fout.write('\n \n #endif /* ' + tablename + '_H_ */\n') 39 | fout.close() 40 | print "wrote " + outfile 41 | 42 | float2mozzi_uint8(infile, outfile, tablename, samplerate) 43 | -------------------------------------------------------------------------------- /extras/python/sin1024_int8.py: -------------------------------------------------------------------------------- 1 | ## generates a sin-shaped table with values -128 to 127 2 | ## NOTE: this table has been generated using the "make_standard_tables.py" script, which produces a symetric table. 3 | 4 | import array 5 | import os 6 | import textwrap 7 | import math 8 | 9 | def generate(outfile, tablename, tablelength, samplerate): 10 | fout = open(os.path.expanduser(outfile), "w") 11 | fout.write('#ifndef ' + tablename + '_H_' + '\n') 12 | fout.write('#define ' + tablename + '_H_' + '\n \n') 13 | fout.write('#include '+'\n') 14 | fout.write('#include "mozzi_pgmspace.h"'+'\n \n') 15 | fout.write('#define ' + tablename + '_NUM_CELLS '+ str(tablelength)+'\n') 16 | fout.write('#define ' + tablename + '_SAMPLERATE '+ str(samplerate)+'\n \n') 17 | outstring = 'CONSTTABLE_STORAGE(int8_t) ' + tablename + '_DATA [] = {' 18 | 19 | try: 20 | for num in range(tablelength): 21 | ## range between 0 and 1 first 22 | x = float(num)/tablelength 23 | 24 | t_x = (math.cos(2*math.pi*x-math.pi)+1)/2 25 | 26 | scaled = int(math.floor(t_x*255.999))-128 27 | 28 | outstring += str(scaled) + ', ' 29 | finally: 30 | outstring = textwrap.fill(outstring, 80) 31 | outstring += '\n }; \n \n #endif /* ' + tablename + '_H_ */\n' 32 | fout.write(outstring) 33 | fout.close() 34 | print "wrote " + outfile 35 | 36 | generate("~/Desktop/sin1024_int8.h", "SIN1024", 1024, "1024") 37 | -------------------------------------------------------------------------------- /extras/python/sin8192_uint8.py: -------------------------------------------------------------------------------- 1 | ## generates a sin-shaped table with values 0-255 (to be used as an envelope) 2 | 3 | 4 | import array 5 | import os 6 | import textwrap 7 | import math 8 | 9 | def generate(outfile, tablename, tablelength, samplerate): 10 | fout = open(os.path.expanduser(outfile), "w") 11 | fout.write('#ifndef ' + tablename + '_H_' + '\n') 12 | fout.write('#define ' + tablename + '_H_' + '\n \n') 13 | fout.write('#include '+'\n') 14 | fout.write('#include "mozzi_pgmspace.h"'+'\n \n') 15 | fout.write('#define ' + tablename + '_NUM_CELLS '+ str(tablelength)+'\n') 16 | fout.write('#define ' + tablename + '_SAMPLERATE '+ str(samplerate)+'\n \n') 17 | outstring = 'CONSTTABLE_STORAGE(int8_t) ' + tablename + '_DATA [] = {' 18 | halftable = tablelength/2 19 | try: 20 | for num in range(tablelength): 21 | ## range between 0 and 1 first 22 | ## x = float(num)/halftable 23 | x = float(num)/tablelength 24 | 25 | t_x = (math.cos(2*math.pi*x-math.pi)+1)/2 26 | 27 | scaled = int(math.floor(t_x*255.999)) 28 | 29 | outstring += str(scaled) + ', ' 30 | ## for num in range(halftable): 31 | ## outstring += '0, ' 32 | finally: 33 | outstring = textwrap.fill(outstring, 80) 34 | outstring += '\n }; \n \n #endif /* ' + tablename + '_H_ */\n' 35 | fout.write(outstring) 36 | fout.close() 37 | print "wrote " + outfile 38 | 39 | ## generate("~/Desktop/sin1024_uint8.h", "sin1024_uint", 1024, "1024") 40 | generate("~/Desktop/sin8192_uint8.h", "sin8192_uint", 8192, "8192") 41 | -------------------------------------------------------------------------------- /extras/python/sin_multi_levels_int8.py: -------------------------------------------------------------------------------- 1 | ## generates a set of sin waves at different amplitudes 2 | ## tables go from 1 to numtables+1, as table 0 is all 0's 3 | 4 | import array,os,textwrap,math 5 | 6 | 7 | 8 | def generate(outfile, tablename, tablelength, numtables): 9 | fout = open(os.path.expanduser(outfile), "w") 10 | 11 | 12 | 13 | fout.write('#ifndef ' + tablename + '_H_' + '\n') 14 | fout.write('#define ' + tablename + '_H_' + '\n \n') 15 | fout.write('#include '+'\n') 16 | fout.write('#include "mozzi_pgmspace.h"'+'\n \n') 17 | fout.write('#define ' + tablename + '_NUM_CELLS '+ str(tablelength) +'\n') 18 | fout.write('CONSTTABLE_STORAGE(int8_t) ' + tablename + '_DATA [] = { \n') 19 | 20 | try: 21 | for tablenum in range(numtables): 22 | try: 23 | outstring = '\n' 24 | for num in range(tablelength): 25 | ## range between 0 and 1 first 26 | x = float(num)/tablelength 27 | 28 | t_x = math.sin(2*math.pi*x)*(float(tablenum+1)/numtables) 29 | 30 | scaled = int16_t(math.floor(t_x*127.999)) 31 | 32 | outstring += str(scaled) + ', ' 33 | finally: 34 | outstring = textwrap.fill(outstring, 80) 35 | outstring += '\n' 36 | fout.write(outstring) 37 | finally: 38 | 39 | fout.write('}; \n \n #endif /* ' + tablename + '_H_ */\n') 40 | fout.close() 41 | print "wrote " + outfile 42 | 43 | 44 | generate("~/Desktop/sin_64level_int8.h", "SIN_64LEVEL", 256, 64) 45 | -------------------------------------------------------------------------------- /extras/python/table_generator_template.py: -------------------------------------------------------------------------------- 1 | import array 2 | import os 3 | import textwrap 4 | import random 5 | 6 | def generate(outfile, tablename, tablelength, samplerate): 7 | fout = open(os.path.expanduser(outfile), "w") 8 | fout.write('#ifndef ' + tablename + '_H_' + '\n') 9 | fout.write('#define ' + tablename + '_H_' + '\n \n') 10 | fout.write('#include '+'\n') 11 | fout.write('#include "mozzi_pgmspace.h"'+'\n \n') 12 | fout.write('#define ' + tablename + '_NUM_CELLS '+ str(tablelength)+'\n') 13 | fout.write('#define ' + tablename + '_SAMPLERATE '+ str(samplerate)+'\n \n') 14 | outstring = 'CONSTTABLE_STORAGE(int8_t) ' + tablename + '_DATA [] = {' 15 | try: 16 | for num in range(tablelength): 17 | outstring += str(random.randint(-128, 127)) + ", " ## put your own generating code here 18 | finally: 19 | outstring += "};" 20 | outstring = textwrap.fill(outstring, 80) 21 | fout.write(outstring) 22 | fout.write('\n \n #endif /* ' + tablename + '_H_ */\n') 23 | fout.close() 24 | print("wrote " + outfile) 25 | 26 | generate("~/Desktop/whitenoise_4096_3_int8.h", "WHITENOISE_4096_3", 4096, 16384) # adjust to suit 27 | -------------------------------------------------------------------------------- /extras/python/triangle.py: -------------------------------------------------------------------------------- 1 | import array 2 | import os 3 | import textwrap 4 | import math 5 | 6 | def generate(outfile, tablename, tablelength, samplerate): 7 | fout = open(os.path.expanduser(outfile), "w") 8 | fout.write('#ifndef ' + tablename + '_H_' + '\n') 9 | fout.write('#define ' + tablename + '_H_' + '\n \n') 10 | fout.write('#include '+'\n') 11 | fout.write('#include "mozzi_pgmspace.h"'+'\n \n') 12 | fout.write('#define ' + tablename + '_NUM_CELLS '+ str(tablelength)+'\n') 13 | fout.write('#define ' + tablename + '_SAMPLERATE '+ str(samplerate)+'\n \n') 14 | outstring = 'CONSTTABLE_STORAGE(int8_t) ' + tablename + '_DATA [] = {' 15 | try: 16 | for num in range(tablelength): 17 | ## range between 0 and 1 first 18 | x = float(num)/tablelength 19 | if x<0.5: 20 | t_x = 2 * x 21 | else: 22 | t_x = 2 - 2 * x 23 | 24 | scaled = int(math.floor(t_x*255.999)) 25 | outstring += str(scaled) + ', ' 26 | finally: 27 | outstring += "};" 28 | outstring = textwrap.fill(outstring, 80) 29 | fout.write(outstring) 30 | fout.write('\n \n #endif /* ' + tablename + '_H_ */\n') 31 | fout.close() 32 | print "wrote " + outfile 33 | 34 | generate("~/Desktop/triangle512_uint8.h", "triange", 512, "512") 35 | -------------------------------------------------------------------------------- /extras/tests/FlashOrRamRead/FlashOrRamRead.ino: -------------------------------------------------------------------------------- 1 | /** Test case for correct operation of the FLASH_OR_RAM_READ template function. 2 | * This should print two identical ascending sequences of numbers to the serial monitor. */ 3 | 4 | #include 5 | 6 | CONSTTABLE_STORAGE(byte) a[] = { 1 }; 7 | CONSTTABLE_STORAGE(int8_t) b[] = { 2 }; 8 | CONSTTABLE_STORAGE(uint8_t) c[] = { 3 }; 9 | CONSTTABLE_STORAGE(int16_t) d[] = { 4 }; 10 | CONSTTABLE_STORAGE(uint16_t) e[] = { 5 }; 11 | CONSTTABLE_STORAGE(int32_t) f[] = { 6 }; 12 | CONSTTABLE_STORAGE(uint32_t) g[] = { 7 }; 13 | CONSTTABLE_STORAGE(float) h[] = { 8.8 }; 14 | CONSTTABLE_STORAGE(double) i[] = { 9.9 }; 15 | 16 | byte ram_a[] = { 1 }; 17 | int8_t ram_b[] = { 2 }; 18 | uint8_t ram_c[] = { 3 }; 19 | int16_t ram_d[] = { 4 }; 20 | uint16_t ram_e[] = { 5 }; 21 | int32_t ram_f[] = { 6 }; 22 | uint32_t ram_g[] = { 7 }; 23 | float ram_h[] = { 8.8 }; 24 | double ram_i[] = { 9.9 }; 25 | 26 | void setup() { 27 | Serial.begin(9600); 28 | } 29 | 30 | void loop() { 31 | Serial.println("Flash reads"); 32 | Serial.println(FLASH_OR_RAM_READ(a)); 33 | Serial.println(FLASH_OR_RAM_READ(b)); 34 | Serial.println(FLASH_OR_RAM_READ(c)); 35 | Serial.println(FLASH_OR_RAM_READ(d)); 36 | Serial.println(FLASH_OR_RAM_READ(e)); 37 | Serial.println(FLASH_OR_RAM_READ(f)); 38 | Serial.println(FLASH_OR_RAM_READ(g)); 39 | Serial.println(FLASH_OR_RAM_READ(h)); 40 | Serial.println(FLASH_OR_RAM_READ(i)); 41 | Serial.println("RAM reads"); 42 | Serial.println(FLASH_OR_RAM_READ(ram_a)); 43 | Serial.println(FLASH_OR_RAM_READ(ram_b)); 44 | Serial.println(FLASH_OR_RAM_READ(ram_c)); 45 | Serial.println(FLASH_OR_RAM_READ(ram_d)); 46 | Serial.println(FLASH_OR_RAM_READ(ram_e)); 47 | Serial.println(FLASH_OR_RAM_READ(ram_f)); 48 | Serial.println(FLASH_OR_RAM_READ(ram_g)); 49 | Serial.println(FLASH_OR_RAM_READ(ram_h)); 50 | Serial.println(FLASH_OR_RAM_READ(ram_i)); 51 | delay (2000); 52 | } 53 | -------------------------------------------------------------------------------- /extras/website/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | # Hello! This is where you manage which Jekyll version is used to run. 4 | # When you want to use a different version, change it below, save the 5 | # file and run `bundle install`. Run Jekyll with `bundle exec`, like so: 6 | # 7 | # bundle exec jekyll serve 8 | # 9 | # This will help ensure the proper Jekyll version is running. 10 | # Happy Jekylling! 11 | #gem "jekyll", "~> 3.7.3" 12 | # tb:replace above line with this for github pages to work 13 | source "https://rubygems.org" 14 | gem "github-pages", group: :jekyll_plugins 15 | 16 | # This is the default theme for new Jekyll sites. You may change this to anything you like. 17 | #gem "minima", "~> 2.0" 18 | gem "minimal-mistakes-jekyll" 19 | #gem "minimal" 20 | 21 | # If you want to use GitHub Pages, remove the "gem "jekyll"" above and 22 | # uncomment the line below. To upgrade, run `bundle update github-pages`. 23 | # gem "github-pages", group: :jekyll_plugins 24 | 25 | # If you have any plugins, put them here! 26 | group :jekyll_plugins do 27 | gem "jekyll-feed", "~> 0.6" 28 | gem "jekyll-sitemap" # for octopress 29 | gem 'jekyll-include-cache' # TB20181212 30 | #gem "github-pages" 31 | end 32 | 33 | group :development do 34 | #gem 'rake' 35 | #gem 'jekyll' 36 | #gem 'rdiscount' 37 | gem 'pygments.rb' 38 | #gem 'RedCloth' 39 | #gem 'haml' 40 | #gem 'compass' 41 | #gem 'sass' 42 | #gem 'sass-globbing' 43 | #gem 'rubypants' 44 | #gem 'rb-fsevent' 45 | #gem 'stringex' 46 | #gem 'liquid' 47 | #gem 'directory_watcher' 48 | gem 'octopress-hooks' 49 | gem 'octopress-date-format' 50 | end 51 | 52 | # Windows does not include zoneinfo files, so bundle the tzinfo-data gem 53 | gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] 54 | 55 | # Performance-booster for watching directories on Windows 56 | gem "wdm", "~> 0.1.0" if Gem.win_platform? 57 | 58 | gem "webrick", "~> 1.7" 59 | -------------------------------------------------------------------------------- /extras/website/README.markdown: -------------------------------------------------------------------------------- 1 | This the source for the Mozzi site. 2 | 3 | It's mostly written in Markdown. Most pages can be modified simply and improvements are welcome. 4 | 5 | The examples page is produced on my local machine by running some scripts which compile the sketches from Mozzi into the page. 6 | -------------------------------------------------------------------------------- /extras/website/TODO.md: -------------------------------------------------------------------------------- 1 | # Line should accept a U/SFix - OK 2 | # Portamento 3 | # Smooth - OK 4 | 5 | # Exmaples: 6 | // 01.Basics/Vibrato/Vibrato.ino: 7 | 03.Sensors/Piezo_SampleScrubber/Piezo_SampleScrubber.ino:Line scrub; // Q16n16 fixed point for high precision 8 | 05.Control_Filters/MIDI_portamento/MIDI_portamento.ino: 9 | 05.Control_Filters/Line_vs_Smooth/Line_vs_Smooth.ino - OK 10 | 06.Synthesis/FMsynth_32k_HIFI/FMsynth_32k_HIFI.ino 11 | 06.Synthesis/Difference_Tone/Difference_Tone.ino - OK 12 | 06.Synthesis/Waveshaper/Waveshaper.ino - OK 13 | 06.Synthesis/AMsynth_HIFI/AMsynth_HIFI.ino 14 | 06.Synthesis/FMsynth/FMsynth.ino: - OK 15 | 06.Synthesis/Detuned_Beats_Wash/Detuned_Beats_Wash.ino: - OK 16 | 06.Synthesis/AMsynth/AMsynth.ino - OK 17 | 06.Synthesis/Waveshaper_Difference_Tone/Waveshaper_Difference_Tone.ino - OK 18 | 08.Samples/Sample_Scrub/Sample_Scrub.ino 19 | 09.Delays/AudioDelayFeedback_HIFI/AudioDelayFeedback_HIFI.ino 20 | 09.Delays/AudioDelayFeedback/AudioDelayFeedback.ino: 21 | 11.Communication/Teensy_USB_MIDI_Input/Teensy_USB_MIDI_Input.ino: 22 | 12.Misc/Risset_Beat_HIFI/Risset_Beat_HIFI.ino:Line kGliss; 23 | 12.Misc/Shepard_Tone_HIFI/Shepard_Tone_HIFI.ino: 24 | 13.External_Audio_Output/FMsynth_MCP4921_mono_12bits/FMsynth_MCP4921_mono_12bits.ino: 25 | -------------------------------------------------------------------------------- /extras/website/_plugins/backtick_code_block.rb: -------------------------------------------------------------------------------- 1 | require './_plugins/pygments_code' 2 | 3 | module BacktickCodeBlock 4 | AllOptions = /([^\s]+)\s+(.+?)\s+(https?:\/\/\S+|\/\S+)\s*(.+)?/i 5 | LangCaption = /([^\s]+)\s*(.+)?/i 6 | def self.render_code_block(input) 7 | @options = nil 8 | @caption = nil 9 | @lang = nil 10 | @url = nil 11 | @title = nil 12 | input.gsub(/^`{3} *([^\n]+)?\n(.+?)\n`{3}/m) do 13 | @options = $1 || '' 14 | str = $2 15 | 16 | if @options =~ AllOptions 17 | @lang = $1 18 | @caption = "
#{$2}#{$4 || 'link'}
" 19 | elsif @options =~ LangCaption 20 | @lang = $1 21 | @caption = "
#{$2}
" 22 | end 23 | 24 | if str.match(/\A( {4}|\t)/) 25 | str = str.gsub(/^( {4}|\t)/, '') 26 | end 27 | if @lang.nil? || @lang == 'plain' 28 | code = HighlightCode::tableize_code(str.gsub('<','<').gsub('>','>')) 29 | "
#{@caption}#{code}
" 30 | else 31 | if @lang.include? "-raw" 32 | raw = "``` #{@options.sub('-raw', '')}\n" 33 | raw += str 34 | raw += "\n```\n" 35 | else 36 | code = HighlightCode::highlight(str, @lang) 37 | "
#{@caption}#{code}
" 38 | end 39 | end 40 | end 41 | end 42 | end 43 | -------------------------------------------------------------------------------- /extras/website/_plugins/pygments_code.rb: -------------------------------------------------------------------------------- 1 | require 'pygments' 2 | require 'fileutils' 3 | require 'digest/md5' 4 | 5 | PYGMENTS_CACHE_DIR = File.expand_path('../../.pygments-cache', __FILE__) 6 | FileUtils.mkdir_p(PYGMENTS_CACHE_DIR) 7 | 8 | module HighlightCode 9 | def self.highlight(str, lang) 10 | lang = 'ruby' if lang == 'ru' 11 | lang = 'objc' if lang == 'm' 12 | lang = 'perl' if lang == 'pl' 13 | lang = 'yaml' if lang == 'yml' 14 | str = pygments(str, lang).match(/
(.+)<\/pre>/m)[1].to_s.gsub(/ *$/, '') #strip out divs 
15 | tableize_code(str, lang) 16 | end 17 | 18 | def self.pygments(code, lang) 19 | if defined?(PYGMENTS_CACHE_DIR) 20 | path = File.join(PYGMENTS_CACHE_DIR, "#{lang}-#{Digest::MD5.hexdigest(code)}.html") 21 | if File.exist?(path) 22 | highlighted_code = File.read(path) 23 | else 24 | begin 25 | highlighted_code = Pygments.highlight(code, :lexer => lang, :formatter => 'html', :options => {:encoding => 'utf-8', :startinline => true}) 26 | rescue MentosError 27 | raise "Pygments can't parse unknown language: #{lang}." 28 | end 29 | File.open(path, 'w') {|f| f.print(highlighted_code) } 30 | end 31 | else 32 | highlighted_code = Pygments.highlight(code, :lexer => lang, :formatter => 'html', :options => {:encoding => 'utf-8', :startinline => true}) 33 | end 34 | highlighted_code 35 | end 36 | def self.tableize_code (str, lang = '') 37 | table = '
'
38 |     code = ''
39 |     str.lines.each_with_index do |line,index|
40 |       table += "#{index+1}\n"
41 |       code  += "#{line}"
42 |     end
43 |     table += "
#{code}
" 44 | end 45 | end 46 | -------------------------------------------------------------------------------- /extras/website/_plugins/raw.rb: -------------------------------------------------------------------------------- 1 | # Author: Brandon Mathis 2 | # Description: Provides plugins with a method for wrapping and unwrapping input to prevent Markdown and Textile from parsing it. 3 | # Purpose: This is useful for preventing Markdown and Textile from being too aggressive and incorrectly parsing in-line HTML. 4 | module TemplateWrapper 5 | # Wrap input with a
6 | def self.safe_wrap(input) 7 | "
#{input}
" 8 | end 9 | # This must be applied after the 10 | def self.unwrap(input) 11 | input.gsub /
(.+?)<\/notextile><\/div>/m do 12 | $1 13 | end 14 | end 15 | end 16 | 17 | # Author: phaer, https://github.com/phaer 18 | # Source: https://gist.github.com/1020852 19 | # Description: Raw tag for jekyll. Keeps liquid from parsing text betweeen {% raw %} and {% endraw %} 20 | 21 | module Jekyll 22 | class RawTag < Liquid::Block 23 | def parse(tokens) 24 | @nodelist ||= [] 25 | @nodelist.clear 26 | 27 | while token = tokens.shift 28 | if token =~ FullToken 29 | if block_delimiter == $1 30 | end_tag 31 | return 32 | end 33 | end 34 | @nodelist << token if not token.empty? 35 | end 36 | end 37 | end 38 | end 39 | 40 | Liquid::Template.register_tag('raw', Jekyll::RawTag) 41 | -------------------------------------------------------------------------------- /extras/website/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: single 3 | title: About 4 | permalink: /about/ 5 | --- 6 | 7 | This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/) 8 | 9 | You can find the source code for Minima at GitHub: 10 | [jekyll][jekyll-organization] / 11 | [minima](https://github.com/jekyll/minima) 12 | 13 | You can find the source code for Jekyll at GitHub: 14 | [jekyll][jekyll-organization] / 15 | [jekyll](https://github.com/jekyll/jekyll) 16 | 17 | 18 | [jekyll-organization]: https://github.com/jekyll 19 | -------------------------------------------------------------------------------- /extras/website/assets/images/MosquitoGreen.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/MosquitoGreen.gif -------------------------------------------------------------------------------- /extras/website/assets/images/Mozzi3D.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/Mozzi3D.gif -------------------------------------------------------------------------------- /extras/website/assets/images/MozziByteLabelled.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/MozziByteLabelled.jpg -------------------------------------------------------------------------------- /extras/website/assets/images/NoodleBackseatDriver_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/NoodleBackseatDriver_small.jpg -------------------------------------------------------------------------------- /extras/website/assets/images/Spags-grin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/Spags-grin.jpg -------------------------------------------------------------------------------- /extras/website/assets/images/Spags-smile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/Spags-smile.jpg -------------------------------------------------------------------------------- /extras/website/assets/images/bird_32_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/bird_32_gray.png -------------------------------------------------------------------------------- /extras/website/assets/images/bird_32_gray_fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/bird_32_gray_fail.png -------------------------------------------------------------------------------- /extras/website/assets/images/code_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/code_bg.png -------------------------------------------------------------------------------- /extras/website/assets/images/dotted-border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/dotted-border.png -------------------------------------------------------------------------------- /extras/website/assets/images/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/email.png -------------------------------------------------------------------------------- /extras/website/assets/images/icon_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/icon_download.png -------------------------------------------------------------------------------- /extras/website/assets/images/lee.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/lee.gif -------------------------------------------------------------------------------- /extras/website/assets/images/lee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/lee.png -------------------------------------------------------------------------------- /extras/website/assets/images/line-tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/line-tile.png -------------------------------------------------------------------------------- /extras/website/assets/images/mozzi-circle-green-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/mozzi-circle-green-solid.png -------------------------------------------------------------------------------- /extras/website/assets/images/mozzi-circle-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/mozzi-circle-green.png -------------------------------------------------------------------------------- /extras/website/assets/images/mozzi-circle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/mozzi-circle.gif -------------------------------------------------------------------------------- /extras/website/assets/images/mozzi-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/mozzi-square.png -------------------------------------------------------------------------------- /extras/website/assets/images/mozzi_lee_header_crop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/mozzi_lee_header_crop.png -------------------------------------------------------------------------------- /extras/website/assets/images/mozzi_lee_header_crop2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/mozzi_lee_header_crop2.png -------------------------------------------------------------------------------- /extras/website/assets/images/mozzi_moon_2d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/mozzi_moon_2d.png -------------------------------------------------------------------------------- /extras/website/assets/images/mozzi_poster_tiny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/mozzi_poster_tiny.png -------------------------------------------------------------------------------- /extras/website/assets/images/mozzi_smooth_courier_rotated_smaller_flying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/mozzi_smooth_courier_rotated_smaller_flying.png -------------------------------------------------------------------------------- /extras/website/assets/images/noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/noise.png -------------------------------------------------------------------------------- /extras/website/assets/images/rss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/rss.png -------------------------------------------------------------------------------- /extras/website/assets/images/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/search.png -------------------------------------------------------------------------------- /extras/website/assets/images/sprite_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/assets/images/sprite_download.png -------------------------------------------------------------------------------- /extras/website/assets/jsX/_main.js: -------------------------------------------------------------------------------- 1 | 2 | function toggleDisplay(stuffToToggle,elementThatExpandsStuff,elementThatCollapsesStuff) { 3 | if ( stuffToToggle.style.display == 'none' ) { 4 | stuffToToggle.style.display = ''; 5 | elementThatExpandsStuff.style.display = 'none'; 6 | elementThatCollapsesStuff.style.display = ''; 7 | } 8 | else { 9 | stuffToToggle.style.display = 'none'; 10 | elementThatExpandsStuff.style.display = ''; 11 | elementThatCollapsesStuff.style.display = 'none'; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /extras/website/download/images/Spags-grin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/download/images/Spags-grin.jpg -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Control_Gain/Control_Gain.ino: -------------------------------------------------------------------------------- 1 | /* Example changing the gain of a sinewave, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates the use of a control variable to influence an 5 | audio signal. 6 | 7 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 8 | DAC/A14 on Teensy 3.1, or 9 | check the README or http://sensorium.github.io/Mozzi/ 10 | 11 | Mozzi documentation/API 12 | https://sensorium.github.io/Mozzi/doc/html/index.html 13 | 14 | Mozzi help/discussion/announcements: 15 | https://groups.google.com/forum/#!forum/mozzi-users 16 | 17 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 18 | 19 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 20 | */ 21 | 22 | #include 23 | #include // oscillator template 24 | #include // sine table for oscillator 25 | 26 | // use: Oscil oscilName (wavetable), look in .h file of table #included above 27 | Oscil aSin(SIN2048_DATA); 28 | 29 | // control variable, use the smallest data size you can for anything used in audio 30 | byte gain = 255; 31 | 32 | 33 | void setup(){ 34 | startMozzi(); // start with default control rate of 64 35 | aSin.setFreq(3320); // set the frequency 36 | } 37 | 38 | 39 | void updateControl(){ 40 | // as byte, this will automatically roll around to 255 when it passes 0 41 | gain = gain - 3 ; 42 | } 43 | 44 | 45 | AudioOutput updateAudio(){ 46 | return MonoOutput::from16Bit(aSin.next() * gain); // 8 bits waveform * 8 bits gain makes 16 bits 47 | } 48 | 49 | 50 | void loop(){ 51 | audioHook(); // required here 52 | } 53 | -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Control_Gain/Control_Gain.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/01.Basics/Control_Gain/Control_Gain.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Control_Gain/Control_Gain.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/01.Basics/Control_Gain/Control_Gain.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Sinewave/Sinewave.ino: -------------------------------------------------------------------------------- 1 | /* Example playing a sinewave at a set frequency, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates the use of Oscil to play a wavetable. 5 | 6 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 7 | DAC/A14 on Teensy 3.1, or 8 | check the README or http://sensorium.github.io/Mozzi/ 9 | 10 | Mozzi documentation/API 11 | https://sensorium.github.io/Mozzi/doc/html/index.html 12 | 13 | Mozzi help/discussion/announcements: 14 | https://groups.google.com/forum/#!forum/mozzi-users 15 | 16 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 17 | 18 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 19 | */ 20 | 21 | #define MOZZI_CONTROL_RATE 64 // Hz, powers of 2 are most reliable; 64 Hz is actually the default, but shown here, for clarity 22 | #include 23 | #include // oscillator template 24 | #include // sine table for oscillator 25 | 26 | // use: Oscil oscilName (wavetable), look in .h file of table #included above 27 | Oscil aSin(SIN2048_DATA); 28 | 29 | void setup(){ 30 | startMozzi(); // :) 31 | aSin.setFreq(440); // set the frequency 32 | } 33 | 34 | 35 | void updateControl(){ 36 | // put changing controls in here 37 | } 38 | 39 | 40 | AudioOutput updateAudio(){ 41 | return MonoOutput::from8Bit(aSin.next()); // return an int signal centred around 0 42 | } 43 | 44 | 45 | void loop(){ 46 | audioHook(); // required here 47 | } 48 | -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Sinewave/Sinewave.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/01.Basics/Sinewave/Sinewave.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Sinewave/Sinewave.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/01.Basics/Sinewave/Sinewave.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Sinewave_HIFI/Sinewave_HIFI.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/01.Basics/Sinewave_HIFI/Sinewave_HIFI.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Sinewave_HIFI/Sinewave_HIFI.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/01.Basics/Sinewave_HIFI/Sinewave_HIFI.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Skeleton/Skeleton.ino: -------------------------------------------------------------------------------- 1 | #include // only needed, if you want to change some defaults 2 | #define MOZZI_CONTROL_RATE 64 // any options then go above the Mozzi.h include 3 | #include // needed once in each sketch 4 | 5 | void setup() { 6 | startMozzi(); 7 | } 8 | 9 | void updateControl() { 10 | // your control code 11 | } 12 | 13 | AudioOutput updateAudio() { 14 | // For mono output, the return value of this function is really just a signed integer. 15 | // However, for best portability of your sketch to different boards and configurations, 16 | // pick one of the variants below, depending on the "natural" range of the audio values 17 | // you generate: 18 | return MonoOutput::from8Bit(0); // if your signal is in 8 bit range 19 | /* OR */ 20 | return MonoOutput::fromAlmostNBit(9, 0); // if your signal is between -244 and 243 (_almost_ 9 bits is a special case on AVR boards) 21 | /* OR */ 22 | return MonoOutput::fromAlmostNBit(9, 0).clip(); // To clip (instead of overflow), should a few stray values exceed the allowable range 23 | /* OR */ 24 | return MonoOutput::from16Bit(0); // if your signal is in 16 bit range, e.g. the product of two 8 bit numbers 25 | /* OR */ 26 | return MonoOutput::fromNBit(21, 0); // if your signal happens to be in 21 bit range 27 | // In case you are wondering: 28 | // In older sketches, you will find "int updateAudio()", returning a plain int value. 29 | // That will still work, but is not recommended. 30 | } 31 | 32 | void loop() { 33 | audioHook(); // fills the audio buffer 34 | } 35 | -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Skeleton_Multi/Skeleton_Multi.ino: -------------------------------------------------------------------------------- 1 | /* This example shows how to set up a sketch where Mozzi-related functions are called 2 | from more than one .cpp source file (which will be compiled, separately). 3 | 4 | Unless you have good reason to do this, it is recommended to base your sketch on the 5 | single-file "Skeleton" example, instead. 6 | 7 | Mozzi documentation/API 8 | https://sensorium.github.io/Mozzi/doc/html/index.html 9 | 10 | Mozzi help/discussion/announcements: 11 | https://groups.google.com/forum/#!forum/mozzi-users 12 | 13 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 14 | 15 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 16 | */ 17 | 18 | #include // at the top of your sketch 19 | 20 | void setup() { 21 | startMozzi(); 22 | } 23 | 24 | void updateControl() { 25 | // your control code 26 | } 27 | 28 | void loop() { 29 | audioHook(); // fills the audio buffer 30 | } 31 | -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Skeleton_Multi/Skeleton_Multi_Unit2.cpp: -------------------------------------------------------------------------------- 1 | #include // should be included only once in the whole program. Sketches needing 2 | // core Mozzi functions in more than one .cpp file, shall include MozziHeadersOnly.h 3 | // in all but one. 4 | 5 | AudioOutput_t updateAudio() { 6 | return MonoOutput::from8Bit(0); // just a dummy 7 | } 8 | -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Table_Resolution/Table_Resolution.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/01.Basics/Table_Resolution/Table_Resolution.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Table_Resolution/Table_Resolution.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/01.Basics/Table_Resolution/Table_Resolution.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Vibrato/Vibrato.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/01.Basics/Vibrato/Vibrato.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/01.Basics/Vibrato/Vibrato.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/01.Basics/Vibrato/Vibrato.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Control_Echo_Theremin/Control_Echo_Theremin.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Control_Echo_Theremin/Control_Echo_Theremin.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Control_Echo_Theremin/Control_Echo_Theremin.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Control_Echo_Theremin/Control_Echo_Theremin.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Control_Oscil_Wash/Control_Oscil_Wash.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Control_Oscil_Wash/Control_Oscil_Wash.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Control_Oscil_Wash/Control_Oscil_Wash.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Control_Oscil_Wash/Control_Oscil_Wash.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Control_Tremelo/Control_Tremelo.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Control_Tremelo/Control_Tremelo.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Control_Tremelo/Control_Tremelo.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Control_Tremelo/Control_Tremelo.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/EventDelay/EventDelay.ino: -------------------------------------------------------------------------------- 1 | /* Example of a sound being toggled on an off, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates scheduling with EventDelay. 5 | EventDelay is a way to make non-blocking 6 | time delays for events. Use this instead of 7 | the Arduino delay() function, which doesn't 8 | work with Mozzi. 9 | 10 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 11 | DAC/A14 on Teensy 3.1, or 12 | check the README or http://sensorium.github.io/Mozzi/ 13 | 14 | Mozzi documentation/API 15 | https://sensorium.github.io/Mozzi/doc/html/index.html 16 | 17 | Mozzi help/discussion/announcements: 18 | https://groups.google.com/forum/#!forum/mozzi-users 19 | 20 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 21 | 22 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 23 | */ 24 | 25 | #define MOZZI_CONTROL_RATE 64 26 | #include 27 | #include // oscillator template 28 | #include // sine table for oscillator 29 | #include 30 | 31 | // use: Oscil oscilName (wavetable), look in .h file of table #included above 32 | Oscil aSin(SIN8192_DATA); 33 | 34 | // for scheduling audio gain changes 35 | EventDelay kGainChangeDelay; 36 | 37 | char gain = 1; 38 | 39 | void setup(){ 40 | startMozzi(); 41 | aSin.setFreq(330); // set the frequency 42 | kGainChangeDelay.set(1000); // 1 second countdown, within resolution of MOZZI_CONTROL_RATE 43 | } 44 | 45 | 46 | void updateControl(){ 47 | if(kGainChangeDelay.ready()){ 48 | gain = 1-gain; // flip 0/1 49 | kGainChangeDelay.start(); 50 | } 51 | } 52 | 53 | 54 | AudioOutput updateAudio(){ 55 | return AudioOutput::from8Bit(aSin.next()*gain); 56 | } 57 | 58 | 59 | void loop(){ 60 | audioHook(); 61 | } 62 | -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/EventDelay/EventDelay.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/EventDelay/EventDelay.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/EventDelay/EventDelay.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/EventDelay/EventDelay.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Line_Gliss/Line_Gliss.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Line_Gliss/Line_Gliss.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Line_Gliss/Line_Gliss.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Line_Gliss/Line_Gliss.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Line_Gliss_Double_32k_HIFI/Line_Gliss_Double_32k_HIFI.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Line_Gliss_Double_32k_HIFI/Line_Gliss_Double_32k_HIFI.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Line_Gliss_Double_32k_HIFI/Line_Gliss_Double_32k_HIFI.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Line_Gliss_Double_32k_HIFI/Line_Gliss_Double_32k_HIFI.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Metronome_SampleHuffman/Metronome_SampleHuffman.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Metronome_SampleHuffman/Metronome_SampleHuffman.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Metronome_SampleHuffman/Metronome_SampleHuffman.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Metronome_SampleHuffman/Metronome_SampleHuffman.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Pause/Pause.ino: -------------------------------------------------------------------------------- 1 | /* Example pausing Mozzi, restoring timers to previous states, 2 | during which Arduino delay() works, then resuming Mozzi again. 3 | 4 | This may be useful when using sensors or other libraries which need to use 5 | the same timers as Mozzi. (Atmel Timer 0, Timer 1, and in HIFI mode, Timer 2). 6 | 7 | Circuit: 8 | Pushbutton on digital pin D4 9 | button from the digital pin to +5V (3.3V on Teensy 3.1) 10 | 10K resistor from the digital pin to ground 11 | Audio output on digital pin 9 on a Uno or similar, or 12 | DAC/A14 on Teensy 3.1, or 13 | check the README or https://sensorium.github.io/Mozzi/ 14 | 15 | Mozzi help/discussion/announcements: 16 | https://groups.google.com/forum/#!forum/mozzi-users 17 | 18 | Tim Barrass 2013, CC by-nc-sa. 19 | */ 20 | 21 | //#include // Teensy 3.1 uncomment this line and install https://github.com/pedvide/ADC 22 | #include 23 | #include 24 | #include // recorded audio wavetable 25 | #include 26 | 27 | Oscil aNoise(BROWNNOISE8192_DATA); 28 | 29 | #define STOP_PIN 4 30 | 31 | void setup(){ 32 | pinMode(STOP_PIN, INPUT); 33 | aNoise.setFreq(2.f); 34 | startMozzi(); 35 | } 36 | 37 | 38 | void updateControl(){ 39 | static int previous; 40 | int current = digitalRead(STOP_PIN); 41 | if(previous==LOW && current==HIGH){ 42 | pauseMozzi(); 43 | }else if(previous==HIGH && current==LOW){ 44 | unPauseMozzi(); 45 | } 46 | previous=current; 47 | // jump to a new spot in the noise table to stop it sounding like it repeats 48 | aNoise.setPhase(rand(BROWNNOISE8192_NUM_CELLS)); 49 | } 50 | 51 | 52 | int updateAudio(){ 53 | return aNoise.next(); 54 | } 55 | 56 | 57 | void loop(){ 58 | audioHook(); 59 | } 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Pause/Pause.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Pause/Pause.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/02.Control/Pause/Pause.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/02.Control/Pause/Pause.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Knob_LDR_x2_WavePacket/Knob_LDR_x2_WavePacket.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Knob_LDR_x2_WavePacket/Knob_LDR_x2_WavePacket.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Knob_LDR_x2_WavePacket/Knob_LDR_x2_WavePacket.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Knob_LDR_x2_WavePacket/Knob_LDR_x2_WavePacket.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Knob_LightLevel_FMsynth/Knob_LightLevel_FMsynth.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Knob_LightLevel_FMsynth/Knob_LightLevel_FMsynth.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Knob_LightLevel_FMsynth/Knob_LightLevel_FMsynth.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Knob_LightLevel_FMsynth/Knob_LightLevel_FMsynth.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Knob_LightLevel_x2_FMsynth/Knob_LightLevel_x2_FMsynth.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Knob_LightLevel_x2_FMsynth/Knob_LightLevel_x2_FMsynth.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Knob_LightLevel_x2_FMsynth/Knob_LightLevel_x2_FMsynth.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Knob_LightLevel_x2_FMsynth/Knob_LightLevel_x2_FMsynth.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Light_Temperature_Detuned/Light_Temperature_Detuned.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Light_Temperature_Detuned/Light_Temperature_Detuned.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Light_Temperature_Detuned/Light_Temperature_Detuned.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Light_Temperature_Detuned/Light_Temperature_Detuned.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Light_Temperature_Multi_Oscil/Light_Temperature_Multi_Oscil.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Light_Temperature_Multi_Oscil/Light_Temperature_Multi_Oscil.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Light_Temperature_Multi_Oscil/Light_Temperature_Multi_Oscil.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Light_Temperature_Multi_Oscil/Light_Temperature_Multi_Oscil.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Piezo_Frequency/Piezo_Frequency.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Piezo_Frequency/Piezo_Frequency.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Piezo_Frequency/Piezo_Frequency.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Piezo_Frequency/Piezo_Frequency.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Piezo_SampleScrubber/Piezo_SampleScrubber.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Piezo_SampleScrubber/Piezo_SampleScrubber.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Piezo_SampleScrubber/Piezo_SampleScrubber.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Piezo_SampleScrubber/Piezo_SampleScrubber.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Piezo_SampleTrigger/Piezo_SampleTrigger.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Piezo_SampleTrigger/Piezo_SampleTrigger.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Piezo_SampleTrigger/Piezo_SampleTrigger.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Piezo_SampleTrigger/Piezo_SampleTrigger.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Piezo_Switch_Pitch/Piezo_Switch_Pitch.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Piezo_Switch_Pitch/Piezo_Switch_Pitch.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Piezo_Switch_Pitch/Piezo_Switch_Pitch.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Piezo_Switch_Pitch/Piezo_Switch_Pitch.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/RCpoll/RCpoll.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/RCpoll/RCpoll.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/RCpoll/RCpoll.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/RCpoll/RCpoll.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Sinewave_Pinchange_Interrupt/Sinewave_Pinchange_Interrupt.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Sinewave_Pinchange_Interrupt/Sinewave_Pinchange_Interrupt.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Sinewave_Pinchange_Interrupt/Sinewave_Pinchange_Interrupt.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Sinewave_Pinchange_Interrupt/Sinewave_Pinchange_Interrupt.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Volume_Knob/Volume_Knob.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Volume_Knob/Volume_Knob.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Volume_Knob/Volume_Knob.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Volume_Knob/Volume_Knob.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Volume_Knob_LightLevel_Frequency/Volume_Knob_LightLevel_Frequency.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Volume_Knob_LightLevel_Frequency/Volume_Knob_LightLevel_Frequency.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/03.Sensors/Volume_Knob_LightLevel_Frequency/Volume_Knob_LightLevel_Frequency.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/03.Sensors/Volume_Knob_LightLevel_Frequency/Volume_Knob_LightLevel_Frequency.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/04.Audio_Input/Audio_Input/Audio_Input.ino: -------------------------------------------------------------------------------- 1 | /* Test of audio input using Mozzi sonification library. 2 | 3 | An audio input using the range between 0 to 5V on analog pin A0 (or as 4 | set in MOZZI_AUDIO_INPUT_PIN) is sampled and output on digital pin 9. 5 | 6 | NOTE: MOZZI_AUDIO_INPUT_STANDARD is not available as an option on all 7 | platforms. 8 | 9 | Circuit: 10 | Audio cable centre wire on pin A0, outer shielding to Arduino Ground. 11 | Audio output on DAC/A14 on Teensy 3.0, 3.1, or digital pin 9 on a Uno or similar, or 12 | check the README or http://sensorium.github.io/Mozzi/ 13 | 14 | Mozzi documentation/API 15 | https://sensorium.github.io/Mozzi/doc/html/index.html 16 | 17 | Mozzi help/discussion/announcements: 18 | https://groups.google.com/forum/#!forum/mozzi-users 19 | 20 | Copyright 2013-2024 Tim Barrass and the Mozzi Team 21 | 22 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 23 | */ 24 | 25 | #include 26 | #define MOZZI_AUDIO_INPUT MOZZI_AUDIO_INPUT_STANDARD 27 | #define MOZZI_AUDIO_INPUT_PIN 0 28 | 29 | #include 30 | 31 | void setup(){ 32 | startMozzi(); 33 | } 34 | 35 | 36 | void updateControl(){ 37 | } 38 | 39 | 40 | AudioOutput updateAudio(){ 41 | int asig = getAudioInput(); // range 0-1023 42 | asig = asig - 512; // now range is -512 to 511 43 | // output range in STANDARD mode is -244 to 243, 44 | // we scale down only by one bit, so you might need 45 | // to adjust your signal to suit 46 | return MonoOutput::fromAlmostNBit(9, asig).clip(); 47 | } 48 | 49 | 50 | void loop(){ 51 | audioHook(); 52 | } 53 | -------------------------------------------------------------------------------- /extras/website/examples/examples/04.Audio_Input/Audio_Input_with_Knob_Filter/Audio_Input_with_Knob_Filter.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/04.Audio_Input/Audio_Input_with_Knob_Filter/Audio_Input_with_Knob_Filter.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/04.Audio_Input/Audio_Input_with_Knob_Filter/Audio_Input_with_Knob_Filter.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/04.Audio_Input/Audio_Input_with_Knob_Filter/Audio_Input_with_Knob_Filter.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/DCfilter/DCfilter.ino: -------------------------------------------------------------------------------- 1 | /* Example of filtering an analog input to remove DC bias, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates DCfilter(), DC-blocking filter useful for 5 | highlighting changes in control signals. 6 | The output of the filter settles to 0 if the incoming signal stays constant. 7 | If the input changes, the filter output swings to track the change and 8 | eventually settles back to 0. 9 | 10 | Mozzi documentation/API 11 | https://sensorium.github.io/Mozzi/doc/html/index.html 12 | 13 | Mozzi help/discussion/announcements: 14 | https://groups.google.com/forum/#!forum/mozzi-users 15 | 16 | Copyright 2013-2024 Tim Barrass and the Mozzi Team 17 | 18 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 19 | */ 20 | 21 | #include 22 | #include 23 | 24 | int sensorPin = A0; 25 | 26 | DCfilter dcFiltered(0.9); // parameter sets how long the filter takes to settle 27 | 28 | void setup() { 29 | //Serial.begin(9600); // for Teensy 3.1, beware printout can cause glitches 30 | Serial.begin(115200); 31 | startMozzi(); 32 | } 33 | 34 | 35 | void updateControl(){ 36 | // read the value from the sensor in 10 bit resolution: 37 | int sensorValue = mozziAnalogRead<10>(sensorPin); 38 | Serial.print(sensorValue); 39 | Serial.print(" Filtered = "); 40 | Serial.println(dcFiltered.next(sensorValue)); 41 | } 42 | 43 | 44 | AudioOutput updateAudio(){ 45 | return 0; 46 | } 47 | 48 | 49 | void loop(){ 50 | audioHook(); 51 | } 52 | -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/Line_vs_Smooth/Line_vs_Smooth.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/Line_vs_Smooth/Line_vs_Smooth.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/Line_vs_Smooth/Line_vs_Smooth.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/Line_vs_Smooth/Line_vs_Smooth.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/MIDI_portamento/MIDI_portamento.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/MIDI_portamento/MIDI_portamento.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/MIDI_portamento/MIDI_portamento.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/MIDI_portamento/MIDI_portamento.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/RollingAverage/RollingAverage.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/RollingAverage/RollingAverage.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/RollingAverage/RollingAverage.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/RollingAverage/RollingAverage.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/Smooth/Smooth.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/Smooth/Smooth.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/Smooth/Smooth.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/Smooth/Smooth.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/Smooth_Frequency/Smooth_Frequency.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/Smooth_Frequency/Smooth_Frequency.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/Smooth_Frequency/Smooth_Frequency.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/Smooth_Frequency/Smooth_Frequency.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/Thermistor_OverSample/Thermistor_OverSample.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/Thermistor_OverSample/Thermistor_OverSample.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/05.Control_Filters/Thermistor_OverSample/Thermistor_OverSample.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/05.Control_Filters/Thermistor_OverSample/Thermistor_OverSample.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/AMsynth/AMsynth.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/AMsynth/AMsynth.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/AMsynth/AMsynth.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/AMsynth/AMsynth.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/AMsynth_HIFI/AMsynth_HIFI.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/AMsynth_HIFI/AMsynth_HIFI.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/AMsynth_HIFI/AMsynth_HIFI.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/AMsynth_HIFI/AMsynth_HIFI.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/Detuned_Beats_Wash/Detuned_Beats_Wash.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/Detuned_Beats_Wash/Detuned_Beats_Wash.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/Detuned_Beats_Wash/Detuned_Beats_Wash.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/Detuned_Beats_Wash/Detuned_Beats_Wash.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/FMsynth/FMsynth.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/FMsynth/FMsynth.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/FMsynth/FMsynth.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/FMsynth/FMsynth.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/FMsynth_32k_HIFI/FMsynth_32k_HIFI.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/FMsynth_32k_HIFI/FMsynth_32k_HIFI.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/FMsynth_32k_HIFI/FMsynth_32k_HIFI.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/FMsynth_32k_HIFI/FMsynth_32k_HIFI.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/PDresonant/PDresonant.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/PDresonant/PDresonant.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/PDresonant/PDresonant.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/PDresonant/PDresonant.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/PWM_Phasing/PWM_Phasing.ino: -------------------------------------------------------------------------------- 1 | /* Example of pulse width modulation, 2 | using Mozzi sonification library. 3 | 4 | Based Miller Puckette's j03.pulse.width.mod example 5 | in the Pure Data documentation, subtracting 2 sawtooth 6 | waves with slightly different tunings to produce a 7 | varying phase difference. 8 | 9 | Demonstrates Phasor(). 10 | 11 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 12 | DAC/A14 on Teensy 3.1, or 13 | check the README or http://sensorium.github.io/Mozzi/ 14 | 15 | Mozzi documentation/API 16 | https://sensorium.github.io/Mozzi/doc/html/index.html 17 | 18 | Mozzi help/discussion/announcements: 19 | https://groups.google.com/forum/#!forum/mozzi-users 20 | 21 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 22 | 23 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 24 | */ 25 | 26 | #include 27 | #include 28 | 29 | Phasor aPhasor1; 30 | Phasor aPhasor2; 31 | 32 | float freq = 55.f; 33 | 34 | void setup(){ 35 | aPhasor1.setFreq(freq); 36 | aPhasor2.setFreq(freq+0.2f); 37 | startMozzi(); // :) 38 | } 39 | 40 | 41 | void updateControl(){ 42 | } 43 | 44 | 45 | AudioOutput updateAudio(){ 46 | char asig1 = (char)(aPhasor1.next()>>24); 47 | char asig2 = (char)(aPhasor2.next()>>24); 48 | return MonoOutput::fromNBit(9, ((int)asig1-asig2)); 49 | } 50 | 51 | 52 | void loop(){ 53 | audioHook(); // required here 54 | } 55 | -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/PWM_Phasing/PWM_Phasing.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/PWM_Phasing/PWM_Phasing.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/PWM_Phasing/PWM_Phasing.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/PWM_Phasing/PWM_Phasing.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/SelfModulator/SelfModulator.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/SelfModulator/SelfModulator.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/SelfModulator/SelfModulator.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/SelfModulator/SelfModulator.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/WavePacket_Double/WavePacket_Double.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/WavePacket_Double/WavePacket_Double.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/WavePacket_Double/WavePacket_Double.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/WavePacket_Double/WavePacket_Double.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/WavePacket_Sample/WavePacket_Sample.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/WavePacket_Sample/WavePacket_Sample.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/WavePacket_Sample/WavePacket_Sample.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/WavePacket_Sample/WavePacket_Sample.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/WavePacket_Single/WavePacket_Single.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/WavePacket_Single/WavePacket_Single.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/WavePacket_Single/WavePacket_Single.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/WavePacket_Single/WavePacket_Single.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/Waveshaper/Waveshaper.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/Waveshaper/Waveshaper.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/06.Synthesis/Waveshaper/Waveshaper.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/06.Synthesis/Waveshaper/Waveshaper.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/ADSR_Audio_Rate_Envelope/ADSR_Audio_Rate_Envelope.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/ADSR_Audio_Rate_Envelope/ADSR_Audio_Rate_Envelope.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/ADSR_Audio_Rate_Envelope/ADSR_Audio_Rate_Envelope.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/ADSR_Audio_Rate_Envelope/ADSR_Audio_Rate_Envelope.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/ADSR_Audio_Rate_Envelope_x2/ADSR_Audio_Rate_Envelope_x2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/ADSR_Audio_Rate_Envelope_x2/ADSR_Audio_Rate_Envelope_x2.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/ADSR_Audio_Rate_Envelope_x2/ADSR_Audio_Rate_Envelope_x2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/ADSR_Audio_Rate_Envelope_x2/ADSR_Audio_Rate_Envelope_x2.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/ADSR_Control_Rate_Envelope/ADSR_Control_Rate_Envelope.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/ADSR_Control_Rate_Envelope/ADSR_Control_Rate_Envelope.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/ADSR_Control_Rate_Envelope/ADSR_Control_Rate_Envelope.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/ADSR_Control_Rate_Envelope/ADSR_Control_Rate_Envelope.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/Ead_Envelope/Ead_Envelope.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/Ead_Envelope/Ead_Envelope.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/Ead_Envelope/Ead_Envelope.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/Ead_Envelope/Ead_Envelope.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/Filter_Envelope/Filter_Envelope.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/Filter_Envelope/Filter_Envelope.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/Filter_Envelope/Filter_Envelope.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/Filter_Envelope/Filter_Envelope.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/Phasemod_Envelope/Phasemod_Envelope.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/Phasemod_Envelope/Phasemod_Envelope.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/07.Envelopes/Phasemod_Envelope/Phasemod_Envelope.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/07.Envelopes/Phasemod_Envelope/Phasemod_Envelope.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Sample/Sample.ino: -------------------------------------------------------------------------------- 1 | /* Example of playing a sampled sound, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates one-shot samples scheduled 5 | with EventDelay. 6 | 7 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 8 | DAC/A14 on Teensy 3.1, or 9 | check the README or http://sensorium.github.io/Mozzi/ 10 | 11 | Mozzi documentation/API 12 | https://sensorium.github.io/Mozzi/doc/html/index.html 13 | 14 | Mozzi help/discussion/announcements: 15 | https://groups.google.com/forum/#!forum/mozzi-users 16 | 17 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 18 | 19 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 20 | */ 21 | 22 | #include 23 | #include // Sample template 24 | #include 25 | #include 26 | 27 | // use: Sample SampleName (wavetable) 28 | Sample aSample(BURROUGHS1_18649_DATA); 29 | 30 | // for scheduling sample start 31 | EventDelay kTriggerDelay; 32 | 33 | void setup(){ 34 | startMozzi(); 35 | aSample.setFreq((float) BURROUGHS1_18649_SAMPLERATE / (float) BURROUGHS1_18649_NUM_CELLS); // play at the speed it was recorded 36 | kTriggerDelay.set(1500); // 1500 msec countdown, within resolution of MOZZI_CONTROL_RATE 37 | } 38 | 39 | 40 | void updateControl(){ 41 | if(kTriggerDelay.ready()){ 42 | aSample.start(); 43 | kTriggerDelay.start(); 44 | } 45 | } 46 | 47 | 48 | AudioOutput updateAudio(){ 49 | return MonoOutput::from8Bit((int) aSample.next()); 50 | } 51 | 52 | 53 | void loop(){ 54 | audioHook(); 55 | } 56 | -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Sample/Sample.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Sample/Sample.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Sample/Sample.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Sample/Sample.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/SampleHuffman_Umpah/SampleHuffman_Umpah.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/SampleHuffman_Umpah/SampleHuffman_Umpah.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/SampleHuffman_Umpah/SampleHuffman_Umpah.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/SampleHuffman_Umpah/SampleHuffman_Umpah.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Sample_Loop_Points/Sample_Loop_Points.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Sample_Loop_Points/Sample_Loop_Points.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Sample_Loop_Points/Sample_Loop_Points.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Sample_Loop_Points/Sample_Loop_Points.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Sample_Scrub/Sample_Scrub.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Sample_Scrub/Sample_Scrub.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Sample_Scrub/Sample_Scrub.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Sample_Scrub/Sample_Scrub.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Samples/Samples.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Samples/Samples.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Samples/Samples.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Samples/Samples.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Samples_Tables_Arrays/Samples_Tables_Arrays.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Samples_Tables_Arrays/Samples_Tables_Arrays.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Samples_Tables_Arrays/Samples_Tables_Arrays.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Samples_Tables_Arrays/Samples_Tables_Arrays.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Wavetable_Swap/Wavetable_Swap.ino: -------------------------------------------------------------------------------- 1 | /* Example swapping between sounds played by a single Oscil 2 | with Mozzi sonification library. 3 | 4 | Demonstrates declaring an Oscil without a table, 5 | and Oscil::setTable() method. 6 | 7 | Mozzi documentation/API 8 | https://sensorium.github.io/Mozzi/doc/html/index.html 9 | 10 | Mozzi help/discussion/announcements: 11 | https://groups.google.com/forum/#!forum/mozzi-users 12 | 13 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 14 | 15 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 16 | */ 17 | 18 | #include 19 | #include 20 | #include 21 | 22 | // tables need to be the same size 23 | #include 24 | #include 25 | 26 | // declare with or without a wavetable, and use setTable() later 27 | Oscil <512, MOZZI_AUDIO_RATE> aOscil; 28 | 29 | // for scheduling table swaps 30 | EventDelay kSwapTablesDelay; 31 | 32 | boolean using_sin = true; 33 | 34 | 35 | void setup(){ 36 | startMozzi(); 37 | kSwapTablesDelay.set(1000); // 1 second countdown, within resolution of MOZZI_CONTROL_RATE 38 | aOscil.setFreq(440.f); 39 | } 40 | 41 | 42 | void updateControl(){ 43 | if(kSwapTablesDelay.ready()){ 44 | if (using_sin){ 45 | aOscil.setTable(SAW_ANALOGUE512_DATA); 46 | using_sin = false; 47 | }else{ 48 | aOscil.setTable(SIN512_DATA); 49 | using_sin = true; 50 | } 51 | kSwapTablesDelay.start(); 52 | } 53 | } 54 | 55 | 56 | AudioOutput updateAudio(){ 57 | return MonoOutput::from8Bit(aOscil.next()); 58 | } 59 | 60 | 61 | void loop(){ 62 | audioHook(); // required here 63 | } 64 | -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Wavetable_Swap/Wavetable_Swap.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Wavetable_Swap/Wavetable_Swap.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/08.Samples/Wavetable_Swap/Wavetable_Swap.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/08.Samples/Wavetable_Swap/Wavetable_Swap.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/AudioDelay/AudioDelay.ino: -------------------------------------------------------------------------------- 1 | /* Example of modulating a signal by using a variable delay, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates AudioDelay. 5 | 6 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 7 | DAC/A14 on Teensy 3.1, or 8 | check the README or http://sensorium.github.io/Mozzi/ 9 | 10 | Mozzi documentation/API 11 | https://sensorium.github.io/Mozzi/doc/html/index.html 12 | 13 | Mozzi help/discussion/announcements: 14 | https://groups.google.com/forum/#!forum/mozzi-users 15 | 16 | Copyright 2012-2024 Tim Barrass and the Mozzi Team 17 | 18 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 19 | */ 20 | 21 | #define MOZZI_CONTROL_RATE 256 // Hz, powers of 2 are most reliable 22 | #include 23 | #include 24 | #include // wavetable 25 | #include // wavetable 26 | #include 27 | #include // for mtof 28 | 29 | Oscil aTriangle(TRIANGLE_ANALOGUE512_DATA); 30 | Oscil kFreq(COS2048_DATA); 31 | 32 | AudioDelay <256> aDel; 33 | int del_samps; 34 | 35 | void setup(){ 36 | aTriangle.setFreq(mtof(60.f)); 37 | kFreq.setFreq(.63f); 38 | startMozzi(); 39 | } 40 | 41 | void loop(){ 42 | audioHook(); 43 | } 44 | 45 | void updateControl(){ 46 | del_samps = 128+kFreq.next(); 47 | } 48 | 49 | AudioOutput updateAudio(){ 50 | char asig = aDel.next(aTriangle.next(), del_samps); 51 | return MonoOutput::from8Bit(asig); 52 | } 53 | -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/AudioDelay/AudioDelay.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/AudioDelay/AudioDelay.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/AudioDelay/AudioDelay.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/AudioDelay/AudioDelay.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/AudioDelayFeedback/AudioDelayFeedback.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/AudioDelayFeedback/AudioDelayFeedback.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/AudioDelayFeedback/AudioDelayFeedback.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/AudioDelayFeedback/AudioDelayFeedback.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/AudioDelayFeedbackAllpass/AudioDelayFeedbackAllpass.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/AudioDelayFeedbackAllpass/AudioDelayFeedbackAllpass.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/AudioDelayFeedbackAllpass/AudioDelayFeedbackAllpass.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/AudioDelayFeedbackAllpass/AudioDelayFeedbackAllpass.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/AudioDelayFeedbackX2/AudioDelayFeedbackX2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/AudioDelayFeedbackX2/AudioDelayFeedbackX2.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/AudioDelayFeedbackX2/AudioDelayFeedbackX2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/AudioDelayFeedbackX2/AudioDelayFeedbackX2.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/AudioDelayFeedback_HIFI/AudioDelayFeedback_HIFI.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/AudioDelayFeedback_HIFI/AudioDelayFeedback_HIFI.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/AudioDelayFeedback_HIFI/AudioDelayFeedback_HIFI.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/AudioDelayFeedback_HIFI/AudioDelayFeedback_HIFI.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/ReverbTank_STANDARD/ReverbTank_STANDARD.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/ReverbTank_STANDARD/ReverbTank_STANDARD.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/09.Delays/ReverbTank_STANDARD/ReverbTank_STANDARD.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/09.Delays/ReverbTank_STANDARD/ReverbTank_STANDARD.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/10.Audio_Filters/LowPassFilter/LowPassFilter.ino: -------------------------------------------------------------------------------- 1 | /* Example of filtering a wave, 2 | using Mozzi sonification library. 3 | 4 | Demonstrates LowPassFilter(). 5 | 6 | Circuit: Audio output on digital pin 9 on a Uno or similar, or 7 | DAC/A14 on Teensy 3.1, or 8 | check the README or http://sensorium.github.io/Mozzi/ 9 | 10 | Mozzi documentation/API 11 | https://sensorium.github.io/Mozzi/doc/html/index.html 12 | 13 | Mozzi help/discussion/announcements: 14 | https://groups.google.com/forum/#!forum/mozzi-users 15 | 16 | Tim Barrass 2012, CC by-nc-sa. 17 | */ 18 | 19 | #include 20 | #include 21 | #include // recorded audio wavetable 22 | #include // for filter modulation 23 | #include 24 | #include 25 | 26 | Oscil aCrunchySound(CHUM9_DATA); 27 | Oscil kFilterMod(COS2048_DATA); 28 | 29 | LowPassFilter lpf; 30 | uint8_t resonance = 200; // range 0-255, 255 is most resonant 31 | 32 | void setup(){ 33 | startMozzi(); 34 | aCrunchySound.setFreq(2.f); 35 | kFilterMod.setFreq(1.3f); 36 | } 37 | 38 | void loop(){ 39 | audioHook(); 40 | } 41 | 42 | void updateControl(){ 43 | if (rand(CONTROL_RATE/2) == 0){ // about once every half second 44 | kFilterMod.setFreq((float)rand(255)/64); // choose a new modulation frequency 45 | } 46 | // map the modulation into the filter range (0-255), corresponds with 0-8191Hz 47 | byte cutoff_freq = 100 + kFilterMod.next()/2; 48 | lpf.setCutoffFreqAndResonance(cutoff_freq, resonance); 49 | } 50 | 51 | int updateAudio(){ 52 | char asig = lpf.next(aCrunchySound.next()); 53 | return (int) asig; 54 | } 55 | -------------------------------------------------------------------------------- /extras/website/examples/examples/10.Audio_Filters/LowPassFilter/LowPassFilter.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/10.Audio_Filters/LowPassFilter/LowPassFilter.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/10.Audio_Filters/LowPassFilter/LowPassFilter.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/10.Audio_Filters/LowPassFilter/LowPassFilter.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/10.Audio_Filters/LowPassFilterX2/LowPassFilterX2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/10.Audio_Filters/LowPassFilterX2/LowPassFilterX2.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/10.Audio_Filters/LowPassFilterX2/LowPassFilterX2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/10.Audio_Filters/LowPassFilterX2/LowPassFilterX2.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/10.Audio_Filters/StateVariableFilter/StateVariableFilter.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/10.Audio_Filters/StateVariableFilter/StateVariableFilter.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/10.Audio_Filters/StateVariableFilter/StateVariableFilter.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/10.Audio_Filters/StateVariableFilter/StateVariableFilter.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/10.Audio_Filters/StateVariableFilter_HIFI/StateVariableFilter_HIFI.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/10.Audio_Filters/StateVariableFilter_HIFI/StateVariableFilter_HIFI.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/10.Audio_Filters/StateVariableFilter_HIFI/StateVariableFilter_HIFI.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/10.Audio_Filters/StateVariableFilter_HIFI/StateVariableFilter_HIFI.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/11.Communication/Teensy_USB_MIDI_Input/Teensy_USB_MIDI_Input.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/11.Communication/Teensy_USB_MIDI_Input/Teensy_USB_MIDI_Input.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/11.Communication/Teensy_USB_MIDI_Input/Teensy_USB_MIDI_Input.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/11.Communication/Teensy_USB_MIDI_Input/Teensy_USB_MIDI_Input.ogg -------------------------------------------------------------------------------- /extras/website/examples/examples/12.Misc/IntMap_test/IntMap_test.ino: -------------------------------------------------------------------------------- 1 | /* Maps a range of input numbers to an output range, comparing 2 | the results of Mozzi's IntMap object with Arduino map(). 3 | 4 | Demonstrates IntMap, a fast integer replacement for map(). 5 | 6 | Circuit: not required 7 | 8 | Mozzi documentation/API 9 | https://sensorium.github.io/Mozzi/doc/html/index.html 10 | 11 | Mozzi help/discussion/announcements: 12 | https://groups.google.com/forum/#!forum/mozzi-users 13 | 14 | Copyright 2014-2024 Tim Barrass and the Mozzi Team 15 | 16 | Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 17 | */ 18 | 19 | #include 20 | 21 | const IntMap testIntMap(0,100,10,1000); 22 | 23 | void setup(){ 24 | //Serial.begin(9600); // for Teensy 3.1, beware printout can cause glitches 25 | Serial.begin(115200); 26 | int n; 27 | 28 | int i = -2000; 29 | while(i<5000){ 30 | n = testIntMap(i); 31 | Serial.print("testIntMap: \t"); 32 | Serial.print(n, DEC); 33 | 34 | n = map(i,0,100,10,1000); 35 | Serial.print("\t map: \t"); 36 | Serial.println(n,DEC); 37 | i += 7; 38 | } 39 | } 40 | 41 | void loop(){ 42 | } 43 | -------------------------------------------------------------------------------- /extras/website/examples/examples/12.Misc/Stereo_Hack/Stereo_Hack.ino: -------------------------------------------------------------------------------- 1 | /* Example crudely panning noise to test stereo output hack, 2 | * using Mozzi sonification library. 3 | * 4 | * Tests stereo output hack. This requires #define STEREO_HACK true in mozzi_config.h 5 | * 6 | * Circuit: Audio outputs on digital pins 9 and 10. 7 | * 8 | * Mozzi help/discussion/announcements: 9 | * https://groups.google.com/forum/#!forum/mozzi-users 10 | * 11 | * Tim Barrass 2012. 12 | * This example code is in the public domain. 13 | */ 14 | 15 | #include 16 | #include // for controlling panning position 17 | #include // oscil for audio sig 18 | #include // table for oscillator 19 | 20 | // use: Oscil oscilName (wavetable) 21 | Oscil aNoise(PINKNOISE8192_DATA); 22 | 23 | //Phasor for panning 24 | Phasor kPan; // outputs an unsigned long 0-max 32 bit positive number 25 | unsigned int pan; // convey pan from updateControl() to updateAudioStereo(); 26 | 27 | 28 | void setup(){ 29 | aNoise.setFreq(2.111f); // set the frequency with an unsigned int or a float 30 | kPan.setFreq(0.25f); // take 4 seconds to move left-right 31 | startMozzi(); // :) 32 | Serial.begin(115200); 33 | } 34 | 35 | 36 | void updateControl(){ 37 | pan = kPan.next()>>16; 38 | Serial.println(pan); 39 | } 40 | 41 | // needed for stereo output 42 | int audio_out_1, audio_out_2; 43 | 44 | void updateAudio(){ 45 | int asig = aNoise.next(); 46 | audio_out_1 = (int)(((long)pan*asig)>>16); 47 | audio_out_2 = (int)((((long)65535-pan)*asig)>>16); 48 | } 49 | 50 | 51 | void loop(){ 52 | audioHook(); // required here 53 | } 54 | -------------------------------------------------------------------------------- /extras/website/examples/examples/12.Misc/Stereo_Hack/Stereo_Hack.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/12.Misc/Stereo_Hack/Stereo_Hack.mp3 -------------------------------------------------------------------------------- /extras/website/examples/examples/12.Misc/Stereo_Hack/Stereo_Hack.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/examples/examples/12.Misc/Stereo_Hack/Stereo_Hack.ogg -------------------------------------------------------------------------------- /extras/website/examples/index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: single 3 | --- 4 | 5 | 6 | 7 | These are the example sketches that come with Mozzi, and the sounds they make. 8 | They're intended to be instructive, rather than musically interesting... 9 | 10 | [01.Basics](#01.Basics) : how to make a sound and simple modifications like gain. 11 | [02.Control](#02.Control) : changing sound parameters, scheduling, pausing. 12 | [03.Sensors](#03.Sensors) : using various sensors to change sounds. 13 | [04.Audio Input](#04.Audio_Input) : sample incoming sound at audio rate. 14 | [05.Control Filters](#05.Control_Filters) : smoothing and other processing for sensor inputs. 15 | [06.Synthesis](#06.Synthesis) : for more versatile and detailed sounds. 16 | [07.Envelopes](#07.Envelopes) : give sounds changing dynamics. 17 | [08.Samples](#08.Samples) : play recorded sounds in various ways. 18 | [09.Delays](#09.Delays) : for effects like flanging or reverb. 19 | [10.Audio Filters](#10.Audio_Filters) : modify audio frequencies. 20 | [11.Communication](#11.Communication) : non-blocking communication with external devices. 21 | [12.Misc](#12.Misc) : other useful things. 22 | 23 | 24 | {% include_relative example-list.markdown %} 25 | 26 | 27 | 41 | -------------------------------------------------------------------------------- /extras/website/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/favicon.png -------------------------------------------------------------------------------- /extras/website/learn/MozziByte-NoobToot.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/MozziByte-NoobToot.pdf -------------------------------------------------------------------------------- /extras/website/learn/index.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: single 3 | --- 4 | 5 | [Mozzi, an Introductory Tutorial](introductory-tutorial/) 6 | This shows how to set up an Arduino with Mozzi from scratch and use analog inputs to make sounds using a knob, light sensing, pressure, and a switch (on a digital input). 7 | 8 | 9 | [//]: # [MozziByte Noob Toot](MozziByte-NoobToot.pdf) 10 | [//]: # A quick start guide for the [MozziByte board](https://www.kickstarter.com/projects/mozzibyte/mozzibyte-mozzi-arduino-mini-sensor-sonification-s). 11 | 12 | 13 | [Anatomy of a Mozzi sketch](a-simple-sketch/) 14 | A detailed introduction to the parts of a Mozzi sketch, showing how to use an oscillator to generate audio and control signals. 15 | 16 | [Output Modes](output/) 17 | Where to connect your audio hardware to your MCU, and the different mode available for high quality sound output. 18 | 19 | [Output Circuits](output_circuits/) 20 | Hardware filtering of undesired frequencies (carrier frequency noise which some people can hear in the regular PWM modes), and amplification circuits. 21 | 22 | [Configuring Mozzi](configuration/) 23 | So you've read about all these available configuration options, but just how to use them? 24 | 25 | [Porting old sketches to a new Mozzi](porting/) 26 | Your old sketch no longer compiles, or only with a bunch of warnings? Usually only some very minor adjustments are needed. See this guide for what may have to be changed. 27 | 28 | [Hints and Tips](hints/) 29 | What kind of code Mozzi likes best, debugging and monitoring your sketches. 30 | 31 | [Under the Hood](under-the-hood/) 32 | Outlines how Mozzi works behind the scenes. 33 | 34 | [Frequently Asked Questions](faq/) 35 | -------------------------------------------------------------------------------- /extras/website/learn/introductory-tutorial/images/by-nc-sa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/introductory-tutorial/images/by-nc-sa.png -------------------------------------------------------------------------------- /extras/website/learn/introductory-tutorial/images/fig1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/introductory-tutorial/images/fig1.jpg -------------------------------------------------------------------------------- /extras/website/learn/introductory-tutorial/images/fig2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/introductory-tutorial/images/fig2.jpg -------------------------------------------------------------------------------- /extras/website/learn/introductory-tutorial/images/fig3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/introductory-tutorial/images/fig3.jpg -------------------------------------------------------------------------------- /extras/website/learn/introductory-tutorial/images/fig4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/introductory-tutorial/images/fig4.jpg -------------------------------------------------------------------------------- /extras/website/learn/introductory-tutorial/images/fig5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/introductory-tutorial/images/fig5.jpg -------------------------------------------------------------------------------- /extras/website/learn/introductory-tutorial/images/fig6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/introductory-tutorial/images/fig6.jpg -------------------------------------------------------------------------------- /extras/website/learn/introductory-tutorial/images/fig7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/introductory-tutorial/images/fig7.jpg -------------------------------------------------------------------------------- /extras/website/learn/introductory-tutorial/images/fig8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/introductory-tutorial/images/fig8.jpg -------------------------------------------------------------------------------- /extras/website/learn/introductory-tutorial/images/fig9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/introductory-tutorial/images/fig9.jpg -------------------------------------------------------------------------------- /extras/website/learn/output_circuits/images/advanced_filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/output_circuits/images/advanced_filter.png -------------------------------------------------------------------------------- /extras/website/learn/under-the-hood/images/Mozzi-system.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sensorium/Mozzi/8da74b9216bb808968cb89c15142fbebeea7b2ec/extras/website/learn/under-the-hood/images/Mozzi-system.jpg -------------------------------------------------------------------------------- /extras/website/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "lockfileVersion": 1 4 | } 5 | -------------------------------------------------------------------------------- /extras/website/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "mozzi wepage", 3 | "version": "0.1.0", 4 | "repository": "sensorium.github.io", 5 | "readme": "", 6 | "license": "cc-nc-sa" 7 | } 8 | -------------------------------------------------------------------------------- /internal/Readme.md: -------------------------------------------------------------------------------- 1 | # About this directory 2 | 3 | These files are part of the Mozzi project, but not meant for direct inclusion by the user. Functions and macros in here may be subject to change without notice. 4 | 5 | -------------------------------------------------------------------------------- /internal/disable_2pinmode_on_github_workflow.h: -------------------------------------------------------------------------------- 1 | /* This purely internal header takes care of disabling stereo mode when on a github runner. Intended to be used 2 | * on platforms that don't support stereo, allowing the compilation to proceed without error. */ 3 | 4 | #if __has_include("../detect_github_runner.h") // the marker file we added inside the workflow 5 | // do nothing, if this isn't present 6 | # if defined(MOZZI_AUDIO_MODE) && MOZZI_IS(MOZZI_AUDIO_MODE, MOZZI_OUTPUT_2PIN_PWM) 7 | # undef MOZZI_AUDIO_MODE 8 | # warning Disabled 2pin pwm output mode on github runner 9 | # endif 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /internal/disable_stereo_on_github_workflow.h: -------------------------------------------------------------------------------- 1 | /* This purely internal header takes care of disabling stereo mode when on a github runner. Intended to be used 2 | * on platforms that don't support stereo, allowing the compilation to proceed without error. */ 3 | 4 | #if __has_include("../detect_github_runner.h") // the marker file we added inside the workflow 5 | // do nothing, if this isn't present 6 | # if defined(MOZZI_AUDIO_CHANNELS) && (MOZZI_AUDIO_CHANNELS > 1) 7 | # define GITHUB_RUNNER_ACCEPT_STEREO_IN_MONO 8 | # undef MOZZI_AUDIO_CHANNELS 9 | # define MOZZI_AUDIO_CHANNELS MOZZI_MONO 10 | # warning Disabled stereo compilation while in Github runner. 11 | # endif 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /internal/mozzi_rand_p.h: -------------------------------------------------------------------------------- 1 | /* 2 | * mozzi_rand_p.h 3 | * 4 | * This file is part of Mozzi. 5 | * 6 | * Copyright 2012-2024 Tim Barrass and the Mozzi Team 7 | * 8 | * Mozzi is licensed under the GNU Lesser General Public Licence (LGPL) Version 2.1 or later. 9 | * 10 | */ 11 | 12 | #ifndef MOZZI_RAND_P_H 13 | #define MOZZI_RAND_P_H 14 | 15 | namespace MozziPrivate { 16 | 17 | class MozziRandPrivate { 18 | friend void randSeed(); 19 | friend void randSeed(uint32_t); 20 | friend uint32_t xorshift96(); 21 | static uint32_t x; 22 | static uint32_t y; 23 | static uint32_t z; 24 | public: 25 | static uint32_t xorshift96() { 26 | //period 2^96-1 27 | uint32_t t; 28 | 29 | x ^= x << 16; 30 | x ^= x >> 5; 31 | x ^= x << 1; 32 | 33 | t = x; 34 | x = y; 35 | y = z; 36 | z = t ^ x ^ y; 37 | 38 | return z; 39 | } 40 | static void autoSeed(); // defined in hardware specific MozziGuts_impl-files 41 | }; 42 | 43 | inline void randSeed(uint32_t seed) { MozziRandPrivate::x = seed; }; 44 | 45 | } 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | name=Mozzi 2 | version=2.0.2 3 | author=Tim Barrass and contributors as documented in source, and at https://github.com/sensorium/Mozzi/graphs/contributors 4 | maintainer=Tim Barrass 5 | sentence=Sound synthesis library for Arduino 6 | paragraph=With Mozzi, you can construct sounds using familiar synthesis units like oscillators, delays, filters and envelopes. 7 | category=Signal Input/Output 8 | url=https://sensorium.github.io/Mozzi/ 9 | architectures=* 10 | dot_a_linkage=false 11 | includes=Mozzi.h 12 | depends=FixMath 13 | -------------------------------------------------------------------------------- /samples/empty_0_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef EMPTY_0_H_ 2 | #define EMPTY_0_H_ 3 | 4 | #include 5 | #include "mozzi_pgmspace.h" 6 | 7 | #define EMPTY_0_NUM_CELLS 0 8 | #define EMPTY_0_SAMPLERATE 16384 9 | 10 | CONSTTABLE_STORAGE(int8_t) EMPTY_0_DATA [] = { }; 11 | 12 | #endif /* EMPTY_0_H_ */ 13 | -------------------------------------------------------------------------------- /tables/cos256_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef COS256_H_ 2 | #define COS256_H_ 3 | 4 | /** 5 | This table is part of Mozzi 6 | Generated with extras/python/make_standard_tables.py 7 | */ 8 | 9 | #include 10 | #include "mozzi_pgmspace.h" 11 | 12 | #define COS256_NUM_CELLS 256 13 | #define COS256_SAMPLERATE 256 14 | 15 | CONSTTABLE_STORAGE(int8_t) COS256_DATA [] = { 16 | -127, -127, -127, -127, -126, -126, -126, -125, -125, -124, -123, -122, -122, 17 | -121, -120, -118, -117, -116, -115, -113, -112, -111, -109, -107, -106, -104, 18 | -102, -100, -98, -96, -94, -92, -90, -88, -85, -83, -81, -78, -76, -73, -71, 19 | -68, -65, -63, -60, -57, -54, -51, -49, -46, -43, -40, -37, -34, -31, -28, -25, 20 | -22, -19, -16, -12, -9, -6, -3, 0, 3, 6, 9, 12, 16, 19, 22, 25, 28, 31, 34, 37, 21 | 40, 43, 46, 49, 51, 54, 57, 60, 63, 65, 68, 71, 73, 76, 78, 81, 83, 85, 88, 90, 22 | 92, 94, 96, 98, 100, 102, 104, 106, 107, 109, 111, 112, 113, 115, 116, 117, 118, 23 | 120, 121, 122, 122, 123, 124, 125, 125, 126, 126, 126, 127, 127, 127, 127, 127, 24 | 127, 127, 126, 126, 126, 125, 125, 124, 123, 122, 122, 121, 120, 118, 117, 116, 25 | 115, 113, 112, 111, 109, 107, 106, 104, 102, 100, 98, 96, 94, 92, 90, 88, 85, 26 | 83, 81, 78, 76, 73, 71, 68, 65, 63, 60, 57, 54, 51, 49, 46, 43, 40, 37, 34, 31, 27 | 28, 25, 22, 19, 16, 12, 9, 6, 3, 0, -3, -6, -9, -12, -16, -19, -22, -25, -28, 28 | -31, -34, -37, -40, -43, -46, -49, -51, -54, -57, -60, -63, -65, -68, -71, -73, 29 | -76, -78, -81, -83, -85, -88, -90, -92, -94, -96, -98, -100, -102, -104, -106, 30 | -107, -109, -111, -112, -113, -115, -116, -117, -118, -120, -121, -122, -122, 31 | -123, -124, -125, -125, -126, -126, -126, -127, -127, -127, 32 | }; 33 | 34 | #endif /* COS256_H_ */ 35 | -------------------------------------------------------------------------------- /tables/cosphase256_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef COSPHASE256_H_ 2 | #define COSPHASE256_H_ 3 | 4 | /** 5 | This table is part of Mozzi 6 | Generated with extras/python/make_standard_tables.py 7 | */ 8 | 9 | #include 10 | #include "mozzi_pgmspace.h" 11 | 12 | #define COSPHASE256_NUM_CELLS 256 13 | #define COSPHASE256_SAMPLERATE 256 14 | 15 | CONSTTABLE_STORAGE(int8_t) COSPHASE256_DATA [] = { 16 | 127, 127, 127, 127, 126, 126, 126, 125, 125, 124, 123, 122, 122, 121, 120, 118, 17 | 117, 116, 115, 113, 112, 111, 109, 107, 106, 104, 102, 100, 98, 96, 94, 92, 90, 18 | 88, 85, 83, 81, 78, 76, 73, 71, 68, 65, 63, 60, 57, 54, 51, 49, 46, 43, 40, 37, 19 | 34, 31, 28, 25, 22, 19, 16, 12, 9, 6, 3, 0, -3, -6, -9, -12, -16, -19, -22, -25, 20 | -28, -31, -34, -37, -40, -43, -46, -49, -51, -54, -57, -60, -63, -65, -68, -71, 21 | -73, -76, -78, -81, -83, -85, -88, -90, -92, -94, -96, -98, -100, -102, -104, 22 | -106, -107, -109, -111, -112, -113, -115, -116, -117, -118, -120, -121, -122, 23 | -122, -123, -124, -125, -125, -126, -126, -126, -127, -127, -127, -127, -127, 24 | -127, -127, -126, -126, -126, -125, -125, -124, -123, -122, -122, -121, -120, 25 | -118, -117, -116, -115, -113, -112, -111, -109, -107, -106, -104, -102, -100, 26 | -98, -96, -94, -92, -90, -88, -85, -83, -81, -78, -76, -73, -71, -68, -65, -63, 27 | -60, -57, -54, -51, -49, -46, -43, -40, -37, -34, -31, -28, -25, -22, -19, -16, 28 | -12, -9, -6, -3, 0, 3, 6, 9, 12, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 29 | 51, 54, 57, 60, 63, 65, 68, 71, 73, 76, 78, 81, 83, 85, 88, 90, 92, 94, 96, 98, 30 | 100, 102, 104, 106, 107, 109, 111, 112, 113, 115, 116, 117, 118, 120, 121, 122, 31 | 122, 123, 124, 125, 125, 126, 126, 126, 127, 127, 127, 32 | }; 33 | 34 | #endif /* COSPHASE256_H_ */ 35 | -------------------------------------------------------------------------------- /tables/halfsin256_uint8.h: -------------------------------------------------------------------------------- 1 | #ifndef HALFSIN256_H_ 2 | #define HALFSIN256_H_ 3 | 4 | #include 5 | #include "mozzi_pgmspace.h" 6 | 7 | #define HALFSIN256_NUM_CELLS 256 8 | #define HALFSIN256_SAMPLERATE 256 9 | 10 | CONSTTABLE_STORAGE(int8_t) HALFSIN256_DATA [] = 11 | { 12 | 0, 3, 6, 9, 13, 16, 19, 22, 25, 28, 31, 13 | 34, 38, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 14 | 95, 98, 101, 104, 107, 109, 112, 115, 118, 121, 123, 126, 129, 132, 134, 137, 15 | 140, 142, 145, 147, 150, 152, 155, 157, 160, 162, 165, 167, 170, 172, 174, 177, 16 | 179, 181, 183, 185, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 207, 209, 17 | 211, 213, 215, 216, 218, 220, 221, 223, 224, 226, 227, 229, 230, 231, 233, 234, 18 | 235, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 248, 249, 250, 19 | 250, 251, 252, 252, 253, 253, 254, 254, 254, 255, 255, 255, 256, 256, 256, 256, 20 | 256, 256, 256, 256, 256, 256, 256, 255, 255, 255, 254, 254, 254, 253, 253, 252, 21 | 252, 251, 250, 250, 249, 248, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 22 | 238, 237, 235, 234, 233, 231, 230, 229, 227, 226, 224, 223, 221, 220, 218, 216, 23 | 215, 213, 211, 209, 207, 206, 204, 202, 200, 198, 196, 194, 192, 190, 188, 185, 24 | 183, 181, 179, 177, 174, 172, 170, 167, 165, 162, 160, 157, 155, 152, 150, 147, 25 | 145, 142, 140, 137, 134, 132, 129, 126, 123, 121, 118, 115, 112, 109, 107, 104, 26 | 101, 98, 95, 92, 89, 86, 83, 80, 77, 74, 71, 68, 65, 62, 59, 56, 53, 50, 47, 44, 27 | 41, 38, 34, 31, 28, 25, 22, 19, 16, 13, 9, 6, 3, 28 | }; 29 | 30 | #endif /* HALFSIN256_H_ */ 31 | -------------------------------------------------------------------------------- /tables/phasor256_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef PHASOR256_H_ 2 | #define PHASOR256_H_ 3 | 4 | #include 5 | #include "mozzi_pgmspace.h" 6 | 7 | /* ramp 8 | */ 9 | 10 | #define PHASOR256_NUM_CELLS 256 11 | #define PHASOR256_SAMPLERATE 256 12 | 13 | CONSTTABLE_STORAGE(int8_t) PHASOR256_DATA [] = 14 | { 15 | -128, -127, -127, -126, -124, -124, -122, 16 | -122, -120, -120, -118, -118, -116, -115, -115, -113, -113, -111, -110, -110, 17 | -108, -108, -106, -105, -105, -103, -103, -101, -101, -99, -99, -97, -97, -95, 18 | -95, -93, -93, -91, -91, -89, -89, -87, -87, -85, -84, -83, -82, -82, -80, -79, 19 | -78, -77, -76, -76, -74, -74, -72, -72, -70, -69, -69, -67, -67, -65, -65, -63, 20 | -62, -61, -60, -60, -58, -57, -56, -55, -54, -54, -52, -51, -51, -49, -49, -47, 21 | -46, -45, -45, -43, -43, -41, -41, -39, -39, -37, -37, -35, -34, -33, -33, -31, 22 | -31, -29, -29, -27, -26, -26, -24, -24, -22, -21, -21, -19, -18, -18, -16, -16, 23 | -14, -13, -13, -11, -11, -9, -8, -8, -6, -5, -5, -3, -3, -1, -1, 1, 1, 3, 3, 5, 24 | 5, 6, 8, 8, 10, 10, 11, 13, 13, 15, 16, 16, 18, 18, 20, 20, 22, 23, 23, 25, 26, 25 | 26, 28, 28, 30, 31, 31, 33, 33, 35, 35, 37, 38, 39, 39, 41, 41, 43, 44, 44, 46, 26 | 47, 47, 49, 49, 51, 52, 52, 54, 54, 56, 57, 57, 59, 59, 61, 61, 63, 63, 65, 66, 27 | 66, 68, 69, 69, 71, 71, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 28 | 86, 88, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 29 | 105, 105, 107, 108, 109, 110, 110, 112, 112, 114, 114, 116, 117, 117, 119, 119, 30 | 121, 121, 123, 123, 125, 126, 126, 31 | }; 32 | 33 | #endif /* PHASOR256_H_ */ -------------------------------------------------------------------------------- /tables/saw256_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef SAW256_H_ 2 | #define SAW256_H_ 3 | 4 | /** 5 | This table is part of Mozzi 6 | Generated with extras/python/make_standard_tables.py 7 | */ 8 | 9 | #include 10 | #include "mozzi_pgmspace.h" 11 | 12 | #define SAW256_NUM_CELLS 256 13 | #define SAW256_SAMPLERATE 256 14 | 15 | CONSTTABLE_STORAGE(int8_t) SAW256_DATA [] = { 16 | -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, 17 | -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, 18 | -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, 19 | -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, 20 | -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, 21 | -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, 22 | -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, 23 | -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, 24 | -5, -4, -3, -2, -1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 25 | 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 26 | 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 27 | 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 28 | 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 29 | 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 30 | 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 31 | }; 32 | 33 | #endif /* SAW256_H_ */ 34 | -------------------------------------------------------------------------------- /tables/sin256_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef SIN256_H_ 2 | #define SIN256_H_ 3 | 4 | /** 5 | This table is part of Mozzi 6 | Generated with extras/python/make_standard_tables.py 7 | */ 8 | 9 | #include 10 | #include "mozzi_pgmspace.h" 11 | 12 | #define SIN256_NUM_CELLS 256 13 | #define SIN256_SAMPLERATE 256 14 | 15 | CONSTTABLE_STORAGE(int8_t) SIN256_DATA [] = { 16 | 0, 3, 6, 9, 12, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 51, 54, 57, 60, 17 | 63, 65, 68, 71, 73, 76, 78, 81, 83, 85, 88, 90, 92, 94, 96, 98, 100, 102, 104, 18 | 106, 107, 109, 111, 112, 113, 115, 116, 117, 118, 120, 121, 122, 122, 123, 124, 19 | 125, 125, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127, 126, 126, 126, 125, 20 | 125, 124, 123, 122, 122, 121, 120, 118, 117, 116, 115, 113, 112, 111, 109, 107, 21 | 106, 104, 102, 100, 98, 96, 94, 92, 90, 88, 85, 83, 81, 78, 76, 73, 71, 68, 65, 22 | 63, 60, 57, 54, 51, 49, 46, 43, 40, 37, 34, 31, 28, 25, 22, 19, 16, 12, 9, 6, 3, 23 | 0, -3, -6, -9, -12, -16, -19, -22, -25, -28, -31, -34, -37, -40, -43, -46, -49, 24 | -51, -54, -57, -60, -63, -65, -68, -71, -73, -76, -78, -81, -83, -85, -88, -90, 25 | -92, -94, -96, -98, -100, -102, -104, -106, -107, -109, -111, -112, -113, -115, 26 | -116, -117, -118, -120, -121, -122, -122, -123, -124, -125, -125, -126, -126, 27 | -126, -127, -127, -127, -127, -127, -127, -127, -126, -126, -126, -125, -125, 28 | -124, -123, -122, -122, -121, -120, -118, -117, -116, -115, -113, -112, -111, 29 | -109, -107, -106, -104, -102, -100, -98, -96, -94, -92, -90, -88, -85, -83, -81, 30 | -78, -76, -73, -71, -68, -65, -63, -60, -57, -54, -51, -49, -46, -43, -40, -37, 31 | -34, -31, -28, -25, -22, -19, -16, -12, -9, -6, -3, 32 | }; 33 | 34 | #endif /* SIN256_H_ */ 35 | -------------------------------------------------------------------------------- /tables/uphasor256_uint8.h: -------------------------------------------------------------------------------- 1 | #ifndef UPHASOR256_H_ 2 | #define UPHASOR256_H_ 3 | 4 | #include 5 | #include "mozzi_pgmspace.h" 6 | 7 | /* ramp 8 | */ 9 | 10 | #define UPHASOR256_NUM_CELLS 256 11 | #define UPHASOR256_SAMPLERATE 256 12 | 13 | CONSTTABLE_STORAGE(int8_t) UPHASOR256_DATA [] = 14 | { 15 | 0,1,2,3,4,5,6,7,8,9, 16 | 10,11,12,13,14,15,16,17,18,19, 17 | 20,21,22,23,24,25,26,27,28,29, 18 | 30,31,32,33,34,35,36,37,38,39, 19 | 40,41,42,43,44,45,46,47,48,49, 20 | 50,51,52,53,54,55,56,57,58,59, 21 | 60,61,62,63,64,65,66,67,68,69, 22 | 70,71,72,73,74,75,76,77,78,79, 23 | 80,81,82,83,84,85,86,87,88,89, 24 | 90,91,92,93,94,95,96,97,98,99, 25 | 100,101,102,103,104,105,106,107,108,109, 26 | 110,111,112,113,114,115,116,117,118,119, 27 | 120,121,122,123,124,125,126,127,128,129, 28 | 130,131,132,133,134,135,136,137,138,139, 29 | 140,141,142,143,144,145,146,147,148,149, 30 | 150,151,152,153,154,155,156,157,158,159, 31 | 160,161,162,163,164,165,166,167,168,169, 32 | 170,171,172,173,174,175,176,177,178,179, 33 | 180,181,182,183,184,185,186,187,188,189, 34 | 190,191,192,193,194,195,196,197,198,199, 35 | 200,201,202,203,204,205,206,207,208,209, 36 | 210,211,212,213,214,215,216,217,218,219, 37 | 220,221,222,223,224,225,226,227,228,229, 38 | 230,231,232,233,234,235,236,237,238,239, 39 | 240,241,242,243,244,245,246,247,248,249, 40 | 250,251,252,253,254,255, 41 | }; 42 | 43 | #endif /* UPHASOR256_H_ */ 44 | -------------------------------------------------------------------------------- /tables/waveshape1_softclip_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef WAVESHAPE1_SOFTCLIP_H_ 2 | #define WAVESHAPE1_SOFTCLIP_H_ 3 | 4 | #include 5 | #include "mozzi_pgmspace.h" 6 | 7 | /* table for waveshaper to impose soft clipping 8 | */ 9 | 10 | #define WAVESHAPE1_SOFTCLIP_NUM_CELLS 256 11 | #define WAVESHAPE1_SOFTCLIP_SAMPLERATE 256 12 | 13 | CONSTTABLE_STORAGE(int8_t) WAVESHAPE1_SOFTCLIP_DATA [] = 14 | { 15 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 16 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 17 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 18 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 19 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 20 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 21 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 22 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 23 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 24 | -127, -127, -126, -127, -126, -125, -124, -123, -121, -120, -118, -116, 25 | -111, -108, -102, -94, -80, -62, -41, -17, 6, 31, 53, 72, 26 | 87, 99, 107, 112, 116, 118, 119, 121, 122, 123, 124, 125, 27 | 126, 126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 28 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 29 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 30 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 31 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 32 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 33 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 34 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 35 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 36 | 127, 127, 127, 127, 37 | }; 38 | 39 | #endif /* WAVESHAPE1_SOFTCLIP_H_ */ 40 | -------------------------------------------------------------------------------- /tables/waveshape2_softerclip_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef WAVESHAPE2_SOFTERCLIP_H_ 2 | #define WAVESHAPE2_SOFTERCLIP_H_ 3 | 4 | #include 5 | #include "mozzi_pgmspace.h" 6 | 7 | /* table for waveshaper to impose softer clipping 8 | */ 9 | 10 | #define WAVESHAPE2_SOFTERCLIP_NUM_CELLS 256 11 | #define WAVESHAPE2_SOFTERCLIP_SAMPLERATE 256 12 | 13 | CONSTTABLE_STORAGE(int8_t) WAVESHAPE2_SOFTERCLIP_DATA [] = 14 | { 15 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 16 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 17 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 18 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 19 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, 20 | -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, -126, -126, 21 | -125, -124, -124, -123, -122, -121, -120, -119, -118, -117, -115, -114, 22 | -112, -111, -109, -108, -106, -104, -102, -100, -98, -96, -94, -92, 23 | -90, -88, -85, -83, -81, -78, -76, -73, -71, -68, -65, -63, 24 | -60, -57, -54, -51, -48, -46, -43, -40, -37, -34, -31, -28, 25 | -24, -21, -18, -15, -12, -9, -6, -3, 0, 3, 6, 9, 26 | 12, 15, 18, 21, 24, 28, 31, 34, 37, 40, 43, 46, 27 | 48, 51, 54, 57, 60, 63, 65, 68, 71, 73, 76, 78, 28 | 81, 83, 85, 88, 90, 92, 94, 96, 98, 100, 102, 104, 29 | 106, 108, 109, 111, 112, 114, 115, 117, 118, 119, 120, 121, 30 | 122, 123, 124, 124, 125, 126, 126, 127, 127, 127, 127, 127, 31 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 32 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 33 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 34 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 35 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 36 | 127, 127, 127, 127, 37 | }; 38 | 39 | #endif /* WAVESHAPE2_SOFTERCLIP_H_ */ 40 | -------------------------------------------------------------------------------- /tables/waveshape_chebyshev_3rd_256_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef CHEBYSHEV_3RD_256_H_ 2 | #define CHEBYSHEV_3RD_256_H_ 3 | 4 | #include 5 | #include "mozzi_pgmspace.h" 6 | 7 | /* table for waveshaper using chebyshev polynomials 8 | */ 9 | 10 | #define CHEBYSHEV_3RD_256_NUM_CELLS 256 11 | CONSTTABLE_STORAGE(int8_t) CHEBYSHEV_3RD_256_DATA [] = 12 | { 13 | -127, -119, -110, -101, -93, -85, -77, -69, -61, -54, -47, -40, 14 | -33, -26, -19, -13, -6, 0, 5, 10, 16, 21, 27, 32, 15 | 37, 42, 46, 51, 55, 60, 64, 68, 71, 75, 79, 82, 16 | 85, 89, 92, 94, 97, 100, 102, 105, 107, 109, 111, 113, 17 | 114, 116, 118, 119, 120, 122, 123, 124, 124, 125, 126, 126, 18 | 127, 127, 127, 127, 127, 127, 127, 127, 127, 126, 126, 125, 19 | 125, 124, 123, 122, 121, 120, 119, 118, 116, 115, 114, 112, 20 | 111, 109, 107, 106, 104, 102, 100, 98, 96, 94, 92, 90, 21 | 87, 85, 83, 81, 78, 76, 73, 71, 68, 66, 63, 60, 22 | 58, 55, 52, 49, 46, 44, 41, 38, 35, 32, 29, 26, 23 | 23, 20, 17, 14, 11, 8, 5, 2, 0, -2, -5, -8, 24 | -11, -14, -17, -20, -23, -26, -29, -32, -35, -38, -41, -44, 25 | -46, -49, -52, -55, -58, -60, -63, -66, -68, -71, -73, -76, 26 | -78, -81, -83, -85, -87, -90, -92, -94, -96, -98, -100, -102, 27 | -104, -106, -107, -109, -111, -112, -114, -115, -116, -118, -119, -120, 28 | -121, -122, -123, -124, -125, -125, -126, -126, -127, -127, -127, -127, 29 | -127, -127, -127, -127, -127, -126, -126, -125, -124, -124, -123, -122, 30 | -120, -119, -118, -116, -114, -113, -111, -109, -107, -105, -102, -100, 31 | -97, -94, -92, -89, -85, -82, -79, -75, -71, -68, -64, -60, 32 | -55, -51, -46, -42, -37, -32, -27, -21, -16, -10, -5, 0, 33 | 6, 13, 19, 26, 33, 40, 47, 54, 61, 69, 77, 85, 34 | 93, 101, 110, 119, 35 | }; 36 | 37 | #endif /* CHEBYSHEV_3RD_256_H_ */ 38 | -------------------------------------------------------------------------------- /tables/waveshape_chebyshev_4th_256_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef CHEBYSHEV_4TH_256_H_ 2 | #define CHEBYSHEV_4TH_256_H_ 3 | 4 | #include 5 | #include "mozzi_pgmspace.h" 6 | 7 | /* table for waveshaper using chebyshev polynomials 8 | */ 9 | 10 | #define CHEBYSHEV_4TH_256_NUM_CELLS 256 11 | CONSTTABLE_STORAGE(int8_t) CHEBYSHEV_4TH_256_DATA [] = 12 | { 13 | 127, 112, 97, 82, 68, 55, 42, 30, 19, 7, -2, -12, 14 | -22, -31, -39, -48, -55, -62, -69, -76, -82, -87, -92, -97, 15 | -101, -105, -109, -112, -115, -118, -120, -122, -123, -125, -126, -127, 16 | -127, -127, -127, -127, -127, -126, -125, -124, -123, -121, -119, -117, 17 | -115, -113, -111, -108, -105, -102, -99, -96, -93, -90, -86, -83, 18 | -79, -75, -71, -67, -63, -59, -55, -51, -47, -43, -39, -34, 19 | -30, -26, -21, -17, -13, -8, -4, 0, 4, 8, 12, 17, 20 | 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 60, 64, 21 | 67, 71, 74, 78, 81, 84, 87, 90, 93, 96, 98, 101, 22 | 103, 105, 108, 110, 112, 114, 115, 117, 119, 120, 121, 122, 23 | 124, 124, 125, 126, 126, 127, 127, 127, 127, 127, 127, 127, 24 | 126, 126, 125, 124, 124, 122, 121, 120, 119, 117, 115, 114, 25 | 112, 110, 108, 105, 103, 101, 98, 96, 93, 90, 87, 84, 26 | 81, 78, 74, 71, 67, 64, 60, 57, 53, 49, 45, 41, 27 | 37, 33, 29, 25, 21, 17, 12, 8, 4, 0, -4, -8, 28 | -13, -17, -21, -26, -30, -34, -39, -43, -47, -51, -55, -59, 29 | -63, -67, -71, -75, -79, -83, -86, -90, -93, -96, -99, -102, 30 | -105, -108, -111, -113, -115, -117, -119, -121, -123, -124, -125, -126, 31 | -127, -127, -127, -127, -127, -127, -126, -125, -123, -122, -120, -118, 32 | -115, -112, -109, -105, -101, -97, -92, -87, -82, -76, -69, -62, 33 | -55, -48, -39, -31, -22, -12, -2, 7, 19, 30, 42, 55, 34 | 68, 82, 97, 112, 35 | }; 36 | 37 | #endif /* CHEBYSHEV_4TH_256_H_ */ 38 | -------------------------------------------------------------------------------- /tables/waveshape_chebyshev_5th_256_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef CHEBYSHEV_5TH_256_H_ 2 | #define CHEBYSHEV_5TH_256_H_ 3 | 4 | #include 5 | #include "mozzi_pgmspace.h" 6 | 7 | /* table for waveshaper using chebyshev polynomials 8 | */ 9 | 10 | #define CHEBYSHEV_5TH_256_NUM_CELLS 256 11 | CONSTTABLE_STORAGE(int8_t) CHEBYSHEV_5TH_256_DATA [] = 12 | { 13 | -127, -103, -81, -59, -39, -21, -4, 11, 26, 39, 52, 63, 14 | 73, 82, 90, 98, 104, 110, 114, 118, 121, 124, 126, 127, 15 | 127, 127, 127, 126, 124, 122, 120, 117, 113, 110, 106, 102, 16 | 97, 92, 87, 82, 77, 71, 66, 60, 54, 48, 42, 35, 17 | 29, 23, 17, 10, 4, -1, -7, -13, -19, -25, -31, -37, 18 | -42, -48, -53, -58, -63, -68, -73, -78, -82, -86, -90, -94, 19 | -98, -101, -105, -108, -111, -113, -116, -118, -120, -121, -123, -124, 20 | -125, -126, -127, -127, -127, -127, -127, -127, -126, -125, -124, -123, 21 | -121, -120, -118, -116, -114, -111, -109, -106, -103, -100, -97, -93, 22 | -90, -86, -82, -79, -75, -70, -66, -62, -57, -53, -48, -44, 23 | -39, -34, -29, -24, -19, -14, -9, -4, 0, 4, 9, 14, 24 | 19, 24, 29, 34, 39, 44, 48, 53, 57, 62, 66, 70, 25 | 75, 79, 82, 86, 90, 93, 97, 100, 103, 106, 109, 111, 26 | 114, 116, 118, 120, 121, 123, 124, 125, 126, 127, 127, 127, 27 | 127, 127, 127, 126, 125, 124, 123, 121, 120, 118, 116, 113, 28 | 111, 108, 105, 101, 98, 94, 90, 86, 82, 78, 73, 68, 29 | 63, 58, 53, 48, 42, 37, 31, 25, 19, 13, 7, 1, 30 | -4, -10, -17, -23, -29, -35, -42, -48, -54, -60, -66, -71, 31 | -77, -82, -87, -92, -97, -102, -106, -110, -113, -117, -120, -122, 32 | -124, -126, -127, -127, -127, -127, -126, -124, -121, -118, -114, -110, 33 | -104, -98, -90, -82, -73, -63, -52, -39, -26, -11, 4, 21, 34 | 39, 59, 81, 103, 35 | }; 36 | 37 | #endif /* CHEBYSHEV_5TH_256_H_ */ 38 | -------------------------------------------------------------------------------- /tables/waveshape_chebyshev_6th_256_int8.h: -------------------------------------------------------------------------------- 1 | #ifndef CHEBYSHEV_6TH_256_H_ 2 | #define CHEBYSHEV_6TH_256_H_ 3 | 4 | #include 5 | #include "mozzi_pgmspace.h" 6 | 7 | /* table for waveshaper using chebyshev polynomials 8 | */ 9 | 10 | #define CHEBYSHEV_6TH_256_NUM_CELLS 256 11 | CONSTTABLE_STORAGE(int8_t) CHEBYSHEV_6TH_256_DATA [] = 12 | { 13 | 127, 93, 62, 34, 8, -14, -34, -52, -68, -81, -93, -102, 14 | -110, -117, -121, -125, -127, -127, -127, -126, -123, -120, -116, -111, 15 | -106, -100, -93, -86, -79, -71, -63, -55, -46, -38, -29, -21, 16 | -12, -4, 4, 12, 20, 28, 36, 44, 51, 59, 65, 72, 17 | 78, 84, 90, 95, 100, 104, 108, 112, 115, 118, 121, 123, 18 | 124, 126, 127, 127, 127, 127, 127, 126, 125, 123, 121, 119, 19 | 116, 113, 110, 107, 103, 99, 95, 90, 85, 80, 75, 70, 20 | 65, 59, 53, 48, 42, 36, 30, 24, 17, 11, 5, 0, 21 | -6, -13, -19, -25, -31, -37, -43, -48, -54, -59, -65, -70, 22 | -75, -80, -84, -89, -93, -97, -101, -104, -108, -111, -114, -116, 23 | -119, -121, -122, -124, -125, -126, -127, -127, -127, -127, -127, -126, 24 | -125, -124, -122, -121, -119, -116, -114, -111, -108, -104, -101, -97, 25 | -93, -89, -84, -80, -75, -70, -65, -59, -54, -48, -43, -37, 26 | -31, -25, -19, -13, -6, 0, 5, 11, 17, 24, 30, 36, 27 | 42, 48, 53, 59, 65, 70, 75, 80, 85, 90, 95, 99, 28 | 103, 107, 110, 113, 116, 119, 121, 123, 125, 126, 127, 127, 29 | 127, 127, 127, 126, 124, 123, 121, 118, 115, 112, 108, 104, 30 | 100, 95, 90, 84, 78, 72, 65, 59, 51, 44, 36, 28, 31 | 20, 12, 4, -4, -12, -21, -29, -38, -46, -55, -63, -71, 32 | -79, -86, -93, -100, -106, -111, -116, -120, -123, -126, -127, -127, 33 | -127, -125, -121, -117, -110, -102, -93, -81, -68, -52, -34, -14, 34 | 8, 34, 62, 93, 35 | }; 36 | 37 | #endif /* CHEBYSHEV_6TH_256_H_ */ 38 | -------------------------------------------------------------------------------- /utility/TimerOne.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Interrupt and PWM utilities for 16 bit Timer3 on ATmega168/328 3 | * Original code by Jesse Tane for http://labs.ideo.com August 2008 4 | * Modified March 2009 by Jérôme Despatis and Jesse Tane for ATmega328 support 5 | * Modified June 2009 by Michael Polli and Jesse Tane to fix a bug in setPeriod() which caused the timer to stop 6 | * Modified Oct 2009 by Dan Clemens to work with timer3 of the ATMega1280 or Arduino Mega 7 | * Modified April 2012 by Paul Stoffregen 8 | * 9 | * This is free software. You can redistribute it and/or modify it under 10 | * the terms of Creative Commons Attribution 3.0 United States License. 11 | * To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/us/ 12 | * or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. 13 | * 14 | */ 15 | 16 | // Added by TB2014 for Mozzi library, to hide code from Teensy 3.1 17 | #if defined (__AVR__) 18 | 19 | #include "TimerOne.h" 20 | 21 | TimerOne Timer1; // preinstatiate 22 | 23 | unsigned int TimerOne::pwmPeriod = 0; 24 | unsigned char TimerOne::clockSelectBits = 0; 25 | 26 | // TB 15-2-2013 removed this and added the more direct version in MozziGuts.cpp 27 | // saves about 1us per ISR, at 16384Hz that's 16ms per second saved. Seems worth it. 28 | /* 29 | // interrupt service routine that wraps a user defined function supplied by attachInterrupt 30 | ISR(TIMER1_OVF_vect) 31 | { //SET_PIN13_HIGH; 32 | Timer1.isrCallback(); 33 | //SET_PIN13_LOW; // 2us 34 | } 35 | */ 36 | 37 | #endif 38 | --------------------------------------------------------------------------------