Update copyright year in lost files.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
# Copyright 2004-2024 Tom Rothamel <pytom@bishoujo.us>
|
# Copyright 2004-2025 Tom Rothamel <pytom@bishoujo.us>
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person
|
# Permission is hereby granted, free of charge, to any person
|
||||||
# obtaining a copy of this software and associated documentation files
|
# obtaining a copy of this software and associated documentation files
|
||||||
|
|||||||
+44
-44
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright 2004-2024 Tom Rothamel <pytom@bishoujo.us>
|
/* Copyright 2004-2025 Tom Rothamel <pytom@bishoujo.us>
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person
|
* Permission is hereby granted, free of charge, to any person
|
||||||
* obtaining a copy of this software and associated documentation files
|
* obtaining a copy of this software and associated documentation files
|
||||||
@@ -26,12 +26,12 @@ const DEBUG_OUT = false;
|
|||||||
|
|
||||||
const USE_FRAME_CB = 'requestVideoFrameCallback' in HTMLVideoElement.prototype;
|
const USE_FRAME_CB = 'requestVideoFrameCallback' in HTMLVideoElement.prototype;
|
||||||
|
|
||||||
renpyAudio = { };
|
renpyAudio = {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A map from channel to channel object.
|
* A map from channel to channel object.
|
||||||
*/
|
*/
|
||||||
let channels = { };
|
let channels = {};
|
||||||
let next_chan_id = 0;
|
let next_chan_id = 0;
|
||||||
|
|
||||||
let context = new AudioContext();
|
let context = new AudioContext();
|
||||||
@@ -50,14 +50,14 @@ let get_channel = (channel) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
c = {
|
c = {
|
||||||
playing : null,
|
playing: null,
|
||||||
queued : null,
|
queued: null,
|
||||||
stereo_pan : context.createStereoPanner(),
|
stereo_pan: context.createStereoPanner(),
|
||||||
fade_volume : context.createGain(),
|
fade_volume: context.createGain(),
|
||||||
primary_volume : context.createGain(),
|
primary_volume: context.createGain(),
|
||||||
secondary_volume : context.createGain(),
|
secondary_volume: context.createGain(),
|
||||||
relative_volume : context.createGain(),
|
relative_volume: context.createGain(),
|
||||||
paused : false,
|
paused: false,
|
||||||
video: false,
|
video: false,
|
||||||
video_el: null,
|
video_el: null,
|
||||||
chan_id: next_chan_id++,
|
chan_id: next_chan_id++,
|
||||||
@@ -278,7 +278,7 @@ let video_start = (c) => {
|
|||||||
c.video_el.muted = true;
|
c.video_el.muted = true;
|
||||||
c.video_el.play().then(() => {
|
c.video_el.play().then(() => {
|
||||||
// TODO?
|
// TODO?
|
||||||
}).catch( (e) => {
|
}).catch((e) => {
|
||||||
console.warn('Video is NOT playing even when muted', e.name);
|
console.warn('Video is NOT playing even when muted', e.name);
|
||||||
renpyAudio.videoPlayPrompt(renpyAudio._web_video_prompt, c.video_el);
|
renpyAudio.videoPlayPrompt(renpyAudio._web_video_prompt, c.video_el);
|
||||||
});
|
});
|
||||||
@@ -386,24 +386,24 @@ renpyAudio.queue = (channel, file, name, synchro_start, fadein, tight, start, en
|
|||||||
}
|
}
|
||||||
|
|
||||||
const q = {
|
const q = {
|
||||||
url: url,
|
url: url,
|
||||||
name : name,
|
name: name,
|
||||||
start : start, // TODO?
|
start: start, // TODO?
|
||||||
end : end, // TODO?
|
end: end, // TODO?
|
||||||
relative_volume : relative_volume,
|
relative_volume: relative_volume,
|
||||||
started : null,
|
started: null,
|
||||||
fadein : fadein, // TODO?
|
fadein: fadein, // TODO?
|
||||||
fadeout: null, // TODO?
|
fadeout: null, // TODO?
|
||||||
tight : tight, // TODO?
|
tight: tight, // TODO?
|
||||||
filter : renpyAudio.getFilter(afid),
|
filter: renpyAudio.getFilter(afid),
|
||||||
synchro_start : synchro_start,
|
synchro_start: synchro_start,
|
||||||
|
|
||||||
period_stats: [0, 0], // time sum, count
|
period_stats: [0, 0], // time sum, count
|
||||||
fetch_stats: [0, 0],
|
fetch_stats: [0, 0],
|
||||||
draw_stats: [0, 0, 0, 0], // time sum, count, first timestamp, last timestamp
|
draw_stats: [0, 0, 0, 0], // time sum, count, first timestamp, last timestamp
|
||||||
blob_stats: [0, 0],
|
blob_stats: [0, 0],
|
||||||
array_stats: [0, 0],
|
array_stats: [0, 0],
|
||||||
file_stats: [0, 0, 0, 0], // time sum, count, first timestamp, last timestamp
|
file_stats: [0, 0, 0, 0], // time sum, count, first timestamp, last timestamp
|
||||||
};
|
};
|
||||||
|
|
||||||
if (c.video_el === null) {
|
if (c.video_el === null) {
|
||||||
@@ -413,11 +413,11 @@ renpyAudio.queue = (channel, file, name, synchro_start, fadein, tight, start, en
|
|||||||
c.video_el.playsInline = true; // For autoplay on Safari
|
c.video_el.playsInline = true; // For autoplay on Safari
|
||||||
document.body.appendChild(c.video_el);
|
document.body.appendChild(c.video_el);
|
||||||
|
|
||||||
c.video_el.addEventListener('loadedmetadata', function() {
|
c.video_el.addEventListener('loadedmetadata', function () {
|
||||||
c.video_size = [c.video_el.videoWidth, c.video_el.videoHeight];
|
c.video_size = [c.video_el.videoWidth, c.video_el.videoHeight];
|
||||||
});
|
});
|
||||||
|
|
||||||
c.video_el.addEventListener('error', function(e) {
|
c.video_el.addEventListener('error', function (e) {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -433,7 +433,7 @@ renpyAudio.queue = (channel, file, name, synchro_start, fadein, tight, start, en
|
|||||||
c.is_playing = false;
|
c.is_playing = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
c.video_el.addEventListener('playing', function() {
|
c.video_el.addEventListener('playing', function () {
|
||||||
c.is_playing = true;
|
c.is_playing = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -462,19 +462,19 @@ renpyAudio.queue = (channel, file, name, synchro_start, fadein, tight, start, en
|
|||||||
}
|
}
|
||||||
|
|
||||||
const q = {
|
const q = {
|
||||||
source : null,
|
source: null,
|
||||||
buffer : null,
|
buffer: null,
|
||||||
name : name,
|
name: name,
|
||||||
start : start,
|
start: start,
|
||||||
end : end,
|
end: end,
|
||||||
relative_volume : relative_volume,
|
relative_volume: relative_volume,
|
||||||
started : null,
|
started: null,
|
||||||
fadein : fadein,
|
fadein: fadein,
|
||||||
fadeout: null,
|
fadeout: null,
|
||||||
tight : tight,
|
tight: tight,
|
||||||
file: file,
|
file: file,
|
||||||
filter : renpyAudio.getFilter(afid),
|
filter: renpyAudio.getFilter(afid),
|
||||||
synchro_start : synchro_start,
|
synchro_start: synchro_start,
|
||||||
};
|
};
|
||||||
|
|
||||||
function reuseBuffer(c) {
|
function reuseBuffer(c) {
|
||||||
@@ -868,7 +868,7 @@ renpyAudio.read_video = (channel, video_tex, width, height) => {
|
|||||||
|
|
||||||
if (DEBUG_OUT) {
|
if (DEBUG_OUT) {
|
||||||
// DEBUG Dumps all method calls to renpyAudio
|
// DEBUG Dumps all method calls to renpyAudio
|
||||||
renpyAudio._nodump = {'queue_depth': 1, 'playing_name': 1, 'video_ready': 1, 'read_video': 1};
|
renpyAudio._nodump = { 'queue_depth': 1, 'playing_name': 1, 'video_ready': 1, 'read_video': 1 };
|
||||||
renpyAudio = new Proxy(renpyAudio, {
|
renpyAudio = new Proxy(renpyAudio, {
|
||||||
get(target, prop) {
|
get(target, prop) {
|
||||||
const origMethod = target[prop];
|
const origMethod = target[prop];
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright 2004-2024 Tom Rothamel <pytom@bishoujo.us>
|
/* Copyright 2004-2025 Tom Rothamel <pytom@bishoujo.us>
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person
|
* Permission is hereby granted, free of charge, to any person
|
||||||
* obtaining a copy of this software and associated documentation files
|
* obtaining a copy of this software and associated documentation files
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
let afidToFilter = {0 : null};
|
let afidToFilter = { 0: null };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given an afid, return the filter associated with it. Returns null if the
|
* Given an afid, return the filter associated with it. Returns null if the
|
||||||
@@ -94,7 +94,7 @@ renpyAudio.disconnectFilter = function (filter, source, destination) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
renpyAudio.filter = { }
|
renpyAudio.filter = {}
|
||||||
let filter = renpyAudio.filter;
|
let filter = renpyAudio.filter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -112,7 +112,7 @@ filter.filterToFilter = function (filter1, filter2) {
|
|||||||
/**
|
/**
|
||||||
* Connects a filter to a node.
|
* Connects a filter to a node.
|
||||||
*/
|
*/
|
||||||
filter.filterToNode = function(filter, node) {
|
filter.filterToNode = function (filter, node) {
|
||||||
for (let output of filter.outputs) {
|
for (let output of filter.outputs) {
|
||||||
output.connect(node);
|
output.connect(node);
|
||||||
}
|
}
|
||||||
@@ -121,22 +121,22 @@ filter.filterToNode = function(filter, node) {
|
|||||||
/**
|
/**
|
||||||
* Connects a node to a filter.
|
* Connects a node to a filter.
|
||||||
*/
|
*/
|
||||||
filter.nodeToFilter = function(node, filter) {
|
filter.nodeToFilter = function (node, filter) {
|
||||||
for (let input of filter.inputs) {
|
for (let input of filter.inputs) {
|
||||||
node.connect(input);
|
node.connect(input);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
filter.Null = function() {
|
filter.Null = function () {
|
||||||
let node = new GainNode(renpyAudio.context, { gain: 1 });
|
let node = new GainNode(renpyAudio.context, { gain: 1 });
|
||||||
|
|
||||||
return {
|
return {
|
||||||
inputs: [ node ],
|
inputs: [node],
|
||||||
outputs: [ node ],
|
outputs: [node],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
filter.Crossfade = function(afid1, afid2, t) {
|
filter.Crossfade = function (afid1, afid2, t) {
|
||||||
let filter1 = renpyAudio.getFilter(afid1);
|
let filter1 = renpyAudio.getFilter(afid1);
|
||||||
let filter2 = renpyAudio.getFilter(afid2);
|
let filter2 = renpyAudio.getFilter(afid2);
|
||||||
|
|
||||||
@@ -150,13 +150,13 @@ filter.Crossfade = function(afid1, afid2, t) {
|
|||||||
gain2.gain.linearRampToValueAtTime(1, renpyAudio.context.currentTime + t);
|
gain2.gain.linearRampToValueAtTime(1, renpyAudio.context.currentTime + t);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
inputs: [ ...filter1.inputs, ...filter2.inputs ],
|
inputs: [...filter1.inputs, ...filter2.inputs],
|
||||||
outputs: [gain1, gain2],
|
outputs: [gain1, gain2],
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
filter.Biquad = function(kind, frequency, Q, gain) {
|
filter.Biquad = function (kind, frequency, Q, gain) {
|
||||||
let node = new BiquadFilterNode(renpyAudio.context, {
|
let node = new BiquadFilterNode(renpyAudio.context, {
|
||||||
type: kind,
|
type: kind,
|
||||||
frequency: frequency,
|
frequency: frequency,
|
||||||
@@ -170,7 +170,7 @@ filter.Biquad = function(kind, frequency, Q, gain) {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
filter.Sequence = function(...filters) {
|
filter.Sequence = function (...filters) {
|
||||||
let first = filters[0];
|
let first = filters[0];
|
||||||
let last = filters[filters.length - 1];
|
let last = filters[filters.length - 1];
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@ filter.Sequence = function(...filters) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
filter.Mix = function(...filters) {
|
filter.Mix = function (...filters) {
|
||||||
let inputs = [];
|
let inputs = [];
|
||||||
let outputs = [];
|
let outputs = [];
|
||||||
|
|
||||||
@@ -199,7 +199,7 @@ filter.Mix = function(...filters) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
filter.Multiply = function(factor) {
|
filter.Multiply = function (factor) {
|
||||||
let node = new GainNode(renpyAudio.context, { gain: factor });
|
let node = new GainNode(renpyAudio.context, { gain: factor });
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -209,7 +209,7 @@ filter.Multiply = function(factor) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
filter.Delay = function(delay) {
|
filter.Delay = function (delay) {
|
||||||
|
|
||||||
if (typeof delay !== "number") {
|
if (typeof delay !== "number") {
|
||||||
delay = delay[0];
|
delay = delay[0];
|
||||||
@@ -223,7 +223,7 @@ filter.Delay = function(delay) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
filter.Comb = function(delay, child, multiplier, wet) {
|
filter.Comb = function (delay, child, multiplier, wet) {
|
||||||
if (typeof delay !== "number") {
|
if (typeof delay !== "number") {
|
||||||
delay = delay[0];
|
delay = delay[0];
|
||||||
}
|
}
|
||||||
@@ -237,8 +237,8 @@ filter.Comb = function(delay, child, multiplier, wet) {
|
|||||||
multiplierNode.connect(delayNode);
|
multiplierNode.connect(delayNode);
|
||||||
|
|
||||||
let rv = {
|
let rv = {
|
||||||
inputs: [ delayNode ],
|
inputs: [delayNode],
|
||||||
outputs: [ multiplierNode ],
|
outputs: [multiplierNode],
|
||||||
};
|
};
|
||||||
|
|
||||||
if (wet) {
|
if (wet) {
|
||||||
@@ -252,7 +252,7 @@ filter.Comb = function(delay, child, multiplier, wet) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
filter.WetDry = function(child, wet, dry) {
|
filter.WetDry = function (child, wet, dry) {
|
||||||
let wetNode = new GainNode(renpyAudio.context, { gain: wet });
|
let wetNode = new GainNode(renpyAudio.context, { gain: wet });
|
||||||
let dryNode = new GainNode(renpyAudio.context, { gain: dry });
|
let dryNode = new GainNode(renpyAudio.context, { gain: dry });
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2004-2024 Tom Rothamel <pytom@bishoujo.us>
|
# Copyright 2004-2025 Tom Rothamel <pytom@bishoujo.us>
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person
|
# Permission is hereby granted, free of charge, to any person
|
||||||
# obtaining a copy of this software and associated documentation files
|
# obtaining a copy of this software and associated documentation files
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2004-2024 Tom Rothamel <pytom@bishoujo.us>
|
# Copyright 2004-2025 Tom Rothamel <pytom@bishoujo.us>
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person
|
# Permission is hereby granted, free of charge, to any person
|
||||||
# obtaining a copy of this software and associated documentation files
|
# obtaining a copy of this software and associated documentation files
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2004-2024 Tom Rothamel <pytom@bishoujo.us>
|
# Copyright 2004-2025 Tom Rothamel <pytom@bishoujo.us>
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person
|
# Permission is hereby granted, free of charge, to any person
|
||||||
# obtaining a copy of this software and associated documentation files
|
# obtaining a copy of this software and associated documentation files
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2004-2024 Tom Rothamel <pytom@bishoujo.us>
|
# Copyright 2004-2025 Tom Rothamel <pytom@bishoujo.us>
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person
|
# Permission is hereby granted, free of charge, to any person
|
||||||
# obtaining a copy of this software and associated documentation files
|
# obtaining a copy of this software and associated documentation files
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2004-2024 Tom Rothamel <pytom@bishoujo.us>
|
# Copyright 2004-2025 Tom Rothamel <pytom@bishoujo.us>
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person
|
# Permission is hereby granted, free of charge, to any person
|
||||||
# obtaining a copy of this software and associated documentation files
|
# obtaining a copy of this software and associated documentation files
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright 2004-2024 Tom Rothamel <pytom@bishoujo.us>
|
# Copyright 2004-2025 Tom Rothamel <pytom@bishoujo.us>
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person
|
# Permission is hereby granted, free of charge, to any person
|
||||||
# obtaining a copy of this software and associated documentation files
|
# obtaining a copy of this software and associated documentation files
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
# Copyright 2004-2024 Tom Rothamel <pytom@bishoujo.us>
|
# Copyright 2004-2025 Tom Rothamel <pytom@bishoujo.us>
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person
|
# Permission is hereby granted, free of charge, to any person
|
||||||
# obtaining a copy of this software and associated documentation files
|
# obtaining a copy of this software and associated documentation files
|
||||||
|
|||||||
Reference in New Issue
Block a user