Это что получается 1251 песня
Автоопределение кодировки текста
Введение
Я очень люблю программировать, я любитель и первый и последний раз заработал на программировании в далёком 1996 году. Но для автоматизации повседневных задач иногда что-то пишу. Примерно год назад открыл для себя golang. В качестве инструмента создания утилит golang оказался очень удобным. Итак.
Возникла потребность обработать большое количество (больше тысячи, так и вижу улыбки профи) архивных файлов со специальной геофизической информацией. Формат файлов текстовый, простой. Если вдруг интересно то это LAS формат.
LAS файл содержит заголовок и данные.
Данные практически CSV, только разделитель табуляция или пробелы.
А заголовок содержит описание данных и вот в нём обычно содержится русский текст. Это может быть название месторождения, название исследований, записанных в файл и пр.
Файлы эти созданы в разное время и в разных программах, доходит до того, что в одном файле часть в кодировке CP1251, а часть в CP866. Файлы эти мне нужно обработать, а значит понять. Вот и потребовалось определять автоматически кодировку файла.
В итоге изобрёл велосипед на golang и соответственно родилась маленькая библиотечка с возможностью детектировать кодовую страницу.
Про кодировки. Не так давно на хабре была хорошая статья про кодировки Как работают кодировки текста. Откуда появляются «кракозябры». Принципы кодирования. Обобщение и детальный разбор Если хочется понять, что такое “кракозябры” или “кости”, то стоит прочитать.
В начале я накидал своё решение. Потом пытался найти готовое работающее решение на golang, но не вышло. Нашлось два решения, но оба не работают.
Обе уверенно ошибаются на некоторых кодировках. Стандартная та вообще почти ничего определить не может по текстовым файлам, оно и понятно, её для html страниц делали.
При поиске часто натыкался на готовые утилиты из мира linux — enca. Нашёл её версию скомпилированную для WIN32, версия 1.12. Её я тоже рассмотрю, там есть забавности. Я прошу сразу прощения за своё полное незнание linux, а значит возможно есть ещё решения которые тоже можно попытаться прикрутить к golang коду, я больше искать не стал.
Сравнение найденных решений на автоопределение кодировки
Подготовил каталог softlandia\cpd тестовые данные с файлами в разных кодировках. Содержимое файлов очень короткое и одинаковое. Одна строка “Русский в кодировке CodePageName”. Дополнил файлами со смешением кодировок и некоторыми сложными случаями и попробовал определить.
Мне кажется, получилось забавно.
# | Кодировка | html/charset | saintfish/chardet | softlandia/cpd | enca |
---|---|---|---|---|---|
1 | CP1251 | windows-1252 | CP1251 | CP1251 | CP1251 |
2 | CP866 | windows-1252 | windows-1252 | CP866 | CP866 |
3 | KOI8-R | windows-1252 | KOI8-R | KOI8-R | KOI8-R |
4 | ISO-8859-5 | windows-1252 | ISO-8859-5 | ISO-8859-5 | ISO-8859-5 |
5 | UTF-8 with BOM | utf-8 | utf-8 | utf-8 | utf-8 |
6 | UTF-8 without BOM | utf-8 | utf-8 | utf-8 | utf-8 |
7 | UTF-16LE with BOM | utf-16le | utf-16le | utf-16le | ISO-10646-UCS-2 |
8 | UTF-16LE without BOM | windows-1252 | ISO-8859-1 | utf-16le | unknown |
9 | UTF-16BE with BOM | utf-16le | utf-16be | utf-16be | ISO-10646-UCS-2 |
10 | UTF-16BE without BOM | windows-1252 | ISO-8859-1 | utf-16be | ISO-10646-UCS-2 |
11 | UTF-32LE with BOM | utf-16le | utf-32le | utf-32le | ISO-10646-UCS-4 |
12 | UTF-32LE without BOM | windows-1252 | utf-32le | utf-32le | ISO-10646-UCS-4 |
13 | UTF-32BE with BOM | windows-1252 | utf-32be | utf-32be | ISO-10646-UCS-4 |
14 | UTF-32BE without BOM | windows-1252 | utf-32be | utf-32be | ISO-10646-UCS-4 |
15 | KOI8-R (UPPER) | windows-1252 | KOI8-R | KOI8-R | CP1251 |
16 | CP1251 (UPPER) | windows-1252 | CP1251 | CP1251 | KOI8-R |
17 | CP866 & CP1251 | windows-1252 | CP1251 | CP1251 | unknown |
Наблюдение 1
enca не определила кодировку у файла UTF-16LE без BOM — это странно, ну ладно. Я попробовал добавить больше текста, но результата не получил.
Наблюдение 2. Проблемы с кодировками CP1251 и KOI8-R
Строка 15 и 16. У команды enca есть проблемы.
Здесь сделаю объяснение, дело в том, что кодировки CP1251 (она же Windows 1251) и KOI8-R очень близки если рассматривать только алфавитные символы.
Таблица CP 1251
Таблица KOI8-r
В обеих кодировках алфавит расположен от 0xC0 до 0xFF, но там, где у одной кодировки заглавные буквы, у другой строчные. Судя по всему enca, работает по строчным буквам. Вот и получается, если подать на вход программе enca строку “СТП” в кодировке CP1251, то она решит, что это строка “яро” в кодировке KOI8-r, о чём и сообщит. В обратную сторону также работает.
Наблюдение 3
Стандартной библиотеке html/charset можно доверить только определение UTF-8, но осторожно! Пользоваться следует именно charset.DetermineEncoding(), поскольку метод utf8.Valid(b []byte) на файлах в кодировке utf-16be возвращает true.
Собственный велосипед
Автоопределение кодировки возможно только эвристическими методами, неточно. Если мы не знаем, на каком языке и в какой кодировке записан текстовый файл, то определить кодировку с высокой точночностью наверняка можно, но будет сложновато… и нужно будет достаточно много текста.
Для меня такая цель не стояла. Мне достаточно определять кодировки в предположении, что там есть русский язык. И второе, определять нужно по небольшому количеству символов – на 10 символах должно быть достаточно уверенное определение, а желательно вообще на 5–6 символах.
Алгоритм
Когда я обнаружил совпадение кодировок KOI8-r и CP1251 по местоположению алфавита, то на пару дней загрустил… стало понятно, что чуть-чуть придётся подумать. Получилось так.
Критерии соответствия
Первый критерий
Первым критерием является количество самых популярных букв русского алфавита.
Наиболее часто встречаются буквы: о, е, а, и, н, т, с, р, в, л, к, м, д, п, у. Данные буквы дают 82% покрытия. Для всех кодировок кроме KOI8-r и CP1251 я использовал только первые 9 букв: о, е, а, и, н, т, с, р, в. Этого вполне хватает для уверенного определения.
А вот для KOI8-r и CP1251 пришлось доработать напильником. Коды некоторых из этих букв совпадают, например буква о имеет в CP1251 код 0xEE при этом в KOI8-r этот код у буквы н. Для этих кодировок были взяты следующие популярные буквы. Для CP1251 использовал а, и, н, с, р, в, л, к, я. Для KOI8-r — о, а, и, т, с, в, л, к, м.
Второй критерий
К сожалению, для очень коротких случаев (общая длина русского текста 5-6 символов) встречаемость популярных букв на уровне 1-3 шт и происходит нахлёст кодировок KOI8-r и CP1251. Пришлось вводить второй критерий. Подсчёт количества пар согласная+гласная.
Такие комбинации ожидаемо наиболее часто встречаются в русском языке и соответственно в той кодировке в которой число таких пар больше, та кодировка имеет больший критерий.
Вычисляются оба критерия, складываются и полученная сумма является итоговым критерием.
Результат отражен в таблице выше.
Особенности, с которыми я столкнулся
Чуть коснусь прелестей и проблем, связанных с golang. Раздел может быть интересен только начинающим писать на golang.
Проблемы
Лично походил по некоторым подводным камушкам из 50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков.
Излишне переживая и пытаясь дуть на воду, прослышав от других о страшных ожогах от молока, переборщил с проверкой входного параметра типа io.Reader. Я проверял переменную типа io.Reader с помощью рефлексии.
Но как оказалось в моём случае достаточно проверить на nil. Теперь всё стало проще
вызов bufio.NewReader( r ).Peek(ReadBufSize) спокойно проходит следующий тест:
В этом случае Peek() возвращает ошибку.
Разок наступил на грабли с передачей массивов по значению. Немного тупанул на попытке изменять элементы, хранящиеся в map, пробегая по ним в range…
Прелести
Сложно сказать что конкретно, постоянное ли битьё по рукам от линтера и компилятора или активное использование range, или всё вместе, но практически отсутствуют залёты по выходу индекса за пределы.
Конечно, очень приятно жить со сборщиком мусора. Полагаю мне ещё предстоит освоить грабли автоматизации выделения/освобождения памяти, но пока дебильная улыбка не покидает лица.
Строгая типизация — тоже кусочек счастья.
Переменные, имеющие тип функции — соответственно лёгкая реализация различного поведения у однотипных объектов.
Странно мало пришлось сидеть в отладчике, перечитывание кода обычно даёт результат.
Щенячий восторг от наличия массы инструментов из коробки, это чудное ощущение, когда компилятор, язык, библиотека и IDE Visual Studio Code работают на тебя вместе, слаженно.
Спасибо falconandy за конструктивные и полезные советы
Благодаря ему
Продолжаю добавлять тесты, выявился случай не определения UTF16. Обновил. Теперь UTF16 и LE и BE определяются даже в случае отсутствия русских букв
Автоопределение кодировки текста
Введение
Я очень люблю программировать, я любитель и первый и последний раз заработал на программировании в далёком 1996 году. Но для автоматизации повседневных задач иногда что-то пишу. Примерно год назад открыл для себя golang. В качестве инструмента создания утилит golang оказался очень удобным. Итак.
Возникла потребность обработать большое количество (больше тысячи, так и вижу улыбки профи) архивных файлов со специальной геофизической информацией. Формат файлов текстовый, простой. Если вдруг интересно то это LAS формат.
LAS файл содержит заголовок и данные.
Данные практически CSV, только разделитель табуляция или пробелы.
А заголовок содержит описание данных и вот в нём обычно содержится русский текст. Это может быть название месторождения, название исследований, записанных в файл и пр.
Файлы эти созданы в разное время и в разных программах, доходит до того, что в одном файле часть в кодировке CP1251, а часть в CP866. Файлы эти мне нужно обработать, а значит понять. Вот и потребовалось определять автоматически кодировку файла.
В итоге изобрёл велосипед на golang и соответственно родилась маленькая библиотечка с возможностью детектировать кодовую страницу.
Про кодировки. Не так давно на хабре была хорошая статья про кодировки Как работают кодировки текста. Откуда появляются «кракозябры». Принципы кодирования. Обобщение и детальный разбор Если хочется понять, что такое “кракозябры” или “кости”, то стоит прочитать.
В начале я накидал своё решение. Потом пытался найти готовое работающее решение на golang, но не вышло. Нашлось два решения, но оба не работают.
Обе уверенно ошибаются на некоторых кодировках. Стандартная та вообще почти ничего определить не может по текстовым файлам, оно и понятно, её для html страниц делали.
При поиске часто натыкался на готовые утилиты из мира linux — enca. Нашёл её версию скомпилированную для WIN32, версия 1.12. Её я тоже рассмотрю, там есть забавности. Я прошу сразу прощения за своё полное незнание linux, а значит возможно есть ещё решения которые тоже можно попытаться прикрутить к golang коду, я больше искать не стал.
Сравнение найденных решений на автоопределение кодировки
Подготовил каталог softlandia\cpd тестовые данные с файлами в разных кодировках. Содержимое файлов очень короткое и одинаковое. Одна строка “Русский в кодировке CodePageName”. Дополнил файлами со смешением кодировок и некоторыми сложными случаями и попробовал определить.
Мне кажется, получилось забавно.
# | Кодировка | html/charset | saintfish/chardet | softlandia/cpd | enca |
---|---|---|---|---|---|
1 | CP1251 | windows-1252 | CP1251 | CP1251 | CP1251 |
2 | CP866 | windows-1252 | windows-1252 | CP866 | CP866 |
3 | KOI8-R | windows-1252 | KOI8-R | KOI8-R | KOI8-R |
4 | ISO-8859-5 | windows-1252 | ISO-8859-5 | ISO-8859-5 | ISO-8859-5 |
5 | UTF-8 with BOM | utf-8 | utf-8 | utf-8 | utf-8 |
6 | UTF-8 without BOM | utf-8 | utf-8 | utf-8 | utf-8 |
7 | UTF-16LE with BOM | utf-16le | utf-16le | utf-16le | ISO-10646-UCS-2 |
8 | UTF-16LE without BOM | windows-1252 | ISO-8859-1 | utf-16le | unknown |
9 | UTF-16BE with BOM | utf-16le | utf-16be | utf-16be | ISO-10646-UCS-2 |
10 | UTF-16BE without BOM | windows-1252 | ISO-8859-1 | utf-16be | ISO-10646-UCS-2 |
11 | UTF-32LE with BOM | utf-16le | utf-32le | utf-32le | ISO-10646-UCS-4 |
12 | UTF-32LE without BOM | windows-1252 | utf-32le | utf-32le | ISO-10646-UCS-4 |
13 | UTF-32BE with BOM | windows-1252 | utf-32be | utf-32be | ISO-10646-UCS-4 |
14 | UTF-32BE without BOM | windows-1252 | utf-32be | utf-32be | ISO-10646-UCS-4 |
15 | KOI8-R (UPPER) | windows-1252 | KOI8-R | KOI8-R | CP1251 |
16 | CP1251 (UPPER) | windows-1252 | CP1251 | CP1251 | KOI8-R |
17 | CP866 & CP1251 | windows-1252 | CP1251 | CP1251 | unknown |
Наблюдение 1
enca не определила кодировку у файла UTF-16LE без BOM — это странно, ну ладно. Я попробовал добавить больше текста, но результата не получил.
Наблюдение 2. Проблемы с кодировками CP1251 и KOI8-R
Строка 15 и 16. У команды enca есть проблемы.
Здесь сделаю объяснение, дело в том, что кодировки CP1251 (она же Windows 1251) и KOI8-R очень близки если рассматривать только алфавитные символы.
Таблица CP 1251
Таблица KOI8-r
В обеих кодировках алфавит расположен от 0xC0 до 0xFF, но там, где у одной кодировки заглавные буквы, у другой строчные. Судя по всему enca, работает по строчным буквам. Вот и получается, если подать на вход программе enca строку “СТП” в кодировке CP1251, то она решит, что это строка “яро” в кодировке KOI8-r, о чём и сообщит. В обратную сторону также работает.
Наблюдение 3
Стандартной библиотеке html/charset можно доверить только определение UTF-8, но осторожно! Пользоваться следует именно charset.DetermineEncoding(), поскольку метод utf8.Valid(b []byte) на файлах в кодировке utf-16be возвращает true.
Собственный велосипед
Автоопределение кодировки возможно только эвристическими методами, неточно. Если мы не знаем, на каком языке и в какой кодировке записан текстовый файл, то определить кодировку с высокой точночностью наверняка можно, но будет сложновато… и нужно будет достаточно много текста.
Для меня такая цель не стояла. Мне достаточно определять кодировки в предположении, что там есть русский язык. И второе, определять нужно по небольшому количеству символов – на 10 символах должно быть достаточно уверенное определение, а желательно вообще на 5–6 символах.
Алгоритм
Когда я обнаружил совпадение кодировок KOI8-r и CP1251 по местоположению алфавита, то на пару дней загрустил… стало понятно, что чуть-чуть придётся подумать. Получилось так.
Критерии соответствия
Первый критерий
Первым критерием является количество самых популярных букв русского алфавита.
Наиболее часто встречаются буквы: о, е, а, и, н, т, с, р, в, л, к, м, д, п, у. Данные буквы дают 82% покрытия. Для всех кодировок кроме KOI8-r и CP1251 я использовал только первые 9 букв: о, е, а, и, н, т, с, р, в. Этого вполне хватает для уверенного определения.
А вот для KOI8-r и CP1251 пришлось доработать напильником. Коды некоторых из этих букв совпадают, например буква о имеет в CP1251 код 0xEE при этом в KOI8-r этот код у буквы н. Для этих кодировок были взяты следующие популярные буквы. Для CP1251 использовал а, и, н, с, р, в, л, к, я. Для KOI8-r — о, а, и, т, с, в, л, к, м.
Второй критерий
К сожалению, для очень коротких случаев (общая длина русского текста 5-6 символов) встречаемость популярных букв на уровне 1-3 шт и происходит нахлёст кодировок KOI8-r и CP1251. Пришлось вводить второй критерий. Подсчёт количества пар согласная+гласная.
Такие комбинации ожидаемо наиболее часто встречаются в русском языке и соответственно в той кодировке в которой число таких пар больше, та кодировка имеет больший критерий.
Вычисляются оба критерия, складываются и полученная сумма является итоговым критерием.
Результат отражен в таблице выше.
Особенности, с которыми я столкнулся
Чуть коснусь прелестей и проблем, связанных с golang. Раздел может быть интересен только начинающим писать на golang.
Проблемы
Лично походил по некоторым подводным камушкам из 50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков.
Излишне переживая и пытаясь дуть на воду, прослышав от других о страшных ожогах от молока, переборщил с проверкой входного параметра типа io.Reader. Я проверял переменную типа io.Reader с помощью рефлексии.
Но как оказалось в моём случае достаточно проверить на nil. Теперь всё стало проще
вызов bufio.NewReader( r ).Peek(ReadBufSize) спокойно проходит следующий тест:
В этом случае Peek() возвращает ошибку.
Разок наступил на грабли с передачей массивов по значению. Немного тупанул на попытке изменять элементы, хранящиеся в map, пробегая по ним в range…
Прелести
Сложно сказать что конкретно, постоянное ли битьё по рукам от линтера и компилятора или активное использование range, или всё вместе, но практически отсутствуют залёты по выходу индекса за пределы.
Конечно, очень приятно жить со сборщиком мусора. Полагаю мне ещё предстоит освоить грабли автоматизации выделения/освобождения памяти, но пока дебильная улыбка не покидает лица.
Строгая типизация — тоже кусочек счастья.
Переменные, имеющие тип функции — соответственно лёгкая реализация различного поведения у однотипных объектов.
Странно мало пришлось сидеть в отладчике, перечитывание кода обычно даёт результат.
Щенячий восторг от наличия массы инструментов из коробки, это чудное ощущение, когда компилятор, язык, библиотека и IDE Visual Studio Code работают на тебя вместе, слаженно.
Спасибо falconandy за конструктивные и полезные советы
Благодаря ему
Продолжаю добавлять тесты, выявился случай не определения UTF16. Обновил. Теперь UTF16 и LE и BE определяются даже в случае отсутствия русских букв
Это что получается 1251?
Shadow Fiend 1251 бумерский фонкПодробнее
ЭТО ЧЕ ПОЛУЧАЕТСЯ? 12.5.1. Подробнее
zxc ghoul phonk deadinside?) Сборник треков фонкПодробнее
1251. Вкус и смысл жизни. Лекция с Дмитрием Троцким. Новосибирск 19.05.2017Подробнее
Разбор 1 задания | ОГЭ по информатике 2022Подробнее
Стрим #5| ОГЭ по информатике 2021 | Задания 1-10Подробнее
-51 кг. Моё меню, на котором я худею. 1251 ккалПодробнее
Это чё получается 12.5.1 / zxcursedПодробнее
это чё получается 12 5 1? / zxcursedПодробнее
ДПС погоня. 12.5.1 по Питерски. 25STATE чемпионы сезона 2018. Полищук призёр в личном зачёте. (EP28)Подробнее
КАК РАБОТАЮТ КОДИРОВКИ | ОСНОВЫ ПРОГРАММИРОВАНИЯПодробнее
Исправление кодировки в среде STM32CubeIDEПодробнее
12.5.1 Остановочку делаем!Подробнее
FABERLIC обзор: маска BIOMICA, скатка iSeul, маска для волос BOTANICA, крем с осветляющих эффектомПодробнее
3 вида музыкальных размеров — просто о сложном
Музыкальный размер очень важная составляющая нотной грамоты. Его базовая функция — организовать музыку во времени. Также он существенно влияет на характер, образ и даже жанр музыкального произведения.
Размеры бывают всего трех видов – простыми, сложными и смешанными.
Чтобы разобраться, что же такое музыкальный размер и каким образом он организовывает музыкальную ткань, нам попутно потребуется ввести несколько новых понятий. Но, обо всем по порядку.
Пульсация
Первое понятие, которое необходимо ввести — пульс музыкального произведения.
Вы, наверное, замечали, что музыку часто описывают как нечто живое: весёлая, легкомысленная, задумчивая, решительная. И действительно, музыка имеет ряд качеств, характерных для живого организма, например такие как характер и настроение. Но главное, что в музыке, как и в живом организме бьется пульс. Вам наверняка доводилось бывать на концертах и хлопать в такт одновременно со всем залом. Это происходит именно потому, что люди чувствуют пульс музыки.
Как и человеческое сердце пульс может замедляться или ускоряться, но он бьётся равномерно и непрерывно на протяжении всего произведения.
Запомним: пульсация — это равномерность, которая обеспечивает музыкальное движение.
Доля
Доля – единица измерения пульсации.
Отрезок музыкальной ткани, заключённый между двумя сильными долями, называется тактом. К этому понятию мы еще вернемся.
Сейчас все понятно 330
Размер, метр, такт
Музыкальный размер показывает, сколько и каких долей включает в себя один такт. Выглядит размер как математическая дробь, где числитель — количество долей в такте, а знаменатель — длительность доли.
Число, расположенное сверху, говорит нам сколько долей содержит один такт; указывает до скольких нужно считать в каждом такте (до двух, до четырех, трех, шести и т.д.). при чтении это число принято называть в женском роде: две, четыре, три, шесть.
Число из нижней части дроби, обозначает длительность каждой доли; помогает понять, какими нотами следует считать удары пульса – четвертями, восьмыми и так далее. Это число произносят как соответствующее название длительности в родительном падеже: четверти, восьмых, шестнадцатых. Исключением будет размер, где счет осуществляется половинными нотами. Так размер 3/2 читается как «три вторых». А мы рассмотрим размер 2/4 «две четверти»:
Первая доля всегда сильная, она выделена красным цветом. Синим изображены слабые.
Метр
Очередность сильных и слабых долей называется метром.
Сильные и слабые доли чередуются в определённой последовательности, которую задаёт размер. Эта очередность долей создает метр произведения.
Такт
Отрезок музыки между двумя сильными долями называется тактом. На письме такты разделены вертикальными линиями — тактовыми чёрточками. Последний такт закрывается двумя тактовыми черточками.
Теперь, когда все элементы на месте, вы видите, что каждый такт соответствует размеру 2/4 и содержит по 2 четвертные доли.
Рассмотрим пример трехдольного размера – 3/4:
Первая доля — сильная. Размер указывает, что в одном такте должно быть 3 четвертные доли – значит вторая и третья будут слабыми.
Ритм
Как вы помните пульсация равномерна, а вот музыкальное полотно может быть представлено нотами и паузами различными по долготе звучания. И здесь пора ввести новое понятие – ритм.
Ритм – это последовательность звуков и пауз разной продолжительности. Так в одном такте могут сочетаться четверти, восьмые, шестнадцатые и другие длительности, образуя ритмический рисунок. Давайте рассмотрим пример в размере 4/4. Нижняя строка отображает шаги пульса – четвертные доли, они прозвучат щелчками. На верхней строке изображены варианты ритмического рисунка:
Вариантов ритмического рисунка может быть очень много, и я представил далеко не все. Длительности можно комбинировать между собой, главное хорошо считать – сумма длительностей нот в каждом такте должна быть равна сумме длительностей долей, указанных в размере.
Виды размеров
Музыкальные размеры бывают простыми, сложными и смешанными.
Простыми называют двухдольные и трехдольные размеры.
Двухдольные читаются так: две вторых, две четверти, две восьмых, две шестнадцатых.
Трехдольные так: три вторых, три четверти, три восьмых, три шестнадцатых.
Рассмотрим размер 2/4 «две четверти». Он состоит из двух доле́й, каждая из которых равна четвертной ноте. Считать доли в такте следует так: «раз-и, два-и». Каждый такт должен быть наполнен нотами, которые могут быть разной длительности, главное, чтобы в сумме длительности этих нот давали две четверти. Взгляните на пример:
Размер 3/4 имеет три доли, каждая из которых равняется четвертной ноте. Их так же можно разбить на более мелкие длительности или объединить в более крупную. Считаем этот размер до трех «раз-и, два-и, три-и». Вот некоторые варианты ритмического рисунка в размере три четверти:
Также вместо нот могут быть использованы паузы необходимой длительности:
Сложные размеры
Сложные размеры образуются за счет сложения двух или более простых одинаковых размеров. Например, размер 4/4 это сумма простых размеров 2/4 + 2/4. Размер 6/8 является суммой размеров 3/8 + 3/8.
Наиболее ходовыми сложными размерами являются:
Сильная и относительно сильная доля
В сложном размере будет столько сильных долей, сколько простых размеров он включает в свой состав. Например, размер 4/4 состоит из двух простых размеров 2/4 + 2/4. Значит сильных долей в каждом такте будет две. На изображении я поделил пунктирной линией такт на две части, каждая из которых соответствует размеру 2/4. Красным цветом отмечены ноты, которые приходятся на сильную долю.
На следующем изображении цифрами обозначены номера долей. Вы видите, что сильными долями в размере 4/4 являются первая и третья. Однако первую долю принято называть сильной, а третью – относительно сильной. Сильная доля более акцентирована и на изображении выделена знаком акцента красного цвета (>). Относительно сильная доля менее акцентирована и обозначена акцентом синего цвета.
Рассмотрим еще один пример – 6/8. Это шестидольный размер, где пульс шагает восьмыми нотами. Он сложен из двух простых размеров – 3/8 + 3/8. Как и всегда первая доля будет сильной, а относительно сильной будет четвертая, потому что она является начальной во втором простом размере 3/8. Взгляните:
Смешанные размеры
Смешанным называют сложный размер, который состоит из двух простых не одинаковых размеров – двухдольного и трехдольного. Чаще всего можно встретить размеры 5/4; 7/4 и 5/8; 7/8.
Размеры 5/4 и 5/8 – пятидольные. По своей сути они одинаковы, но в первом случае пульс шагает четвертями, во втором – восьмыми. Так как это сложный размер, он состоит из нескольких простых:
Если произведение написано в смешанном размере, то в скобках, как правило, указывают из каких простых размеров оно состоит. На изображении ниже, первый такт является суммой 2/4 + 3/4; второй – 3/4 + 2/4.
От того, как меняется последовательность простых размеров внутри сложного, зависит местоположение относительно сильной доли. В первом такте относительно сильной долей будет третья, во втором — четвертая. От расположения относительно сильной доли зависит акцент внутри такта, а значит и его ритмическая организация.
Размеры 7/4 и 7/8 – семидольные. Состоят из трех простых размеров, два из которых двухдольные и один трехдольный.
Совсем тяжко идет 166
Группировка нот
Группировкой называется объединение нот в группы. Это делается с одной простой целью – облегчить визуальное восприятие нот и ускорить разбор ритмического рисунка. Для сравнения приведу пример в виде номера телефона. Какой вариант легче воспринимать? Думаю, вы согласитесь, что второй:
Объединяться в группы могут только длительности с флажками, то есть длительности меньше четверти – восьмые, шестнадцатые и так далее. Когда они соединяются в группу, то флажки нот превращаются в горизонтальные линии — ребра. Сколько было флажков, столько будет и ребер у группы:
В группы могут объединяться ноты разной продолжительности, главное, чтобы все они были меньше четверти. Пусть вас не смущает разное количество флажков, это вовсе не мешает объединять ноты в группы:
Также паузы могут встраиваться в группу:
Группировка длительностей в такте
Рассмотрим пример группировки нот в самых популярных размерах: 2/4, 3/4, 4/4, 6/8.
В размерах 2/4, 3/4, 4/4 ноты объединяются в группы по счетным долям (они указаны в знаменателе размера) – в нашем случае это четверти. Группировать следует так, чтобы границы долей было отчетливо видно. Например, в размере 4/4 шестнадцатые ноты нужно группировать по четыре:
Не трудно посчитать, что каждая группа равна четвертной доле. В одном такте будет 4 таких группы.
А вот пример того, как группировать не следует:
Визуально воспринимать такую группировку нот чрезвычайно трудно, а читать с листа – невозможно.
Размер 4/4 — сложный и состоит из двух простых – 2/4 + 2/4. Поэтому иногда ноты в этом размере группируются не по долям, а в соответствии с составным простым размером. Получится две группы по две четверти. Как лучше сгруппировать ноты выбирает сам композитор, главное, чтобы это легко воспринималось глазами.
В размере 2/4 ноты объединяют в две группы, каждая из которых равна четверти:
Ниже приведен пример группировки в размере 3/4:
Ритмический рисунок не самый простой, но ноты сгруппированы таким образом, что сразу видно каждую долю и посчитать размер такта не составит труда.
В размерах 6/8, 9/8, 12/8 счёт осуществляется восьмыми нотами. Принцип группировки в таких размерах будет несколько другим. Эти размеры сложные трехдольные и, как вы уже знаете, состоят они из нескольких простых:
Группировать ноты в подобных случаях, следует опираясь на простой размер, из которого состоит сложный — в нашем случае это размер 3/8. Эти цифры служат нам подсказкой, говоря, что ноты нужно собирать в такие группы, где сумма длительностей будет равна трем восьмым. Например, в размере 6/8 (3/8+3/8) ноты нужно объединять в две группы по три восьмые в каждой.
Ритм может быть самым разнообразным, но каждая группа нот, все равно должна быть равны трем восьмым:
Группировка нот напрямую зависит от музыкального размера. Мы рассмотрели не все варианты группировки, но главное усвоить принцип и запомнить, что группировать нужно так, чтобы это было удобно читать.
Статья понравилась 330
Статья не понравилась 166
Заключение
Мы познакомились с тремя видами размеров — простыми, сложными и смешанными. Надеюсь, теперь вам понятно что такое музыкальные размеры и на что они влияют. Если статья была интересна и понятна будем рады отзывам. Если возникли вопросы – тем более пишите их в комментариях, будем вместе разбираться. Также вступайте в группу вконтакте и подписывайтесь на Youtube канал.
А сейчас посмотрите джазовую пьесу «Take Five«, записанную квартетом «The Dave Brubeck Quartet» в 1959 году. это был первый джазовый сингл, разошедшийся в более чем миллионе экземпляров. Автор пьесы — Paul Desmond, саксофонист квартета. Написана эта музыка в достаточно необычном ритме 5/4. Именно отсюда и идет ее название.