Форум программистов, компьютерный форум, киберфорум
C#: ИИ, нейросети, ML, агенты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333

Нейронные сети, композитор, алгоритм

20.06.2019, 05:53. Показов 3873. Ответов 19

Студворк — интернет-сервис помощи студентам
1. Всего нот семь и между ними диезы или бемоли
Гамма_(музыка)
2.я насчитал 12 нот в гамме тогда генератор случайных числе от 1 до 12 на vb.net и его оптимизация в соответствии с гармонией звукоряда
3.обучаем нейронную сеть на основе статистических рядов численное отклонение от первой ноты выдающихся композиторов различных жанров
Какие ещё чисто теоретические дополнения в этот алгоритм у Вас есть?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.06.2019, 05:53
Ответы с готовыми решениями:

Распознавание цифр, нейронные сети
Здравствуйте. планирую распознавать цифры/буквы. подскажите как с этой картинки вытащить цифры? что надо использовать? картинку...

Распознавание текста с картинки при помощи нейронных сетей
Хочу реализовать распознавание текста с картинки при помощи нейронных сетей, но это слово первый раз слышу:cry: Мож какие-нибудь книги по...

Нейронные сети и C#
Хотелось бы почитать какую-нибудь хорошую литературу по нейронным сетям и их разработки на C++ (предпочтительнее на C#). Поискал по форуму...

19
1716 / 1403 / 165
Регистрация: 25.07.2015
Сообщений: 2,553
20.06.2019, 06:59

Не по теме:

Цитата Сообщение от kshyms Посмотреть сообщение
2.я насчитал 12 нот в гамме ...
Это прорыв.. ))))) Как-то вы скромно, нужно было ещё и пооктавно считать , раз уж вы диезы с бимолями
к нотам причислили. )))
В латинском алфавите 26 букв, при этом буквосочетаний множество, дающих разные звуки ,
отличные от написания букв Например во французском буквосочетание "AU" даёт звук "О".....
Но букв то всё-равно 26.

Вообще нейронные сети на бейсике - огонь идея )))
Вы видимо разделом ошиблись....



Добавлено через 12 минут
Что же касается теоретических изысканий , а так же ,возможно, практической помощи на тему нейронных сетей,
то вам наверное правильнее будет обратиться в целевой раздел форума.
0
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
20.06.2019, 09:56  [ТС]
В музыке звуковой материал разбит условно на семь полных и две неполные октавы. Наша цель обучить генерировать мелодию а октавы оставим на потом. Программировать - то на vb.net всё равно придется
0
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
21.06.2019, 16:18  [ТС]
Результат во вложении.
Вложения
Тип файла: zip Шум Большого Города.zip (2.88 Мб, 34 просмотров)
0
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
21.06.2019, 17:24  [ТС]
У кого будут предложения по развитию проекта?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 ComboBox1.Items.Clear()
        For j = 1 To 16
            Dim iRand1 As Double  'генератор мелодий 2 такта 4/4  
            Dim oRand1 = New Random()
            oRand1 = New Random(DateTime.Now.Millisecond)
            iRand1 = oRand1.Next(1, 10)
            ocenki(4) = iRand1
            System.Threading.Thread.Sleep(5)
 
            For Each i As String In ocenki(4)
                ComboBox1.Items.Add(i)
            Next
        Next j
        DataGridView1.Rows.Clear()
        DataGridView1.Rows.Add(350) 'добавить строки
        DataGridView1.ColumnCount = 50 'добавить столбцы
        DataGridView1.Rows(0).Cells(0).Value = "id"
        DataGridView1.Rows(0).Cells(1).Value = "символ"
        DataGridView1.Rows(0).Cells(2).Value = "нота"
 
        Me.Text = "Нейронные сети композитор генерация мелодий"
        Me.Button1.Text = "пуск"
        Me.Button2.Text = "стоп"
        Me.Button3.Text = "выход"
        For i = 1 To 12
            DataGridView1.Rows(i).Cells(0).Value = i 'id
        Next i
        DataGridView1.Rows(1).Cells(1).Value = "A" 'символ"
        DataGridView1.Rows(2).Cells(1).Value = "A#" 'символ"
        DataGridView1.Rows(3).Cells(1).Value = "B" 'символ"
        DataGridView1.Rows(4).Cells(1).Value = "B#" 'символ"
        DataGridView1.Rows(5).Cells(1).Value = "C" 'символ"
        DataGridView1.Rows(6).Cells(1).Value = "D" 'символ"
        DataGridView1.Rows(7).Cells(1).Value = "E" 'символ"
        DataGridView1.Rows(8).Cells(1).Value = "E#" 'символ"
        DataGridView1.Rows(9).Cells(1).Value = "F" 'символ"
        DataGridView1.Rows(10).Cells(1).Value = "F#" 'символ"
        DataGridView1.Rows(11).Cells(1).Value = "G" 'символ"
        DataGridView1.Rows(12).Cells(1).Value = "G#" 'символ"
 
        DataGridView1.Rows(1).Cells(2).Value = "ля" '"нота"
        DataGridView1.Rows(2).Cells(2).Value = "ля диез" '"нота"
        DataGridView1.Rows(3).Cells(2).Value = "си" '"нота"
        DataGridView1.Rows(4).Cells(2).Value = "си диез" '"нота"
        DataGridView1.Rows(5).Cells(2).Value = "до" '"нота"
        DataGridView1.Rows(6).Cells(2).Value = "рэ" '"нота"
        DataGridView1.Rows(7).Cells(2).Value = "ми" '"нота"
        DataGridView1.Rows(8).Cells(2).Value = "ми диез" '"нота"
        DataGridView1.Rows(9).Cells(2).Value = "фа" '"нота""
        DataGridView1.Rows(10).Cells(2).Value = "фа диез" '"нота"
        DataGridView1.Rows(11).Cells(2).Value = "соль" '"нота"
        DataGridView1.Rows(12).Cells(2).Value = "соль диез" '"нота"
