Strona 1 z 2

Programowanie interfejsu MIDI

: środa 01 kwie 2009, 22:40
autor: tazik
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

Re: Programowanie interfejsu MIDI

: czwartek 02 kwie 2009, 16:14
autor: Zbynia
pogadaj z mistrzem w tej kwestii czyli WG :)

Re: Programowanie interfejsu MIDI

: czwartek 02 kwie 2009, 17:05
autor: Janusz_M
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.

Re: Programowanie interfejsu MIDI

: czwartek 02 kwie 2009, 18:27
autor: tazik
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.



Re: Programowanie interfejsu MIDI

: czwartek 02 kwie 2009, 20:05
autor: WG
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.

Re: Programowanie interfejsu MIDI

: czwartek 02 kwie 2009, 20:19
autor: tazik
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

Re: Programowanie interfejsu MIDI

: czwartek 02 kwie 2009, 20:32
autor: WG
ok :)
pozdr.

Re: Programowanie interfejsu MIDI

: czwartek 02 kwie 2009, 22:05
autor: Zbynia
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 :)

Re: Programowanie interfejsu MIDI

: czwartek 02 kwie 2009, 22:42
autor: tazik
Do "Symfonii C++" Grębosza mam dostęp, także zacznie się lektura.

Re: Programowanie interfejsu MIDI

: piątek 03 kwie 2009, 01:01
autor: yaniki
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.