Waveform Generator (windows only)

 

Waveform generator is a (Windows only) program for generating Single Cycle Waveforms (SCW) that you can export as wav-files. These wav-files can then be loaded into samplers and synthesizers where they can be used as they are, or used as building blocks for creating wave-tables. All waveforms generated by this software are generated/processed using 64 bit floating-point arithmetic, and this 64 bit precision is used throughout the entire signal path to ensure both high accuracy, and to ensure no clipping will occur. Beside a special/proprietary format intended for synth builders files can be exported as 16/24 bit at 44.1 to 96 KHz, with between 128 and 2048 samples per waveform. The waveforms are generated using different "modules" in form of: 22 basic waveforms (including hand-drawn, basic/advanced additive and waveforms based on mathematical expressions), 17 phase-converters (manipulating the phase-value fed into the waveform-functions), 27 value-converters (manipulating the output from the waveform functions), and lastly 13 operators (combining the output from up to 4 waveforms). All of these "modules" are both described in the +200 page manual that is embedded in the installer (can be accessed via the "Help" menu within the program), and in the tutorial videos listed below. Since version 1.3 the program can also generate wavetables containing 2-256 slots.

License agreement:
The program is free of charge when used for personal use, to generate waveforms that you use in your own music, patch- and sound-collection you make (whether that music is commercial or not). However if you like this software, please consider making a donation via PayPal to show your appreciation for all the hours I have spend creating it. The about-box in the software contains a "Donation" button that will take you directly to the donation-site, likewise here at the website you will also find a "Donation button".

If you need to get in contact, I can be reached at this address: pelle[at]infinite-noise[dot]com

Tutorial videos

The installer comes with a +200 page manual bundled with the program, that can be accessed via the help menu within the program. Choosing the "Manual" menu-item will open the manual (pdf-file) in the program you have installed for viewing pdf-files. Beside this manual I have recorded a few videos available at YouTube, that can be accessed via the following links. These first 8 videos have all been recorded for the version 1.0 release, so some things might have change since recording them. Further below there are links to videos recorded for specific version releases, describing whats new/changed in those releases.
I plan to release a video of each update of the program, describing what is new and what have changed in each update:

Download and donation

Full installer for version 1.5.1 can be downloaded here

Naturally its optional, but if you like this software and want to show your appreciation by making a donation, the following icon will take you to the Paypal-payment site where you can make a donation (please remark it will say Infinite-Noise).

 

 

History

Version 1.5.1 (July 9th 2023)

  • Due to a bug in the version-check code, version 1.4 was skipped (and in stead released as 1.5.1).
  • Implemented (simple) playback of wavetables.
  • Wavetables can now be imported from audio-files (you need to specify number of samples per slot, or number of slots).
  • Audio wavetables can also be imported into waveform tree-view, as a new folder where each slot is imported as waveform.
  • Added support to import *.AIFF and *.FLAC audio-files (previous versions only supported import of *.WAV files).
  • Also added support to import of raw wavetable (*.RWT) files.
  • Multiple slots (selected by the user) can now be imported from another wavetable, into the wavetable being edited.
  • A single slot (selected by the user) can now be loaded into a waveform (advanced, partial or compound).
  • Wavetable thumbnails that takes more than 200 ms to generate are now saved-to/loaded-from the database.
  • Wavetable info is not saved to-/loaded from database, so it can be displayed without loading/parsing wavetable-data from database.
  • Reduced the amount to wavetable data that needs to be loaded when opening a database (content loading is delayed until needed).
  • Wavetable tree-view will "gray-out" during certain operations (to indicate program is "busy").
  • Added new setting to de-cache wavetable data for large wavetables (program may be slower, but require less memory).
  • Individual- or All slots of a wavetable can now be converted/resampled into basic-additive waveforms.
  • Individual non-intermediate or All slots of a wavetable can now be converted/resampled into hand-drawn waveforms.
  • Added new angle-degrees setting, used when reducing "linear" samples in hand-drawn waveform.
  • Form for hand-drawing waveforms now uses new angle-degrees setting when reducing hand-drawn sections.
  • When completing a draw operation for a hand-drawn waveforms it will try to reduce the amount of data stored for smoothed draw-sections.
  • In settings you can activate threaded generation of expression-based wavetable slots.
  • Removed 32 slot restriction, when generating wave-table slots based on expression-based waveform.
  • When adding folders or waveforms/wavetables to tree-view it will automatically scroll to added item.
  • Added tree-view context-menu to set (change) author for selected waveform/wavetable or selected folder (including all sub folders and waveform/wavetables).
  • Added two new variant values ("90° Norm", "90° Rev") to the Exponential phase-converter.
  • The form for compound-waveforms now also contains an illustration showing the "output" of each of the 3 operators.
  • In settings the align-cursor for hand-drawn waveforms can now be set to be default on or off.
  • Holding SHIFT while pressing the "Shuffle" button, the slots of the wavetable will be ordered by harmonic complexity.
  • Minor change to how intermediate slots are added/removed when changing slot-count of a wavetable.
  • Testing database-connection, now also lists size of database file (beside number of waveforms/wavetable within the database).
  • Log now shows the time it took to open/switch database.
  • Minor performance improvements to waveforms and phase/value-converters (consume less memory).
  • Fixed: Bug regarding version-check (to check if a new version is available).
  • Fixed: Nasty bug when generating wavetable-illustration for wavetables with more than 64 non-intermediate slots.
  • Fixed: Issue with wrong (file-type) filter in open-file-dialog when importing waveforms.
  • Known issue: Cloning/exporting folders (nodes) with many/large wavetables, the program might appear as it has frozen (be patient).

Version 1.4 (Never released)

  • Due to a bug regarding version-check, version 1.4 was skipped !!!

Version 1.3 (August 7th 2022)

  • Now (finally) the program can be used to create- and export wavetables directly within the software.
  • Its now possible to import the content of one database into a folder of another database (hence users can share their creations).
  • In settings you can define a filter-strength (0-100) that is automatically used while importing wav-files (disabled if set to 0).
  • In settings you can define if the version check should ignore new release-versions (e.g. ignore the change from version 1.3.1 from 1.3.0). However it will not ignore major/minor changes (e.g. from 1.3.0 to 1.4.0)
  • In settings you can define negative phase-values should be be changed to positive (while phase is adjusted to compensate) when resampling a waveform into an additive.
  • In settings expanded number of (Waveform/Wavetable) presets from 3 to 6.
  • In the waveform-viewer/player filter-strength can be decreased with SHIFT+F1 and increased with SHIFT+F2 (e.g. if you want to toggle between 0 and 1, to see the raw waveform vs. the filtered waveform).
  • Likewise sample-count in the waveform-viewer/player can be decreased with SHIFT+F3 and increased with SHIFT+F4.
  • Added more waveforms (Sinc, SubSquare, SubSaw and SubTriangle) to the operators in the operator-waveform.
  • Added 7 more algorithms to the operator-waveform (bringing the total count to 18), and now an illustration of the algorithm is displayed to the right.
  • Added small waveform-illustrations to show each operator of the operator waveform.
  • Added small waveform-illustrations of the two advanced waveforms that makes up a partial-waveform.
  • Added illustrations to the two compound algorithms (variants), and added tool-tip to operator-indications.
  • Added new "Compare" operator to compound waveforms (chosing either the left- or the right- waveform based on compare-operation).
  • When editing an additive waveform as a CSV-file, decimals for phase-values are now allowed hence more precise values can be entered.
  • Added new "Convert negative to phase-changes" context menu-item to Basic additive waveforms (when editing harmonic-volume).
  • Added new "Clear remaining harmonies" context menu-item to Basic additive waveforms (when editing harmonic-volume).
  • Improved how quick a waveform can be resampled as a hand-drawn waveform (especially when using multiple/complex phase/value-converters).
  • Greatly improved how fast many waveforms can be "exported" if overwrite is disabled, and there is nothing to export.
  • When hand-drawing a waveform Phase-snapping is disabled while holding ALT, and Value-snapping is disabled while holding CTRL (reverts to selected preset/values when ALT/CTRL is released).
  • When hand-drawing, snapping at beginning/end of draw operation and snap to waveform can now be toggled on/off with CTRL+1, CTRL+2 and CTRL+3 (checkboxes are still available also).
  • Added alignment-lines to hand-drawn waveforms which can assist aligning start/end of drawing with other "points" of the waveform (can be toggled on/off).
  • Added new draw-tools to Hand-drawn waveforms: Normalize, Shift and Sign.
  • Added "Reduce" button to Hand-drawn waveforms, that will try to identify linear segments within hand-drawn (sampled) segments, which can greatly reduce the data that needs to be stored.
  • The Shift phase-converter now have a Variaion2 so the shift can either/both be set in Percent (Variation1) and/or Degrees (Variation2).
  • Added new "Lag-smooth" value-converter.
  • Exponential value-converter can now be set to affect the full range, or only positive values or only negative values.
  • Internal performance improvement to waveform normalizing for some of the waveforms.
  • Added the "%SI" indexer ("slot-index") and "%LI" ("loop-index") to Expression-waveforms.
  • Added 3 Macro's to expression-waveforms. When using "%m1", "%m2" and/or "%m3" within the expression other macros or slot-conditions, these will be replaced by the content of the macros.
  • Added 3 slot-conditions ("%sc1", %sc2" and %sc3"), which can be seen as "conditional-macrons" depending on the value of "%SI" or "%LI".
  • Added the "U" variable as an unified phase-value (0 to 1) in Expression-waveforms.
  • Added the "D" variable as a degrees phase-value (0 to 360) in Expression-waveforms.
  • Added "frac" function to Expression-waveforms (to remove integer part of a value).
  • A sample drift percentage can be used to add imperfection to exported waveforms (when waveform count is greater than 1).
  • Fixed: The "Abs" function was not working in Expression-waveforms.
  • Fixed: The waveform export-preset lets you select up to 2000 waveforms (to export into the same file), however internally this number was clamped to 1000 when exporting.
  • Fixed: RWF-files were not correctly normalized on export (when negative sample-values were further from the zero-line, than positive values).
  • Fixed: In some cases it was possible to edit some fields in the export-preset, that should be locked when exporting in RWF-format.
    • Fixed: Error was displayed when using exponential-notation in imported CSV for Basic-/Advanced-waveforms (could be observed when convertering "RandomWaveform12", in the folder "Random256", to a Basic-additive waveform).
  • Fixed: Unable to delete folder/waveform in tree-view after having dragged it to another sub-folder (had to reload the database in order to delete it).
  • Fixed: Pressing CTRL+F in the waveform tree-view (to add a folder) when a waveform was selected, the folder was added below the selected waveform in the tree-view, in stead of its parent-folder (it was however saved correctly in the database).
  • Fixed: When cloning partial-waveform values of Waveform1/2-frequencies (in split-section) were not cloned.
  • Fixed: Issue where the last few pixels of the active draw-section (in hand-drawn waveforms) in some cases looked wrong, while being drawn.
  • Fixed: In some cases a "PWM2 (sharp-edge)" phase-converter was changed into an "PWM (soft-edge)".
  • Various minor changes/fixes.

