Music Controller

Design Challenge: Make a device to control playback of pre-recorded music.

Parameters:

  • Make a device that sends asynchronous serial messages to another device which will play the music.
  • All serial messages should be terminated by a linefeed.
  • The playback device will echo your message back to you as an acknowledgement message when it executes your command.

The device supports the following features:

  • It is operable by a user who cannot see the device.
  • The user gets an acknowledgement when they activate any control.
  • Start or stop the playback of a track (start plays track from the beginning).
  • Pause or resume playback of a track (resume plays track from last position stopped)
  • Skip ahead one track in the playlist.
  • Skip back one track in the playlist.
  • Fast-forward the current track (double speed of the track).
  • Skip to a random track in the playlist.

Tools used:

  • Arduino IDE
  • Arduino MKR1000
  • Python server
  • P5.js
  • P5 Serial Control App
  • Buttons (momentary and )
  • Vibration Sensor
  • Frosted plastic container
 
Arduino and Physical Components
 

I started this assignment by wiring my components to the breadboard and Arduino. As shown below, I wired the 2 toggle buttons, 4 momentary buttons and the vibration sensor. 

Arduino Code:

This proved to be quite tricky for me initially. My goal was to create the code from scratch and not rely on references. I encountered errors with the switch state where the serial monitor was just writing the value continually. Adding a delay did not help. I eventually discovered that my syntax was wrong (odd that the IDE did not pick up on this when I verified the code.) The culprit was a semi colon.

 
 My code:
 

const int startStop = 11;
const int pausePlay = 10;
const int next = 9;
const int back = 8;
const int randomSong = 7;
const int fast = 6;

int vibeSensor = 5;

int lastStartStopState = LOW;
int lastPausePlayState = HIGH;
int lastNextState = LOW;
int lastBackState = LOW;
int lastRandomState = LOW;
int lastFastState = LOW;

void setup() {
Serial.begin(9600);

pinMode(startStop, INPUT_PULLUP);
pinMode(pausePlay, INPUT_PULLUP);
pinMode(next, INPUT_PULLUP);
pinMode(back, INPUT_PULLUP);
pinMode(randomSong, INPUT_PULLUP);
pinMode(fast, INPUT_PULLUP);
pinMode(vibeSensor, OUTPUT);
}

void loop() {
int buttonState1 = digitalRead(startStop);
int buttonState2 = digitalRead(pausePlay);
int buttonState3 = digitalRead(next);
int buttonState4 = digitalRead(back);
int buttonState5 = digitalRead(randomSong);
int buttonState6 = digitalRead(fast);


// 1. Start Stop Button
// If the button is on, send a message to serial to start playing the song
if (buttonState1 != lastStartStopState) {
if (buttonState1 == HIGH) {
Serial.println(“start”);
Serial.write(49);

analogWrite(vibeSensor, 255); // give feedback
analogWrite(vibeSensor, 0);
delay(100);

// If the button is off, send a message to serial to stop playing the song
} else {
Serial.println(“stop”);
Serial.write(49);
//
analogWrite(vibeSensor, 255); // give feedback
analogWrite(vibeSensor, 0);
delay(100);
}
lastStartStopState = buttonState1;
}

// 2. Pause Play Button
//If the button is on, send a message to serial to pause the song
if (buttonState2 != lastPausePlayState) {
if (buttonState2 == LOW) {

Serial.println(“pause”);
Serial.write(50);
delay(500);

analogWrite(vibeSensor, 255); // give feedback
delay(100);
analogWrite(vibeSensor, 0);

// If the button is off, send a message to serial to play the song
} else {
Serial.println(“play”);
Serial.write(50);

analogWrite(vibeSensor, 255); // give feedback
delay(100);
analogWrite(vibeSensor, 0);
}
}
lastPausePlayState = buttonState2;

//3. Next Button (skip to the next song)
// If the button is pressed, send a message to serial to skip forward to the next song

if (buttonState3 != lastNextState) {
if (buttonState3 == LOW) {

Serial.println(“next”);
Serial.write(51);
// delay(500);

analogWrite(vibeSensor, 255); // give feedback
delay(100);
analogWrite(vibeSensor, 0);
}
lastNextState = buttonState3;
}

// 4. Back Button (go back and play the previous song)
// If the button is on, send a message to serial to skip to the previous song

if (buttonState4 != lastBackState) {
if (buttonState4 == LOW) {

Serial.println(“back”);
Serial.write(52);
// delay(500);

analogWrite(vibeSensor, 255); // give feedback
delay(100);
analogWrite(vibeSensor, 0);
}
lastBackState = buttonState4;
}

// 5. Random Button (play a random song)
// If the button is on, send a message to serial to skip to a random song

if (buttonState5 != lastRandomState) {
if (buttonState5 == LOW) {

Serial.println(“random”);
Serial.write(53);
// delay(500);

analogWrite(vibeSensor, 255); // give feedback
delay(100);
analogWrite(vibeSensor, 0);
}
lastRandomState = buttonState5;
}


// 6. Fast Button (fast forward through the current song)
// If the button is on, send a message to serial to fast forward through the current song

if (buttonState6 != lastFastState) {
if (buttonState6 == LOW) {

Serial.println(“fast”);
Serial.write(54);
// delay(500);

analogWrite(vibeSensor, 255); // give feedback
delay(100);
analogWrite(vibeSensor, 0);
}
lastFastState = buttonState6;
}

}

 
 
 

 
 

P5.js and Serial Communication

I haven’t touched p5 since ICM. However, setting up the serial communication and updating the sample p5 code was the most straightforward part of this assignment. 

Using this serial input to P5 tutorial, I installed the P5.serialcontrol app and the p5.serialserver. With the arduino connected to the port, I used the serial control app to ensure the port was available. Then using the command line, opened a python server the tested my controller. 

P5 code: 

var serial;
var portName = ‘/dev/cu.usbmodem1411’;
var inData;

var song; // the sound file to be played

// the list of songs:
var songs = [‘FastWine.mp3’, ‘FullExtreme.mp3’, ‘Incredible.mp3’, ‘LeaveMeAlone.mp3’, ‘TurnUp.mp3’];

var songCount = songs.length; // number of songs in the music dir
var currentSong = 0; // current song number

function preload() { // load the first song on preload
song = loadSound(‘music/’ + songs[currentSong]);
}

function setup() {
createCanvas(400, 300);

serial = new p5.SerialPort(); // make a new instance of the serialport library
serial.on(‘connected’, serverConnected); // callback for connecting to the server
serial.on(‘open’, portOpen); // callback for the port opening
serial.on(‘data’, serialEvent); // callback for when new data arrives
serial.on(‘error’, serialError); // callback for errors
serial.on(‘close’, portClose); // callback for the port closing

serial.list(); // list the serial ports
serial.open(portName); // open a serial port
}

function serverConnected() {
println(“We are connected!”);
}

function portOpen() {
println(“Serial Port is open!”);
}

function serialEvent() {
inData = Number(serial.read());
controlSound(inData);
console.log(inData)
}

function serialError(err) {
println(‘Something went wrong with the serial port ‘ + err);
}

function portClose() {
println(‘The serial port is closed’);
}

function draw() {
background(30, 20, 180);
fill(255);
text(“sensor value: ” + inData, 30, 30);
// draw the song’s name and current time in seconds:
text(songs[currentSong], 20, 50);
text(song.currentTime().toFixed(3), 20, 100);
}

function controlSound(input) {
switch (input) {
case 49: // start/stop, press 1
if (song.isPlaying()) {
song.stop();
} else {
song.play();
}
break;
case 50: // play/pause, press 2
if (song.isPlaying()) {
song.pause();
} else {
song.play();
}
break;
case 51: // skip ahead, press 3
// make sure the song number is valid, and increment:
if (currentSong < songs.length - 1) {
currentSong++;
} else {
currentSong = 0;
}
// get new song:
getSong(currentSong);
break;
case 52: // skip back, press 4
// in the first second, just rewind the current track:
if (song.currentTime() > 1.0) {
song.jump(0);
// if more than a second has elapsed, then
// make sure the song number is valid, and decrement:
} else {
if (currentSong > 0) {
currentSong–;
} else {
currentSong = songs.length – 1;
}
// get new song:
getSong(currentSong);
}
break;
case 53: // fast forward, press 5
song.rate(2.0); // double the play speed
if (!song.isPlaying()) {
song.play();
}
break;
case 54: // random song, press 6
currentSong = Math.round(random(songCount)); // get a new song number
getSong(currentSong); // play it
break;
}
}

