|
|---|
| There was a certain man in Caesarea called Cornelius, a centurion of the band called the Italian band,
|
|---|
| ᎩᎶᏃ ᎢᏳᏍᏗ ᎠᏍᎦᏯ ᎡᎮ ᏏᏌᎵᏱ, ᎧᏂᎵᏯ ᏧᏙᎢᏛ, ᎠᏍᎪᎯᏧᏈ ᏗᏘᏂᏙᎯ, ᎨᎳ ᎢᏓᎵ ᏧᎾᏙᎢᏛ ᎤᎾᏓᏡᎬ.
|
|---|
Gi-lo-no i-yu-s-di a-s-ga-ya e-he Si-sa-li-yi, Ka-ni-li-ya tsu-do-i-dv, a-s-go-hi-tsu-qui di-ti-ni-do-hi, ge-la I-da-li tsu-na-do-i-dv u-na-da-tlu-gv.
|
|---|
|
|---|
| A devout man, and one that feared God with all his house, which gave much alms to the people, and prayed to God always.
|
|---|
| ᎤᏓᏅᏘ ᎠᎴ ᎤᏁᎳᏅᎯ ᎦᎾᏰᏍᎩ, ᎠᎴ ᎾᏍᏉ ᏂᎦᏛ ᎦᏁᎸ ᎠᏂᎮ, ᎤᏣᏘ ᏗᏁᎸᎥᏍᎩ ᏴᏫ, ᎠᎴ ᎤᏁᎳᏅᎯ ᏂᎪᎯᎸ ᎠᏓᏙᎵᏍᏓᏁᎯ.
|
|---|
U-da-nv-ti a-le U-ne-la-nv-hi ga-na-ye-s-gi, a-le na-s-quo ni-ga-dv ga-ne-lv a-ni-he, u-tsa-ti di-ne-lv-v-s-gi yv-wi, a-le U-ne-la-nv-hi ni-go-hi-lv a-da-do-li-s-da-ne-hi.
|
|---|
|
|---|
| He saw in a vision evidently about the ninth hour of the day an angel of God coming in to him, and saying unto him, Cornelius.
|
|---|
| ᎾᏍᎩ ᏦᎢᎭ ᎢᏳᏟᎶᏛ ᎧᎳᏩᏗᏒ ᎬᏂᎨᏒᎢᏳ ᎤᎪᎮ ᏗᎧᎿᎭᏩᏗᏙᎯ ᎤᏁᎳᏅᎯ ᎤᏤᎵ ᎤᎷᏤᎴᎢ, ᎠᎴ ᎯᎠ ᏄᏪᏎᎴᎢ; ᎧᏂᎵᏯ.
|
|---|
Na-s-gi tso-i-ha i-yu-tli-lo-dv ka-la-wa-di-sv gv-ni-ge-sv-i-yu u-go-he di-ka-hna-wa-di-do-hi U-ne-la-nv-hi u-tse-li u-lu-tse-le-i, a-le hi-a nu-we-se-le-i; Ka-ni-li-ya.
|
|---|
|
|---|
| And when he looked on him, he was afraid, and said, What is it, Lord? And he said unto him, Thy prayers and thine alms are come up for a memorial before God.
|
|---|
| ᏚᎧᎿᎭᏅᏃ ᎠᎴ ᎤᏍᎦᎸ ᎯᎠ ᏄᏪᏎᎢ; ᎦᏙᎢ, ᏣᎬᏫᏳᎯ. ᎯᎠᏃ ᏄᏪᏎᎴᎢ; ᎭᏓᏙᎵᏍᏗᏍᎬ ᎠᎴ ᎭᏓᏁᎸᎥᏍᎬ ᏚᎵᏌᎳᏓᏅ ᎠᏅᏓᏗᏍᏙᏗ ᎢᏳᎵᏍᏙᏗᏱ ᎤᏁᎳᏅᎯ ᎠᎦᏔᎲᎢ.
|
|---|
Du-ka-hna-nv-no a-le u-s-ga-lv hi-a nu-we-se-i; Ga-do-i, Tsa-gv-wi-yu-hi. Hi-a-no nu-we-se-le-i; Ha-da-do-li-s-di-s-gv a-le ha-da-ne-lv-v-s-gv du-li-sa-la-da-nv a-nv-da-di-s-do-di i-yu-li-s-do-di-yi U-ne-la-nv-hi a-ga-ta-hv-i.
|
|---|
|
|---|
| And now send men to Joppa, and call for one Simon, whose surname is Peter:
|
|---|
| Ꭷ, ᏦᏈ ᏘᏅᎵ ᎠᏂᏫᏅ, ᏫᏯᏅ ᏌᏩᏂ ᏈᏓ ᏧᏙᎢᏛ,
|
|---|
Ka, Tso-qui ti-nv-li a-ni-wi-nv, wi-ya-nv Sa-wa-ni Qui-da tsu-do-i-dv,
|
|---|
|
|---|
| He lodgeth with one Simon a tanner, whose house is by the sea side: he shall tell thee what thou oughtest to do.
|
|---|
| ᎾᏍᎩ ᎤᏬᎳ ᎩᎶ ᎢᏳᏍᏗ ᎦᏁᎸ ᏌᏩᏂ ᏧᏙᎢᏛ, ᏗᏑᏫᏍᎩ, ᎾᏍᎩ ᎠᎹᏳᎶᏗ ᏥᎦᏁᎸ, ᎾᏍᎩ ᏓᏣᏃᏁᎵ ᎢᏣᏛᏁᏗᏱ.
|
|---|
Na-s-gi u-wo-la gi-lo i-yu-s-di ga-ne-lv Sa-wa-ni tsu-do-i-dv, di-su-wi-s-gi, na-s-gi a-ma-yu-lo-di tsi-ga-ne-lv, na-s-gi da-tsa-no-ne-li i-tsa-dv-ne-di-yi.
|
|---|
|
|---|
| And when the angel which spake unto Cornelius was departed, he called two of his household servants, and a devout soldier of them that waited on him continually;
|
|---|
| ᏗᎧᎿᎭᏩᏗᏙᎯᏃ ᎤᏓᏅᏒ ᎾᏍᎩ ᎧᏂᎵᏯ ᎤᏬᏁᏔᏅᎯ, ᎠᏂᏔᎵ ᏫᏚᏯᏅᎮ ᎠᏓᏁᎸ ᏧᏅᏏᏓᏍᏗ ᎠᎴ ᏌᏉ ᎠᏯᏫᏍᎩ ᎤᏁᎳᏅᎯ ᎠᏓᏙᎵᏍᏓᏁᎯ ᏂᎪᎯᎸ ᎬᏩᎦᏘᏗᏍᎩ ᎨᏒ ᎨᎳ.
|
|---|
Di-ka-hna-wa-di-do-hi-no u-da-nv-sv na-s-gi Ka-ni-li-ya u-wo-ne-ta-nv-hi, a-ni-ta-li wi-du-ya-nv-he a-da-ne-lv tsu-nv-si-da-s-di a-le sa-quo a-ya-wi-s-gi U-ne-la-nv-hi a-da-do-li-s-da-ne-hi ni-go-hi-lv gv-wa-ga-ti-di-s-gi ge-sv ge-la.
|
|---|
|
|---|
| And when he had declared all these things unto them, he sent them to Joppa.
|
|---|
| ᎾᏍᎩᏃ ᏂᎦᏛ ᏚᏃᎮᎮᎸ, ᏦᏈ ᏚᏅᏎᎢ.
|
|---|
Na-s-gi-no ni-ga-dv du-no-he-he-lv, Tso-qui du-nv-se-i.
|
|---|
|
|---|
| On the morrow, as they went on their journey, and drew nigh unto the city, Peter went up upon the housetop to pray about the sixth hour:
|
|---|
| ᎤᎩᏨᏛᏃ ᎠᎾᎢᏎ ᎠᎴ ᎿᎭᏉ ᎾᎥᏂᎨ ᎤᏂᎷᎴ ᏗᎦᏚᎲᎢ, ᏈᏓ ᎤᎩᎳᏫᏎ ᎦᏌᎾᎵ ᎤᏓᏙᎵᏍᏔᏅᏎ ᏔᎳᏚ ᎢᏳᏟᎶᏛ ᎢᏴᏛ ᎧᎳᏩᏗᏒᎢ.
|
|---|
U-gi-tsv-dv-no a-na-i-se a-le hna-quo na-v-ni-ge u-ni-lu-le di-ga-du-hv-i, Qui-da u-gi-la-wi-se ga-sa-na-li u-da-do-li-s-ta-nv-se ta-la-du i-yu-tli-lo-dv i-yv-dv ka-la-wa-di-sv-i.
|
|---|
|
|---|
| And he became very hungry, and would have eaten: but while they made ready, he fell into a trance,
|
|---|
| ᎤᏣᏘᏃ ᎤᏲᏏᏌᏁᎢ, ᎠᎴ ᎤᏚᎵᏍᎨ ᎤᎵᏍᏓᏴᏗᏱ, ᎠᏎᏃ ᎠᏏᏉ ᎠᎾᏛᏅᎢᏍᏗᏍᎨ ᏣᎦᎵᎰ ᎾᏍᎩᏯ ᏄᎵᏍᏓᏁᎴᎢ.
|
|---|
U-tsa-ti-no u-yo-si-sa-ne-i, a-le u-du-li-s-ge u-li-s-da-yv-di-yi, a-se-no a-si-quo a-na-dv-nv-i-s-di-s-ge tsa-ga-li-ho na-s-gi-ya nu-li-s-da-ne-le-i.
|
|---|
|
|---|
| And saw heaven opened, and a certain vessel descending unto him, as it had been a great sheet knit at the four corners, and let down to the earth:
|
|---|
| ᎤᎪᎮᏃ ᎦᎸᎳᏗ ᎤᎵᏍᏚᎢᏛ ᎨᏎᎢ, ᎠᎴ ᎪᎱᏍᏗ ᎢᏳᏍᏗ ᎠᏖᎵᏙ ᎡᎳᏗ ᏅᏧᏍᏗᏗᏎ, ᎾᏍᎩᏯ ᎡᏆ ᎠᏄᏬ, ᏅᎩ ᏚᏅᏏᏴ ᏥᏕᎦᎸᎣᎢ, ᎾᏍᎩᏃ ᎡᎳᏗ ᎢᎬᏁᎸᎯ ᏥᎨᏐ ᎡᎶᎯ ᎢᏴᏛ.
|
|---|
U-go-he-no ga-lv-la-di u-li-s-du-i-dv ge-se-i, a-le go-hu-s-di i-yu-s-di a-te-li-do e-la-di nv-tsu-s-di-di-se, na-s-gi-ya e-qua a-nu-wo, nv-gi du-nv-si-yv tsi-de-ga-lv-o-i, na-s-gi-no e-la-di i-gv-ne-lv-hi tsi-ge-so e-lo-hi i-yv-dv.
|
|---|
|
|---|
| Wherein were all manner of fourfooted beasts of the earth, and wild beasts, and creeping things, and fowls of the air.
|
|---|
| ᎾᎿᎭᏃ ᎠᏂᏯᎡ ᏂᎦᏛ ᏧᎾᏓᎴᏅᏛ ᏅᎩ ᏗᏂᏅᏌᏗ ᎡᎶᎯ ᎠᏁᎯ, ᎠᎴ ᎢᎾᎨ ᎠᏁᎯ, ᎠᎴ ᎠᎾᏓᎾᏏᏂᏙᎯ, ᎠᎴ ᎦᎸᎶ ᎠᏂᏃᎯᎵᏙᎯ.
|
|---|
Na-hna-no a-ni-ya-e ni-ga-dv tsu-na-da-le-nv-dv nv-gi di-ni-nv-sa-di e-lo-hi a-ne-hi, a-le i-na-ge a-ne-hi, a-le a-na-da-na-si-ni-do-hi, a-le ga-lv-lo a-ni-no-hi-li-do-hi.
|
|---|
|
|---|
| And there came a voice to him, Rise, Peter; kill, and eat.
|
|---|
| ᎠᏥᏁᏤᎴᏃ ᎯᎠ ᏅᏗᎠᏥᏪᏎᎴᎢ; ᏈᏓ, ᏔᎴᎲᎦ, ᎯᎷᎦ ᎠᎴ ᎭᎵᏍᏓᏴᎲᎦ, ᎠᎪᏎᎴᎢ.
|
|---|
A-tsi-ne-tse-le-no hi-a nv-di-a-tsi-we-se-le-i; Qui-da, ta-le-hv-ga, hi-lu-ga a-le ha-li-s-da-yv-hv-ga, a-go-se-le-i.
|
|---|
|
|---|
| But Peter said, Not so, Lord; for I have never eaten any thing that is common or unclean.
|
|---|
| ᏈᏓᏃ ᎯᎠ ᏄᏪᏎᎢ; ᏞᏍᏗ, ᏣᎬᏫᏳᎯ, ᏞᏰᏃ ᎢᎸᎯᏳ ᏯᎩᎪ ᎪᎱᏍᏗ ᎦᏓᎭ ᎠᎴ ᏂᎦᏅᎦᎸᎲᎾ.
|
|---|
Qui-da-no hi-a nu-we-se-i; Tle-s-di, Tsa-gv-wi-yu-hi, tle-ye-no i-lv-hi-yu ya-gi-go go-hu-s-di ga-da-ha a-le ni-ga-nv-ga-lv-hv-na.
|
|---|
|
|---|
| And the voice spake unto him again the second time, What God hath cleansed, that call not thou common.
|
|---|
| ᏔᎵᏁᏃ ᎯᎠ ᏅᏗᎠᏥᏪᏎᎵᎢ; ᎤᏁᎳᏅᎯ ᎤᏅᎦᎸᏛ ᎾᏍᎩ ᏞᏍᏗ ᎦᏓᎭ ᏲᏎᎮᏍᏗ.
|
|---|
Ta-li-ne-no hi-a nv-di-a-tsi-we-se-li-i; U-ne-la-nv-hi u-nv-ga-lv-dv na-s-gi tle-s-di ga-da-ha yo-se-he-s-di.
|
|---|
|
|---|
| This was done thrice: and the vessel was received up again into heaven.
|
|---|
| ᎾᏍᎩ ᎯᎠ ᏦᎢ ᏄᎵᏍᏔᏁᎢ, ᎿᎭᏉᏃ ᎠᏖᎵᏙ ᏔᎵᏁ ᎦᎸᎳᏗ ᏫᎤᎵᏌᎳᏓᏁᎢ.
|
|---|
Na-s-gi hi-a tso-i nu-li-s-ta-ne-i, hna-quo-no a-te-li-do ta-li-ne ga-lv-la-di wi-u-li-sa-la-da-ne-i.
|
|---|
|
|---|
| Now while Peter doubted in himself what this vision which he had seen should mean, behold, the men which were sent from Cornelius had made inquiry for Simon's house, and stood before the gate,
|
|---|
| ᎠᏏᏉᏃ ᏈᏓ ᎠᏓᏅᏖᏍᎨ ᏄᏍᏛ ᎦᏛᎬ ᎾᏍᎩ ᎤᏁᎳᏫᏎᎸᎢ, ᎬᏂᏳᏉ ᎠᏂᏫᏅ ᎾᏍᎩ ᎧᏂᎵᏯ ᏂᏙᏓᏳᏅᏒᎯ ᎤᎾᏓᏛᏛᏅᎯ ᎨᏎ ᏌᏩᏂ ᎦᏁᎸᎢ, ᎠᎴ ᎠᏂᏙᎾᎡ ᎦᎶᎯᏍᏗᏳᎶᏗ;
|
|---|
A-si-quo-no Qui-da a-da-nv-te-s-ge nu-s-dv ga-dv-gv na-s-gi u-ne-la-wi-se-lv-i, gv-ni-yu-quo a-ni-wi-nv na-s-gi Ka-ni-li-ya ni-do-da-yu-nv-sv-hi u-na-da-dv-dv-nv-hi ge-se Sa-wa-ni ga-ne-lv-i, a-le a-ni-do-na-e ga-lo-hi-s-di-yu-lo-di;
|
|---|
|
|---|
| And called, and asked whether Simon, which was surnamed Peter, were lodged there.
|
|---|
| ᏭᎾᎵᏍᏔᏅᏃ ᎤᎾᏓᏛᏛᏁᎢ; ᎠᏂᏍᎪ ᎤᏬᎳ ᏌᏩᏂ ᏈᏓ ᏧᏙᎢᏛ, ᎤᎾᏛᏁᎢ.
|
|---|
Wu-na-li-s-ta-nv-no u-na-da-dv-dv-ne-i; A-ni-s-go u-wo-la Sa-wa-ni Qui-da tsu-do-i-dv, u-na-dv-ne-i.
|
|---|
|
|---|
| While Peter thought on the vision, the Spirit said unto him, Behold, three men seek thee.
|
|---|
| ᎠᏏᏉᏃ ᏈᏓ ᎠᏓᏅᏖᏍᎨ ᎤᏁᎳᏫᏎᎸᎢ, ᎠᏓᏅᏙ ᎯᎠ ᏄᏪᏎᎴᎢ, ᎬᏂᏳᏉ ᎠᏂᏦᎢ ᎠᏂᏫᏅ ᎨᏣᏲᎭ.
|
|---|
A-si-quo-no Qui-da a-da-nv-te-s-ge u-ne-la-wi-se-lv-i, A-da-nv-do hi-a nu-we-se-le-i, gv-ni-yu-quo a-ni-tso-i a-ni-wi-nv ge-tsa-yo-ha.
|
|---|
|
|---|
| Arise therefore, and get thee down, and go with them, doubting nothing: for I have sent them.
|
|---|
| Ꭷ, ᏔᎴᎲᎦ, ᎭᏠᎠᎯ, ᎠᎴ ᏘᏍᏓᏩᏚᎦ ᎪᎱᏍᏗ ᏂᏗᏣᏢᏫᏎᎲᎾ, ᎠᏴᏰᏃ ᏗᏥᏅᏏᏛ.
|
|---|
Ka, ta-le-hv-ga, ha-tlo-a-hi, a-le ti-s-da-wa-du-ga go-hu-s-di ni-di-tsa-tlv-wi-se-hv-na, a-yv-ye-no di-tsi-nv-si-dv.
|
|---|
|
|---|
| Then Peter went down to the men which were sent unto him from Cornelius; and said, Behold, I am he whom ye seek: what is the cause wherefore ye are come?
|
|---|
| ᎿᎭᏉᏃ ᏈᏓ ᎤᏠᎠᏒ ᏫᏚᎷᏤᎸ ᎠᏂᏫᏅ ᎧᏂᎵᏯ ᏧᏅᏏᏛ ᎬᏩᏯᏅᎯᎸᎯ, ᎯᎠ ᏄᏪᏎᎢ; ᎬᏂᏳᏉ ᎠᏴ ᎾᏍᎩ ᏤᏥᏲᎭ. ᎦᏙ ᏧᎵᏰᎢᎸᏍᏔᏅ ᎯᎠ ᏥᏥᎷᎩ?
|
|---|
Hna-quo-no Qui-da u-tlo-a-sv wi-du-lu-tse-lv a-ni-wi-nv Ka-ni-li-ya tsu-nv-si-dv gv-wa-ya-nv-hi-lv-hi, hi-a nu-we-se-i; Gv-ni-yu-quo a-yv na-s-gi tse-tsi-yo-ha. Ga-do tsu-li-ye-i-lv-s-ta-nv hi-a tsi-tsi-lu-gi?
|
|---|
|
|---|
| And they said, Cornelius the centurion, a just man, and one that feareth God, and of good report among all the nation of the Jews, was warned from God by an holy angel to send for thee into his house, and to hear words of thee.
|
|---|
| ᎯᎠᏃ ᏄᏂᏪᏎᎢ; ᎧᏂᎵᏯ ᎠᏍᎪᎯᏧᏈ ᏗᏘᏂᏙᎯ, ᏚᏳᎯᏛ ᎢᏯᏛᏁᎯ ᎠᏍᎦᏯ ᎠᎴ ᎤᏁᎳᏅᎯ ᎦᎾᏰᏍᎩ, ᎠᎴ ᎣᏍᏛ ᎬᏩᏃᎮᏍᎩ ᎾᏂᎥ ᏑᎾᏓᎴᎩ ᎨᏒ ᎠᏂᏧᏏ, ᎤᏁᏤᎸᎩ ᎦᎸᏉᏗ ᏗᎧᎿᎭᏩᏗᏙᎯ, ᎤᏓᏅᏍᏗᏱ ᏧᏪᏅᏒ ᏫᏣᎷᎯᏍᏗᏱ ᎠᎴ ᎯᏬᏂᏍᎬ ᎤᏛᎪᏗᏱ.
|
|---|
Hi-a-no nu-ni-we-se-i; Ka-ni-li-ya a-s-go-hi-tsu-qui di-ti-ni-do-hi, du-yu-hi-dv i-ya-dv-ne-hi a-s-ga-ya a-le U-ne-la-nv-hi ga-na-ye-s-gi, a-le o-s-dv gv-wa-no-he-s-gi na-ni-v su-na-da-le-gi ge-sv A-ni-tsu-si, u-ne-tse-lv-gi ga-lv-quo-di di-ka-hna-wa-di-do-hi, u-da-nv-s-di-yi tsu-we-nv-sv wi-tsa-lu-hi-s-di-yi a-le hi-wo-ni-s-gv u-dv-go-di-yi.
|
|---|
|
|---|
| Then called he them in, and lodged them. And on the morrow Peter went away with them, and certain brethren from Joppa accompanied him.
|
|---|
| ᏚᏔᏲᏎᎸᏃ ᎤᏂᏴᏍᏗᏱ, ᎠᎴ ᏚᏍᏆᏂᎪᏔᏁᎢ. ᎤᎩᏨᏛᏃ ᏈᏓ ᏕᎤᏍᏓᏩᏛᏎᎢ, ᎠᎴ ᎩᎶ ᎢᏳᎾᏍᏗ ᎠᎾᎵᏅᏟ ᏦᏈ ᎠᏁᎯ ᎬᏩᎵᎪᏁᎴᎢ.
|
|---|
Du-ta-yo-se-lv-no u-ni-yv-s-di-yi, a-le du-s-qua-ni-go-ta-ne-i. U-gi-tsv-dv-no Qui-da de-u-s-da-wa-dv-se-i, a-le gi-lo i-yu-na-s-di a-na-li-nv-tli tso-qui a-ne-hi gv-wa-li-go-ne-le-i.
|
|---|
|
|---|
| And the morrow after they entered into Caesarea. And Cornelius waited for them, and had called together his kinsmen and near friends.
|
|---|
| ᏫᎤᎩᏨᏅᏃ ᏏᏌᎵᏱ ᏭᏂᏴᎴᎢ. ᎧᏂᎵᏯᏃ ᎤᏂᎦᏘᏰᎢ, ᎠᎴ ᏧᏪᏟᏌᏅᎯ ᎨᏎ ᎪᎱᏍᏗ ᏧᏩᏂ ᎠᎴ ᏧᎵᎢ.
|
|---|
Wi-u-gi-tsv-nv-no Si-sa-li-yi wu-ni-yv-le-i. Ka-ni-li-ya-no u-ni-ga-ti-ye-i, a-le tsu-we-tli-sa-nv-hi ge-se go-hu-s-di tsu-wa-ni a-le tsu-li-i.
|
|---|
|
|---|
| And as Peter was coming in, Cornelius met him, and fell down at his feet, and worshipped him.
|
|---|
| ᎿᎭᏉᏃ ᏈᏓ ᏗᏴᎵᏎ ᎧᏂᎵᏯ ᏕᎤᏠᏎᎢ, ᎡᎳᏗᏃ ᎤᏅᏨ ᏈᏓ ᏚᎳᏍᎬ ᎤᏓᏙᎵᏍᏓᏁᎴᎢ.
|
|---|
Hna-quo-no Qui-da di-yv-li-se Ka-ni-li-ya de-u-tlo-se-i, e-la-di-no u-nv-tsv Qui-da du-la-s-gv u-da-do-li-s-da-ne-le-i.
|
|---|
|
|---|
| But Peter took him up, saying, Stand up; I myself also am a man.
|
|---|
| ᎠᏎᏃ ᏈᏓ ᏕᎤᎴᏔᏁ ᎯᎠ ᏄᏪᏎᎢ; ᏔᎴᎲᎦ, ᎠᏴ ᎾᏍᏉ ᏴᏫᏉ.
|
|---|
A-se-no Qui-da de-u-le-ta-ne hi-a nu-we-se-i; Ta-le-hv-ga, a-yv na-s-quo yv-wi-quo.
|
|---|
|
|---|
| And as he talked with him, he went in, and found many that were come together.
|
|---|
| ᎠᏎᏉᏃ ᎠᎵᏃᎮᏗᏍᎨ, ᏭᏴᎴᎢ; ᎠᎴ ᏚᏩᏛᎮ ᎤᏂᏣᏖ ᏓᏂᎳᏫᎡᎢ.
|
|---|
A-se-quo-no a-li-no-he-di-s-ge, wu-yv-le-i; a-le du-wa-dv-he u-ni-tsa-te da-ni-la-wi-e-i.
|
|---|
|
|---|
| And he said unto them, Ye know how that it is an unlawful thing for a man that is a Jew to keep company, or come unto one of another nation; but God hath shewed me that I should not call any man common or unclean.
|
|---|
| ᎾᏍᎩᏃ ᎯᎠ ᏂᏚᏪᏎᎴᎢ; ᎢᏥᎦᏔᎭᏉ ᎤᏓᏅᏍᏙᏒᎯ ᎨᏒ ᎩᎶ ᎠᏧᏏ ᎤᏁᏓᏍᏗᏱ ᎠᎴ ᎤᏩᏛᏗᏱ ᎩᎶ ᏅᏩᏓᎴ ᏴᏫ; ᎠᏎᏃ ᎤᏁᎳᏅᎯ ᎬᏂᎨᏒ ᎾᏋᏁᎸ ᎠᏴ ᎩᎶ ᏴᏫ ᎦᏓᎭ ᎠᎴ ᎾᏥᏅᎦᎸᎥᎾ ᏥᏲᏎᏗ ᏂᎨᏒᎾ ᎨᏒᎢ.
|
|---|
Na-s-gi-no hi-a ni-du-we-se-le-i; I-tsi-ga-ta-ha-quo u-da-nv-s-do-sv-hi ge-sv gi-lo A-tsu-si u-ne-da-s-di-yi a-le u-wa-dv-di-yi gi-lo nv-wa-da-le yv-wi; a-se-no U-ne-la-nv-hi gv-ni-ge-sv na-quv-ne-lv a-yv gi-lo yv-wi ga-da-ha a-le na-tsi-nv-ga-lv-v-na tsi-yo-se-di ni-ge-sv-na ge-sv-i.
|
|---|
|
|---|
| Therefore came I unto you without gainsaying, as soon as I was sent for: I ask therefore for what intent ye have sent for me?
|
|---|
| ᎾᏍᎩᏃ ᎢᏳᏍᏗ ᎪᎱᏍᏗ ᎾᏍᎪᏁᎶᏍᎬᎾ ᏛᏇᏅᏒᎩ ᏮᎩᏯᏅᎰᎸᏉ. ᎾᏍᎩᏃ ᎢᏳᏍᏗ ᎢᏨᏯᏛᏛᎲᎦ ᏅᏧᎵᏍᏙᏔᏅ ᏫᏍᎩᏯᏅᎲᎢ.
|
|---|
Na-s-gi-no i-yu-s-di go-hu-s-di na-s-go-ne-lo-s-gv-na dv-que-nv-sv-gi wv-gi-ya-nv-ho-lv-quo. Na-s-gi-no i-yu-s-di i-tsv-ya-dv-dv-hv-ga nv-tsu-li-s-do-ta-nv wi-s-gi-ya-nv-hv-i.
|
|---|
|
|---|
| And Cornelius said, Four days ago I was fasting until this hour; and at the ninth hour I prayed in my house, and, behold, a man stood before me in bright clothing,
|
|---|
| ᎧᏂᎵᏯᏃ ᎯᎠ ᏄᏪᏎᎢ; ᏅᎩ ᏄᏒᎭ ᎠᎹᏟ ᎬᏍᎬᎩ ᎯᎠ ᎢᏳ ᎧᎳᏩᏗᏒ ᎢᏯᏍᏗ, ᏦᎢᏃ ᎢᏳᏟᎶᏛ ᎧᎳᏩᏗᏒ ᎦᏓᏙᎵᏍᏗᏍᎬ ᏥᏁᎸᎢ, ᎬᏂᏳᏉᏃ ᎠᏍᎦᏯ ᏗᎬᏩᎸᏌᏓ ᏧᏄᏫ ᎢᎬᏱᏢ ᎠᏆᎴᏁᎸᎩ.
|
|---|
Ka-ni-li-ya-no hi-a nu-we-se-i; Nv-gi nu-sv-ha a-ma-tli gv-s-gv-gi hi-a i-yu ka-la-wa-di-sv i-ya-s-di, tso-i-no i-yu-tli-lo-dv ka-la-wa-di-sv ga-da-do-li-s-di-s-gv tsi-ne-lv-i, gv-ni-yu-quo-no a-s-ga-ya di-gv-wa-lv-sa-da tsu-nu-wi i-gv-yi-tlv a-qua-le-ne-lv-gi.
|
|---|
|
|---|
| And said, Cornelius, thy prayer is heard, and thine alms are had in remembrance in the sight of God.
|
|---|
| ᎯᎠᏃ ᏄᏪᏒᎩ; ᎧᏂᎵᏯ, ᎭᏓᏙᎵᏍᏗᏍᎬ ᎡᏣᏛᎦᏁᎸ ᎠᎴ ᎭᏓᏁᎸᎢᏍᎬ ᎠᏅᏔ ᎤᏁᎳᏅᎯ ᎠᎦᏔᎲᎢ.
|
|---|
Hi-a-no nu-we-sv-gi; Ka-ni-li-ya, ha-da-do-li-s-di-s-gv e-tsa-dv-ga-ne-lv a-le ha-da-ne-lv-i-s-gv a-nv-ta U-ne-la-nv-hi a-ga-ta-hv-i.
|
|---|
|
|---|
| Send therefore to Joppa, and call hither Simon, whose surname is Peter; he is lodged in the house of one Simon a tanner by the sea side: who, when he cometh, shall speak unto thee.
|
|---|
| Ꭷ, ᏦᏈ ᎭᏓᏅᎵ, ᎠᎴ ᏫᏯᏅ ᏌᏩᏂ ᏈᏓ ᏧᏙᎢᏛ; ᎾᏍᎩ ᎤᏬᎳ ᏌᏩᏂ ᏗᏑᏫᏍᎩ ᎦᏁᎸᎢ ᎠᎹᏳᎶᏗ, ᎾᏍᎩ ᎦᎷᏨᎭ ᏓᏣᏬᏁᏔᏂ.
|
|---|
Ka, Tso-qui ha-da-nv-li, a-le wi-ya-nv Sa-wa-ni Qui-da tsu-do-i-dv; na-s-gi u-wo-la Sa-wa-ni di-su-wi-s-gi ga-ne-lv-i a-ma-yu-lo-di, na-s-gi ga-lu-tsv-ha da-tsa-wo-ne-ta-ni.
|
|---|
|
|---|
| Immediately therefore I sent to thee; and thou hast well done that thou art come. Now therefore are we all here present before God, to hear all things that are commanded thee of God.
|
|---|
| ᎰᏩᏃ ᎩᎳᏉ ᎢᏴᏛ ᎠᏆᏓᏅᏒᎩ ᏪᏣᏯᏅᏗᏱ; ᎣᏏᏳᏃ ᏂᏣᏛᏁᎸ ᏥᎷᎩ. ᎿᎭᏉᏃ ᏂᎦᏛ ᎠᏂ ᎣᏤᏙᎭ ᎤᏁᎳᏅᎯ ᎠᎦᏔᎲᎢ, ᎣᎦᏛᏅᎢᏍᏗ ᎣᎦᏛᎪᏗᏱ ᏂᎦᎥ ᎤᏁᎳᏅᎯ ᏣᏁᏤᎸᎯ ᎨᏒᎢ.
|
|---|
Ho-wa-no gi-la-quo i-yv-dv a-qua-da-nv-sv-gi we-tsa-ya-nv-di-yi; o-si-yu-no ni-tsa-dv-ne-lv tsi-lu-gi. Hna-quo-no ni-ga-dv a-ni o-tse-do-ha U-ne-la-nv-hi a-ga-ta-hv-i, o-ga-dv-nv-i-s-di o-ga-dv-go-di-yi ni-ga-v U-ne-la-nv-hi tsa-ne-tse-lv-hi ge-sv-i.
|
|---|
|
|---|
| Then Peter opened his mouth, and said, Of a truth I perceive that God is no respecter of persons:
|
|---|
| ᏈᏓᏃ ᎤᏍᏚᎢᏒ ᎠᎰᎵ, ᎯᎠ ᏄᏪᏎᎢ; ᎤᏙᎯᏳᎯᏯ ᎦᏙᎴᎣᏍᎦ ᎤᏁᎳᏅᎯ ᎩᎶ ᏧᎸᏉᏙᏗ ᏂᎨᏒᎾ ᎨᏒᎢ;
|
|---|
Qui-da-no u-s-du-i-sv a-ho-li, hi-a nu-we-se-i; U-do-hi-yu-hi-ya ga-do-le-o-s-ga U-ne-la-nv-hi gi-lo tsu-lv-quo-do-di ni-ge-sv-na ge-sv-i;
|
|---|
|
|---|
| But in every nation he that feareth him, and worketh righteousness, is accepted with him.
|
|---|
| ᎾᏂᎥᏉᏍᎩᏂ ᏧᎾᏓᎴᏅᏛ ᏴᏫ ᎠᏁᎲᎢ ᎩᎶ ᎾᏍᎩ ᏳᎾᏰᏍᎦ ᎠᎴ ᏚᏳᎪᏛ ᏱᏚᎸᏫᏍᏓᏁᎭ ᎾᏍᎩ ᏓᎦᏓᏂᎸᎪᎢ.
|
|---|
Na-ni-v-quo-s-gi-ni tsu-na-da-le-nv-dv yv-wi a-ne-hv-i gi-lo na-s-gi yu-na-ye-s-ga a-le du-yu-go-dv yi-du-lv-wi-s-da-ne-ha na-s-gi da-ga-da-ni-lv-go-i.
|
|---|
|
|---|
| The word which God sent unto the children of Israel, preaching peace by Jesus Christ: (he is Lord of all:)
|
|---|
| ᎧᏃᎮᏛ ᏧᏓᏅᏎ ᎢᏏᎵ ᏧᏪᏥ ᎤᎾᏛᎪᏗ ᏥᎧᏃᎮᏍᎨ ᎣᏍᏛ ᎧᏃᎮᏛ ᏅᏩᏙᎯᏯᏛ ᎤᎬᏩᎵ ᏥᏌ ᎦᎶᏁᏛ ᎢᏳᏩᏂᏌᏛ ᎾᏍᎩ ᎤᎬᏫᏳᎯ ᎾᏂᎥ ᎤᎾᏤᎵᎦ,
|
|---|
Ka-no-he-dv tsu-da-nv-se I-si-li tsu-we-tsi u-na-dv-go-di tsi-ka-no-he-s-ge o-s-dv ka-no-he-dv nv-wa-do-hi-ya-dv u-gv-wa-li Tsi-sa Ga-lo-ne-dv i-yu-wa-ni-sa-dv na-s-gi U-gv-wi-yu-hi na-ni-v u-na-tse-li-ga,
|
|---|
|
|---|
| That word, I say, ye know, which was published throughout all Judaea, and began from Galilee, after the baptism which John preached;
|
|---|
| ᎾᏍᎩ ᎧᏃᎮᏛ ᎢᏥᎦᏔᎭ, ᎬᏂᎨᏒ ᏥᏄᎵᏍᏔᏅ ᏂᎬᎾᏛ ᏧᏗᏱ, ᎨᎵᎵ ᏨᏓᏳᏓᎴᏅᎲ ᏗᏓᏬᏍᏗ ᎨᏒ ᎤᎬᏩᎵ ᏄᎵᏥᏙᏃ ᏣᏂ^
|
|---|
Na-s-gi ka-no-he-dv i-tsi-ga-ta-ha, gv-ni-ge-sv tsi-nu-li-s-ta-nv ni-gv-na-dv Tsu-di-yi, Ge-li-li tsv-da-yu-da-le-nv-hv di-da-wo-s-di ge-sv u-gv-wa-li nu-li-tsi-do-no Tsa-ni^
|
|---|
|
|---|
| How God anointed Jesus of Nazareth with the Holy Ghost and with power: who went about doing good, and healing all that were oppressed of the devil; for God was with him.
|
|---|
| ᎾᏍᎩ ᎤᏁᎳᏅᎯ ᎦᎸᏉᏗᏳ ᎠᏓᏅᏙ ᎠᎴ ᎤᎵᏂᎩᏛ ᎨᏒ ᏥᏚᎶᏁᏔᏁ ᏥᏌ ᎾᏎᎵᏗ ᎡᎯ, ᎾᏍᎩ ᏤᏙᎲ ᎣᏍᏛ ᏚᎸᏫᏍᏓᏁᎲᎢ, ᎠᎴ ᏕᎧᏅᏫᏍᎬ ᏂᎦᏛ ᎤᏲ ᎢᏳᏅᎿᎭᏕᎩ ᎠᏍᎩᎾ; ᎤᏁᎳᏅᎯᏰᏃ ᏚᎧᎿᎭᏩᏗᏙᎲᎩ.
|
|---|
Na-s-gi U-ne-la-nv-hi Ga-lv-quo-di-yu A-da-nv-do a-le u-li-ni-gi-dv ge-sv tsi-du-lo-ne-ta-ne Tsi-sa Na-se-li-di e-hi, na-s-gi tse-do-hv o-s-dv du-lv-wi-s-da-ne-hv-i, a-le de-ka-nv-wi-s-gv ni-ga-dv u-yo i-yu-nv-hna-de-gi a-s-gi-na; U-ne-la-nv-hi-ye-no du-ka-hna-wa-di-do-hv-gi.
|
|---|
|
|---|
| And we are witnesses of all things which he did both in the land of the Jews, and in Jerusalem; whom they slew and hanged on a tree:
|
|---|
| ᎠᏴᏃ ᎣᏥᏃᎮᏍᎩ ᎾᏍᎩ ᏂᎦᏛ ᏄᏛᏁᎵᏙᎸ ᎠᏂᏧᏏ ᎤᎾᏤᎵᎪᎯ ᎠᎴ ᏥᎷᏏᎵᎻ; ᎾᏍᎩ ᏧᏂᎸᎩ ᎨᏛ ᏧᎾᏛᏅᎩ.
|
|---|
A-yv-no o-tsi-no-he-s-gi na-s-gi ni-ga-dv nu-dv-ne-li-do-lv A-ni-tsu-si u-na-tse-li-go-hi a-le Tsi-lu-si-li-mi; na-s-gi tsu-ni-lv-gi ge-dv tsu-na-dv-nv-gi.
|
|---|
|
|---|
| Him God raised up the third day, and shewed him openly;
|
|---|
| ᎾᏍᎩ ᎤᏁᎳᏅᎯ ᏦᎢᏁ ᎢᎦ ᏕᎤᎴᏔᏅᎩ ᎠᎴ ᎬᏂᎨᏒ ᏂᏚᏩᏁᎸᎩ,
|
|---|
Na-s-gi U-ne-la-nv-hi tso-i-ne i-ga de-u-le-ta-nv-gi a-le gv-ni-ge-sv ni-du-wa-ne-lv-gi,
|
|---|
|
|---|
| Not to all the people, but unto witnesses chosen before of God, even to us, who did eat and drink with him after he rose from the dead.
|
|---|
| ᎥᏝ ᏂᎦᏛ ᏴᏫ, ᎠᏂᏃᎮᏍᎩᏉᏍᎩᏂ ᎤᏅᏒ ᎤᏁᎳᏅᎯ ᎦᏳᎳ ᏗᎬᏩᏑᏰᏛ ᏥᎨᏒᎩ, ᎾᏍᎩ ᎠᏴ ᎢᏧᎳᎭ ᎣᎦᎵᏍᏓᏴᏅᎯ ᎠᎴ ᏦᎦᏗᏔᎲᎯ ᎾᏍᎩ ᎤᏲᎱᏒ ᏧᎴᎯᏌᏅᎯ ᏥᏂᎨᏎᎢ.
|
|---|
V-tla ni-ga-dv yv-wi, a-ni-no-he-s-gi-quo-s-gi-ni u-nv-sv U-ne-la-nv-hi ga-yu-la di-gv-wa-su-ye-dv tsi-ge-sv-gi, na-s-gi a-yv i-tsu-la-ha o-ga-li-s-da-yv-nv-hi a-le tso-ga-di-ta-hv-hi na-s-gi u-yo-hu-sv tsu-le-hi-sa-nv-hi tsi-ni-ge-se-i.
|
|---|
|
|---|
| And he commanded us to preach unto the people, and to testify that it is he which was ordained of God to be the Judge of quick and dead.
|
|---|
| ᎠᎴ ᎣᎩᏁᏤᎸᎩ ᏴᏫ ᏦᏣᎵᏥᏙᏁᏗᏱ, ᎠᎴ ᎣᎩᏃᎮᏗᏱ ᎾᏍᎩ ᎤᏁᎳᏅᎯ ᎤᏪᎧᏅ ᏗᎫᎪᏓᏁᎯ ᏄᏩᏁᎸ ᏗᏅᏃᏛ ᎠᎴ ᏧᏂᏲᎱᏒᎯ.
|
|---|
A-le o-gi-ne-tse-lv-gi yv-wi tso-tsa-li-tsi-do-ne-di-yi, a-le o-gi-no-he-di-yi na-s-gi U-ne-la-nv-hi u-we-ka-nv di-gu-go-da-ne-hi nu-wa-ne-lv di-nv-no-dv a-le tsu-ni-yo-hu-sv-hi.
|
|---|
|
|---|
| To him give all the prophets witness, that through his name whosoever believeth in him shall receive remission of sins.
|
|---|
| ᎾᏍᎩ ᏂᎦᏛ ᎠᎾᏙᎴᎰᏍᎩ ᎬᏩᏃᎮᎭ, ᎯᎠ ᎾᏂᏪᎭ; ᎾᏍᎩ ᎩᎶ ᎪᎯᏳᎲᏍᎨᏍᏗ ᎾᏍᎩ ᏕᎤᏙᎥᎢ, ᎠᏥᏙᎵᏍᏗ ᎨᏎᏍᏗ ᎤᏍᎦᏅᏨᎢ.
|
|---|
Na-s-gi ni-ga-dv a-na-do-le-ho-s-gi gv-wa-no-he-ha, hi-a na-ni-we-ha; na-s-gi Gi-lo go-hi-yu-hv-s-ge-s-di na-s-gi de-u-do-v-i, a-tsi-do-li-s-di ge-se-s-di u-s-ga-nv-tsv-i.
|
|---|
|
|---|
| While Peter yet spake these words, the Holy Ghost fell on all them which heard the word.
|
|---|
| ᎠᏏᏉᏃ ᏈᏓ ᎯᎠ ᎾᏍᎩ ᏂᎦᏪᏍᎨᎢ, ᎦᎸᏉᏗᏳ ᎠᏓᏅᏙ ᎡᎳᏗ ᏄᏛᏁᎴ ᎤᏂᎷᏤᎴ ᏂᎦᏛ ᎠᎾᏛᎩᏍᎩ ᎧᏃᎮᏛ.
|
|---|
A-si-quo-no Qui-da hi-a na-s-gi ni-ga-we-s-ge-i, Ga-lv-quo-di-yu A-da-nv-do e-la-di nu-dv-ne-le u-ni-lu-tse-le ni-ga-dv a-na-dv-gi-s-gi ka-no-he-dv.
|
|---|
|
|---|
| And they of the circumcision which believed were astonished, as many as came with Peter, because that on the Gentiles also was poured out the gift of the Holy Ghost.
|
|---|
| ᏗᎨᏥᎤᏍᏕᏎᎸᎯᏃ ᎠᏃᎯᏳᎲᏍᎩ ᏂᎦᏛ ᏈᏓ ᏅᏓᎬᏩᏍᏓᏩᏛᏛ ᎤᏣᏘ ᎤᏂᏍᏆᏂᎪᏎᎢ, ᏅᏗᎦᎵᏍᏙᏗᏍᎨ ᏧᎾᏓᎴᏅᏛ ᏴᏫ ᎾᏍᏉ ᎨᏥᏐᏅᏰᎸ ᎨᏥᏁᎸ ᎦᎸᏉᏗᏳ ᎠᏓᏅᏙ.
|
|---|
Di-ge-tsi-u-s-de-se-lv-hi-no a-no-hi-yu-hv-s-gi ni-ga-dv Qui-da nv-da-gv-wa-s-da-wa-dv-dv u-tsa-ti u-ni-s-qua-ni-go-se-i, nv-di-ga-li-s-do-di-s-ge tsu-na-da-le-nv-dv yv-wi na-s-quo ge-tsi-so-nv-ye-lv ge-tsi-ne-lv Ga-lv-quo-di-yu A-da-nv-do.
|
|---|
|
|---|
| For they heard them speak with tongues, and magnify God. Then answered Peter,
|
|---|
| ᏚᎾᏛᎦᏁᎴᏰᏃ ᏧᏓᎴᏅᏛ ᏓᏂᏬᏂᏍᎬ ᎠᎴ ᎠᏂᎸᏉᏗᏍᎬ ᎤᏁᎳᏅᎯ. ᎿᎭᏉᏃ ᏈᏓ ᎤᏁᏤ ᎯᎠ ᏄᏪᏎᎢ;
|
|---|
Du-na-dv-ga-ne-le-ye-no tsu-da-le-nv-dv da-ni-wo-ni-s-gv a-le a-ni-lv-quo-di-s-gv U-ne-la-nv-hi. Hna-quo-no Qui-da u-ne-tse hi-a nu-we-se-i;
|
|---|
|
|---|
| Can any man forbid water, that these should not be baptized, which have received the Holy Ghost as well as we?
|
|---|
| ᏥᎪ ᎩᎶ ᏳᏅᏍᏙᎯ ᎠᎹ ᎯᎠ ᎾᏍᎩ ᏗᎨᎦᏬᏍᏗᏱ ᎾᏍᎩ ᎾᏍᏉ ᎦᎸᏉᏗᏳ ᎠᏓᏅᏙ ᏥᎨᏥᏁᎸ ᎾᏍᎩᏯ ᎠᏴ ᎡᎩᏁᎸᎢ?
|
|---|
Tsi-go gi-lo yu-nv-s-do-hi a-ma hi-a na-s-gi di-ge-ga-wo-s-di-yi na-s-gi na-s-quo Ga-lv-quo-di-yu A-da-nv-do tsi-ge-tsi-ne-lv na-s-gi-ya a-yv e-gi-ne-lv-i?
|
|---|
|
|---|
| And he commanded them to be baptized in the name of the Lord. Then prayed they him to tarry certain days.
|
|---|
| ᏕᎤᏁᏤᎴᏃ ᏗᎨᎦᏬᏍᏗᏱ ᏕᎤᏙᏍᏛ ᎤᎬᏫᏳᎯ. ᎿᎭᏉᏃ ᎬᏩᏔᏲᏎᎴ ᎢᎸᏍᎩ ᏧᏒᎯᏛ ᎤᏪᏗᏱ.
|
|---|
De-u-ne-tse-le-no di-ge-ga-wo-s-di-yi de-u-do-s-dv U-gv-wi-yu-hi. Hna-quo-no gv-wa-ta-yo-se-le i-lv-s-gi tsu-sv-hi-dv u-we-di-yi.
|
|---|


- I get the error
wpcap.dll
not found.
You need to install
WinPcap.
- How do I determine what interfaces I have? Pass the command line option
-i help
- I have multiple network interfaces and STUNT always reports
an error. Pass the command line option
-i
help
to list the interfaces and then execute STUNT with -bftro
output -i <num>
where <num>
is the number of the
interface that connects you to the internet.
- I get the error -- "Need root privileges". On Windows, you need to run STUNT while logged in as an
Administrator. On Linux, you need to run it with an effective user ID of
0. STUNT needs these privileges since it need to see the packets sent by the
operating system.
- I see lots of errors. Is something wrong? Intermittent errors may occur, if so, try running the client after a
while. If the error is persistent then there may be a problem. Please run the
client with the
-vv
option, redirect the output to a file and
contact<EMAIL_ADDRESS>with a copy of the output for diagnosis.
- How much CPU time and bandwidth does this use? The client uses virtually 0 CPU time since there is negligible
processing required. It uses less than 0.05 kbps on average since TCP
connection establishment involves very few packets and very little data is
transferred between clients and servers.
- The test always errors while testing bindings. Some NATs, like Open BSD, enforce TIMED-WAIT state after a connection
is closed by a RST even if the client operation system doesn't. Try passing the
command line option
--binding-interval 120
. This will make the
test take longer, but it will hopefully succeed.