Version 1.2 (Match 20th 2021)

  • Added (FFT/low-pass) filtering on waveform-export and within the waveform-viewer/player (not enabled by default). The actual filtering is based on sample-rate, number of samples (per waveform) and selected filter-strength (1-100).
  • You can now choose the number of (full) waveforms that are exported into each file (defaults to 1), and you can also choose to apply an analog-factor that will add phase- and value-imperfections (each waveform will be applied a different amount of phase-/value change).
  • Waveforms can now be imported (as hand-drawn waveforms) directly from the context-menu in the tree-view. These will automatically be created as Advanced-waveforms.
  • Added "Save as" buttons to forms used for editing Advanced-, Partial- and Compound-waveforms (only active, when opened from the tree-view).
  • Added Waveform- and Volume-selection to each of the 4 Operators in the Operators Waveform (that was added in version 1.1).
  • Added new "Lag" draw-tool when editing hand-drawn waveforms (see it as a "different" smooth-effect).
  • Renamed "Octave" into "Pitch" in the viewer/player (and hand-drawn editor).
  • Added F2 as a play-back Stop-key in the viewer/player (as ESC will also close the form). Pressing F1 while in the viewer/player will simply (re)start play-back.
  • Changed the keys to increase/decrease volume into F5/F6, and changed the keys to increase/decrease pitch into (F7/F8), as the keys "1", "2", "3" and "4" can be used when entering values into the fields in the form.
  • The play-back start/stop-, volume- and pitch-keys used in the player/viewer can now also be used in the hand-drawn editor-form.
  • Choosing/entering number of samples in the viewer/player is not done with a combo-box, containing the same default elements as when using the waveform-export presets.
  • If you find them too distracting, tool-tips (hint-windows) can now be disabled in settings (they are enabled by default). However in most forms they can be toggled on/off by pressing SHIFT+CTRL+F12.
  • Fixed: Removed clicks when playing back waveforms at the lowest pitch-setting, and when changing pitch.
  • Fixed: When exporting using the "Last used" preset, the Normalization-factor was not saved.
  • Fixed: RWF-files were not Normalized on export (normalization locked at 100%).
  • Fixed: The form showing progress while/after exporting waveforms can now be closed with ESC or ENTER.
  • Fixed: If setup to "Remember volume", this now also works in the hand-drawn editor-form.