function getSong(songNumber) {
if (songNumber < songs.length) { // if the song number is in range
if (song.isPlaying()) {
song.stop();
}
// load a new song:
song = loadSound(‘music/’ + songs[currentSong], resumePlay);
return true;
} else { // if the song number was out of range, return false
return false;
}
}

function resumePlay() {
// if the song isn’t playing, play it
if (song.isPlaying()) {
song.stop();
} else {
song.play();
}
}

function keyReleased() {
controlSound(keyCode); // send the ASCII number of the key
}

 

Fabrication

I wanted the feel of a walkman so I purchased a small plastic container that could be held with one hand. I drilled holes for my 6 buttons and for the power cable. Then carefully installed my buttons and MKR1000. 

Experience new music

So, that was soca. In case you were wondering what I was playing. Take a listen to the tracks on my playlist, below.

505 thoughts on “Music Controller”

  1. You can certainly see your expertise in the work you write. The world hopes for more passionate writers like you who are not afraid to say how they believe. Always go after your heart.

  2. I precisely desired to say thanks again. I’m not certain the things I could possibly have achieved in the absence of the concepts contributed by you about my area of interest. Entirely was a daunting circumstance for me, but coming across a expert avenue you dealt with it forced me to cry for contentment. Extremely grateful for the advice and expect you are aware of a powerful job that you are accomplishing educating many people all through a site. I’m certain you’ve never come across all of us.

  3. I’m also commenting to let you be aware of of the brilliant discovery my child encountered checking the blog. She came to understand a lot of details, including how it is like to have a marvelous coaching character to get certain people completely comprehend a variety of complex issues. You actually did more than her desires. I appreciate you for coming up with such essential, dependable, edifying and cool guidance on that topic to Ethel.

  4. At this moment I am going away to do my breakfast, when having
    my breakfast coming over again to read additional news.
    0mniartist asmr

  5. A fascinating discussion is definitely worth comment.
    I believe that you should write more on this subject, it may
    not be a taboo matter but usually folks don’t speak about such issues.
    To the next! All the best!! 0mniartist asmr

  6. Way cool! Some extremely valid points! I appreciate you penning this write-up plus the rest of the site
    is also really good. 0mniartist asmr

  7. Hi, of course this piece of writing is really nice and I have learned lot of things from it concerning blogging.

    thanks. asmr 0mniartist

  8. I’m gone to convey my little brother, that he should also pay a visit
    this web site on regular basis to take updated from newest reports.

    my website; united

  9. Have you ever heard of second life (sl for short). It is basically a game where you can do anything you want. sl is literally my second life (pun intended lol). If you want to see more you can see these second life authors and blogs

  10. Have you ever heard of second life (sl for short). It is basically a online game where you can do anything you want. sl is literally my second life (pun intended lol). If you would like to see more you can see these Second Life articles and blogs

  11. Thanks for sharing your thoughts. I truly appreciate
    your efforts and I am waiting for your further post thanks once again.

  12. Hello, I think your site might be having browser compatibility issues.

    When I look at your blog site in Safari, it looks fine but when opening in Internet Explorer,
    it has some overlapping. I just wanted to give you a quick heads up!
    Other then that, very good blog!

  13. Link exchange is nothing else however it is simply placing the
    other person’s web site link on your page at suitable place and other person will also
    do similar in favor of you.

  14. legitimate online pharmacy uk – ed drugs medical pharmacy south or cheapest pharmacy for prescriptions without insurance

  15. Thanks for the marvelous posting! I certainly enjoyed reading it,
    you will be a great author.I will ensure that I bookmark your
    blog and will often come back in the future. I want to encourage continue your great writing, have a nice holiday weekend!

  16. I do consider all the concepts you’ve presented for your post.
    They’re very convincing and will definitely work.
    Nonetheless, the posts are too brief for novices. May you please lengthen them a bit
    from subsequent time? Thank you for the post.

  17. Please let me know if you’re looking for a writer for your site.
    You have some really good articles and I believe I would be a good asset.
    If you ever want to take some of the load off, I’d absolutely love to write some articles for your blog in exchange for
    a link back to mine. Please send me an email if interested.
    Cheers!

  18. Fastidious answer back in return of this difficulty with genuine arguments and describing everything about that.

  19. I am in fact delighted to glance at this website posts which contains lots of helpful information, thanks for providing these kinds of data.

  20. Hi, Neat post. There’s a problem with your site in internet explorer, would check this… IE still is the market leader and a huge portion of people will miss your wonderful writing because of this problem.

  21. F*ckin’ remarkable issues here. I am very glad to peer your article. Thank you a lot and i’m looking ahead to contact you. Will you please drop me a e-mail?

  22. scoliosis
    I am really inspired together with your writing talents and also with the structure on your blog.
    Is this a paid subject matter or did you modify it your self?
    Either way stay up the nice high quality writing, it’s
    uncommon to see a great blog like this one these days..
    scoliosis

  23. free dating sites
    My spouse and I absolutely love your blog and find many of your post’s to be exactly what I’m looking for.
    Would you offer guest writers to write content for you personally?
    I wouldn’t mind publishing a post or elaborating on a number of
    the subjects you write about here. Again, awesome site! https://785days.tumblr.com/ dating sites

  24. free dating sites
    Its like you read my thoughts! You seem to understand a lot approximately this, such as you wrote the
    guide in it or something. I feel that you just can do with some % to force the message
    home a little bit, but instead of that, that is fantastic blog.

    An excellent read. I will definitely be back.
    dating sites

  25. Excellent goods from you, man. I’ve understand
    your stuff previous to and you’re just extremely great.
    I really like what you have acquired here, certainly like what you are saying and the way in which you say it.
    You make it enjoyable and you still take care of to keep
    it wise. I can not wait to read far more from you. This is actually a great site.

  26. The subsequent time I read a blog, I hope that it doesnt disappoint me as a lot as this one. I imply, I know it was my choice to read, but I actually thought youd have something interesting to say. All I hear is a bunch of whining about something that you may repair when you werent too busy looking for attention.

  27. I blog frequently and I truly appreciate your information. Your article
    has truly peaked my interest. I am going to take a note of your blog and
    keep checking for new details about once per week.
    I opted in for your Feed as well.

  28. I like the helpful info you provide in your articles. I’ll bookmark your weblog and check again here
    frequently. I am quite sure I’ll learn plenty of new stuff right here!
    Best of luck for the next!

  29. Hi outstanding website! Does running a blog similar
    to this require a large amount of work? I’ve very
    little expertise in coding but I was hoping to start my own blog in the near future.
    Anyways, should you have any suggestions or techniques for new blog owners please share.

    I understand this is off subject however I
    just had to ask. Thanks a lot!

  30. Greetings! This is my first comment here so I just wanted to give a quick shout out and say I
    genuinely enjoy reading your articles. Can you recommend any other blogs/websites/forums that cover the same topics?
    Thanks a ton!

  31. It’s a pity you don’t have a donate button! I’d definitely
    donate to this fantastic blog! I guess for now i’ll settle for book-marking and adding your RSS feed to my Google
    account. I look forward to brand new updates and will talk about
    this blog with my Facebook group. Chat soon!

  32. This is really interesting, You’re a very skilled blogger.
    I have joined your rss feed and look forward to seeking more of your great
    post. Also, I have shared your web site in my social networks!

  33. While GTA: Online, one of their most popular Online products, has micro-transactions, they do not severely break the game in terms of balancing. Most PvP match modes in the game are not affected by the player’s personal purchases. The PC version of Grand Theft Auto V and Grand Theft Auto Online features First Person Mode, giving players the chance to explore the incredibly detailed world of Los Santos and Blaine County in an entirely new way. Rockstar Games is bringing GTA Online to PlayStation 5 as a separate, standalone game, available as a free exclusive for the first three months after its launch in the second half of 2021. http://hcbstrings.com/community/profile/michaladler6105/ Technology plays an important role in our lives, whether for work or fun. Everyone now owns a smartphone, while most have a computer or a laptop. These devices come in handy for several things, but most notably for video gaming. And to play, you need to buy the game you like. But if you want to download one for free, check out IGG Games. Among Us Free Download Igggames. Try the latest version of among us 2020 for android Among us pc game overview All games of website is free for peoples – if you can’t buy one of the games that you like or feel good, crack is a way to experience it first. Here offers you all the latest games, hottest and up-to-date. Let’s Enjoy it !

  34. Wow, superb blog layout! How long have you been blogging for?
    you made blogging look easy. The overall look of your website is wonderful, as well as the content!

  35. Hello, i think that i saw you visited my blog so i came to “return the favor”.I’m trying to find things
    to improve my site!I suppose its ok to use some of your ideas!!

  36. По всем вопросам пишите нам: Значительная часть так называемых феромонов содержит множество химических веществ, поэтому не удовлетворяют критерию простоты. “Если у пары есть проблемы в сексуальных отношениях, то нельзя говорить, что, употребляя афродизиаки, они эти проблемы решат. Сексуальное желание идет из головы, от внутреннего отношения, от здоровья”, — отметил сексолог. Оглавление Мидии – мощнейший афродизиак. В них очень много белка, приправленного цинком и селеном, которые стимулируют выработку гормонов тестостерона, эстрогена и прогестерона. А ещё мидии – низкокалорийны (77 ккал в 100 г): не отставляют тяжести в желудке, что способствует интересному продолжению вечера без помех. Хрен благодаря высокому содержанию витаминов и микроэлементов считается хорошим возбуждающим средством. Именно поэтому англичане называют этот афродизиак лошадиным редисом. На основе этого ароматного тропического фрукта можно приготовить невероятно вкусные и аппетитные напитки-афродизиаки для усиления возбуждения перед половым актом. Также является отличным усилителем желания. Эта ягода (да, ягода!) — отличный природный афродизиак, который богат калием и натуральными сахарами. Индийская традиционная медицина классифицирует бананы как «возбуждающую» пищу. https://sitemap.edificiotrivento.org/community/profile/luisaparkin552/ Рекомендуетcя курсовой прием Алитабса, который рассчитан на 1,5 месяца использования. Можно ли употреблять Алитабс с алкогольными напитками? Да, его можно употреблять как с умеренными дозами алкогольных напитков, так и с лекарственными средствами. Купить Maral Gel гель для увеличения члена и спермы в Александрии ANT KING – единственное работающее средство на рынке для увеличения члена. Этот комплекс, который не вызывает никаких побочных эффектов, не вызывает аллергических реакций. Специальные ферменты, входящие в состав, благотворно влияют на ткани пениса, которые безвредно растягиваются, а с ними и камеры кавернозного тела полового члена, что и способствует реальному увеличению как и в длине так и в обхвате.

  37. Instagram Follower Kaufen
    Instagram-Follower kaufen: mehr Trust und Reichweite für Ihre Brand
    Das Ziel, die Reichweite auf Instagram zu erhöhen,
    ist für viele Unternehmen und Influencer häufig nur
    schwer zu erreichen. Follower zu kaufen ist eine bewährte Methode, um die Instagram-Präsenz aufzubessern und mehr Menschen und potenzielle Kunden im beliebten sozialen Netzwerk zu erreichen.
    Instagram Follower Kaufen

  38. Ortam Ölçümü
    İş Güvenliği Kanunu kapsamında çıkan “İş
    Hijyeni Ölçüm Test ve Analizi Yapan Laboratuvarlar Hakkında Yönetmelik” gereği işverenler, iş sağlığı ve güvenirliği
    tarafından çalışma alanına ve çalışanların bu
    bölgede maruz kaldığı tehlikelerin saptanmasına yönelik lüzumlu
    denetim, bölge ölçümü, araştırma ve tetkiklerin yapılmasını
    sağlamakla yükümlüdür. Bakanlık kontrollerinde ya da ana firmanın kontrollerinde işyeri çalışma alanı ile
    ilgili Çalışma Sosyal Emniyet Bakanlığı (İSGÜM) den Yetki sahibi İş hijyeni laboratuvarı doğrulusunda verdiği rapor eder istenilmektedir.

    ortam ölçümü

  39. Great post. I was checking continuously this blog and I am impressed!
    Very helpful information specifically the last part 🙂 I care for such info a lot.
    I was seeking this certain info for a long time.

    Thank you and best of luck.

  40. Excellent post. I was checking constantly this weblog
    and I’m inspired! Extremely helpful info specially the last phase
    🙂 I take care of such info much. I was looking for
    this particular info for a long time. Thank you and best of luck.

  41. Interesting blog! Is your theme custom made or did you download
    it from somewhere? A design like yours with a few simple adjustements would really make
    my blog jump out. Please let me know where you got
    your design. Bless you

  42. Hiya! Quick question that’s totally off topic.
    Do you know how to make your site mobile friendly?
    My weblog looks weird when browsing from
    my iphone 4. I’m trying to find a theme or plugin that might be able to resolve this
    issue. If you have any recommendations, please
    share. With thanks!

  43. I loved as much as you will receive carried out right here.

    The sketch is tasteful, your authored material stylish. nonetheless, you command
    get bought an shakiness over that you wish be delivering the
    following. unwell unquestionably come more formerly again as exactly the same nearly a lot often inside case you shield this increase.

  44. Good – I should definitely pronounce, impressed with your website. I had no trouble navigating through all tabs as well as related information ended up being truly easy to do to access. I recently found what I hoped for before you know it in the least. Reasonably unusual. Is likely to appreciate it for those who add forums or something, site theme . a tones way for your customer to communicate. Nice task.

  45. hello there and thank you for your info – I have certainly picked up something new from
    right here. I did however expertise a few technical points using this website,
    as I experienced to reload the website lots of times previous to I could get it
    to load properly. I had been wondering if your web host is OK?
    Not that I am complaining, but sluggish loading instances times will very frequently
    affect your placement in google and could damage your high quality
    score if ads and marketing with Adwords. Anyway I am adding
    this RSS to my email and can look out for much more of your respective intriguing
    content. Make sure you update this again very soon.

  46. I am sure this piece of writing has touched all the internet people, its really
    really fastidious piece of writing on building up new webpage.

  47. Unquestionably imagine that which you said. Your favourite reason appeared to be
    at the web the easiest factor to have in mind of.
    I say to you, I definitely get annoyed at the same time as
    other people consider concerns that they plainly do not understand about.
    You managed to hit the nail upon the highest and also outlined out the entire thing
    with no need side effect , other people can take a signal.
    Will likely be again to get more. Thanks http://herreramedical.org/azithromycin

  48. What’s Going down i am new to this, I stumbled upon this I
    have discovered It absolutely useful and it
    has helped me out loads. I hope to give a contribution & help different customers
    like its aided me. Great job.

  49. continuously i used to read smaller content that as well clear their motive, and that is
    also happening with this post which I am reading here.

  50. First of all I would like to say excellent blog! I had a quick question that I’d like to ask if
    you do not mind. I was interested to find out
    how you center yourself and clear your thoughts before writing.

    I have had a difficult time clearing my thoughts in getting my thoughts
    out. I truly do enjoy writing but it just seems like the first 10
    to 15 minutes are wasted simply just trying to figure out how
    to begin. Any suggestions or tips? Kudos!

  51. I’ve learn a few excellent stuff here. Definitely worth bookmarking for revisiting.
    I wonder how a lot effort you set to create the sort of magnificent informative website.

  52. Good way of explaining, and good piece of writing to get data on the topic of my presentation subject, which
    i am going to present in college.

  53. Hey! I know this is somewhat off-topic but I needed to ask.
    Does running a well-established blog like yours require a large amount of work?
    I’m completely new to blogging however I do write in my journal everyday.
    I’d like to start a blog so I will be able to share my own experience and thoughts
    online. Please let me know if you have any suggestions or
    tips for brand new aspiring blog owners. Appreciate it! https://buszcentrum.com/clomid.htm

  54. Hello it’s me, I am also visiting this site regularly,
    this site is in fact pleasant and the viewers are
    actually sharing good thoughts.

  55. Thank you for another magnificent article. Where else could anybody get that type of info in such a perfect
    manner of writing? I’ve a presentation subsequent week, and I am at the search
    for such info. quest bars http://j.mp/3jZgEA2 quest
    bars

  56. I loved as much as you’ll receive carried out right here.
    The sketch is attractive, your authored material stylish.
    nonetheless, you command get got an impatience over that you wish
    be delivering the following. unwell unquestionably come more formerly again as exactly the same nearly
    a lot often inside case you shield this increase.
    asmr https://app.gumroad.com/asmr2021/p/best-asmr-online asmr

  57. It is perfect time to make some plans for the
    long run and it’s time to be happy. I’ve read this publish and if I could
    I wish to counsel you some attention-grabbing things or tips.
    Perhaps you could write subsequent articles regarding this
    article. I desire to read even more things approximately it!
    scoliosis surgery https://0401mm.tumblr.com/ scoliosis
    surgery

  58. Thanks on your marvelous posting! I actually enjoyed reading it, you might be
    a great author.I will remember to bookmark your blog and definitely will come
    back from now on. I want to encourage you to continue your great
    job, have a nice day! cheap flights http://1704milesapart.tumblr.com/ cheap flights

  59. Please let me know if you’re looking for a author for your blog. You have some really good posts and I believe I would be a good asset. If you ever want to take some of the load off, I’d really like to write some articles for your blog in exchange for a link back to mine. Please shoot me an email if interested. Cheers!

  60. Admiring the dedication you put into your blog and in depth information you present.
    It’s nice to come across a blog every once in a while that isn’t the same out of date rehashed
    material. Fantastic read! I’ve bookmarked your site and I’m adding your RSS feeds to
    my Google account. quest bars https://www.iherb.com/search?kw=quest%20bars quest bars

  61. Холостячка 2 сезон https://bit.ly/39ioLkW Смотреть онлайн шоу Холостячка 2 сезон на СТБ.
    Пост шоу можно смотреть тут. Холостячка стб 2 сезон 1-2 серия

  62. Холостячка 2 сезон https://bit.ly/39ioLkW Смотреть онлайн шоу Холостячка 2 сезон на СТБ.
    Пост шоу можно смотреть тут. Холостячка стб 2 сезон 1-2 серия

  63. Холостячка 2 сезон https://bit.ly/39ioLkW Смотреть онлайн шоу Холостячка 2 сезон на СТБ.
    Пост шоу можно смотреть тут. Холостячка стб 2 сезон 1-2 серия

  64. Холостячка 2 сезон https://bit.ly/39ioLkW Смотреть онлайн шоу Холостячка 2 сезон на СТБ.
    Пост шоу можно смотреть тут. Холостячка стб 2 сезон 1-2 серия

  65. Холостячка 2 сезон https://bit.ly/39ioLkW Смотреть онлайн шоу Холостячка 2 сезон на СТБ.
    Пост шоу можно смотреть тут. Холостячка стб 2 сезон 1-2 серия

  66. Холостячка 2 сезон https://bit.ly/39ioLkW Смотреть онлайн шоу Холостячка 2 сезон на СТБ.
    Пост шоу можно смотреть тут. Холостячка стб 2 сезон 1-2 серия

  67. История аварии на ЧАЭС. Выдающийся сериал HBO о мирном атоме, государственной лжи и народном героизме. Сериал чернобыль hbo. Новые сериалы в качестве онлайн.

  68. The world of sex dolls is growing every day. They are satisfying sexual frustration all around the world, and I guarantee it could satisfy yours, too.

  69. Hello! I know this is kinda off topic but I was wondering which blog platform are you using for this site?
    I’m getting tired of WordPress because I’ve had problems with
    hackers and I’m looking at alternatives for another platform.
    I would be great if you could point me in the
    direction of a good platform. http://antiibioticsland.com/Ampicillin.htm

  70. I got what you intend, regards for posting. Woh I am happy to find this website through google. Currently, sex dolls on the market are divided into high, medium, and low grades.

  71. Interesting blog!
    Is your theme custom made or did you download it from somewhere?

    A design like yours with a few simple adjustements would really make
    my blog stand out. Please let me know where you got
    your design.
    Cheers

  72. Aw, this was a really nice post. In idea I would like to put in writing like this additionally ? taking time and actual effort to make a very good article? but what can I say? I procrastinate alot and by no means seem to get something done.

  73. I’m no longer sure the place you are getting your info, but
    good topic. I must spend some time learning much more
    or working out more. Thanks for magnificent info I used to
    be searching for this
    information for my mission.

  74. Stor korte artikkelen. Artikler som har betydelig og også innsiktsfulle webinnhold er ekstra herlig.

  75. Youre so cool! I dont suppose Ive read anything like this before. So good to seek out any individual with some authentic thoughts on this subject. realy thank you for starting this up. this website is something that is wanted on the internet, somebody with a bit originality. useful job for bringing one thing new to the internet!

Leave a Reply

Your email address will not be published.