Можно ли в 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
Sirojiddin Juraev — Sirojiddin Juraev (Self-released, 2017)
#dutar#setar#shashmaqom#Tajikistan
Сироджиддин Джураев — композитор и аранжировщик из Таджикистана, создавший множество виртуозных произведений для дутара, танбура и сато. Этот альбом, записанный при поддержке фондаКарима Ага-хана, лидера мусульман-исмаилитов, включает как собственные произведения Джураева, так и классические турецко-арабо-персидские композиции. Сироджиддин исполняет произведения сольно, а также в сопровождении Аббосома Косимова (ударные) и Мукстора Мубораккадамова (сетар). Музыкант демонстрирует великолепное владение дутаром. Несмотря на то, что у инструмента всего две струны, Джураеву удается извлекать из него далеко не тривиальные мелодии и звуки.
Spotify | AppleMusic | VK
Его величество сетар👑
Сетар (сеттар) - традиционный иранский струнный музыкальный инструмент с глубоким и мистическим звучанием, изготовленный из грецкого ореха и древесины тутового дерева (шелковицы). Название "сетар" переводится как "три струны" и происходит от персидских слов "се" (три) и "тар" (струна).
Сетар — это не просто музыкальный инструмент, а символ иранской идентичности и искусства. Этот инструмент часто звучит в Иране и странах, которые имели давние культурные связи с Ираном, включая Таджикистан, Афганистан, Азербайджан, Узбекистан, Армению и Индию.
#Иран#Нозари#Ирантур#тревелблог#setar#instrumento#Iran#PersianИран - тонкости туризма
Oliver Doerell & Jawad Salkhordeh — سایه [sāje] (Sonic Pieces, 2021)
#ambient#electronic#tombak#setar#Iran#Belgium
Транскультурный проект бельгийца Оливера Дорелла и иранца Джавада Салкхорде (جواد سالخورده), в котором абстрактные электронные фактуры пересекаются со звуками персидской перкуссии и струнных. Оливер Дорелл — один из основателей музыкальных проектов Dictaphone, SWOD и Cummi Flu. Он также сочинял музыку для фильмов и театральных постановок. Музыкальная палитра Оливера простирается от работ с аналоговыми синтезаторами до электроакустического джаза. Джавад Сальхорде родился в 1980 году на севере Ирана, где обучался игре на тонбаке и cетаре. Он живет в Берлине с 2010 года и участвует в проектах Sistanagila и Duo Safar.
Spotify | AppleMusic | Bandcamp
Parviz Meshkatian & Mohammad Reza Shajarian — Bidad (Delawaz Records, 1985)
#persian_classical#santur#tar#setar#tombak#Iran
После иранской революции 1979 года молодое поколение традиционных музыкантов посвящало свои работы преимущественно прославлению перемен. Это дало новую жизнь традиционной музыке, имевшей на тот момент репутацию устаревшей, но также придало ей идеологическую окраску. Bidad — одно из первых произведений того периода, показавших иранской музыке новый способ стать актуальной вне политического контекста.
Bidad (بیداد), что значит «безудержный», — совместная работа сантуриста Парвиза Мешкатяна и певца Мохаммеда Резы Шаджаряна. Музыка на альбоме написана на стихи средневековых ширазских поэтов Саади и Хафиза. Также на нём отметился выдающийся тарист Мохаммад Реза Лотфи.
Альбом разбит на две части, в каждой из которых используются разные «дастгяхи». Дастгях (دستگاه) — набор правил построения композиции в иранской классической музыке, схожий с индийской рагой или арабским макамом. Дастгях можно понимать и как лад, или набор нот, используемый в начальной части многосоставного произведения.
С дастгяхом связанны несколько гуше (گوشه) — небольших музыкальных идей. Исполнять произведение в определенном дастгяхе — значит переходить от гуше к гуше, демонстрируя слушателю многогранность дастгяха. Гуше «бидад», вокруг которого построено звучание альбома, как раз и дал ему название.
В первой части альбома, начинающейся с композиции Moghadameh (مقدمه), используется дастгях хумаюн (همایون), в европейской музыке соответствующий мажорному ладу с пониженной на четверть тона 2 ступенью и с пониженными на полтона 6 и 7 ступенями (C Dk E F G A♭ B♭).
Во второй части альбома, начинающейся с композиции Pishdaramade Homayoun (پیشدرآمد همایون), помимо хумаюна используется дастгях шур (شور), который соответствует мажорному ладу с пониженной на четверть тона 2 ступенью и с пониженными на полтона 3, 6 и 7 ступенями (C Dk E♭ F G A♭ B♭).
Spotify | AppleMusic | VK | Telegram
Various Artists — In the Footsteps of Babur: Musical Encounters from the Lands of the Mughals (Smithsonian Folkways, 2010)
#traditional#dutar#setar#tabla#rubab#santur#Afghanistan#India#Tajikistan
«В месяц Рамадан 899 года и на двенадцатом году жизни я стал правителем в стране Ферганской», — так начинается автобиография Захируддина Мухаммада Бабура, основателя Империи Великих Моголов. Благодаря Smithsonian Folkways Recordings и благотворительной организацииКарима Ага Хана, лидера мусульман-исмаилитов, пять музыкантов из Центральной Азии, Афганистана и Северной Индии собрались вместе и записали совместный альбом, демонстрирующий музыкальное разнообразие территорий, которые некогда называлась Империей Великих Моголов. В число музыкантов входят исполнитель на индийском сантуреРахул Шарма, исполнитель на афганском рубабеХомаюн Сахи, афганско-американский виртуоз таблаСалар Надер, бадахшанский сетарист Мухтор Мубораккадомов и мастер дутараСирожиддин Джураев.
Spotify | AppleMusic
Various Artists — Classical Music of Iran: The Dastgah Systems (Folkways Records, 1991)
#traditional#dastgah#avaz#kamanche#nei#santur#setar#tar#violin#tombak#Iran
Альбом Classical Music of Iran: The Dastgah Systems, впервые изданный лейблом Folkways Records в 1966 году, представляет слушателям один из краеугольных камней иранской музыкальной традиции — систему дастгяхов (دستگاه). Термин дастгях (دستگاه) по значению близок к музыкальному ладу, но, помимо характерного набора звуков, обладает рядом мелодических формул и стремится передать определенное эмоциональное состояние. У каждого дастгяха (دستگاه) существуют свои «диалекты» — авазы (آواز). Например, дастгях Шур (شور) может включать в себя авазы Афшари (افشاری), Дашти (دشتی) или Баяте Тюрк (بیات ترک), каждый из которых меньший по объёму, но обладает более конкретной мелодической направленностью.
В этой подборке собраны работы выдающихся исполнителей классической иранской музыки, ещё совсем юных на момент записи. Композиции демонстрируют как основные дастгяхи, так и их производные авазы.Ахмад Эбади исполняет дастгях Махур (ماهور) на сетаре, а также аваз Дашти (دشتی) на таре. Хусанг Зариф, мастер тара, исполняет дастгях Чахаргях (چهارگاه) и авазы Баят Тюрк (بیات ترک) и Абу Ата (ابوعطا). Сантур Мохаммада Хейдари звучит в авазе Баят Эсфахан (بیات اصفهان), а кеманче Асгара Бахараи — в авазе Афшари. Вокал Хатере Парване в дастгяхе Шур (شور) и авазе Абу Ата (ابوعطا) — почти акапельный, лишь немного обрамлённый инструментальным фоном — звучит особенно пронзительно и заметно выделяется на фоне остальной подборки. Дастгях Хомаюн (همايون) представлен найем Хасана Кассайи. В интерпретации дастгяха Сега (سهگاه) звучат скрипка Али Таджвиди, вокал Хоссейна Фахтеи и томбак Нассера Эффетаха.
🔗Spotify | AppleMusic | Telegram