|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 12:59 am
MIDI-RS232-USB Къде ми е грешката?
| Автор |
Съобщение |
|
bashmaistora_1
Ранг: Минаващ
Регистриран на: Вто Авг 18, 2009 7:10 pm Мнения: 52
|
 MIDI-RS232-USB Къде ми е грешката?
Постановката:
Направих си MIDI клавир базиран на PIC-16F877, работи добре и когато го свържа към геймпорта на РС-то нямам ядове. Захванах се обаче да си направя кабел за лаптопа Midi-to-USB и започнаха ядовете. Първоначално идеята беше да изпълня тази схема http://www.rlocman.ru/i/Image/2008/05/21/3.gif , но после реших да ползвам това което имам и само да допълня някои неща. Наличен кабел USB-RS232 базиран на PL2303, драйвери и прочие. Липсващото звено което направих е MIDI-RS232 по тази схемичка със MAX232 http://www.compuphase.com/electronics/midi-rs232.png
Софтуерното обезпечение на цялата щуротия е- драйвер за PL2303 и Roland Serial MIDI Driver, последният би трябвало да накара компорта да приема миди съобщенията. Да обаче НЕ, каквото и да правя това не се случва и нито една програма не иска да работи. при мониторинг на ком портовете при подаване на сигнал от PIC-a те достигат до ком-а и програмата за мониторинг ги отчита. Когато пусна програма за миди мониторинг няма никой
Та въпроса е аз ли бъркам някъде или мисията е невъзможна?
|
| Пет Яну 07, 2011 11:09 pm |
|
 |
|
bashmaistora_1
Ранг: Минаващ
Регистриран на: Вто Авг 18, 2009 7:10 pm Мнения: 52
|
Само да допълня (а то може ми и се вижда на една от схемите) оригиналният кабел е със FT232BM.
|
| Пет Яну 07, 2011 11:21 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Съб Яну 08, 2011 12:21 am |
|
 |
|
bashmaistora_1
Ранг: Минаващ
Регистриран на: Вто Авг 18, 2009 7:10 pm Мнения: 52
|
Имах такива предположения, но лесно премахвам звеното със PL2303 и остава само MIDI-RS232, настройвам си ком-а на 38400 и под номер 3 така че да се свързва със Роланд драйвера.
Има един агент във форума дето е доста навътре точно със MIDI Messages дано да помогне.
|
| Съб Яну 08, 2011 12:53 am |
|
 |
|
woody
Ранг: Форумен бог
Регистриран на: Вто Юли 31, 2007 2:55 pm Мнения: 1792 Местоположение: София
|
MIDI не е на 38400. Виж тук дали няма нещо полезно, излезе ми с Google:
http://www.compuphase.com/electronics/midi_rs232.htm
|
| Съб Яну 08, 2011 1:35 am |
|
 |
|
head_up
Ранг: Форумен бог
Регистриран на: Нед Юни 01, 2008 9:54 pm Мнения: 1503 Местоположение: Пловдив
|
Тъй, не съм аз гуруто, но и той ще се включи. И все пак:
31.25k (+/-1%). Преди доста време правих устройство на тази тема и имах идеята да направя нещо сходно с твоето. Т.е.: процесора да приема миди командите през усб-то, което работи като виртуален ком, след което да ги подава на синтезатора (един прекрасен чип, поддържащ 1.0 спецификацията) и всичко бе наред до толкова до колкото не успях да намеря тоя твоя драйвер и да изкарвам мидито от ПЦ програма (някакъв секуенсър) през виртуален ком (а и дойде момент да не мога да се занимавам с него, та и не продължих). Но другото работеше - като симулирах MIDI команди през ком-а (ръчно въведени) проклетията пееше. В оригинал работеше с флаш памет и плейваше от нея миди файлове, но просто опитах и това, нещо като външна миди звукова карта. Ееее, вече не ми е мерак да го правя, но не е невъзможно. А все пак - защо ти е? МИДИ контролери дал Господ. Ако искаш да направиш специфичен интерфейс с човека - да, тогава има идея, но клавиатура... малко е "демоде"? Хвърляй на далече тия конвертирания докато го докараш до USB. Избери си читав контролер с USB девайс и наличен стек с витуален ком и си готов. Другото е въображение. И никакви фтди-та и подобни през макс-ове. Едно време може и да е било удачно, сега не мисля, че при налични толкова примери за усб си струва акробатиката.
|
| Съб Яну 08, 2011 2:17 am |
|
 |
|
Edesign
Ранг: Форумен бог
Регистриран на: Сря Авг 31, 2005 1:57 pm Мнения: 1103
|
Ето къде бъркаш
1. Всички чипове, които правят USB-Serial работят на 3,3 волта нива на линии RX/TX (може и на 5 волта да има)
2. Ти си сложил MAX232 той работи с входни сигнали 0 и 5 волта, а на изхода има около +/- 10 волта.
3. Когато ти предаваш от пика към USB преходника направо му разказваш играта - вместо единицата да е 3,3 волта, тя е повече от 10 волта от макса, а нулата не е 0 волта а повече от -10 волта. Но явно чипа се справя и не изгаря и затова виждаш от пика към компа
4. Обратното, когато подадеш от компа сигнал към пика то от USB чипа излизат 0 и 3,3 волта - тези напрежения за макса са като 0 волта, защото на него му трябват повече от +5 за единица и около 0 волта и по-малко за да го приеме като 0.
Извод - разкарваш макса - от пика през резистори намаляваш 5те волта до 3,3 към RX шината на USB чипа, а от USB чипа през два транзистора качваш сигнала от 3,3 на 5 волта.
|
| Съб Яну 08, 2011 9:04 am |
|
 |
|
juzisound
Ранг: Почетен член
Регистриран на: Съб Май 27, 2006 12:37 pm Мнения: 647 Местоположение: с. Згалево
|
1. До колкото разбрах, човека иска да си ползва USB->RS232 кабел който вече има - без да го преправя...
2. Ако е така - то проблема е да вкара изхода от МИДИ клавиатурата си в компютъра през този кабел.
3. За преобразуване на COM порт - така че да се въжда като MIDI порт от музикалните програми ползва драйвер на Roland.
Дано да съм чел внимателно
Относно софтуера на ПЦ-то...
Правилно си се ориентирал - точно така се прави. Трябва ти кабел какъвто имаш и драйвера на Роланд. Има си обаче особености. Надявам се да си под XP. Та тоя драйвер си има икона в контрол панела - погледни там какво пише. До колкото си спомням имаше 2 режима - единия мулти единия сингъл порт. Трябва да е в сингълпорт режима - иначе нещеше... Не помня що...
Другото -тоя драйвер работи с COM портове от 1 до 4. Ако виртуалния ти ком порт е с някакъв друг по-голям номер /а тия кабели имат склонност да се инсталират с големи номера/ намери начин да го вкараш в диапазон от 1 до 4.
В програмите работещи с МИДИ избери за портове на входа и на изхода да е Роланд драйвеа. Свържи крачета 2 и 3 на другия край на кабела - и пробвай дали можеш да получаваш това което пращаш. Ако е така - с ПЦ-то си готов.
Сега хардуера. До колкото разбирам - имаш някакъв ПИК който сканира клавиатура. От него имаш сериен изход с честотата на МИДИ и TTL ниво. Сега - по спецификация на МИДИ-то изхода на устройството си е галванично свързан със самото устройство, а на всеки ВХОД на каквото и да е МИДИ устройство - трябва да има ОПТРОН заради галванияното разделяне. Един вид, както си дал схемата, не е ясно това ОПТРОНА и [TTL->MAX232->RS232] част от кое устройство са. Принципно правилно е да са част от приемащото - разбирай ПЦ. Хубаво - ама преди ПЦ-то нали има и кабел сериен към УСБ. Та - тука нещо не ти е наред връзката. Какво трябва да направиш според мене.
Правиш си клавиатурата да има 2 ОТДЕЛНИ изхода - един МИДИ и един за компютър - демек COM порт все едно. Повечето клавиатури които имат такава възможност са си така заводски.
Оптрон не ти трябва... Ако имаше - то той трябва да се захранва от към страна на ПЦ-то, което в твоя случай ще е по-сложно, заради COM-USB кабела.
MAX232 трябва да ти е част от схемата с пика и да се захранва от неговото захранване.
Изхода на пика /UART/- отива и към МИДИ порта и към MAX232 едновременно.
Изхода на пика /UART/ трябва да можеш да го превключваш на скорост на МИДИ и на COM 31250/38400 според на къде искаш да отива - към истинско МИДИ или към компютъра. Не пречи че освен едното което ползваш - на другото ще излиза с грешна честота - то винаги ползваш само едното от двете.
Ако спазиш това - ще стане. Пробвано е!
Успех!
|
| Съб Яну 08, 2011 11:28 am |
|
 |
|
bashmaistora_1
Ранг: Минаващ
Регистриран на: Вто Авг 18, 2009 7:10 pm Мнения: 52
|
 Като не иска да ме пусне през парадния, реших да вляза през задния вход ама...НЪЦ
Сетих се, че преди време мой познат си прави кабел за диагностика на автомобили и споменаваше нещо за битрейта. Поразрових се във нета и се оказа, че освен тази нестандартна скорост от 31250 за миди, 10400 която също е нестандартна се ползва при автомобилната диагностика. Според "братушките" решението на този проблем е във ровичкането във регистрите и малко сметки, за рускоговорящите слагам и описанието.
Та значи смятах, правих, струвах, всичко което е писано по темата го изпълних и проверих от различни източници- Направих сметките, създадох въпросният файл във регистрите...рестарти....проби....и накрая нищо.
Първо никъде не видях да се появят тези нови скорости за които си правих сметките 31200,31210,31220.....31250.....до 31290 през 10.
Също тая въпросната комутация дето се мъча да я правя не стана. Мидито няма как да го накарам да бачка на 34800. Започвам да се съмнявам че Бозата нещо се е омазала но утре следобет ще елиминирам и тази вероятност.
Междувременно ако някой има идея за промяната на скоростите на СОМ-а и защо при мен не се получава нека каже, в последствие ще извадим ценната информация и ще я преместим в другия подфорум за автоелектроника.
|
| Нед Яну 09, 2011 2:54 am |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
Преди време помогнах в един форум за едно ЕКУ - скоростта, която беше необходима, беше 15625 бита/с.
ПП Ако става въпрос за Win - пиши каква скорост искаш - ще ти пратя програмка, с възможност за такава скорост.
На това, което съм пратил сега - избираш SetComPort и след това - десния бутон на мишката на листвюто и add порт (без протокол) - като добавиш порта - има чекове за редактиране на свойствата му.
|
| Нед Яну 09, 2011 1:19 pm |
|
 |
|
bashmaistora_1
Ранг: Минаващ
Регистриран на: Вто Авг 18, 2009 7:10 pm Мнения: 52
|
NikB, точната скорост е 31250 bps или +- 1%.
|
| Нед Яну 09, 2011 2:43 pm |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
На ЛС те запитах дали ако сменя скоростта на примерната програмка те устройва, но не ми отговори.
Все пак доработих програмката, за да могат да се задават всякакви скорости (в рамките на поддържаните от съответната структура DCB, на WinAPI SetCommState)
(Продължавам да не съм сигурен, че тая програмка ще ти върши работа - тя праща с всякаква зададена скорост байтове, но не променя скоростта на портовете, ако се ползват от друга, примерно твоя, програма)
|
| Нед Яну 09, 2011 7:43 pm |
|
 |
|
juzisound
Ранг: Почетен член
Регистриран на: Съб Май 27, 2006 12:37 pm Мнения: 647 Местоположение: с. Згалево
|
И за какво ви е тая нестандартна скорост - че не можах да разбера.
В случая с ползването на МИДИ -> PC с РС232 -> USB кабел скоростите са следните:
1. Серийния изход на клавиатурата /от пика/ трябва да се превключи от скоростта на МИДИ на стандартна скорост за сериен порт - демек от 31250 както си я направил и казваш че работи като МИДИ - единственото което трябва да направиш е да я смениш на 38400. Нищо друго не трябва да променяш по клавиатурата.
2. Тоси сигнал от серийния порт на пика - трябва да мине през МАКС232 че да ми се сменят нивата и да станат RS232.
3. после от MAX 232 подаваш на входа на RS-232-> USB кабела. Сега за кабела: той е направен и може да работи на стандартните за компютъра скорости. На каква скорост работи - реално определя програмата която отваря виртуалния COM порт. В твоя случай, тази програма е драйвера на Roland. Той кара кабела да работи на 38400 - затова казах, че на толкова трябва да праща пика. Вече драйвера на Roland има задачата да приеме от серийния порт каквото е дошло - да го пакетира на MIDI съобщения и да представи виртуален миди IN порт на музикалните програми.
Това е цялата галимация...
|
| Пон Яну 10, 2011 12:07 pm |
|
 |
|
bashmaistora_1
Ранг: Минаващ
Регистриран на: Вто Авг 18, 2009 7:10 pm Мнения: 52
|
Сега първо да кажа какво съм намерил и предполагам ще бъде полезно за хората които също се чудят как тъй аджеба да накарам СОМ-порта да работи на 10400 или на произволна скорост в рамките на допустимите.
Е най- лесният начин е със комада във Command Prompt-а
-----------------------------------------------------------------
c:> mode com(№ на порта) baud=(желаните bps) parity=N data=8 stop=1 dtr=off rts=off
или както е при мен:
c:> mode com3 baud=31250 parity=N data=8 stop=1 dtr=off rts=off
за проверка:
c:> mode com(№ на порта)
--------------------------------------------------------------------
При мен нещата не се получават защото, както каза juzisound, идеята е самият драйвер на роланд да прекомутира от 34800 на 31250, независимо дали ще използваме кабел USB-MIDI или RS232-MIDI.
Дори да накарам компорта да работи на 31250 по гореописаният начин, когато стартирам драйвера на Роланд автоматично се връща на 34800. Този двоен стандарт ми се струва доста тъп, но това е положението.
Има колеги музиканти които едва ли са запознати що е то Бит пер секондс и след като са купили кабел от 50-60 лева не успяват да получат желания резултат. Да не говорим че при използването и на саундмодули и друга апаратура допълнитело усложнява нещата.
Що се отнася до това което правя, малко е кофти всеки път да вадя чипа и да го програмирам със една от двете скорости. Другото ми творение също е свързано със МИДИ и по закона на Мърфалан и там скороста е само 31250.
Благодаря на всички които се отзоваха
П.п. Започвам да се замислям да разчовъркам самият Роланд драйвер, но познанията ми все още са доста ограничени 
|
| Пон Яну 10, 2011 7:47 pm |
|
 |
|
mitkoradev
Ранг: Минаващ
Регистриран на: Чет Сеп 30, 2010 2:37 pm Мнения: 21 Местоположение: Варна
|
Ако единствения проблем е, че този роланд драйвер настрйва лошо серийния порт може да пробваш тази програма http://www.fabulatech.com/serial-port-splitter.html . Идеята е възваш програмата към хардуерния порт и там си задаваш миди скоростта, а с роланд драйвера отваряш виртуалния порт койта тази програма съдава. Тази е триал версия, колкото за теста, сигурно има алтернативи из нета.
|
| Пон Яну 10, 2011 9:06 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 7 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|