Copyright (c) 2010-2016, WADA Masashi All rights reserved.
Web: https://osdn.jp/projects/miditrail/
Mail:
1. Introduction
2. System requirement
3. How to install and execute
4. Usage
5. Restriction
6. FAQ
7. How to customize
8. Copyright and license
9. Appendix
10. History
"MIDITrail" is a MIDI player which provides 3D visualization of MIDI datasets.
You can enjoy not only listening but also viewing.
MIDITrail supports SMF format 0/1, and multiple MIDI ports.
MIDITrail is available for Windows, Mac OS X and iOS.
Screenshot: PianoRoll3D
Screenshot: PianoRollRain
OS: Windows 2000 / XP / Vista / 7 / 8 / 10
VIDEO: Support for DirectX 9.0c graphics
It is recommended that your PC has high performance graphics for smooth animation.
If the MIDI datasets contains a lot of notes, the software needs more performance graphics.
As long as the performance of your PC allows, please enjoy MIDITrail with large window.
Extract ZIP file, and execute "MIDITrail.exe".
NOTICE:
If you are using Windows 2000, you must move "msvc*.dll" files
to the folder "MIDITrail.exe" exists from "Microsoft.VC90.CRT" folder, before executing "MIDITrail.exe".
If you are using Windows XP / Vista / 7 / 8 / 10, do not move DLL files.
At first, you must setup the MIDI OUT port.
Select "MIDI OUT..." from "Option" menu, then "MIDI OUT configuration" dialog will appear.
At least, you must select the MIDI OUT device of "port A".
Ordinary MIDI datasets is sent to "Port A".
If you want to play the MIDI datasets which uses multiple ports,
you must select the MIDI OUT device of port B, C, and so on.
NOTICE: To play the MIDI datasets which uses multiple ports,
it is necessary to prepare MIDI interface and MIDI module which supports multiple ports.
Delete "MIDITrail" folder which contains "MIDITrail.exe". MIDITrail doesn't use registry.
Recomposer is an old popular MIDI sequence software in Japan.
MIDITrail can open Recomposer data files (*.rcp *.r36 *.g36)
using RCPCV.DLL (Recomposer File Converter) which Mr. Fummy releases.
If you want to open Recomposer data files,
please download RCPCV.DLL and copy it to the folder "MIDITrail.exe" exists.
RCPCV.DLL http://www.vector.co.jp/soft/win95/art/se114143.html
Select "Open..." from "File" menu, the Open File dialog will appear. And choose a Standard MIDI File (*.mid).
Or you can drag and drop a MIDI file into the window of MIDITrail.
If you prepared RCPCV.DLL, MIDITrail can open the Recomposer data files (*.rcp *.r36 *.g36). Please refer to "3.(4) How to open Recomposer data files" for details.
Push the following keys, or use "Playback" menu.
| Key | Action |
|---|---|
| SPACE | Play / Pause / Resume |
| ESC | Stop |
| 12 | Skip Back / Skip Forward |
| 45 | Playback Speed Down / Up |
| F2 | Double speed playback |
You can move freely in 3D space, and look at MIDI datasets from all directions
by operation of keyboard and mouse, like FPS (First Person Shooter) game.
Although there is sense of incongruity in the beginning,
it will be very comfortable as experience is gained.
When you click the window, it will become the view control mode by the mouse,
and mouse cursor will disappear.
The eye direction synchronizes movement of your mouse.
If you click once again, view control mode will be canceled.
And you can rotate piano roll using mouse wheel.
Put your index finger on D, middle finger on W, third finger on A.
| Key | Action |
|---|---|
| WS | It moves forward and backward. |
| AD | It moves left and right. |
| QE | It goes up and down. |
| ZC | It moves along the direction of MIDI datasets. (In PinoRollRain, it moves along the piano keyboard.) |
|
SHIFT + [WS] SHIFT + [AD] SHIFT + [QE] SHIFT + [ZC] |
When you push move key with SHIFT key, you can move at high speed. |
|
CTRL + [WS] CTRL + [AD] |
You can control the eye direction. |
You can also use a cursor key. If you use a mouse with your left hand, this one may be convenience.
| Key | Action |
|---|---|
| ↑↓ | It moves forward and backward. |
| ←→ | It moves left and right. |
| PgUpPgDn | It goes up and down. |
| ,. | It moves along the direction of MIDI datasets. (In PinoRollRain, it moves along the piano keyboard.) |
|
SHIFT + [↑↓] SHIFT + [←→] SHIFT + [PgUpPgDn] SHIFT + [,.] |
When you push move key with SHIFT key, you can move at high speed. |
|
CTRL + [↑↓] CTRL + [←→] |
You can control the eye direction. |
When you do the following operation, your viewpoint returns to the default position.
At first, the default position is the viewpoint which looks at MIDI datasets from just beside.
If you want to change the default position, move to your favorite position,
and select "Save viewpoint" from "View" menu.
If you want to restore default position which looks at MIDI datasets from just beside,
select "Reset viewpoint".
If you want to save view point automatically at the time of application termination or scene change, select "Auto save viewpoint" from "View" menu.
Select "Window size..." from "View" menu, the Window size configuration dialog will appear.
Select your favorite window size, and push the OK button.
You can not change window size while playing or pausing.
The window size you can select is depends on your PC.
If you want to specify any window size, fill in "Width" "Height".
If you want to apply that size to the view area, check "Apply to the view area".
| Counter | Details |
|---|---|
| FPS | Frame Per Second. |
| TITLE | Title of music. |
| TIME | Elapsed time. |
| BPM | Tempo (Beats Per Minute). |
| BEAT | Time signature. |
| BAR | Number of bars. |
| NOTES | Number of notes. |
| SPEED | Playback speed. |
(a) The structure of "Piano roll 3D" visualization
When MIDITrail open the MIDI datasets uses multiple ports, unused port will be not displayed.
For example, if the MIDI datasets uses port A, C and E,
MIDITrail displays port A, C and E side by side, and omits port B and D.
(b) The structure of "Piano Roll Rain" visualization
When MIDITrail open the MIDI datasets uses multiple ports,
only piano keyboards of port A will be displayed.
However piano roll bars of all ports will be displayed.
You can select the view mode from "View" menu. You can not change the view mode while playing or pausing.
You can switch the display/effect at "View" menu.
The piano roll bar will move up/down or right/left with change of pitch bend.
Some MIDI animation works are using pitch bend to shift the piano roll bars without change keys.
If the MIDI animation is not displayed correctly, please disable the pitch bend effect to fix the piano roll bars.
If you want to start MIDITrail by command line, you can use following arguments.
MIDITrail.exe [-p] [-q] ["path\to\file"]
| argument | detail |
|---|---|
| -p | Play MIDI file after startup of MIDITrail. If you did not specify "path\to\file", this option will be ignored. |
| -q | End MIDITrail after end of playback. If option "-p" was not specified, this option will be ignored. |
| path\to\file | MIDI file path. When you specify a path including a space character, please surround with a double quotation mark. |
If you drop a MIDI file to the shortcut of MIDITrail, MIDITrail open the file on startup.
Select "Graphic..." from "Option" menu, the graphic configuration dialog will appear.
You can not change graphic configuration while playing or pausing.
Anti-aliasing
If anti-aliasing is enabled, a notch (jaggy) will decrease and a more beautiful picture will be displayed.
However, since processing of anti-aliasing is heavy, performance may be poor when you select a upper level.
If your PC does not support anti-aliasing, it is displayed as "Not supported".
Background image file path
If you want to display the background image, specify the file path of the image.
You can view data sets received from MIDI IN device in realtime.
Select "MIDI IN..." from "Option" menu, then "MIDI IN configuration" dialog will appear.
Select the MIDI IN device for monitoring.
If you check the MIDITHRU, MIDITrail will send data sets received from MIDI IN to MIDI OUT.
When you select "Start Monitoring" from "Playback" menu, MIDI IN monitoring will start.
NOTE: MIDITrail can not record data sets received from MIDI IN.
If you use the MIDI module which delays sound (such as software sound modules), the MIDI sound and display may not synchronize.
MIDITrail renders all notes of the MIDI file in real time.
Therefore if MIDI file has a large number of notes, the load of rendering becomes high.
In order to enjoy MIDI file which contains tens of thousands of notes comfortably,
you have to use PC which has high performance graphics.
In specification of SMF (Standard MIDI File), a method to select port is not defined.
However there is the unofficial method (*1) to select port.
MIDITrail supports that method, but may be unable to play the MIDI file.
It depends on the MIDI file.
(*1) Meta event (FF 21 01 pp) is the command to select port.
MIDITrail can't open the MIDI file whose delta time represents actual time.
The error occurs when the version of DirectX in your PC is old. Please install the latest version of "DirectX End-User Runtime".
Microsoft: DirectX End-User Runtimes (June 2010)
https://www.microsoft.com/en-us/download/details.aspx?id=8109
Please try to change window size to small, and turn off anti-aliasing.
Check FPS value in window title.
If the FPS value is under 60, the performance of graphics is insufficient.
When MIDI file has a large number of notes, the load of rendering becomes high.
To confirm the performance of your PC, please try to open MIDI file which contains few notes.
If the animation does not improve, please use PC which has high performance graphics.
Move your viewpoint to your favorite position, and select "Save viewpoint" from "View" menu.
Then your current viewpoint will be saved.
Or you can select "Auto save viewpoint" of "View" menu.
You can customize the window size. Please open following file by text editor, and edit "Width" and "Height".
Windows 2000 / XP C:\Documents and Settings\(user name)\Application Data\yknk\MIDITrail\View.ini Windows Vista / 7 / 8 / 10 C:\Users\(user name)\AppData\Roaming\yknk\MIDITrail\View.ini
[WindowSize] Width=800 Height=600
In present version, MIDITrail can not display in full screen. It may support in the future.
Sorry, it is a specification.
If you are using Windows 2000, you must move "msvc*.dll" files to the folder "MIDITrail.exe" exists from "Microsoft.VC90.CRT" folder, before executing "MIDITrail.exe".
If your PC does not support Direct3D, this error occurs.
Please execute "DirectX Diagnostic Tool"(dxdiag.exe), and select "Display" tab.
Is the "Direct3D Acceleration" enabled?
If you can't change "Direct3D Acceleration" to "Enabled", your PC does not support Direct3D.
Please use the PC which supports DirectX 9.0c graphics.
You can change size of the ripple by editing configuration file.
Please Check "7. Customize - (2) Piano roll".
Change the value of "RippleHeight" and "RippleWidth" larger.
You can customize MIDITrail as your like, by editing the files which is in "conf" folder.
| File | contents |
|---|---|
| conf/Player.ini | Player configuration |
| conf/PianoRoll3D.ini | View mode configuration: Piano Roll 3D |
| conf/PianoRoll2D.ini | View mode configuration: Piano Roll 2D |
| conf/PianoRollRain.ini | View mode configuration: Piano Roll Rain |
| conf/PianoRollRain2D.ini | View mode configuration: Piano Roll Rain 2D |
| conf/PianoRoll3DLive.ini | View mode configuration: Piano Roll 3D (MIDI IN Monitor) |
| conf/PianoRoll2DLive.ini | View mode configuration: Piano Roll 2D (MIDI IN Monitor) |
| conf/PianoRollRainLive.ini | View mode configuration: Piano Roll Rain (MIDI IN Monitor) |
| conf/PianoRollRain2DLive.ini | View mode configuration: Piano Roll Rain 2D (MIDI IN Monitor) |
Edit [PlayerControl] section.
| Name | Details |
|---|---|
| AllowMultipleInstance | Allow multiple instances of the MIDITrail (0:disallow / 1:allow) |
| AutoPlaybackAfterOpenFile | Playback automatically after opening file (0:disable / 1:enable) |
Edit [ViewControl] section.
| Name | Details |
|---|---|
| ShowFileName | Show the file name insted of the title (0:disable / 1:enable) |
Edit [SkipControl] section.
| Name | Details |
|---|---|
| SkipBackTimeSpanInMsec | Skip back time span (msec) |
| SkipForwardTimeSpanInMsec | Skip forward time span (msec) |
| MovingTimeSpanInMsec | Skip animation time span (msec) |
Edit [PlaybackSpeedControl] section.
| Name | Details |
|---|---|
| SpeedStepInPercent | Playback speed step (%) |
| MaxSpeedInPercent | Playback speed max ratio (%) |
Edit [FirstPersonCam] section.
| Name | PR-3D/2D | PR-Rain/2D | Details |
|---|---|---|---|
| VelocityFB | o | o | Velocity of forward and backward. (m/s) |
| VelocityLR | o | o | Velocity of left and right. (m/s) |
| VelocityUD | o | o | Velocity of up and down. (m/s) |
| VelocityPT | o | o | Angular velocity of look. (degree/s) |
| AcceleRate | o | o | The rate of acceleration when push SHIFT key. (n times) |
| VelocityAutoRoll | o | o | Angular velocity of auto rotation of piano roll (degree/s) |
| VelocityManualRoll | o | o | Angular velocity of manual rotation of piano roll (degree/s) |
Edit [Scale] section.
| Name | PR-3D/2D | PR-Rain/2D | Details |
|---|---|---|---|
| QuarterNoteLength | o | o | Length of quarter note (m) |
| NoteBoxHeight | o | x | Height of note box (m) |
| NoteBoxWidth | o | x | Width of note box (m) |
| NoteStep | o | x | Interval length of notes in a channel (m) |
| ChStep | o | x | Interval length of channels (m) |
| RippleHeight | o | x | Height of ripple (m) |
| RippleWidth | o | x | Width of ripple (m) |
| PictBoardRelativePos | o | x | The relative position which crosses perpendicularly the board and the playback section. 0.0 - The left edge of board crosses playback section 0.5 - The center of board crosses playback section 1.0 - The right edge of board crosses playback section |
| LiveNoteLengthPerSecond | o | o | Note length for 1 second in monitor (m) |
| LiveMonitorDisplayDuration | o | o | Display duration in monitor (msec) |
If you set small value to QuarterNoteLength, you can enjoy MIDI datasets like miniature garden.
Edit [Color] section. "A" of "RGBA" means alpha value.
| Name | PR-3D/2D | PR-Rain/2D | Details |
|---|---|---|---|
| NoteColorType | o | o | Note color type CHANNEL: Assign the channel color to the piano roll bar. (Ch-XX-NoteRGBA) SCALE: Assign the scale color to the piano roll bar. (Scale-XX-NoteRGBA) |
| Ch-01-NoteRGBA Ch-02-NoteRGBA : Ch-16-NoteRGBA | o | o | Color of the piano roll bar at each channel.(RGBA) |
| Scale-01-NoteRGBA Scale-02-NoteRGBA ・・・ Scale-12-NoteRGBA | o | o | Color of the piano roll bar at each sacle.(RGBA) 01=C,02=C#,03=D,04=D#,05=E,06=F,07=F#,08=G,F09=G#,10=A,11=A#,12=B |
| GridLineRGBA | o | x | Color of the grid line and bar line. (RGBA) If A of RGBA is 00 then the grid line will disappear. |
| PlaybackSectionRGBA | o | x | Color of the playback section. (RGBA) |
| CaptionRGBA | o | o | Color of the caption/counter string.(RGBA) |
| BackGroundRGB | o | o | Back ground color(RGB) |
Edit [ActiveNote] section.
| Name | PR-3D/2D | PR-Rain/2D | Details |
|---|---|---|---|
| Duration | o | x | Duration of active note flash.(msec) |
| WhiteRate | o | x | White rate at "NOTE ON". 0.0 Same color as piano roll bar. It means no flash. 0.5 Neutral color of piano roll bar and white. 1.0 White. |
| EmissiveRGBA | o | x | Emissive color of active note. (RGBA) This value will be ignored on PianoRoll2D. |
Edit [Ripple] section.
| Name | PR-3D/2D | PR-Rain/2D | Details |
|---|---|---|---|
| Duration | o | x | Duration of a ripple.(msec) |
Edit [Stars] section.
| Name | PR-3D/2D | PR-Rain/2D | Details |
|---|---|---|---|
| NumberOfStars | o | o | The number of stars to draw. |
Edit [Bitmap] section.
Place your bitmap file to "data" folder which exists under the MIDITrail folder.
And write the bitmap file name to INI file.
If the height or width of bitmap is too big, your PC may be unable to draw the bitmap.
| Name | PR-3D/2D | PR-Rain/2D | Details |
|---|---|---|---|
| Board | o | x | Bitmap file name of the picture board.(ex. "data\Board.bmp") Instead of piano keyboard, you can display your favorite wallpaper. The aspect ratio of bitmap is arbitrary. To adjust the relative position which crosses perpendicularly the board and the playback section, please edit "[Scale] / PictBoardRelativePos". |
| Ripple | o | x | Bitmap file name of the ripple.(ex. "data\Ripple.bmp") You can change ripple which is displayed on "NOTE ON". The aspect ratio of bitmap is arbitrary. To adjust ripple display size, please edit "[Scale] / RippleHeight, RippleWidth". |
| Keyboard | x | o | Bitmap file name of piano keyboard.(ex. "data\Keyboard.bmp") Texture image of Piano keyboard. You can not change the aspect ratio of this bitmap. |
Edit [PianoKeyboard] section.
| Name | PR-3D/2D | PR-Rain/2D | Details |
|---|---|---|---|
| KeyDownDuration | x | o | Duration of key down (msec) |
| KeyUpDuration | x | o | Duration of key up (msec) |
| KeyboardStepY | x | o | Keyboard step interval: Horizontal direction (m) |
| KeyboardStepZ | x | o | Keyboard step interval: Vertical direction (m) |
| KeyboardMaxDispNum | x | o | The number of the maximum keyboards (0-16) |
| WhiteKeyColor | x | o | Color of white key. (RGBA) |
| BlackKeyColor | x | o | Color of black key. (RGBA) |
| ActiveKeyColorType | x | o | Active key color type STANDARD: Standard color (ActiveKeyColor) NOTE: Note color (Ch-XX-NoteRGBA or Scale-XX-NoteRGBA) |
| ActiveKeyColor | x | o | Color of active key. (RGBA) |
| ActiveKeyColorDuration | x | o | Duration of change from the color of note ON to the last neutral color. (msec) |
| ActiveKeyColorTailRate | x | o | Definition of the last neutral color. Color ratio of the color of note ON (red) and the color of key (white/black) (0.0-1.0) |
| KeyDispRangeStart | x | o | Key display range: start position (0-127) In typical 88-key piano, start position is 21(A0). |
| KeyDispRangeEnd | x | o | Key display range: end position (0-127) In typical 88-key piano, end position is 108(C8). |
WADA Masashi holds the copyright of MIDITrail.
MIDITrail is released under the BSD license.
Copyright (c) 2010-2016, WADA Masashi <> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
I was enjoying "MIDI ANIMATION" videos which were made by artisans of NICO NICO DOUGA community.
(NICO NICO DOUGA is the video hosting service in Japan.)
Then I got the image that I am walking through the trail, there are many floating piano roll bars.
In order to actualize this image, I started development of MIDITrail.
However, after a few days, I found the demo video of "MIDIPlayer" which supports 3D piano roll at NICO NICO DOUGA.
It dejected me a little, but I continued development to actualize my image.
In Google and Youtube, you can find many videos which converted MIDI datasets into 3D CG animation.
But there is few applications which synchronize MIDI sound and display with 3D visualization.
The applications I found are shown below.
"3D MiDi" is a MIDI player for Windows using OpenGL.
Cubes and balls move about with MIDI sound.
Now, it has been hard to get the software.
MADO NO MORI: "3D MiDi" Alpha 0.1, synchronizes MIDI sound and 3D animation. http://www.forest.impress.co.jp/article/1999/11/18/threedmidi.html
"comp-i" is the software which provides 3D visualization of MIDI datasets.
Its target is intuitive editing of MIDI datasets.
comp-i has been trying to visualize not only a pitch but various parameters of MIDI datasets.
This software is explained in the paper which tackled 3D visualization of MIDI datasets.
Reiko Miyazaki, Issei Fujishiro: "3D Visualization of MIDI Datasets" July, 2002. http://ci.nii.ac.jp/naid/110002935789 Reiko Miyazaki, Issei Fujishiro, Rumi Hiraga: "A System for Visual Exploration of MIDI Datasets" March, 2004. http://ci.nii.ac.jp/naid/110002712125
You can get some related papers by searching web.
comp-i seems to a software for Windows, using World-ToolKit.
It is not opened to the public. I want to see it someday...
"MIDIJam" is a MIDI player for Windows using OpenGL.
This software displays the 3D musical instruments which are performing in real time.
MIDIJam supports 92 different instruments in the latest version.
MIDIJam http://www.gamesbyscott.com/midijam.htm
"MIDIPlayer" is a MIDI player for Java environment using OpenGL.
MIDIPlayer has rendering plug-ins, and one of them supports 3D piano roll.
It can display 3D piano roll which received from MIDI keyboard in real time.
MIDIPlayer http://sourceforge.jp/projects/midiplayer/
| Date | Version | Changelog |
|---|---|---|
| 2010/03/08 | Ver.0.0.0 | Development start. |
| 2010/05/18 | Ver.1.0.0 beta | Beta release. |
| 2010/06/02 | Ver.1.0.0 | First formal release. |
| 2010/06/05 | Ver.1.0.1 |
#22102 Fixed bug. (execution fails by missing Visual C++ runtime library) #22106 Fixed bug. (size of about dialog is big on Windows English version) |
| 2010/06/20 | Ver.1.0.2 |
#22218 Added English manual. #22108 Fixed bug. (crash when opening the MIDI file exported from VOCALOID) #22217 Fixed bug. (overlapped ripples flicker) |
| 2010/07/11 | Ver.1.0.3 |
#22319 Added color effect to active piano roll bar. #22412 Added pitch bend effect to piano roll bar. #22425 Added view mode of piano roll 2D. #22442 Added switch interface of display and effect. #22413 Fixed bug. (rendering performance has declined by specular effect) #22414 Fixed bug. (total count of notes is incorrect) #22424 Fixed bug. (duration of a ripple is not constant) |
| 2010/07/25 | Ver.1.0.4 |
#22320 Added application icon. #22522 Added support for Recomposer data file. #22523 Added command line interface. #22582 Added double speed playback mode. #22585 Added function of piano roll rotation by a mouse wheel. #22566 Fixed bug. (Playback time was slightly short) #22506 Fixed bug. (Note may continue sounding after the end of playback) |
| 2010/08/06 | Ver.1.0.5 |
#22633 Fixed bug. (Piano roll rotation status is not saved by "Save viewpoint") #22652 Fixed bug. (Parse error when opening 55MCMDL1.MID "WATANABE Michiaki MEDLEY") #22709 Fixed bug. (MIDITrail sends redundant "F7" to MIDI-OUT with multi-packet system exclusive message) #22710 Fixed bug. (Auto rotation speed of piano roll is not constant) |
| 2010/08/29 | Ver.1.1.0 beta | Beta release.(Added "Piano Roll Rain") |
| 2010/09/19 | Ver.1.1.0 |
#23174 Added view mode "Piano Roll Rain" #23175 Fixed bug. (File open dialog is not modal) |
| 2010/10/17 | Ver.1.1.1 |
#23439 Added Anti-aliasing support #23347 Fixed bug. (Key down timing and a piano roll don't synchronize in PianoRollRain) #23348 Fixed bug. (Spelling error in file open dialog) #23422 Fixed bug. (Position of black is not correct in PianoRollRain) |
| 2010/12/26 | Ver.1.1.2 |
This version was released with MIDITrail for Mac OS X. #23970 Added eye direction control by key operation. #23971 Updated texture images. #23972 Updated application icon. #23497 Fixed bug. ("Piano Roll Rain" item in "View" menu is always enable) #23968 Fixed bug. (Time signature was always 4/4 after loading file) #23969 Fixed bug. (Space charactor in the title string has been ignored) |
| 2012/01/15 | Ver.1.1.3 |
#27006 Merged features of MIDITrail Ver.1.1.3 for Mac OS X #25454 Added grid line display control #26987 Added playback speed control #26988 Added skip control #26989 Added stars and counter display control #27005 Added figure of player operations guide to "How to view dialog" #27091 Added check of DirectX feature support (Index Buffer) #26990 Fixed bug. (Typographical errors on the license) #27139 Fixed bug. (The color of note boxes are whitish in Piano Roll 3D) #27140 Fixed bug. (The color of stars are dark in Piano Roll Rain) |
| 2012/03/04 | Ver.1.2.0 |
#27711 Merged features of MIDITrail Ver.1.2.0 for Mac OS X #27458 Added MIDI IN monitoring #27459 Added MIDI OUT auto configuration #27712 Added shortcut key of File Open #27725 Fixed bug. (Error occurs when the MIDI data contains the track with 6 or more port numbers) |
| 2013/12/4 | Ver.1.2.1 |
#30545 Added key display range control #30546 Added back ground color control #30547 Added scale color assignment to the piano roll bar #30553 Added ability to render the user-specified 3D model #32360 Added menu item "Auto save viewpoint" #32361 Added ability to save viewpoint in MIDI IN monitoring #32362 Added ability to playback automatically after opening file #32363 Added ability to open the file while playing #32364 Added ability to inhibit multiple instances of MIDITrail #32366 Added ability to display the file name #32367 Added view mode "Piano Roll Rain 2D" #32427 Added note color assignment to active key #32365 Changed title caption ("TITLE:" string was removed) #30552 Improved event message queue mechanism #30548 Fixed bug. (At the start of playback, MIDI data transmission is blocked) #32359 Fixed bug. (MIDITrail does not send some CC events at skip processing) |
| 2014/2/23 | Ver.1.2.1a |
#33252 Added support for Windows 64bit |
| 2014/4/20 | Ver.1.2.1b |
#33674 Fixed bug. (When NSX-39 was selected as MIDI OUT device, error occurs at the start of playback) #33695 Fixed bug. (Program error occurs in MTFont2Bmp::_writeGlyphToBmpBuf.) |
| 2016/12/05 | Ver.1.2.2 |
#35775 Changed URL and mail address in user's manual #36844 Added supports window size customization #36845 Added supports background image customization #36846 Changed version information string |


