Thursday, 21 October 2010

Using CoreMIDI in iOS (an example)

In iOS 4.2 the CoreMIDI framework is dropping into the standard operating system. MIDI connectivity using generic class-compliant USB MIDI hardware will be available to all.

It's not a big framework, with a handful of pure-C APIs. But its affect will be profound. What was previously only possible using Akai's AkaiConnect SDK (which is a very nice Objective-C API) or Line 6's MIDI Mobilizer SDK will be available to all.

From what I can see, the iOS CoreMIDI version is going to be the exact same API as the Mac OS desktop variant. I expect developer take-up of this API to be far faster than for the existing two (non-standard) iOS MIDI interface APIs. Pretty soon every iPhone synth app will support Apple's generic MIDI API.

That is, if they can work out how to.

CoreMIDI isn't the best documented API (this is all you get: a list of typedefs and functions). Fortunately, the headers are well-commented and the API is mercifully simple and sensible. However, with no compelling examples (that I could find) it takes a little digging to work out how to use CoreMIDI.

So here I present a very simple example project, with a reusable Objective-C MIDI interface class. With this code, you can get up to speed with CoreMIDI quickly. Indeed, if you just paste my MidiInput class into your synth app you'd be good to go.

Grab it from the GitHub project here. (Update note: the repo master used to be hosted on Gitorious here but we've moved to GitHub in these enlightened times)

Please let me know if you find it useful, or if you use it in your own projects.


Integrating CoreMIDI in your application

First, you need to decide if you want your app to support devices running iOS versions before 4.2. Since CoreMIDI is only introduced in 4.2, you have to jump through a few hoops to keep your app running on earlier versions:
  • Weakly link to the CoreMIDI framework, so on OS versions without it your application will still launch. (You do this by going to your application's target in the Xcode tree view, selecting "Get info", and in the "General" tab's "Linked libraries" section ensuring that CoreMIDI is set to "Weak" not "Required".)
  • Including CoreMIDI functionality conditionally. The best way to do this is inspect the kCFCoreFoundationVersionNumber variable and only initialise your MIDI handling if the value represents iOS 4.2 or later. (See the iOS version detection header file in my example project for an elegant way to do this).

A demonstration of all of this is available in my example project.


Using CoreMIDI

CoreMIDI itself isn't too complex if you're happy to read the headers and work out what's going on. You need a basic grasp of how Mac OS's Core Foundation works, to understand lifetime management issues and to access string properties, etc.

CoreMIDI has a few basic concepts: most importantly clients, devices (with endpoints) and ports. The C APIs let you enumerate these, and register a notification to keep abreast of changes in MIDI connection state.

MIDI inputs are "sources" in CoreMIDI. MIDI outputs are "destinations".

Given those basic facts, you should be able to read through my MidiInput class and figure out what's going on.


Parsing MIDI

My example program just spits out a stream of binary MIDI data. I'm not showing any parsing of the MIDI data stream here. This parsing isn't rocket science, but is another step you have to perform.

Contact me if you want to know more about parsing MIDI.


196 comments:

CJ said...

Cool! You seem to be on a roll of coincidentally writing about topics that I am googling for.

And I want to up vote a request for a follow up article on parsing and generating midi data :)

Anonymous said...

Pete!!! Thank you for opening a cornucopia of mislead knowledge!!! You are the man!!! Thank you!!!Thank You!! Thank you! This example helped me beyond belief! Now the sending part...haha!

Anonymous said...

Wow, that works spectacularly well!
Trying it in my own app results in an error at the:
packet = MIDIPacketNext (packet) ;
line... Expected ')' before '&' token.
This kind of error is usually not literal...I'll keep investigating why your version of the same code compiles fine.
Thanks a lot!

Alex said...

I'm having exactly the same error at MIDIPacketNext. Adapting my target build settings to those of MidiMonitor didn't help. If anyone solves this, please let us know.

Pete Goodliffe said...

This problem is that your view controller source files are objective C (*.m) NOT objective C++ (*.mm).

Just rename the file suffix and you'll find that your project builds fine.

Omenie - home of the Ellatron said...

Massive thanks for this proof of concept code - hugely invaluable, thanks - and check out Ellatron over CoreMIDI - http://www.flickr.com/photos/34243728@N04/5167628769/ - and thanks again!

Pete Goodliffe said...

Cool, I'm glad you found it useful.

I enjoyed playing with Ellatron HD some time ago. Glad to be of assistance!

david_dre said...

Nice proof of concept.

Does anybody know, if it is possible to send MIDI data straight to the Mac?

I want to plug my iPad to my Mac (USB-Dock Connector Cable) and send MIDI signals to Ableton (for example).
Can i do this with the dock-connector cable?

With the current MIDI monitor source, OSX doesn´t seem to recognize my iPad as a MIDI Device.

Pete Goodliffe said...

No, this is not currently possible. iOS doesn't work like that.

When you plug in the camera connection kit, the iPad acts as a USB master. When you plug the 30-pin cable to your Mac, it's being a USB slave.

david_dre said...

OK... thx.

So the only way to get MIDI to the Mac without such hardwareboxes like iConnectMIDI is to connect through WIFI an config a new session in the mac audio-midi settings. Is that right?

Pete Goodliffe said...

Yes, as far as I am aware.

david_dre said...

Ok... i will try to create a sample app like yours with a wifi connection. Hopefully the result is such a drop-in-and-go solution like yours. A nice project would be a wrapper around Apples coreMIDI for simple sending and receiving of MIDI data.

mickeyl said...

This is awesome, Pete -- thanks a lot! Works fine with my Novation Remote SL 37. Unfortunately it doesn't work on the simulator yet, but only on the device -- which is strange, since the keyboard itself works fine with Logic on the Mac. Thanks again!

0x4d52 said...

Thanks Peter, really helped me out.

Just some thoughts which might help others out...

Would the MidiInput class be more appropriate as a singleton? (i.e., shared instance)

Also there's a problem in
-(void) midiInput:(MidiInput*)input midiReceived:(const MIDIPacketList *)packetList;

...in the example. The high priority thread calling this clearly doesn't have an NSAutoReleasePool so you need to be careful using certain Obj-C calls in there (e.g., @"MIDI received:") or create and release a pool in the function (perhaps a bad idea in the long run).

Finally setting up a Wifi session is as simple as putting this in MidiInput -(id)init

MIDINetworkSession* session = [MIDINetworkSession defaultSession];
session.enabled = YES;
session.connectionPolicy = MIDINetworkConnectionPolicy_Anyone;

You need also to...
#import

0x4d52 said...

final comment should have ended:

#import &ltCoreMIDI/MIDINetworkSession.h>

:)

0x4d52 said...

final attempt!

#import <CoreMIDI/MIDINetworkSession.h>

Daniel Rosenstark said...
This comment has been removed by the author.
Daniel Rosenstark said...

0x4d52's comments are great to allow connections. Here's how to connect forward:

MIDINetworkSession* session = [MIDINetworkSession defaultSession];
MIDINetworkHost *host = [MIDINetworkHost hostWithName:@"bonjourName" address:@"192.168.50.1" port:5004];
MIDINetworkConnection *connection = [MIDINetworkConnection connectionWithHost:host];
BOOL result = [session addConnection:connection];
NSLog(@"what happened %d", result);

Anonymous said...

from MIDINetworkSession we have access to both source and destination endpoints, but since we didn't create them, how do we set up a listening function such as with MIDIDestinationCreate(...readProc...)?

Randy said...

I have several Iphone apps that implement what appears to be MIDI sequencing technology and routing to a software synthesizer of some sort. Since there is currently no native support for MIDI or software synths in IOS, does anyone have any idea what kind of strategies are being used to "fake" it? Some apps emulate MIDI-type sequencing amazingly well.

jamesdlow said...

I found this really useful for understanding midi data:
http://www.midi.org/techspecs/midimessages.php

Now what I can't seem to do is get network data working. Basically I want to be able to use my app as a mini input device to my computer over network. Ala:
http://fox-gieg.com/tutorials/2007/midi-over-a-network/

I've added this to the init:
MIDINetworkSession* session = [MIDINetworkSession defaultSession];
session.enabled = YES;
session.connectionPolicy = MIDINetworkConnectionPolicy_Anyone;

But it doesn't seem to show up in the list of devices. Any ideas?

jamesdlow said...

Ah solved my own problem the code needs to be at the start of the init

- (id) init
{
if ((self = [super init]))
{
MIDINetworkSession* session = [MIDINetworkSession defaultSession];
session.enabled = YES;
session.connectionPolicy = MIDINetworkConnectionPolicy_Anyone;
...

jamesdlow said...

Oh and this link is good to for understanding midi:
http://www.planetoftunes.com/sequence/messages.html

Anonymous said...

thank you very much for this, I've been trying to get this midi business to work for an age, this has really cleared things up for me :)

herwr said...

Great example brother.

Do you know if it's possible to get Network MIDi working in the iOS Simulator??

Wyldcatz said...

I can't seem to find the download link on your project page?

pierre said...

Thanks Pete, it was really useful.
By the way, I've first tested the code with an hardware controller connected and it worked well.
The only problem was the impossibility then to have any log, so I decided to go for the wireless solution. The original code wouldn't work, and I couldn't see any reason for that since you've taken care of enabling network connection. I finally understood that because you init the PGMidi object before setting the delegate, no delegate methods would be called for the network connection. I've found the following workaround:

PGMidi* tempMidi = [PGMidi alloc];
tempMidi.delegate = self; // or any other delegate object
midi = [tempMidi init];
[midi enableNetwork:YES];

Doing this, the delegate methods are called for every devices, including the network one.

Pete Goodliffe said...

Pierre, that's a bit of a clumsy trick :-) You're not guaranteed that the delegate property wouldn't be clobbered by the call to init (although, you can see the code, and be assured it won't in this particular case).

The correct approach would be to create the PGMidi object, attach a delegate, and then enumerate the CURRENT devices before any subsequent delegate events are sent.

You could iterate through all existing devices and call your delegate interface manually, if that's what you need.

Wyldcatz said...
This comment has been removed by the author.
Max said...
This comment has been removed by the author.
Max said...

Hi Pete and thank you for your code.
I can't receive midi... am i missing something? i can send very well data, but i cant receive.
thank you

pierre said...

"You could iterate through all existing devices and call your delegate interface manually, if that's what you need."

Actually I've only spend a couple hours figuring out how I could integrate Midi into my own C++ code, so I went directly to the quick & dirty solution.

Thanks your answer anyway, I'll now go for the clean and pretty integration ;-)

Anonymous said...

Pete, first of all, thank you for doing this! Max, I'm having the same problem. I'm using a keyboard with a midi cable, and the camera connection kit to the iPad. The sample app can send data to my piano just fine, but I can't seem to receive any data from the keyboard. Other apps such as the midi monitor by domestic cat works just fine, so I know the cables and the camera connection kit is working. I wonder why?!? :| This sample is so useful, if it can just receive data too.

Maurizio De Cecco said...

Hallo,

and many thanks for your Core MIDI example. The text you wrote in the page ("let me know if you are using the code in your project") make me think that it is ok for you if we use your code in our applications. But the code itself is published with the standard xcode header that says "All right reserved". As such, we are not really allowed to reuse it, Have you considered some kind of open source licence, or equivalent phrase added to the code to state that the example can be reused ?

I intend to write a MIDI message parsed plugged on your code, i am willing to contribute it in some way once it works.

cnco said...

I'm having the same problem as a couple of folks above - sending works fine, but not receiving. The midiRead: method in PGMidi.mm is being called, but the delegate method it's supposed to call doesn't get called.

Thanks for the demo. It's a big help.

Anonymous said...

Hello

Thanks very much for the code.

For the receiving events I found the problem. The delegate is 0 when the sourceConnection is made. I did this:
New init method with an argument for the delegate:

- (id) initWithDelegate:(id) delegateObject
{
if ((self = [super init]))
{
self.delegate = delegateObject;

midi = [[PGMidi alloc] initWithDelegate:controller];

Take care

Ron

Anonymous said...

It is very very helpful to me. :)
I read post and comments to solve my problem.
Thank you!

Nono said...

Hello Pete (and the folks in here). Sorry if this sounds stupid. How do I just grab the file(s) without setting up GIT? The link to MidiInput.h fails. Thanks in advance.

Pete Goodliffe said...

You can grab it easily enough.

Go to the Gitorious project. Click the "source tree button". In the sidebar, use the "Download master as tar.gz". Voila.

Nono said...

Thank you! Just grabbed them. :-)

Pete Goodliffe said...

Please note that I have updated this post as the location of the PGMidi repo has changed (by popular request) to GitHub: https://github.com/petegoodliffe/PGMidi.

Jay Payte said...

Hi,
How can I ignore incoming virtual MIDI connections from my own app? I've tried to set the session name etc. any suggestions?

m4yu said...

Pete, thanks for your great PGMidi, im using your code in my current project - iFretless bass. The only problem that I can not see Sample tank virtual port in the destinations list? Can you explain me why?

joelp said...

So is there a CorMIDI version of Ellatron HD out there ANYWHERE? Very badly want this app for my live rig, any info helpful (joep@joelp.com)

Anonymous said...

what special things are there to do to support devices like iRig being plugged in/unplugged.

do you have to call attachToAllExistingSources, is there an event that gets fired? I don't have an iRig so cant test, but turning my wifi on/off seems to be handled ok out of the box.

Anonymous said...

never mind above, just noticed:

- (void) midi:(PGMidi*)midi sourceAdded:(PGMidiSource *)source
{
source.delegate = self;
}

Hans Anderson said...

IK Multimedia's sampleTank doesn't show up in the list of MIDI destinations. Do you know how to send MIDI events to it? MIDIBridge has a way to do it but I can't guess what method the developer uses.

Anonymous said...

PGMidi doesn't handle virtual midi ports very well at the moment. I've found https://groups.google.com/forum/#!searchin/open-music-app-collaboration/virtual$20mididestinationcreate/open-music-app-collaboration/LgMyw0tDVEQ/PrBakmbIqMoJ to be a helpful resource.

Darren said...

Very cool example! What to do if it doesn't work? No way to connect hardware and debugger at the same time. Is there a "verbose" mode so that more app events are written to the iOS display? If not, suggestions for easiest way to implement? My device appears and then app appears to freeze, no further interaction possible.

Pete Goodliffe said...

No, there's no easy way to debug over wifi like this. However, you can redirect your app's internal logging output to a file for later harvest. You can even redirect NSLog itself, if that helps you. Or make a custom UITextView that displays your logging. (I have done all of these at some point)

Anthony Hoang said...

Pete, the link you provided to your MIDI class doesn't work. Could you please provide another link?

Tips Tricks Ideas said...

You made numerous nice ideas there. I done a search on the issue and learnt nearly all peoples will agree with your blog.
iPhone Tricks

Anonymous said...

Hi, I do not know much english (use online translator)
may help me
core midi freamwork - Library
I connect button on ipad with a synthesizer?
how razedent streams?
how it all should look?

Anonymous said...

Just downloaded and tried to compile project in Xcode 5.0.1 and iOS 7.0 :-(

9 Issues... :-(

Attribute Unavailable - Full Screen at Launch on iOS versions prior to 3.2

Lexical or Preprocessor Issue - Variadic macros ate a C99 feature

Parse Issue - Compound literals are a C99 specific feature

Semantic Issue - Variable length arrays are a C99 feature

Apple Mach-O Linker Error - Linker command failed with exit code 1

:-(

Mike Gao said...

I am getting dropped simultaneous notes only if I am for example, playing a simultaneous chord coming out of my DAW.
If I am playing chords on a keyboard going into the app, there is no problem.
It doesnt seem to be a thread issue (I use performselectoronmainthread for GUI stuff) and I am NSLogging the incoming notes which dont come in / seems to be dropped.

0x121412 said...

My two cents in this great blog: if you want to understand deeper how MIDI Networking (aka AppleMIDI or RTP-MIDI) works with iOS and OSX, take a look here : http://en.wikipedia.org/wiki/RTP_MIDI

Jimmy said...

Hey Mike. Make sure you are processing all midi events in each packet. You can get more than one midi event in one packet. If the size of a packet is like, 6 bytes, you prob have more than one event.

Anu said...


Being new to the blogging world I feel like there is still so much to learn. Your tips helped to clarify a few things for me as well as giving..
iOS Training in Chennai
Android Training in Chennai
php Training in Chennai

Banu said...

Being new to the blogging world I feel like there is still so much to learn. Your tips helped to clarify a few things for me as well as giving..

Mobile App Development Company in Chennai
Android app Development Company in Chennai
ios app development Company in Chennai

Banu said...

Nice it seems to be good post... It will get readers engagement on the article since readers engagement plays an vital role in every blog.. i am expecting more updated posts from your hands.
Mobile App Development Company in Chennai
Android app Development Company in Chennai
ios app development Company in Chennai

sunitha vishnu said...

It's interesting that many of the bloggers your tips helped to clarify a few things for me as well as giving.. very specific nice content. And tell people specific ways to live their lives.Sometimes you just have to yell at people and give them a good shake to get your point across.
Mobile App Development Company
Android app Development Company
ios app development Company
Mobile App Development Companies

Ananthi A said...
This comment has been removed by the author.
Kavi said...

These ways are very simple and very much useful, as a beginner level these helped me a lot thanks fore sharing these kinds of useful and knowledgeable information.
Mobile App Development Company
Mobile App Development Company
Mobile app Development Companies

Karthika Shree said...

This is a great article, I have been always to read something with specific tips! I will have to work on the time for scheduling my learning.
IOS Training in Chennai

john stany said...

I wondered upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.

Android App Development Company

Sharon Sandy said...

great and nice blog thanks sharing..I just want to say that all the information you have given here is awesome...Thank you very much for this one.
Web Design Development Company
Web design Company in Chennai
Web development Company in Chennai

isabella jacob said...

it is really amazing...thanks for sharing....provide more useful information...
Mobile app development company

Ramya Krishnan said...

Fantastic article, you write in great and easily manner to understand, thanks for your valuable info. keep on sharing informative article.
IOS Training in chennai|Android Training in chennai

Brn Infotech said...

Nice blog..! I really loved reading through this article... Thanks for sharing such an amazing post with us and keep blogging...
ios app development course

Freshers Jobs News said...

Thank you for taking the time to provide us with your valuable information.
Freshers Jobs in Chennai

Priya B said...

Great and nice blog thanks sharing..I just want to say that all the information you have given here is awesome...
Java Training in Velachery
Software Training institute in Velachery

john stany said...

This article is very much helpful and i hope this will be an useful information for the needed one.Keep on updating these kinds of informative things...
iOS App Development Company

Freddie King said...

Thank you for taking the time and sharing this information with us. It was indeed very helpful and insightful while being straight forward and to the point.
http://www.mcdonaldsgutscheine.net | http://www.startlr.com | http://www.saludlimpia.com

Unknown said...


Good and nice blog post, thanks for sharing your information.. it is very useful to me.. keep rocks and updating


Dot Net Training in chennai

priya nagaraj said...

Nice blog and Nice learning. Thank you for your effort

Mainframe course in chennai

shanthi sankar said...

Excellent article.,got lots of information...
IOS Training Institute in Chennai

Sharon Sandy said...

great and nice blog thanks sharing..I just want to say that all the information you have given here is awesome...Thank you very much for this one.
web design Company
web development Company
web design Company in chennai
web development Company in chennai
web design Company in India
web development Company in India

Brn Infotech said...

Thank you for your post. This is excellent information. It is amazing and wonderful to visit your site.
iphone app training course

infotechbrn1@gmail.com said...

Thank you for your post. This is excellent information. It is amazing and wonderful to visit your site.
ios app development course

lsi seo said...

Awesome,
Thank you so much for sharing such an awesome blog...
business intelligence solution north america

infotechbrn1@gmail.com said...

Thank you for your post. This is excellent information. It is amazing and wonderful to visit your site.
ios app development course

Myra Dixit said...

Extremely interesting! Much obliged additionally to share the blog. Extremely helpful to comprehend the impact of iOS training in Ahmedabad.

Brn Infotech said...

Thanks for posting the useful information to my vision. This is excellent information,.
mobile app training institutes

Anonymous said...

Thanks for sharing the information. But I can't fix following error:

Illegal Configuration: Compiling IB documents for earlier than iOS 7 is no longer supported

I found a solution from StackOverflow to change the "Build for" settings. But that didn't fix the problem. I cleaned and rebooted Xcode, but same.

Any suggestions?

Akshita Jain said...

Thanks for sharing such woderful post..
Best iPhone mob app training in Jaipur

Unknown said...


It is very nice blog
iOS Online Training

shivanya singh said...


Good blog, yours information is very effective.
IOS App Development Course in Delhi

infotechbrn1@gmail.com said...

Nice Blog, When i was read this blog i learnt new things & its truly have well stuff related to developing technology, Thank you for sharing this blog.
iphone job training center in bangalore
best iphone training institute bangalore

Kamal said...

Decent Blog, When I was perused this blog I learnt new things and its genuinely have well stuff identified with creating innovation, Thank you for sharing this blog.
Education | Article Submission sites | Technology

Vicky Ram said...

Wonderful post!!Thank you for sharing this info with us.
Keep updating I would like to know more updates on this topic
Very useful content, I would like to suggest this blog to my friends.

iOS Training


iOS Training Institutes in Chennai

mounika said...

Thank you for your guide to with upgrade information.
iOS App Development Online Course

Ramya said...

The Content was super and useful.Thankyou for posting this blog.I got some knowledge.
iOS Training In Chennai | iOS Training Institute In Chennai

Ramya said...

The blog is more informative.Extraordinary and useful article.
iOS Training In Chennai | iOS Training Institute In Chennai

Ramya said...

Thankyou for posting this article.I got clear idea.Its easy to understand and the presentation is good
iOS Training in Chennai | iOS Training Institute in Chennai

Vicky Ram said...

great and nice blog thanks sharing..I just want to say that all the information you have given here is awesome...
Thank you very much for this one

iOS Training Institutes in Chennai

iOS Training

Ramya said...

Thanks for an article.I got a great knowledge.Its very useful.Thanks for sharing iOS Training In Chennai | iOS Training Institute In Chennai

Brain Carve said...

nice post...
Abacus Training Class in Chennai
Vedic Maths Classes in Chennai
memory improvement
abacus classes
Vedic maths classes
magic fingers
thinking techniques
Abacus institute Training Class in Chennai

sai said...

Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
Click here:
angularjs Training in online
Click here:
angularjs training in annanagar
Click here:
angularjs training in bangalore

Sneha rathod said...

I have read this post. Collection of post is a nice one..!!.. Keep Update with us iOS Online Training

pooja saravanan said...

Awesome article. It is so detailed and well formatted that i enjoyed reading it as well as get some new information too.
Blueprism training in annanagar

Blueprism training in velachery

Blueprism training in marathahalli


AWS Training in chennai

AWS Training in bangalore

gowsalya said...

Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging.
Devops training in velachery
Devops training in annanagar
Devops training in sholinganallur

infotechbrn1@gmail.com said...

Thank you for your post. This is excellent information. It is amazing and wonderful to visit your blog.
iPhone job training center in bangalore
Best iphone training institute bangalore

Sharmi Ammu said...

Keep following your way of writing, Thanks for sharing an excellent content with us. For Software courses:
iOS Training in Chennai
iOS Training Institutes in Chennai
iOS Training
Selenium Training in Chennai
Big Data Training in Chennai
Loadrunner Training in Chennai

Saro said...

Read all the information that i've given in above article. It'll give u the whole idea about it.

rpa training in velachery| rpa training in tambaram |rpa training in sholinganallur | rpa training in annanagar| rpa training in kalyannagar

sumathi s said...

I have to voice my passion for your kindness giving support to those people that should have guidance on this important matter.
offshore safety course in chennai

sudhagar raja said...

This is ansuperior writing service point that doesn't always sink in within the context of the classroom. In the first superior writing service paragraph you either hook the reader's interest or lose it. Of course your teacher, who's getting paid to teach you how to write an good essay, 

java training in chennai | java training in bangalore

java interview questions and answers | core java interview questions and answers

Ezhil K S said...

Good Post, I am a big believer in posting comments on sites to let the blog writers know that they ve added something advantageous to the world wide web.
Data Science training in Chennai | Data science training in bangalore
Data science training in pune | Data science online training
Data Science Interview questions and answers | Python training in Kalyan nagar

Swetha Gauri said...

I feel really happy to have seen your webpage and look forward to so many more entertaining times reading here. Thanks once more for all the details.
safety course in chennai

Pankaj Singh said...

Nice Blog, Thank you so much sharing with us. Visit for
Web Design Company in Delhi

Unknown said...

thanks PEP Treatment in delhi

Unknown said...

myTectra a global learning solutions company helps transform people and organization to gain real, lasting benefits.Join Today.Ready to Unlock your Learning Potential ! Read More....

sachin.ogeninfo said...

Lyrics with music

Unknown said...

myTectra offers corporate training services in Bangalore for range of courses on various domain including Information Technology, Digital Marketing and Business courses like Financial Accounting, Human Resource Management, Health and Safety, Soft Skill Development, Quality & Auditing, Food Safety & Hygiene. myTectra is one of the leading corporate training companies in bangalore offers training on more than 500+ courses
corporate training in bangalore
top 10 corporate training companies in india
corporate training
corporate training companies
along these we are going to help the professionals and students to crack their interview with interview questions and answers look a head into sites you might be like....
dbms interview questions
spring interview questions

Eminent It Info said...


I have read your blog its very attractive and impressive. I like it your blog.
DevOps course in Marathahalli Bangalore | Python course in Marathahalli Bangalore | Power Bi course in Marathahalli Bangalore

Anonymous said...

You got an extremely helpful website I actually have been here reading for regarding an hour. I’m an initiate and your success is incredibly a lot of a concept on behalf of me.

angularjs Training in chennai
angularjs Training in chennai

angularjs-Training in tambaram

angularjs-Training in sholinganallur

angularjs-Training in velachery

Delhi Internet Marketing Agency In Delhi said...

We are happy now to see this post because of the you put good images, good choice of the words. You choose best topic and good information provide. Thanks a sharing nice article.

SEO Service in Delhi

Saro said...

This is most informative and also this post most user friendly and super navigation to all posts... Thank you so much for giving this information to me.. 

rpa online training |
rpa course in bangalore |
rpa training in bangalore |
rpa training institute in bangalore

Saro said...

This is most informative and also this post most user friendly and super navigation to all posts... Thank you so much for giving this information to me.. 

rpa online training |
rpa course in bangalore |
rpa training in bangalore |
rpa training institute in bangalore

sai said...

I was looking for this certain information for a long time. Thank you and good luck.
Python training in bangalore | Python course in pune | Python training in bangalore

gkr ragini said...

Great post! I am actually getting ready to across this information, It’s very helpful for this blog.Also great with all of the valuable information you have Keep up the good work you are doing well.
excel advanced excel training in bangalore | Devops Training in Chennai

Anonymous said...

Selenium is one of the most popular automated testing tool used to automate various types of applications. Selenium is a package of several testing tools designed in a way for to support and encourage automation testing of functional aspects of web-based applications and a wide range of browsers and platforms and for the same reason, it is referred to as a Suite.

Selenium Interview Questions and Answers
Javascript Interview Questions
Human Resource (HR) Interview Questions

Mouni yoga said...

Good Post, I am a big believer in posting comments on sites to let the blog writers know that they ve added something advantageous to the world wide web.

python interview questions and answers | python tutorialspython course institute in electronic city

sai said...

I would really like to read some personal experiences like the way, you've explained through the above article. I'm glad for your achievements and would probably like to see much more in the near future. Thanks for share.

python interview questions and answers | python tutorialspython course institute in electronic city

sai said...

I am really impressed with your efforts and really pleased to visit this post.

online Python training | python training in chennai

gowsalya said...

Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging.
Devops Training courses
Devops Training in Bangalore
Best Devops Training in pune
Devops interview questions and answers

gowsalya said...

Great Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article because, they are becomes a more and more interesting from the starting lines until the end.
Devops Training courses
Devops Training in Bangalore
Best Devops Training in pune
Devops interview questions and answers

johnsy sai said...

I found your blog while searching for the updates, I am happy to be here. Very useful content and also easily understandable providing.. Believe me I did wrote an post about tutorials for beginners with reference of your blog. 
Best Devops training in sholinganallur
Devops training in velachery
Devops training in annanagar
Devops training in tambaram

janani said...

Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging.

Java training in Chennai | Java training in Tambaram

Java training in Chennai | Java training in Velachery

Java training in Chennai | Java training in Omr

Oracle training in Chennai

Jeyanthi R said...

The knowledge of technology you have been sharing thorough this post is very much helpful to develop new idea. here by i also want to share this.
Data Science Training in Indira nagar
Data Science Training in btm layout
Python Training in Kalyan nagar
Data Science training in Indira nagar
Data Science Training in Marathahalli | Data Science training in Bangalore

sumathi s said...

I have read your blog and I gathered some needful information from your blog. Keep update your blog. Waiting for your next update.
fire and safety course in chennai

Swetha Gauri said...

I believe there are many more pleasurable opportunities ahead for individuals that looked at your site.
nebosh course in chennai

kate technologies said...

Thank you for your post. This is excellent information. It is amazing and wonderful to visit your site.
android app developers in kphb
android app developers in kukatpally
android app developers in gachibowli
ios app development company ameerpet
android app developers in ameerpet

infotechbrn1@gmail.com said...


Nice Blog, Thank you for sharing this information. Its very helpful.
Best ios training in Hyderabad
apple ios training institutes Hyderabad

simbu said...

Superb. I really enjoyed very much with this article here. Really it is an amazing article I had ever read. I hope it will help a lot for all. Thank you so much for this amazing posts and please keep update like this excellent article. thank you for sharing such a great blog with us.Java training in Bangalore | Java training in Indira nagar

Java training in Bangalore | Java training in Rajaji nagar

Java training in Bangalore | Java training in Marathahalli

Java training in Bangalore | Java training in Btm layout

Java training in Bangalore | Java training in Marathahalli

keith kristoper said...

I am really happy with your blog because your article is very unique and powerful for new reader.
Click here:
selenium training in chennai | selenium course in chennai
selenium training in bangalore | selenium course in bangalore
selenium training in Pune | selenium course in pune | selenium class in pune
selenium training in Pune | selenium course in pune | selenium class in pune
selenium online training | selenium training online | online training on selenium

keith kristoper said...

I am really happy with your blog because your article is very unique and powerful for new reader.
Click here:
selenium training in chennai | selenium course in chennai
selenium training in bangalore | selenium course in bangalore
selenium training in Pune | selenium course in pune | selenium class in pune
selenium training in Pune | selenium course in pune | selenium class in pune
selenium online training | selenium training online | online training on selenium

Roja Priya said...

Thank you for sharing your article. Great efforts put it to find the list of articles which is very useful to know, Definitely will share the same to other forums.
Data Science Training in chennai at Credo Systemz | data science course fees in chennai | data science course in chennai quora | data science with python training in chennai

infotechbrn1@gmail.com said...


Nice Blog, When i was read this blog i learnt new things & its truly have well stuff related to developing technology, Thank you for sharing this blog.
iPhone app training course in bangalore
Mobile app training institutes bangalore
iPhone job oriented course in bangalore
iPhone training classes in bangalore

amsa leka said...

Nice blog..! I really loved reading through this article. Thanks for sharing such
a amazing post with us and keep blogging...
Well written article ------- Thank You Sharing with Us android interview questions and answers | android best practices pdf | android development guide

afiah ahamed said...

Excellant post!!!. The strategy you have posted on this technology helped me to get into the next level and had lot of information in it.
Java training in Chennai | Java training institute in Chennai | Java course in Chennai

Java training in Bangalore | Java training institute in Bangalore | Java course in Bangalore

Java online training | Java Certification Online course-Gangboard

Java training in Pune

nivatha said...

Excellent blog, I wish to share your post with my folks circle. It’s really helped me a lot, so keep sharing post like this
Data Science course in kalyan nagar | Data Science Course in Bangalore
Data Science course in OMR | Data Science Course in Chennai
Data Science course in chennai | Best Data Science training in chennai
Data science course in velachery | Data Science course in Chennai
Data science course in jaya nagar | Data Science course in Bangalore
Data Science interview questions and answers

amsa leka said...

Thanks for such a great article here. I was searching for something like this for quite a long time and at last, I’ve found it on your blog. It was definitely interesting for me to read about their market situation nowadays. Well written article.Thank You for Sharing with Us angular 7 training in chennai | angular 7 training in velachery | Best angular training institute in chennai

krishna said...

The knowledge of technology you have been sharing thorough this post is very much helpful to develop new idea. here by i also want to share this.
angularjs Training in bangalore

angularjs Training in bangalore

angularjs Training in chennai

automation anywhere online Training

angularjs interview questions and answers

pavithra dass said...

Nice article. I liked very much. All the informations given by you are really helpful for my research. keep on posting your views.
Android Development Course in Chennai
Android app Development Course in Chennai
Android Training Institute in Chennai
Amazon Web Services Training in Chennai
AWS Training centers in Chennai
Best AWS Training in Chennai

krishna said...

I’ve desired to post about something similar to this on one of my blogs and this has given me an idea. Cool Mat.

angularjs Training in bangalore

angularjs Training in bangalore

angularjs Training in chennai

automation anywhere online Training

angularjs interview questions and answers

sandy star said...

Whoa! I’m enjoying the template/theme of this website. It’s simple, yet effective. A lot of times it’s very hard to get that “perfect balance” between superb usability and visual appeal. I must say you’ve done a very good job with this.


AWS Training in Velachery | Best AWS Course in Velachery,Chennai

Best AWS Training in Chennai | AWS Training Institutes |Chennai,Velachery

Amazon Web Services Training in Anna Nagar, Chennai |Best AWS Training in Anna Nagar, Chennai

Amazon Web Services Training in OMR , Chennai | Best AWS Training in OMR,Chennai

sandy star said...

Whoa! I’m enjoying the template/theme of this website. It’s simple, yet effective. A lot of times it’s very hard to get that “perfect balance” between superb usability and visual appeal. I must say you’ve done a very good job with this.


AWS Training in Velachery | Best AWS Course in Velachery,Chennai

Best AWS Training in Chennai | AWS Training Institutes |Chennai,Velachery

Amazon Web Services Training in Anna Nagar, Chennai |Best AWS Training in Anna Nagar, Chennai

Amazon Web Services Training in OMR , Chennai | Best AWS Training in OMR,Chennai

infotechbrn1@gmail.com said...


Thank you for your post. This is excellent information. It is amazing and wonderful to visit your blog.
iphone app training course in bangalore
mobile app training institutes bangalore

Sadhana Rathore said...

Very good blog, thanks for sharing such a wonderful blog with us. Keep sharing such worthy information to my vision.
ReactJS course in Chennai
ReactJS Training Institutes in Chennai
Robotics Process Automation Training in Chennai
Angularjs Training in Chennai
Angular 6 Training in Chennai
AWS Training in Chennai
AWS course in Chennai

gowsalya said...

Really very nice blog information for this one and more technical skills are improve,i like that kind of post.
Best Devops training in sholinganallur
Devops training in velachery
Devops training in annanagar
Devops training in tambaram

gowsalya said...

Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging.
Online DevOps Certification Course - Gangboard
Best Devops Training institute in Chennai

Ram priya said...

Thanks you for sharing this unique useful information content with us. Really awesome work. keep on blogging
Data Science training in Chennai | Data Science Training Institute in Chennai
Data science training in Bangalore | Data Science Training institute in Bangalore
Data science training in pune | Data Science training institute in Pune
Data science online training | online Data Science certification Training-Gangboard
Data Science Interview questions and answers

Xplore IT Corp said...

Hey Nice Blog!! Thanks For Sharing!!!Wonderful blog & good post.Its really helpful for me, waiting for a more new post. Keep Blogging!
Android training in coimbatore
Angular training in coimbatore

pavithra dass said...

thanks for sharing such a nice info.I hope you will share more information like this. please keep on sharing!
Java Coaching Center in Chennai
Best Java Training in Chennai
Best Java Training Institute in Chennai with placement
German Training Institutes in Chennai
German Training Chennai
German Training Centers in Chennai

i4 consulting said...

Just read your post and would like to thank you for maintaining such a cool blog. iPhone mobile app development in USA

Unknown said...

safety course in hyderabad
nebosh igc course in hyderabad
fire and safety course in hyderabad
lead auditor course in hyderabad
safety professionals courses in hyderabad

Praylin S said...

Great blog! Thanks for sharing this informative post. Looking forward for more from you.
Ionic Training in Chennai | Ionic Course in Chennai | Best Ionic Training in Chennai | Ionic 2 Training | Ionic Framework Training

thulasi ragini said...

It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...
python course in pune
python course in chennai
python course in Bangalore

Aadhya Sharma said...

Thank you so much for sharing such an awesome blog. It is amazing and wonderful to visit your site. For more info : web development company in noida

infotechbrn1@gmail.com said...

Thank you for your post. This is excellent information. It is amazing and wonderful to visit your blog.
mobile app training institutes
iPhone App Training Course

Ananya Krishnan said...

Good job in presenting the correct content with the clear explanation. The content looks real with valid information. Good Work

DevOps is currently a popular model currently organizations all over the world moving towards to it. Your post gave a clear idea about knowing the DevOps model and its importance.

Good to learn about DevOps at this time.


devops training in chennai | devops training in chennai with placement | devops training in chennai omr | devops training in velachery | devops training in chennai tambaram | devops institutes in chennai | devops certification in chennai | trending technologies list 2018

john jersy said...

This is ansuperior writing service point that doesn't always sink in within the context of the classroom. In the first superior writing service paragraph you either hook the reader's interest or lose it. Of course your teacher, who's getting paid to teach you how to write an good essay, 
python training in rajajinagar
Python training in bangalore
Python training in usa

simbu said...

A very nice guide. I will definitely follow these tips. Thank you for sharing such detailed article. I am learning a lot from you.
Java training in Chennai | Java training institute in Chennai | Java course in Chennai

Java training in Bangalore | Java training in Electronic city

Java training in Bangalore | Java training in Marathahalli

Java training in Bangalore | Java training in Btm layout

saran latha said...

Excellent post!!!. The strategy you have posted on this technology helped me to get into the next level and had lot of information in it.
Online DevOps Certification Course - Gangboard
Best Devops Training institute in Chennai

Anbarasan14 said...

One of the best blogs that I have read till now. Thanks for your contribution in sharing such a useful information. Waiting for your further updates.

IELTS Course in Mumbai
IELTS Institute in Mumbai
Best IELTS Coaching Classes in Mumbai
IELTS Coaching Center in Mumbai
Best IELTS Classes in Mumbai
IELTS Classes near me
IELTS Courses in Mumbai

Saro said...

Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging.
rpa training in Chennai | rpa training in bangalore | best rpa training in bangalore | rpa course in bangalore | rpa training institute in bangalore | rpa online training

keerthana said...

Such an excellent and interesting blog, Do post like this more with more information, This was very useful, Thank you.
Aviation Academy in Chennai
Aviation Courses in Chennai
best aviation academy in chennai
aviation institute in chennai

sachin.ogeninfo said...

cattle feed bags manufacturer

jenifer irene said...

Very interesting post! Thanks for sharing your experience suggestions.
air hostess training in Bangalore
air hostess academy Bangalore
air hostess training
air hostess course

Manju NaIdu said...

If you want to become a professional IOS developer. you should learn IOS. By learning IOS you can able to create build views. You can handle user interaction via controls like buttons, switches, and sliders etc. We can also able to display data in a table view. You can create alert boxes, handle navigation and transition between views. You can also follow IOS Online training classes.

nivatha said...

Great content thanks for sharing this informative blog which provided me technical information keep posting.

Data Science training in rajaji nagar | Data Science Training in Bangalore
Data Science with Python training in chennai
Data Science training in electronic city
Data Science training in USA
Data science training in pune

Riya Raj said...

The blog which you are shared is helpful for us. Thanks for your information.
Software testing Institute in Coimbatore
Best Software Testing Institute in Coimbatore
Best Software Testing Training Institutes
Software Testing Course
Software Testing Training

pragyachitra said...

After seeing your article I want to say that the presentation is very good and also a well-written article with some very good information which is veryangularjs Training in bangalore

angularjs Training in bangalore

angularjs interview questions and answers

angularjs Training in marathahalli

angularjs interview questions and answers

angularjs-Training in pune useful for the readers....thanks for sharing it and do share more posts like this.

mounika said...

nice post..

data science training in BTM

best data science courses in BTM

data science institute in BTM

data science certification BTM

data analytics training in BTM

data science training institute in BTM

sathyaramesh said...

Thanks for sharing such a nice info.I hope you will share more information like this. please keep on sharing!
SEO Training
SEO Course in Chennai
SEO Training Institute in Chennai
Best digital marketing course in chennai
Digital marketing course chennai
Digital Marketing Training Institutes in Chennai

Sakthi Murugan said...

Keep up the great work, I read few blog posts on this site and I believe that your website is really interesting and has loads of good info.

selenium training in velachery
Selenium Training in Chennai
Big Data Training in Chennai
web designing training in chennai
iOS Training in Chennai
iOS Training Institute in Chennai

TECHNOGLOBE Jaipur said...

Great work keep it up.. keep bloging like this..
Python Training in Jaipur

Hadoop Training in Jaipur

Software Testing training in Jaipur

MVC Training in Jaipur

Adobe Photoshop Training in Jaipur

NETWORKING Training In Jaipur

aruna ram said...

Great idea! Thank you for your wonderful post and very easily understand to me. Really good work please keeping...
Web Development Courses in Bangalore
Web Development Training in Bangalore
Web Designing Course in Tnagar
Web Designing Course in Chennai
Web Designing Course in Tambaram
Web Designing Classes near me

Ananya Krishnan said...

Good job in presenting the correct content with the clear explanation. The content looks real with valid information. Good Work

DevOps is currently a popular model currently organizations all over the world moving towards to it. Your post gave a clear idea about knowing the DevOps model and its importance.

Good to learn about DevOps at this time.


devops training in chennai | devops training in chennai with placement | devops training in chennai omr | devops training in velachery | devops training in chennai tambaram | devops institutes in chennai | devops certification in chennai | trending technologies list 2018

Nadeem Malik said...

hello sir,
thanks for giving that type of information.
digital marketing company in delhi
Hp Plotter Dealer in Delhi
Best Ways to Optimize Your Website for Lead Generation

lather said...

Goyal packers and movers in Panchkula is highly known for their professional and genuine packing and moving services. We are top leading and certified relocation services providers in Chandigarh deals all over India. To get more information, call us.


Packers and movers in Chandigarh
Packers and movers in Panchkula
Packers and movers in Mohali
Packers and movers in Zirakpur
Packers and movers in Patiala
Packers and movers in Ambala
Packers and movers in Ambala cantt
Packers and movers in Pathankot
Packers and movers in Jalandhar
Packers and movers in Ludhiana

REKHA PUNIA said...


If you live in Delhi and looking for a good and reliable vashikaran specialist in Delhi to solve all your life problems, then you are at right place. 
love marriage specialist in delhi

vashikaran specialist in delhi

love vashikaran specialist molvi ji

get love back by vashikaran

black magic specialist in Delhi

husband wife problem solution

john brito said...

Really very nice blog information for this one and more technical skills are improve,i like that kind of post.

rpa training in chennai
rpa training in bangalore
rpa training in btm | rpa training in kalyan nagar | rpa training in electronic city | rpa training in chennai | rpa online training | rpa training in bangalore

john brito said...

Really very nice blog information for this one and more technical skills are improve,i like that kind of post.

rpa training in chennai
rpa training in bangalore
rpa training in btm | rpa training in kalyan nagar | rpa training in electronic city | rpa training in chennai | rpa online training | rpa training in bangalore

Afreen said...

The post was amazing. It showcases your knowledge on the topic. Thanks for Posting.
CPHQ Online Training in Kabul. Get Certified Online|
CPHQ Training Classes in Al Farwaniyah

ajay prakash said...

Very interesting post! Thanks for sharing your experience suggestions.
Aviation Academy in Chennai
Aviation Courses in Chennai
best aviation academy in chennai
aviation institute in chennai

SANDY said...

I’m planning to start my blog soon, but I’m a little lost on everything. Would you suggest starting with a free platform like Word Press or go for a paid option? There are so many choices out there that I’m completely confused. Any suggestions? Thanks a lot.
Best AWS Training in Marathahalli | AWS Training in Marathahalli
Best AWS Amazon Web Services Training in Chennai | Best AWS Training and Certification for Solution Architect in Chennai
Amazon Web Services Training in Anna Nagar, Chennai |Best AWS Training in Anna Nagar, Chennai

SANDY said...

I’m planning to start my blog soon, but I’m a little lost on everything. Would you suggest starting with a free platform like Word Press or go for a paid option? There are so many choices out there that I’m completely confused. Any suggestions? Thanks a lot.
Best AWS Training in Marathahalli | AWS Training in Marathahalli
Best AWS Amazon Web Services Training in Chennai | Best AWS Training and Certification for Solution Architect in Chennai
Amazon Web Services Training in Anna Nagar, Chennai |Best AWS Training in Anna Nagar, Chennai

lekha mathan said...
This comment has been removed by the author.
lekha mathan said...

Very good information provided, Thanks a lot for sharing such useful information.
air hostess training in Bangalore
air hostess academy Bangalore
cabin crew course in Bangalore
cabin crew training in Bangalore

Riya Raj said...

Blog is really great!!! Thanks for the sharing…
Angularjs Training in Chennai
Angularjs Training in Bangalore
Angularjs course in Chennai
Angularjs Training Institute in Bangalore

Praylin S said...

Great post with valid information. Thanks for sharing.
Oracle Training in Chennai | Oracle Training institute in chennai | Oracle course in Chennai | Oracle Training | Oracle Certification in Chennai | Best oracle training institute in Chennai | Best oracle training in Chennai | Oracle training center in Chennai | Oracle institute in Chennai | Oracle Training near me

Vijay Sethupathi said...

Great Posting…
Keep doing it…
Thanks

Digital Marketing Certification Course in Chennai - Eminent Digital Academy

Ananya Krishnan said...

Good job in presenting the correct content with the clear explanation. The content looks real with valid information. Good Work

DevOps is currently a popular model currently organizations all over the world moving towards to it. Your post gave a clear idea about knowing the DevOps model and its importance.

Good to learn about DevOps at this time.


devops training in chennai | devops training in chennai with placement | devops training in chennai omr | devops training in velachery | devops training in chennai tambaram | devops institutes in chennai | devops certification in chennai | trending technologies list 2018

Ogen Infosystem said...

Excellent Wok, Thanks for sharing with us this valuable blog. I get solution of my problem. Visit for
Lifestyle Magazine

Aruna Ram said...

It was so nice and very used for develop my knowledge skills. Thanks for your powerful post. I want more updates from your blog....
Data Science Training in Bangalore
Best Data Science Courses in Bangalore
Data Science Course in Annanagar
Data Science Training in Chennai Adyar
Data Science Training in Tnagar
Data Science Training in Chennai Velachery