Skip to content

Commit

Permalink
Merge branch 'v0.8.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
dromer committed Aug 7, 2023
2 parents 870c1fd + 02a2673 commit c9c4260
Show file tree
Hide file tree
Showing 41 changed files with 2,012 additions and 1,824 deletions.
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.7.0
current_version = 0.8.0

[bumpversion:file:setup.cfg]

Expand Down
12 changes: 11 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
CHANGELOG
=====

0.8.0
-----

* DPF: enumerated parameters
* DPF: special `__hv_dpf_bpm` receiver of transport BPM value
* Pdext: migrate to `pd-lib-builder` and newer `m_pd.h` and add some initial documentation.
* deprecated: Fabric generator - no longer supported
* docs: updates on missing objects and limitations
* bugfix: issues #24, #50, #106

0.7.0
-----

Expand All @@ -11,7 +21,7 @@ CHANGELOG
* deprecated: internal Bela implementation (use downstream instead)
* docs: add notes
* docs: fix markdown syntax
* bugfixes: issues #86, #87 and #93
* bugfixes: issues #86, #87 and #93

0.6.3
-----
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ It has since then been expanded to provide further support for many different pl
* `importlib_resources` (for reading static resources)
* `json2daisy` (for daisy integration)
* `tox` (for tests, optional)
* `numpy/scipy` (for tests, optional)
* `midifile` (for tests, optional)
* `clang/clang++` (for building tests, optional)

## Installation
Expand Down
1 change: 0 additions & 1 deletion docs/01.introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ Heavy can interpret and convert a subset of features from Pure Data patches:

## Supported Frameworks

* [Fabric](http://www.tazman-audio.co.uk)
* [Unity 5](https://unity3d.com)
* [Distrho Plugin Framework](https://distrho.github.io/DPF)
* [LV2](https://lv2plug.in)
Expand Down
3 changes: 3 additions & 0 deletions docs/02.getting_started.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,7 @@ If you experience any problems or have some thoughts on how to improve heavy mak

* Heavy does not support numbers in `[unpack]`, e.g. `[unpack 0 0]` gives `Heavy only supports arguments 'f' and 's' to unpack.` Workaround is to use `f` instead, e.g. `[unpack f f]`, and if necessary prime the default values with a `[loadbang]` and `[0 0(`.
* Heavy does not accept arguments and control connections to: `[rzero~]`, `[rzero_rev~]`, `[czero~]`, `[czero_rev~]`. In Heavy, these objects accept only signal inputs. Arguments and control connections are ignored.
* On the `[select]` object it is currently not possible to set the arguments via the right inlet (internally a hardcoded switch_case is used).
* `[metro]` and `[timer]` objects do not accept tempo messages or unit arguments.
* Certain filters are sensitive to ‘blowing up’ at very low or very high cutoff frequencies and/or resonances, due to the filter coefficients not being perfectly represented with a finite number of bits. While Pure data natively uses 64 bits, platforms like `OWL` and `Daisy` that use 32 bit float are more sensitive to this. For example, the Pure data `[lp~]`, `[bp~]` and `[hp~]` filters are implemented with biquads which are prone to fail or distort with cutoff frequencies less than around 200 Hz (at 48kHz sample rate).
* Heavy does not support multichannel connections.
9 changes: 7 additions & 2 deletions docs/03.gen.dpf.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ In order to receive MIDI note on and off events, as well as control change messa

DPF supports all note/ctl/pgm/touch/bend I/O events. The implementation is further discussed in the [midi docs](04.midi.md)

We can also use `[midirealtimein]` to receive realtime midi messages like clock/start/continue/stop/reset (no active sense). It is up to the user to create the appropriate handling inside the patch.

Additionally you can use the special `[r __hv_dpf_bpm]` receiver to get the current transport BPM value directly.

![notein](img/docs_notein.png)

## Parameter Types
Expand Down Expand Up @@ -64,15 +68,16 @@ Each of these are optional and have either a default value or are entirely optio
Other fields that the DPF metadata supports are:

* `port_groups` - If your plugin has more audio i/o that need to be grouped together.
* `enumerators` - Configure a set of parameters that cycle over `<key>: <value>`
* `enable_ui` - Boolean that creates a generic GUI. Requires `dpf-widgets` on the same level as `dpf`.
* `enable_modgui` - Boolean for use in MOD audio based systems.
* `ui_size` - Dict of width & height that sets the size of the UI.
* `ui_size` - Dict of `width` & `height` that sets the size of the UI.
* `plugin_clap_id` - A URI for use with CLAP format.
* `lv2_info` - String describing the LV2 plugin type.
* `vst3_info` - String describing the VST3 plugin type.
* `clap_info` - List of strings describing the CLAP plugin type.

An example plugin that uses these extended metadata is [WSTD 3Q](https://github.com/Wasted-Audio/wstd-3q).
An example plugin that uses some of these extended metadata is [WSTD 3Q](https://github.com/Wasted-Audio/wstd-3q).

## Notes

Expand Down
183 changes: 0 additions & 183 deletions docs/03.gen.fabric.md

This file was deleted.

15 changes: 15 additions & 0 deletions docs/03.gen.pdext.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Pdext

Pure Data externals allow you to reuse compiled Heavy code in subsequent Pd patches. Because of how Heavy runs its process we will always create a signal object that only runs with DSP turned on (although it is possible to only have control i/o). Therefore the created external will always have the signal `~` appended after the name.

The external will always have one inlet and one outlet for control messages. With one or more signal inlets the first inlet will be shared for signal and control connections. Signal outlets are separate from the right-most control outlet.

## Receivers and Senders

Using named receivers, ie. `[r foo @hv_param]`, it is possible to send `bang`, `symbol`, `float`, and a list of `atoms` (more than 2 elements) messages by starting your message with the intended name, `[foo $1(`. These can only be attached to the first inlet of the external.

All outgoing control messages must be passed to a send object with the name `[s HV_TO_PD @hv_param]`. If your outgoing message is more than 2 atoms and starts with a `symbol` it will output as a `list` object. If it starts with a float it is a regular multi atom message. All other single atom values will output as their corresponding types respectively.

## Print Hook

It is possible to directly print to the console of pd from inside the external. The print hook is prepended with the external name and a timestamp in ms since the start of the external object: `[printtest~ @ 500ms] print: something`.
3 changes: 1 addition & 2 deletions docs/03.generators.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@ HVCC supports a number of dedicated generators that can help to wrap the heavy c

* [Daisy](03.gen.daisy.md)
* [DPF](03.gen.dpf.md)
* [Fabric](03.gen.fabric.md)
* [Javascript](03.gen.javascript.md)
* [OWL](03.gen.owl.md)
* `Pdext`
* [Pdext](03.gen.pdext.md)
* [Wwise](03.gen.wwise.md)
* [Unity](03.gen.unity.md)
1 change: 0 additions & 1 deletion docs/09.supported_vanilla_objects.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,6 @@ snapshot~
sqrt~
s~
tabosc4~
tabplay~
tabread4~
tabread~
tabwrite~
Expand Down
9 changes: 9 additions & 0 deletions docs/10.unsupported_vanilla_objects.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ drawsymbol
drawtext
element
expr
file
filledcurve
filledpolygon
fudiformat
Expand All @@ -42,6 +43,7 @@ oscformat
oscparse
plot
pointer
qlist
realtime
savepanel
savestate
Expand All @@ -57,6 +59,7 @@ tabread4
template
text
textfile
trace
v
value
```
Expand Down Expand Up @@ -88,6 +91,12 @@ rfft~
rifft~
scope~
sigmund~
slop~
tabplay~
tabreceive~
tabsend~
threshold~
vline~
vsnapshot~
writesf~
```
6 changes: 0 additions & 6 deletions hvcc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
from hvcc.core.hv2ir import hv2ir
from hvcc.generators.ir2c import ir2c
from hvcc.generators.ir2c import ir2c_perf
from hvcc.generators.c2fabric import c2fabric
from hvcc.generators.c2js import c2js
from hvcc.generators.c2daisy import c2daisy
from hvcc.generators.c2dpf import c2dpf
Expand Down Expand Up @@ -258,11 +257,6 @@ def compile_dataflow(
'verbose': verbose
}

if "fabric" in generators:
if verbose:
print("--> Generating Fabric plugin")
results["c2fabric"] = c2fabric.c2fabric.compile(**gen_args)

if "js" in generators:
if verbose:
print("--> Generating Javascript")
Expand Down
Loading

0 comments on commit c9c4260

Please sign in to comment.