Version 1.1 (February 20th 2021)

  • Added automatic/manual version-check. By default the automatic version-check is enabled (performed once every 24 hours, and checked when starting the software). The automatic version-check will only report anything if a new version is available. When disabling the automatic check, the manual check will be enabled (menu-item in the Help-menu)
  • Added "History" menu-item, to the help-menu (containing this history-text).
  • Added a new “Operator” waveform, which is based on up to 4 (Sine) Operators with different frequencies, where the operators can either be mixed or used to modulate the phase of the other operators (based on the selected "Algorithm").
  • Added a new "Phase-Inject" value-converter, which injects the waveform selected by Variant-1 as phase-values into the basic-waveform.
  • Added Adv.waveform-1 and -2 -frequency to Partial-waveforms. If either is set to anything but its default value ("Prop." short for proportional), transition between split-sections will be disabled.
  • Minor improvement of randomize-logic in Partial-waveforms regarding the split-section.
  • Minor change to the “L/R Rev” variant of the “Exponential” phase-converter, to make its effect near PI (180°) symmetric.
  • Added accessible-name/description to the controls in many forms, to assist those needing these information (as of now to test if it will improve things, so not added in all forms).
  • To make things more easy for the blind and the vision-impaired, you can now press F1 in the various forms to open the waveform-viewer/player in stead of having to double-click the waveform-illustration. If enabled in settings, the viewer player will start play-back as soon as the form is opened, and the form can be closed with ESC (which will stop the play-back).
  • In the form for editing Partial waveforms you can now use SHIFT-F1 and SHIFT-F2 to view-/listen to the two advanced waveforms.
  • In the form for editing Compound waveforms you can now use SHIFT-F1 to SHIFT-F4 to view-/listen to the four partial waveforms.
  • In the form for editing Compound waveforms you can now use CTRL-F1 to SHIFT-F3 to view-/listen to the output from each of the 3 operators.
  • In the waveform-viewer/player you can now use the keys 1 and 2 to lower/raise the volume, and the keys 3 and 4 to lower/raise the octave. As in previous version P can be used to start play-back and S can be used to stop play-back.
  • When navigating the tree-view and a waveform is selected, you can use F1 or SPACE to open the viewer/player, and also a new menu-item was added to the waveform context-menu to view/play the waveform.
  • In forms containing a "Clear All"- or a "Clear"-button, CTRL-Backspace can now be used as a short-cut.
  • Generally added a few more keyboard short-cuts to the various forms to assist those who rather use the keyboard than the mouse, and updated the tab-order of the controls in some forms.
  • Basic-additive waveforms can now be edited as CSV-text (to make them accessible for the blind).
  • Advanced-additive waveforms can now be edited as CSV-text (to make them accessible for the blind).
  • A new "Ask 'are you sure' before closing certain forms"-setting have been added (defaults to enabled). If enabled, the forms that allows you to edit waveforms will ask before closing the form, when you close the form with anything else than the "OK"-button (as otherwise an accidental press on ESC would close the form, and you would loose your changes). In settings you can also chose if the answer to this question should default to Yes or No.
  • Likewise the settings-form will now always ask "if you are sure" when closing the settings-form with anything but "OK" (no matter the value of previous mentioned setting).
  • Reduced threshold of when to cache waveform-thumbnails from 200 ms to 100 ms. On slow computers it might use more memory, but will improve performance in the tree-view.
  • Fixed: When able, fraction volumes are now shown for negative values as well in Basic-additive waveforms (e.g. showing "(-1/4) -25.000%" in stead of simply "-25.000%").
  • Fixed: A few typo's. E.g. changed "Tangens" (Danish spelling) into "Tangent" (English spelling).

Version 1.0 (February 7th 2021)

  • First public release, with support for advanced-, partial- and compound-waveforms (build from: 22 basic-waveforms, 17 phase-converters, 27 value-converters and 13 operators).

Version 0.99 Alpha (2015-2020)

  • Worked on/off this project for a number of years (never released to anyone, but build my personal +25000 waveform database that I have been using myself).