Hi there, I'm Sam Lavin! I'm an avid musician, programmer, and audio enthusiast. I recently graduated from Iowa State University with a B.S. in Computer Engineering and minors in Music and Music Technology, and I'm currently working at Epic as a Windows Engineer.
In my free time (which I tend to not have a lot of), I like to work on programming projects or transcribe music from video games I've played. If you want to get to know me more, below I have listed all of my hobbies and interests.
Thank you for taking the time to read about me. Please feel free to take a look around the rest of the website, or you can contact me using the info listed in the footer below!
Skilled, attentive, and organized computer engineer with a long background of musical talent.
App designed to train live sound engineers to be able to pick out frequencies quickly and accurately by ear. Uses a test with many customization options to fit the user’s learning style.
This is a bot created for the 2022 I.S.U.T.U.B.A.S. Created using Discord.js.
A bot made for the Runtime Terror Discord server. The purpose of the bot is to give users the ability to easily add/remove roles from themselves for classes and majors.
Fall of 2020 I created a Discord server for the I.S.U.C.F.V.M.B., as it was during the pandemic, and I felt like the band could use some more cross-section interactions. While making the server, I had the idea of adding a bot to the server that would respond to certain messages and keywords, much like Slackbot. However, when I made the bot, it turned into much more of a passion project, and I ended up adding a lot more functionality to it than I originally planned.
This bot uses discord.py, a Discord API wrapper for Python. There wasn't much thought into choosing this specific wrapper (as opposed to discord.js), it just happened to be the first one I came across. Most of the bot's functions are fairly simple, but the most complex thing was the !generatememe command. This command in a nutshell will take whatever image you provide it, print text that you provide it on the bottom of that image, and then spit out the result. There are a few other ways you can use it as well. You can use it without an image, and it will use the last seen image in the server as the source image. If you use the command without an image after someone else runs the command, you can make another meme with their same image but with your text instead of theirs. Finally, if you mention a user, you can use their profile picture as the source image. This command took a ton of time to get working correctly, as python doesn't have a great way of writing text onto images, much less wrapping it.
This is a very simple app I went about creating in early Summer 2021. The reason I wanted an app like this was because in Oxygen OS you can set the accent color of the system to a custom color code. I change my wallpaper fairly frequently on my phone, and have always wanted a way to pick the accent color from my wallpapers much like Windows does. So, I set out to create this app. I used the old Material Design Palette library, which can take a bitmap image and find 6 color "swatches" from it. I then output these 6 colors and their respective color codes. I also added a way copy those color codes with or without the hashtag out in front. Finally, I added an app shortcut so you could grab the colors of your wallpaper directly from the homescreen.
I am working on releasing this app on the Google Play store. I'm not necessarily expecting anyone to use it, but I kind of want the experience of going through the process of getting an app on the Play store. In order to release on the Play Store, Google requires that you have a public privacy policy. I have posted mine here.
Update: the app has gotten Play store approval and is now live on the Play store! You can find it by clicking the Google Play icon above.
This was my first Android app I started working on in summer of 2020. My phone does not have a built-in QR code scanner in the camera app, and Google Lens requires an internet connection in order to function at all. This is a problem in some cases where say I might scan a QR code to connect to a device's WIFI network, and then scan a second code to go to a locally hosted page on that device's network. Since that device doesn't have access to the internet, Google Lens fails in this case. Instead of going and finding a QR code scanning app I liked, I decided to make my own because honestly, I didn't want to sort through all the bloatware that I'm sure has consumed this type of app.
So that's what I set out to create: a QR code scanning app that does just that: scan QR codes. Nothing else. No ads, no bloat, no BS. Simple and effective. I also developed my own library for interpreting QR codes on Android devices, because it turns out reading different types of QR codes can be quite complicated.
As of now, the app is in beta. You can view the repository above and download the beta version to help test it out. The app should be mostly functional, though there might be a few hiccups when reading certain types of QR codes. If you find any issues, please report them on the issues page. I also have yet to implement reading vCard and vEvent type QR codes, as those formats are quite complex and also can vary wildly.
A website for me to host all of my projects and information all in one place.
My Role in the ProjectThis was a solo project, so I did everything myself.
Skills/Knowledge GainedI mostly gained a stronger understanding of web development as a whole. I was using knowledge that I already had, and was building on top of that knowledge to create this website. I did learn how SSL certificates work, and how to configure DNS settings in order to point a domain to a hosting service.
Resources UsedOriginally a Raspberry Pi to host the site, then GitHub Pages, and now Azure.
Ever since I started web development at ISU WebDev, I have always wanted to host my own website specifically for future employers to get to know me better. I wanted to write the entire thing myself, and not use sites that build a website for you. So one day, I registered this domain name, and attempted to get started on building this site. However, I was trying to use Laravel on the same Raspberry Pi Zero WH that I had used from the Smart Display project above, and Laravel was not having it. Basically, Laravel apparently requires more than 512MB of RAM to run, which is all the little Pi Zero had. So, I instead went out and rented some server space with a little more RAM, and attempted to start again. It was at this point that I learned Laravel was quite different from ZF2 (the framework that we used at WebDev), and I didn't have much time or motivation to ride that learning curve. On top of that, the company that I was renting server space from kept corrupting my OS, and so eventually this project was put on the backburner.
Eventually, I realized that I didn't need an entire framework to do what I want. Instead, I can literally return a single html page that uses Bootstrap's navs to switch between pages. And so Spring break 2020, I sat down and wrote out this entire site in a matter of a couple days.
This site runs purely off of HTML, CSS, and JavaScript. In conjunction with that, I am also using Bootstrap to help design the site, Font Awesome for a few icons, and Darkmode.js for an easy to implement a dark mode (because everything should have a dark mode option). If you haven't figured out how to use the dark mode yet, just click the little 🌓 icon in the top right!
Getting the site on the World Wide Web was relatively simple. I already owned the domain name, so I just had to do a fresh install of Raspbian for my Raspberry Pi Zero, get Apache set up, pull the repository, change a few configs, get an SSL certificate from Let's Encrypt, and then point my domain to the Raspberry Pi Zero.
This project was incredibly fun for me to do. I've spent around 35-40 hours on it now, and I'm very proud of what the final product looks like. If you notice anything that could be improved (like something isn't working correctly, a typo on a page, or in general something that could be better), please let me know either by messaging me personally (my email is below!), or by creating a pull request on my GitHub repository!
Update September 2020: I learned about GitHub pages, and have transferred this website to that instead of using a Raspberry Pi. This is much more reliable since I no longer have to worry about my public IP changing, and updating the website is as simple as pushing to the repository. I also no longer have to worry about running out of the small amount of storage I have on my Raspberry Pi.
Update February 2022: Due to wanting to expand this domain to other things such as hosting a Matrix server, I have moved this website to an Azure host.
This was a project that a group of four of us completed for the class COM S 309 at Iowa State University. It was an app where people could find other people play sports or games with other people. The app used a Java frontend and Spring Boot backend.
My Role in the ProjectOur group of four was split into two teams: one would handle the frontend, and the other would handle backend. I was on the part that would handle the frontend, and most of what I worked on consisted of logging in the user and handling the user data.
Skills/Knowledge GainedFor me personally, I learned a lot about how to develop an Android App. I also learned how to handle Google account authentication, even if we never fully implemented it because it would have required a lot of work on the backend in order for it to work properly.
Resources UsedThis project was to build a smart display that would show information at a glance to the user. It was targeted towards ISU college students, and included helpful information such as CyRide prediction times for the nearest bus stop, weather information for the day, and roommate status.
My Role in the ProjectIn general, I was the project lead, since the project was my idea. When working on the project however, we split it up into the three main parts: the CyRide screen, the weather screen, and the Google Calendar/roomate screen. This worked out well since there were three of us and three screens to work on. I worked on the CyRide screen.
Skills/Knowledge GainedImagine that you're me, getting ready in the morning for classes, probably in a rush because you woke up late. You go to open the MyState app to see when the next bus is coming, only to be signed out of the app by some unknown bug. By the time you get signed in again, you see that you are too late for the bus, and will have to wait until the next one.
These frustrations are what prompted me to design a smart display. This smart display would be something you can look at quickly in the morning to find out when your next bus is, what the weather will be like for the day, and more.
I worked on this project in my CprE 186 class along with 2 others. We decided to use Python as the backbone for the project as we could install many third-party packages that would allow us to interface with the outside world (more specifically, the Internet of Things).
The smart display would physically consist of only a few items: a Raspberry Pi WH to drive the display, a $5 monitor we found at the Surplus Store, and all the necessary cables to connect the two. On the display, we would display three different screens that each would have their own purpose. Those screens included:
The GUI powering these screens would be TkInter. While this wasn't the most preferable choice, we didn't have much overhead or storage space to download a different GUI module, and TkInter is included with Python. Now, let's dive into each of these different screens. Unfortunately, none of us thought to grab screenshots of these in production, and getting the project to work now will be a massive pain as the API I used to grab CyRide data is now discontinued. However, I can do my best to describe them.
The CyRide screen was essentially my part of the project (along with getting TkInter to work for our project). For this, I used the public CyRide API at the time to request an XML file, parse through that file, and grab the prediction times until the next bus for a certain stop. The bus stop itself was hard-coded in, however I could have programmed it to use a constant for the bus stop ID, and then by simply changing that constant, it could show different predictions.
Here is an example of what this screen would have looked like:
CyRide Predictions at Coover Hall:
21 Cardinal:
2m 55s
25 Gold:
2m 42s
2 Green:
0m 55s
6 Brown:
1m 02s
3 Blue:
0m 26s
Next in the lineup is the weather screen. This screen showed the current temperature, the high and low for the day, an hourly forecast from the current hour, and a 5 day forecast. We had also planned to implement a temperature sensor onto a couple of the Raspberry Pi's GPIO pins, however we ended up running out of time before we could get to that.
Unfortunately, I can't provide an example of what this screen looked like due to the fact that I am not as familiar with this screen as I didn't work on it, and also because from what I remember, the GUI for this screen was quite complex.
The last piece of our trilogy here is the Google Calendar. This screen displayed all of each user's upcoming events for the day (to help you plan for the day), and also showed whether each user was home or not. The latter was achieved by using a combination of IFTTT and Adafruit.io. Basically, whenever one of the users entered or left a geofenced area, IFTTT would send some data to a dashboard that we set up on Adafruit.io updating whether or not they were home. Then, our program would check that data and update the screen accordingly.
I helped a little bit with the design of this last component, so I can give a rough idea of what it ended up looking like. Basically, there were 3 columns (for each of the 'roommates'), a header that had the user's name and whether they were home or not, and then the rest of the column was dedicated to any events the user had for the day. You can see a blurry version of what this screen looked like in the picture below!
Overall, we learned a lot through this project. The biggest things we learned about were:
There are also some things we definitely could have improved on. I already mentioned improving how the bus stop was hard-coded, and also adding a temperature sensor for reporting indoor temperature along with the outdoor. We also wished we could have rewired the inside of the display we were using to output power through the usb ports on the back without needing a USB uplink. Looking back on the project now, I also wish we would have documented more of the progress we made, commented/cleaned up more of our code, and made it more readable.
All in all, it was a very fun project to work on, and I'm very proud of the final result we came out with. You can view the GitHub repository for the project here!
A picture of our project group and the Smart Display in action.
While at ISU WebDev, I had some downtime to work on challenging myself and my JavaScript skills. So, I found a website that had a bunch of challenges on it, and worked on all of them until I got them right.
I also made two fun pages that you can visit: a rainbow page that's really fun to explore if you have an infinite scrolling mouse, and a word clock.
Challenges are from this site.
Take an input string parameter and determine if exactly 3 question marks exist between every pair of numbers that add up to 10. If so, return true, otherwise return false. Some test cases are below:
Take an input 2D matrix of some arbitrary size filled with letters from the alphabet, and determine if a 2x2 square composed entirely of vowels exists in the matrix. If a 2x2 square of vowels is found, your program should return the top-left position (row-column) of the square. Some test cases are below:
Take an input of two elements, the first being the two positive integer weights on a balance scale (left and right sides) and the second element being a list of available weights as positive integers. Your goal is to determine if you can balance the scale by using the least amount of weights from the list, but using at most only 2 weights. Return a comma separated string of the weights that were used from the list in ascending order. Some test cases are below:
Take an input string parameter, which will represent the movements made in a 5x5 grid of cells starting from the top left position. The characters in the input string will be entirely composed of: r, l, u, d, ?. Each of the characters stand for the direction to take within the grid, for example: r = right, l = left, u = up, d = down. Your goal is to determine what characters the question marks should be in order for a path to be created to go from the top left of the grid all the way to the bottom right without touching previously travelled on cells in the grid. Some test cases are below:
Take an input 2D matrix of some arbitrary size that contains only the integers 1, 0, or 2. Then from the position in the matrix where a 1 is, return the number of spaces either left, right, down, or up you must move to reach an enemy which is represented by a 2. You are able to wrap around one side of the matrix to the other as well. The array will contain any number of 0's and 2's, but only a single 1. It may not contain any 2's at all as well, where in that case your program should return a 0. Some test cases are below:
The first project I ever did that involved physical components involved a Raspberry Pi B+, an RF transmitter/receiver pair from lowpowerlab, and a tiny OLED display. Put simply, the motion detector sat our in our mailbox, and when it detected motion, would send a signal to the RF receiver that was in the house. This would communicate to the Raspberry Pi over FTDI to let it know that the mail had arrived. The Raspberry Pi would then send a text message using Python to everyone in our house, and also display a mail icon on the OLED display. Then, when the sensor detected motion again, it would send another text letting us know that someone got the mail, and turn off the OLED display.
While this project was good for me in the sense that it introduced me to a lot of new concepts, it was quite over my head, and not exactly the most fun to try and figure out. It was fun at the very end when I finally got it all working, however the sensor was too sensitive and would send many false-positives. Thinking about it now, I easily should have been able to tinker with the sensitivity of the sensor. Unfortunately, it became untrustworthy and I eventually took it down so I could use the Raspberry Pi for other things.
The motion sensor/transmitter that was in the mailbox.
Sophomore year of high school, I took the Project Lead the Way class Principles of Engineering. One of the first things we did in the class was build a robotic marble sorter. This sorter had to take 20 marbles, and sort them into 5 different types: wood, metal, clear, rose gold, and opaque. This was done using a combination of moving robotic parts (all programmed in Robot C), a controllable magnet to pull out the magnetic marbles, and a light sensor. You can find a video of the project in action below:
Ethics have a huge impact in the engineering world. Look around you right now. Almost everything you see was created by a team of engineers. There is a surprising amount of power in this. As engineers, we have the power to change the world. In this situation, there is a Spiderman quote that is horrendously overused: “With great power comes great responsibility”. However, it has a lot of truth to it, and that is why we, as engineers, need a sort of guideline of ethics to follow. Not only that, but engineers come from all sorts of backgrounds from all over the world, and different parts of the world have different ethics associated with their society. Because of this, we need to come together and set a guideline of ethics that we can all agree on. Then, later on down the line if we have an ethical disagreement, instead of the problem coming down to cultural ethical differences, both sides can look to the same agreed-upon guidelines.
When looking to solve an ethical situation, the first thing I personally do is think about all the people involved in the situation. I try to put myself in everyone’s shoes for a moment, and think about what decision would be in the best interest of everyone involved. Then, I look at my own set of ethics that I have developed over the course of my lifetime, and attempt to make the best decision I possibly can for everyone involved. I also try to take myself out of the equation as much as I possibly can as well to remove any bias I might have on my own decision.
In our Computer Engineering 394 class, we discussed a handful of ethical dilemmas in the engineering world. The first described an issue where Volkswagen installed software on their vehicles that allowed them to pass emissions tests, but then produce more-than-acceptable amounts of nitrogen oxide in the real world. The second issue talked about the Ford Pinto: a car that was to be under 2,000 pounds and under $2,000. In order to achieve this, the company had to cut many corners, but ended up cutting a few too many. In doing so, they risked the lives of millions by overlooking many life-threatening problems in their cars, and lying on crash test results. The third issue we discussed talked about whether or not data from today’s smart speakers should be used in court. The final issue was a theoretical, though very realistic, situation in which a programmer was asked to work with a dataset containing lots of personal information about people that was not obtained with the proper means and measures.
In our class discussions, we all generally agreed with each other on the points we discussed. In the Big Data issue (the last one I mentioned in the previous paragraph), I brought up the point that there should be an open line of communication between the programmer and upper-management in which the programmer should feel safe to bring up any issues they might come across. My classmates agreed, stating that both parties should always be supportive of each other, and that regardless of rank or title, all parties can always stand to learn from each other. One classmate did point out a very good issue: even if the programmer followed all the advice I had mentioned and talked to his boss about how they don't feel comfortable working with this data, they can still be easily replaced. With the growing number of programmers in the job market, the company could easily keep swapping people in and out of that role until they find someone that will comply with what they want. My response would be this: while this is certainly true, and most definitely happening in many companies in the world today, the only thing the programmer can do is follow their own personal code of ethics and not do what the company was asking of them. If they are removed from the company, then they know that the company is not following ethical standards, and can report the company to the authorities. By doing this, they hopefully will remove the people in management that are abusing their power, and bring in new people who are following the ethical standards we are learning about in class.
In class, we discussed six virtues that make up Virtue Ethics. These virtues are integrity, honesty, fidelity, charity, responsibility, and self-discipline. If I were to choose three of these that most reflect upon the Big Data issue, they would be integrity, fidelity, and self-discipline. I chose integrity because integrity is “exercising good and ethical judgement in your field of practice.” In this issue, the programmer should exercise this ethical judgement to realize that the data they were given was not legal or ethical for them to use. I chose fidelity because fidelity is a sort of faithfulness and loyalty. The programmer should have fidelity to the people that were in the illegal dataset that was given to him by choosing not to use their data illegally, and to his career by not allowing the company to pressure them into using this data illegally. Finally, I chose self-discipline because the boss that originally ordered the programmer to use this data should understand that what they are doing is illegal and unethical, and should have the self-discipline to realize this.
In reality, all 6 of these Virtue Ethics could be applied towards the Big Data issue. I just chose the 3 that I believed applied the most. One of these virtues that could very much be applied towards another one of the issues we discussed in class is honesty. This mostly applies to the Volkswagen and Ford Pinto issues, in which the engineers involved in these situations should have been honest about the cars they were working on. The Volkswagen engineers should have been honest about the nitrogen oxide outputs of their vehicles, and the Ford engineers working on the Pinto should have been honest about the dangers of the car they were building, and the results of the crash tests.
These ethics activities that we have done in class have made me realize how important it is for us to learn about them. By teaching us proper ethics, Iowa State University is minimizing the amount of people that will abuse their powers as an engineer in the future. Obviously, there will still be people out there who will disregard these ethics despite being taught about them. However, after taking this class, I know that personally I will take my ethical responsibility seriously.
Over my time as a student, I have taken quite a few general education courses, though not necessarily all from ISU. Half of my general education courses actually came from high school, where I was given the oppourtunity to take college level courses as a high school student. Even today, these courses have left quite an impact on me, and I'm very glad I was given this oppourtunity.
Of the general education courses I took as a high schooler, two of them were psychology courses, and one was a writing course. Originally when I took the first psychology course, I was only taking it to get the college credit, and because I had heard good things about it; I didn't have much of an interest in psychology. However, after I took the introductory course, I completely fell in love with psychology, so much that I took the second course. In fact, there originally weren't enough people signed up for the course for it to happen, and I had to go around encouraging people to sign up.
The psychology courses I took helped me look upon our world in a new way. The first psychology course I took was an introduction to psychology, which talked mostly about all the well known people and theories in psychology. The second course was developmental psychology, which went through all the stages of life from birth to death, and what the human body and mind are going through in each stage. The second one probably stuck with me the most. I especially remember how the professor ended the course. He asked us all, "why do you think old people don't like going to nursing homes?" He let the class give a few answers, all of which were valid, before telling us the real answer: "because it's their last stop."
The other college course I took in high school was Fundamentals of Communication, which was generally a writing course. This course was incredibly helpful in improving my writing. When I started the course, my first few papers did not have very good grades. By the end of the course though, I was getting A's and A+'s on all of my papers. This skill has been very beneficial for writing papers in college, and honestly has helped me to enjoy writing a lot more.
In college, all of the general education courses I've taken I've also applied to either my music technology minor or my music minor. However, that isn't to say that they didn't broaden my perspective on the world. Music 102 was my first class ever at ISU, and showed how music is played all over the world. I'm also currently taking History of Rock and Roll, which dives deeper into American history and how that has impacted popular music. I've been enjoying this course a lot because it's helped me learn more about black culture and how much it has influenced our music today.
Overall, these general education courses have helped me diversify my outlook on society in many different ways. Either by teaching me more about how the world works, or by giving a deeper, inside look into other cultures. These courses have left a great impact on me, and I'm very glad I've had the opportunity to take them.
Ever since I was young, I've always been obsessed with computers. I liked tinkering with code, messing with electronic parts, building, coding, etc. Because of that, when I was graduating high school, I knew I wanted to do computer engineering. I also knew I would only be able to afford in-state public universities, which automatically narrowed it down to two schools: the University of Iowa, and Iowa State University. I visited both colleges, and honestly felt more at-home at Iowa State. On top of that, the engineering program here felt more pronounced, versus at the University of Iowa it sort of felt like an afterthought. Thus, I chose to go to Iowa State for computer engineering.
Starting as a freshman, I was immediately challenged as a student. Calc I taught me how to study for quizzes and exams, as these were no longer the high school tests where I could wing it and get an A. Cpr E 185 had a lab that, while started off fairly basic, by the end was challening me with new concepts I had not used before. This lab remains one of my favorites to this day. Using the PS4 controllers to interact with our code was incredibly fun, and because of that the labs never felt like a chore.
My second semester, I took Cpr E 186, which was an optional course. I took this because I had a lot of fun in Cpr E 185 and wanted to be challenged some more. Cpr E 186 was less class work and more of a group project class, and this was my first experience with group projects in college. I'm glad I had this experience early on, as it taught me a lot about how to work together in a group to accomplish something. Especially delegation, which was something I struggled with prior to college; I was one of those kids that would take on all the work themselves to make sure it was done right. While I still took on the role of the team leader and took on the largest part of the project, I learned to trust my team members with the other two major parts of the project, which was definitely a new experience for me.
After this, the classes and labs started to get much more difficult. Thankfully, at this point, I had developed a good group of friends that I could work with on these harder labs and study with for classwork. Studying with different groups of people was beneficial too, because I could get help with a concept with one group, and then when I studied with another group I could teach that group what helped me from the other group, solidfying the concept more for me as well.
One of the best decisions I could've made in my college career (and quite possibly my life) was joining marching band. Marching band opened a whole world of oppourtunities to me while in college. It gave me an immediete group of friends, it gave me people to go to if I was struggling in certain classes, I had people to teach me about how college works in general, and that's not even touching the creative outlet it gave me as a musician. I am by nature a musical person, and having that hour and a half every day to play music with my friends is exactly what I needed after a long day of classes.
On top of that, marching band gave me a ton of leadership oppourtunities. After my frist season, I auditioned to be a guide for the sousaphone section, which is essentially a section leader. I have been a guide since then, and will have totalled 4 years on the leadership team after next season. I have learned a ton about how to be a leader from marching band, including how to communicate effectively, how to teach others new skills, how to correct mistakes efficiently, etc. Finally, as I progressed as a student and moved from computer engineering to audio engineering, marching band provided me with a plethora of oppourtunities in this field. I did all of the sound work for the group Cyclone Sound, gave purchasing advice, and even did a professional recording of the men's pep band.
Iowa State has given me an oppourtunity of a lifetime. When I came into college, I didn't have a ton of expectations for what college was going to be like. Having this open mind let me try a ton of new experiences while here, and all of these have helped shape me as a person in one way or another. On top of that, I feel like the classwork has prepared me for the problem-solving that I will undoubtibly encounter in the real world. Between these experiences, the classwork, and the lifelong friends I have made here, I am incredibly glad I decided to come to Iowa State, and wouldn't have it any other way.
A list of various arrangements/transcriptions I have done. You can view my MuseScore profile here.
From Tales of the Abyss.
From Tales of Berseria. I used this arrangement as a reference on this score.
Cover of me playing this arrangement:
From Tales of Arise. Measures 72-84 kind of suck since that was entirely strings, so there's not a lot I could do there. However the rest of the piece goes hard.
From the PS3 title screen of Tales of Graces. This arrangement was made with some help from this YouTube video.
Cover of me playing this arrangement:
From the ending sequence of Tales of the Abyss.
From Inside.
From Tales of Xillia.
From the title screen of Tales of Symphonia: Dawn of the New World.
From the ending sequence of Tales of Xillia 2.
From Tales of the Abyss.
From the ending sequence of Tales of the Abyss.
For this arrangement, I basically took this score, and re-arranged it to the way I liked it. I'm not as proud of this one (as it's not the most interesting to play as a piano solo), but I figured why not put it here anyways.
From Bojack Horseman S3:E4: Fish Out of Water.
Downloads | This score is not public on MuseScore
From the title screen of Tales of Berseria.
A track that unfortunately was not included in the OST, and therefore has no name.
Downloads | This score is not public on MuseScore
From the Inside outtakes.
From Tales of Innocence. Done by request.
From the credits of Tales of the Abyss.
There are some audio glitches in the mp3 export for this song, which are due to issues in MuseScore outside of my control. I created an issue for the problem here, though it has yet to be fixed as far as I know.
From the ending sequence of Tales of Eternia.
Cover of me playing this arrangement:
From Inside.