0
2619 / 1630 / 266
Регистрация: 19.02.2010
Сообщений: 4,325
22.06.2019, 01:05
Цитата Сообщение от kshyms Посмотреть сообщение
У кого будут предложения по развитию проекта?
Предлагаю закопать! В смысле - похоронить.
И не выдумывать велосипеды.
Начните с этой статьи 7летней давности https://arxiv.org/abs/1206.6392
Она за прошедшее время набрала 458 цитирований в научной литературе. Пусть основная куча этих цитирующих работ и будет упоминать её по типу "а ещё такое применяется для в куче иных областей - например, для моделирования/генерации музыки" - но будут и работы, непосредственно связанные с улучшениями решения задачи моделирования/генерации музыки.
Т.е. если что и делать - то по готовым свежим рецептам. Тем более, что там идёт постоянное соревнование в улучшении точности на готовых стандартных общедоступных датасетах (в указанной статье уже использовалось 4 датасета), и можно проверять правильность повторения любого опубликованного метода путём сравнения указанных в его статье точностей с теми цифрами, которые получаются для самодельной копии.
1
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
22.06.2019, 12:04  [ТС]
Т.е. если что и делать - то по готовым свежим рецептам. Мы сами сварим плов!VTsaregorodtsev, Ghtlkj; предложение принимается по изучению опыта но как один философ говорил сомневайтесь и вы найдете что - то новое. Резюме: развивать проект с учетом наработок других
а сейчас вопрос
DataGridView1.Rows(j + 12).Cells(0).Value = iRand1 'символ"
исправлен код вместо комбобокса ряд выводим в дайтагрид
и оператором сравнения заполняем строки символами нот
For j = 1 To 16
If DataGridView1.Rows(j + 12).Cells(0).Value = DataGridView1.Rows(j).Cells(0).Value Then DataGridView1.Rows(j + 12).Cells(1).Value = DataGridView1.Rows(j).Cells(1).Value
Next
пока не получается почему?

Добавлено через 5 часов 5 минут
если есть соло тогда выводим в терцио бас + 2 и квинту как пауэр аккорд еще +2
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 For i = 14 To 30 Step 2
            DataGridView1.Rows(i).Cells(3).Value = DataGridView1.Rows(i).Cells(0).Value + 2 'id бас
            DataGridView1.Rows(i).Cells(6).Value = DataGridView1.Rows(i).Cells(3).Value + 2 'id квинта
        Next i
        DataGridView1.Rows(0).Cells(0).Value = "id"
        DataGridView1.Rows(0).Cells(1).Value = "символ"
        DataGridView1.Rows(0).Cells(2).Value = "нота"
        DataGridView1.Rows(13).Cells(0).Value = "id соло"
        DataGridView1.Rows(13).Cells(1).Value = "символ соло"
        DataGridView1.Rows(13).Cells(2).Value = "нота соло"
        DataGridView1.Rows(13).Cells(3).Value = "id бас"
        DataGridView1.Rows(13).Cells(4).Value = "символ бас"
        DataGridView1.Rows(13).Cells(5).Value = "нота бас"
        DataGridView1.Rows(13).Cells(6).Value = "id квинта"
        DataGridView1.Rows(13).Cells(7).Value = "символ квинта"
        DataGridView1.Rows(13).Cells(8).Value = "нота квинта"
Добавлено через 17 минут
в такте 8 нот соло выводим 1/8 нотой в металле и панк-роке играется 4/4 применяются как правило пауэр аккорды (терцио квартами и квинтами) 16 нот 2 такта

Добавлено через 15 минут
в панк -роке добавляем к аккорду от баса еще одну ноту +1 этим она отличается от металла и еще ритмом как реггей но он нас не интересует
VB.NET
1
   DataGridView1.Rows(13).Cells(9).Value = "id для панк рока"
почему с шагом 2 потому что на каждую 1/8 ноту играть аккорд не комильфо, а моветон
VB.NET
1
2
3
4
5
For i = 14 To 30 Step 2
            DataGridView1.Rows(i).Cells(3).Value = DataGridView1.Rows(i).Cells(0).Value + 2 'id бас
            DataGridView1.Rows(i).Cells(6).Value = DataGridView1.Rows(i).Cells(3).Value + 2 'id квинта
       DataGridView1.Rows(i).Cells(9).Value = DataGridView1.Rows(j).Cells(3).Value+ 1 'id кварта только для панк рока
 Next i
Добавлено через 8 минут
А может и комильфо играть аккорд на каждую 1/8! Тогда шаг убираем.
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
22.06.2019, 17:29
kshyms, насколько мне известно, интересующим тебя вопросом занимаются серьезные разработчики (гугл, яндекс и т. п.) и, опять-таки насколько мне известно, несмотря на то, что некоторые результаты уже достигнуты, но каких-то серьезных прорывов в этом направлении у них нет. Я, конечно, вполне допускаю, что ты можешь утереть носы им всем, даже не заморачиваясь на изучении того, что уже достигнуто другими, но, как мне кажется, ознакомиться с базовыми понятиями элементарной теории музыки точно не было бы лишним. Ну например, ты тут пишешь, что таки подсчитал, что всех нот в октаве 12 и это уже отрадно (правильно подсчитал), однако в коде у тебя присутствуют некоторые странности, касающиеся их описания, в частности у тебя есть си-диез и ми-диез, но при этом отсутствуют до-диез и ре-диез. Не то чтобы си-диез и ми-диез отсутсвовали в теории, но на практике они совпадают с до и фа соответственно, а вот пропущенные ноты ничем не компенсируются.
Следующая проблема - длительности. Даже в самой примитивной музыке я нигде не встречал, чтобы вся мелодия была написана на нотах одинаковой длительности. Я понимаю, что сейчас есть всякие странные направления в музыке, где возможно все, только я почему-то думаю, что для написания таких "шедевров" нейронная сеть не нужна - достаточно рандомайзера. По этому поводу, помнится как-то на другом форуме, человек выложил в теме такое "музыкальное произведение" и спросил, знает ли кто-нибудь кого-то, кто пишет такую музыку, на что ему ответили: "У меня на даче есть старый приемник, вот он умеет писать такую музыку".
В музыке всегда присутствуют повторяющиеся патерны, секвенции и т. п. Если последовательности генерировать случайным образом, то этого всего не будет, а стало быть и музыки тоже не будет.
Музыка достаточно четко разделена на метрические блоки (такты, предложения, периоды) и развитие музыкального сюжета должно учитывать это деление. Например в конце предложений и периодов должны быть каденции и к ним предъявляются определенные требования. Если это не учитывать, то музыка тоже не получится.
Что касается
Цитата Сообщение от kshyms Посмотреть сообщение
численное отклонение от первой ноты
Это тоже неправильно, поскольку мозг не держит в памяти первую ноту, а цепляется за последние услышанные и на этом основано много музыкальных эффектов.

Также следует учитывать такие вещи как музыкальный лад, тональность и т. д., поскольку исходя из них вероятность появления тех или иных нот будет разной.

Ну это так, только несколько примеров того, что было бы неплохо учесть.
2
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
22.06.2019, 20:22  [ТС]
Моя цель не кому то утереть нос и кому то доказать а для себя в первую очередь уяснить что это и как это сделать что бы использовать в работе. Очень существенные замечания благодарю Я понимаю что одного генератора случайных чисел для формирования мелодии мало Предполагается после разработки первого этапа приступить ко второму использования метода ветвления и использования алгоритма обратного распространения ошибки и линейных уравненийили типа Кобба дугласа. А то что некоторые ноты пропущены это исправим. Наша гипотеза основана на том что какие то гармонические ряды в музыке они есть и нужно найти такие уравнения при расчете которых формировалась бы в мелодии гармония. А то что аккорды основаны на последней ноте не всегда в Метод гармонизации, при котором на каждый такт приходится один единственный аккорд, является самым очень распространенным. Вообще, выбор частоты смены гармонии - это один из художественных приемов композитора, например, встречаются смены гармонии на каждую восьмую ноту, или, наоборот, в одной опере Вагнера тонический аккорд выдерживается на протяжении 122 тактов. То есть можно и так и так. Цель исследования генерация оптимизированной мелодии. Эта основная проблема почти всех комозиторов. 16 тактов сгнерировать и все остальные такты интепритировать без а басы и ритмы к мелодии это не так уж трудно в ручную расбросать. Хотя автоматизировать этот процесс для ускорения работы тоже желательно. А все направления современной музыки не охватить более 2000 приставка прогрессив и пост блюз и соул и панк и прочее и так далее

Добавлено через 9 минут
1. один аккорд на всю мелодию
2. 1 аккорд на каждый такт
3. 2 аккорда на каждый такт
4. аккорд на каждую ноту то есть на партию баса
0
22.06.2019, 21:37

Не по теме:

с запятыми в тексте вообще беда

0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
23.06.2019, 00:53
Цитата Сообщение от kshyms Посмотреть сообщение
Моя цель не кому то утереть нос и кому то доказать а для себя в первую очередь уяснить что это и как это сделать что бы использовать в работе.
Ну не знаю, исходя из
Цитата Сообщение от kshyms Посмотреть сообщение
Мы сами сварим плов!
я, было, решил, что уяснить - как раз не главное ))
Цитата Сообщение от kshyms Посмотреть сообщение
Я понимаю что одного генератора случайных чисел для формирования мелодии мало
Да может и не мало, просто выбирать им надо не отдельные ноты, а целые паттерны. А вот как сформулировать, что есть элементарный паттерн, чтобы из них можно было строить музыку - в этом и есть задача.
Цитата Сообщение от kshyms Посмотреть сообщение
Наша гипотеза основана на том что какие то гармонические ряды в музыке они есть и нужно найти такие уравнения при расчете которых формировалась бы в мелодии гармония.
Зачем строить гипотезы о том, о чем можно прочитать в любом учебнике по теории музыки?
Цитата Сообщение от kshyms Посмотреть сообщение
Вообще, выбор частоты смены гармонии - это один из художественных приемов композитора, например, встречаются смены гармонии на каждую восьмую ноту, или, наоборот, в одной опере Вагнера тонический аккорд выдерживается на протяжении 122 тактов. То есть можно и так и так.
Если строится и мелодия и гармония, то, возможно, есть смысл сначала построить именно гармонию, а уже потом наложить на нее мелодию. Гармония проще по структуре поскольку аккорды реже сменяются и смена аккордов не так разнообразна с точки зрения их длительности. С другой стороны, по поводу частоты смены аккордов все не так однозначно. Тут нужно понимать, что подразумевается под сменой аккорда. В классическом четырехголосьи в принципе каждой ноте мелодии соответствует аккорд и они, в общем-то, все разные. Но при этом там надо различать основные гармонии и второстепенные. Звуки мелодии делятся на аккордовые и неаккордовые, при этом для гармонизации неаккордовых звуков существуют правила какими аккордами их гармонизировать. Поэтому здесь есть смысл говорить о смене основных гармоний. Они действительно попадают на счетные доли такта, то есть при размере 4/4 это будут четвертые ноты, при этом ситуации, когда каждая счетная доля сменяет аккорд, встречаются не так часто, чаще либо аккорд на такт, либо смена происходит на сильных долях (первой и третьей). Ситуации, когда один аккорд длится несколько тактов, возникают в тех случаях, когда гармонизируется готовая мелодия и вот она никуда за пределы одного аккорда не выходит. Но смена аккорда влияет на ритм, поэтому в таких случаях обычно гармония обогащается всякими диссонансными аккордами. В джазовой гармонии эти техники развиты особенно хорошо, поскольку джаз очень ритмичен и там надо удерживать ритм даже если мелодия несколько тактов с одной ноты не сходит. Поэтому тут опять-таки все не так однозначно.

Что касается Вагнера с его тоникой, то такое встречается в современной музыке, причем я говорю не об элитарной музыке, а о вполне себе масскульте. Но это скорее аномалии и на начальных этапах на них ориентироваться нет смысла. Скорее следовало бы для начала научиться генерировать что-то простое типа детских песенок (типа "В лесу родилась елочка", "Во саду ли в огороде" и т. д.) или попсы какой-нибудь, там тоже все довольно простенько. Квадратный период (два предложения по четыре такта 4/4), ограниченный набор гармонических оборотов, редкие и довольно предсказуемые отклонения, никаких модуляций. Мелодические паттерны, я думаю, тоже особо без изысков. Получится - можно будет двигаться дальше.
Цитата Сообщение от kshyms Посмотреть сообщение
а басы и ритмы к мелодии это не так уж трудно в ручную расбросать
Ну так, тогда смысл какой вообще? Можно все вручную сделать.
1
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
23.06.2019, 12:42  [ТС]
Если строится и мелодия и гармония, то, возможно, есть смысл сначала построить именно гармонию, а уже потом наложить на нее мелодию.
Сначала аккорды, а потом мелодию. Хотя тоже вариант. Так можно потерятся ни чего не решить
Но это скорее аномалии
На 1 аккорде применяется в шашмаком мугам
Итак гармонические ряды оказывается есть это лады
Основных рассматриваемых в музыкальной теории ладов семь, по количеству не повторяющихся ступеней гаммы:
Ионийский лад — внешне соответствует натуральному мажору.
Эолийский лад — внешне соответствует натуральному минору.
Дорийский лад — внешне соответствует минору с повышенной шестой ступенью.
Фригийский лад — внешне соответствует натуральному минору с пониженной второй ступенью.
Лидийский лад — внешне соответствует натуральному мажору с повышенной четвёртой ступенью.
Миксолидийский — внешне соответствует натуральному мажору с пониженной седьмой ступенью.
Локрийский — особый лад, не имеющий определённого ладового наклонения. В его основе лежит уменьшённое трезвучие.
Генетически связан с так называемым гипофригийским ладом с устойчивой 4-й ступенью (вместо 5-й).
лады шашмакомов их шесть
бузрук или бузург
рост
наво или нава
дугох или дугах
сегох
ирок или ирак
Дестгях иранские лады
турецкий маком
арабский маком
мугам жанр азербайджанской устно-профессиональной классической музыки.
Можно еще сюда добавить Рандомайзер или звукоряд основанный на генерации случайных чисел
итого я насчитал пока 18 ладов
Тогда предложение таково допустим генерируем ряд по 1/8 на 32 такта и оптимизируем поочередно в соответствии с правилами 14 ладов и ещё вариант в соответствии с этими ладами тоже случайным образом на каждые 4 или 8 тактов разнообразим мелодию. Причем первые 8 тактов выводить соло что бы слушатель поймал догнал мелодию, а далее развитие то есть оптимизация в соответствии с ладами тогда 3 генератора сл. чисел на 1. звукоряд 2 на лады и 3. на такты и после 4 или 8 или 16 или 32 такта развивать мелодию на основе уравнений. y=ах + b где а весомость или случайным образом перескакивать или лада в лад Это будет 19 лад интеграционный метод генерации мелодий

