logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Interfejs MIDI IN ---> USB dla ubogich

Jimi Hendrix 10 Sie 2007 23:42 19532 14
REKLAMA
  • Interfejs MIDI IN ---> USB dla ubogich

    Swego czasu trafiłem na doskonałą stronę Igora http://tiny.pl/5f1w , na której dokonał on programowej implementacji transmisji USB na mikrokontrolerze Atmel AVR taktowanym kwarcem 12 MHz. Jako że dostarczył do swojego projektu bibliotekę DLL, obsługującą także AVR-owski UART postanowiłem wykorzystać ją i napisać proste oprogramowanie zamieniające odebrane dane na standart MIDI (trzy bajtowe paczki danych, prędkość transmisji 31250 b/s). Zadaniem mojego programiku, napisanego w Delphi 7 jest ustawienie prędkości zgodnej ze specyfikacją midi, odbiór danych co 1 ms a następnie wysłanie ich do fizycznego bądź wirtualnego portu MIDI. Na razie mój interfejs obsługuje tylko wejście MIDI, wkrótce zaimplementuję wyjście. Urządzenie działa sprawnie, udało mi się, bez wyczuwalnej latencji grać na instrumentach VST. Jednym mankamentem interfejsu jest brak transoptora, wymaganego przez specyfikację MIDI, ale w czasie najbliższym postaram się to zmienić. Załączam zdjęcie zrobionego na szybko prototypu z mikrokontrolerem atmega8 oraz pełne źródła programu. Firmware w Atmedze nie został zmodyfikowany. Aha i jeszcze jedno, wie ktoś moze w jaki sposób zmierzyć latencję portu MIDI?
    Pozdrawiam
    Załączniki:
    • usbmidi.zip (217.77 KB) Musisz być zalogowany, aby pobrać ten załącznik.

    Fajne? Ranking DIY
    O autorze
    Jimi Hendrix
    Poziom 19  
    Offline 
    Specjalizuje się w: 8051, asm
    Jimi Hendrix napisał 442 postów o ocenie 69, pomógł 11 razy. Jest z nami od 2003 roku.
  • REKLAMA
  • #2 4166950
    cukras
    Poziom 17  
    Posty: 295
    Pomógł: 14
    Ocena: 28
    Witam,wszystko ładnie ,pięknie ale może dodaj jeszcze wsad do atmegi ,schemat i PCB.
    pzdr
  • REKLAMA
  • #3 4167015
    nival
    Poziom 11  
    Posty: 16
    Układ jest zasilany z usb czy z czegoś innego
  • #4 4167285
    William Bonawentura
    Poziom 34  
    Posty: 2422
    Pomógł: 189
    Ocena: 614
    [quote="Jwysłanie ich do fizycznego bądź wirtualnego portu MIDI. Na razie mój interfejs obsługuje tylko wejście MIDI, wkrótce zaimplementuję wyjście.[/quote]

    Czy dobrze cię rozumiem ? Napisałeś sterownik dla windows dzięki któremu AVR jest widoczny w systemie jako urządzenie MIDI ?
  • REKLAMA
  • #5 4167332
    Jimi Hendrix
    Poziom 19  
    Posty: 442
    Pomógł: 11
    Ocena: 69
    schemat:
    Interfejs MIDI IN ---> USB dla ubogich

    Układ jak widać na zdjęciu został wykonany na płytce uniwersalnej. Wsad do procesora można znaleźć na stronie Igora, ale dla leniwych załączam go wraz z źródłem w asm oraz schemat w EAGLE jakby ktoś chciał płytkę wykonać.
    Pozdrawiam
    Załączniki:
    • usbmidi_firmware.zip (70.82 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #6 4167557
    Jimi Hendrix
    Poziom 19  
    Posty: 442
    Pomógł: 11
    Ocena: 69
    William Bonawentura napisał:
    [quote="Jwysłanie ich do fizycznego bądź wirtualnego portu MIDI. Na razie mój interfejs obsługuje tylko wejście MIDI, wkrótce zaimplementuję wyjście.


    Czy dobrze cię rozumiem ? Napisałeś sterownik dla windows dzięki któremu AVR jest widoczny w systemie jako urządzenie MIDI ?[/quote]

    Nie, napisałem program, który przekierowuje dane z AVR do portu midi. Coś jak sterownik ToHost.

    Pozdrawiam
  • #7 4168026
    marekdrobin
    Poziom 13  
    Posty: 71
    Ocena: 2
    Nawet fajny układ może spróbuje sobie coś takiego skonstruować chyba płyty głównej nie spalę co bo wtedy to klapa.

    Jak ktoś by manił stary komputer z USB bym chętnie kupił często eksperymentuje z urządzeniami podłączanymi pod kompa i boje się że wreszcie zniszczę swoje cacko
    :D:D:D:D
  • #8 4168133
    Jimi Hendrix
    Poziom 19  
    Posty: 442
    Pomógł: 11
    Ocena: 69
    Nie spalisz płyty, nawet jak zewrzesz linie zasilające to i tak są one zabezpieczone bezpiecznikami na płycie głównej. Ja do zabawy ze sprzętem używam Pentiuma MMX 200 MHz, wraz z płytą Shuttle 591p i 64 MB ram. Wraz z Windowsem 98 wszystko ładnie chodzi. Próbował ktoś może odpalić to http://www.obdev.at/products/avrusb/index.html na AVR?

    Pozdrawiam
  • REKLAMA
  • #9 4173024
    skywalker
    Poziom 22  
    Posty: 702
    Pomógł: 34
    Ocena: 29
    Witam
    Mógłbyś powiedzieć z jakich materiałów (książek, stron) korzystałeś przy pisaniu tego sterownika ?

    pozdrawiam Łukasz
  • #10 4173761
    Jimi Hendrix
    Poziom 19  
    Posty: 442
    Pomógł: 11
    Ocena: 69
    Korzystałem z dokumentacji DLL-ki, którą załączam, oraz ze specyfikacji MIDI, dostępnej na stronie MIDI.ORG . Uwaga, mój interfejs nie potrafi na razie odbierać komend System Exclusive, tylko Note On/Off, Control Change i Program change!

    Pozdrawiam
    Załączniki:
    • AVR309_DLL_help.zip (5.71 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #11 4175269
    William Bonawentura
    Poziom 34  
    Posty: 2422
    Pomógł: 189
    Ocena: 614
    Jimi Hendrix napisał:
    William Bonawentura napisał:
    [quote="Jwysłanie ich do fizycznego bądź wirtualnego portu MIDI. Na razie mój interfejs obsługuje tylko wejście MIDI, wkrótce zaimplementuję wyjście.


    Czy dobrze cię rozumiem ? Napisałeś sterownik dla windows dzięki któremu AVR jest widoczny w systemie jako urządzenie MIDI ?


    Nie, napisałem program, który przekierowuje dane z AVR do portu midi. Coś jak sterownik ToHost.

    Pozdrawiam[/quote]

    Czyli twój układ nie zadziała z innym programem niż napisany specjalnie pod niego ? Nie myślałeś o wykorzystaniu driverów Rolanda mapujących port midi na rs232 ?
  • #12 4176280
    Jimi Hendrix
    Poziom 19  
    Posty: 442
    Pomógł: 11
    Ocena: 69
    Witam,

    Nie ma takiej potrzeby, przy przekierowaniu przy pomocy mojego programu na port wirtualny midi układ widziany jest pod każdym synthem, sekwenserem jako fizyczny port midi, napisanie tego sterownika zajęło mi znacznie mniej czasu niż wykorzystanie gotowego konwertera usb-rs232, u którego nie ustawił bym tak łatwo prędkości 31250 kb/s. W sprawie midi przerobiłem już wszystko - kontrolery od 8051 przez AVR aż do PICów, dziesiątki interfejsów na gameport, wymianę kwarcu na karcie multi I/O, siedzę już w tym po uszy. Ale i tak daje to znacznie większą wygodę niż targanie ze sobą fortepianu i kilku moogów. Tak mogę ograniczyć mój "gig" tylko do klawiatury sterującej i Hammonda.
    Pozdrawiam
  • #13 4182393
    droid
    Poziom 13  
    Posty: 91
    Ocena: 5
    A do czego to słuzy bo nie wtajemniczony jestem ??
  • #14 5659275
    DJ_DrEw
    Poziom 15  
    Posty: 160
    Pomógł: 9
    Ocena: 14
    Sorry, za odświeżanie tematu, ale natrafiłem na problem... Jestem mocno początkujący, jeśli chodzi o mikroprocki, a chciałbym zbudować ten interfejs.. Niestety nie potrafię skonfigurować fuse bitów... Nie odsyłajcie mnie do innych stron, bo dużo już na ten temat przeczytałem i nadal nic nie czaję... Z góry dziękuję za pomoc.

Podsumowanie tematu

✨ Dyskusja dotyczy autorskiego interfejsu MIDI IN opierającego się na mikrokontrolerze Atmel AVR taktowanym kwarcem 12 MHz, który komunikuje się z komputerem przez USB. Projekt wykorzystuje bibliotekę DLL autorstwa Igora umożliwiającą transmisję USB oraz obsługę UART AVR. Oprogramowanie napisane w Delphi 7 odbiera dane MIDI (trzybajtowe pakiety przy prędkości 31250 b/s) co 1 ms i przekierowuje je do fizycznego lub wirtualnego portu MIDI w systemie Windows, umożliwiając niskolatencyjną grę na instrumentach VST. Interfejs obecnie obsługuje tylko wejście MIDI, planowane jest dodanie wyjścia. Schemat, PCB oraz wsad do Atmegi dostępne są na stronie autora i w załącznikach. Układ zasilany jest z USB. Brak transoptora, który jest wymagany przez specyfikację MIDI, jest wskazany jako mankament. Projekt nie wymaga dedykowanego sterownika, ponieważ program przekierowuje dane do wirtualnego portu MIDI, dzięki czemu jest kompatybilny z dowolnym oprogramowaniem muzycznym. Dyskutowano także o alternatywach, takich jak konwertery USB-RS232 i sterowniki Rolanda. Użytkownicy pytali o materiały źródłowe, które obejmują dokumentację DLL i specyfikację MIDI z MIDI.ORG. Pojawiły się pytania o konfigurację fuse bitów w mikrokontrolerze oraz o bezpieczeństwo podłączenia do portu USB komputera. Projekt jest polecany jako tani i wygodny interfejs MIDI dla amatorów i hobbystów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA