Programowanie interfejsu MIDI
Programowanie interfejsu MIDI
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
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
pogadaj z mistrzem w tej kwestii czyli WG :)
Re: Programowanie interfejsu MIDI
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
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.

Jestem "przedszkolakiem" w kwestii programowania i jak wspomniałem chcę z ciekawości trochę podziałać w tym temacie.

Re: Programowanie interfejsu MIDI
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.
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
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


Jeszcze raz dziękuję i pozdrawiam
I czekam na nowe wersje Extreme Mixera

Re: Programowanie interfejsu MIDI
ok :)
pozdr.
pozdr.
Re: Programowanie interfejsu MIDI
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 :)
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
Do "Symfonii C++" Grębosza mam dostęp, także zacznie się lektura.
Re: Programowanie interfejsu MIDI
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.
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.