Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.10.2009, 08:04
Serga Serga вне форума
Прохожий
 
Регистрация: 28.01.2008
Сообщения: 28
Репутация: 10
По умолчанию Генератор аккордов для гитары

Может кто уже имел дело с подобными программами. Подскажите пожалуйста алгоритм, по которому можно объединять полученные ноты в конкретный рисунок аккорда.

например
Код:
...
if (akk = 'm') or (akk = 'min') then
lb.Items.Add(line_n[1] +  ' '+ line_n[4] +  ' '+ line_n[8]);
//akk - string, определяет тип аккорда
//line_n[byte] -нота с номером byte в ряду line_n
...
if (akk = 'm7+')or (akk = 'm7M')or (akk = 'mmaj')then
  lb.Items.Add(line_n[1] +  ' '+ line_n[4] +  ' '+ line_n[8]+  ' '+ line_n[12]);
//и.т.п.
//ноты я получаю, их расположение на струнах
//в зависимости от настройки тоже.

А вот как получить в результате, скажем, запись
Am 0 0 2 2 1 0
Am 5 5 7 7 6 5
...
не придумывается
Ответить с цитированием
  #2  
Старый 16.10.2009, 21:41
Boris the Blade Boris the Blade вне форума
Прохожий
 
Регистрация: 17.09.2009
Сообщения: 27
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serga
Подскажите пожалуйста алгоритм, по которому можно объединять полученные ноты в конкретный рисунок аккорда.

А вот как получить в результате, скажем, запись
Am 0 0 2 2 1 0
Am 5 5 7 7 6 5
...
не придумывается

Можно уточнить немного? Понял так:
1. автору известны ноты на каждом ладу каждой струны
2. аккорд представляется в виде нескольких нот
3. нужно скомбинировать ноты так чтоб получить аккорд (поидее, ограничения : на каждой струне по ноте зажимаается, скажем 1 и 10 лад никто зажимать не будет, поэтому нужно чтоб струны зажимались на одних и тех же ладах практически +- лад, а так же открытая струна)?


Если да, то можно так:
1. Берём аккорд, разделяемна ноты.
2. Берём открытую струну, 1, 2 и 3 лады. Смотрим первую ноту аккорда. Если нашли - вычёркиваем струну и ищем остальные ноты по оставшимся строкам. Если нет - сдвигаемся на 1 лад (т.е. берём 2,3 и 4 лады).

Последний раз редактировалось Boris the Blade, 16.10.2009 в 22:46.
Ответить с цитированием
  #3  
Старый 19.10.2009, 08:56
Serga Serga вне форума
Прохожий
 
Регистрация: 28.01.2008
Сообщения: 28
Репутация: 10
По умолчанию

Цитата:
Сообщение от Boris the Blade
Можно уточнить немного? Понял так:
1. автору известны ноты на каждом ладу каждой струны
2. аккорд представляется в виде нескольких нот
3. нужно скомбинировать ноты так чтоб получить аккорд (поидее, ограничения : на каждой струне по ноте зажимаается, скажем 1 и 10 лад никто зажимать не будет, поэтому нужно чтоб струны зажимались на одних и тех же ладах практически +- лад, а так же открытая струна)?
Именно так))
Цитата:
Сообщение от Boris the Blade
Если да, то можно так:
1. Берём аккорд, разделяемна ноты.
2. Берём открытую струну, 1, 2 и 3 лады. Смотрим первую ноту аккорда. Если нашли - вычёркиваем струну и ищем остальные ноты по оставшимся строкам. Если нет - сдвигаемся на 1 лад (т.е. берём 2,3 и 4 лады).
Решение, спасибо большое)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter