A four-song EP recorded in a converted ferry cabin off the Hvalfjörður. Streaming links, lyrics, and pressing notes for every track below.
Lyrics · Midnight Telegraph
Wires hum low between the pylons and the pines,
a code I learned before I knew my own name.
The receiver sleeps in its cradle of dust,
and the night folds itself like a letter unstamped.
Send it slow, send it slow —
midnight telegraph, I am listening still.
The river runs silver beneath the frost,
and the answer comes back when it will.
I wrote your name in the margin of rain,
I wrote it again in the back of my hand.
The signal goes out like a lantern going out,
and the dark is a country I half‑understand.
Lyrics · Lantern Year
We kept a fire in a jar by the door,
counted the year in the wax that fell.
January taught us the weight of small things,
February said: now keep them well.
Lantern year, lantern year —
the light that holds when the rest goes out.
Lantern year, lantern year,
we are still here, we are still about.
November opens its long, slow eye,
December writes what November won't.
Every month a small blue flame,
every month another font.
Lyrics · Frost & Static
The radio coughed up a country song,
half‑buried under the hiss and the snow.
I turned the dial to the place you were,
but the place you were had nowhere to go.
Frost on the window, frost on the wire,
frost on the back of the hand that wrote.
Everything I said came back as a sound
that nobody living would ever quote.
Stay, signal — stay, signal —
even the static is somebody's voice.
Lyrics · Aurora, Unsent
I wrote you a letter in green and in red,
folded it twice, then I folded it more.
The postman said the address was a colour
that didn't exist on any shore.
So I sent it up where the cold air runs thin,
where the day begins in a curtain of light.
Aurora, unsent — keep it for me,
I'll be along in a year or a night.
Восемь готовых рецептов — копируйте и встраивайте в свой проект.
const throttle = (fn, ms) => {
let last = 0;
return (...args) => {
const now = Date.now();
if (now - last >= ms) {
last = now;
fn(...args);
}
};
}; const clone = (v) => {
if (v === null || typeof v !== 'object') return v;
return structuredClone(v);
}; const uuid = () =>
([1e7]+-1e3+-4e3+-8e3+-1e11)
.replace(/[018]/g, c =>
(c ^ (crypto.getRandomValues(
new Uint8Array(1))[0] & 15 >> c / 4)
).toString(16)
); const getJSON = async (url) => {
const res = await fetch(url);
if (!res.ok) throw new Error(res.statusText);
return res.json();
}; const groupBy = (arr, key) =>
arr.reduce((acc, item) => {
const k = item[key];
(acc[k] ??= []).push(item);
return acc;
}, {}); const fmt = (d) =>
new Intl.DateTimeFormat('ru-RU', {
day: '2-digit',
month: 'long',
year: 'numeric'
}).format(new Date(d)); const store = {
get: (k, d = null) =>
JSON.parse(localStorage.getItem(k) ?? d),
set: (k, v) =>
localStorage.setItem(k, JSON.stringify(v))
};