Cabbage 3 represents a significant overhaul of the previous version, Cabbage 2. This transition involved tough decisions that could lead to some discomfort for existing users, as it diverges from familiar practices. Below are some of the notable changes:
Perhaps one of the most notable adjustments in Cabbage 3 is the alteration in syntax, specifically the transition from traditional identifiers to the use of JSON objects. In the earlier version, users would typically rely on a system of identifiers to define various components and functionalities within their projects. This might have included unique names and values associated with different elements of the user interface or functionality within the Cabbage environment.
JSON or JavaScript Object Notation, is a lightweight data interchange format that is easy for humans to read and write and easy for machines to parse and generate. By transitioning to JSON objects, Cabbage 3 enhances the expressiveness and flexibility of how data is structured and manipulated. JSON allows for nested structures, making it easier to represent complex data relationships and configurations in a way that is both human-readable and machine-friendly.
This change has several implications:
Another cause of potential frustration in this move is the fact that camelCase is now being used across all properties, including widget names. Additionally, abbreviations have been expanded for clarity. For example rslider
is now changed to rotarySlider
, combbox
to comboBox
, filebutton
to fileButton
, etc.
Also, certain identifier names have been modified. For instance, outlineWidth
and outlineColour
are now part of the stroke
object within the colour
object:
```json
"colour":{
"stroke": {
"width": 2,
"colour": "yellow"
}
} ``` Other identifiers have been dropped completely, while some are yet to be implemented. While attempts have been made to provide utility scripts to help transition to Cabbage 3, it's unlikely that any of them will offer a 100% error-free transition from Cabbage 2 to Cabbage 3. Please refer to the updated Docs section to see how widget properties have been changed and updated.
In summary, the changes in Cabbage 3, particularly the shift to using JSON objects, mark a significant evolution in how developers interact with the platform. This move aligns Cabbage with contemporary development practices, enhances user experience, and empowers users to build richer, more dynamic applications with greater ease.
Although the process of exporting has remained largely unchanged, the sequence of events during export has undergone some updates. The most significant change is that all instrument resources are now automatically exported to default folders. All assets, including images, .csd files, and other related resources, will be placed in the following locations:
/Library/CabbageAudio/PLUGIN_NAME/
C:/ProgramData/CabbageAudio/PLUGIN_NAME/
Cabbage automatically searches these directories when it starts, so it’s essential not to move them to another location.
When sharing plugins, ensure you copy the entire folder along with the plugin binary. On the target machine, restore the folder to its correct location as specified above to ensure proper functionality.