Можно ли в Python создавать бинарные файлы? Конечно можно.
Для этого в Python есть следующие инструменты:
▫️ тип данных bytes и bytearray
▫️ открытие файла в режиме wb (write binary) или rb (read binary)
▫️ модуль struct
Про модуль struct поговорим в первую очередь.
Файл в формате JSON или Yaml внутри себя содержит разметку данных. Всегда можно определить где список начался а где закончился. Где записана строка а где словарь. То есть формат записи данных содержит в себе элементы разметки данных.
В binary-файле данные не имеют визуальной разметки. Это просто байты, записанные один за другим. Правила записи и чтения находятся вне файла.
Модуль struct как раз и помогает с организацией данных в таком файле с помощью определения форматов записи для разных частей файла.
Модуль struct преобразует Python-объекты в массив байт, готовый к записи в файл и имеющий определённый вид.
Для этого всегда следует указывать формат преобразования (или, как оно здесь называется - запаковки).
Формат нужен для того, чтобы выделить достаточное количество байт для записи конкретного типа объекта. В последствии с помощью того же формата будет производиться чтение.
При этом следует помнить что мы говорим о типах языка С а не Python.
Именно формат определяет, что записано в конкретном месте файла, число, строка или что-то еще.
Вот какие токены формата у нас есть.
Помимо этого, первым символом можно указать порядок байтов. На разных системах одни и те же типы данных могут записываться по-разному, поэтому желательно указать конкретный способ из доступных. Если этого не сделать, то используется символ '@', то есть нативный для текущей системы.
В строке формата мы пишем в каком порядке и какие типы собираемся преобразовать в байты.
Запакуем в байты простое число, токен "i".
>>> import struct
>>> struct.pack('=i', 10)
b'\n\x00\x00\x00'
Теперь несколько float, при этом нужно передавать элементы не массивом а последовательностью аргументов.
>>> struct.pack('=fff', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Вместо нескольких токенов можно просто указать нужное количество элементов перед одним токеном, результат будет тот же.
>>> struct.pack('=3f', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Теперь запакуем разные типы
>>> data = struct.pack('=fiQ', 1.0, 4, 100500)
я запаковал типы float, int и unsigned long long (очень большой int, на 8 байт)
b'\x00\x00\x80?\x04\x00\x00...'
Распаковка происходит аналогично, но нужно указать тот же формат, который использовался при запаковке. Результат возвращается всегда в виде кортежа.
>>> struct.unpack('=fiQ', data)
(1.0, 4, 100500)
Как видите, ничего страшного!
#lib#basic
Nora Brown — Long Time To Be Gone (Jalopy Records, 2022)
#traditional#appalachian#banjo#United_States
Нора Браун специализируется на традиционной музыке Южных Аппалачей и мастерски владеет банджо и гитарой. В детстве она обучалась игре на банжо у звезды американского фолк-ривайвла Джона Коэна, а также у не менее известных фолк-исполнителей Джорджа Гибсона, Ли Секстона и Арта Розенбаума. Long Time To Be Gone — третий альбом Норы, записанный в церкви Святой Анны, возведенной в Бруклин-Хайтс в конце XIX века.
Помимо велеколепной акустики церкви Святой Анны, Long Time To Be Gone примечателен уникальным набором инструментов, каждый из которых связан с музыкальной родословной Браун. Среди инструментов Норы — банджо Luscomb 1888 года, принадлежавшее её прапрадеду; безладовое банджо, изготовленное её отцом; и пятиструнное банджо, на котором когда-то Роско Халкомб записал свой альбом High Lonesome Sound. Роск Халкомб общался с учителем Норы, Джоном Коэном, а его музыкой в свое время восхищался даже Боб Дилан. Теперь его пятиструнное банжо хранится в Библиотека Конгресса США, но на время записи попало в руки к Норе.
🔗Spotify | AppleMusic | Bandcamp
Inger Nielsen — Inger Nielsen Sings Danish Folk Songs (Folkways Records, 1965)
#traditional#guitar#banjo#Denmark
Ингер Нильсен записала этот альбом в Нью-Йорке в 1965 году по настоянию своего бойфренда, фолк-музыканта и артиста Folkways RecordsПитера Ла Фаржа. На гитаре и банджо ей аккомпанирует Барри Корнфельд.
Сначала режет слух соседство патриотических произведений композитора Карла Нильсена — Denmark in a Thousand Years и Our Home, You Danish Earth — с песнями о повседневности и личных трагедиях. Однако на контрасте гимны теряют холодный официоз. Они начинают звучать как часть той же жизни, что дышит в историях простых людей.
Так, Limfjorden посвящена красоте фьордов и жизни у их берегов. The Roadmaker — история мастера, посвятившего жизнь работе с камнем, но так и не удостоившегося надгробия на собственной могиле. Saturday Evening — трагическая песня о девушке, напрасно ждавшей возлюбленного и увидевшей его на следующий день в церкви уже с другой.
На сборнике есть несколько песен о детстве: Mother and a Child, колыбельная Ганса Христиана Андерсена, и Born in Jutland, воспоминание о юношеских годах, проведённых в Ютландии. Есть и песня на ютландском диалекте о любви пастуха и пастушки — Mads Doss.
Песня Roselil рассказывает о юноше, который развесил золотые кольца на деревьях в саду своей возлюбленной. Та поклялась, что не будет верна ни одному мужчине, пока не зацветут золотые цветы. Фольклорная фантазия звучит и в The Gold Dice — балладе о цыгане, выигравшем в кости руку принцессы и её царство.
Завершающая композиция, En lærke letted («Взлетел жаворонок»), посвящена освобождению Дании после Второй мировой войны. Жаворонок здесь символизирует не только весну, радость и надежду, но и саму страну. Какое-то время эта птица считалась символом Дании, но потом уступила место лебедю.
🔗Spotify | Telegram
Oak and Ivy — Holler (Self-Released, 2024)
#traditional#field_recording#appalachian#oldtime#clawhammer#banjo#United_States
Holler — сольная акустическая запись, сделанная ночью в Аппалачах. В альбом вошли традиционные песни региона, исполненные без студийной обработки, в живой и непосредственной манере. Среди них, например, — The Cuckoo, английская народная песня, получившая широкое распространение в Северной Америке, и Cluck Old Hen, один из старейших образцов аппалачского репертуара, впервые записанный в 1923 году Фиддлином Джоном Карсоном, но известный в устной традиции как минимум с 1886 года.
🔗Bandcamp | Telegram
Various Artists — Industrial Strength Bluegrass (Folkways Records, 2021)
#traditional#bluegrass#banjo#fiddle#mandolin#appalachian#Ohio#United_States
Industrial Strength Bluegrass рассказывает о том, как выходцы из Аппалачей, переехавшие на юго-запад Огайо в середине XX века, принести с собой музыку блюграсс и вплели её в ритм индустриального города. Песни альбома отражают жизнь мигрантов, проходящую между заводскими цехами и субботними вечерами с банджо; передают ностальгию по родным горам; показывают, как блюграсс адаптировался в новом окружении, не теряя своей музыкальной сути.
Альбом спродюсировал музыкант и радиоведущий Джо Маллинз, а в записи приняли участие многие звезды современного блюграсса, включая Ронду Винсент,Бобби Осборна и самого Маллинза. Расширенное виниловое издание альбома включает архивные записи The Stanley Brothers,Larry Sparks,Red Allen & The Allen Brothers, которые помогают еще глубже погрузиться в музыкальный контекст «индустриального блюнрасса».
🔗AppleMusic | Spotify | YouTube | Deezer | TIDAL | Bandcamp
Jerron Paxton — Things Done Changed (Folkways Records, 2024)
#blues#oldtime#ragtime#cajun#guitar#banjo#harmonica#United_States
Джеррон Пакстон — мультиинструменталист из Лос-Анджелеса, выросший в семье выходцев из Луизианы. Он исполняет блюз, рэгтайм, олдтайм и каджунскую музыку — локальную традицию Луизианы, возникшую среди франкоязычного населения и вобравшую в себя элементы французского фольклора, креольной культуры и ритмики африканской диаспоры.
Семья Пакстона перебралась в Калифорнию после убийства Эмметта Тилла — четырнадцатилетнего подростка, линчёванного в Миссисипи в 1955 году после обвинения со стороны белой женщины. Убийство Эмметта Тилла получило широкую огласку и стало поворотным моментом в истории борьбы за гражданские права чернокожих в США. Многие афроамериканцы после этого предпочли уехать с Юга, и Южный Лос-Анджелес, куда попали родственники Пакстона, стал одним из новых центров их жизни — не чужим, а скорее пересобранным Луизианским югом на новом месте.
Things Done Changed — первый альбом Джеррона Пакстона, целиком состоящий из авторских песен. При этом, как и предыдущие работы музыканта, он выдержан в стилистике традиционной афроамериканской музыки первой половины XX века. Музыкальные интересы Пакстона начали формироваться ещё в детстве — он подолгу слушал радио, стараясь уловить манеру исполнения, структуру старинных песен и их скрытые смыслы. Со временем он освоил гитару, банджо, фортепиано, скрипку и другие инструменты, звучащие в афроамериканской музыкальной традиции.
На альбоме Things Done Changed Пакстон создаёт авторские композиции, в которых стилистика прошлого становится языком разговора о настоящем. Например, в песне So Much Weed он с иронией и горечью поёт о том, как чернокожие американцы до сих пор отбывают сроки за незначительные правонарушения, связанные с марихуаной, — в то время как в большинстве штатов её продажа уже давно легализована.
🔗Spotify | AppleMusic | YouTube | Bandcamp | Telegram
Tail Toddle — Tot Leeringhe Ende Vermaeck (Stoof, 1977)
#traditional#medieval#ballad#banjo#guitar#dulcimer#bouzouki#epinette#mandolin#Netherlands
Почти никому не известный единственный релиз коллектива Tail Toddler. Группа исполняла средневековые традиционные голландские баллады в сопровождении мандалины и флейты. Гравюра на обложке принадлежит перу Лукаса ван Лейдена и была выполнена в Амстердаме в 1524 году.
🔗Telegram