Автор Тема: Как иметь MIDI  (Прочитано 1771 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн antilamer Автор темы

  • Опытный
  • ****
  • Сообщений: 952
  • Репутация: +1/-2
  • Магистр точных наук
    • http://fuoco13.narod.ru
Как иметь MIDI
« : Июля 07, 2003, 11:16:27 »
Братья-программеры! Киньте ссылку как че-нить писать в midi порт и вообще с ним общаться в C++ Builder! Оцинь хоцицца свой табредактор написать... :)

Оффлайн Kuzmitch

  • Администратор
  • *****
  • Сообщений: 3066
  • Репутация: +1904/-141
  • Пиши интересно, будь мужиком!
    • Twitter
Как иметь MIDI
« Ответ #1 : Июля 07, 2003, 11:36:32 »
Хоть это немного и не по теме, но лучше всего тебе обратить внимание на DirectMusic. Если не ошибась, то он поставляется с DirectX 6.0.  Просто открываешь MSDN  и обчитываешься до посинения.  Обрати внимание на выделенное.

Но на самом деле не совтую заморачиваться. Чтобы выпустить реальную программулину. тебе придется забросить гитару на  продолжительный срок. Как мне... :(

DirectMusic is the musical component of the Microsoft® DirectX® API. Unlike the Microsoft® DirectSound® API, which is for the capture and playback of digital sound samples, DirectMusic works with message-based musical data, which is converted into wave samples, either in hardware or in a software synthesizer. The default software implementation uses the Microsoft® Software Synthesizer to create wave samples that are then streamed to DirectSound. Instrument voices are synthesized from samples according to the downloadable sounds (DLS) standard.

As well as supporting input in Musical Instrument Digital Interface (MIDI) format, DirectMusic can compose music at run time. This music is not algorithmically generated, but is based on elements authored by a human composer. The music is performed with variations and can respond dynamically to program events.

The authoring tool for DirectMusic content is a desktop application called Microsoft® DirectMusic® Producer. This tool is not part of DirectMusic for Microsoft® Windows® CE .NET. DirectMusic Producer is included in the DirectX SDK for the desktop.

Like other components of DirectX, DirectMusic is based on the Component Object Model (COM).

Оффлайн vladlogv

  • Эксперт
  • *****
  • Сообщений: 1614
  • Репутация: +11/-4
  • Cultosaurus Erectus
Как иметь MIDI
« Ответ #2 : Июля 07, 2003, 11:41:29 »
Я вроде даже по этому поводу книжку видел.
Лучше бы написали программулю для обучения нотам. Типа струна / лад - какая нота? автоматизм бы вырабатывался, как перед сдачей билетов на вод.права ;)

Оффлайн Eguess

  • Эксперт
  • *****
  • Сообщений: 1011
  • Репутация: +6/-2
  • Падаван
Как иметь MIDI
« Ответ #3 : Июля 07, 2003, 15:00:30 »
Эт точно! Выучить-то надо всего 60 нот, а все-равно с задержкой всплывает..... пока отложишь, отсчитаешь....

Оффлайн Тракторист

  • Ветеран форума
  • ******
  • Сообщений: 3304
  • Репутация: +340/-16
Как иметь MIDI
« Ответ #4 : Июля 07, 2003, 15:23:45 »
Хаммы надо играть а не в монитор пялиться:xyxwave: :xyxwave: :supergrin :laugh: :tongue:

Оффлайн vladlogv

  • Эксперт
  • *****
  • Сообщений: 1614
  • Репутация: +11/-4
  • Cultosaurus Erectus
Как иметь MIDI
« Ответ #5 : Июля 07, 2003, 15:53:23 »
если кто-то решит дописать эту программу, могу прислать часть кода типа:
Private Function detectPitch(bString As Byte, _
                            bBar As Byte) As String
Dim i As Byte
Dim bOctave As Integer
Dim bPitch As Byte
Dim strNotes(1 To 12) As String
Dim strPitch As String * 5

'detect octave
Select Case bString
Case 1
    If bBar < 8 And bBar >= 0 Then
    bOctave = 1
    ElseIf bBar >= 8 And bBar < 16 Then
    bOctave = 2
    ElseIf bBar >= 20 And bBar <= 24 Then
    bOctave = 3
    Else
    MsgBox "error"
    Exit Function
    End If
Case 2
    If bBar < 1 And bBar >= 0 Then
    bOctave = 0
    ElseIf bBar >= 1 And bBar < 13 Then
    bOctave = 1
    ElseIf bBar >= 13 And bBar <= 24 Then
    bOctave = 2
    Else
    MsgBox "error"
    Exit Function
    End If
Case 3
    If bBar < 5 And bBar >= 0 Then
    bOctave = 0
    ElseIf bBar >= 5 And bBar < 17 Then
    bOctave = 1
    ElseIf bBar >= 17 And bBar <= 24 Then
    bOctave = 2
    Else
    MsgBox "error"
    Exit Function
    End If
Case 4
    If bBar < 10 And bBar >= 0 Then
    bOctave = 0
    ElseIf bBar >= 10 And bBar < 22 Then
    bOctave = 1
    ElseIf bBar >= 22 And bBar <= 24 Then
    bOctave = 2
    Else
    MsgBox "error"
    Exit Function
    End If
Case 5
    If bBar < 3 And bBar >= 0 Then
    bOctave = -1
    ElseIf bBar >= 3 And bBar < 15 Then
    bOctave = 0
    ElseIf bBar >= 15 And bBar <= 24 Then
    bOctave = 1
    Else
    MsgBox "error"
    Exit Function
    End If
Case 6
    If bBar < 8 And bBar >= 0 Then
    bOctave = -1
    ElseIf bBar >= 8 And bBar < 20 Then
    bOctave = 0
    ElseIf bBar >= 20 And bBar <= 24 Then
    bOctave = 1
    Else
    MsgBox "error"
    Exit Function
    End If
End Select

'detect pitch
Select Case bString
Case 1: i = 8
Case 2: i = 3
Case 3: i = 11
Case 4: i = 6
Case 5: i = 1
Case 6: i = 8
Case Else
MsgBox "error": Exit Function
End Select

strNotes(1) = "A": strNotes(2) = "A#Bb": strNotes(3) = "B"
strNotes(4) = "C": strNotes(5) = "C#Db": strNotes(6) = "D"
strNotes(7) = "D#Eb": strNotes(8) = "E": strNotes(9) = "F"
strNotes(10) = "F#Gb": strNotes(11) = "G": strNotes(12) = "G#Ab"

bPitch = i + bBar
Do Until bPitch <= 12
    bPitch = bPitch - 12
Loop

detectPitch = strNotes(bPitch) & bOctave
End Function

Оффлайн W.M.

  • Ветеран форума
  • ******
  • Сообщений: 5196
  • Репутация: +70/-71
  • шушпанчик
Как иметь MIDI
« Ответ #6 : Июля 07, 2003, 16:57:05 »
Д. В.Николенко MIDI - язык богов
Серия "Конспект программиста"
Литера 2000г. / 143 с. ISBN:5-9263-0040-1

http://shop.biblio-globus.ru/scripts/_inquiry.exe/description?bno=0&pno=294704

Оффлайн Kuzmitch

  • Администратор
  • *****
  • Сообщений: 3066
  • Репутация: +1904/-141
  • Пиши интересно, будь мужиком!
    • Twitter
Как иметь MIDI
« Ответ #7 : Июля 07, 2003, 17:28:23 »
2W.M.: ты эту книгу хоть читал? :smokin:

Оффлайн W.M.

  • Ветеран форума
  • ******
  • Сообщений: 5196
  • Репутация: +70/-71
  • шушпанчик
Как иметь MIDI
« Ответ #8 : Июля 07, 2003, 17:42:30 »
Цитировать
Автор оригинала Kuzmitch
2W.M.: ты эту книгу хоть читал? :smokin:
нет, а зачем :confused:
Искал себе книжки, наткнулся на сабж, показал линк. Прочтешь аннотацию - сам решишь нужна или нет.

Оффлайн Gitaristt!!

  • Опытный
  • ****
  • Сообщений: 907
  • Репутация: +64/-50
  • Bada boom!!!
Как иметь MIDI
« Ответ #9 : Июля 07, 2003, 17:47:09 »
Hmm vesma Kovarnqi vopros Kak IMET~ midi....

Оффлайн antilamer Автор темы

  • Опытный
  • ****
  • Сообщений: 952
  • Репутация: +1/-2
  • Магистр точных наук
    • http://fuoco13.narod.ru
Как иметь MIDI
« Ответ #10 : Июля 07, 2003, 18:38:57 »
Fuck Basic! Hail C++! :) :) Кстати в аннотации книжки я не нашел намека на то что она для программеров...

Оффлайн antilamer Автор темы

  • Опытный
  • ****
  • Сообщений: 952
  • Репутация: +1/-2
  • Магистр точных наук
    • http://fuoco13.narod.ru
Как иметь MIDI
« Ответ #11 : Июля 07, 2003, 18:39:12 »
Fuck Basic! Hail C++! :) :) Кстати в аннотации книжки я не нашел намека на то что она для программеров...
Щас поищу "документация directmusic"...

Оффлайн antilamer Автор темы

  • Опытный
  • ****
  • Сообщений: 952
  • Репутация: +1/-2
  • Магистр точных наук
    • http://fuoco13.narod.ru
Как иметь MIDI
« Ответ #12 : Июля 07, 2003, 18:49:23 »
Какую я штуку нашел.. http://directmidi.sourceforge.net
Похоже, это именно то что надо...

Оффлайн Mihasus

  • Новичок
  • *
  • Сообщений: 30
  • Репутация: +0/-0
  • Гитарозайнер
    • http://mihasus.narod.ru
Как иметь MIDI
« Ответ #13 : Июля 07, 2003, 18:57:27 »
А чего ты хочешь такого в своем табредакторе замутить, чего в других нету?

Оффлайн antilamer Автор темы

  • Опытный
  • ****
  • Сообщений: 952
  • Репутация: +1/-2
  • Магистр точных наук
    • http://fuoco13.narod.ru
Как иметь MIDI
« Ответ #14 : Июля 07, 2003, 20:24:39 »
Ну, скорее всего, я его не напишу, по крайней мере в одиночку... но хочется вот чего:
1)В GP4 нельзя сделать например одновременно 16е и триоли
2)В PTE нельзя сделать одновременно 16е,8е и 4е.
Таки "слои" надо, как в Finale.
3)Хочется чтобы можно редактировать сами нотки, а не лады - то, как диезы и бемоли расставляются в PTE, меня просто бесит.
4)Хочется простого контроля над параметрами каждой отдельной ноты - громкость, тембр (его, кстати, нету нигде - тоже зря).
5)Фигня, но ни в PTE, ни в GP4 нету "удара по деке" и нормального озвучивания пиццикато.
6)Хочется чтобы можно было делать "красивые" ноты - там, менять объединение нот в группы, штрихи поворачивать, сами нотки двигать - в общем, как в Finale.
7)Думаю что вполне реально написать такую штуку как захват нот с микрофона (правда, не с моим микрофоном :) )
8)Хочется чтобы можно было показывать только табы/только ноты
9)Человеческий алгоритм генерации оптимальной распальцовки.
10) и много всякой другой фигни.
Вообще такое ощущение, что gp4 и ptb создавались исключительно для одно-двухголосной музыки и исключительно для электрухи... Набирать ими классику - сущее мучение.
Если найдутся в Политехе собратья по желанию и возможности, дык можт че и выйдет...