feat: rebrand openDAW → openDIAW.be
Rename all user-visible strings: HTML title, meta tags, about dialogs, sample origin enum, README, serve-studio log prefix. Internal package imports (@opendaw/*) preserved. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://raw.githubusercontent.com/andremichelle/openDAW/refs/heads/main/packages/app/studio/public/favicon.svg" height="120"/>
|
<img src="https://raw.githubusercontent.com/andremichelle/openDAW/refs/heads/main/packages/app/studio/public/favicon.svg" height="120"/>
|
||||||
<h1 align="center">openDAW</h1>
|
<h1 align="center">openDIAW.be</h1>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<a href="https://github.com/andremichelle/opendaw" rel="nofollow"><img src="https://img.shields.io/github/stars/andremichelle/opendaw" alt="stars"></a>
|
<a href="https://github.com/andremichelle/opendaw" rel="nofollow"><img src="https://img.shields.io/github/stars/andremichelle/opendaw" alt="stars"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
**openDAW** is a next-generation web-based Digital Audio Workstation (DAW) designed to **democratize** music production
|
**openDIAW.be** is a next-generation web-based Digital Audio Workstation (DAW) designed to **democratize** music production
|
||||||
and to **resurface the process of making music** by making **high-quality** creation tools accessible to everyone, with
|
and to **resurface the process of making music** by making **high-quality** creation tools accessible to everyone, with
|
||||||
a strong focus on **education** and data-privacy.
|
a strong focus on **education** and data-privacy.
|
||||||
|
|
||||||
@@ -23,11 +23,11 @@ a strong focus on **education** and data-privacy.
|
|||||||
|
|
||||||
We are committed to transparency and community-driven development.
|
We are committed to transparency and community-driven development.
|
||||||
|
|
||||||
The source code for openDAW is available under **AGPL v3 (or later)**
|
The source code for openDIAW.be is available under **AGPL v3 (or later)**
|
||||||
|
|
||||||
### Built on Trust and Transparency
|
### Built on Trust and Transparency
|
||||||
|
|
||||||
**openDAW stands for radical simplicity and respect.**
|
**openDIAW.be stands for radical simplicity and respect.**
|
||||||
|
|
||||||
- **No SignUp**
|
- **No SignUp**
|
||||||
- **No Tracking**
|
- **No Tracking**
|
||||||
@@ -51,8 +51,8 @@ operations of the app.
|
|||||||
If you are interested in helping, here are areas where we need support:
|
If you are interested in helping, here are areas where we need support:
|
||||||
|
|
||||||
1. **Y.JS Server + WebRTC File Sharing** - for live collaboration
|
1. **Y.JS Server + WebRTC File Sharing** - for live collaboration
|
||||||
2. **Offline App** — e.g. wrapping openDAW with [Tauri](https://tauri.app/) for a native desktop experience
|
2. **Offline App** — e.g. wrapping openDIAW.be with [Tauri](https://tauri.app/) for a native desktop experience
|
||||||
3. **PWA** — turning openDAW into a fully installable Progressive Web App with offline support
|
3. **PWA** — turning openDIAW.be into a fully installable Progressive Web App with offline support
|
||||||
4. **Timeline Track Management** — design and UX help for track layout, ordering, grouping, and interaction
|
4. **Timeline Track Management** — design and UX help for track layout, ordering, grouping, and interaction
|
||||||
|
|
||||||
We always appreciate help on open issues: https://github.com/andremichelle/openDAW/issues
|
We always appreciate help on open issues: https://github.com/andremichelle/openDAW/issues
|
||||||
@@ -61,10 +61,10 @@ To discuss contributions, book a call: https://calendly.com/andremichelle/openda
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Huge Shoutout To The Incredible openDAW Community!
|
## Huge Shoutout To The Incredible openDIAW.be Community!
|
||||||
|
|
||||||
To everyone who has contributed feedback, reported bugs, suggested improvements, or helped spread the word — thank you!
|
To everyone who has contributed feedback, reported bugs, suggested improvements, or helped spread the word — thank you!
|
||||||
Your support is shaping openDAW into something truly powerful!
|
Your support is shaping openDIAW.be into something truly powerful!
|
||||||
|
|
||||||
Thank
|
Thank
|
||||||
you [@ccswdavidson](https://github.com/ccswdavidson), [@Chaosmeister](https://github.com/Chaosmeister), [@jeffreylouden](https://github.com/jeffreylouden), [@solsos](https://github.com/solsos), [@TheRealSyler](https://github.com/TheRealSyler), [@Trinitou](https://github.com/Trinitou),
|
you [@ccswdavidson](https://github.com/ccswdavidson), [@Chaosmeister](https://github.com/Chaosmeister), [@jeffreylouden](https://github.com/jeffreylouden), [@solsos](https://github.com/solsos), [@TheRealSyler](https://github.com/TheRealSyler), [@Trinitou](https://github.com/Trinitou),
|
||||||
@@ -121,7 +121,7 @@ skyboundzoo, JHINZ, Mark Dammer, fork-kun, Martin Eigel
|
|||||||
|
|
||||||
### Repositories
|
### Repositories
|
||||||
|
|
||||||
* [openDAW](https://github.com/andremichelle/opendaw)
|
* [openDIAW.be](https://github.com/andremichelle/opendaw)
|
||||||
* [openDAW-headless (SDK)](https://github.com/andremichelle/opendaw-headless)
|
* [openDAW-headless (SDK)](https://github.com/andremichelle/opendaw-headless)
|
||||||
* [openDAW-headless @naomiaro](https://github.com/naomiaro/opendaw-test) (openDAW-headless fork with more docs and
|
* [openDAW-headless @naomiaro](https://github.com/naomiaro/opendaw-test) (openDAW-headless fork with more docs and
|
||||||
examples)
|
examples)
|
||||||
@@ -233,12 +233,12 @@ participate, visit our [Contribute](https://opendaw.org/contribute) page.
|
|||||||
|
|
||||||
## Links
|
## Links
|
||||||
|
|
||||||
* [opendaw.studio (prototype)](https://opendaw.studio)
|
* [opendiaw.be (prototype)](https://opendiaw.be)
|
||||||
* [opendaw.org (website)](https://opendaw.org)
|
* [opendaw.org (website)](https://opendaw.org)
|
||||||
* [openDAW on Discord](https://discord.opendaw.studio)
|
* [openDAW on Discord](https://discord.opendiaw.be)
|
||||||
* [openDAW SDK](https://www.npmjs.com/org/opendaw)
|
* [openDAW SDK](https://www.npmjs.com/org/opendaw)
|
||||||
* [LinkedIn](https://www.linkedin.com/company/opendaw-org/)
|
* [LinkedIn](https://www.linkedin.com/company/opendaw-org/)
|
||||||
* [Instagram](https://www.instagram.com/opendaw.studio)
|
* [Instagram](https://www.instagram.com/opendiaw.be)
|
||||||
|
|
||||||
## Contributions
|
## Contributions
|
||||||
|
|
||||||
@@ -254,12 +254,12 @@ participate, visit our [Contribute](https://opendaw.org/contribute) page.
|
|||||||
|
|
||||||
## Dual-Licensing Model
|
## Dual-Licensing Model
|
||||||
|
|
||||||
openDAW is available **under two alternative license terms**:
|
openDIAW.be is available **under two alternative license terms**:
|
||||||
|
|
||||||
| Option | When to choose it | Obligations |
|
| Option | When to choose it | Obligations |
|
||||||
|---------------------------|----------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|---------------------------|----------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| **A. AGPL v3 (or later)** | You are happy for the entire work that includes openDAW to be released under AGPL-compatible open-source terms. | – Must distribute complete corresponding source code under AGPL.<br>– Must keep copyright & licence notices.<br>– Applies both to distribution **and** to public use via network/SaaS (§13).<br>– May run openDAW privately in any software, open or closed (§0). |
|
| **A. AGPL v3 (or later)** | You are happy for the entire work that includes openDAW to be released under AGPL-compatible open-source terms. | – Must distribute complete corresponding source code under AGPL.<br>– Must keep copyright & licence notices.<br>– Applies both to distribution **and** to public use via network/SaaS (§13).<br>– May run openDAW privately in any software, open or closed (§0). |
|
||||||
| **B. Commercial Licence** | You wish to incorporate openDAW into **closed-source** or otherwise licence-incompatible software or SaaS offerings. | – Pay the agreed fee.<br>– No copyleft requirement for your own source code.<br>– Other terms as per the signed agreement. |
|
| **B. Commercial Licence** | You wish to incorporate openDIAW.be into **closed-source** or otherwise licence-incompatible software or SaaS offerings. | – Pay the agreed fee.<br>– No copyleft requirement for your own source code.<br>– Other terms as per the signed agreement. |
|
||||||
|
|
||||||
> **How to obtain the Commercial License**
|
> **How to obtain the Commercial License**
|
||||||
> Email `andre.michelle@opendaw.org` with your company name, product description, and expected distribution volume.
|
> Email `andre.michelle@opendaw.org` with your company name, product description, and expected distribution volume.
|
||||||
|
|||||||
@@ -11,24 +11,24 @@
|
|||||||
<meta http-equiv="Pragma" content="no-cache">
|
<meta http-equiv="Pragma" content="no-cache">
|
||||||
<meta http-equiv="Expires" content="0">
|
<meta http-equiv="Expires" content="0">
|
||||||
<meta name="robots" content="noindex, nofollow">
|
<meta name="robots" content="noindex, nofollow">
|
||||||
<meta name="title" content="openDAW Studio Prototype"/>
|
<meta name="title" content="openDIAW.be Studio"/>
|
||||||
<meta name="description"
|
<meta name="description"
|
||||||
content="openDAW is a next-gen web-based digital audio workstation designed to democratize music production."/>
|
content="openDAW is a next-gen web-based digital audio workstation designed to democratize music production."/>
|
||||||
<meta property="og:type" content="website"/>
|
<meta property="og:type" content="website"/>
|
||||||
<meta property="og:url" content="https://opendaw.studio"/>
|
<meta property="og:url" content="https://opendiaw.be"/>
|
||||||
<meta property="og:title" content="openDAW Studio Prototype"/>
|
<meta property="og:title" content="openDIAW.be Studio"/>
|
||||||
<meta property="og:description"
|
<meta property="og:description"
|
||||||
content="openDAW is a next-gen web-based digital audio workstation designed to democratize music production."/>
|
content="openDAW is a next-gen web-based digital audio workstation designed to democratize music production."/>
|
||||||
<meta property="og:image" content="/images/meta.jpg"/>
|
<meta property="og:image" content="/images/meta.jpg"/>
|
||||||
<meta property="twitter:card" content="summary_large_image"/>
|
<meta property="twitter:card" content="summary_large_image"/>
|
||||||
<meta property="twitter:url" content="https://opendaw.studio"/>
|
<meta property="twitter:url" content="https://opendiaw.be"/>
|
||||||
<meta property="twitter:title" content="openDAW Studio Prototype"/>
|
<meta property="twitter:title" content="openDIAW.be Studio"/>
|
||||||
<meta property="twitter:description"
|
<meta property="twitter:description"
|
||||||
content="openDAW is a next-gen web-based digital audio workstation designed to democratize music production."/>
|
content="openDAW is a next-gen web-based digital audio workstation designed to democratize music production."/>
|
||||||
<meta property="twitter:image" content="/images/meta.jpg"/>
|
<meta property="twitter:image" content="/images/meta.jpg"/>
|
||||||
<link rel="icon" type="image/x-icon" href="/favicon.svg">
|
<link rel="icon" type="image/x-icon" href="/favicon.svg">
|
||||||
<link rel="canonical" href="https://opendaw.studio">
|
<link rel="canonical" href="https://opendiaw.be">
|
||||||
<title>🎧openDAW.studio</title>
|
<title>🎧openDIAW.be</title>
|
||||||
<style>
|
<style>
|
||||||
html, body {
|
html, body {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ export namespace Mixdowns {
|
|||||||
const {resolve, reject, promise} = Promise.withResolvers<void>()
|
const {resolve, reject, promise} = Promise.withResolvers<void>()
|
||||||
const {status, error} = await Promises.tryCatch(Dialogs.show({
|
const {status, error} = await Promises.tryCatch(Dialogs.show({
|
||||||
headline: "Encode Mixdown",
|
headline: "Encode Mixdown",
|
||||||
content: "openDAW will download FFmpeg (30MB) once to encode your mixdown unless you choose 'Wav'.",
|
content: "openDIAW.be will download FFmpeg (30MB) once to encode your mixdown unless you choose 'Wav'.",
|
||||||
excludeOk: true,
|
excludeOk: true,
|
||||||
buttons: [
|
buttons: [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export const populateStudioMenu = (service: StudioService) => {
|
|||||||
return MenuItem.root()
|
return MenuItem.root()
|
||||||
.setRuntimeChildrenProcedure(parent => {
|
.setRuntimeChildrenProcedure(parent => {
|
||||||
parent.addMenuItem(
|
parent.addMenuItem(
|
||||||
MenuItem.header({label: "openDAW", icon: IconSymbol.OpenDAW, color: Colors.green}),
|
MenuItem.header({label: "openDIAW.be", icon: IconSymbol.OpenDAW, color: Colors.green}),
|
||||||
MenuItem.default({
|
MenuItem.default({
|
||||||
label: "Dashboard",
|
label: "Dashboard",
|
||||||
shortcut: Global["workspace-screen-dashboard"].shortcut.format()
|
shortcut: Global["workspace-screen-dashboard"].shortcut.format()
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {Errors} from "@opendaw/lib-std"
|
|||||||
|
|
||||||
export namespace SampleDialogs {
|
export namespace SampleDialogs {
|
||||||
export const showEditSampleDialog = async (sample: Sample): Promise<Sample> => {
|
export const showEditSampleDialog = async (sample: Sample): Promise<Sample> => {
|
||||||
if (sample.origin === "openDAW") {
|
if (sample.origin === "openDIAW.be") {
|
||||||
return Promise.reject("Cannot change sample from the cloud")
|
return Promise.reject("Cannot change sample from the cloud")
|
||||||
}
|
}
|
||||||
const {resolve, reject, promise} = Promise.withResolvers<Sample>()
|
const {resolve, reject, promise} = Promise.withResolvers<Sample>()
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export const NumberInput = ({
|
|||||||
Events.subscribe(element, "copy", (event: ClipboardEvent) => {
|
Events.subscribe(element, "copy", (event: ClipboardEvent) => {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
event.clipboardData?.setData("application/json", JSON.stringify({
|
event.clipboardData?.setData("application/json", JSON.stringify({
|
||||||
app: "openDAW",
|
app: "openDIAW.be",
|
||||||
content: "number",
|
content: "number",
|
||||||
value: model.getValue()
|
value: model.getValue()
|
||||||
}))
|
}))
|
||||||
@@ -71,7 +71,7 @@ export const NumberInput = ({
|
|||||||
const data = event.clipboardData?.getData("application/json")
|
const data = event.clipboardData?.getData("application/json")
|
||||||
if (isDefined(data)) {
|
if (isDefined(data)) {
|
||||||
const {status, value: json} = tryCatch(() => JSON.parse(data))
|
const {status, value: json} = tryCatch(() => JSON.parse(data))
|
||||||
if (status === "success" && json.app === "openDAW" && json.content === "number") {
|
if (status === "success" && json.app === "openDIAW.be" && json.content === "number") {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
model.setValue(isDefined(guard) ? guard.guard(json.value) : json.value)
|
model.setValue(isDefined(guard) ? guard.guard(json.value) : json.value)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export const TextInput = ({lifecycle, model, className, maxChars}: Construct) =>
|
|||||||
Events.subscribe(element, "copy", (event: ClipboardEvent) => {
|
Events.subscribe(element, "copy", (event: ClipboardEvent) => {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
event.clipboardData?.setData("application/json", JSON.stringify({
|
event.clipboardData?.setData("application/json", JSON.stringify({
|
||||||
app: "openDAW",
|
app: "openDIAW.be",
|
||||||
content: "text",
|
content: "text",
|
||||||
value: model.getValue()
|
value: model.getValue()
|
||||||
}))
|
}))
|
||||||
@@ -43,7 +43,7 @@ export const TextInput = ({lifecycle, model, className, maxChars}: Construct) =>
|
|||||||
const data = event.clipboardData?.getData("application/json")
|
const data = event.clipboardData?.getData("application/json")
|
||||||
if (isDefined(data)) {
|
if (isDefined(data)) {
|
||||||
const json = JSON.parse(data)
|
const json = JSON.parse(data)
|
||||||
if (json.app === "openDAW" && json.content === "text") {
|
if (json.app === "openDIAW.be" && json.content === "text") {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
model.setValue(json.value)
|
model.setValue(json.value)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ export const TimeCodeInput = ({lifecycle, model, className, negativeWarning, sig
|
|||||||
Events.subscribe(element, "copy", (event: ClipboardEvent) => {
|
Events.subscribe(element, "copy", (event: ClipboardEvent) => {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
event.clipboardData?.setData("application/json", JSON.stringify({
|
event.clipboardData?.setData("application/json", JSON.stringify({
|
||||||
app: "openDAW",
|
app: "openDIAW.be",
|
||||||
content: "timecode",
|
content: "timecode",
|
||||||
value: model.getValue()
|
value: model.getValue()
|
||||||
}))
|
}))
|
||||||
@@ -75,7 +75,7 @@ export const TimeCodeInput = ({lifecycle, model, className, negativeWarning, sig
|
|||||||
if (isDefined(data)) {
|
if (isDefined(data)) {
|
||||||
const {status, value: json} = tryCatch(() => JSON.parse(data))
|
const {status, value: json} = tryCatch(() => JSON.parse(data))
|
||||||
if (status === "failure") {return}
|
if (status === "failure") {return}
|
||||||
if (safeRead(json, "app") === "openDAW" && safeRead(json, "content") === "timecode") {
|
if (safeRead(json, "app") === "openDIAW.be" && safeRead(json, "content") === "timecode") {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
model.setValue(json.value ?? 0)
|
model.setValue(json.value ?? 0)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -303,7 +303,7 @@ export namespace Dialogs {
|
|||||||
}, {
|
}, {
|
||||||
text: "Report",
|
text: "Report",
|
||||||
primary: true,
|
primary: true,
|
||||||
onClick: () => window.open("https://github.com/andremichelle/openDAW/issues/new", "github")
|
onClick: () => window.open("https://github.com/andremichelle/openDIAW.be/issues/new", "github")
|
||||||
}] : Arrays.empty()}
|
}] : Arrays.empty()}
|
||||||
cancelable={false}
|
cancelable={false}
|
||||||
error>
|
error>
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ const NewProjectJson: DemoProjectJson = {
|
|||||||
bundleSize: 0,
|
bundleSize: 0,
|
||||||
metadata: {
|
metadata: {
|
||||||
name: "New Project",
|
name: "New Project",
|
||||||
artist: "openDAW",
|
artist: "openDIAW.be",
|
||||||
description: "",
|
description: "",
|
||||||
tags: ["clean slate"],
|
tags: ["clean slate"],
|
||||||
created: "",
|
created: "",
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {showTone3000Dialog} from "./Tone3000Dialog"
|
|||||||
type ToneModel = { name: string, size: string, model_url: string }
|
type ToneModel = { name: string, size: string, model_url: string }
|
||||||
type ToneResponse = { title: string, models: ReadonlyArray<ToneModel> }
|
type ToneResponse = { title: string, models: ReadonlyArray<ToneModel> }
|
||||||
|
|
||||||
const AppId = "openDAW"
|
const AppId = "openDIAW.be"
|
||||||
const SelectEndpoint = "https://www.tone3000.com/api/v1/select"
|
const SelectEndpoint = "https://www.tone3000.com/api/v1/select"
|
||||||
const StorageKey = "tone3000_tone_url"
|
const StorageKey = "tone3000_tone_url"
|
||||||
const StorageDoneKey = "tone3000_done"
|
const StorageDoneKey = "tone3000_done"
|
||||||
|
|||||||
@@ -241,7 +241,7 @@ export const Manuals: ReadonlyArray<Manual> = [
|
|||||||
files: [
|
files: [
|
||||||
{
|
{
|
||||||
type: "page",
|
type: "page",
|
||||||
label: "How to create a device in openDAW?",
|
label: "How to create a device in openDIAW.be?",
|
||||||
path: "/manuals/creating-a-device"
|
path: "/manuals/creating-a-device"
|
||||||
},
|
},
|
||||||
{type: "page", label: "Tech Stack", path: "/manuals/tech-stack"}
|
{type: "page", label: "Tech Stack", path: "/manuals/tech-stack"}
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ export const PreferencesPage: PageFactory<StudioService> = ({lifecycle, service}
|
|||||||
}} appearance={{color: Colors.green}}>LOAD</Button>
|
}} appearance={{color: Colors.green}}>LOAD</Button>
|
||||||
<Button lifecycle={lifecycle} onClick={() => StudioShortcutManager.toJSONString(contexts)
|
<Button lifecycle={lifecycle} onClick={() => StudioShortcutManager.toJSONString(contexts)
|
||||||
.ifSome(jsonString => Files.save(new TextEncoder().encode(jsonString).buffer,
|
.ifSome(jsonString => Files.save(new TextEncoder().encode(jsonString).buffer,
|
||||||
{suggestedName: "openDAW.shortcuts.json"}))}
|
{suggestedName: "openDIAW.be.shortcuts.json"}))}
|
||||||
appearance={{color: Colors.green}}>SAVE</Button>
|
appearance={{color: Colors.green}}>SAVE</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export const SampleUploadPage: PageFactory<StudioService> = ({service}: PageCont
|
|||||||
console.debug("sampleRate", sample_rate)
|
console.debug("sampleRate", sample_rate)
|
||||||
console.debug("duration", duration)
|
console.debug("duration", duration)
|
||||||
console.debug("bpm", bpm)
|
console.debug("bpm", bpm)
|
||||||
await OpenSampleAPI.get().upload(wav, {name, bpm, sample_rate, duration, origin: "openDAW"})
|
await OpenSampleAPI.get().upload(wav, {name, bpm, sample_rate, duration, origin: "openDIAW.be"})
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error instanceof DOMException && error.name === "AbortError") {
|
if (error instanceof DOMException && error.name === "AbortError") {
|
||||||
console.debug("Caught an AbortError")
|
console.debug("Caught an AbortError")
|
||||||
|
|||||||
@@ -9,5 +9,5 @@ export class ShadertoyMIDIOutput {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static readonly Default = MidiDevices.createSoftwareMIDIOutput(
|
static readonly Default = MidiDevices.createSoftwareMIDIOutput(
|
||||||
message => this.#notifier.notify(message), "Shadertoy", "openDAW-shadertoy")
|
message => this.#notifier.notify(message), "Shadertoy", "openDIAW.be-shadertoy")
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ export const SampleMetaData = z.object({
|
|||||||
bpm: z.number(),
|
bpm: z.number(),
|
||||||
duration: z.number(),
|
duration: z.number(),
|
||||||
sample_rate: z.number(),
|
sample_rate: z.number(),
|
||||||
origin: z.enum(["openDAW", "recording", "import"]),
|
origin: z.enum(["openDIAW.be", "recording", "import"]),
|
||||||
custom: z.string().optional()
|
custom: z.string().optional()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ export const SoundfontMetaData = z.object({
|
|||||||
size: z.number().int(),
|
size: z.number().int(),
|
||||||
url: z.string(),
|
url: z.string(),
|
||||||
license: z.string(),
|
license: z.string(),
|
||||||
origin: z.enum(["openDAW", "import"])
|
origin: z.enum(["openDIAW.be", "import"])
|
||||||
})
|
})
|
||||||
|
|
||||||
export type SoundfontMetaData = z.infer<typeof SoundfontMetaData>
|
export type SoundfontMetaData = z.infer<typeof SoundfontMetaData>
|
||||||
@@ -44,7 +44,7 @@ export class OpenSampleAPI implements SampleAPI {
|
|||||||
return panic(json.error)
|
return panic(json.error)
|
||||||
}
|
}
|
||||||
const sample = Sample.parse(json)
|
const sample = Sample.parse(json)
|
||||||
return Object.freeze({...sample, origin: "openDAW"})
|
return Object.freeze({...sample, origin: "openDIAW.be"})
|
||||||
}
|
}
|
||||||
|
|
||||||
async load(uuid: UUID.Bytes, progress: Procedure<unitValue>): Promise<[AudioData, Sample]> {
|
async load(uuid: UUID.Bytes, progress: Procedure<unitValue>): Promise<[AudioData, Sample]> {
|
||||||
@@ -82,7 +82,7 @@ export class OpenSampleAPI implements SampleAPI {
|
|||||||
name,
|
name,
|
||||||
duration: audioData.numberOfFrames / audioData.sampleRate,
|
duration: audioData.numberOfFrames / audioData.sampleRate,
|
||||||
sample_rate: audioData.sampleRate,
|
sample_rate: audioData.sampleRate,
|
||||||
origin: "openDAW"
|
origin: "openDIAW.be"
|
||||||
}] as [AudioData, Sample]
|
}] as [AudioData, Sample]
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -33,4 +33,4 @@ https.createServer(options, (req, res) => {
|
|||||||
res.setHeader("Content-Type", MIME[ext] || "application/octet-stream");
|
res.setHeader("Content-Type", MIME[ext] || "application/octet-stream");
|
||||||
res.writeHead(200);
|
res.writeHead(200);
|
||||||
fs.createReadStream(filePath).pipe(res);
|
fs.createReadStream(filePath).pipe(res);
|
||||||
}).listen(PORT, "0.0.0.0", () => console.log("[openDAW] HTTPS :" + PORT));
|
}).listen(PORT, "0.0.0.0", () => console.log("[openDIAW.be] HTTPS :" + PORT));
|
||||||
|
|||||||
Reference in New Issue
Block a user