Programowanie interfejsu MIDI

Jeśli chcesz zasięgnąć rady, podzielić się doświadczeniem w trudnej sztuce samodzielnego programowania - to tu jest miejsce, aby tego dokonać.
tazik
Posty: 11
Rejestracja: sobota 08 lis 2008, 00:00

Programowanie interfejsu MIDI

Post autor: tazik » środa 01 kwie 2009, 22:40

Witam!

Czy może mi jakaś życzliwa osoba poradzić odnośnie podstaw tworzenia oprogramowania wykorzystującego interface MIDI? Jakiego języka i kompilatora użyć można najefektywniej? Na co zwrócić uwagę, gdy już środowisko programowania będzie określone?

Z góry dziękuję za wszelkie porady i sugestie i pozdrawiam.

tazik

Zbynia
Posty: 7665
Rejestracja: sobota 09 paź 2004, 00:00

Re: Programowanie interfejsu MIDI

Post autor: Zbynia » czwartek 02 kwie 2009, 16:14

pogadaj z mistrzem w tej kwestii czyli WG :)

Janusz_M
Posty: 340
Rejestracja: czwartek 08 sty 2009, 00:00

Re: Programowanie interfejsu MIDI

Post autor: Janusz_M » czwartek 02 kwie 2009, 17:05

Może napisz dokładnie co chcesz w ogóle osiągnąć.Jeżeli zdefiniujesz swoje potrzeby łatwiej będzie ci doradzić w kwestii doboru narzędzi.

tazik
Posty: 11
Rejestracja: sobota 08 lis 2008, 00:00

Re: Programowanie interfejsu MIDI

Post autor: tazik » czwartek 02 kwie 2009, 18:27

Otóż, wzorując się na aplikacji mistrza WG (pozdrawiam - Extreme Midi Mixerze chciałem poeksperymentować w programowaniu ze sterowaniem urządzeniami MIDI. Chciałbym dowiedzieć się, w jaki sposób implementuje się w C++ albo Javie (akurat te 2 języki przyszły mi na myśl) funkcje sterujące kontrolerami kanałowymi MIDI lub komunikatami sysex. Jak odbywa się odbieranie komunikatów i wysyłanie przez program do np. syntezatora? Z jakich bibliotek, pluginów można skorzystać w zależności od środowiska programowania? Oczywiście jak to powiązać z graficzną stroną aplikacji, czyli gały, suwaki, przyciski?
Jestem "przedszkolakiem" w kwestii programowania i jak wspomniałem chcę z ciekawości trochę podziałać w tym temacie.



WG
Posty: 1235
Rejestracja: poniedziałek 12 sie 2002, 00:00

Re: Programowanie interfejsu MIDI

Post autor: WG » czwartek 02 kwie 2009, 20:05

mistrza ;) hehe, bez przesady

Normalny ludek jestem, tak mi się wydaje przynajmniej ;)



Więc krótko:



Literatura:

Rozejrzyj się za tą książką którą warto imo kupić.

http://www.charlespetzold.com/pw5/index.html

Jest napisana w taki sposób, że do tej pory nie ma lepszej pozycji.

Jest tam o MIDI również.

No i oczywiście INTERNET - czyli google kopalnia wiedzy, wystarczy dobrze poszukać. Część rzeczy znajdziesz w archiwum tego forum do dziś wiele rzeczy jest ciągle aktualnych.

Jeżeli chodzi o kwestie nauki danego języka np. C++, Internet jest w zupełności wystarczający. W google wyskakują setki stron z różnymi samouczkami, tutorialami, przewodnikami, przykładami po języku C++.
W Polsce taką "utartą pozycją" wśród studentów jest Jerzy Grębosz - Symfonia C++.



Język:

C++ - jeżeli planujesz zająć się tym poważniej. Delphi, Borland, Visual Basic jeżeli chcesz zająć się tym od czasu do czasu dla własnego hobby i chcesz szybciej coś wykonać. Borland ma na start gotowe tzw. kontrolki i elementy graficzne co przyśpiesza pracę.

Ale to C++ jest standardem w aplikacjach audio, powstało mnóstwo specyfikacji opartych na tym języku pierwszy przykład z brzegu VST. Po za tym firmy wymieniają się kodem, specyfikacją czy komunikują między sobą TYLKO za pomocą tego języka.





Środowisko:

Visual Studio jeżeli C++, są wersje do zastosowań niekomercyjnych jest to jakaś inwestycja ale na pewno ale się opłaci, po prostu poznasz narzędzie na którym pracują "zawodowcy" aczkolwiek tym wystarczy tylko samo SDK :) mi również. Można zamówić trial w polskim oddziale Microsoftu telefonicznie, przyślą ci zestaw wszystkich narzędzi do domu do testów na płytkach i zobaczysz co i jak. W przypadku Borlanda C++ i Delphi sprawa łatwiejsza. Trial-owe wersje są do ściągnięcia z netu. Więc możesz od razu sprawdzić jak się przygotowuje aplikacje i edytuje kod w tym środowisku.



