From c6b65c799f5988f015c06e25c9aeb272815ecbd0 Mon Sep 17 00:00:00 2001 From: Miika Alonen Date: Tue, 3 Oct 2023 23:28:29 +0300 Subject: [PATCH] Add send midi clock checkbox to localstorage --- src/AppSettings.ts | 7 +++++++ src/IO/MidiConnection.ts | 2 -- src/TransportNode.js | 2 +- src/main.ts | 13 ++++++++++++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/AppSettings.ts b/src/AppSettings.ts index 3cd2908..1caf8c0 100644 --- a/src/AppSettings.ts +++ b/src/AppSettings.ts @@ -44,6 +44,7 @@ export interface Settings { * @param line_numbers - Whether or not to show line numbers * @param time_position - Whether or not to show time position * @param tips - Whether or not to show tips + * @param send_clock - Whether or not to send midi clock */ vimMode: boolean; theme: string; @@ -54,6 +55,7 @@ export interface Settings { line_numbers: boolean; time_position: boolean; tips: boolean; + send_clock: boolean; } export const template_universe = { @@ -110,6 +112,7 @@ export class AppSettings { * @param line_numbers - Whether or not to show line numbers * @param time_position - Whether or not to show time position * @param tips - Whether or not to show tips + * @param send_clock - Whether or not to send midi clock */ @@ -122,6 +125,7 @@ export class AppSettings { public line_numbers: boolean = true; public time_position: boolean = true; public tips: boolean = true; + public send_clock: boolean = false; constructor() { const settingsFromStorage = JSON.parse( @@ -139,6 +143,7 @@ export class AppSettings { this.line_numbers = settingsFromStorage.line_numbers; this.time_position = settingsFromStorage.time_position; this.tips = settingsFromStorage.tips; + this.send_clock = settingsFromStorage.send_clock; } else { this.universes = template_universes; } @@ -162,6 +167,7 @@ export class AppSettings { line_numbers: this.line_numbers, time_position: this.time_position, tips: this.tips, + send_clock: this.send_clock, }; } @@ -183,6 +189,7 @@ export class AppSettings { this.line_numbers = settings.line_numbers; this.time_position = settings.time_position; this.tips = settings.tips; + this.send_clock = settings.send_clock; localStorage.setItem("topos", JSON.stringify(this.data)); } } diff --git a/src/IO/MidiConnection.ts b/src/IO/MidiConnection.ts index 9ee3cd5..3356962 100644 --- a/src/IO/MidiConnection.ts +++ b/src/IO/MidiConnection.ts @@ -1,5 +1,4 @@ import { UserAPI } from "../API"; -import { Clock } from "../Clock"; export class MidiConnection { /** @@ -223,7 +222,6 @@ export class MidiConnection { * Called when a MIDI clock message is received. */ - const SMOOTH = 0.1; this.clockTicks += 1; if(this.lastTimestamp > 0) { diff --git a/src/TransportNode.js b/src/TransportNode.js index c57acc8..282fb3d 100644 --- a/src/TransportNode.js +++ b/src/TransportNode.js @@ -13,7 +13,7 @@ export class TransportNode extends AudioWorkletNode { /** @type {(this: MessagePort, ev: MessageEvent) => any} */ handleMessage = (message) => { if (message.data && message.data.type === "bang") { - this.app.api.MidiConnection.sendMidiClock(); + if(this.app.settings.send_clock) this.app.api.MidiConnection.sendMidiClock(); this.app.clock.tick++; const futureTimeStamp = this.app.clock.convertTicksToTimeposition( this.app.clock.tick diff --git a/src/main.ts b/src/main.ts index ec39307..a193c54 100644 --- a/src/main.ts +++ b/src/main.ts @@ -80,7 +80,7 @@ export class Editor { exampleCounter: number = 0; exampleIsPlaying: boolean = false; - settings = new AppSettings(); + settings: AppSettings = new AppSettings(); editorExtensions: Extension[] = []; userPlugins: Extension[] = []; state: EditorState; @@ -193,6 +193,10 @@ export class Editor { "show-tips" ) as HTMLInputElement; + midi_clock_checkbox: HTMLInputElement = document.getElementById( + "send-midi-clock" + ) as HTMLInputElement; + // Editor mode selection normal_mode_button: HTMLButtonElement = document.getElementById( "normal-mode" @@ -241,6 +245,7 @@ export class Editor { this.line_numbers_checkbox.checked = this.settings.line_numbers; this.time_position_checkbox.checked = this.settings.time_position; this.tips_checkbox.checked = this.settings.tips; + this.midi_clock_checkbox.checked = this.settings.send_clock; if (!this.settings.time_position) { document.getElementById("timeviewer")!.classList.add("hidden"); } @@ -559,6 +564,7 @@ export class Editor { this.line_numbers_checkbox.checked = this.settings.line_numbers; this.time_position_checkbox.checked = this.settings.time_position; this.tips_checkbox.checked = this.settings.tips; + this.midi_clock_checkbox.checked = this.settings.send_clock; if (this.settings.vimMode) { let vim = document.getElementById("vim-mode-radio") as HTMLInputElement; @@ -654,6 +660,11 @@ export class Editor { }); }); + this.midi_clock_checkbox.addEventListener("change", () => { + let checked = this.midi_clock_checkbox.checked ? true : false; + this.settings.send_clock = checked; + }); + this.vim_mode_button.addEventListener("click", () => { this.settings.vimMode = true; this.view.dispatch({