itβs the week before the week before spooksmas.
on friday i checked the calendar to see if it was monday.
π΅ you could spend all day on a swing eating a baguette
but why do boring things like that when thereβs the internet? π΅

Imagine a world where every word ever written, every picture ever painted and every film ever shot could be viewed instantly in your home via an Information Superhighway.
In fact, thatβs already happening on something called The Internet.
The president is committed to integrating this dynamic medium into The White House
- π on-line magazines!
- π¦ dinosaur facts!
- π£οΈ chat rooms
- π₯° verdana on bermuda cocktail on wordpress
verdana on bermuda cocktail on wordpress.
black ink pen on bright yellow paper with a thorntonβs fudge bar taped on and
posted.
i can draft the memo, have bobβs OK on it, and immediately mail to California. Theyβll receive it in about 2 minutes, over the telephone line
<frameset> mafia cheat site. document.write("winsock packet editor").
FoohFooh, a bobbaing hobba of all people, βcan i call you chee?β yes, in
fact everyone will from now on Trina, thank you.
ice rink skating, singing jefferson airplane, we both wearing rabbit ears. and
then ___mr.big___ stole my spyro egg. and i sit in all my riches (literally
hundreds of those limited time only coconut photo stands, thousands of dollars
worth of unearned furni transferred to me when ___mr.big___βs account was
revoked), but itβs so empty without the spyro egg (it was in his Hand when the
deletion happened, and so was lost forever). not just because the spyro egg is
rare (50 ever made), but because you gave me that spyro egg (1 ever made).
and in another life, <*biiiy> told everyone in #green room about DAT Politics β Wow Twist! and you
reconnected after hurricaine katrina and there was someone who loved me but
then there was you.
sweetchee, sweetchee, rocking chair on the patio
bird. said βjay kayβ out loud on that Skype call. then hannaβs gay
friend said βlolβ out loud in Golden Discs on saturday.
-
goldwave.exe
-
ableton 2.0 cracked.rar
-
soundclub.exe
yet now, iβm being chased down the street by a military grade robot dog with an
internet connected llm brain shouting all my darkest secrets at strangers
because i have not yet complied with its wishes.
multiple people have uploaded our whole chatlog to chatgpt for analysis.
23andMe nurture edition.
well, weβll always have blood and heartbeats
talking of blood and heartbeats, i made some multisampler presets for the teenage engineering op-xy and made a website for them:
https://quietparty.net/presets/op-xy/

i also made an op-xy drum kit maker like the one i made for the deluge last
year:
https://synth.party/opxy/

i really should rip the code for splitting op-1 drum sounds into parts out of
this and make it available as a library, because i think it might be the only
implementation that works with all 3 versions of the op-1 drum format
(firmwares 1 & 2, and field)
the code
function op1OffsetToSampleIndex(num = 0, stereo = false) {
// i have NO IDEA why it's 2032, i don't understand how that relates to
// anything. not to 65536, not to 44100, not to 2147483646, not to 12
// seconds, not to 16 bits. kara points out that it is 127*16, which
// _are_ both computer numbers. but why?
// but i've tried all the other numbers and this is the best number,
// hands down, no question
// the 1219.2 i got by 2032*12/20
// (because on the field there are 20 tracks)
// the "stereo" prop is the indicator that you are reading a field kit
// it's funny, because there's this drum_version field but that only
// changed once when they changed the format from big endian to little endian
// so the effective version number is something you have to calculate from
// .drum_version and .stereo
const divisor = stereo == true ? 1219.2 : 2032
return Math.floor(num / divisor / 2) * 2
}
// todo use text decoder?
/**
* @param {DataView} view
* @param {number} offset
* @param {number} length
*/
function readString(view, offset, length) {
let chars = []
for (let i = offset; i <= offset + length - 1; i++) {
chars.push(view.getUint8(i))
}
return String.fromCharCode(...chars.filter(n => n))
}
/**
* Get the individual chunks of an op-1 drum aif as arraybuffers
* return array will be .length=1 if aif is not an op-1 kit
* @param {ArrayBuffer} aif
* @returns {Array<ArrayBuffer>}
*/
function split(aif) {
const view = new DataView(aif)
const sampleRate = -1
const numberOfChannels = -1
/** @type {ArrayBuffer?} */
let ssnd = null
/** @type {{
* start: number[],
* end: number[],
* stereo: boolean,
* drum_version: number
* }?}
* */
let op1Config = null
for (let offset = 0; offset + 4 < aif.byteLength; offset += 1) {
const id = readString(view, offset, 4)
// todo write a chunk lib
if (id == "COMM") {
const _len = view.getUint32(offset + 4)
numberOfChannels = view.getInt16(offset + 8)
const _numSampleFrames = view.getUint32(offset + 10)
// `10` tells us this 16-bit audio
const _sampleSize = view.getInt16(offset + 14)
// lmao i have no idea how to read a long double
// https://wiki.multimedia.cx/index.php/Audio_Interchange_File_Format
/*
* SignBit 1 bit
* Exponent 15 bits
* Mantissa 64 bits
*/
// [becky avery doing chee voice voice] however,
// on the op-1 and field it's always `0x400EAC44000000000000`,
// i.e. 44.1k
sampleRate = 44100
}
if (id == "APPL") {
const len = view.getInt32(offset + 4)
const op1 = readString(view, offset + 8, 4)
if (op1 != "op-1") {
continue
}
const json = readString(view, offset + 12, len - 4)
try {
op1Config = JSON.parse(json)
} catch (error) {
console.error(error)
console.info(json)
}
}
if (id == "SSND") {
const len = view.getUint32(offset + 4)
ssnd = aif.slice(offset + 8, offset + 8 + len)
}
}
if (!ssnd) {
throw new Error(`did not find pcm block?`)
}
if (op1Config && op1Config.drum_version) {
return op1Config.start
.map(
/**
* @param {number} s
* @param {number} index
*/
(s, index) => {
const e = op1Config.end[index]
const start = op1OffsetToSampleIndex(s, op1Config.stereo)
const end = op1OffsetToSampleIndex(e, op1Config.stereo)
if (start < end) {
const pcm = ssnd.slice(
start * numberOfChannels,
end * numberOfChannels
)
return decode16BitPCM(pcm, {
numberOfChannels,
sampleRate,
littleEndian: op1Config.drum_version == 2,
})
}
}
)
.filter(Boolean)
} else {
return [
decode16BitPCM(ssnd, {
numberOfChannels,
sampleRate,
// todo detect
littleEndian: true,
}),
]
}
}
/**
* @typedef {Object} Decode16BitPCMOptions
* @prop {number} numberOfChannels
* @prop {number} sampleRate
* @prop {boolean} [littleEndian]
*/
/**
* @param {ArrayBuffer} pcm
* @param {Decode16BitPCMOptions} options
*/
export function decode16BitPCM(pcm, options) {
const {numberOfChannels, sampleRate, littleEndian = true} = options
let audiobuffer = new AudioBuffer({
numberOfChannels,
length: pcm.byteLength / numberOfChannels / 2,
sampleRate,
})
for (let channel = 0; channel < numberOfChannels; channel++) {
let channelData = audiobuffer.getChannelData(channel)
let view = new DataView(pcm)
for (
let i = 0, j = channel * 2;
i < channelData.length;
i++, j += numberOfChannels * 2
) {
let sample = view.getInt16(j, littleEndian)
channelData[i] = sample / 0x8000
}
}
return audiobuffer
}