AI prompts
base on Airwindows, Consolidated into a single Library, Rack Plugin and DAW Plugin # All the Airwindows Consolidated
It's all the [airwindows](https://www.airwindows.com) presented in three lovely flavors
<img src="doc/awgalactic.png" height=300 alt="The Airwindows Module in Dark Mode">
<img src="doc/daw.png" height=300 alt="The Airwindows CLAP in Bitwig Studio">
1. As a static library with a uniform registry and access pattern for you to use
as a submodule to expose the airwindows,
2. As module for [VCV Rack](https://www.vcvrack.com/) in the [Rack library](https://library.vcvrack.com/Airwin2Rack/Airwin2Rack) or as a [Rack nightly build](https://github.com/baconpaul/airwin2rack/releases/tag/Nightly).
[Read the manual here.](doc/manual.md)
3. As a [CLAP/VST3/AU/LV2/Standalone](https://github.com/baconpaul/airwin2rack/releases/tag/DAWPlugin) plugin for your DAW. [Read the manual here.](doc/manualdaw.md)
Have fun! If you are a user the above links are everything you need. If you are a dev read on!
## The Library Version
The target `airwin-registry` builds a static library for you containing
all of the airwindows under a uniform api. Documenting this is still a
todo, but if you link this target, it will automatically populate the
datastructures so`AirwinRegistry.h` does what you would expect, which is
give you a map to create `airwin2rackbase` operator objects.
Have a question? Open an issue!
## The Rack Plugin
We are using @qno's excellent cmake SDK. This means the makefile works
like any other rack project.
But if you pull and want to clean build, make sure to run both the `clean` and `cleandep`
targets to rebuild fully.
## The JUCE plugin
Assuming you have git and a compiler and cmake working, the build
is easy.
If you are on unix install [these packages or their equivalent](https://github.com/baconpaul/airwin2rack/blob/736d9faf975c454cbb0c82746fd5266a4fd8723c/.github/workflows/build-daw-plugin.yml#L52).
Then clone the repo and execute the following.
Our nightly builds build 64 bit ubuntu x64, mac universal, and win x64,
but should build anywhere. We know it builds on linux ARM for instance.
If you are doing a build on an odd system and find a gotcha send us
a PR.
```bask
cmake -Bignore/daw-plugin -DBUILD_JUCE_PLUGIN=TRUE -DCMAKE_BUILD_TYPE=Release
cmake --build ignore/daw-plugin --target awcons-products
```
## Updating the airwindows sub-library
To update the airwindows library
1. Pull to the latest airwindows plugins
```bash
./scripts/updateToLatest.sh
```
3. Do a test build
```bash
RACK_DIR=(path-to-sdk) make -j cleandep
RACK_DIR=(path-to-sdk) make -j clean
RACK_DIR=(path-to-sdk) make -j install
```
4. Commit src libs and the infile and push to github
## A note on licensing
Airwindows is MIT licensed and the source code here is also. For
avoidance of doubt, all code and content in `src`, in `libs/airwindows` and in
`res/awdoc` is freely available, under the MIT license, and fine to use
in closed source code. This means you can just link the `airwin-registry`
cmake target, use `AirwinRegistry.h` and do what you want.
But a combined work with JUCE and the VST3 SDK (for the DAW plugin)
and with the VCV Rack SDK (for the Rack plugin) brings in GPL3
and GPL3+ dependencies. So even though the code in `src-juce`
and `src-rack` is MIT licensed code, building a distributable
product with those source files may result in your including
GPL3 assets.
Still unsure what you can use in a closed source environment? The answer
is basicaly `AirwinRegistry.h` and its dependencies, the cmake target
`airwin-registry`, the documentation in `res/awdoc`, the top level
`CMakeLists.txt` and
everyting in `src`.
Still unclear? Open an issue with your particular situation
and explain it.
The clipper airwindows graphic is freely distributed by airwindows
the jakarta and fira mono font are both openSIL
https://tokotype.github.io/plusjakarta-sans/
", Assign "at most 3 tags" to the expected json: {"id":"9982","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"