Добавлено через 14 минут
в соответствии с правилами 18 ладов

Добавлено через 3 минуты
Не исключено, что ладов, ещё больше. Ещё лучше! Это разнообразит мелодию и без модуляций.
Ну на сегодня хватит теории начнем практически это выводить в коде

Добавлено через 40 минут
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
      For j = 1 To 32
            Dim iRand1 As Double  'генератор мелодий 2 такта 4/4  
            Dim oRand1 = New Random()
            oRand1 = New Random(DateTime.Now.Millisecond)
            iRand1 = oRand1.Next(1, 10)
            System.Threading.Thread.Sleep(5)
            DataGridView1.Rows(j).Cells(3).Value = iRand1 'соло
            DataGridView1.Rows(j).Cells(6).Value = iRand1 + 2 'бас
            DataGridView1.Rows(j).Cells(9).Value = iRand1 + 2 'ритм
            DataGridView1.Rows(j).Cells(9).Value = iRand1 + 4 'ритм
 
 
        Next j
        For j = 1 To 12
            If DataGridView1.Rows(1).Cells(3).Value = DataGridView1.Rows(j).Cells(0).Value Then DataGridView1.Rows(1).Cells(4).Value = DataGridView1.Rows(j).Cells(1).Value  
        Next j
For i = 1 To 32
            DataGridView1.Rows(i).Cells(0).Value = i 'id
        Next i
        'между си и до и ми фа нет диезов и бемолей
        'первая октава
        DataGridView1.Rows(1).Cells(1).Value = "C" 'до
        DataGridView1.Rows(2).Cells(1).Value = "C#" 'до диез
        DataGridView1.Rows(3).Cells(1).Value = "D" 'ре
        DataGridView1.Rows(4).Cells(1).Value = "D#" 'ре диез
        DataGridView1.Rows(5).Cells(1).Value = "E" 'ми
        DataGridView1.Rows(6).Cells(1).Value = "F" 'фа
        DataGridView1.Rows(7).Cells(1).Value = "F#" 'фа диез
        DataGridView1.Rows(8).Cells(1).Value = "G" 'соль
        DataGridView1.Rows(9).Cells(1).Value = "G#" 'соль диез
        DataGridView1.Rows(10).Cells(1).Value = "A" 'ля
        DataGridView1.Rows(11).Cells(1).Value = "A#" 'ля диез
        DataGridView1.Rows(12).Cells(1).Value = "B" 'си 
        'вторая октава
 
        DataGridView1.Rows(13).Cells(1).Value = "C" 'до
        DataGridView1.Rows(14).Cells(1).Value = "C#" 'до диез
        DataGridView1.Rows(15).Cells(1).Value = "D" 'ре
        DataGridView1.Rows(16).Cells(1).Value = "D#" 'ре диез
        DataGridView1.Rows(17).Cells(1).Value = "E" 'ми
        DataGridView1.Rows(18).Cells(1).Value = "F" 'фа
        DataGridView1.Rows(19).Cells(1).Value = "F#" 'фа диез
        DataGridView1.Rows(20).Cells(1).Value = "G" 'соль
        DataGridView1.Rows(21).Cells(1).Value = "G#" 'соль диез
        DataGridView1.Rows(22).Cells(1).Value = "A" 'ля
        DataGridView1.Rows(23).Cells(1).Value = "A#" 'ля диез
        DataGridView1.Rows(24).Cells(1).Value = "B" 'си

Вот здесь проблема! Надо пройтись по ряду. Выбрать совпадения и заменить цифры на буквы.
VB.NET
1
2
3
4
5
For i =1 to 32
For j = 1 To 12
            If DataGridView1.Rows(i).Cells(3).Value = DataGridView1.Rows(j).Cells(0).Value Then DataGridView1.Rows(i).Cells(4).Value = DataGridView1.Rows(j).Cells(1).Value  
        Next j
Next i
У кого какие предложения

Добавлено через 1 час 46 минут
лады дополнительно
фалак 4 мукома 4 лада
индийские лады
Древнеинд. музыка насчитывает 7 основных paг и 5 производных от каждой - рагини. всего 12 ладов
"Сангитаратнакара" содержит описание 664 paг; в совр. Индии только на юге страны насчитывается более 300 (шестиступенных) paг, пятиступенных - 72, и др.
«юнь-гун-дяо» -универсальная ладовая система китайской традиционной и современной музыки. всего 5 ладов
гун-лад
шан-лад
цзюе-лад
чжи-лад
юй-лад
японские лады 9 наименований
Ладотональная организация музыки гагаку (искусной музыки) складывается из шести звукорядов, сгруппиро*ванных в две субсистемы музыкального управления — рё (итокоцу-тё, со-дзё, тайсики-тё) и рицу (хё-дзё, осики-тё, бансики-тё), позднее сложились лады: ёсэнпо, инсзнпо и кокиндзёси.
.
то есть пока 19 + 4 +7 + 5 + 5+9=49 ладов
Должна получится крутая нейросеть. Кто со мной?
0
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
24.06.2019, 15:52  [ТС]
diadiavova,
Скорее следовало бы для начала научиться генерировать что-то простое типа детских песенок (типа "В лесу родилась елочка", "Во саду ли в огороде" и т. д.) или попсы какой-нибудь, там тоже все довольно простенько.
мелодия "Шум большого города" как раз основана на рэндомайзерном ладу.

