powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / синтезатор
6 сообщений из 6, страница 1 из 1
синтезатор
    #38581876
Volodbka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет есть вот это
http://excelvba.ru/code/beeps

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Sub beeps(melody As String, Optional ByVal BeepTime As Integer = 200)
     mr = "qazwsxedcrfvtgbyhnujmik,ol.p;/['"
     For i = 1 To Len(melody)
         DoEvents: nextlen = 1: letter = Mid$(melody, i, 1)
         nota = InStr(1, mr, letter)
         If IsNumeric(letter) And letter > 0 Then
             nextlen = letter: i = i + 1: nota = InStr(1, mr, Mid$(melody, i, 1))
         End If
         If nota > 0 Then
             tone = 220 * (2 ^ ((nota - 1) / 12))
             a = Beep(tone, nextlen * BeepTime)
         Else
             a = Beep(30000, nextlen * BeepTime / 5)
         End If
     Next
End Sub




Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
' воспроизведение звуков высокой и низкой частоты

Sub beepH(): beeps "k", 100: End Sub

Sub beepH0(): beeps "k", 30: End Sub

Sub BeepH2(): beeps "k,k", 100: End Sub

Sub beepL(): Beep 100, 100: End Sub

Sub beepL0(): Beep 100, 30: End Sub

Sub BeepL2()
     Beep 100, 100
     Beep 104, 100
     Beep 100, 100
     Beep 70, 200
End Sub



Вопрос следующий, действительно ли tone = 220 * (2 ^ ((nota - 1) / 12))
а может tone = 220 * (2 ^ ((nota - 1) / 13)), при этом символ - "X" - пустышка, или еще как?
Ну как бы нот 7, по хорошему писать tone = 220 * (2 ^ ((nota - 1) / 7)), а затем уже пронизывать диезами, бемолями.
Тут нужен человек с музыкальным слухом и немного программист
...
Рейтинг: 0 / 0
синтезатор
    #38581880
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
октава, как ни крути, делится на 12 полутонов, а не на 7 и не на 13
между нотами ре и ми два полутона, а между ми и фа - один полутон
погляди внимательно на клавиатуру фортепиано, почитай статьи про темперацию
...
Рейтинг: 0 / 0
синтезатор
    #38581882
Volodbka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут псевдо ноты, неужели они не могут теоретически быть? и в виду их наличия меняется звучание

Попытка объяснить на пальцах, лестница имеет одну длину, но расстояние между перекрытиями этажей разное. То есть одна и та же лестница может доставать до 4 этажа одного дома и до 3 этажа другого.
...
Рейтинг: 0 / 0
синтезатор
    #38581886
Volodbka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proоктава, как ни крути, делится на 12 полутонов, а не на 7 и не на 13
между нотами ре и ми два полутона, а между ми и фа - один полутон
погляди внимательно на клавиатуру фортепиано, почитай статьи про темперацию

постараюсь разобраться с темперацией, спасибо
...
Рейтинг: 0 / 0
синтезатор
    #38581893
Volodbka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
синтезатор
    #38581894
Volodbka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто не верит тот - проверит. Вопрос - закрыт.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / синтезатор
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]