Space production
This space has 6 collaborators
Which tasks can they perform?
Space manager
A superuser who manages the space and its users.

Space auditor
A user who can view apps, users and resources used within the space.
| Name | Space manager | Space developer | Space auditor |
|---|---|---|---|
|<EMAIL_ADDRESS>| |||
|<EMAIL_ADDRESS>| |||
|<EMAIL_ADDRESS>(You) | |||
|<EMAIL_ADDRESS>| |||
|<EMAIL_ADDRESS>| |||
|<EMAIL_ADDRESS>|
Add other collaborators to this space from the team members list.
To edit an existing collaborator’s role go to their profile page.


{% extends "templates.jinja/base.page-with-navbar.html" %} {% block title %} Hesperian - Saving Mothers' Lives{% endblock %} {% block id %}Water_breaks_no_labor{% endblock %} {% block content %}
Most women will give birth within 24 hours after their waters break. If labor has not started within 12 hours, the woman and her baby could get a serious infection.
The mother must not put anything in her vagina. This could cause an infection.
Try to strenghten labor. If labor does not start after a few more hours, she should go to a health center or hospital.
If she has a fever or there is a bad smell in the vagina, an infection is starting. Give antibiotics on the way to the hospital.
{% endblock %} {% block footer %} {% endblock %}


Block Chain Galaxy
Financial Institution
The financial industry is a first mover in blockchain, investing nearly
$1 billion in blockchain companies, according to Magister Advisors. The technology could
cut $20 billion in annual costs in global banking, the Wall Street Journal reported,
citing a Santander InnoVentures analysis.
Some Example:
- Nasdaq Inc., Citi Ventures, Visa Inc. and others put $30 million last September into Chain Inc., which is building blockchain infrastructure for the financial industry.
- Digital Asset Holdings LLC a blockchain startup has raised more than $50 million from 13 investors including J.P. Morgan Chase & Co., Citigroup Inc. and BNP Paribas SA. They plan to research and commercialize platforms for deals involving stocks, derivatives, loans and other assets. transactions that now are recorded centrally by banks or other institutions in a process that adds cost and time.
- R3 CEV LTD a consortium of 42 banks expect to pilot a private blockchain this year (2016), after 11 of the banks successfully conducted a test in January.
Source: [ WSJ Article ]
[ Previous ] Block Chain Galaxy [ Next ]


Try your best to be very concious of where you place your hands.  Make sure you know how to take off your mask properly.
Click
here to find out more


Will ensure water for every acre in A.P.: Anil Kumar
‘Government committed to completing pending irrigation projects’
by Tadi Vidura“From Srikakulam to Kuppam, every acre of land will get ample water for agriculture purpose,” Water Resources Minister P. Anil Kumar has said.
Mr. Anil Kumar visited the Pothyreddypadu head regulator, Banakacharla cross regulator and Velugodu reservoir on Friday.
Later, the Minister took stock of the situation at these projects and at the HNSS, Telugu Ganga, and SRBC canals.
Later addressing the media, Mr. Anil Kumar said that a plan was being drawn to widen the HNSS main canal, the SRBC Right and Left canals, and the Telugu Ganga canals in a bid to draw more water.
“The district will not have shortage of irrigation water,” he asserted.
Reservoirs brimming
“All the tanks and reservoirs in the State are brimming with water, thanks to excessive rains received this year,” he observed.
Mr. Anil Kumar said that the government was determined to complete all the pending irrigation projects in the State in the next five years.
MLAs T. Arthur (Nandikotkur), Katasani Rambhupal Reddy (Panyam), Shilpa Ravi Chandra Kishore Reddy (Nandyal), and Shilpa Chakrapani Reddy (Srisailam); Joint Collector Ravi Pattanshetti; and Water Resources CE Narayana Reddy and SE Sriramachandra Murthy were among others who accompanied the Minister.


# Licensed under a 3-clause BSD style license - see LICENSE.rst
"""
This module includes helper functions for array operations.
"""
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import numpy as np
__all__ = ['extract_array', 'add_array', 'subpixel_indices',
'overlap_slices']
[docs]def overlap_slices(large_array_shape, small_array_shape, position):
"""
Get slices for the overlapping part of a small and a large array.
Given a certain position of the center of the small array, with
respect to the large array, tuples of slices are returned which can be
used to extract, add or subtract the small array at the given
position. This function takes care of the correct behavior at the
boundaries, where the small array is cut of appropriately.
Parameters
----------
large_array_shape : tuple
Shape of the large array.
small_array_shape : tuple
Shape of the small array.
position : tuple
Position of the small array's center, with respect to the large array.
Coordinates should be in the same order as the array shape.
Returns
-------
slices_large : tuple of slices
Slices in all directions for the large array, such that
``large_array[slices_large]`` extracts the region of the large array
that overlaps with the small array.
slices_small : slice
Slices in all directions for the small array, such that
``small_array[slices_small]`` extracts the region that is inside the
large array.
"""
# Get edge coordinates
edges_min = [int(pos + 0.5 - small_shape / 2.) for (pos, small_shape) in
zip(position, small_array_shape)]
edges_max = [int(pos + 0.5 + small_shape / 2.) for (pos, small_shape) in
zip(position, small_array_shape)]
# Set up slices
slices_large = tuple(slice(max(0, edge_min), min(large_shape, edge_max))
for (edge_min, edge_max, large_shape) in
zip(edges_min, edges_max, large_array_shape))
slices_small = tuple(slice(max(0, -edge_min),
min(large_shape - edge_min, edge_max - edge_min))
for (edge_min, edge_max, large_shape) in
zip(edges_min, edges_max, large_array_shape))
return slices_large, slices_small
[docs]def add_array(array_large, array_small, position):
"""
Add a smaller array at a given position in a larger array.
Parameters
----------
array_large : `~numpy.ndarray`
Large array.
array_small : `~numpy.ndarray`
Small array to add.
position : tuple
Position of the small array's center, with respect to the large array.
Coordinates should be in the same order as the array shape.
Returns
-------
new_array : `~numpy.ndarray`
The new array formed from the sum of ``array_large`` and
``array_small``.
Notes
-----
The addition is done in-place.
Examples
--------
We consider a large array of zeros with the shape 5x5 and a small
array of ones with a shape of 3x3:
>>> import numpy as np
>>> from astropy.nddata.utils import add_array
>>> large_array = np.zeros((5, 5))
>>> small_array = np.ones((3, 3))
>>> add_array(large_array, small_array, (1, 2))
array([[ 0., 1., 1., 1., 0.],
[ 0., 1., 1., 1., 0.],
[ 0., 1., 1., 1., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]])
"""
# Check if large array is really larger
if all(large_shape > small_shape for (large_shape, small_shape)
in zip(array_large.shape, array_small.shape)):
large_slices, small_slices = overlap_slices(array_large.shape,
array_small.shape, position)
array_large[large_slices] += array_small[small_slices]
return array_large
else:
raise ValueError("Can't add array. Small array too large.")
[docs]def subpixel_indices(position, subsampling):
"""
Convert decimal points to indices, given a subsampling factor.
This discards the integer part of the position and uses only the decimal
place, and converts this to a subpixel position depending on the
subsampling specified. The center of a pixel corresponds to an integer
position.
Parameters
----------
position : `~numpy.ndarray` or array-like
Positions in pixels.
subsampling : int
Subsampling factor per pixel.
Returns
-------
indices : `~numpy.ndarray`
The integer subpixel indices corresponding to the input positions.
Examples
--------
If no subsampling is used, then the subpixel indices returned are always 0:
>>> from astropy.nddata.utils import subpixel_indices
>>> subpixel_indices([1.2, 3.4, 5.6],1)
array([ 0., 0., 0.])
If instead we use a subsampling of 2, we see that for the two first values
(1.1 and 3.4) the subpixel position is 1, while for 5.6 it is 0. This is
because the values of 1, 3, and 6 lie in the center of pixels, and 1.1 and
3.4 lie in the left part of the pixels and 5.6 lies in the right part.
>>> subpixel_indices([1.2, 3.4, 5.5],2)
array([ 1., 1., 0.])
"""
# Get decimal points
fractions = np.modf(np.asanyarray(position) + 0.5)[0]
return np.floor(fractions * subsampling)


Getting started Installation npm install @feather-ts/feather-ts --save Components Feather provides two interfaces to turn any class into a component: Widget and ArrayWidget. Widget has a method init(el: Element) which is called when the component has been mounted to the dom. ArrayWidget tags classes that are added to arrays of a parent component. It has no init method, because initialization can be done in its constructor. All decorators should be attached to the leaf class of a component. Mounting to the dom The most common way to do this is to call render(widget: Widget, el: Element) inside your init method. However, you might choose to load some backend data first and render the component once the call has completed. @Construct({selector: '.any-class'}) class MyWidget implements Widget { data: MyData init(el: Element) { this.data = await this.loadData() render(this, el) } @Get({url: '/some/data'}) async loadData() {} @Template() markup() { return `Hello {{data.name}}!` } } Furthermore you can also have renderless widgets that just attach dom events or manipulate their childnodes. Bootstrapping Once you have written some components you need to kickstart feather. The recommended way is to create an entry script that will contain a) imports of your initial components and b) the start call: import {start} from '@feather-ts/feather-ts' import './demo/app' start() The imports are required so the decorators can be run on the class before any widget is mounted to the dom. Templating A widget should have at least one method decorated with @Template(). This method should return a string that contains template bindings. Bindings in feather are written inside double curly brackets like this: @Construct({selector: '.any-class'}) class MyWidget implements Widget { hidden = false children: MySubItems[] = [] classNames = { bold: "bold" } some = { value: 'some text' } @Template() html() { return ` <h1 hidden="{{hidden}}">This is {{some.value:uppercase}}</h1> <ul class="red {{classNames.bold}}" {{children}}/> <my-component/> ` } init = (el: HTMLElement) => render(this, el) uppercase = (str: string) => str.toUpperCase() } Depending where the binding occurs, it will have different effects. Inside the curly brackets you can use dot notation to bind to deeper values. In each binding you can apply transformers that convert the property into something else {{some.value:uppercase}}. The transformer uppercase should be a function in the class itself or in any other(!) widget, as long as it is decorated with @Transformer(). You can also apply multiple transfomers in a row like so: {{myprop:tohyphens:uppercase}}. Since this is the only syntax added to regular HTML the template is easy to read and understand even months after writing the code. Sub-components In the above example will create a new instance of a sub component, provided there is a @Construct selector set to ‘my-component’. You can pass data from the current widget by simple attribute bindings, like so: <my-component attr1={{prop1}} attr2={1+1}/>. Single curlies will evaluate to a static value; this is useful for passing down numbers or booleans. If prop1 is a function it is passed dowm as such but with the context bound to the current widget. Toggling elements


{% extends "tutorial.html" %} {% load mixin from templatefilters %} {% block pagebreadcrumb %}{{ tut.title }}{% endblock %} {% block head %} {% endblock %} {% block iscompatible %} return 'register' in document; {% endblock %} {% block html5badge %} {% endblock %} {% block share_image %} {% endblock %} {% block content %}
DevTools Terminal is a new Chrome DevTools extension that brings the power of the terminal to your browser. If you ever find yourself context-switching between Chrome and the command-line for tasks like: pulling down assets, using git, grunt, wget or even vim - you may find this extension a useful time-saver.
During development, you’re probably used to working with a few different tools: your text editor for authoring, a browser for testing and debugging and the terminal for updating packages, curling headers or even a build process using Grunt.
Having to switch contexts between tools during development can be distracting and can lead to inefficiency. We’ve previously talked about how (for certain types of projects) you can debug and author code directly inside the Chrome DevTools using Workspaces without leaving the browser.
DevTools Terminal (by Dmitry Filimonov) completes that story, making it possible to code, debug and build from inside the same window. You get access to tab, ctrl and even Git colors making it feel familiar to the terminal you’ve used to using in your daily workflow.
My personal workflow for authoring in Chrome now looks a little like this:
DevTools Terminal: use it to git clone a GitHub repository, touch a new file or run yo (yeoman) to create an app. If I want I can launch a new server to preview the app too
Workspaces: edit and debug my webapp inside Chrome. If I launched a server earlier I can map my local project to my network files. I can use Sass or Less and have my CSS preprocessor changes mapped back to my CSS files.
DevTools Terminal: I can now commit to source control, use a package manager (npm, bower) to pull down dependencies or run my build process (grunt, make) to generate an optimized version of the same app.
Although it can take a while to get used to the window arrangement, it’s pleasant being able to achieve most of what I need from inside the browser.
DevTools Terminal can be installed from the Chrome Web Store. If you’re a Mac or Linux user, once you’ve added it to Chrome, you can simply "Inspect Element" or Ctrl + Shift + I to open up the DevTools and you’ll be able to access it via the new “Terminal” tab.
Windows users will need to connect the extension to the system terminal using a Node.js proxy. To get this setup, install the devtools-terminal
module from npm:
npm install -g devtools-terminal
Then open up a new command-line window and run devtools-terminal
. Next, open up the DevTools and in the "Terminal" tab, connect to the server using the default configuration options. You’ll be able to customize the port and address further if needed.
DevTools Terminal does have a few limitations worth noting. Unlike Terminal.app or iTerm2 on the Mac, it doesn’t yet support tabs, multiple windows or history playback. You can however open as many new tabs of Chrome as you like, each of which can have their own DevTools Terminal instance. This can be done from the Chrome Apps screen:
This extension currently relies on NPAPI, which is being phased out over the next year in favor of the Native Messaging API. DevTools Terminal author Dmitry Fillimonov plans to move away from NPAPI in favor of either this API or the Native Client API in the near future.
DevTools Terminal (and extensions similar to it, like Auxilio) can help you avoid switching back and forth between your editor, the browser and command-line during development.
Whilst an in-browser terminal may not be everyone’s cup of tea, you may find the extension a useful complement to your workflow and we encourage you to try it out and see how you like it!.
{% endblock %}


|
BL3 SDK
0.0.1
Borderlands 3 Class Documentation
|
#include <BL3_Engine_structs.hpp>
Public Attributes | |
| struct FVector | Location |
| unsigned char | UnknownData00 [0x4] |
| class AActor * | LocationActor |
| float | Radius |
| float | Strength |
| bool | bIsPush |
| bool | bNoZForce |
| unsigned char | UnknownData01 [0x6] |
| class UCurveFloat * | StrengthDistanceFalloff |
| class UCurveFloat * | StrengthOverTime |
| bool | bUseFixedWorldDirection |
| unsigned char | UnknownData02 [0x3] |
| struct FRotator | FixedWorldDirection |
| Public Attributes inherited from FRootMotionSource | |
| unsigned char | UnknownData00 [0x10] |
| uint16_t | Priority |
| uint16_t | LocalID |
| ERootMotionAccumulateMode | AccumulateMode |
| unsigned char | UnknownData01 [0x3] |
| struct FName | InstanceName |
| float | StartTime |
| float | CurrentTime |
| float | PreviousTime |
| float | Duration |
| struct FRootMotionSourceStatus | Status |
| struct FRootMotionSourceSettings | Settings |
| bool | bInLocalSpace |
| unsigned char | UnknownData02 [0xD] |
| struct FRootMotionMovementParams | RootMotionParams |
| struct FRootMotionFinishVelocitySettings | FinishVelocityParams |
| unsigned char | UnknownData03 [0xC] |
| bool bIsPush |
| bool bNoZForce |
| bool bUseFixedWorldDirection |
| struct FRotator FixedWorldDirection |
| struct FVector Location |
| class AActor* LocationActor |
| float Radius |
| float Strength |
| class UCurveFloat* StrengthDistanceFalloff |
| class UCurveFloat* StrengthOverTime |
| unsigned char UnknownData00[0x4] |
| unsigned char UnknownData01[0x6] |
| unsigned char UnknownData02[0x3] |


#include <binarystring.hxx>
Related Functions |
(Note that these are not member functions.)
|
| std::string | escape_binary (const std::string &bin) |
| | Escape binary string for inclusion in SQL.
|
| std::string | escape_binary (const char bin[]) |
| | Escape binary string for inclusion in SQL.
|
| std::string | escape_binary (const char bin[], size_t len) |
| | Escape binary string for inclusion in SQL.
|
| std::string | escape_binary (const unsigned char bin[]) |
| | Escape binary string for inclusion in SQL.
|
| std::string | escape_binary (const unsigned char bin[], size_t len) |
| | Escape binary string for inclusion in SQL.
|
Additional Inherited Members |
| typedef unsigned char | content_type |
| | PQAlloc () throw () |
| | PQAlloc (const PQAlloc &rhs) throw () |
| | PQAlloc (unsigned char *obj) throw () |
| | Assume ownership of a pointer.
|
| | ~PQAlloc () throw () |
| PQAlloc & | operator= (const PQAlloc &rhs) throw () |
| void | swap (PQAlloc &rhs) throw () |
| | operator bool () const throw () |
| | Is this pointer non-null?
|
| bool | operator! () const throw () |
| | Is this pointer null?
|
| unsigned char * | operator-> () const throw (std::logic_error) |
| | Dereference pointer.
|
| unsigned char & | operator* () const throw (std::logic_error) |
| | Dereference pointer.
|
| unsigned char * | get () const throw () |
| | Obtain underlying pointer.
|
| void | reset () throw () |
Member Typedef Documentation
Constructor & Destructor Documentation
| pqxx::binarystring::binarystring |
( |
const field & |
F | ) |
|
|
explicit |
| pqxx::binarystring::binarystring |
( |
const std::string & |
s | ) |
|
|
explicit |
| pqxx::binarystring::binarystring |
( |
const void * |
binary_data, |
|
|
size_t |
len |
|
) |
| |
Member Function Documentation
| const value_type* pqxx::binarystring::data |
( |
| ) |
const throw () |
| bool pqxx::binarystring::empty |
( |
| ) |
const throw () |
| const char* pqxx::binarystring::get |
( |
| ) |
const throw () |
Raw character buffer (no terminating zero is added)
- Warning
- No terminating zero is added! If the binary data did not end in a null character, you will not find one here.
| size_type pqxx::binarystring::length |
( |
| ) |
const throw () |
Size of converted string in bytes.
| bool pqxx::binarystring::operator== |
( |
const binarystring & |
rhs | ) |
const throw () |
| size_type pqxx::binarystring::size |
( |
| ) |
const throw () |
| string pqxx::binarystring::str |
( |
| ) |
const |
Read as regular C++ string (may include null characters)
- Warning
- libpqxx releases before 3.1 stored the string and returned a reference to it. This is no longer the case! It now creates and returns a new string object. Avoid repeated use of this function; retrieve your string once and keep it in a local variable. Also, do not expect to be able to compare the string's address to that of an earlier invocation.
Swap contents with other binarystring.
The documentation for this class was generated from the following files:


Abiodun Obafemi.
Welcome to my portfolio!
My name is Abiodun Obafemi and I’m a student at Kean University. I just finished my freshman year, and I'm now heading into my sophomore year. I was born in New Jersey, but I'm Nigerian. I’m currently pursuing my Bachelor’s degree in computer science. I would say I’m still a beginner to all of this but I do have coding experience in Java, Python, and HTML. As a kid, I always played video games and thought it was cool how they were designed, which made me want to one day create my own. I want to one day work as a software developer and develop games, apps, websites, etc.
Clickhello to see greetings in different languages.


I am Vicken, I am studying Web Development with Dev Academy in Wellington. I like the front end development, It brings me lots of fun and challenges.Here you will get to know me more...


In this example a layer model is defined. A layer model is defined by objects containing the properties of the layers.
The base layers are defined in the baselayers object and the overlays object inside the layers definition:
layers: { baselayers: { mapOne: {... map properties ...}, mapTwo: {... map properties ...}, ... mapN: {... map properties ...} }, overlays: { overlayOne: {... overlay properties ...}, overlayTwo: {... overlay properties ...}, ... overlayM: {... overlay properties ...} } }
An overlay layer can be any type of layer, so a base layer can be an overlay. Other common overlays can be layer groups, for example, when a certain groups of markers are grouped.
For overlays that are baselayers (XYZ, WMS, etc) the baselayers rules for the model apply, for other types (Group, Features, Clusters, etc), the following rules apply:
name
: The display name in the layer controltype
: The type of layer. The accepted values are:
'group'
and 'cluster'
visible
: The overlay will be initially displayed on the mapThe code below is the definition of overlays in this example.
Layer hillshade is a wms layer. Layer OpenFireMap is a xyz layer.
overlays: { hillshade: { name: 'Hillshade Europa', type: 'wms', url: 'http://<IP_ADDRESS>/cached/hillshade', visible: true, layerOptions: { layers: 'europe_wms:hs_srtm_europa', format: 'image/png', opacity: 0.25, attribution: 'Hillshade layer by GIScience http://www.osm-wms.de', crs: L.CRS.EPSG900913 } }, fire: { name: 'OpenFireMap', type: 'xyz', url: 'http://openfiremap.org/hytiles/{z}/{x}/{y}.png', layerOptions: { attribution: '© OpenFireMap contributors - © OpenStreetMap contributors', continuousWorld: true } } }


start_datetime = Timestamp(
readonly=True, doc="str or datetime: Starting time for upload process."
)
end_datetime = Timestamp(
readonly=True, doc="str or datetime: Ending time for upload process."
)
job_id = Attribute(
readonly=True,
doc="str: Unique identifier for the internal asynchronous upload process.",
)
_doc_type = "image_upload"
_url = "/uploads_v2"
INCLUDE_EVENTS = "events"
_default_includes = [INCLUDE_EVENTS]
_no_inherit = True
id = Attribute(
mutable=False,


Taiwan firms ready for production of LCP-based flexible antenna boards
by Jay Liu, Taipei; Steve Shen, DIGITIMESMajor Taiwan-based flexible PCB specialists have had their respective production lines for LCP (liquid crystal polymer) antenna boards ready for commercial runs as they are eyeing the emerging business opportunities that is coming along with the 5G establishment, according to industry sources.
Demand for LCP-based flexible PCBs from the 5G phone sector is expected to pick up in 2020 as LCP boards meet high speed, low signal loss transmission requirements of 5G networks, said the sources.
In addition to antennas for 5G phones, LCP boards can also be used for the manufacture of antenna products for notebooks, tablets, wearables and other IoT devices, indicated the sources.
Most flexible PCB makers, including Zhen Ding Technology, Flexium Interconnect and Career Technology, all have stressed that promoting LCP boards will be the focus of their sales campaigns in 2020.
However, Ming-Chi Kuo, an analyst at TF International Securities, has said that he believes Apple will use LCP-based flexible boards if it decides to roll out 5G iPhones supporting mmWave technology.
Most flexible PCB makers declined to comment on Kuo's opinion, saying that it is up to end-market device clients to choose the technology for their products, and as upstream suppliers they must be prepared for emerging trends.


Pcapr.Local is a gem that can automatically parse any packet capture and create a .par file suitable for generating a Scenario in Mu Studio. It's designed to help you create Scenarios for proprietary protocols that need custom Wireshark dissectors (pcapr.Local uses the locally-installed Wireshark application when indexing a .pcap).
This document provides details for the following:
- Requirements
- Installing & Configuring
- Using (viewing indexed pcaps and downloading PAR files)
- Tips & Tricks
After installing and configuring Pcapr.Local, you can copy or move your pcap files to the designated pcaps directory and Pcapr.Local will automatically index those files. Then, using a web browser, you can view the list of pcaps and their indexes, generate reports, or download the index as a PAR file that you can use in Mu Studio to create a Scenario.
Requirements
To run pcapr.Local, you must install it on a system that also includes the following:
- Linux (any flavor). You can install on a dedicated Linux system or in a virtual machine (VM).
- Ruby (1.8.6, 1.8.7, 1.9.2) + Rubygems (1.3.7 or higher). When using Ruby 1.8.6, you must install rubygems 1.3.7. Rubygems officially ceased support for ruby 1.8.6 as of the rubygems 1.4.0 release, so any version 1.4.x or higher will not install on a ruby 1.8.6 system.
- CouchDB. Local and remote installations supported. If you have configured a username and password for the CouchDB service, you'll need to provide those user credentials during the pcapr.Local gem installation.
- Wireshark (any version). Pcapr.Local will automatically use the installed version of tshark (a component of Wireshark) to create the pcap indexes. When using a package manager (such as aptitude on Ubuntu), you might need to install tshark separately if it's not included as part of the Wireshark installation.
- Zip (any version). Pcapr.Local requires zip to create PAR files from your indexed pcaps.
- pcapr-local.gem. If the Linux system has Internet connectivity, you can use the gem command (supported by rubygems) to quickly download and install the Pcapr.Local gem. Otherwise, you'll need to manually download the gem, copy it to the Linux system, and install it.
Installing & Configuring
After ensuring that your Linux system has all the necessary pre-requisites for running Pcapr.Local, you can download the pcapr-local gem and configure it for your system.
You can install and run pcapr.Local as a root user or as a regular (non-root) user. If the Linux system has Internet connectivity, you can use the gem command (supported by rubygems) to quickly download and install the Pcapr.Local gem. Otherwise, you'll need to manually download the gem and copy it to the Linux system before installing.
After installing the gem, configure the gem by answering a few questions about where you want to store pcaps and indexes, the IP and port on which you want to access pcapr.Local, and the location of your CouchDB service (your answers are saved as a configuration file at: ~/.pcapr_local/config). When configuration is complete, the pcapr server process continues running in the background, performing tasks such as checking for new pcaps and creating indexes.
To view activities during configuration, tail the pcapr.Local log file with the command: tail -F ~/pcapr.Local/log/server.log
To Install Pcapr.Local:
To install over the Internet:
- Login to the Linux system on which you want to install pcapr.Local.
- Install the pcapr-local gem using the gem command:
gem install pcapr-local
To install manually:
- Download the pcapr.Local gem from http://rubygems.org/gems/pcapr-local.
- Copy the gem to the Linux system on which you want to install the gem.
- Login to the Linux system.
- Change to the directory that contains the gem, then install it using the gem command:
gem install pcapr-local.gem
To Configure Pcapr.Local:
- Run the configuration tool using the startpcapr command:
startpcapr
This command starts the configuration process in which you'll be asked several questions.
- Answer the following seven (7) questions when prompted:
| Question | Answer |
|---|---|
A. Where should pcapr.Local store user files? |
[/root/pcapr.Local] Press Enter to accept this default. This sets the directory for storing all pcapr-related files. |
B. Which directory would you like to scan for indexable pcaps? |
[/root/pcapr.Local/pcaps] Press Enter to accept this default. This sets the directory for storing packet captures. Any .pcap file you place in this directory will be automatically indexed by pcapr.Local. |
C. Where would you like to store index files? |
[/root/pcapr.Local/indexes] Press Enter to accept this default. This sets the directory for storing .pcap indexes. Indexes are automatically created for every .pcap file in the pcapr.Local/pcaps directory (or whatever directory you specified as the pcap repository in question A). |
D. What IP address should pcapr.Local run on? |
[<IP_ADDRESS>] Press Enter to accept this default. This sets the IP address at which you can access pcapr.Local. For example, if you want to access pcapr.Local at IP address <IP_ADDRESS> , you should enter that address here. |
E. What port should pcapr.Local listen on? |
[8080] Press Enter to accept this default. This sets the port at which you can access pcapr.Local. For example, if you want to access pcapr.Local at <IP_ADDRESS>:8888, you should enter 8888 here. |
F. Pick a name for your CouchDB database (database will be created automatically). |
[pcapr_local_root] Press Enter to accept this default. This creates a CouchDB database for pcaps and their indexes. |
G. pcapr.Local requires CouchDB to run. Where is your CouchDB server? |
[http://<IP_ADDRESS>:5984] If you have not yet configured a username and password for the CouchDB service, press Enter to accept this default. However, if you have configured a username and password for the CouchDB service, you must provide those user credentials. Type the following and then press Enter: http://user:password@<IP_ADDRESS>:5984 |
- After answering all questions, the following message confirms a successful installation:
Thank you. Configuration is saved at /root/.pcapr_local/config. |
Where ip:port are values given in questions D and E. Where pcapr-directory is the value given in question A. |
You are now ready to copy your .pcap files into the pcap directory, where pcapr.Local will automatically index them and create PAR files that you can use in Mu Studio to generate Scenarios.
Using Pcapr.Local
After installing and configuring pcapr.Local, you can copy your .pcap files into the pcap directory, where pcapr.Local will automatically index them and create a .par file (a Pcap ARchive, or PAR) that you can use in Mu Studio to generate Scenarios. (A PAR file contains dissection data from your local Wireshark installation, enabling you to use custom dissectors for proprietary protocols.)
When you've moved some pcaps into the pcaps directory, you are ready to use the Pcapr.Local UI to view the indexes for those pcaps. The UI has three components:
- Browse. Displays a list of indexed pcaps, with their associated services and more recent index statistics. Select a pcap to view its details and/or download a PAR file for creating a Scenario.
- Folders. Displays a list of subdirectories in the pcap directory. By default, this list is empty but you can create new directories using the command line (mkdir directory-name). However, you'll need to put at least one pcap into a subdirectory before that directory will appear in the Folders tab.
- Services. Displays a tag cloud of services found in all indexed pcaps.
Keep in mind that any changes made at the command line will take about a minute to appear in the UI.
To View Indexes & Get PAR files:
- Add packet captures into the pcaps directory (/root/pcapr.Local/pcaps by default). For example, to move all .pcap files from a local directory to the pcaps folder on the Linux system, type:
scp *.pcap root@linux-ip:pcapr.Local/pcaps
- Wait about about a minute. Pcapr.Local checks the pcap directory every 60 seconds, indexing any new pcaps automatically.
- Using your web browser, view the indexed pcaps at http://ip:port/home/index.html (where ip:port is IP address and port on the Linux system you configured during pcapr.Local configuration).
- Select the .pcap for which you want to view details:
- Click PAR file to download the .par file for that .pcap.
- In Mu Studio, import the .par file to create a Scenario. Because the packet capture has already been dissected, the generation process skips flow selection and automatically displays the Scenario Editor.
Tips & Tricks
The following section includes tips and tricks for using pcapr.Local.
Pcapr.Local Doesn't See Pcaps
If you added pcaps to the pcap directory but they don't appear in the list of indexed pcaps, try the following:
- Wait about about a minute then check again. Pcapr.Local checks the pcap directory every 60 seconds, indexing any new pcaps automatically.
- Check the config file (~/.pcapr_local/config) to confirm that you are putting your pcaps in the correct directory.
Cannot Download a PAR File
If you get an error when attempting to download the PAR file for a pcap, you probably don't have Zip installed on your Linux system. Try installing Zip (on Ubuntu, type apt-get install zip) then try to download the PAR file again (you don't need to re-index the pcap).
Starting & Stopping Pcapr.Local
- To stop the pcapr.Local server, use the command stoppcapr
- To start/restart the pcapr.Local server, use the command startpcapr
Organizing Pcaps
When managing large numbers of pcaps, use the command line to create subdirectories in the pcaps directory (mkdir directory-name), then place pcaps files in these subdirectories. Pcapr.Local will automatically index any .pcap file in the main pcaps directory and any included subdirectories.
In the pcapr.Local UI, select the Folders tab to view a list of subdirectories in the pcap directory. However, you'll need to put at least one pcap into a subdirectory before that directory will appear in the Folders tab (and you might need to wait up to 60 seconds).
Getting PAR files From the Command Line
You can create PAR files at the command line instead of using the pcapr.Local UI.
- Login to the Linux system running pcapr.Local.
- Change to the pcaps directory.
- Specify the name of the pcap using the pcap2par command:
pcap2par filename.pcap
This command creates a PAR file called export.par in the current directory.
To specify the location and name of the .par file, use a path argument with the pcap2par command. For example:
pcap2par my-test-traffic.pcap ~/par_files/my-test-traffic.par
This command creates a .par file named "my-test-traffic.par" in the "par_files" directory.


Narrative
As a MongoDB admin
I want to be able to backup and replay Create, Update and Delete
Operations from backup file to standalone MongoDB
So that I can bring it in sync with the source MongoDB from where it was backed up.
|
Given source replica set and target node are running
|
| with configuration |
source {sourceNode} on port {sourcePort} , target {targetNode} on port {targetPort} |
1. Do Some CUD Operations
| run mongo command on |
source |
| use database |
things |
| run |
db.createCollection("items") |
| run |
db.items.insert({name:"One"}) |
| run |
db.items.save({name:"Two"}) |
| run |
db.items.save({name:"Three"}) |
| run |
db.items.remove({name:"One"}) |
| run |
db.items.update({name:"Three"}, {$set : {name:"Four"}}) |
2. Run Backup Utility
| Open terminal |
| and run |
backup -s {sourceNode} --port={sourcePort} -f {file} |
| and show |
stdout |
| and ensure |
stdout |
contains |
Process started |
3. Run Restore Utility
| Open terminal |
| and run |
restore -d {targetNode} --port={targetPort} -f {file} |
| and show |
stdout |
| and show |
stderr |
| and ensure |
stdout |
contains |
Process started |
4. Ensure Expected Results
Checking documents of database things
|
Ensuring target is consistent with source
|
| run in database |
things |
query |
db.items.count() |
and cleanup databases |
false |
| source value | destination value |
| 2 | 2 |
|
Ensuring target is consistent with source
|
| find documents for collection |
items |
in database |
things |
where |
null |
and cleanup databases |
true |
| source value | destination value |
{ "name" : "Two"} | { "name" : "Two"} |
{ "name" : "Four"} | { "name" : "Four"} |