Добавлено через 54 минуты
рэндомайзерный лад и интеграционный лад их лучше использовать вместе по порядку.

Добавлено через 2 часа 48 минут
проблема сравнения решена с использованием базы Access Надо пройтись по ряду. Выбрать совпадения и заменить цифры на буквы.
генерируем 2000 символов(номеров звукоряда) в матрице 2 и сравниваем с матрицей 1 заменяем цифры на символы вида (A-G)
а теперь полученный ряд весь 2000 символов будем оптимизировать по ладам допустим
VB.NET
1
2
3
4
5
6
7
8
    Dim lad(2000) As String
        lad = {"Ионийский, Эолийский, Дорийский, Фригийский, Лидийский, Миксолидийский,Локрийский,калиан, билавал, кхамадж, бхаирав, пурава, марава, кафа, асавари, бхайрави, тоди,гун-лад
шан-лад,цзюе-лад,чжи-лад, юй-лад, итокоцу-тё, со-дзё, тайсики-тё,хё-дзё, осики-тё, бансики-тё,ёсэнпо, инсзнпо, кокиндзёси,бузрук,рост,наво,дугох,сегох,ирок, фалаки мотами, фалакфарёд, фалаки дашти,  раст, ушшак,нава хиджаз,ирак,хусейни,рехави,буслик"}
        DATAREADER1.Close() : DATAREADER2.Close() : DATAREADER3.Close() : CONNECTION.Close()
        ComboBox1.Items.Clear()
        For Each i As String In lad
            ComboBox1.Items.Add(i)
        Next
Здесь опишем оптимизацию ряда для начала, в соответствии с методой Ионийского лада
У кого какие будут предложения?

Добавлено через 20 минут
новая мысль после того как получим оптимизированный ряд заодно обучаем нейросеть и в конце выбираем ритм из миди файлов, которые наиболее подходят к выбранному направлению в музыке
Dim Genres(2000) As String
Genres = {"Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", "Hip- Hop", "Jazz", "Metal", "New Age", "Oldies", "Other", "Pop", "R&B", "Rap", "Reggae", "Rock", "Techno", "Industrial", "Alternative", "Ska", "Death Metal", "Pranks", "Soundtrack", "Euro-Techno", "Ambient", "Trip-Hop", "Vocal", "Jazz+Funk", "Fusion", "Trance", "Classical", "Instrumental", "Acid", "House", "Game", "Sound Clip", "Gospel", "Noise", "Alternative Rock", "Bass", "Punk", "Space", "Meditative", "Instrumental Pop", "Instrumental Rock", "Ethnic", "Gothic", "Darkwave", "Techno-Industrial", "Electronic", "Pop-Folk", "Eurodance", "Dream", "Southern Rock", "Comedy", "Cult", "Gangsta", "Top 40", "Christian Rap", "Pop/Funk", "Jungle", "Native US", "Cabaret", "New Wave", "Psychadelic", "Rave", "Showtunes", "Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", "Polka", "Retro", "Musical", "Rock & Roll", "Hard Rock", "Folk", "Folk-Rock", "National Folk", "Swing", "Fast Fusion", "Bebob", "Latin", "Revival", "Celtic", "Bluegrass", "Avantgarde", "Gothic Rock", "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", "Slow Rock", "Big Band", "Chorus",
"Easy Listening", "Acoustic", "Humour", "Speech", "Chanson", "Opera", "Chamber Music", "Sonata", "Symphony", "Booty Bass", "Primus", "Porn Groove","Satire", "Slow Jam", "Club", "Tango", "Samba", "Folklore", "Ballad", "Power Ballad", "Rhytmic Soul", "Freestyle", "Duet", "Punk Rock", "Drum Solo", "Acapella", "Euro-House", "Dance Hall", "Goa", "Drum & Bass", "Club-House", "Hardcore", "Terror", "Indie", "BritPop", "Negerpunk", "Polsk Punk", "Beat","Christian Gangsta", "Heavy Metal", "Black Metal", "Crossover", "Contemporary C","Christian Rock", "Merengue", "Salsa", "Thrash Metal", "Anime", "JPop", "SynthPop"}
ComboBox2.Items.Clear()
For Each i As String In Genres
ComboBox2.Items.Add(i)
Next

Добавлено через 4 минуты
На каждое направление в музыке должны быть построены свои системы или не системы уравнений для обучения нейросети.

Добавлено через 2 минуты
Модель описывается словами или формулами. В данном случае словами.

Добавлено через 2 часа 15 минут
До меня только сейчас дошло как надо
с ионийским ладом В соответствии с графиком. Ионийский лад — внешне соответствует натуральному мажору.
Мажор – музыкальный лад, аккорд которого построен на большой терции; характеризуется преимущественно бодрой, радостным звучанием.
Анализируем рэндомайзерный ряд убираем (заменяем) чередования нот, не характерные направленности мелодии от первой ноты от восходящей к нисходящей последовательности в мажорной гамме к первой ноте. Строим вектор для мажорного аккорда к рэндомайзерному ряду прибавляем 2 тона.
Единственный вопрос имеет ли значение первая нота в рэндомайзерном ряду или от неё же не меняя расчет проводить?

Добавлено через 16 минут
Принцип построения (Тон, тон, полутон, тон, тон, тон, полутон). А вот он алгоритм мелодии в ионийском ладе.

Добавлено через 1 час 55 минут
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Dim Password As String = "22223"
        Dim userName As String = "Admin"
  Dim Con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\note.accdb;Jet OLEDB:Database Password='" & Password & "';Persist Security Info=True")
        Dim BD As OleDb.OleDbCommand
        Con.Open()
        While i = True
            i = i + 1
            BD = New OleDb.OleDbCommand("INSERT INTO [1] ([id соло])VALUES ('" & DataGridView1.Rows(i).Cells(3).Value & "'  )", Con)
        End While
        BD.ExecuteNonQuery()
        Con.Close()
BD.ExecuteNonQuery() Ошибку выдает на эту строку Как исправить?

Добавлено через 20 минут
0
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
25.06.2019, 23:03  [ТС]
Уже всё сам решил. Дальше будем копать глубже по оптимизации звукорядов

Добавлено через 2 часа 52 минуты
робот композитор начало проекта
0
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
03.07.2019, 09:04  [ТС]
Есть ли функция воспроизводящая звуковой сигнал исходя из частоты? Например нота до 261.63

Добавлено через 1 час 27 минут
VB.NET
1
  Beep(1000, 1000)
почему не работатет? Какую библиотеку необходимо подключить?

Добавлено через 13 минут
VB.NET
1
2
Private Declare Function Beep Lib "kernel32" (ByVal soundFrequency As Int32, ByVal soundDuration As Int32) As Int32
Beep(1000, 1000)
не работает почему?

Добавлено через 1 час 0 минут
или лучше всего как подключиться к библиотеке winamp2?
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
03.07.2019, 11:35
kshyms, что касается воспроизведения мелодий с помощью биппера, я как-то интересовался вопросом и результаты изложил здесь Мелодии на бипере - Форум программистов и сисадминов Киберфорум. Однако, если ты хочешь воспроизводить музыку, тем более полифонию, то лучше использовать миди-интерфейс, там возможности ограничены только фантазией. Этой темой я тоже интересовался, хоть и недолго, и тоже изложил результаты своих исследований в блоге MIDI музыка на C#. Возможно там некоторые из описанных подходов и не самые оптимальные, но основные принципы работы с миди там, как мне кажется, описаны неплохо.
2
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
03.07.2019, 18:16  [ТС]
Я рылся в музскоре и нашел, ни миди, ни mp3, ни wav файлов значит они используют какие то системные или библиотеки media player

Добавлено через 19 минут
если у меня есть звук до с частотой 1046.50 то как программно в до диез конвертировать с частотой 1108.70?
VB.NET
1
Computer.Audio.Play(put + "\note\do.wav", AudioPlayMode.Background)
Добавлено через 3 часа 28 минут
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim samplerate As Integer ' частота сэмпла
        Dim wavefrequency As Double ' частота волны
        Dim wavevolume As Double 'громкость волны
        Dim period As Double
        Dim pi As Double
        Dim n As Integer
        Dim a As Integer
        Dim Buffer(500) As Integer
 
        While a < samplerate
            'устанавливаем цикл на длину сэмпла
            n = wavevolume * (Math.Sin(a) * pi / period) 'вычисление sine-волны
            Buffer(a) = n 'заносим вычисленное значение в буфер
            period = samplerate / wavefrequency / 2
            pi = 3.14
       End While
Как прослушать звук сэмпла?

Добавлено через 2 часа 23 минуты
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
'Sine волна
        Dim samplerate As Integer ' частота сэмпла
        Dim wavefrequency As Double ' частота волны
        Dim wavevolume As Double 'громкость волны
        Dim period As Double
        Dim pi As Double
        Dim n As Integer
        Dim a As Integer
        Dim Buffer(20000) As String
 
        While a < samplerate
            'устанавливаем цикл на длину сэмпла
            n = wavevolume * Math.Sin((a) * pi / period) 'вычисление sine-волны
            Buffer(a) = n 'заносим вычисленное значение в буфер
            period = samplerate / wavefrequency / 2
            pi = 3.14
       End While
 
        'сложим две волны разной частоты и амплитуды.
 
        Buffer(10) = 16384
        Dim tone1, tone2 As Integer
        tone1 = 65
        tone2 = 131
        samplerate = 44100 / 2 ' Частота дискретизации
        Dim b, amp1, amp2 As Integer
        amp1 = 128
        amp2 = 64
        While a < 16384
            'устанавливаем цикл на длину сэмпла
            b = amp1 * Math.Sin((a * pi / samplerate / tone1)) + amp2 * Math.Sin(a * pi / samplerate / tone2)
            Buffer(11) = b 'заносим вычисленное значение в буфер
            a = b
            If b > 128 Then b = 128
            If b < -128 Then b = -128
        End While
Добавлено через 58 секунд
как прослушать звук сэмплов?

Добавлено через 4 минуты
И как из этих волн преобразовать в эффект дисторшн?
0
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
05.07.2019, 07:55  [ТС]
diadiavova,
VB.NET
1
Computer.Audio.Play(put + "\note\do.wav", AudioPlayMode.Background)
Это прослушивается не комильфо

может в формат миди файлов конвертировать полученный звукоряд

Key Signature (тональность)
FF 59 02 sf mi

• sf = −7 для 7 бемолей, −1 для 1 бемоля и т. д., 0 для до-мажора или натурального ля-минора, 1 для 1 диеза и т. д. • mi = 0 для мажора, 1 для минора.
а потом проигрывать на плеере у кого какие мысли?

Добавлено через 27 минут
формат миди
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
05.07.2019, 20:39
kshyms, честно говоря, ты не устаешь меня удивлять. Я еще могу понять, что ты не отреагировал на то, что я писал об устройстве музыки, поскольку для понимания этих вопросов, нужно все-таки их довольно серьезно изучать. Но когда я тебе даю подробное описание того как начать работать с миди-интрефейсом, причем с примером, где я взял ноты из сети, воспроизвел их, снабдил аккомпанементом (примитивным), подробно все описал и пример программы выложил. И ты после этого всего начинаешь заниматься какой-то фигней с аудиофайлами и т. п. Вот этого я в принципе понять не могу. ))
0
-4 / 4 / 0
Регистрация: 21.09.2015
Сообщений: 333
05.07.2019, 21:37  [ТС]
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    Dim midi (30) As string
midi(0) = "4D546864"                    'блок заголовка 
midi(1) = midi(1) & "00000006"            'длина блока - 6 байт 
midi (2) = midi (2) & "0000"                'формат файла - 0 
midi (3)= midi (3) & "0001"                'номер трека 
midi (4)= midi (4) & "0060"                '96 тиков в четверти 
midi (5)= midi (5) & "4D54726B"            'блок трека 
midi (6)= midi (6) & "0000003B"            'длина трека - 59 байт 
midi (7)= midi (7) & "00FF580404021808"    'дельта-время 0, размер 4/4, один удар метронома на четверть, 8 тридцать вторых на 24 midi Clock 
midi (8)= midi (8) & "00FF510309F38E"      'дельта-время 0, размер 4/4, темп - 652174 микросекунды на четверть 
midi (9)= midi (9 & "00C000"              'канал 0, инструмент 00 
midi (10)= midi (10) & "00C100"              'канал 1, инструмент 00 
midi (11)= midi (11)& "00C200"              'канал 2, инструмент 00 
midi (12)= midi(12) & "00923060"            'дельта-время 00 тиков, канал 2, играть ноту До малой октавы, громкость 60 
midi (13)= midi(13) & "60914340"            'дельта-время 96 тиков, канал 1, играть ноту Соль первой октавы, громкость 40 
midi (14)= midi(14) & "003C40"              'дельта-время 00 тиков, канал 1, играть ноту До первой октавы (Running Status), громкость 40 
midi (15)= midi(15) & "60904C20"            'дельта-время 96 тиков, канал 0, играть ноту Ми второй октавы, громкость 20 
midi (16)= midi(16) & "8140823060"          'дельта-время 192 тика, канал 2, снять ноту До малой октавы, громкость 60 
midi (17)= midi(17) & "00814340"            'дельта-время 00 тиков, канал 1, снять ноту Соль первой октавы, громкость 40 
midi (18)= midi(18) & "003C40"              'дельта-время 00 тиков, канал 1, снять ноту До первой октавы (Running Status), громкость 40 
midi (19)= midi(19) & "00804C20"            'дельта-время 00 тиков, канал 0, снять ноту Ми второй октавы, громкость 20 
midi (20)= midi(20) & "00FF2F00"            'конец трека 
 
For i=1 to 20
midi (i) = Convert.ToInt32(midi (i), 16)
 'запись в файл
        Using fstream As New FileStream("\file.mid", FileMode.OpenOrCreate)
            'преобразуем строку в байты
            Dim array As Byte() = System.Text.Encoding.Default.GetBytes(midi (i))
            'записываем массив байтов в файл
            fstream.Write(array, 0, array.Length)
       
        End Using
 
 
next i
Где ошибки? Из того, что рекомендовали на c# я понял одно, что надо изучать стандарты миди

Добавлено через 3 минуты
А как же без проигрывания полученного звукоряда после оптимизации?

Добавлено через 1 минуту
как же можно редактировать его не прослушав его

Добавлено через 3 минуты
Для композитора важна мелодия а аккорды он сам решит какие надо или не надо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2019, 21:37
Помогаю со студенческими работами здесь

Нейронные сети на C#
Подскажите какие-нибудь библиотеки для создания нейронный сетей на C#. Желательно, чтобы еще были примеры к этой библиотеке)

Нейронные сети для c#
Здравствуйте, возникла задача в использовании нейронных сетей в C#. А именно: При определенных входных данных (каких-либо данных...

Нейронные сети в .NET
Собираюсь писать дипломку на языке Си шарп по нейронным сетям и вот что заинтересовало. А есть ли уже написанные в .NET классы нейронных...

Нейронные сети и распознавание рукописного текста
1)В общем дело в том,что хочу реализовать распознавание рукописного текста(с картинки). 2)Самое подходящее-нейронные сети(в частности...

Нейронные сети: Выполнить прогнозирование на завтра. Обучить программу
Привет всем! Помогите с программой на C#, необходимо выполнить задание с помощью прогнозирование в нейронных сетях. Входные данные: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru