Skip to content

Commit

Permalink
Docs (#6)
Browse files Browse the repository at this point in the history
  • Loading branch information
russellmcc authored Oct 21, 2024
1 parent 647cf86 commit bc44aea
Show file tree
Hide file tree
Showing 22 changed files with 367 additions and 11 deletions.
10 changes: 10 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,13 @@ jobs:
files: |
target/release/Poly 81.dmg
target/release/Chorus-R.dmg
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: release
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@

/.env
/web/**/installer_resources/license.txt

_site
14 changes: 4 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
# A collection of open-source audio plug-ins!

This repo contains a collection of open-source audio plug-ins written in Rust and TypeScript. This is currently alpha software with plenty of limitations and limited documentation!
This repo contains a collection of open-source audio plug-ins written in Rust and TypeScript using the [Conformal framework](https://github.com/russellmcc/conformal)

Right now, the plug-ins are only available in VST3 format for macOS.
For information on how to use the plug-ins, see our [documentation website](https://russellmcc.github.io/bilinear-audio).

The working title of this collection is "Bilinear Audio".

## Plug-ins

Currently we've implemented two plugins:

- Poly-81: an analog-modeled synthesizer loosely based on a budget-conscious synthesizer from 1980s Japan.
- Chorus-R: an analog-modeled chorus effect loosely based on the chorus circuit from a different budget-conscious synthesizer from 1980s Japan.
This project welcomes technical and documentation contributions, but internal documentation is somewhat limited, sorry about that! If you'd
like to contribute something specific, feel free to open a [discussion](https://github.com/russellmcc/bilinear-audio/discussions).
Binary file modified bun.lockb
Binary file not shown.
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@
"@conformal/scripts": "^0.1.6",
"@conformal/plugin": "^0.1.6",
"@types/d3-shape": "^3.1.6",
"rollup-plugin-license": "^3.4.0"
"rollup-plugin-license": "^3.4.0",
"@next/eslint-plugin-next": "^14.2.15",
"next": "^14.2.15",
"nextra": "^3.0.15",
"nextra-theme-docs": "^3.0.15"
}
}
8 changes: 8 additions & 0 deletions web/docs/.eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module.exports = {
root: true,
extends: ["eslint-config-custom"],
parserOptions: {
project: ["./tsconfig.json"],
tsconfigRootDir: __dirname,
},
};
2 changes: 2 additions & 0 deletions web/docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.next
out
5 changes: 5 additions & 0 deletions web/docs/next-env.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />

// NOTE: This file should not be edited
// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information.
16 changes: 16 additions & 0 deletions web/docs/next.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import nextra from "nextra";

const withNextra = nextra({
theme: "nextra-theme-docs",
themeConfig: "./theme.config.tsx",
latex: true,
});

export default withNextra({
output: "export",
trailingSlash: true,
basePath: "/bilinear-audio",
images: {
unoptimized: true,
},
});
16 changes: 16 additions & 0 deletions web/docs/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "docs",
"description": "Documentation site",
"private": true,
"homepage": "https://github.com/russellmcc/bilinear-audio",
"bugs": "https://github.com/russellmcc/bilinear-audio/issues",
"license": "ISC",
"scripts": {
"lint": "tsc && eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"check-format": "prettier -c .",
"format": "prettier --write .",
"dev": "bun x next dev",
"build": "bun x --bun next build"
},
"type": "module"
}
14 changes: 14 additions & 0 deletions web/docs/pages/_meta.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export default {
index: {
title: "Home",
type: "page",
display: "hidden",
theme: {
layout: "full",
},
},
docs: {
title: "Documentation",
type: "page",
},
};
5 changes: 5 additions & 0 deletions web/docs/pages/docs/_meta.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export default {
p61: "Poly 81",
rchorus: "Chorus-R",
about: "About",
};
20 changes: 20 additions & 0 deletions web/docs/pages/docs/about.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
title: About
---

# About

Bilinear Audio is a collection of open-source audio plug-ins, currently available on macOS in the VST3 format.

Built with the [Conformal framework](http://russellmcc.github.io/conformal).

# Getting Support

Bilinear Audio is a volunteer-run collection, and support is provided on a best-effort basis only.

For general discussion, questions, feature ideas, or to show off something you've made with Bilinear Audio,
please use the [discussions](https://github.com/russellmcc/bilinear-audio/discussions) area on GitHub.

# Reporting Bugs

For specific bug reports, please use the [issue tracker](https://github.com/russellmcc/bilinear-audio/issues) on GitHub.
23 changes: 23 additions & 0 deletions web/docs/pages/docs/p61.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
title: Poly 81
---

import { Cards } from "nextra/components";

# Download

<Cards.Card
title="Download now"
href="https://github.com/russellmcc/bilinear-audio/releases/latest/download/Poly.81.dmg"
arrow
/>

# Overview

Poly 81 is a polyphonic synthesizer inspired by a certain budget-conscious Japanese analog synthesizer from the early 1980s. While not meant to be a
faithful recreation, it does attempt to capture some of the specialness of the awkward era of transition between analog to digital synthesizers.

The plug-in is currently available only in the VST3 format for macOS.

In addition to all the features of the synth it is based on, Poly 81 includes **note expression** support which allows it to be controlled
by **MPE**-compatible controllers.
22 changes: 22 additions & 0 deletions web/docs/pages/docs/rchorus.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
title: Chorus-R
---

import { Cards } from "nextra/components";

# Download

<Cards.Card
title="Download now"
href="https://github.com/russellmcc/bilinear-audio/releases/latest/download/Chorus-R.dmg"
arrow
/>

# Overview

Chorus-R is a stereo chorus effect based on a chorus included in a certain Japanese analog synthesizer from the early 1980s.
It uses delay modulation synchronized between the stereo channels to provide a deep chorus effect without a sense of pitch modulation.

The plug-in is currently available only in the VST3 format for macOS.

Just like the original, the only control is whether to enable or disable the effect.
24 changes: 24 additions & 0 deletions web/docs/pages/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
title: Bilinear Audio
---

import PlugCard from "../src/plug-card";

# Bilinear Audio

A collection of open-source audio plug-ins to transform your sound.

# Plug-ins

<PlugCard
title="Poly 81"
logLine="Vintage-inspired synthesizer"
href="/docs/p61"
gradientColors="linear-gradient(45deg, #ff6b6b, #feca57, #ff9ff3)"
/>
<PlugCard
title="Chorus-R"
logLine="Stereo chorus effect"
href="/docs/rchorus"
gradientColors="linear-gradient(45deg, #54a0ff, #5f27cd, #48dbfb)"
/>
14 changes: 14 additions & 0 deletions web/docs/src/build.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { $ } from "bun";
import { describe, test } from "bun:test";

const MINUTE = 60_000;

describe("bilinear-audio documentation", () => {
test(
"can build",
async () => {
await $`bun run web-build docs`;
},
2 * MINUTE,
);
});
16 changes: 16 additions & 0 deletions web/docs/src/build.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import path from "node:path";
import { $ } from "bun";

const outDir = "_site";

const workspacePath = path.join(import.meta.path, "..", "..", "..", "..");

// Build the documentation
await $`bun run web-build docs`.cwd(workspacePath);

// Clear the output directory
await $`rm -rf ${outDir}`.cwd(workspacePath);

// Copy the documentation into the temporary directory
await $`mkdir -p ${outDir}`.cwd(workspacePath);
await $`cp -r web/docs/out/* ${outDir}/`.cwd(workspacePath);
92 changes: 92 additions & 0 deletions web/docs/src/plug-card/index.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
/* Add a new class for the container of the cards */
.cardContainer {
display: flex;
flex-wrap: wrap;
gap: 1rem;
justify-content: flex-start;
}

.card {
position: relative;
display: inline-block;
vertical-align: top;
padding: 1.5rem;
border-radius: 0.5rem;
background-color: var(--background-color);
color: var(--text-color);
text-decoration: none;
overflow: hidden;
transition: box-shadow 0.3s ease;
max-width: 400px;
width: calc(50% - 1rem);
margin-top: 0.5rem;
margin-right: 0.5rem;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
transform: translateY(0);
}

.card:hover {
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
}

.content {
position: relative;
z-index: 1;
}

.title {
font-size: 1.25rem;
font-weight: bold;
margin-bottom: 0.5rem;
}

.logLine {
font-size: 1rem;
opacity: 0.8;
}

.gradient {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
opacity: 0.1;
background-size: 200% 200%;

transition: opacity 0.3s ease;
}

.card:hover .gradient {
opacity: 0.2;
animation: gradientShift 10s ease infinite;
}

@keyframes gradientShift {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}

:global(.dark) .card {
--background-color: #2a2a2a;
--text-color: #ffffff;
}

:global(.light) .card {
--background-color: #ffffff;
--text-color: #000000;
}

/* Media query for smaller screens */
@media (max-width: 768px) {
.card {
width: calc(100% - 1rem); /* Full width minus margin on smaller screens */
}
}
34 changes: 34 additions & 0 deletions web/docs/src/plug-card/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import React from "react";
import Link from "next/link";
import styles from "./index.module.css";

type PlugCardProps = {
title: string;
logLine: string;
href: string;
gradientColors?: string; // New prop for gradient colors
};

const PlugCard: React.FC<PlugCardProps> = ({
title,
logLine,
href,
gradientColors,
}) => {
const gradientStyle = {
backgroundImage:
gradientColors ?? "linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1)",
};

return (
<Link href={href} className={styles.card}>
<div className={styles.content}>
<h3 className={styles.title}>{title}</h3>
<p className={styles.logLine}>{logLine}</p>
</div>
<div className={styles.gradient} style={gradientStyle}></div>
</Link>
);
};

export default PlugCard;
Loading

0 comments on commit bc44aea

Please sign in to comment.