Można spróbować zestaw kompilator GCC + jakieś środowisko IDE np. CodeBlocks czy Eclipse ten ma lepsze możliwości nawet i do tego SDK Microsoft. Zestaw darmowy choć trzeba już nieźle władać językiem C++ i wiedzieć co i jak by się nie gubić w sytuacjach gdy kompilator wywali ci setkę błędów ;). Co prawda są tam zintegrowane debuggery kodu ale nie tak dobrze zintegrowane jak w Visual Studio gdzie mamy autouzupełniane i różne narzędzia przyśpieszające edycję kodu czy ułatwiające testowanie wynikowej aplikacji.



Można też próbować z gotowymi szkieletami tzw. Framework jak wxWidgets, Juce (akurat ten mocno zoptymalizowany pod audio), czy niskopoziomowe SDL. Zaleta ich, że przygotowany kod w danym framework działa praktycznie wszędzie Win/Mac czy w niektórych przypadkach Linux.



Na co zwracać uwagę

Klasy. LEPIEJ się naucz tego porządnie. Konstruktory, destruktory, hermetyzacja, dziedziczenie. funkcje wirtualne itd. :) straszne terminy ale bez tego możesz zapomnieć o poważnych aplikacjach. Chyba, że nie planujesz, w zasadzie z czasem można te sprawy opanować.



MIDI

Musisz zapoznać się ze specyfikacją MIDI i protokołem przesyłu danych MIDI co i jak czyli INTERNET.



Na skróty

Jest wiele gotowych bibliotek, posiadających obsługę MIDI, ASIO itp. Wadą tego rozwiązania jest to, że musisz przestudiować dodatkowo całą specyfikację danej bibioteki i jej implementację klas. No i bez klas ani rusz tutaj :) czyli rzecz, o której było wcześniej.



Co trzeba jeszcze

Cholernie dużo wolnego czasu i jeszcze więcej :)



Generalnie dużo pracy przed Tobą patrząc na pytania

Życzę powodzenia.

tazik
Posty: 11
Rejestracja: sobota 08 lis 2008, 00:00

Re: Programowanie interfejsu MIDI

Post autor: tazik » czwartek 02 kwie 2009, 20:19

Dziękuję za wyczerpujące informacje WG Z tego wszystkiego największy problem będzie z czasem, ale ... damy radę



Jeszcze raz dziękuję i pozdrawiam



I czekam na nowe wersje Extreme Mixera

WG
Posty: 1235
Rejestracja: poniedziałek 12 sie 2002, 00:00

Re: Programowanie interfejsu MIDI

Post autor: WG » czwartek 02 kwie 2009, 20:32

ok :)
pozdr.

Zbynia
Posty: 7665
Rejestracja: sobota 09 paź 2004, 00:00

Re: Programowanie interfejsu MIDI

Post autor: Zbynia » czwartek 02 kwie 2009, 22:05

tak tak panie ludek :)

nie zmienia to faktu że masz tu łeb w tej kwestii nie od parady :)

a jak juz czerpać wiedze to prawie że u źródła :)

pozdro

ps.
WG myslałeś nad zrobieniem prostackiego wręcz sekwencera ala system z akai ?
nie powiem że nie byłbym zanteresowany :)
najlepiej ala mpc 4k :)

tazik
Posty: 11
Rejestracja: sobota 08 lis 2008, 00:00

Re: Programowanie interfejsu MIDI

Post autor: tazik » czwartek 02 kwie 2009, 22:42

Do "Symfonii C++" Grębosza mam dostęp, także zacznie się lektura.

Awatar użytkownika
yaniki
Posty: 488
Rejestracja: niedziela 03 sie 2003, 00:00
Kontakt:

Re: Programowanie interfejsu MIDI

Post autor: yaniki » piątek 03 kwie 2009, 01:01

Proponowałbym może na początek sięgnięcie po jakieś współczesne narzędzia umożliwiające programowanie MIDI. Istnieje spora liczba języków programowania sprofilowanych specjalnie do tego celu i warto je poznać, zanim zaczniemy się przebijać przez programowanie MIDI od podstaw w C++ (przyznaję, że jest to wartościowe zajęcie, ale nie zawsze trzeba sięgać po taką "armatę", do tego wymagającą własnoręcznego wykonania...).



Z darmowych i multiplatformowych warto wymienić np.:

- Supercollider (http://supercollider.sourceforge.net) - rozwijany od dawna, świetny język programowania zorientowany na potrzeby muzyczne, umożliwiający m.in. live-coding, dysponujący bogatą biblioteką narzędzi do generowania i obrobki danych MIDI;

- Processing (http://processing.org) - specyficzna "nakładka" na Javę, coś w rodzaju zntegrowanego środowiska programistycznego. Processing umożliwia bardzo szybkie prototypowanie aplikacji, również muzycznych, korzystających z MIDI (dla Processingu powstało sporo specjalnie opracowanych bibliotek ułatwiających pracę z MIDI, np. biblioteka proMIDI zawiera nawet gotowy sequencer...);


- Chuck (chuck.cs.princeton.edu) - w pewnej mierze podobny do Supercollidera, ale operujący łatwiejszą składnią;

- CSound (csounds.com) - absolutny klasyk programowania dźwięku/MIDI, jestem zaskoczony, że nikt go jeszcze nie wymienił...

- i... wiele innych.

Warto byłoby może sięgnąć po "języki wizulane", jak Pure-Data (http://puredata.org) lub PWGL (http://www2.siba.fi/PWGL) - umożliwiają one bardzo wydajne "pachowanie" struktur generujących praktycznie dowolne komunikaty MIDI.

ODPOWIEDZ